81 q_basis(0, 0) = Sign_edge[0] * std::sqrt(2) *
s[0];
82 q_basis(0, 1) = Sign_edge[0] * std::sqrt(2) *
s[1];
84 q_basis(1, 0) = Sign_edge[1] * (
s[0] - 1);
85 q_basis(1, 1) = Sign_edge[1] *
s[1];
87 q_basis(2, 0) = Sign_edge[2] *
s[0];
88 q_basis(2, 1) = Sign_edge[2] * (
s[1] - 1);
98 div_q_basis_ds(0) = Sign_edge[0] * 2 * std::sqrt(2);
99 div_q_basis_ds(1) = Sign_edge[1] * 2;
100 div_q_basis_ds(2) = Sign_edge[2] * 2;
104 scale_basis(div_q_basis_ds);
113 0>::nedge_flux_interpolation_point()
const
224 g1_vect = edge_flux_interpolation_point(0, 0);
225 g2_vect = edge_flux_interpolation_point(0, 1);
226 double g1 = g1_vect[0];
227 double g2 = g2_vect[0];
230 Sign_edge[0] * std::sqrt(2.0) *
s[0] * (
s[1] - g2) / (g1 - g2);
232 Sign_edge[0] * std::sqrt(2.0) *
s[1] * (
s[1] - g2) / (g1 - g2);
235 Sign_edge[0] * std::sqrt(2.0) *
s[0] * (
s[1] - g1) / (g2 - g1);
237 Sign_edge[0] * std::sqrt(2.0) *
s[1] * (
s[1] - g1) / (g2 - g1);
239 g1_vect = edge_flux_interpolation_point(1, 0);
240 g2_vect = edge_flux_interpolation_point(1, 1);
243 q_basis(2, 0) = Sign_edge[1] * (
s[0] - 1.0) * (
s[1] - g1) / (g2 - g1);
244 q_basis(2, 1) = Sign_edge[1] *
s[1] * (
s[1] - g1) / (g2 - g1);
246 q_basis(3, 0) = Sign_edge[1] * (
s[0] - 1.0) * (
s[1] - g2) / (g1 - g2);
247 q_basis(3, 1) = Sign_edge[1] *
s[1] * (
s[1] - g2) / (g1 - g2);
249 g1_vect = edge_flux_interpolation_point(2, 0);
250 g2_vect = edge_flux_interpolation_point(2, 1);
254 q_basis(4, 0) = Sign_edge[2] *
s[0] * (
s[0] - g2) / (g1 - g2);
255 q_basis(4, 1) = Sign_edge[2] * (
s[1] - 1.0) * (
s[0] - g2) / (g1 - g2);
257 q_basis(5, 0) = Sign_edge[2] *
s[0] * (
s[0] - g1) / (g2 - g1);
258 q_basis(5, 1) = Sign_edge[2] * (
s[1] - 1.0) * (
s[0] - g1) / (g2 - g1);
260 q_basis(6, 0) =
s[1] *
s[0];
261 q_basis(6, 1) =
s[1] * (
s[1] - 1.0);
263 q_basis(7, 0) =
s[0] * (
s[0] - 1.0);
264 q_basis(7, 1) =
s[0] *
s[1];
275 g1_vect = edge_flux_interpolation_point(0, 0);
276 g2_vect = edge_flux_interpolation_point(0, 1);
277 double g1 = g1_vect[0];
278 double g2 = g2_vect[0];
280 Sign_edge[0] * std::sqrt(2.0) * (3.0 *
s[1] - 2.0 * g2) / (g1 - g2);
282 Sign_edge[0] * std::sqrt(2.0) * (2.0 * g1 - 3.0 *
s[1]) / (g1 - g2);
284 g1_vect = edge_flux_interpolation_point(1, 0);
285 g2_vect = edge_flux_interpolation_point(1, 1);
288 div_q_basis_ds(2) = Sign_edge[1] * (2.0 * g1 - 3.0 *
s[1]) / (g1 - g2);
289 div_q_basis_ds(3) = Sign_edge[1] * (3.0 *
s[1] - 2.0 * g2) / (g1 - g2);
291 g1_vect = edge_flux_interpolation_point(2, 0);
292 g2_vect = edge_flux_interpolation_point(2, 1);
295 div_q_basis_ds(4) = Sign_edge[2] * (3.0 *
s[0] - 2.0 * g2) / (g1 - g2);
296 div_q_basis_ds(5) = Sign_edge[2] * (2.0 * g1 - 3.0 *
s[0]) / (g1 - g2);
298 div_q_basis_ds(6) = 3.0 *
s[1] - 1.0;
299 div_q_basis_ds(7) = 3.0 *
s[0] - 1.0;
303 scale_basis(div_q_basis_ds);
312 1>::nedge_flux_interpolation_point()
const
369 0.5 - std::sqrt(3.0) / 6.0, 0.5 + std::sqrt(3.0) / 6.0};
Class implementing the generic maths of the axisym poroelasticity equations: axisym linear elasticity...
A class that represents a collection of data; each Data object may contain many different individual ...
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 ...
A Class for shape functions. In simple cases, the shape functions have only one index that can be tho...
================================================================= Element which solves the Darcy/line...
void get_p_basis(const Vector< double > &s, Shape &p_basis) const
Return the pressure basis.
unsigned Q_internal_data_index
The internal data index where the internal q degrees of freedom are stored.
unsigned P_internal_data_index
The internal data index where the p degrees of freedom are stored.
unsigned nq_basis_edge() const
Return the number of edge basis functions for flux q.
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.
~TAxisymmetricPoroelasticityElement()
Destructor.
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.
TAxisymmetricPoroelasticityElement()
Constructor.
unsigned nq_basis_internal() const
Return the number of internal basis functions for flux q.
unsigned np_basis() const
Return the total number of pressure basis functions.
//////////////////////////////////////////////////////////////////// ////////////////////////////////...