26 #ifndef OOMPH_BIHARMONIC_PROBLEM_HEADER
27 #define OOMPH_BIHARMONIC_PROBLEM_HEADER
31 #include <oomph-lib-config.h>
44 #include "../generic/problem.h"
45 #include "../generic/hijacked_elements.h"
46 #include "../meshes/hermite_element_quad_mesh.template.h"
47 #include "../meshes/hermite_element_quad_mesh.template.cc"
65 template<
unsigned DIM>
103 oomph_info <<
"self test failed" << std::endl;
136 n_x, n_y, domain_pt);
142 n_x, n_y, domain_pt, spacing_fn);
170 for (
unsigned i = 0;
i < n_bulk_element;
i++)
223 template<
unsigned DIM>
249 oomph_info <<
"self test passed" << std::endl;
253 oomph_info <<
"self test failed" << std::endl;
276 const double& psi = 0);
329 void output(std::ostream& outfile,
const unsigned& n_plot) {}
341 void output(FILE* file_pt,
const unsigned& n_plot) {}
362 residuals, dummy, 0);
373 residuals, jacobian, 1);
SourceFctPt & source_fct_pt()
Access functions for the source function pointer.
Point equation element used to impose the traction free edge (i.e. du/dn = 0) on the boundary when dt...
void output(std::ostream &outfile)
Output function – does nothing.
void output(FILE *file_pt, const unsigned &n_plot)
C-style output function – does nothing.
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Compute the elemental residual vector - wrapper function called by get_residuals in GeneralisedElemen...
void output(FILE *file_pt)
C-style output function – does nothing.
void output(std::ostream &outfile, const unsigned &n_plot)
Output function – does nothing.
BiharmonicFluidBoundaryElement(Node *node_pt, const unsigned s_fixed_index)
void output_fluid_velocity(std::ostream &outfile, const unsigned &n_plot)
Output function – does nothing.
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Compute the elemental residual vector and jacobian matrix - wrapper function called by get_jacobian i...
void compute_error(std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
compute_error – does nothing
virtual void fill_in_generic_residual_contribution_biharmonic_boundary(Vector< double > &residuals, DenseMatrix< double > &jacobian, unsigned JFLAG)
Computes the elemental residual vector and the elemental jacobian matrix if JFLAG = 0 Imposes the equ...
Biharmonic Fluid Problem Class - describes stokes flow in 2D. Developed for the topologically rectang...
void doc_solution(DocInfo &doc_info, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt=0)
documents the solution, and if an exact solution is provided, then the error between the numerical an...
void impose_fluid_flow_on_edge(const unsigned &b, FluidBCFctPt u_imposed_fn)
Impose a prescribed fluid flow comprising the velocity normal to the boundary (u_imposed_fn[0]) and t...
void impose_solid_boundary_on_edge(const unsigned &b, const double &psi=0)
Imposes a solid boundary on boundary b - no flow into boundary or along boundary v_n = 0 and v_t = 0....
void impose_traction_free_edge(const unsigned &b)
Impose a traction free edge - i.e. v_t = 0 or dpsi/dn = 0. In general dpsi/dn = 0 can only be imposed...
BiharmonicFluidProblem()
constructor
void actions_after_newton_solve()
action after solve
void(* FluidBCFctPt)(const double &s, Vector< double > &u)
Definition of a dirichlet boundary condition function pointer. Takes the position along a boundary (s...
void actions_before_newton_solve()
actions before solve, performs self test
Biharmonic Plate Problem Class - for problems where the load can be assumed to be acting normal to th...
void(* BiharmonicSourceFctPt)(const Vector< double > &x, double &f)
Definition of the Source Function.
void actions_before_newton_solve()
actions before solve, performs self test
void set_neumann_boundary_condition(const unsigned &b, BiharmonicFluxElement< 2 >::FluxFctPt flux0_fct_pt, BiharmonicFluxElement< 2 >::FluxFctPt flux1_fct_pt=0)
Imposes the prescribed Neumann BCs laplacian(u) (flux0_fct_pt) and dlaplacian(u)/dn (flux1_fct_pt) wi...
void build_bulk_mesh(const unsigned n_x, const unsigned n_y, TopologicallyRectangularDomain *domain_pt, HermiteQuadMesh< BiharmonicElement< 2 >>::MeshSpacingFnPtr spacing_fn=0)
builds the bulk mesh on a prescribed domain with a node spacing defined by spacing fn with n_x by n_y...
void build_global_mesh_and_assign_eqn_numbers()
Build global mesh and assign equation numbers.
Mesh * bulk_element_mesh_pt()
Access function to the bulk element mesh pt.
void doc_solution(DocInfo &doc_info, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt=0)
documents the solution, and if an exact solution is provided, then the error between the numerical an...
Mesh * Bulk_element_mesh_pt
Mesh for BiharmonicElement<DIM> only - the block preconditioner assemble the global equation number t...
BiharmonicProblem()
Constructor.
virtual ~BiharmonicProblem()
Destructor. Delete the meshes.
void(* DirichletBCFctPt)(const double &s, double &u)
Definition of a dirichlet boundary condition function pointer. Takes the position along a boundary (s...
void set_dirichlet_boundary_condition(const unsigned &b, DirichletBCFctPt u_fn=0, DirichletBCFctPt dudn_fn=0)
Imposes the prescribed dirichlet BCs u (u_fn) and du/dn (dudn_fn) dirichlet BCs by 'pinning'.
void actions_after_newton_solve()
action after solve
void set_source_function(const BiharmonicSourceFctPt source_fct_pt)
Impose a load to the surface of the plate. note : MUST be called before neumann boundary conditions a...
Mesh * Face_element_mesh_pt
mesh for face elements
Class of matrices containing doubles, and stored as a DenseMatrix<double>, but with solving functiona...
Information for documentation of results: Directory and file number to enable output in the form RESL...
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
void(* SteadyExactSolutionFctPt)(const Vector< double > &, Vector< double > &)
Function pointer for function that computes vector-valued steady "exact solution" as .
A two dimensional Hermite bicubic element quadrilateral mesh for a topologically rectangular domain....
GeneralisedElement *& element_pt(const unsigned long &e)
Return pointer to element e.
unsigned long nelement() const
Return number of elements in the mesh.
Nodes are derived from Data, but, in addition, have a definite (Eulerian) position in a space of a gi...
/////////////////////////////////////////////////////////////////////// /////////////////////////////...
////////////////////////////////////////////////////////////////// //////////////////////////////////...
unsigned add_sub_mesh(Mesh *const &mesh_pt)
Add a submesh to the problem and return its number, i, by which it can be accessed via mesh_pt(i).
unsigned long assign_eqn_numbers(const bool &assign_local_eqn_numbers=true)
Assign all equation numbers for problem: Deals with global data (= data that isn't attached to any el...
void build_global_mesh()
Build the global mesh by combining the all the submeshes. Note: The nodes boundary information refers...
unsigned self_test()
Self-test: Check meshes and global data. Return 0 for OK.
Topologically Rectangular Domain - a domain dexcribing a topologically rectangular problem - primaril...
//////////////////////////////////////////////////////////////////// ////////////////////////////////...
OomphInfo oomph_info
Single (global) instantiation of the OomphInfo object – this is used throughout the library as a "rep...