29 #ifndef OOMPH_GENERALISED_NEWTONIAN_TAXISYM_NAVIER_STOKES_ELEMENTS_HEADER
30 #define OOMPH_GENERALISED_NEWTONIAN_TAXISYM_NAVIER_STOKES_ELEMENTS_HEADER
34 #include <oomph-lib-config.h>
42 #include "../generic/Telements.h"
43 #include "../generic/error_estimator.h"
188 std::set<std::pair<Data*, unsigned>>& paired_load_data);
199 std::set<std::pair<Data*, unsigned>>& paired_pressure_data);
208 void output(std::ostream& outfile,
const unsigned& nplot)
221 void output(FILE* file_pt,
const unsigned& n_plot)
259 unsigned num_entries = 6;
260 if (
flux.size() < num_entries)
262 std::ostringstream error_message;
263 error_message <<
"The flux vector has the wrong number of entries, "
264 <<
flux.size() <<
", whereas it should be at least "
265 << num_entries << std::endl;
280 for (
unsigned i = 0;
i < 3;
i++)
282 flux[icount] = strainrate(
i,
i);
287 for (
unsigned i = 0;
i < 3;
i++)
289 for (
unsigned j =
i + 1;
j < 3;
j++)
291 flux[icount] = strainrate(
i,
j);
312 std::list<std::pair<unsigned long, unsigned>>& dof_lookup_list)
const
315 unsigned n_node = this->
nnode();
321 std::pair<unsigned, unsigned> dof_lookup;
324 unsigned pressure_dof_number = 3;
327 for (
unsigned n = 0;
n < n_press;
n++)
335 if (local_eqn_number >= 0)
339 dof_lookup.first = this->
eqn_number(local_eqn_number);
340 dof_lookup.second = pressure_dof_number;
343 dof_lookup_list.push_front(dof_lookup);
348 for (
unsigned n = 0;
n < n_node;
n++)
354 for (
unsigned v = 0;
v < nv;
v++)
360 if (local_eqn_number >= 0)
364 dof_lookup.first = this->
eqn_number(local_eqn_number);
365 dof_lookup.second =
v;
368 dof_lookup_list.push_front(dof_lookup);
442 ipt, psi, dpsidx, djacobian_dX, d_dpsidx_dX);
447 d_dtestdx_dX = d_dpsidx_dX;
691 return static_cast<int>(3);
715 std::set<std::pair<Data*, unsigned>>& paired_load_data);
726 std::set<std::pair<Data*, unsigned>>& paired_pressure_data);
735 void output(std::ostream& outfile,
const unsigned& nplot)
748 void output(FILE* file_pt,
const unsigned& n_plot)
786 unsigned num_entries = 6;
787 if (
flux.size() < num_entries)
789 std::ostringstream error_message;
790 error_message <<
"The flux vector has the wrong number of entries, "
791 <<
flux.size() <<
", whereas it should be at least "
792 << num_entries << std::endl;
807 for (
unsigned i = 0;
i < 3;
i++)
809 flux[icount] = strainrate(
i,
i);
814 for (
unsigned i = 0;
i < 3;
i++)
816 for (
unsigned j =
i + 1;
j < 3;
j++)
818 flux[icount] = strainrate(
i,
j);
838 std::list<std::pair<unsigned long, unsigned>>& dof_lookup_list)
const
841 unsigned n_node = this->
nnode();
844 std::pair<unsigned, unsigned> dof_lookup;
847 for (
unsigned n = 0;
n < n_node;
n++)
853 for (
unsigned v = 0;
v < nv;
v++)
861 if (local_eqn_number >= 0)
865 dof_lookup.first = this->
eqn_number(local_eqn_number);
868 dof_lookup.second =
v;
871 dof_lookup_list.push_front(dof_lookup);
945 ipt, psi, dpsidx, djacobian_dX, d_dpsidx_dX);
950 d_dtestdx_dX = d_dpsidx_dX;
969 ppsi[2] = 1.0 -
s[0] -
s[1];
977 dppsidx(2, 0) = -1.0;
978 dppsidx(2, 1) = -1.0;
1013 psi[2] = 1.0 -
s[0] -
s[1];
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
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 pin(const unsigned &i)
Pin the i-th stored variable.
Definition: nodes.h:385
void set_value(const unsigned &i, const double &value_)
Definition: nodes.h:271
unsigned nvalue() const
Return number of values stored in data object (incl pinned ones).
Definition: nodes.h:483
double value(const unsigned &i) const
Definition: nodes.h:293
Definition: error_estimator.h:79
FaceGeometry()
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:548
FaceGeometry()
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:1052
FaceGeometry()
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:535
FaceGeometry()
Constructor: Call constructor of base.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:1038
Definition: elements.h:4998
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
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
virtual double local_to_eulerian_mapping(const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
Definition: elements.h:1508
virtual void transform_derivatives(const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const
Definition: elements.cc:2833
virtual double dshape_eulerian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsidx) const
Definition: elements.cc:3325
virtual void dshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Definition: elements.h:1981
double dshape_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsidx) const
Definition: elements.cc:3298
unsigned long eqn_number(const unsigned &ieqn_local) const
Definition: elements.h:704
int local_eqn_number(const unsigned long &ieqn_global) const
Definition: elements.h:726
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
unsigned add_internal_data(Data *const &data_pt, const bool &fd=true)
Definition: elements.cc:62
Definition: generalised_newtonian_axisym_navier_stokes_elements.h:119
void output(std::ostream &outfile)
Definition: generalised_newtonian_axisym_navier_stokes_elements.h:789
void strain_rate(const Vector< double > &s, DenseMatrix< double > &strain_rate) const
Definition: generalised_newtonian_axisym_navier_stokes_elements.cc:749
GeneralisedNewtonianAxisymmetricTCrouzeix_Raviart elements are.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:67
void output(FILE *file_pt, const unsigned &n_plot)
Redirect output to NavierStokesEquations output.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:221
int p_local_eqn(const unsigned &n) const
Return the local equation numbers for the pressure values.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:128
void pshape_axi_nst(const Vector< double > &s, Shape &psi) const
Pressure shape functions at local coordinate s.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:458
void unpin_all_internal_pressure_dofs()
Unpin all internal pressure dofs.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.cc:42
unsigned num_Z2_flux_terms()
Number of 'flux' terms for Z2 error estimation.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:248
unsigned nrecovery_order()
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:230
Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:242
void identify_load_data(std::set< std::pair< Data *, unsigned >> &paired_load_data)
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.cc:64
double dshape_and_dtest_eulerian_axi_nst(const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:383
void identify_pressure_data(std::set< std::pair< Data *, unsigned >> &paired_pressure_data)
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.cc:100
void output(std::ostream &outfile, const unsigned &nplot)
Redirect output to NavierStokesEquations output.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:208
double dshape_and_dtest_eulerian_at_knot_axi_nst(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:405
virtual unsigned required_nvalue(const unsigned &n) const
Number of values (pinned or dofs) required at local node n.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:155
void get_Z2_flux(const Vector< double > &s, Vector< double > &flux)
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:256
unsigned ndof_types() const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:300
GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement(const GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement &dummy)=delete
Broken copy constructor.
void output(FILE *file_pt)
Redirect output to NavierStokesEquations output.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:215
unsigned nvertex_node() const
Number of vertex nodes in the element.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:236
void operator=(const GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement &)=delete
Broken assignment operator.
unsigned P_axi_nst_internal_index
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:71
void output(std::ostream &outfile)
Redirect output to NavierStokesEquations output.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:202
double p_axi_nst(const unsigned &i) const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:164
GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement()
Constructor, there are 3 internal values (for the pressure)
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:135
unsigned npres_axi_nst() const
Return number of pressure values.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:170
double dpshape_and_dptest_eulerian_axi_nst(const Vector< double > &s, Shape &ppsi, DShape &dppsidx, Shape &ptest, DShape &dptestdx) const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:483
void get_dof_numbers_for_unknowns(std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:311
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: generalised_newtonian_Taxisym_navier_stokes_elements.h:176
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:567
unsigned nvertex_node() const
Number of vertex nodes in the element.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:762
Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:768
static const unsigned Initial_Nvalue[]
Static array of ints to hold number of variables at node.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:570
void output(std::ostream &outfile)
Redirect output to NavierStokesEquations output.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:729
virtual unsigned required_nvalue(const unsigned &n) const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:647
GeneralisedNewtonianAxisymmetricTTaylorHoodElement(const GeneralisedNewtonianAxisymmetricTTaylorHoodElement &dummy)=delete
Broken copy constructor.
void identify_pressure_data(std::set< std::pair< Data *, unsigned >> &paired_pressure_data)
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.cc:228
void output(FILE *file_pt, const unsigned &n_plot)
Redirect output to NavierStokesEquations output.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:748
int p_nodal_index_axi_nst() const
Set the value at which the pressure is stored in the nodes.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:689
void pshape_axi_nst(const Vector< double > &s, Shape &psi) const
Test whether the pressure dof p_dof hanging or not?
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:1009
void unpin_proper_nodal_pressure_dofs()
Unpin the proper nodal pressure dofs.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.cc:175
double p_axi_nst(const unsigned &n_p) const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:683
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: generalised_newtonian_Taxisym_navier_stokes_elements.h:701
unsigned p_index_axi_nst()
Which nodal value represents the pressure?
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:666
double dshape_and_dtest_eulerian_axi_nst(const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:887
void unpin_all_nodal_pressure_dofs()
Unpin all pressure dofs.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.cc:138
void operator=(const GeneralisedNewtonianAxisymmetricTTaylorHoodElement &)=delete
Broken assignment operator.
void get_dof_numbers_for_unknowns(std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:837
void output(std::ostream &outfile, const unsigned &nplot)
Redirect output to NavierStokesEquations output.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:735
unsigned ndof_types() const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:826
double dshape_and_dtest_eulerian_at_knot_axi_nst(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:909
static const unsigned Pconv[]
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:575
virtual double dpshape_and_dptest_eulerian_axi_nst(const Vector< double > &s, Shape &ppsi, DShape &dppsidx, Shape &ptest, DShape &dptestdx) const
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:961
unsigned num_Z2_flux_terms()
Number of 'flux' terms for Z2 error estimation.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:775
void pin_all_nodal_pressure_dofs()
Pin all nodal pressure dofs.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.cc:158
int p_local_eqn(const unsigned &n) const
Pointer to n_p-th pressure node.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:676
unsigned npres_axi_nst() const
Return number of pressure values.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:695
unsigned nrecovery_order()
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:756
GeneralisedNewtonianAxisymmetricTTaylorHoodElement()
Constructor, no internal data points.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:630
void get_Z2_flux(const Vector< double > &s, Vector< double > &flux)
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:783
void identify_load_data(std::set< std::pair< Data *, unsigned >> &paired_load_data)
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.cc:199
void output(FILE *file_pt)
Redirect output to NavierStokesEquations output.
Definition: generalised_newtonian_Taxisym_navier_stokes_elements.h:742
Definition: oomph_definitions.h:222
Definition: elements.h:3439
A Rank 4 Tensor class.
Definition: matrices.h:1701
Definition: Telements.h:3570
Definition: Telements.h:1208
RealScalar s
Definition: level1_cplx_impl.h:130
void flux(const double &time, const Vector< double > &x, double &flux)
Get flux applied along boundary x=0.
Definition: pretend_melt.cc:59
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
Definition: indexed_view.cpp:20
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
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