27 #ifndef OOMPH_DISCONTINUOUS_GALERKIN_SPACETIME_NAVIER_STOKES_ELEMENTS_HEADER
28 #define OOMPH_DISCONTINUOUS_GALERKIN_SPACETIME_NAVIER_STOKES_ELEMENTS_HEADER
32 #include <oomph-lib-config.h>
45 class FpPressureAdvDiffRobinBCSpaceTimeElementBase
46 :
public virtual FaceElement
61 const unsigned& compute_jacobian_flag) = 0;
76 template<
class ELEMENT>
89 const bool& called_from_refineable_constructor =
false)
98 if (!called_from_refineable_constructor)
101 if (element_pt->
dim() == 3)
114 std::ostringstream error_message_stream;
118 <<
"This flux element will not work correctly "
119 <<
"if nodes are hanging!" << std::endl;
143 const unsigned& flag);
150 std::ostringstream error_message;
153 error_message <<
"fill_in_contribution_to_residuals() must not be "
154 <<
"called directly.\nsince it uses the local equation "
155 <<
"numbering of the bulk element\nwhich calls the "
156 <<
"relevant helper function directly." << std::endl;
169 std::ostringstream error_message;
172 error_message <<
"fill_in_contribution_to_jacobian() must not be "
173 <<
"called directly.\nsince it uses the local equation "
174 <<
"numbering of the bulk element\nwhich calls the "
175 <<
"relevant helper function directly." << std::endl;
192 void output(std::ostream& outfile,
const unsigned& nplot)
210 template<
class ELEMENT>
213 Vector<double>& residuals,
215 const unsigned& flag)
218 throw OomphLibError(
"You shouldn't be using this just yet!",
224 unsigned my_dim = this->dim();
227 Vector<double>
s(my_dim, 0.0);
230 Vector<double> s_bulk(my_dim + 1, 0.0);
234 Vector<double> unit_normal(my_dim + 1, 0.0);
238 Vector<double>
velocity(my_dim, 0.0);
241 unsigned n_intpt = this->integral_pt()->nweight();
247 int local_unknown = 0;
250 ELEMENT* bulk_el_pt =
dynamic_cast<ELEMENT*
>(this->bulk_element_pt());
253 unsigned n_pres = bulk_el_pt->npres_nst();
256 double re = bulk_el_pt->re();
265 for (
unsigned ipt = 0; ipt < n_intpt; ipt++)
268 double w = this->integral_pt()->weight(ipt);
271 for (
unsigned i = 0;
i < my_dim;
i++)
274 s[
i] = this->integral_pt()->knot(ipt,
i);
278 s_bulk = this->local_coordinate_in_bulk(
s);
284 this->outer_unit_normal(ipt, unit_normal);
287 bulk_el_pt->interpolated_u_nst(s_bulk,
velocity);
293 for (
unsigned i = 0;
i < my_dim;
i++)
307 double interpolated_press = bulk_el_pt->interpolated_p_nst(s_bulk);
310 bulk_el_pt->pshape_nst(s_bulk, psip, testp);
313 double J = this->J_eulerian(
s);
320 for (
unsigned l = 0; l < n_pres; l++)
323 local_eqn = bulk_el_pt->p_local_eqn(l);
329 residuals[local_eqn] -= re *
flux * interpolated_press * testp[l] *
W;
335 for (
unsigned l2 = 0; l2 < n_pres; l2++)
338 local_unknown = bulk_el_pt->p_local_eqn(l2);
341 if (local_unknown >= 0)
344 jacobian(local_eqn, local_unknown) -=
345 re *
flux * psip[l2] * testp[l] *
W;
362 class TemplateFreeSpaceTimeNavierStokesEquationsBase
363 :
public virtual NavierStokesElementWithDiagonalMassMatrices,
364 public virtual FiniteElement
406 std::map<
Data*, std::vector<int>>& eqn_number_backup) = 0;
413 const unsigned& face_index) = 0;
429 const unsigned& which_one = 0) = 0;
462 template<
unsigned DIM>
562 DShape& dtestdx)
const = 0;
573 DShape& dtestdx)
const = 0;
595 DShape& dppsidx)
const = 0;
603 DShape& dptestdx)
const = 0;
613 DShape& dptestdx)
const = 0;
636 (*Body_force_fct_pt)(time,
x, result);
669 for (
unsigned i = 0;
i <
DIM;
i++)
678 for (
unsigned j = 0;
j <
DIM;
j++)
681 d_body_force_dx(
j,
i) = (body_force_pls[
j] -
body_force[
j]) / eps_fd;
727 double source_pls = 0.0;
733 for (
unsigned i = 0;
i <
DIM;
i++)
742 for (
unsigned j = 0;
j <
DIM;
j++)
745 gradient[
i] = (source_pls -
source) / eps_fd;
761 const unsigned& flag);
770 const unsigned& flag);
778 double*
const& parameter_pt,
782 const unsigned& flag);
841 if (strouhal_data_pt == 0)
844 std::ostringstream error_message_stream;
848 <<
"User supplied Strouhal number as external data\n"
849 <<
"but the pointer provided is a null pointer!" << std::endl;
870 const double&
re()
const
894 const double&
st()
const
900 unsigned data_index = 0;
903 unsigned strouhal_index = 0;
924 unsigned data_index = 0;
928 unsigned strouhal_index = 0;
1072 double u_nst(
const unsigned&
n,
const unsigned&
i)
const
1079 double u_nst(
const unsigned&
t,
const unsigned&
n,
const unsigned&
i)
const
1086 throw OomphLibError(
"Space-time elements cannot have history values!",
1108 std::ostringstream error_message_stream;
1111 error_message_stream <<
"Input index " <<
i <<
" does not correspond "
1112 <<
"to a velocity component when DIM=" <<
DIM
1113 <<
"!" << std::endl;
1165 const unsigned&
i)
const
1168 unsigned n_node =
nnode();
1181 double interpolated_dudt = 0.0;
1187 for (
unsigned l = 0; l < n_node; l++)
1190 interpolated_dudt +=
nodal_value(l, u_nodal_index) * dpsidx(l,
DIM);
1194 return interpolated_dudt;
1218 virtual double p_nst(
const unsigned& n_p)
const = 0;
1221 virtual double p_nst(
const unsigned&
t,
const unsigned& n_p)
const = 0;
1224 virtual void fix_pressure(
const unsigned& p_dof,
const double& p_value) = 0;
1303 const unsigned& which_one = 0);
1317 const unsigned& nplot)
const
1326 for (
unsigned iplot = 0; iplot < num_plot_points; iplot++)
1348 std::stringstream error_stream;
1351 error_stream <<
"These Navier Stokes elements only store " <<
DIM + 1
1353 <<
"but i is currently " <<
i << std::endl;
1368 std::ofstream& file_out,
1370 const unsigned& nplot,
1378 std::stringstream error_stream;
1381 error_stream <<
"These Navier Stokes elements only store " <<
DIM + 1
1382 <<
" fields, but i is currently " <<
i << std::endl;
1394 double interpolated_t = 0.0;
1403 for (
unsigned iplot = 0; iplot < num_plot_points; iplot++)
1409 for (
unsigned i = 0;
i <
DIM;
i++)
1425 (*exact_soln_pt)(interpolated_t, spatial_coordinates,
exact_soln);
1454 std::stringstream error_stream;
1457 error_stream <<
"These Navier Stokes elements only store " <<
DIM + 1
1458 <<
" fields,\nbut i is currently " <<
i << std::endl;
1475 unsigned n_plot = 5;
1484 void output(std::ostream& outfile,
const unsigned& n_plot);
1492 unsigned n_plot = 5;
1501 void output(FILE* file_pt,
const unsigned& n_plot);
1510 unsigned n_plot = 5;
1527 const unsigned& nplot,
1540 const unsigned& nplot,
1548 const unsigned& nplot,
1610 unsigned compute_jacobian_flag = 0;
1617 compute_jacobian_flag);
1627 unsigned compute_jacobian_flag = 1;
1634 compute_jacobian_flag);
1646 unsigned compute_matrices_flag = 2;
1650 residuals, jacobian, mass_matrix, compute_matrices_flag);
1660 unsigned compute_jacobian_flag = 0;
1668 compute_jacobian_flag);
1675 double*
const& parameter_pt,
1680 unsigned compute_jacobian_flag = 1;
1688 compute_jacobian_flag);
1695 double*
const& parameter_pt,
1701 unsigned compute_matrices_flag = 2;
1707 dmass_matrix_dparam,
1708 compute_matrices_flag);
1718 unsigned compute_jacobian_flag = 0;
1732 unsigned compute_jacobian_flag = 1;
1736 residuals, jacobian, compute_jacobian_flag);
1742 std::map<
Data*, std::vector<int>>& eqn_number_backup)
1747 for (
unsigned j = 0;
j < nint;
j++)
1750 if (eqn_number_backup[data_pt].
size() == 0)
1752 unsigned nvalue = data_pt->
nvalue();
1753 eqn_number_backup[data_pt].resize(nvalue);
1754 for (
unsigned i = 0;
i < nvalue;
i++)
1757 eqn_number_backup[data_pt][
i] = data_pt->
eqn_number(
i);
1766 unsigned nnod = this->
nnode();
1767 for (
unsigned j = 0;
j < nnod;
j++)
1770 if (eqn_number_backup[nod_pt].
size() == 0)
1772 unsigned nvalue = nod_pt->
nvalue();
1773 eqn_number_backup[nod_pt].resize(nvalue);
1774 for (
unsigned i = 0;
i < nvalue;
i++)
1801 if (solid_nod_pt != 0)
1804 if (eqn_number_backup[solid_posn_data_pt].
size() == 0)
1806 unsigned nvalue = solid_posn_data_pt->
nvalue();
1807 eqn_number_backup[solid_posn_data_pt].resize(nvalue);
1808 for (
unsigned i = 0;
i < nvalue;
i++)
1811 eqn_number_backup[solid_posn_data_pt][
i] =
1815 solid_posn_data_pt->
pin(
i);
1828 const unsigned& face_index) = 0;
1835 std::ostream& outfile)
1838 for (
unsigned e = 0;
e < nel;
e++)
1842 outfile <<
"ZONE" << std::endl;
1847 for (
unsigned ipt = 0; ipt <
n; ipt++)
1849 for (
unsigned i = 0;
i <
DIM;
i++)
1855 for (
unsigned i = 0;
i <
DIM + 1;
i++)
1857 outfile <<
x[
i] <<
" ";
1859 for (
unsigned i = 0;
i <
DIM;
i++)
1861 outfile << unit_normal[
i] <<
" ";
1863 outfile << std::endl;
1875 for (
unsigned e = 0;
e < nel;
e++)
1896 unsigned n_node =
nnode();
1905 for (
unsigned i = 0;
i <
DIM;
i++)
1914 for (
unsigned l = 0; l < n_node; l++)
1927 unsigned n_node =
nnode();
1939 double interpolated_u = 0.0;
1942 for (
unsigned l = 0; l < n_node; l++)
1945 interpolated_u +=
nodal_value(l, u_nodal_index) * psi[l];
1949 return interpolated_u;
1957 const unsigned&
i)
const
1960 std::ostringstream error_message_stream;
1963 error_message_stream <<
"This interface doesn't make sense in "
1964 <<
"space-time elements!" << std::endl;
1984 unsigned n_node =
nnode();
1996 unsigned n_u_dof = 0;
1999 for (
unsigned l = 0; l < n_node; l++)
2005 if (global_eqn >= 0)
2013 du_ddata.resize(n_u_dof, 0.0);
2014 global_eqn_number.resize(n_u_dof, 0);
2019 for (
unsigned l = 0; l < n_node; l++)
2023 if (global_eqn >= 0)
2026 global_eqn_number[count] = global_eqn;
2028 du_ddata[count] = psi[l];
2047 double interpolated_p = 0.0;
2049 for (
unsigned l = 0; l < n_pres; l++)
2051 interpolated_p +=
p_nst(l) * psi[l];
2054 return (interpolated_p);
2069 double interpolated_p = 0.0;
2071 for (
unsigned l = 0; l < n_pres; l++)
2073 interpolated_p +=
p_nst(
t, l) * psi[l];
2076 return (interpolated_p);
2088 for (
unsigned i = 0;
i <
DIM + 1;
i++)
2095 for (
unsigned i = 0;
i <
DIM;
i++)
2116 template<
unsigned DIM>
2117 class QTaylorHoodSpaceTimeElement
2118 :
public virtual QElement<DIM + 1, 3>,
2119 public virtual SpaceTimeNavierStokesEquations<DIM>
2128 static const unsigned Pconv[];
2155 const unsigned& ipt,
2209 return Initial_Nvalue[
n];
2231 return static_cast<int>(
DIM);
2254 double p_nst(
const unsigned&
t,
const unsigned& n_p)
const
2266 return static_cast<unsigned>(
pow(2.0,
static_cast<int>(
DIM + 1)));
2302 std::set<std::pair<Data*, unsigned>>& paired_load_data);
2314 std::set<std::pair<Data*, unsigned>>& paired_pressure_data);
2326 void output(std::ostream& outfile,
const unsigned& nplot)
2342 void output(FILE* file_pt,
const unsigned& nplot)
2381 template<
unsigned DIM>
2383 const Vector<double>&
s,
2387 DShape& dtestdx)
const
2393 const unsigned el_dim = this->dim();
2397 this->dshape_local(
s, psi, dpsidx);
2404 this->local_to_eulerian_mapping(dpsidx, inverse_jacobian);
2407 this->transform_derivatives(inverse_jacobian, dpsidx);
2416 std::ostringstream error_message_stream;
2419 error_message_stream <<
"Need 3D space-time elements for this to work!"
2423 throw OomphLibError(error_message_stream.str(),
2430 double test_values[3][3];
2431 double dtest_values[3][3];
2449 for (
unsigned k = 0;
k < 3;
k++)
2452 for (
unsigned j = 0;
j < 3;
j++)
2455 for (
unsigned i = 0;
i < 3;
i++)
2459 dtest_values[0][
i] * test_values[1][
j] * test_values[2][
k];
2463 test_values[0][
i] * dtest_values[1][
j] * test_values[2][
k];
2467 test_values[0][
i] * test_values[1][
j] * dtest_values[2][
k];
2471 test_values[0][
i] * test_values[1][
j] * test_values[2][
k];
2481 this->transform_derivatives(inverse_jacobian, dtestdx);
2492 template<
unsigned DIM>
2493 inline double QTaylorHoodSpaceTimeElement<
2494 DIM>::dshape_and_dtest_eulerian_at_knot_nst(
const unsigned& ipt,
2498 DShape& dtestdx)
const
2504 Vector<double>
s(
el_dim, 0.0);
2510 s[
i] = this->integral_pt()->knot(ipt,
i);
2514 return dshape_and_dtest_eulerian_nst(
s, psi, dpsidx,
test, dtestdx);
2569 for (
unsigned i = 0;
i < 2;
i++)
2572 for (
unsigned j = 0;
j < 2;
j++)
2575 for (
unsigned k = 0;
k < 2;
k++)
2578 ppsi[4 *
i + 2 *
j +
k] = psi3[
i] * psi2[
j] * psi1[
k];
2582 dppsidx(4 *
i + 2 *
j +
k, 0) = psi3[
i] * psi2[
j] * dpsi1[
k];
2586 dppsidx(4 *
i + 2 *
j +
k, 1) = psi3[
i] * dpsi2[
j] * psi1[
k];
2590 dppsidx(4 *
i + 2 *
j +
k, 2) = dpsi3[
i] * psi2[
j] * psi1[
k];
2602 dshape_local(
s, psi, dpsi);
2608 const double det = local_to_eulerian_mapping(dpsi, inverse_jacobian);
2612 transform_derivatives(inverse_jacobian, dppsidx);
2672 for (
unsigned i = 0;
i < 2;
i++)
2675 for (
unsigned j = 0;
j < 2;
j++)
2678 for (
unsigned k = 0;
k < 2;
k++)
2685 dptestdx(4 *
i + 2 *
j +
k, 0) = test3[
i] *
test2[
j] * dtest1[
k];
2689 dptestdx(4 *
i + 2 *
j +
k, 1) = test3[
i] * dtest2[
j] *
test1[
k];
2705 dshape_local(
s, psi, dpsi);
2711 const double det = local_to_eulerian_mapping(dpsi, inverse_jacobian);
2715 transform_derivatives(inverse_jacobian, dptestdx);
2736 dptest_eulerian(
s, ptest, dptestdx);
2739 return this->dpshape_eulerian(
s, ppsi, dppsidx);
2755 const unsigned& ipt,
2765 const double J = this->dshape_eulerian_at_knot(
2766 ipt, psi, dpsidx, djacobian_dX, d_dpsidx_dX);
2769 throw OomphLibError(
"Hasn't been implemented properly yet!",
2774 for (
unsigned i = 0;
i < 27;
i++)
2780 for (
unsigned k = 0;
k < 3;
k++)
2783 dtestdx(
i,
k) = dpsidx(
i,
k);
2786 for (
unsigned p = 0;
p < 3;
p++)
2789 for (
unsigned q = 0;
q < 27;
q++)
2793 d_dtestdx_dX(
p,
q,
i,
k) = d_dpsidx_dX(
p,
q,
i,
k);
2835 for (
unsigned i = 0;
i < 2;
i++)
2838 for (
unsigned j = 0;
j < 2;
j++)
2841 for (
unsigned k = 0;
k < 2;
k++)
2844 psi[4 *
i + 2 *
j +
k] = psi3[
i] * psi2[
j] * psi1[
k];
2882 for (
unsigned i = 0;
i < 2;
i++)
2885 for (
unsigned j = 0;
j < 2;
j++)
2888 for (
unsigned k = 0;
k < 2;
k++)
2901 template<
unsigned DIM>
2917 class FaceGeometry<QTaylorHoodSpaceTimeElement<2>>
2929 class FaceGeometry<FaceGeometry<QTaylorHoodSpaceTimeElement<2>>>
2944 template<
class TAYLOR_HOOD_ELEMENT>
2945 class ProjectableTaylorHoodSpaceTimeElement
2946 :
public virtual ProjectableElement<TAYLOR_HOOD_ELEMENT>
2966 if (fld < this->dim() - 1)
2969 unsigned nnod = this->nnode();
2972 for (
unsigned j = 0;
j < nnod;
j++)
2975 data_values.push_back(std::make_pair(this->node_pt(
j), fld));
2983 unsigned Pconv_size = this->dim();
2986 for (
unsigned j = 0;
j < Pconv_size;
j++)
2989 unsigned vertex_index = this->Pconv[
j];
2992 data_values.push_back(
2993 std::make_pair(this->node_pt(vertex_index), fld));
3017 if (fld == this->dim())
3020 return this->node_pt(0)->ntstorage();
3026 return this->node_pt(0)->ntstorage();
3036 return this->node_pt(0)->position_time_stepper_pt()->ntstorage();
3047 unsigned n_dim = this->dim();
3050 unsigned n_node = this->nnode();
3056 this->pshape_nst(
s, psi);
3062 Shape testf(n_node);
3065 DShape dpsifdx(n_node, n_dim);
3068 DShape dtestfdx(n_node, n_dim);
3071 double J = this->dshape_and_dtest_eulerian_nst(
3072 s, psif, dpsifdx, testf, dtestfdx);
3081 Shape testf(n_node);
3084 DShape dpsifdx(n_node, n_dim);
3087 DShape dtestfdx(n_node, n_dim);
3091 this->dshape_and_dtest_eulerian_nst(
s, psi, dpsifdx, testf, dtestfdx);
3102 const unsigned& fld,
3105 unsigned n_dim = this->dim();
3106 unsigned n_node = this->nnode();
3111 return this->interpolated_p_nst(
t,
s);
3117 unsigned u_nodal_index = this->u_index_nst(fld);
3123 this->
shape(s, psi);
3126 double interpolated_u = 0.0;
3129 for (
unsigned l = 0; l < n_node; l++)
3131 interpolated_u += this->nodal_value(
t, l, u_nodal_index) * psi[l];
3133 return interpolated_u;
3141 if (fld == this->dim())
3143 return this->npres_nst();
3147 return this->nnode();
3155 if (fld == this->dim())
3157 return this->p_local_eqn(
j);
3161 const unsigned u_nodal_index = this->u_index_nst(fld);
3162 return this->nodal_local_eqn(
j, u_nodal_index);
3172 template<
class ELEMENT>
3173 class FaceGeometry<ProjectableTaylorHoodSpaceTimeElement<ELEMENT>>
3174 :
public virtual FaceGeometry<ELEMENT>
3184 template<
class ELEMENT>
3186 FaceGeometry<ProjectableTaylorHoodSpaceTimeElement<ELEMENT>>>
3187 :
public virtual FaceGeometry<FaceGeometry<ELEMENT>>
Matrix< Scalar, Dynamic, Dynamic > DenseMatrix
Definition: BenchSparseUtil.h:23
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Array< double, 1, 3 > e(1./3., 0.5, 2.)
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
int data[]
Definition: Map_placement_new.cpp:1
RowVector3d w
Definition: Matrix_resize_int.cpp:3
void load(Archive &ar, ParticleHandler &handl)
Definition: Particles.h:21
void test2()
Definition: QuaternionUnitTest.cpp:65
void test1()
Definition: QuaternionUnitTest.cpp:9
float * p
Definition: Tutorial_Map_using.cpp:9
long & eqn_number(const unsigned &i)
Return the equation number of the i-th stored variable.
Definition: nodes.h:367
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
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
Definition: elements.h:4338
int & face_index()
Definition: elements.h:4626
void outer_unit_normal(const Vector< double > &s, Vector< double > &unit_normal) const
Compute outer unit normal at the specified local coordinate.
Definition: elements.cc:6006
double interpolated_x(const Vector< double > &s, const unsigned &i) const
Definition: elements.h:4528
FaceGeometry()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:3190
FaceGeometry()
Constructor; empty.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2934
FaceGeometry()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:3177
FaceGeometry()
Constructor; empty.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2922
Definition: elements.h:4998
Definition: elements.h:1313
virtual unsigned nplot_points_paraview(const unsigned &nplot) const
Definition: elements.h:2862
virtual void local_coordinate_of_node(const unsigned &j, Vector< double > &s) const
Definition: elements.h:1842
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 output(std::ostream &outfile)
Definition: elements.h:3050
double size() const
Definition: elements.cc:4290
virtual void build_face_element(const int &face_index, FaceElement *face_element_pt)
Definition: elements.cc:5132
virtual double interpolated_x(const Vector< double > &s, const unsigned &i) const
Return FE interpolated coordinate x[i] at local coordinate s.
Definition: elements.cc:3962
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 dim() const
Definition: elements.h:2611
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
void(* SteadyExactSolutionFctPt)(const Vector< double > &, Vector< double > &)
Definition: elements.h:1759
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
Definition: elements.h:1963
virtual void get_s_plot(const unsigned &i, const unsigned &nplot, Vector< double > &s, const bool &shifted_to_interior=false) const
Definition: elements.h:3148
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
bool has_hanging_nodes() const
Definition: elements.h:2470
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:47
virtual ~FpPressureAdvDiffRobinBCSpaceTimeElementBase()
Empty virtual destructor.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:53
FpPressureAdvDiffRobinBCSpaceTimeElementBase()
Constructor.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:50
virtual void fill_in_generic_residual_contribution_fp_press_adv_diff_robin_bc(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &compute_jacobian_flag)=0
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:81
void output(std::ostream &outfile, const unsigned &nplot)
Output function: x,y,[z],u,v,[w],p in tecplot format.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:192
void output(std::ostream &outfile)
Overload the output function.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:184
void fill_in_contribution_to_residuals(Vector< double > &residuals)
This function returns just the residuals.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:147
virtual void fill_in_generic_residual_contribution_fp_press_adv_diff_robin_bc(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:212
FpPressureAdvDiffRobinBCSpaceTimeElement(FiniteElement *const &element_pt, const int &face_index, const bool &called_from_refineable_constructor=false)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:86
~FpPressureAdvDiffRobinBCSpaceTimeElement()
Empty destructor.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:134
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
This function returns the residuals and the jacobian.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:165
virtual void fill_in_generic_residual_contribution_fp_press_adv_diff_robin_bc(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
static double Default_fd_jacobian_step
Definition: elements.h:1198
Data *& external_data_pt(const unsigned &i)
Return a pointer to i-th external data object.
Definition: elements.h:659
Data *& internal_data_pt(const unsigned &i)
Return a pointer to i-th internal data object.
Definition: elements.h:622
unsigned ninternal_data() const
Return the number of internal data objects.
Definition: elements.h:823
unsigned add_external_data(Data *const &data_pt, const bool &fd=true)
Definition: elements.cc:307
static DenseMatrix< double > Dummy_matrix
Definition: elements.h:227
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.
Definition: matrices.h:74
Definition: oomph_definitions.h:222
double get_field(const unsigned &t, const unsigned &fld, const Vector< double > &s)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:3101
unsigned nfields_for_projection()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:3004
unsigned nvalue_of_field(const unsigned &fld)
Return number of values in field fld.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:3139
unsigned nhistory_values_for_coordinate_projection()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:3033
Vector< std::pair< Data *, unsigned > > data_values_of_field(const unsigned &fld)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2960
int local_equation(const unsigned &fld, const unsigned &j)
Return local equation number of value j in field fld.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:3153
double jacobian_and_shape_of_field(const unsigned &fld, const Vector< double > &s, Shape &psi)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:3042
ProjectableTaylorHoodSpaceTimeElement()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2951
unsigned nhistory_values_for_projection(const unsigned &fld)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:3014
Definition: Qelements.h:459
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:2120
void output(std::ostream &outfile)
Redirect output to NavierStokesEquations output.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2318
virtual int p_nodal_index_nst() const
Set the value at which the pressure is stored in the nodes.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2228
void output(FILE *file_pt, const unsigned &nplot)
Redirect output to NavierStokesEquations output.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2342
double dptest_eulerian(const Vector< double > &s, Shape &ptest, DShape &dptestdx) const
QTaylorHoodSpaceTimeElement()
Constructor, no internal data points.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2192
double p_nst(const unsigned &t, const unsigned &n_p) const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2254
double dpshape_eulerian(const Vector< double > &s, Shape &ppsi, DShape &dppsidx) const
static const unsigned Initial_Nvalue[]
Static array of ints to hold number of variables at node.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:2123
void pshape_nst(const Vector< double > &s, Shape &psi) const
Pressure shape functions at local coordinate s.
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: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2271
static const unsigned Pconv[]
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:2128
void output(std::ostream &outfile, const unsigned &nplot)
Redirect output to NavierStokesEquations output.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2326
virtual unsigned required_nvalue(const unsigned &n) const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2206
int p_local_eqn(const unsigned &n) const
Return the local equation numbers for the pressure values.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2236
double p_nst(const unsigned &n_p) const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2245
void pshape_nst(const Vector< double > &s, Shape &psi, Shape &test) const
Pressure shape and test functions at local coordinte s.
void build_fp_press_adv_diff_robin_bc_element(const unsigned &face_index)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2285
void identify_load_data(std::set< std::pair< Data *, unsigned >> &paired_load_data)
void ptest_nst(const Vector< double > &s, Shape &psi) const
Pressure test functions at local coordinate s.
void identify_pressure_data(std::set< std::pair< Data *, unsigned >> &paired_pressure_data)
double dpshape_and_dptest_eulerian_nst(const Vector< double > &s, Shape &ppsi, DShape &dppsidx, Shape &ptest, DShape &dptestdx) const
double dshape_and_dtest_eulerian_at_knot_nst(const unsigned &ipt, Shape &psi, DShape &dpsidx, RankFourTensor< double > &d_dpsidx_dX, Shape &test, DShape &dtestdx, RankFourTensor< double > &d_dtestdx_dX, DenseMatrix< double > &djacobian_dX) const
double dshape_and_dtest_eulerian_at_knot_nst(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
~QTaylorHoodSpaceTimeElement()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2198
void output(FILE *file_pt)
Redirect output to NavierStokesEquations output.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2334
unsigned npres_nst() const
Return number of pressure values.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2262
double dshape_and_dtest_eulerian_nst(const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
A Rank 4 Tensor class.
Definition: matrices.h:1701
A Rank 3 Tensor class.
Definition: matrices.h:1370
Definition: refineable_elements.h:97
Data *const & variable_position_pt() const
Pointer to variable_position data (const version)
Definition: nodes.h:1765
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:466
virtual double dpshape_and_dptest_eulerian_nst(const Vector< double > &s, Shape &ppsi, DShape &dppsidx, Shape &ptest, DShape &dptestdx) const =0
NavierStokesBodyForceFctPt & body_force_fct_pt()
Access function for the body-force pointer.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1009
void get_pressure_and_velocity_mass_matrix_diagonal(Vector< double > &press_mass_diag, Vector< double > &veloc_mass_diag, const unsigned &which_one=0)
virtual void dinterpolated_u_nst_ddata(const Vector< double > &s, const unsigned &i, Vector< double > &du_ddata, Vector< unsigned > &global_eqn_number)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1978
void fill_in_pressure_advection_diffusion_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1728
static Vector< double > Gamma
Navier-Stokes equations static data.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:833
double *& st_pt()
Pointer to Strouhal number (can only assign to private member data)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:943
double * ReInvFr_pt
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:525
int Pinned_fp_pressure_eqn
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:552
void disable_ALE()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1200
void compute_error(std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
virtual void fill_in_generic_residual_contribution_nst(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix, const unsigned &flag)
void get_traction(const Vector< double > &s, const Vector< double > &N, Vector< double > &traction)
NavierStokesBodyForceFctPt Body_force_fct_pt
Pointer to body force function.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:531
void compute_error(FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
void full_output(std::ostream &outfile)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1507
const double & st() const
Strouhal parameter (const. version)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:894
double dissipation(const Vector< double > &s) const
Return dissipation at local coordinate s.
virtual double dshape_and_dtest_eulerian_nst(const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
NavierStokesPressureAdvDiffSourceFctPt Press_adv_diff_source_fct_pt
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:538
virtual int p_nodal_index_nst() const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1229
void delete_pressure_advection_diffusion_robin_elements()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1872
void compute_norm(Vector< double > &norm)
Compute the vector norm of the FEM solution.
void output_fct(std::ostream &outfile, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
virtual double dshape_and_dtest_eulerian_at_knot_nst(const unsigned &ipt, Shape &psi, DShape &dpsidx, RankFourTensor< double > &d_dpsidx_dX, Shape &test, DShape &dtestdx, RankFourTensor< double > &d_dtestdx_dX, DenseMatrix< double > &djacobian_dX) const =0
unsigned n_u_nst() const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1129
double * St_pt
Pointer to global Reynolds number x Strouhal number (=Womersley)
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:517
void compute_error(FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
void get_vorticity(const Vector< double > &s, double &vorticity) const
Compute the vorticity vector at local coordinate s.
double * Density_Ratio_pt
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:509
Vector< double > * G_pt
Pointer to global gravity Vector.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:528
double du_dt_nst(const unsigned &n, const unsigned &i) const
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:1149
NavierStokesBodyForceFctPt body_force_fct_pt() const
Access function for the body-force pointer. Const version.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1015
virtual double interpolated_p_nst(const Vector< double > &s) const
Return FE interpolated pressure at local coordinate s.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:2037
static double Default_Physical_Constant_Value
Navier-Stokes equations static data.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:491
void fill_in_contribution_to_hessian_vector_products(Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
NavierStokesSourceFctPt & source_fct_pt()
Access function for the source-function pointer.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1021
virtual double dshape_and_dtest_eulerian_at_knot_nst(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
void output(FILE *file_pt)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1489
const double & re() const
Reynolds number.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:870
double kin_energy() const
Get integral of kinetic energy over element.
void point_output_data(const Vector< double > &s, Vector< double > &data)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2082
void output_fct(std::ostream &outfile, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
const double & density_ratio() const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:973
int & pinned_fp_pressure_eqn()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1049
NavierStokesSourceFctPt source_fct_pt() const
Access function for the source-function pointer. Const version.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1027
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Compute the element's residual Vector.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1607
void(* NavierStokesBodyForceFctPt)(const double &time, const Vector< double > &x, Vector< double > &body_force)
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:470
void store_strouhal_as_external_data(Data *strouhal_data_pt)
Function that tells us whether the period is stored as external data.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:837
virtual void fill_in_generic_pressure_advection_diffusion_contribution_nst(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.cc:1812
Vector< FpPressureAdvDiffRobinBCSpaceTimeElementBase * > Pressure_advection_diffusion_robin_element_pt
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:548
double * st_pt() const
Pointer to Strouhal parameter (const. version)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:918
virtual double p_nst(const unsigned &n_p) const =0
virtual void fill_in_generic_dresidual_contribution_nst(double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam, const unsigned &flag)
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.cc:2443
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1640
double interpolated_du_dt_nst(const Vector< double > &s, const unsigned &i) const
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:1164
virtual double p_nst(const unsigned &t, const unsigned &n_p) const =0
Pressure at local pressure "node" n_p at time level t.
void output(std::ostream &outfile, const unsigned &n_plot)
double * Viscosity_Ratio_pt
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:505
void fill_in_contribution_to_dresiduals_dparameter(double *const ¶meter_pt, Vector< double > &dres_dparam)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1656
bool is_strouhal_stored_as_external_data() const
Are we storing the Strouhal number as external data?
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:886
const Vector< double > & g() const
Vector of gravitational components.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:997
NavierStokesPressureAdvDiffSourceFctPt & source_fct_for_pressure_adv_diff()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1034
static int Pressure_not_stored_at_node
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:487
virtual void get_body_force_nst(const double &time, const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, Vector< double > &result)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:620
void output(std::ostream &outfile)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1472
void compute_error(std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
double d_kin_energy_dt() const
Get integral of time derivative of kinetic energy over element.
double dissipation() const
Return integral of dissipation over element.
double *& re_pt()
Pointer to Reynolds number.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:878
void fill_in_pressure_advection_diffusion_residuals(Vector< double > &residuals)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1714
double * Re_pt
Pointer to global Reynolds number.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:514
virtual void pshape_nst(const Vector< double > &s, Shape &psi, Shape &test) const =0
virtual unsigned npres_nst() const =0
Function to return number of pressure degrees of freedom.
virtual void fill_in_generic_pressure_advection_diffusion_contribution_nst(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
double interpolated_u_nst(const Vector< double > &s, const unsigned &i) const
Return FE interpolated velocity u[i] at local coordinate s.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1924
static Vector< double > Default_Gravity_vector
Static default value for the gravity vector.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:498
virtual void fill_in_generic_residual_contribution_nst(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix, const unsigned &flag)
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.cc:1994
NavierStokesSourceFctPt Source_fct_pt
Pointer to volumetric source function.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:534
double(* NavierStokesSourceFctPt)(const double &time, const Vector< double > &x)
Function pointer to source function fct(t,x) (x is a Vector!)
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:475
void scalar_value_fct_paraview(std::ofstream &file_out, const unsigned &i, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1367
const double & re_invfr() const
Global inverse Froude number.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:985
void get_load(const Vector< double > &s, const Vector< double > &N, Vector< double > &load)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1285
double u_nst(const unsigned &t, const unsigned &n, const unsigned &i) const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1079
double *& density_ratio_pt()
Pointer to Density ratio.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:979
void fill_in_contribution_to_djacobian_and_dmass_matrix_dparameter(double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1694
NavierStokesPressureAdvDiffSourceFctPt source_fct_for_pressure_adv_diff() const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1041
unsigned nscalar_paraview() const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1307
void get_traction(const Vector< double > &s, const Vector< double > &N, Vector< double > &traction_p, Vector< double > &traction_visc_n, Vector< double > &traction_visc_t)
double re_st() const
Product of Reynolds and Strouhal number (=Womersley number)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:951
void pin_all_non_pressure_dofs(std::map< Data *, std::vector< int >> &eqn_number_backup)
Pin all non-pressure dofs and backup eqn numbers.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1741
void interpolated_u_nst(const Vector< double > &s, Vector< double > &velocity) const
Compute vector of FE interpolated velocity u at local coordinate s.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:1892
SpaceTimeNavierStokesEquations()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:795
virtual double dptest_eulerian(const Vector< double > &s, Shape &ptest, DShape &dptestdx) const =0
double pressure_integral() const
Integral of pressure over element.
virtual void pshape_nst(const Vector< double > &s, Shape &psi) const =0
Compute the pressure shape functions at local coordinate s.
virtual unsigned u_index_nst(const unsigned &i) const
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:1102
virtual double get_source_nst(const double &time, const unsigned &ipt, const Vector< double > &x)
Calculate the source fct at a given time and Eulerian position.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:691
void output_veloc(std::ostream &outfile, const unsigned &nplot, const unsigned &t)
double interpolated_u_nst(const unsigned &t, const Vector< double > &s, const unsigned &i) const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1955
void compute_error(std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
virtual void get_dresidual_dnodal_coordinates(RankThreeTensor< double > &dresidual_dnodal_coordinates)
virtual void fill_in_generic_dresidual_contribution_nst(double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam, const unsigned &flag)
void get_vorticity(const Vector< double > &s, Vector< double > &vorticity) const
Compute the vorticity vector at local coordinate s.
void output(FILE *file_pt, const unsigned &n_plot)
void fill_in_contribution_to_djacobian_dparameter(double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1674
virtual void get_body_force_gradient_nst(const double &time, const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, DenseMatrix< double > &d_body_force_dx)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:646
double u_nst(const unsigned &n, const unsigned &i) const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1072
double(* NavierStokesPressureAdvDiffSourceFctPt)(const Vector< double > &x)
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:481
const double & viscosity_ratio() const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:960
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.
virtual double dpshape_eulerian(const Vector< double > &s, Shape &ppsi, DShape &dppsidx) const =0
void output_pressure_advection_diffusion_robin_elements(std::ostream &outfile)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1834
void strain_rate(const Vector< double > &s, DenseMatrix< double > &strain_rate) const
Strain-rate tensor: 1/2 (du_i/dx_j+du_j/dx_i)
double *& re_invfr_pt()
Pointer to global inverse Froude number.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:991
virtual void get_source_gradient_nst(const double &time, const unsigned &ipt, const Vector< double > &x, Vector< double > &gradient)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:715
static double Default_Physical_Ratio_Value
Navier-Stokes equations static data.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:495
double *& viscosity_ratio_pt()
Pointer to Viscosity Ratio.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:966
void enable_ALE()
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1210
virtual void build_fp_press_adv_diff_robin_bc_element(const unsigned &face_index)=0
bool Strouhal_is_stored_as_external_data
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:521
bool ALE_is_disabled
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:543
void full_output(std::ostream &outfile, const unsigned &n_plot)
Vector< double > *& g_pt()
Pointer to Vector of gravitational components.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1003
void scalar_value_paraview(std::ofstream &file_out, const unsigned &i, const unsigned &nplot) const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1315
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1623
double interpolated_p_nst(const unsigned &t, const Vector< double > &s) const
Return FE interpolated pressure at local coordinate s at time level t.
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:2059
void output_vorticity(std::ostream &outfile, const unsigned &nplot)
std::string scalar_name_paraview(const unsigned &i) const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1436
double get_du_dt(const unsigned &n, const unsigned &i) const
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:1140
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:365
virtual void get_pressure_and_velocity_mass_matrix_diagonal(Vector< double > &press_mass_diag, Vector< double > &veloc_mass_diag, const unsigned &which_one=0)=0
virtual void build_fp_press_adv_diff_robin_bc_element(const unsigned &face_index)=0
virtual void fill_in_pressure_advection_diffusion_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)=0
TemplateFreeSpaceTimeNavierStokesEquationsBase()
Constructor (empty)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:368
virtual ~TemplateFreeSpaceTimeNavierStokesEquationsBase()
Virtual destructor (empty)
Definition: discontinuous_galerkin_spacetime_navier_stokes_elements.h:372
virtual int p_nodal_index_nst() const =0
virtual int p_local_eqn(const unsigned &n) const =0
virtual void pin_all_non_pressure_dofs(std::map< Data *, std::vector< int >> &eqn_number_backup)=0
Pin all non-pressure dofs and backup eqn numbers of all Data.
virtual void delete_pressure_advection_diffusion_robin_elements()=0
virtual void fill_in_pressure_advection_diffusion_residuals(Vector< double > &residuals)=0
virtual int & pinned_fp_pressure_eqn()=0
void initialise(const _Tp &__value)
Iterate over all values and set to the desired value.
Definition: oomph-lib/src/generic/Vector.h:167
@ N
Definition: constructor.cpp:22
RealScalar s
Definition: level1_cplx_impl.h:130
char char char int int * k
Definition: level2_impl.h:374
#define DIM
Definition: linearised_navier_stokes_elements.h:44
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625
EIGEN_DEVICE_FUNC const Scalar & q
Definition: SpecialFunctionsImpl.h:2019
void body_force(const double &time, const Vector< double > &x, Vector< double > &result)
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:96
double velocity(const double &t)
Angular velocity as function of time t.
Definition: jeffery_orbit.cc:107
void flux(const double &time, const Vector< double > &x, double &flux)
Get flux applied along boundary x=0.
Definition: pretend_melt.cc:59
void exact_soln(const double &time, const Vector< double > &x, Vector< double > &soln)
Definition: unstructured_two_d_curved.cc:301
void source(const Vector< double > &x, Vector< double > &f)
Source function.
Definition: unstructured_two_d_circle.cc:46
int error
Definition: calibrate.py:297
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
void dshape< 3 >(const double &s, double *DPsi)
Definition: shape.h:820
void shape< 3 >(const double &s, double *Psi)
1D shape functions specialised to quadratic order (3 Nodes)
Definition: shape.h:810
void shape(const double &s, double *Psi)
Definition: shape.h:564
void dshape< 3 >(const double &s, double *DPsi)
Definition: shape.h:645
void dshape< 2 >(const double &s, double *DPsi)
Derivatives of 1D shape functions specialised to linear order (2 Nodes)
Definition: shape.h:616
void shape< 3 >(const double &s, double *Psi)
1D shape functions specialised to quadratic order (3 Nodes)
Definition: shape.h:635
void shape< 2 >(const double &s, double *Psi)
1D shape functions specialised to linear order (2 Nodes)
Definition: shape.h:608
@ W
Definition: quadtree.h:63
std::string to_string(T object, unsigned float_precision=8)
Definition: oomph_utilities.h:189
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
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
unsigned el_dim
dimension
Definition: overloaded_cartesian_element_body.h:30
void product(const MatrixType &m)
Definition: product.h:42
void set(Container &c, Position position, const Value &value)
Definition: stdlist_overload.cpp:36
const char Y
Definition: test/EulerAngles.cpp:32
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2