89 q_basis(0,0) =
Sign_edge[0]*std::sqrt(2)*s[0];
90 q_basis(0,1) =
Sign_edge[0]*std::sqrt(2)*s[1];
105 Shape &div_q_basis_ds)
const 107 div_q_basis_ds(0) =
Sign_edge[0]*2*std::sqrt(2);
142 Shape &p_basis)
const 160 Face_index_of_edge_flux[3] = {2,0,1};
175 Flux_interpolation_point[1] = {0.5};
231 Shape &q_basis)
const 237 double g1=g1_vect[0];
238 double g2=g2_vect[0];
240 q_basis(0,0) =
Sign_edge[0]*std::sqrt(2.0)*s[0]*(s[1]-g2)/(g1-g2);
241 q_basis(0,1) =
Sign_edge[0]*std::sqrt(2.0)*s[1]*(s[1]-g2)/(g1-g2);
243 q_basis(1,0) =
Sign_edge[0]*std::sqrt(2.0)*s[0]*(s[1]-g1)/(g2-g1);
244 q_basis(1,1) =
Sign_edge[0]*std::sqrt(2.0)*s[1]*(s[1]-g1)/(g2-g1);
250 q_basis(2,0) =
Sign_edge[1]*(s[0]-1.0)*(s[1]-g1)/(g2-g1);
251 q_basis(2,1) =
Sign_edge[1]*s[1]*(s[1]-g1)/(g2-g1);
253 q_basis(3,0) =
Sign_edge[1]*(s[0]-1.0)*(s[1]-g2)/(g1-g2);
254 q_basis(3,1) =
Sign_edge[1]*s[1]*(s[1]-g2)/(g1-g2);
261 q_basis(4,0) =
Sign_edge[2]*s[0]*(s[0]-g2)/(g1-g2);
262 q_basis(4,1) =
Sign_edge[2]*(s[1]-1.0)*(s[0]-g2)/(g1-g2);
264 q_basis(5,0) =
Sign_edge[2]*s[0]*(s[0]-g1)/(g2-g1);
265 q_basis(5,1) =
Sign_edge[2]*(s[1]-1.0)*(s[0]-g1)/(g2-g1);
267 q_basis(6,0) = s[1]*s[0];
268 q_basis(6,1) = s[1]*(s[1]-1.0);
270 q_basis(7,0) = s[0]*(s[0]-1.0);
271 q_basis(7,1) = s[0]*s[1];
280 Shape &div_q_basis_ds)
const 286 double g1=g1_vect[0];
287 double g2=g2_vect[0];
288 div_q_basis_ds(0) =
Sign_edge[0]*std::sqrt(2.0)*(3.0*s[1]-2.0*g2)/(g1-g2);
289 div_q_basis_ds(1) =
Sign_edge[0]*std::sqrt(2.0)*(2.0*g1-3.0*s[1])/(g1-g2);
295 div_q_basis_ds(2) =
Sign_edge[1]*(2.0*g1-3.0*s[1])/(g1-g2);
296 div_q_basis_ds(3) =
Sign_edge[1]*(3.0*s[1]-2.0*g2)/(g1-g2);
302 div_q_basis_ds(4) =
Sign_edge[2]*(3.0*s[0]-2.0*g2)/(g1-g2);
303 div_q_basis_ds(5) =
Sign_edge[2]*(2.0*g1-3.0*s[0])/(g1-g2);
305 div_q_basis_ds(6) = 3.0*s[1]-1.0;
306 div_q_basis_ds(7) = 3.0*s[0]-1.0;
339 Shape &p_basis)
const 359 Face_index_of_edge_flux[3] = {2,0,1};
373 Flux_interpolation_point[2] =
374 {0.5-std::sqrt(3.0)/6.0,
375 0.5+std::sqrt(3.0)/6.0};
Vector< double > edge_flux_interpolation_point(const unsigned &edge, const unsigned &j) const
Returns the local coordinate of the jth flux_interpolation point along specified edge.
unsigned nq_basis_internal() const
Return the number of internal basis functions for flux q.
unsigned Q_internal_data_index
The internal data index where the internal q degrees of freedom are stored.
unsigned nq_basis_edge() const
Return the number of edge basis functions for flux q.
TAxisymmetricPoroelasticityElement()
Constructor.
A class that represents a collection of data; each Data object may contain many different individual ...
~TAxisymmetricPoroelasticityElement()
Destructor.
void get_p_basis(const Vector< double > &s, Shape &p_basis) const
Return the pressure basis.
std::vector< short > Sign_edge
Unit normal signs associated with each edge to ensure inter-element continuity of the flux...
unsigned P_internal_data_index
The internal data index where the p degrees of freedom are stored.
unsigned np_basis() const
Return the total number of pressure basis functions.
Class implementing the generic maths of the axisym poroelasticity equations: axisym linear elasticity...
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 nedge_flux_interpolation_point() const
Returns the number of flux_interpolation points along each edge of the element.
void scale_basis(Shape &basis) const
Scale the edge basis to allow arbitrary edge mappings.
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.
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.