71 q_basis(0,0) =
Sign_edge[0]*std::sqrt(2)*s[0];
72 q_basis(0,1) =
Sign_edge[0]*std::sqrt(2)*s[1];
85 Shape &div_q_basis_ds)
const 87 div_q_basis_ds(0) =
Sign_edge[0]*2*std::sqrt(2);
113 Shape &p_basis)
const 168 Shape &q_basis)
const 176 q_basis(0,0) =
Sign_edge[0]*std::sqrt(2)*s[0]*(s[1]-g2)/(g1-g2);
177 q_basis(0,1) =
Sign_edge[0]*std::sqrt(2)*s[1]*(s[1]-g2)/(g1-g2);
179 q_basis(1,0) =
Sign_edge[0]*std::sqrt(2)*s[0]*(s[1]-g1)/(g2-g1);
180 q_basis(1,1) =
Sign_edge[0]*std::sqrt(2)*s[1]*(s[1]-g1)/(g2-g1);
184 q_basis(2,0) =
Sign_edge[1]*(s[0]-1)*(s[1]-g1)/(g2-g1);
185 q_basis(2,1) =
Sign_edge[1]*s[1]*(s[1]-g1)/(g2-g1);
187 q_basis(3,0) =
Sign_edge[1]*(s[0]-1)*(s[1]-g2)/(g1-g2);
188 q_basis(3,1) =
Sign_edge[1]*s[1]*(s[1]-g2)/(g1-g2);
192 q_basis(4,0) =
Sign_edge[2]*s[0]*(s[0]-g2)/(g1-g2);
193 q_basis(4,1) =
Sign_edge[2]*(s[1]-1)*(s[0]-g2)/(g1-g2);
195 q_basis(5,0) =
Sign_edge[2]*s[0]*(s[0]-g1)/(g2-g1);
196 q_basis(5,1) =
Sign_edge[2]*(s[1]-1)*(s[0]-g1)/(g2-g1);
198 q_basis(6,0) = s[1]*s[0];
199 q_basis(6,1) = s[1]*(s[1]-1);
201 q_basis(7,0) = s[0]*(s[0]-1);
202 q_basis(7,1) = s[0]*s[1];
209 Shape &div_q_basis_ds)
const 215 div_q_basis_ds(0) =
Sign_edge[0]*std::sqrt(2)*(3*s[1]-2*g2)/(g1-g2);
216 div_q_basis_ds(1) =
Sign_edge[0]*std::sqrt(2)*(2*g1-3*s[1])/(g1-g2);
220 div_q_basis_ds(2) =
Sign_edge[1]*(2*g1-3*s[1])/(g1-g2);
221 div_q_basis_ds(3) =
Sign_edge[1]*(3*s[1]-2*g2)/(g1-g2);
225 div_q_basis_ds(4) =
Sign_edge[2]*(3*s[0]-2*g2)/(g1-g2);
226 div_q_basis_ds(5) =
Sign_edge[2]*(2*g1-3*s[0])/(g1-g2);
228 div_q_basis_ds(6) = 3*s[1]-1;
229 div_q_basis_ds(7) = 3*s[0]-1;
253 Shape &p_basis)
const 272 {0.5-std::sqrt(3.0)/6.0,
273 0.5+std::sqrt(3.0)/6.0};
void get_div_q_basis_local(const Vector< double > &s, Shape &div_q_basis_ds) const
Returns the local form of the q basis and dbasis/ds at local coordinate s.
~TPoroelasticityElement()
Destructor.
TPoroelasticityElement()
Constructor.
void scale_basis(Shape &basis) const
Scale the edge basis to allow arbitrary edge mappings.
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.
Element which solves the Darcy equations using TElements.
unsigned nq_basis_edge() const
Return the number of edge basis functions for u.
double edge_gauss_point(const unsigned &edge, const unsigned &n) const
unsigned np_basis() const
Return the total number of pressure basis functions.
A class that represents a collection of data; each Data object may contain many different individual ...
Class implementing the generic maths of the poroelasticity equations: linear elasticity coupled with ...
unsigned nq_basis() const
Return the total number of computational basis functions for u.
std::vector< short > Sign_edge
Unit normal signs associated with each edge to ensure inter-element continuity of the flux...
unsigned add_internal_data(Data *const &data_pt, const bool &fd=true)
Add a (pointer to an) internal data object to the element and return the index required to obtain it ...
unsigned P_internal_data_index
The internal data index where the p degrees of freedom are stored.
unsigned Q_internal_data_index
The internal data index where the internal q degrees of freedom are stored.
unsigned nedge_gauss_point() const
Returns the number of gauss points along each edge of the element.
void get_p_basis(const Vector< double > &s, Shape &p_basis) const
Return the pressure basis.