41 template<
unsigned DIM>
84 for (
unsigned i = 0;
i <
DIM;
i++)
94 unsigned n_pres = this->npres_nst();
101 int p_index = this->p_nodal_index_nst();
115 this->pressure_node_pt(
l)->is_hanging(
p_index);
145 for (
unsigned i = 0;
i <
DIM + 1;
i++)
186 for (
unsigned i = 0;
i <
DIM;
i++)
223 this->pshape_nst(
s,
psi_p);
285 template<
unsigned DIM>
290 const unsigned&
flag)
297 if (
ndof() == 0)
return;
303 unsigned n_pres = this->npres_nst();
307 for (
unsigned i = 0;
i <
DIM;
i++)
315 int p_index = this->p_nodal_index_nst();
327 this->pressure_node_pt(
l)->is_hanging(
p_index);
335 "Pressure advection diffusion does not work in this case\n",
362 double scaled_re = this->re() * this->density_ratio();
398 for (
unsigned i = 0;
i <
DIM;
i++)
410 for (
unsigned i = 0;
i <
DIM;
i++)
421 if (this->Press_adv_diff_source_fct_pt != 0)
474 for (
unsigned k = 0;
k <
DIM;
k++)
496 this->pressure_node_pt(
l2)->hanging_pt(
p_index);
530 this->Pinned_fp_pressure_eqn) &&
532 this->Pinned_fp_pressure_eqn))
534 for (
unsigned k = 0;
k <
DIM;
k++)
546 this->Pinned_fp_pressure_eqn) &&
548 this->Pinned_fp_pressure_eqn))
564 this->Pressure_advection_diffusion_robin_element_pt.
size();
567 this->Pressure_advection_diffusion_robin_element_pt[
e]
568 ->fill_in_generic_residual_contribution_fp_press_adv_diff_robin_bc(
580 template<
unsigned DIM>
585 const unsigned&
flag)
588 if (
ndof() == 0)
return;
594 unsigned n_pres = this->npres_nst();
600 for (
unsigned i = 0;
i <
DIM;
i++)
608 int p_index = this->p_nodal_index_nst();
622 this->pressure_node_pt(
l)->is_hanging(
p_index);
664 double scaled_re = this->re() * this->density_ratio();
667 double scaled_re_st = this->re_st() * this->density_ratio();
697 for (
unsigned i = 0;
i <
DIM + 1;
i++)
707 double J = this->dshape_and_dtest_eulerian_at_knot_nst(
720 double interpolated_p = 0.0;
741 interpolated_p += this->p_nst(
l) *
psip[
l];
754 for (
unsigned i = 0;
i <
DIM;
i++)
769 for (
unsigned j = 0;
j <
DIM;
j++)
784 for (
unsigned i = 0;
i <
DIM;
i++)
796 this->get_body_force_nst(
840 for (
unsigned i = 0;
i <
DIM;
i++)
885 for (
unsigned k = 0;
k <
DIM;
k++)
895 for (
unsigned k = 0;
k <
DIM;
k++)
899 (
scaled_re * interpolated_u[
k] * interpolated_dudx(
i,
k) *
904 for (
unsigned k = 0;
k <
DIM;
k++)
911 ((interpolated_dudx(
i,
k) +
912 this->Gamma[
i] * interpolated_dudx(
k,
i)) *
1011 for (
unsigned k = 0;
k <
DIM;
k++)
1023 for (
unsigned k = 0;
k <
DIM;
k++)
1034 for (
unsigned k = 0;
k <
DIM;
k++)
1056 this->pressure_node_pt(
l2)->hanging_pt(
p_index);
1106 if (this->ReynoldsStrouhal_is_stored_as_external_data)
1131 for (
unsigned k = 0;
k <
DIM;
k++)
1136 interpolated_dudx(
i,
k) *
testf[
l] * W *
1200 for (
unsigned k = 0;
k <
DIM;
k++)
1293 template<
unsigned DIM>
1299 throw OomphLibError(
"Space-time version has not been implemented yet!",
bool ALE_is_disabled
Boolean flag to indicate if ALE formulation is disabled when time-derivatives are computed....
A Class for the derivatives of shape functions The class design is essentially the same as Shape,...
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 double dshape_eulerian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsidx) const
Return the geometric shape functions and also first derivatives w.r.t. global coordinates at the ipt-...
double size() const
Calculate the size of the element (length, area, volume,...) in Eulerian computational coordinates....
virtual double interpolated_x(const Vector< double > &s, const unsigned &i) const
Return FE interpolated coordinate x[i] at local coordinate s.
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Return the local equation number corresponding to the i-th value at the n-th local node.
unsigned nnode() const
Return the number of nodes.
double nodal_position(const unsigned &n, const unsigned &i) const
Return the i-th coordinate at local node n. If the node is hanging, the appropriate interpolation is ...
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
virtual double J_eulerian_at_knot(const unsigned &ipt) const
Return the Jacobian of the mapping from local to global coordinates at the ipt-th integration point.
virtual void shape_at_knot(const unsigned &ipt, Shape &psi) const
Return the geometric shape function at the ipt-th integration point.
unsigned ndof() const
Return the number of equations/dofs in the element.
unsigned long eqn_number(const unsigned &ieqn_local) const
Return the global equation number corresponding to the ieqn_local-th local equation number.
int external_local_eqn(const unsigned &i, const unsigned &j)
Return the local equation number corresponding to the j-th value stored at the i-th external data.
Class that contains data for hanging nodes.
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.
virtual unsigned nweight() const =0
Return the number of integration points of the scheme.
virtual double weight(const unsigned &i) const =0
Return weight of i-th integration point.
bool is_hanging() const
Test whether the node is geometrically hanging.
HangInfo *const & hanging_pt() const
Return pointer to hanging node data (this refers to the geometric hanging node status) (const version...
An OomphLibError object which should be thrown when an run-time error is encountered....
An OomphLibWarning object which should be created as a temporary object to issue a warning....
Refineable version of the Navier-Stokes equations.
void get_pressure_and_velocity_mass_matrix_diagonal(Vector< double > &press_mass_diag, Vector< double > &veloc_mass_diag, const unsigned &which_one=0)
Compute the diagonal of the velocity/pressure mass matrices. If which one=0, both are computed,...
void fill_in_generic_residual_contribution_nst(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix, const unsigned &compute_jacobian_flag)
Add the elements contribution to elemental residual vector and/or Jacobian matrix....
void fill_in_generic_pressure_advection_diffusion_contribution_nst(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &compute_jacobian_flag)
Compute the residuals for the associated pressure advection diffusion problem. Used by the Fp precond...
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...
TAdvectionDiffusionReactionElement()
Constructor: Call constructors for TElement and AdvectionDiffusionReaction equations.
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).