33 #ifndef OOMPH_REFINEABLE_AXISYM_ADVECTION_DIFFUSION_ELEMENTS_HEADER 34 #define OOMPH_REFINEABLE_AXISYM_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" 110 unsigned n_node =
nnode();
125 for(
unsigned l=0;l<n_node;l++)
127 values[0] += this->
nodal_value(l,u_nodal_index)*psi[l];
142 const unsigned n_node =
nnode();
157 for(
unsigned l=0;l<n_node;l++)
159 values[0] += this->
nodal_value(t,l,u_nodal_index)*psi[l];
166 "Time-dependent version of get_interpolated_values() ";
167 error_message +=
"not implemented for this element \n";
171 "RefineableAxisymAdvectionDiffusionEquations::get_interpolated_values()",
172 OOMPH_EXCEPTION_LOCATION);
197 this->
Pe_pt = cast_father_element_pt->
pe_pt();
215 unsigned n_node = this->
nnode();
231 for(
unsigned l=0;l<n_node;l++)
233 unsigned n_master = 1;
242 n_master = hang_info_pt->
nmaster();
251 for(
unsigned m=0;m<n_master;m++)
267 if (global_eqn >= 0) {++n_u_dof;}
272 du_ddata.resize(n_u_dof,0.0);
273 global_eqn_number.resize(n_u_dof,0);
278 for(
unsigned l=0;l<n_node;l++)
280 unsigned n_master = 1;
281 double hang_weight = 1.0;
290 n_master = hang_info_pt->
nmaster();
299 for(
unsigned m=0;m<n_master;m++)
329 global_eqn_number[count] = global_eqn;
331 du_ddata[count] = psi[l]*hang_weight;
358 template <
unsigned NNODE_1D>
427 template<
unsigned NNODE_1D>
Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element.
void broken_copy(const std::string &class_name)
Issue error message and terminate execution.
void further_setup_hanging_nodes()
Perform additional hanging node procedures for variables that are not interpolated by all nodes...
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.
RefineableQAxisymAdvectionDiffusionElement(const RefineableQAxisymAdvectionDiffusionElement< NNODE_1D > &dummy)
Broken copy constructor.
HangInfo *const & hanging_pt() const
Return pointer to hanging node data (this refers to the geometric hanging node status) (const version...
RefineableAxisymAdvectionDiffusionEquations(const RefineableAxisymAdvectionDiffusionEquations &dummy)
Broken copy constructor.
double *& pe_st_pt()
Pointer to Peclet number multipled by Strouha number.
unsigned nvertex_node() const
Number of vertex nodes in the element.
double const & master_weight(const unsigned &i) const
Return weight for dofs on i-th master node.
unsigned nvertex_node() const
Number of vertex nodes in the element.
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.
AxisymAdvectionDiffusionWindFctPt Wind_fct_pt
Pointer to wind function:
AxisymAdvectionDiffusionSourceFctPt Source_fct_pt
Pointer to source function:
unsigned num_Z2_flux_terms()
Broken assignment operator.
void rebuild_from_sons(Mesh *&mesh_pt)
Rebuild from sons: empty.
QAxisymAdvectionDiffusionElement elements are linear/quadrilateral/brick-shaped Axisymmetric Advectio...
FaceGeometry()
Constructor: Call the constructor for the appropriate lower-dimensional QElement. ...
RefineableQAxisymAdvectionDiffusionElement()
Empty Constructor:
void get_flux(const Vector< double > &s, Vector< double > &flux) const
Get flux:
Refineable version of QAxisymAdvectionDiffusionElement. Inherit from the standard QAxisymAdvectionDif...
unsigned long eqn_number(const unsigned &ieqn_local) const
Return the global equation number corresponding to the ieqn_local-th local equation number...
unsigned ncont_interpolated_values() const
Broken assignment operator.
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 get_Z2_flux(const Vector< double > &s, Vector< double > &flux)
Get 'flux' for Z2 error recovery: Standard flux.from AdvectionDiffusion equations.
void further_build()
Further build: Copy source function pointer from father element.
double *& pe_pt()
Pointer to Peclet number.
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.
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 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 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.
Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element.
AxisymAdvectionDiffusionSourceFctPt & source_fct_pt()
Access function: Pointer to source function.
std::string string(const unsigned &i)
Return the i-th string or "" if the relevant string hasn't been defined.
AxisymAdvectionDiffusionWindFctPt & wind_fct_pt()
Access function: Pointer to wind function.
RefineableAxisymAdvectionDiffusionEquations()
Empty Constructor.
double geometric_jacobian(const Vector< double > &x)
Fill in the geometric Jacobian, which in this case is r.
void fill_in_generic_residual_contribution_axi_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...
virtual unsigned u_index_axi_adv_diff() const
Broken assignment operator.
unsigned nrecovery_order()
Order of recovery shape functions for Z2 error estimation: Same order as shape functions.
A version of the Advection Diffusion in axisym coordinates equations that can be used with non-unifor...
unsigned nnode() const
Return the number of nodes.
double * PeSt_pt
Pointer to global Peclet number multiplied by Strouhal number.
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...
A class for all elements that solve the Advection Diffusion equations in a cylindrical polar coordina...