33 #ifndef OOMPH_REFINEABLE_ADVECTION_DIFFUSION_ELEMENTS_HEADER 34 #define OOMPH_REFINEABLE_ADVECTION_DIFFUSION_ELEMENTS_HEADER 38 #include <oomph-lib-config.h> 42 #include "../generic/refineable_quad_element.h" 43 #include "../generic/refineable_brick_element.h" 44 #include "../generic/error_estimator.h" 58 template <
unsigned DIM>
106 unsigned n_node =
nnode();
121 for(
unsigned l=0;l<n_node;l++)
123 values[0] += this->
nodal_value(l,u_nodal_index)*psi[l];
138 const unsigned n_node =
nnode();
153 for(
unsigned l=0;l<n_node;l++)
155 values[0] += this->
nodal_value(t,l,u_nodal_index)*psi[l];
190 this->
Pe_pt = cast_father_element_pt->
pe_pt();
208 unsigned n_node = this->
nnode();
224 for(
unsigned l=0;l<n_node;l++)
226 unsigned n_master = 1;
235 n_master = hang_info_pt->
nmaster();
244 for(
unsigned m=0;m<n_master;m++)
260 if (global_eqn >= 0) {++n_u_dof;}
265 du_ddata.resize(n_u_dof,0.0);
266 global_eqn_number.resize(n_u_dof,0);
271 for(
unsigned l=0;l<n_node;l++)
273 unsigned n_master = 1;
274 double hang_weight = 1.0;
283 n_master = hang_info_pt->
nmaster();
292 for(
unsigned m=0;m<n_master;m++)
322 global_eqn_number[count] = global_eqn;
324 du_ddata[count] = psi[l]*hang_weight;
351 template <
unsigned DIM,
unsigned NNODE_1D>
418 template<
unsigned DIM,
unsigned NNODE_1D>
420 public virtual QElement<DIM-1,NNODE_1D>
unsigned num_Z2_flux_terms()
Number of 'flux' terms for Z2 error estimation.
void broken_copy(const std::string &class_name)
Issue error message and terminate execution.
Base class for finite elements that can compute the quantities that are required for the Z2 error est...
virtual RefineableElement * father_element_pt() const
Return a pointer to the father element.
HangInfo *const & hanging_pt() const
Return pointer to hanging node data (this refers to the geometric hanging node status) (const version...
AdvectionDiffusionSourceFctPt & source_fct_pt()
Access function: Pointer to source function.
AdvectionDiffusionSourceFctPt Source_fct_pt
Pointer to source function:
void further_build()
Further build: Copy source function pointer from father element.
A version of the Advection Diffusion equations that can be used with non-uniform mesh refinement...
QAdvectionDiffusionElement elements are linear/quadrilateral/brick-shaped Advection Diffusion element...
void dinterpolated_u_adv_diff_ddata(const Vector< double > &s, Vector< double > &du_ddata, Vector< unsigned > &global_eqn_number)
Compute the derivatives of the i-th component of velocity at point s with respect to all data that ca...
double const & master_weight(const unsigned &i) const
Return weight for dofs on i-th master node.
unsigned nrecovery_order()
Order of recovery shape functions for Z2 error estimation: Same order as shape functions.
Nodes are derived from Data, but, in addition, have a definite (Eulerian) position in a space of a gi...
unsigned nmaster() const
Return the number of master nodes.
bool is_hanging() const
Test whether the node is geometrically hanging.
long & eqn_number(const unsigned &i)
Return the equation number of the i-th stored variable.
double * Pe_pt
Pointer to global Peclet number.
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...
A class for all elements that solve the Advection Diffusion equations using isoparametric elements...
AdvectionDiffusionWindFctPt Wind_fct_pt
Pointer to wind function:
double *& pe_pt()
Pointer to Peclet number.
void get_Z2_flux(const Vector< double > &s, Vector< double > &flux)
Get 'flux' for Z2 error recovery: Standard flux.from AdvectionDiffusion equations.
Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element.
void fill_in_generic_residual_contribution_adv_diff(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix, unsigned flag)
Add the element's contribution to the elemental residual vector and/or Jacobian matrix flag=1: comput...
RefineableAdvectionDiffusionEquations(const RefineableAdvectionDiffusionEquations< DIM > &dummy)
Broken copy constructor.
void further_setup_hanging_nodes()
Perform additional hanging node procedures for variables that are not interpolated by all nodes...
RefineableQAdvectionDiffusionElement()
Empty Constructor:
virtual unsigned nvertex_node() const
AdvectionDiffusionWindFctPt & wind_fct_pt()
Access function: Pointer to wind function.
void operator=(const RefineableQAdvectionDiffusionElement< DIM, NNODE_1D > &)
Broken assignment operator.
unsigned long eqn_number(const unsigned &ieqn_local) const
Return the global equation number corresponding to the ieqn_local-th local equation number...
unsigned nvertex_node() const
Number of vertex nodes in the element.
FaceGeometry()
Constructor: Call the constructor for the appropriate lower-dimensional QElement. ...
bool ALE_is_disabled
Boolean flag to indicate if ALE formulation is disabled when time-derivatives are computed...
virtual unsigned u_index_adv_diff() const
Return the index at which the unknown value is stored. The default value, 0, is appropriate for singl...
Node *const & master_node_pt(const unsigned &i) const
Return a pointer to the i-th master node.
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
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...
Class that contains data for hanging nodes.
void operator=(const RefineableAdvectionDiffusionEquations< DIM > &)
Broken assignment operator.
unsigned ncont_interpolated_values() const
Number of continuously interpolated values: 1.
RefineableAdvectionDiffusionEquations()
Empty Constructor.
void get_interpolated_values(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 broken_assign(const std::string &class_name)
Issue error message and terminate execution.
double *& pe_st_pt()
Pointer to Peclet number multipled by Strouha number.
void rebuild_from_sons(Mesh *&mesh_pt)
Rebuild from sons: empty.
void get_flux(const Vector< double > &s, Vector< double > &flux) const
Get flux: .
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...
double * PeSt_pt
Pointer to global Peclet number multiplied by Strouhal number.
Refineable version of QAdvectionDiffusionElement. Inherit from the standard QAdvectionDiffusionElemen...
unsigned nnode() const
Return the number of nodes.
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...
RefineableQAdvectionDiffusionElement(const RefineableQAdvectionDiffusionElement< DIM, NNODE_1D > &dummy)
Broken copy constructor.