58 for (
unsigned i = 0;
i < 3; ++
i)
121 for (
unsigned ipt = 0;
ipt < Nintpt;
ipt++)
124 for (
unsigned i = 0;
i <
DIM;
i++)
144 double interpolated_p = 0.0;
166 for (
unsigned i = 0;
i <
DIM;
i++)
172 for (
unsigned i = 0;
i <
DIM + 1;
i++)
178 for (
unsigned j = 0;
j <
DIM;
j++)
192 for (
unsigned i = 0;
i < 2;
i++)
241 for (
unsigned i = 0;
i <
DIM + 1;
i++)
288 interpolated_dudx(0, 0) *
dtestfdx(
l, 0) * W *
292 (interpolated_dudx(0, 1) +
293 Gamma[0] * interpolated_dudx(1, 0)) *
306 (
r * interpolated_u[0] * interpolated_dudx(0, 0) -
307 interpolated_u[2] * interpolated_u[2] +
308 r * interpolated_u[1] * interpolated_dudx(0, 1)) *
314 for (
unsigned k = 0;
k < 2;
k++)
317 interpolated_dudx(0,
k) *
testf[
l] * W *
347 (interpolated_dudx(1, 0) +
348 Gamma[1] * interpolated_dudx(0, 1)) *
352 interpolated_dudx(1, 1) *
dtestfdx(
l, 1) * W *
362 (
r * interpolated_u[0] * interpolated_dudx(1, 0) +
363 r * interpolated_u[1] * interpolated_dudx(1, 1)) *
369 for (
unsigned k = 0;
k < 2;
k++)
372 interpolated_dudx(1,
k) *
testf[
l] * W *
395 (
r * interpolated_dudx(2, 0) -
396 Gamma[0] * interpolated_u[2]) *
403 ((interpolated_u[2] /
r) -
404 Gamma[0] * interpolated_dudx(2, 0)) *
415 (
r * interpolated_u[0] * interpolated_dudx(2, 0) +
416 interpolated_u[0] * interpolated_u[2] +
417 r * interpolated_u[1] * interpolated_dudx(2, 1)) *
423 for (
unsigned k = 0;
k < 2;
k++)
426 interpolated_dudx(2,
k) *
testf[
l] * W *
470 for (
unsigned i2 = 0;
i2 <
DIM + 1;
i2++)
535 (
r *
psif[
l2] * interpolated_dudx(0, 0) +
543 for (
unsigned k = 0;
k < 2;
k++)
563 interpolated_dudx(0, 1) *
testf[
l] * W *
603 interpolated_dudx(1, 0) *
testf[
l] * W *
645 r *
psif[
l2] * interpolated_dudx(1, 1) +
652 for (
unsigned k = 0;
k < 2;
k++)
679 (
r *
psif[
l2] * interpolated_dudx(2, 0) +
680 psif[
l2] * interpolated_u[2]) *
695 interpolated_dudx(2, 1) *
testf[
l] * W *
743 interpolated_u[0] *
psif[
l2] +
750 for (
unsigned k = 0;
k < 2;
k++)
884 (interpolated_u[0] +
r * interpolated_dudx(0, 0) +
885 r * interpolated_dudx(1, 1)) *
917 for (
unsigned i2 = 0;
i2 <
DIM + 1;
i2++)
987 std::string
function =
"RefineableAxisymmetricNavierStokesEquations::\n";
988 function +=
"get_dresidual_dnodal_coordinates(...)";
1008 for (
unsigned i = 0;
i < 3;
i++)
1101 for (std::map<Node*, unsigned>::iterator
it =
1110 unsigned q =
it->second;
1113 if (
nod_pt->has_auxiliary_node_update_fct_pt())
1120 warning_stream <<
"\nThe functionality to evaluate the additional"
1121 <<
"\ncontribution to the deriv of the residual eqn"
1122 <<
"\nw.r.t. the nodal coordinates which comes about"
1123 <<
"\nif a node's values are updated using an auxiliary"
1124 <<
"\nnode update function has NOT been tested for"
1125 <<
"\nrefineable axisymmetric Navier-Stokes elements."
1126 <<
"\nUse at your own risk" << std::endl;
1128 "RefineableAxisymmetricNavierStokesEquations::get_"
1129 "dresidual_dnodal_coordinates",
1134 for (
unsigned i = 0;
i < 3;
i++)
1140 for (
unsigned p = 0;
p < 2;
p++)
1150 nod_pt->perform_auxiliary_node_update_fct();
1153 for (
unsigned i = 0;
i < 3;
i++)
1164 nod_pt->perform_auxiliary_node_update_fct();
1179 for (
unsigned i = 0;
i < 2;
i++)
1208 double interpolated_p = 0.0;
1229 for (
unsigned i = 0;
i < 2;
i++)
1235 for (
unsigned i = 0;
i < 3;
i++)
1243 for (
unsigned j = 0;
j < 2;
j++)
1257 for (
unsigned i = 0;
i < 2;
i++)
1270 for (
unsigned p = 0;
p < 2;
p++)
1273 for (
unsigned i = 0;
i < 3;
i++)
1276 for (
unsigned k = 0;
k < 2;
k++)
1383 for (
unsigned p = 0;
p < 2;
p++)
1405 interpolated_dudx(0, 0) *
dtestfdx(
l, 0);
1408 (interpolated_dudx(0, 1) +
1409 Gamma[0] * interpolated_dudx(1, 0)) *
1420 (
r * interpolated_u[0] * interpolated_dudx(0, 0) -
1421 interpolated_u[2] * interpolated_u[2] +
1422 r * interpolated_u[1] * interpolated_dudx(0, 1)) *
1428 for (
unsigned k = 0;
k < 2;
k++)
1431 interpolated_dudx(0,
k) *
testf_;
1473 (interpolated_dudx(0, 1) +
1474 Gamma[0] * interpolated_dudx(1, 0)) *
1483 (interpolated_dudx(0, 1) +
1484 Gamma[0] * interpolated_dudx(1, 0)) *
1489 for (
unsigned k = 0;
k < 2;
k++)
1575 for (
unsigned p = 0;
p < 2;
p++)
1583 for (
unsigned k = 0;
k < 2;
k++)
1658 for (
unsigned p = 0;
p < 2;
p++)
1680 (interpolated_dudx(1, 0) +
1681 Gamma[1] * interpolated_dudx(0, 1)) *
1685 interpolated_dudx(1, 1) *
dtestfdx(
l, 1);
1692 (
r * interpolated_u[0] * interpolated_dudx(1, 0) +
1693 r * interpolated_u[1] * interpolated_dudx(1, 1)) *
1699 for (
unsigned k = 0;
k < 2;
k++)
1702 interpolated_dudx(1,
k) *
testf_;
1738 (interpolated_dudx(1, 0) +
1739 Gamma[1] * interpolated_dudx(0, 1)) *
1742 (1.0 +
Gamma[1]) * interpolated_dudx(1, 1) *
1748 Gamma[1] * interpolated_dudx(0, 1)) *
1750 (1.0 +
Gamma[1]) * interpolated_dudx(1, 1) *
1755 for (
unsigned k = 0;
k < 2;
k++)
1834 for (
unsigned p = 0;
p < 2;
p++)
1851 for (
unsigned k = 0;
k < 2;
k++)
1905 for (
unsigned p = 0;
p < 2;
p++)
1927 (
r * interpolated_dudx(2, 0) -
Gamma[0] * interpolated_u[2]) *
1934 ((interpolated_u[2] /
r) -
1935 Gamma[0] * interpolated_dudx(2, 0)) *
1943 (
r * interpolated_u[0] * interpolated_dudx(2, 0) +
1944 interpolated_u[0] * interpolated_u[2] +
1945 r * interpolated_u[1] * interpolated_dudx(2, 1)) *
1951 for (
unsigned k = 0;
k < 2;
k++)
1954 interpolated_dudx(2,
k) *
testf_;
2001 for (
unsigned k = 0;
k < 2;
k++)
2087 for (
unsigned p = 0;
p < 2;
p++)
2109 for (
unsigned k = 0;
k < 2;
k++)
2193 for (
unsigned p = 0;
p < 2;
p++)
2202 double aux = -
r * source;
2205 aux += (interpolated_u[0] +
r * interpolated_dudx(0, 0) +
2206 r * interpolated_dudx(1, 1));
2226 aux += (interpolated_dudx(0, 0) + interpolated_dudx(1, 1)) *
2283 for (
unsigned p = 0;
p < 2;
p++)
const double & re() const
Reynolds number.
const double & re_invfr() const
Global inverse Froude number.
virtual double p_axi_nst(const unsigned &n_p) const =0
Pressure at local pressure "node" n_p Uses suitably interpolated value for hanging nodes.
virtual int p_nodal_index_axi_nst() const
Which nodal value represents the pressure?
virtual void pshape_axi_nst(const Vector< double > &s, Shape &psi) const =0
Compute the pressure shape functions at local coordinate s.
const double & re_invro() const
Global Reynolds number multiplied by inverse Rossby number.
virtual double dshape_and_dtest_eulerian_at_knot_axi_nst(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
Compute the shape functions and derivatives w.r.t. global coords at ipt-th integration point Return J...
const Vector< double > & g() const
Vector of gravitational components.
double get_source_fct(const double &time, const unsigned &ipt, const Vector< double > &x)
Calculate the source fct at given time and Eulerian position.
double du_dt_axi_nst(const unsigned &n, const unsigned &i) const
i-th component of du/dt at local node n. Uses suitably interpolated value for hanging nodes.
virtual unsigned npres_axi_nst() const =0
Function to return number of pressure degrees of freedom.
bool ALE_is_disabled
Boolean flag to indicate if ALE formulation is disabled when the time-derivatives are computed....
virtual void get_source_fct_gradient(const double &time, const unsigned &ipt, const Vector< double > &x, Vector< double > &gradient)
Get gradient of source term at (Eulerian) position x. Computed via function pointer (if set) or by fi...
const double & viscosity_ratio() const
Viscosity ratio for element: Element's viscosity relative to the viscosity used in the definition of ...
const double & density_ratio() const
Density ratio for element: Element's density relative to the viscosity used in the definition of the ...
virtual void get_body_force_gradient_axi_nst(const double &time, const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, DenseMatrix< double > &d_body_force_dx)
Get gradient of body force term at (Eulerian) position x. Computed via function pointer (if set) or b...
virtual int p_local_eqn(const unsigned &n) const =0
Access function for the local equation number information for the pressure. p_local_eqn[n] = local eq...
const double & re_st() const
Product of Reynolds and Strouhal number (=Womersley number)
virtual void get_body_force_axi_nst(const double &time, const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, Vector< double > &result)
Calculate the body force fct at a given time and Eulerian position.
virtual unsigned u_index_axi_nst(const unsigned &i) const
Return the index at which the i-th unknown velocity component is stored. The default value,...
static Vector< double > Gamma
Vector to decide whether the stress-divergence form is used or not.
A Class for the derivatives of shape functions The class design is essentially the same as Shape,...
TimeStepper *& time_stepper_pt()
Return the pointer to the timestepper.
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 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.
double dnodal_position_dt(const unsigned &n, const unsigned &i) const
Return the i-th component of nodal velocity: dx/dt at local node n.
static double Default_fd_jacobian_step
Double used for the default finite difference step in elemental jacobian calculations.
unsigned ndof() const
Return the number of equations/dofs in the element.
Class that contains data for hanging nodes.
Node *const & master_node_pt(const unsigned &i) const
Return a pointer to the i-th master node.
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.
Nodes are derived from Data, but, in addition, have a definite (Eulerian) position in a space of a gi...
TimeStepper *& position_time_stepper_pt()
Return a pointer to the position timestepper.
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 OomphLibWarning object which should be created as a temporary object to issue a warning....
virtual Node * pressure_node_pt(const unsigned &n_p)
Pointer to n_p-th pressure node (Default: NULL, indicating that pressure is not based on nodal interp...
void fill_in_generic_residual_contribution_axi_nst(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix, unsigned flag)
Add element's contribution to the elemental residual vector and/or Jacobian matrix and mass matrix fl...
virtual void get_dresidual_dnodal_coordinates(RankThreeTensor< double > &dresidual_dnodal_coordinates)
Compute derivatives of elemental residual vector with respect to nodal coordinates....
std::map< Node *, unsigned > shape_controlling_node_lookup()
Return lookup scheme for unique number associated with any of the nodes that actively control the sha...
unsigned nshape_controlling_nodes()
Number of shape-controlling nodes = the number of non-hanging nodes plus the number of master nodes a...
int local_hang_eqn(Node *const &node_pt, const unsigned &i)
Access function that returns the local equation number for the hanging node variables (values stored ...
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...
virtual double weight(const unsigned &i, const unsigned &j) const
Access function for j-th weight for the i-th derivative.
Time *const & time_pt() const
Access function for the pointer to time (const version)
double & time()
Return the current value of the continuous time.
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).