29#ifndef OOMPH_REFINEABLE_LINEAR_ELASTICITY_ELEMENTS_HEADER
30#define OOMPH_REFINEABLE_LINEAR_ELASTICITY_ELEMENTS_HEADER
43 template<
unsigned DIM>
68 values.resize(
DIM, 0.0);
78 for (
unsigned i = 0;
i <
DIM;
i++)
115 std::ostringstream error_message;
116 error_message <<
"The flux vector has the wrong number of entries, "
133 for (
unsigned i = 0;
i <
DIM;
i++)
140 for (
unsigned i = 0;
i <
DIM;
i++)
142 for (
unsigned j =
i + 1;
j <
DIM;
j++)
168 cast_father_element_pt->elasticity_tensor_pt();
171 this->
Lambda_sq_pt = cast_father_element_pt->lambda_sq_pt();
174 this->
Unsteady = cast_father_element_pt->is_inertia_enabled();
192 template<
unsigned DIM,
unsigned NNODE_1D>
238 template<
unsigned DIM>
318 template<
unsigned NNODE_1D>
320 :
public virtual QElement<1, NNODE_1D>
332 template<
unsigned NNODE_1D>
347 template<
unsigned NNODE_1D>
349 :
public virtual QElement<2, NNODE_1D>
361 template<
unsigned NNODE_1D>
364 :
public virtual QElement<1, NNODE_1D>
Base class for finite elements that can compute the quantities that are required for the Z2 error est...
FaceGeometry class definition: This policy class is used to allow construction of face elements that ...
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
double nodal_value(const unsigned &n, const unsigned &i) const
Return the i-th value stored at local node n. Produces suitably interpolated values for hanging nodes...
virtual unsigned nvertex_node() const
Return the number of vertex nodes in this element. Broken virtual function in "pure" finite elements.
double size() const
Calculate the size of the element (length, area, volume,...) in Eulerian computational coordinates....
virtual void shape(const Vector< double > &s, Shape &psi) const =0
Calculate the geometric shape functions at local coordinate s. This function must be overloaded for e...
unsigned nnode() const
Return the number of nodes.
void(* SteadyExactSolutionFctPt)(const Vector< double > &, Vector< double > &)
Function pointer for function that computes vector-valued steady "exact solution" as .
virtual void set_integration_scheme(Integral *const &integral_pt)
Set the spatial integration scheme.
virtual Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element. Broken virtual function in "pure" finite elements.
ElasticityTensor * Elasticity_tensor_pt
Pointer to the elasticity tensor.
double * Lambda_sq_pt
Timescale ratio (non-dim. density)
void get_strain(const Vector< double > &s, DenseMatrix< double > &strain) const
Return the strain tensor.
BodyForceFctPt Body_force_fct_pt
Pointer to body force function.
void interpolated_u_linear_elasticity(const Vector< double > &s, Vector< double > &disp) const
Compute vector of FE interpolated displacement u at local coordinate s.
bool Unsteady
Flag that switches inertia on/off.
virtual unsigned u_index_linear_elasticity(const unsigned i) const
Return the index at which the i-th unknown displacement component is stored. The default value,...
A class for elements that solve the equations of linear elasticity in cartesian coordinates.
Nodes are derived from Data, but, in addition, have a definite (Eulerian) position in a space of a gi...
An OomphLibError object which should be thrown when an run-time error is encountered....
A class that is used to template the p-refineable Q elements by dimension. It's really nothing more t...
p-refineable version of 2D QLinearElasticityElement elements
PRefineableQLinearElasticityElement()
Constructor, simply call the other constructors.
PRefineableQLinearElasticityElement(const PRefineableQLinearElasticityElement< DIM > &dummy)=delete
Broken copy constructor.
unsigned nvertex_node() const
Number of vertex nodes in the element.
void further_build()
Broken assignment operator.
void compute_energy_error(std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_grad_pt, double &error, double &norm)
Get error against and norm of exact solution.
Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element.
~PRefineableQLinearElasticityElement()
Destructor (to avoid memory leaks)
unsigned ncont_interpolated_values() const
Number of continuously interpolated values: 1.
unsigned nrecovery_order()
Order of recovery shape functions for Z2 error estimation:
Point element has just a single node and a single shape function which is identically equal to one.
An Element that solves the equations of linear elasticity in Cartesian coordinates,...
RefineableElements are FiniteElements that may be subdivided into children to provide a better local ...
virtual RefineableElement * father_element_pt() const
Return a pointer to the father element.
Class for Refineable LinearElasticity equations.
unsigned ncont_interpolated_values() const
Number of continuously interpolated values: DIM.
void further_build()
Further build function, pass the pointers down to the sons.
unsigned num_Z2_flux_terms()
Number of 'flux' terms for Z2 error estimation.
RefineableLinearElasticityEquations()
Constructor.
void get_Z2_flux(const Vector< double > &s, Vector< double > &flux)
Get 'flux' for Z2 error recovery: Upper triangular entries in strain tensor.
void get_interpolated_values(const unsigned &t, const Vector< double > &s, Vector< double > &values)
Get the function value u in Vector. Note: Given the generality of the interface (this function is usu...
void get_interpolated_values(const Vector< double > &s, Vector< double > &values)
Get the current interpolated values (displacements). Note: Given the generality of the interface (thi...
void fill_in_generic_contribution_to_residuals_linear_elasticity(Vector< double > &residuals, DenseMatrix< double > &jacobian, unsigned flag)
Overloaded helper function to take hanging nodes into account.
A class that is used to template the refineable Q elements by dimension. It's really nothing more tha...
Class for refineable QLinearElasticityElement elements.
void further_setup_hanging_nodes()
No additional hanging node procedures are required.
Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element.
void rebuild_from_sons(Mesh *&mesh_pt)
Empty rebuild from sons, no need to reconstruct anything here.
unsigned nrecovery_order()
Order of recovery shape functions for Z2 error estimation: Same order as shape functions.
RefineableQLinearElasticityElement()
Constructor:
unsigned nvertex_node() const
Number of vertex nodes in the element.
A Class for shape functions. In simple cases, the shape functions have only one index that can be tho...
TAdvectionDiffusionReactionElement<NREAGENT,DIM,NNODE_1D> elements are isoparametric triangular DIM-d...
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).