26 #ifndef OOMPH_TPOROELASTICITY_ELEMENTS_HEADER
27 #define OOMPH_TPOROELASTICITY_ELEMENTS_HEADER
31 #include <oomph-lib-config.h>
35 #include "../generic/Telements.h"
40 template<
unsigned ORDER>
84 std::ostringstream error_message;
85 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,1)";
101 std::ostringstream error_message;
102 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
116 #ifdef RANGE_CHECKING
119 std::ostringstream error_message;
120 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
140 #ifdef RANGE_CHECKING
143 std::ostringstream error_message;
144 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
151 return n % (ORDER + 1) + 2;
157 #ifdef RANGE_CHECKING
160 std::ostringstream error_message;
161 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
174 #ifdef RANGE_CHECKING
177 std::ostringstream error_message;
178 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
190 double q_edge(
const unsigned&
t,
const unsigned&
n)
const
192 #ifdef RANGE_CHECKING
195 std::ostringstream error_message;
196 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
209 #ifdef RANGE_CHECKING
212 std::ostringstream error_message;
213 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
227 #ifdef RANGE_CHECKING
231 std::ostringstream error_message;
232 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
254 Shape& div_q_basis_ds)
const;
264 #ifdef RANGE_CHECKING
267 std::ostringstream error_message;
268 error_message <<
"Range Error: edge " << edge
269 <<
" is not in the range (0,2)";
276 std::ostringstream error_message;
277 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
292 #ifdef RANGE_CHECKING
295 std::ostringstream error_message;
296 error_message <<
"Range Error: edge " << edge
297 <<
" is not in the range (0,2)";
304 std::ostringstream error_message;
305 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
329 s_gauss[0] = 1 - gauss_point;
330 s_gauss[1] = gauss_point;
334 s_gauss[1] = 1 - gauss_point;
337 s_gauss[0] = gauss_point;
349 #ifdef RANGE_CHECKING
352 std::ostringstream error_message;
353 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
366 #ifdef RANGE_CHECKING
369 std::ostringstream error_message;
370 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
383 #ifdef RANGE_CHECKING
386 std::ostringstream error_message;
387 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
406 #ifdef RANGE_CHECKING
409 std::ostringstream error_message;
410 error_message <<
"Range Error: n " <<
n <<
" is not in the range (0,"
428 double x0, y0,
x1, y1;
432 for (
unsigned i = 0;
i < 3;
i++)
444 const double ref_length[3] = {
std::sqrt(2.0), 1, 1};
451 const unsigned n_index2 = basis.
nindex2();
452 for (
unsigned i = 0;
i < n_index2;
i++)
454 for (
unsigned l = 0; l < n_q_basis_edge; l++)
457 (length[l / (ORDER + 1)] / ref_length[l / (ORDER + 1)]);
482 void output(std::ostream& outfile,
const unsigned& Nplot)
501 Shape& div_q_basis_ds,
502 Shape& div_q_test_ds)
const
504 const unsigned n_q_basis = this->
nq_basis();
506 Shape q_basis_local(n_q_basis, 2);
522 div_q_test_ds = div_q_basis_ds;
540 Shape& div_q_basis_ds,
541 Shape& div_q_test_ds)
const
544 for (
unsigned i = 0;
i < 2;
i++)
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
float * p
Definition: Tutorial_Map_using.cpp:9
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
double value(const unsigned &i) const
Definition: nodes.h:293
FaceGeometry()
Constructor: Call constructor of base.
Definition: Tporoelasticity_elements.h:571
FaceGeometry()
Constructor: Call constructor of base class.
Definition: Tporoelasticity_elements.h:580
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
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
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Definition: elements.h:1432
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
Definition: elements.h:1963
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
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.
double & x(const unsigned &i)
Return the i-th nodal coordinate.
Definition: nodes.h:1060
Definition: oomph_definitions.h:222
Definition: poroelasticity_elements.h:46
double transform_basis(const Vector< double > &s, const Shape &q_basis_local, Shape &psi, DShape &dpsi, Shape &q_basis) const
Definition: poroelasticity_elements.cc:196
void output(std::ostream &outfile)
Output with default number of plot points.
Definition: poroelasticity_elements.h:706
unsigned nindex2() const
Return the range of index 2 of the shape function object.
Definition: shape.h:265
Definition: Telements.h:1208
Element which solves the Darcy equations using TElements.
Definition: Tporoelasticity_elements.h:43
double q_edge(const unsigned &n) const
Return the values of the edge (flux) degrees of freedom.
Definition: Tporoelasticity_elements.h:172
short & sign_edge(const unsigned &n)
Accessor for the unit normal sign of edge n.
Definition: Tporoelasticity_elements.h:469
unsigned required_nvalue(const unsigned &n) const
Number of values required at node n.
Definition: Tporoelasticity_elements.h:74
void pin_p_value(const unsigned &n, const double &p)
Pin the nth pressure value.
Definition: Tporoelasticity_elements.h:404
TPoroelasticityElement()
Constructor.
double edge_gauss_point(const unsigned &edge, const unsigned &n) const
Definition: Tporoelasticity_elements.h:262
unsigned Q_internal_data_index
Definition: Tporoelasticity_elements.h:57
void get_div_q_basis_local(const Vector< double > &s, Shape &div_q_basis_ds) const
static const unsigned Q_edge_conv[]
Definition: Tporoelasticity_elements.h:50
unsigned u_index(const unsigned &n) const
Return the nodal index of the n-th solid displacement unknown.
Definition: Tporoelasticity_elements.h:79
double shape_basis_test_local_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsi, Shape &u_basis, Shape &u_test, DShape &du_basis_dx, DShape &du_test_dx, Shape &q_basis, Shape &q_test, Shape &p_basis, Shape &p_test, Shape &div_q_basis_ds, Shape &div_q_test_ds) const
Definition: Tporoelasticity_elements.h:529
double shape_basis_test_local(const Vector< double > &s, Shape &psi, DShape &dpsi, Shape &u_basis, Shape &u_test, DShape &du_basis_dx, DShape &du_test_dx, Shape &q_basis, Shape &q_test, Shape &p_basis, Shape &p_test, Shape &div_q_basis_ds, Shape &div_q_test_ds) const
Definition: Tporoelasticity_elements.h:490
unsigned q_edge_index(const unsigned &n) const
Return the nodal index at which the nth edge unknown is stored.
Definition: Tporoelasticity_elements.h:138
std::vector< short > Sign_edge
Definition: Tporoelasticity_elements.h:64
void output(std::ostream &outfile)
Output with default number of plot points.
Definition: Tporoelasticity_elements.h:475
unsigned nedge_gauss_point() const
Returns the number of gauss points along each edge of the element.
void scale_basis(Shape &basis) const
Scale the edge basis to allow arbitrary edge mappings.
Definition: Tporoelasticity_elements.h:422
void pin_q_internal_value(const unsigned &n)
Pin the nth internal q value.
Definition: Tporoelasticity_elements.h:347
unsigned q_internal_index() const
Definition: Tporoelasticity_elements.h:132
int p_local_eqn(const unsigned &n) const
Return the equation number of the n-th pressure degree of freedom.
Definition: Tporoelasticity_elements.h:364
void get_p_basis(const Vector< double > &s, Shape &p_basis) const
Return the pressure basis.
static const double Gauss_point[]
The points along each edge where the fluxes are taken to be.
Definition: Tporoelasticity_elements.h:53
unsigned np_basis() const
Return the total number of pressure basis functions.
unsigned nq_basis_edge() const
Return the number of edge basis functions for u.
int q_edge_local_eqn(const unsigned &n) const
Return the equation number of the n-th edge (flux) degree of freedom.
Definition: Tporoelasticity_elements.h:96
double q_internal(const unsigned &t, const unsigned &n) const
Definition: Tporoelasticity_elements.h:225
int q_internal_local_eqn(const unsigned &n) const
Definition: Tporoelasticity_elements.h:114
double p_value(unsigned &n) const
Return the nth pressure value.
Definition: Tporoelasticity_elements.h:381
unsigned P_internal_data_index
The internal data index where the p degrees of freedom are stored.
Definition: Tporoelasticity_elements.h:60
void output(std::ostream &outfile, const unsigned &Nplot)
Definition: Tporoelasticity_elements.h:482
void get_q_basis_local(const Vector< double > &s, Shape &q_basis) const
Returns the local form of the q basis at local coordinate s.
static const unsigned Initial_Nvalue[]
The number of values stored at each node.
Definition: Tporoelasticity_elements.h:46
~TPoroelasticityElement()
Destructor.
double q_edge(const unsigned &t, const unsigned &n) const
Definition: Tporoelasticity_elements.h:190
unsigned q_edge_node_number(const unsigned &n) const
Return the number of the node where the nth edge unknown is stored.
Definition: Tporoelasticity_elements.h:155
void edge_gauss_point_global(const unsigned &edge, const unsigned &n, Vector< double > &x) const
Returns the global coordinates of the nth gauss point along an edge.
Definition: Tporoelasticity_elements.h:288
const short & sign_edge(const unsigned &n) const
Accessor for the unit normal sign of edge n (const version)
Definition: Tporoelasticity_elements.h:463
double q_internal(const unsigned &n) const
Return the values of the internal (moment) degrees of freedom.
Definition: Tporoelasticity_elements.h:207
unsigned nq_basis() const
Return the total number of computational basis functions for u.
RealScalar s
Definition: level1_cplx_impl.h:130
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625
Vector< double > x1(const Vector< double > &coord)
Cartesian coordinates centered at the point (0.5,1)
Definition: poisson/poisson_with_singularity/two_d_poisson.cc:86
Vector< double > x0(2, 0.0)
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
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86