88 #ifndef OOMPH_POLAR_NAVIER_STOKES
89 #define OOMPH_POLAR_NAVIER_STOKES
93 #include <oomph-lib-config.h>
97 #include "../generic/Qelements.h"
184 DShape& dtestdx)
const = 0;
194 DShape& dtestdx)
const = 0;
215 for (
unsigned i = 0;
i < 2;
i++)
223 (*Body_force_fct_pt)(time,
x, result);
266 const double&
re()
const
380 virtual double u_pnst(
const unsigned&
n,
const unsigned&
i)
const = 0;
386 const unsigned&
i)
const = 0;
414 for (
unsigned t = 0;
t < n_time;
t++)
425 virtual double p_pnst(
const unsigned& n_p)
const = 0;
428 virtual void fix_pressure(
const unsigned& p_dof,
const double& p_value) = 0;
493 void output(std::ostream& outfile,
const unsigned& nplot);
505 void output(FILE* file_pt,
const unsigned& nplot);
519 void full_output(std::ostream& outfile,
const unsigned& nplot);
526 const unsigned& nplot,
533 const unsigned& nplot,
540 const unsigned& nplot,
650 residuals, jacobian, mass_matrix, 2);
666 unsigned n_node =
nnode();
672 for (
unsigned i = 0;
i < 2;
i++)
677 for (
unsigned l = 0; l < n_node; l++)
688 unsigned n_node =
nnode();
695 double interpolated_u = 0.0;
697 for (
unsigned l = 0; l < n_node; l++)
699 interpolated_u +=
u_pnst(l,
i) * psi[l];
702 return (interpolated_u);
716 double interpolated_p = 0.0;
718 for (
unsigned l = 0; l < n_pres; l++)
720 interpolated_p +=
p_pnst(l) * psi[l];
723 return (interpolated_p);
733 const unsigned&
j)
const
736 unsigned n_node =
nnode();
740 DShape dpsifdx(n_node, 2);
746 double interpolated_dudx = 0.0;
751 for (
unsigned l = 0; l < n_node; l++)
753 interpolated_dudx +=
u_pnst(l,
i) * dpsifdx(l,
j);
756 return (interpolated_dudx);
829 double u_pnst(
const unsigned&
n,
const unsigned&
i)
const
837 double u_pnst(
const unsigned&
t,
const unsigned&
n,
const unsigned&
i)
const
845 double p_pnst(
const unsigned& i_internal)
const
877 void output(std::ostream& outfile,
const unsigned& Nplot)
890 void output(FILE* file_pt,
const unsigned& Nplot)
932 for (
unsigned i = 0;
i < 9;
i++)
935 dtestdx(
i, 0) = dpsidx(
i, 0);
936 dtestdx(
i, 1) = dpsidx(
i, 1);
960 for (
unsigned i = 0;
i < 9;
i++)
963 dtestdx(
i, 0) = dpsidx(
i, 0);
964 dtestdx(
i, 1) = dpsidx(
i, 1);
990 for (
unsigned i = 0;
i < 3;
i++)
test[
i] = psi[
i];
1076 return this->
node_pt(Pconv[n_p]);
1081 double u_pnst(
const unsigned&
n,
const unsigned&
i)
const
1089 double u_pnst(
const unsigned&
t,
const unsigned&
n,
const unsigned&
i)
const
1130 void output(std::ostream& outfile,
const unsigned& Nplot)
1142 void output(FILE* file_pt,
const unsigned& Nplot)
1167 for (
unsigned i = 0;
i < 9;
i++)
1170 dtestdx(
i, 0) = dpsidx(
i, 0);
1171 dtestdx(
i, 1) = dpsidx(
i, 1);
1185 const unsigned& ipt,
1195 for (
unsigned i = 0;
i < 9;
i++)
1198 dtestdx(
i, 0) = dpsidx(
i, 0);
1199 dtestdx(
i, 1) = dpsidx(
i, 1);
1215 double psi1[2], psi2[2];
1222 for (
unsigned i = 0;
i < 2;
i++)
1224 for (
unsigned j = 0;
j < 2;
j++)
1227 psi[2 *
i +
j] = psi2[
i] * psi1[
j];
1244 for (
unsigned i = 0;
i < 4;
i++)
test[
i] = psi[
i];
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
void load(Archive &ar, ParticleHandler &handl)
Definition: Particles.h:21
void pin(const unsigned &i)
Pin the i-th stored variable.
Definition: nodes.h:385
double * value_pt(const unsigned &i) const
Definition: nodes.h:324
TimeStepper *& time_stepper_pt()
Return the pointer to the timestepper.
Definition: nodes.h:238
FaceGeometry()
Definition: polar_navier_stokes_elements.h:1001
FaceGeometry()
Definition: polar_navier_stokes_elements.h:1254
Definition: elements.h:4998
Definition: elements.h:1313
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
double nodal_value(const unsigned &n, const unsigned &i) const
Definition: elements.h:2593
virtual void shape(const Vector< double > &s, Shape &psi) const =0
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Definition: elements.h:1432
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
void(* SteadyExactSolutionFctPt)(const Vector< double > &, Vector< double > &)
Definition: elements.h:1759
void(* UnsteadyExactSolutionFctPt)(const double &, const Vector< double > &, Vector< double > &)
Definition: elements.h:1765
double dshape_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsidx) const
Definition: elements.cc:3298
Data *& internal_data_pt(const unsigned &i)
Return a pointer to i-th internal data object.
Definition: elements.h:622
int internal_local_eqn(const unsigned &i, const unsigned &j) const
Definition: elements.h:267
static DenseMatrix< double > Dummy_matrix
Definition: elements.h:227
unsigned add_internal_data(Data *const &data_pt, const bool &fd=true)
Definition: elements.cc:62
TimeStepper *& time_stepper_pt()
Definition: geom_objects.h:192
Definition: polar_navier_stokes_elements.h:772
double u_pnst(const unsigned &t, const unsigned &n, const unsigned &i) const
Definition: polar_navier_stokes_elements.h:837
void output(FILE *file_pt, const unsigned &Nplot)
Redirect output to NavierStokesEquations output.
Definition: polar_navier_stokes_elements.h:890
void fix_pressure(const unsigned &p_dof, const double &p_value)
Pin p_dof-th pressure dof and set it to value specified by p_value.
Definition: polar_navier_stokes_elements.h:858
int p_local_eqn(const unsigned &n)
Return the local equation numbers for the pressure values.
Definition: polar_navier_stokes_elements.h:809
PolarCrouzeixRaviartElement()
Constructor, there are DIM+1 internal values (for the pressure)
Definition: polar_navier_stokes_elements.h:816
void pshape_pnst(const Vector< double > &s, Shape &psi) const
Pressure shape functions at local coordinate s.
Definition: polar_navier_stokes_elements.h:974
unsigned npres_pnst() const
Return number of pressure values.
Definition: polar_navier_stokes_elements.h:852
virtual unsigned required_nvalue(const unsigned &n) const
Number of values (pinned or dofs) required at local node n.
Definition: polar_navier_stokes_elements.cc:1566
void output(FILE *file_pt)
Redirect output to NavierStokesEquations output.
Definition: polar_navier_stokes_elements.h:884
void get_load_data(std::set< std::pair< Data *, unsigned >> &paired_load_data)
Definition: polar_navier_stokes_elements.cc:1577
unsigned P_pnst_internal_index
Definition: polar_navier_stokes_elements.h:780
void full_output(std::ostream &outfile, const unsigned &nplot)
Definition: polar_navier_stokes_elements.h:907
double u_pnst(const unsigned &n, const unsigned &i) const
Definition: polar_navier_stokes_elements.h:829
double dshape_and_dtest_eulerian_at_knot_pnst(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
Definition: polar_navier_stokes_elements.h:950
double p_pnst(const unsigned &i_internal) const
Definition: polar_navier_stokes_elements.h:845
void output(std::ostream &outfile, const unsigned &Nplot)
Redirect output to NavierStokesEquations output.
Definition: polar_navier_stokes_elements.h:877
double dshape_and_dtest_eulerian_pnst(const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
Definition: polar_navier_stokes_elements.h:921
void output(std::ostream &outfile)
Redirect output to NavierStokesEquations output.
Definition: polar_navier_stokes_elements.h:871
static const unsigned Initial_Nvalue[]
Static array of ints to hold required number of variables at nodes.
Definition: polar_navier_stokes_elements.h:775
void full_output(std::ostream &outfile)
Definition: polar_navier_stokes_elements.h:899
Definition: polar_navier_stokes_elements.h:108
PolarNavierStokesEquations()
Constructor: NULL the body force and source function.
Definition: polar_navier_stokes_elements.h:245
double dissipation() const
Return integral of dissipation over element.
Definition: polar_navier_stokes_elements.cc:721
double *& density_ratio_pt()
Pointer to Density ratio.
Definition: polar_navier_stokes_elements.h:322
double interpolated_u_pnst(const Vector< double > &s, const unsigned &i) const
Return FE interpolated velocity u[i] at local coordinate s.
Definition: polar_navier_stokes_elements.h:685
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Compute the element's residual Vector.
Definition: polar_navier_stokes_elements.h:564
double *& re_invfr_pt()
Pointer to global inverse Froude number.
Definition: polar_navier_stokes_elements.h:334
virtual void pshape_pnst(const Vector< double > &s, Shape &psi) const =0
Compute the pressure shape functions at local coordinate s.
NavierStokesBodyForceFctPt & body_force_fct_pt()
Access function for the body-force pointer.
Definition: polar_navier_stokes_elements.h:352
double kin_energy() const
Get integral of kinetic energy over element.
Definition: polar_navier_stokes_elements.cc:1006
static double Default_Physical_Constant_Value
Navier–Stokes equations static data.
Definition: polar_navier_stokes_elements.h:128
double * ReSt_pt
Pointer to global Reynolds number x Strouhal number (=Womersley)
Definition: polar_navier_stokes_elements.h:157
double * Viscosity_Ratio_pt
Definition: polar_navier_stokes_elements.h:142
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: polar_navier_stokes_elements.h:575
const Vector< double > & g() const
Vector of gravitational components.
Definition: polar_navier_stokes_elements.h:340
virtual void pshape_pnst(const Vector< double > &s, Shape &psi, Shape &test) const =0
Vector< double > * G_pt
Pointer to global gravity Vector.
Definition: polar_navier_stokes_elements.h:164
static Vector< double > Gamma
Vector to decide whether the stress-divergence form is used or not.
Definition: polar_navier_stokes_elements.h:261
const double & viscosity_ratio() const
Definition: polar_navier_stokes_elements.h:303
virtual int p_local_eqn(const unsigned &n)=0
const double & re_invfr() const
Global inverse Froude number.
Definition: polar_navier_stokes_elements.h:328
void get_load(const Vector< double > &s, const Vector< double > &xi, const Vector< double > &x, const Vector< double > &N, Vector< double > &load)
Definition: polar_navier_stokes_elements.h:472
NavierStokesBodyForceFctPt Body_force_fct_pt
Pointer to body force function.
Definition: polar_navier_stokes_elements.h:167
static double Default_Physical_Ratio_Value
Navier–Stokes equations static data.
Definition: polar_navier_stokes_elements.h:132
const double & alpha() const
Alpha.
Definition: polar_navier_stokes_elements.h:272
virtual double p_pnst(const unsigned &n_p) const =0
void get_traction(const Vector< double > &s, const Vector< double > &N, Vector< double > &traction)
Definition: polar_navier_stokes_elements.cc:772
virtual double dshape_and_dtest_eulerian_pnst(const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
void strain_rate(const Vector< double > &s, DenseMatrix< double > &strain_rate) const
Strain-rate tensor: Now returns polar strain.
Definition: polar_navier_stokes_elements.cc:822
double get_source_fct(double time, const Vector< double > &x)
Definition: polar_navier_stokes_elements.h:229
double *& alpha_pt()
Pointer to Alpha.
Definition: polar_navier_stokes_elements.h:290
void output(std::ostream &outfile)
Definition: polar_navier_stokes_elements.h:485
void output_fct(std::ostream &outfile, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Definition: polar_navier_stokes_elements.cc:216
virtual int p_nodal_index_pnst()
Definition: polar_navier_stokes_elements.h:432
void get_body_force(double time, const Vector< double > &x, Vector< double > &result)
Calculate the body force at a given time and Eulerian position.
Definition: polar_navier_stokes_elements.h:207
virtual double dshape_and_dtest_eulerian_at_knot_pnst(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
virtual void fix_pressure(const unsigned &p_dof, const double &p_value)=0
Pin p_dof-th pressure dof and set it to value specified by p_value.
NavierStokesSourceFctPt & source_fct_pt()
Access function for the source-function pointer.
Definition: polar_navier_stokes_elements.h:364
double * Re_pt
Pointer to global Reynolds number.
Definition: polar_navier_stokes_elements.h:154
static Vector< double > Default_Gravity_vector
Static default value for the gravity vector.
Definition: polar_navier_stokes_elements.h:135
double *& re_st_pt()
Pointer to product of Reynolds and Strouhal number (=Womersley number)
Definition: polar_navier_stokes_elements.h:296
static int Pressure_not_stored_at_node
Definition: polar_navier_stokes_elements.h:124
double(* NavierStokesSourceFctPt)(const double &time, const Vector< double > &x)
Definition: polar_navier_stokes_elements.h:118
void output_veloc(std::ostream &outfile, const unsigned &nplot, const unsigned &t)
Definition: polar_navier_stokes_elements.cc:328
void strain_rate_by_r(const Vector< double > &s, DenseMatrix< double > &strain_rate) const
Function to return polar strain multiplied by r.
Definition: polar_navier_stokes_elements.cc:909
double *& re_pt()
Pointer to Reynolds number.
Definition: polar_navier_stokes_elements.h:284
virtual unsigned u_index_pnst(const unsigned &i) const
Definition: polar_navier_stokes_elements.h:394
double * Density_Ratio_pt
Definition: polar_navier_stokes_elements.h:146
void output(FILE *file_pt)
Definition: polar_navier_stokes_elements.h:497
NavierStokesSourceFctPt Source_fct_pt
Pointer to volumetric source function.
Definition: polar_navier_stokes_elements.h:170
double * ReInvFr_pt
Definition: polar_navier_stokes_elements.h:161
void full_output(std::ostream &outfile)
Definition: polar_navier_stokes_elements.h:510
const double & re() const
Reynolds number.
Definition: polar_navier_stokes_elements.h:266
double *& viscosity_ratio_pt()
Pointer to Viscosity Ratio.
Definition: polar_navier_stokes_elements.h:309
void interpolated_u_pnst(const Vector< double > &s, Vector< double > &veloc) const
Compute vector of FE interpolated velocity u at local coordinate s.
Definition: polar_navier_stokes_elements.h:662
const double & re_st() const
Product of Reynolds and Strouhal number (=Womersley number)
Definition: polar_navier_stokes_elements.h:278
double du_dt_pnst(const unsigned &n, const unsigned &i) const
Definition: polar_navier_stokes_elements.h:401
virtual double u_pnst(const unsigned &t, const unsigned &n, const unsigned &i) const =0
virtual void fill_in_generic_residual_contribution(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix, unsigned flag)
Definition: polar_navier_stokes_elements.cc:1100
double pressure_integral() const
Integral of pressure over element.
Definition: polar_navier_stokes_elements.cc:1048
void(* NavierStokesBodyForceFctPt)(const double &time, const Vector< double > &x, Vector< double > &body_force)
Definition: polar_navier_stokes_elements.h:112
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
Definition: polar_navier_stokes_elements.h:643
virtual double u_pnst(const unsigned &n, const unsigned &i) const =0
const double & density_ratio() const
Definition: polar_navier_stokes_elements.h:316
virtual Node * pressure_node_pt(const unsigned &n_p)
Definition: polar_navier_stokes_elements.h:439
NavierStokesSourceFctPt source_fct_pt() const
Access function for the source-function pointer. Const version.
Definition: polar_navier_stokes_elements.h:370
void compute_error(std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
Definition: polar_navier_stokes_elements.cc:61
double * Alpha_pt
Pointer to the angle alpha.
Definition: polar_navier_stokes_elements.h:151
virtual unsigned npres_pnst() const =0
Function to return number of pressure degrees of freedom.
NavierStokesBodyForceFctPt body_force_fct_pt() const
Access function for the body-force pointer. Const version.
Definition: polar_navier_stokes_elements.h:358
double interpolated_dudx_pnst(const Vector< double > &s, const unsigned &i, const unsigned &j) const
Definition: polar_navier_stokes_elements.h:731
double interpolated_p_pnst(const Vector< double > &s) const
Return FE interpolated pressure at local coordinate s.
Definition: polar_navier_stokes_elements.h:706
Vector< double > *& g_pt()
Pointer to Vector of gravitational components.
Definition: polar_navier_stokes_elements.h:346
Definition: polar_navier_stokes_elements.h:1014
void pshape_pnst(const Vector< double > &s, Shape &psi) const
Pressure shape functions at local coordinate s.
Definition: polar_navier_stokes_elements.h:1210
double p_pnst(const unsigned &n_p) const
Definition: polar_navier_stokes_elements.h:1096
void get_load_data(std::set< std::pair< Data *, unsigned >> &paired_load_data)
Definition: polar_navier_stokes_elements.cc:1622
virtual unsigned required_nvalue(const unsigned &n) const
Definition: polar_navier_stokes_elements.h:1062
static const unsigned Pconv[]
Definition: polar_navier_stokes_elements.h:1022
void output(FILE *file_pt, const unsigned &Nplot)
Redirect output to NavierStokesEquations output.
Definition: polar_navier_stokes_elements.h:1142
static const unsigned Initial_Nvalue[]
Static array of ints to hold number of variables at node.
Definition: polar_navier_stokes_elements.h:1017
unsigned npres_pnst() const
Return number of pressure values.
Definition: polar_navier_stokes_elements.h:1103
double dshape_and_dtest_eulerian_pnst(const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
Definition: polar_navier_stokes_elements.h:1156
double u_pnst(const unsigned &n, const unsigned &i) const
Definition: polar_navier_stokes_elements.h:1081
Node * pressure_node_pt(const unsigned &n_p)
Pointer to n_p-th pressure node.
Definition: polar_navier_stokes_elements.h:1074
double dshape_and_dtest_eulerian_at_knot_pnst(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
Definition: polar_navier_stokes_elements.h:1184
void output(FILE *file_pt)
Redirect output to NavierStokesEquations output.
Definition: polar_navier_stokes_elements.h:1136
int p_local_eqn(const unsigned &n)
Return the local equation numbers for the pressure values.
Definition: polar_navier_stokes_elements.h:1051
void output(std::ostream &outfile, const unsigned &Nplot)
Redirect output to NavierStokesEquations output.
Definition: polar_navier_stokes_elements.h:1130
double u_pnst(const unsigned &t, const unsigned &n, const unsigned &i) const
Definition: polar_navier_stokes_elements.h:1089
PolarTaylorHoodElement()
Constructor, no internal data points.
Definition: polar_navier_stokes_elements.h:1058
void output(std::ostream &outfile)
Redirect output to NavierStokesEquations output.
Definition: polar_navier_stokes_elements.h:1124
void fix_pressure(const unsigned &p_dof, const double &p_value)
Pin p_dof-th pressure dof and set it to value specified by p_value.
Definition: polar_navier_stokes_elements.h:1109
virtual int p_nodal_index_pnst()
Which nodal value represents the pressure?
Definition: polar_navier_stokes_elements.h:1068
Definition: Qelements.h:459
Definition: timesteppers.h:231
unsigned ntstorage() const
Definition: timesteppers.h:601
virtual double weight(const unsigned &i, const unsigned &j) const
Access function for j-th weight for the i-th derivative.
Definition: timesteppers.h:594
std::string type() const
Definition: timesteppers.h:490
@ N
Definition: constructor.cpp:22
RealScalar s
Definition: level1_cplx_impl.h:130
void body_force(const double &time, const Vector< double > &x, Vector< double > &result)
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:96
int error
Definition: calibrate.py:297
void shape< 2 >(const double &s, double *Psi)
1D shape functions specialised to linear order (2 Nodes)
Definition: shape.h:608
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
list x
Definition: plotDoE.py:28
t
Definition: plotPSD.py:36
Definition: indexed_view.cpp:20
void set(Container &c, Position position, const Value &value)
Definition: stdlist_overload.cpp:36
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2