oomph::TPoroelasticityElement< ORDER > Class Template Reference

Element which solves the Darcy equations using TElements. More...

#include <Tporoelasticity_elements.h>

+ Inheritance diagram for oomph::TPoroelasticityElement< ORDER >:

Public Member Functions

 TPoroelasticityElement ()
 Constructor. More...
 
 ~TPoroelasticityElement ()
 Destructor. More...
 
unsigned required_nvalue (const unsigned &n) const
 Number of values required at node n. More...
 
unsigned u_index (const unsigned &n) const
 Return the nodal index of the n-th solid displacement unknown. More...
 
int q_edge_local_eqn (const unsigned &n) const
 Return the equation number of the n-th edge (flux) degree of freedom. More...
 
int q_internal_local_eqn (const unsigned &n) const
 
unsigned q_internal_index () const
 
unsigned q_edge_index (const unsigned &n) const
 Return the nodal index at which the nth edge unknown is stored. More...
 
unsigned q_edge_node_number (const unsigned &n) const
 Return the number of the node where the nth edge unknown is stored. More...
 
double q_edge (const unsigned &n) const
 Return the values of the edge (flux) degrees of freedom. More...
 
double q_edge (const unsigned &t, const unsigned &n) const
 
double q_internal (const unsigned &n) const
 Return the values of the internal (moment) degrees of freedom. More...
 
double q_internal (const unsigned &t, const unsigned &n) const
 
unsigned nq_basis () const
 Return the total number of computational basis functions for u. More...
 
unsigned nq_basis_edge () const
 Return the number of edge basis functions for u. More...
 
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. More...
 
void get_div_q_basis_local (const Vector< double > &s, Shape &div_q_basis_ds) const
 
unsigned nedge_gauss_point () const
 Returns the number of gauss points along each edge of the element. More...
 
double edge_gauss_point (const unsigned &edge, const unsigned &n) const
 
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. More...
 
void pin_q_internal_value (const unsigned &n)
 Pin the nth internal q value. More...
 
int p_local_eqn (const unsigned &n) const
 Return the equation number of the n-th pressure degree of freedom. More...
 
double p_value (unsigned &n) const
 Return the nth pressure value. More...
 
unsigned np_basis () const
 Return the total number of pressure basis functions. More...
 
void get_p_basis (const Vector< double > &s, Shape &p_basis) const
 Return the pressure basis. More...
 
void pin_p_value (const unsigned &n, const double &p)
 Pin the nth pressure value. More...
 
void scale_basis (Shape &basis) const
 Scale the edge basis to allow arbitrary edge mappings. More...
 
const short & sign_edge (const unsigned &n) const
 Accessor for the unit normal sign of edge n (const version) More...
 
short & sign_edge (const unsigned &n)
 Accessor for the unit normal sign of edge n. More...
 
void output (std::ostream &outfile)
 Output with default number of plot points. More...
 
void output (std::ostream &outfile, const unsigned &Nplot)
 
 TPoroelasticityElement ()
 Lowest-order Raviart-Thomas based Darcy equation element. More...
 
 ~TPoroelasticityElement ()
 Destructor. More...
 
unsigned nq_basis () const
 Return the total number of computational basis functions for u. More...
 
unsigned nq_basis_edge () const
 Return the number of edge basis functions for u. More...
 
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. More...
 
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. More...
 
unsigned nedge_gauss_point () const
 Returns the number of gauss points along each edge of the element. More...
 
unsigned np_basis () const
 Return the total number of pressure basis functions. More...
 
void get_p_basis (const Vector< double > &s, Shape &p_basis) const
 Return the pressure basis. More...
 
 TPoroelasticityElement ()
 Second-order Raviart-Thomas based Darcy equation element. More...
 
 ~TPoroelasticityElement ()
 Destructor. More...
 
unsigned nq_basis () const
 Return the total number of computational basis functions for u. More...
 
unsigned nq_basis_edge () const
 Return the number of edge basis functions for u. More...
 
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. More...
 
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. More...
 
unsigned nedge_gauss_point () const
 Returns the number of gauss points along each edge of the element. More...
 
unsigned np_basis () const
 Return the total number of pressure basis functions. More...
 
void get_p_basis (const Vector< double > &s, Shape &p_basis) const
 Return the pressure basis. More...
 
- Public Member Functions inherited from oomph::TElement< 2, 3 >
const unsigned Node_on_face [3][2]
 Assign the nodal translation schemes. More...
 
const unsigned Node_on_face [3][3]
 
const unsigned Node_on_face [3][4]
 
const unsigned Node_on_face [4][3]
 Assign the nodal translation scheme for linear elements. More...
 
const unsigned Node_on_face [4][6]
 Assign the nodal translation scheme for quadratic elements. More...
 
- Public Member Functions inherited from oomph::PoroelasticityEquations< 2 >
 PoroelasticityEquations ()
 Constructor. More...
 
const doublelambda_sq () const
 Access function for timescale ratio (nondim density) More...
 
double *& lambda_sq_pt ()
 Access function for pointer to timescale ratio (nondim density) More...
 
const doubledensity_ratio () const
 Access function for the density ratio. More...
 
double *& density_ratio_pt ()
 Access function for pointer to the density ratio. More...
 
const doublek_inv () const
 Access function for the nondim inverse permeability. More...
 
double *& k_inv_pt ()
 Access function for pointer to the nondim inverse permeability. More...
 
const doublealpha () const
 Access function for alpha. More...
 
double *& alpha_pt ()
 Access function for pointer to alpha. More...
 
const doubleporosity () const
 Access function for the porosity. More...
 
double *& porosity_pt ()
 Access function for pointer to the porosity. More...
 
SourceFctPtforce_solid_fct_pt ()
 Access function: Pointer to solid force function. More...
 
SourceFctPt force_solid_fct_pt () const
 Access function: Pointer to solid force function (const version) More...
 
SourceFctPtforce_fluid_fct_pt ()
 Access function: Pointer to fluid force function. More...
 
SourceFctPt force_fluid_fct_pt () const
 Access function: Pointer to fluid force function (const version) More...
 
MassSourceFctPtmass_source_fct_pt ()
 Access function: Pointer to mass source function. More...
 
MassSourceFctPt mass_source_fct_pt () const
 Access function: Pointer to mass source function (const version) More...
 
void force_solid (const double &time, const Vector< double > &x, Vector< double > &b) const
 
void force_fluid (const double &time, const Vector< double > &x, Vector< double > &b) const
 
void mass_source (const double &time, const Vector< double > &x, double &b) const
 
ElasticityTensor *& elasticity_tensor_pt ()
 Return the pointer to the elasticity_tensor. More...
 
const double E (const unsigned &i, const unsigned &j, const unsigned &k, const unsigned &l) const
 Access function to the entries in the elasticity tensor. More...
 
void get_stress (const Vector< double > &s, DenseMatrix< double > &sigma) const
 
void get_strain (const Vector< double > &s, DenseMatrix< double > &strain) const
 Return the strain tensor. More...
 
void get_q_basis (const Vector< double > &s, Shape &q_basis) const
 Returns the transformed basis at local coordinate s. More...
 
double transform_basis (const Vector< double > &s, const Shape &q_basis_local, Shape &psi, DShape &dpsi, Shape &q_basis) const
 
double transform_basis (const Vector< double > &s, const Shape &q_basis_local, Shape &psi, Shape &q_basis) const
 
void fill_in_contribution_to_residuals (Vector< double > &residuals)
 Fill in contribution to residuals for the Darcy equations. More...
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 Fill in the Jacobian matrix for the Newton method. More...
 
void interpolated_u (const Vector< double > &s, Vector< double > &disp) const
 Calculate the FE representation of u. More...
 
double interpolated_u (const Vector< double > &s, const unsigned &i) const
 Calculate the FE representation of the i-th component of u. More...
 
void interpolated_q (const Vector< double > &s, Vector< double > &u) const
 Calculate the FE representation of q. More...
 
double interpolated_q (const Vector< double > &s, const unsigned i) const
 Calculate the FE representation of the i-th component of q. More...
 
void interpolated_div_q (const Vector< double > &s, double &div_q) const
 Calculate the FE representation of div u. More...
 
double interpolated_div_q (const Vector< double > &s)
 Calculate the FE representation of div q and return it. More...
 
void interpolated_p (const Vector< double > &s, double &p) const
 Calculate the FE representation of p. More...
 
double interpolated_p (const Vector< double > &s) const
 Calculate the FE representation of p and return it. More...
 
double du_dt (const unsigned &n, const unsigned &i) const
 du/dt at local node n More...
 
double d2u_dt2 (const unsigned &n, const unsigned &i) const
 d^2u/dt^2 at local node n More...
 
double dq_edge_dt (const unsigned &n) const
 dq_edge/dt for the n-th edge degree of freedom More...
 
double dq_internal_dt (const unsigned &n) const
 dq_internal/dt for the n-th internal degree of freedom More...
 
void set_q_internal_timestepper (TimeStepper *const time_stepper_pt)
 Set the timestepper of the q internal data object. More...
 
unsigned self_test ()
 
void output (std::ostream &outfile)
 Output with default number of plot points. More...
 
void output (std::ostream &outfile, const unsigned &nplot)
 
void output_fct (std::ostream &outfile, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
 
void output_fct (std::ostream &outfile, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
 
void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
- Public Member Functions inherited from oomph::FiniteElement
void set_dimension (const unsigned &dim)
 
void set_nodal_dimension (const unsigned &nodal_dim)
 
void set_nnodal_position_type (const unsigned &nposition_type)
 Set the number of types required to interpolate the coordinate. More...
 
void set_n_node (const unsigned &n)
 
int nodal_local_eqn (const unsigned &n, const unsigned &i) const
 
double dJ_eulerian_at_knot (const unsigned &ipt, Shape &psi, DenseMatrix< double > &djacobian_dX) const
 
 FiniteElement ()
 Constructor. More...
 
virtual ~FiniteElement ()
 
 FiniteElement (const FiniteElement &)=delete
 Broken copy constructor. More...
 
virtual bool local_coord_is_valid (const Vector< double > &s)
 Broken assignment operator. More...
 
virtual void move_local_coord_back_into_element (Vector< double > &s) const
 
void get_centre_of_gravity_and_max_radius_in_terms_of_zeta (Vector< double > &cog, double &max_radius) const
 
virtual void local_coordinate_of_node (const unsigned &j, Vector< double > &s) const
 
virtual void local_fraction_of_node (const unsigned &j, Vector< double > &s_fraction)
 
virtual double local_one_d_fraction_of_node (const unsigned &n1d, const unsigned &i)
 
virtual void set_macro_elem_pt (MacroElement *macro_elem_pt)
 
MacroElementmacro_elem_pt ()
 Access function to pointer to macro element. More...
 
void get_x (const Vector< double > &s, Vector< double > &x) const
 
void get_x (const unsigned &t, const Vector< double > &s, Vector< double > &x)
 
virtual void get_x_from_macro_element (const Vector< double > &s, Vector< double > &x) const
 
virtual void get_x_from_macro_element (const unsigned &t, const Vector< double > &s, Vector< double > &x)
 
virtual void set_integration_scheme (Integral *const &integral_pt)
 Set the spatial integration scheme. More...
 
Integral *const & integral_pt () const
 Return the pointer to the integration scheme (const version) More...
 
virtual void shape (const Vector< double > &s, Shape &psi) const =0
 
virtual void shape_at_knot (const unsigned &ipt, Shape &psi) const
 
virtual void dshape_local (const Vector< double > &s, Shape &psi, DShape &dpsids) const
 
virtual void dshape_local_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsids) const
 
virtual void d2shape_local (const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
 
virtual void d2shape_local_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids) const
 
virtual double J_eulerian (const Vector< double > &s) const
 
virtual double J_eulerian_at_knot (const unsigned &ipt) const
 
void check_J_eulerian_at_knots (bool &passed) const
 
void check_jacobian (const double &jacobian) const
 
double dshape_eulerian (const Vector< double > &s, Shape &psi, DShape &dpsidx) const
 
virtual double dshape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidx) const
 
virtual double dshape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsi, DenseMatrix< double > &djacobian_dX, RankFourTensor< double > &d_dpsidx_dX) const
 
double d2shape_eulerian (const Vector< double > &s, Shape &psi, DShape &dpsidx, DShape &d2psidx) const
 
virtual double d2shape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidx, DShape &d2psidx) const
 
virtual void assign_nodal_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void describe_local_dofs (std::ostream &out, const std::string &current_string) const
 
virtual void describe_nodal_local_dofs (std::ostream &out, const std::string &current_string) const
 
virtual void assign_all_generic_local_eqn_numbers (const bool &store_local_dof_pt)
 
Node *& node_pt (const unsigned &n)
 Return a pointer to the local node n. More...
 
Node *const & node_pt (const unsigned &n) const
 Return a pointer to the local node n (const version) More...
 
unsigned nnode () const
 Return the number of nodes. More...
 
virtual unsigned nnode_1d () const
 
double raw_nodal_position (const unsigned &n, const unsigned &i) const
 
double raw_nodal_position (const unsigned &t, const unsigned &n, const unsigned &i) const
 
double raw_dnodal_position_dt (const unsigned &n, const unsigned &i) const
 
double raw_dnodal_position_dt (const unsigned &n, const unsigned &j, const unsigned &i) const
 
double raw_nodal_position_gen (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double raw_nodal_position_gen (const unsigned &t, const unsigned &n, const unsigned &k, const unsigned &i) const
 
double raw_dnodal_position_gen_dt (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double raw_dnodal_position_gen_dt (const unsigned &j, const unsigned &n, const unsigned &k, const unsigned &i) const
 
double nodal_position (const unsigned &n, const unsigned &i) const
 
double nodal_position (const unsigned &t, const unsigned &n, const unsigned &i) const
 
double dnodal_position_dt (const unsigned &n, const unsigned &i) const
 Return the i-th component of nodal velocity: dx/dt at local node n. More...
 
double dnodal_position_dt (const unsigned &n, const unsigned &j, const unsigned &i) const
 
double nodal_position_gen (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double nodal_position_gen (const unsigned &t, const unsigned &n, const unsigned &k, const unsigned &i) const
 
double dnodal_position_gen_dt (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double dnodal_position_gen_dt (const unsigned &j, const unsigned &n, const unsigned &k, const unsigned &i) const
 
virtual void get_dresidual_dnodal_coordinates (RankThreeTensor< double > &dresidual_dnodal_coordinates)
 
virtual void disable_ALE ()
 
virtual void enable_ALE ()
 
unsigned nnodal_position_type () const
 
bool has_hanging_nodes () const
 
unsigned nodal_dimension () const
 Return the required Eulerian dimension of the nodes in this element. More...
 
virtual unsigned nvertex_node () const
 
virtual Nodevertex_node_pt (const unsigned &j) const
 
virtual Nodeconstruct_node (const unsigned &n)
 
virtual Nodeconstruct_node (const unsigned &n, TimeStepper *const &time_stepper_pt)
 
virtual Nodeconstruct_boundary_node (const unsigned &n)
 
virtual Nodeconstruct_boundary_node (const unsigned &n, TimeStepper *const &time_stepper_pt)
 
int get_node_number (Node *const &node_pt) const
 
virtual Nodeget_node_at_local_coordinate (const Vector< double > &s) const
 
double raw_nodal_value (const unsigned &n, const unsigned &i) const
 
double raw_nodal_value (const unsigned &t, const unsigned &n, const unsigned &i) const
 
double nodal_value (const unsigned &n, const unsigned &i) const
 
double nodal_value (const unsigned &t, const unsigned &n, const unsigned &i) const
 
unsigned dim () const
 
virtual ElementGeometry::ElementGeometry element_geometry () const
 Return the geometry type of the element (either Q or T usually). More...
 
virtual double interpolated_x (const Vector< double > &s, const unsigned &i) const
 Return FE interpolated coordinate x[i] at local coordinate s. More...
 
virtual double interpolated_x (const unsigned &t, const Vector< double > &s, const unsigned &i) const
 
virtual void interpolated_x (const Vector< double > &s, Vector< double > &x) const
 Return FE interpolated position x[] at local coordinate s as Vector. More...
 
virtual void interpolated_x (const unsigned &t, const Vector< double > &s, Vector< double > &x) const
 
virtual double interpolated_dxdt (const Vector< double > &s, const unsigned &i, const unsigned &t)
 
virtual void interpolated_dxdt (const Vector< double > &s, const unsigned &t, Vector< double > &dxdt)
 
unsigned ngeom_data () const
 
Datageom_data_pt (const unsigned &j)
 
void position (const Vector< double > &zeta, Vector< double > &r) const
 
void position (const unsigned &t, const Vector< double > &zeta, Vector< double > &r) const
 
void dposition_dt (const Vector< double > &zeta, const unsigned &t, Vector< double > &drdt)
 
virtual double zeta_nodal (const unsigned &n, const unsigned &k, const unsigned &i) const
 
void interpolated_zeta (const Vector< double > &s, Vector< double > &zeta) const
 
void locate_zeta (const Vector< double > &zeta, GeomObject *&geom_object_pt, Vector< double > &s, const bool &use_coordinate_as_initial_guess=false)
 
virtual void node_update ()
 
virtual void identify_field_data_for_interactions (std::set< std::pair< Data *, unsigned >> &paired_field_data)
 
virtual void identify_geometric_data (std::set< Data * > &geometric_data_pt)
 
virtual double s_min () const
 Min value of local coordinate. More...
 
virtual double s_max () const
 Max. value of local coordinate. More...
 
double size () const
 
virtual double compute_physical_size () const
 
virtual void point_output_data (const Vector< double > &s, Vector< double > &data)
 
void point_output (std::ostream &outfile, const Vector< double > &s)
 
virtual unsigned nplot_points_paraview (const unsigned &nplot) const
 
virtual unsigned nsub_elements_paraview (const unsigned &nplot) const
 
void output_paraview (std::ofstream &file_out, const unsigned &nplot) const
 
virtual void write_paraview_output_offset_information (std::ofstream &file_out, const unsigned &nplot, unsigned &counter) const
 
virtual void write_paraview_type (std::ofstream &file_out, const unsigned &nplot) const
 
virtual void write_paraview_offsets (std::ofstream &file_out, const unsigned &nplot, unsigned &offset_sum) const
 
virtual unsigned nscalar_paraview () const
 
virtual void scalar_value_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot) const
 
virtual void scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const
 
virtual void scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
 
virtual std::string scalar_name_paraview (const unsigned &i) const
 
virtual void output (const unsigned &t, std::ostream &outfile, const unsigned &n_plot) const
 
virtual void output (FILE *file_pt)
 
virtual void output (FILE *file_pt, const unsigned &n_plot)
 
virtual void output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, const SolutionFunctorBase &exact_soln) const
 Output a time-dependent exact solution over the element. More...
 
virtual void get_s_plot (const unsigned &i, const unsigned &nplot, Vector< double > &s, const bool &shifted_to_interior=false) const
 
virtual std::string tecplot_zone_string (const unsigned &nplot) const
 
virtual void write_tecplot_zone_footer (std::ostream &outfile, const unsigned &nplot) const
 
virtual void write_tecplot_zone_footer (FILE *file_pt, const unsigned &nplot) const
 
virtual unsigned nplot_points (const unsigned &nplot) const
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 Calculate the norm of the error and that of the exact solution. More...
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 Calculate the norm of the error and that of the exact solution. More...
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
virtual void compute_abs_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error)
 
void integrate_fct (FiniteElement::SteadyExactSolutionFctPt integrand_fct_pt, Vector< double > &integral)
 Integrate Vector-valued function over element. More...
 
void integrate_fct (FiniteElement::UnsteadyExactSolutionFctPt integrand_fct_pt, const double &time, Vector< double > &integral)
 Integrate Vector-valued time-dep function over element. More...
 
virtual void build_face_element (const int &face_index, FaceElement *face_element_pt)
 
virtual unsigned get_bulk_node_number (const int &face_index, const unsigned &i) const
 
virtual int face_outer_unit_normal_sign (const int &face_index) const
 Get the sign of the outer unit normal on the face given by face_index. More...
 
virtual unsigned nnode_on_face () const
 
void face_node_number_error_check (const unsigned &i) const
 Range check for face node numbers. More...
 
virtual CoordinateMappingFctPt face_to_bulk_coordinate_fct_pt (const int &face_index) const
 
virtual BulkCoordinateDerivativesFctPt bulk_coordinate_derivatives_fct_pt (const int &face_index) const
 
- Public Member Functions inherited from oomph::GeneralisedElement
 GeneralisedElement ()
 Constructor: Initialise all pointers and all values to zero. More...
 
virtual ~GeneralisedElement ()
 Virtual destructor to clean up any memory allocated by the object. More...
 
 GeneralisedElement (const GeneralisedElement &)=delete
 Broken copy constructor. More...
 
void operator= (const GeneralisedElement &)=delete
 Broken assignment operator. More...
 
Data *& internal_data_pt (const unsigned &i)
 Return a pointer to i-th internal data object. More...
 
Data *const & internal_data_pt (const unsigned &i) const
 Return a pointer to i-th internal data object (const version) More...
 
Data *& external_data_pt (const unsigned &i)
 Return a pointer to i-th external data object. More...
 
Data *const & external_data_pt (const unsigned &i) const
 Return a pointer to i-th external data object (const version) More...
 
unsigned long eqn_number (const unsigned &ieqn_local) const
 
int local_eqn_number (const unsigned long &ieqn_global) const
 
unsigned add_external_data (Data *const &data_pt, const bool &fd=true)
 
bool external_data_fd (const unsigned &i) const
 
void exclude_external_data_fd (const unsigned &i)
 
void include_external_data_fd (const unsigned &i)
 
void flush_external_data ()
 Flush all external data. More...
 
void flush_external_data (Data *const &data_pt)
 Flush the object addressed by data_pt from the external data array. More...
 
unsigned ninternal_data () const
 Return the number of internal data objects. More...
 
unsigned nexternal_data () const
 Return the number of external data objects. More...
 
unsigned ndof () const
 Return the number of equations/dofs in the element. More...
 
void dof_vector (const unsigned &t, Vector< double > &dof)
 Return the vector of dof values at time level t. More...
 
void dof_pt_vector (Vector< double * > &dof_pt)
 Return the vector of pointers to dof values. More...
 
void set_internal_data_time_stepper (const unsigned &i, TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
void assign_internal_eqn_numbers (unsigned long &global_number, Vector< double * > &Dof_pt)
 
void describe_dofs (std::ostream &out, const std::string &current_string) const
 
void add_internal_value_pt_to_map (std::map< unsigned, double * > &map_of_value_pt)
 
virtual void assign_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void complete_setup_of_dependencies ()
 
virtual void get_residuals (Vector< double > &residuals)
 
virtual void get_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
virtual void get_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix)
 
virtual void get_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
virtual void get_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
virtual void get_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
virtual void get_djacobian_and_dmass_matrix_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam)
 
virtual void get_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
virtual void get_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product)
 
virtual void get_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector)
 
virtual void compute_norm (Vector< double > &norm)
 
virtual void compute_norm (double &norm)
 
virtual unsigned ndof_types () const
 
virtual void get_dof_numbers_for_unknowns (std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
 
- Public Member Functions inherited from oomph::GeomObject
 GeomObject ()
 Default constructor. More...
 
 GeomObject (const unsigned &ndim)
 
 GeomObject (const unsigned &nlagrangian, const unsigned &ndim)
 
 GeomObject (const unsigned &nlagrangian, const unsigned &ndim, TimeStepper *time_stepper_pt)
 
 GeomObject (const GeomObject &dummy)=delete
 Broken copy constructor. More...
 
void operator= (const GeomObject &)=delete
 Broken assignment operator. More...
 
virtual ~GeomObject ()
 (Empty) destructor More...
 
unsigned nlagrangian () const
 Access function to # of Lagrangian coordinates. More...
 
unsigned ndim () const
 Access function to # of Eulerian coordinates. More...
 
void set_nlagrangian_and_ndim (const unsigned &n_lagrangian, const unsigned &n_dim)
 Set # of Lagrangian and Eulerian coordinates. More...
 
TimeStepper *& time_stepper_pt ()
 
TimeSteppertime_stepper_pt () const
 
virtual void position (const double &t, const Vector< double > &zeta, Vector< double > &r) const
 
virtual void dposition (const Vector< double > &zeta, DenseMatrix< double > &drdzeta) const
 
virtual void d2position (const Vector< double > &zeta, RankThreeTensor< double > &ddrdzeta) const
 
virtual void d2position (const Vector< double > &zeta, Vector< double > &r, DenseMatrix< double > &drdzeta, RankThreeTensor< double > &ddrdzeta) const
 

Protected Member Functions

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
 
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
 
- Protected Member Functions inherited from oomph::PoroelasticityEquations< 2 >
virtual void fill_in_generic_residual_contribution (Vector< double > &residuals, DenseMatrix< double > &jacobian, bool flag)
 Fill in residuals and, if flag==true, jacobian. More...
 
- Protected Member Functions inherited from oomph::FiniteElement
virtual void assemble_local_to_eulerian_jacobian (const DShape &dpsids, DenseMatrix< double > &jacobian) const
 
virtual void assemble_local_to_eulerian_jacobian2 (const DShape &d2psids, DenseMatrix< double > &jacobian2) const
 
virtual void assemble_eulerian_base_vectors (const DShape &dpsids, DenseMatrix< double > &interpolated_G) const
 
template<unsigned DIM>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
virtual double invert_jacobian_mapping (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
virtual double local_to_eulerian_mapping (const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
double local_to_eulerian_mapping (const DShape &dpsids, DenseMatrix< double > &inverse_jacobian) const
 
virtual double local_to_eulerian_mapping_diagonal (const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
virtual void dJ_eulerian_dnodal_coordinates (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<unsigned DIM>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
virtual void d_dshape_eulerian_dnodal_coordinates (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<unsigned DIM>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
virtual void transform_derivatives (const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const
 
void transform_derivatives_diagonal (const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const
 
virtual void transform_second_derivatives (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<unsigned DIM>
void transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<unsigned DIM>
void transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
virtual void fill_in_jacobian_from_nodal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void fill_in_jacobian_from_nodal_by_fd (DenseMatrix< double > &jacobian)
 
virtual void update_before_nodal_fd ()
 
virtual void reset_after_nodal_fd ()
 
virtual void update_in_nodal_fd (const unsigned &i)
 
virtual void reset_in_nodal_fd (const unsigned &i)
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 Zero-d specialisation of function to calculate inverse of jacobian mapping. More...
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 One-d specialisation of function to calculate inverse of jacobian mapping. More...
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 Two-d specialisation of function to calculate inverse of jacobian mapping. More...
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<>
void transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<>
void transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<>
void transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
- Protected Member Functions inherited from oomph::GeneralisedElement
unsigned add_internal_data (Data *const &data_pt, const bool &fd=true)
 
bool internal_data_fd (const unsigned &i) const
 
void exclude_internal_data_fd (const unsigned &i)
 
void include_internal_data_fd (const unsigned &i)
 
void clear_global_eqn_numbers ()
 
void add_global_eqn_numbers (std::deque< unsigned long > const &global_eqn_numbers, std::deque< double * > const &global_dof_pt)
 
virtual void assign_internal_and_external_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void assign_additional_local_eqn_numbers ()
 
int internal_local_eqn (const unsigned &i, const unsigned &j) const
 
int external_local_eqn (const unsigned &i, const unsigned &j)
 
void fill_in_jacobian_from_internal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_internal_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_external_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_external_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
virtual void update_before_internal_fd ()
 
virtual void reset_after_internal_fd ()
 
virtual void update_in_internal_fd (const unsigned &i)
 
virtual void reset_in_internal_fd (const unsigned &i)
 
virtual void update_before_external_fd ()
 
virtual void reset_after_external_fd ()
 
virtual void update_in_external_fd (const unsigned &i)
 
virtual void reset_in_external_fd (const unsigned &i)
 
virtual void fill_in_contribution_to_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix)
 
virtual void fill_in_contribution_to_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
virtual void fill_in_contribution_to_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
virtual void fill_in_contribution_to_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
virtual void fill_in_contribution_to_djacobian_and_dmass_matrix_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam)
 
virtual void fill_in_contribution_to_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
virtual void fill_in_contribution_to_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product)
 
virtual void fill_in_contribution_to_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector)
 

Private Member Functions

const unsigned Initial_Nvalue [6]
 The number of values stored at each node. More...
 
const unsigned Q_edge_conv [3]
 
const double Gauss_point [1]
 The points along each edge where the fluxes are taken to be. More...
 
const unsigned Initial_Nvalue [6]
 The number of values stored at each node. More...
 
const unsigned Q_edge_conv [3]
 
const double Gauss_point [2]
 The points along each edge where the fluxes are taken to be. More...
 

Private Attributes

unsigned Q_internal_data_index
 
unsigned P_internal_data_index
 The internal data index where the p degrees of freedom are stored. More...
 
std::vector< short > Sign_edge
 

Static Private Attributes

static const unsigned Initial_Nvalue []
 The number of values stored at each node. More...
 
static const unsigned Q_edge_conv []
 
static const double Gauss_point []
 The points along each edge where the fluxes are taken to be. More...
 

Additional Inherited Members

- Public Types inherited from oomph::PoroelasticityEquations< 2 >
typedef void(* SourceFctPt) (const double &time, const Vector< double > &x, Vector< double > &f)
 Source function pointer typedef. More...
 
typedef void(* MassSourceFctPt) (const double &time, const Vector< double > &x, double &f)
 Mass source function pointer typedef. More...
 
- Public Types inherited from oomph::FiniteElement
typedef void(* SteadyExactSolutionFctPt) (const Vector< double > &, Vector< double > &)
 
typedef void(* UnsteadyExactSolutionFctPt) (const double &, const Vector< double > &, Vector< double > &)
 
- Static Public Attributes inherited from oomph::FiniteElement
static double Tolerance_for_singular_jacobian = 1.0e-16
 Tolerance below which the jacobian is considered singular. More...
 
static bool Accept_negative_jacobian = false
 
static bool Suppress_output_while_checking_for_inverted_elements
 
- Static Public Attributes inherited from oomph::GeneralisedElement
static bool Suppress_warning_about_repeated_internal_data
 
static bool Suppress_warning_about_repeated_external_data = true
 
static double Default_fd_jacobian_step = 1.0e-8
 
- Protected Attributes inherited from oomph::PoroelasticityEquations< 2 >
ElasticityTensorElasticity_tensor_pt
 Pointer to the elasticity tensor. More...
 
- Protected Attributes inherited from oomph::FiniteElement
MacroElementMacro_elem_pt
 Pointer to the element's macro element (NULL by default) More...
 
- Protected Attributes inherited from oomph::GeomObject
unsigned NLagrangian
 Number of Lagrangian (intrinsic) coordinates. More...
 
unsigned Ndim
 Number of Eulerian coordinates. More...
 
TimeStepperGeom_object_time_stepper_pt
 
- Static Protected Attributes inherited from oomph::FiniteElement
static const unsigned Default_Initial_Nvalue = 0
 Default value for the number of values at a node. More...
 
static const double Node_location_tolerance = 1.0e-14
 
static const unsigned N2deriv [] = {0, 1, 3, 6}
 
- Static Protected Attributes inherited from oomph::GeneralisedElement
static DenseMatrix< doubleDummy_matrix
 
static std::deque< double * > Dof_pt_deque
 

Detailed Description

template<unsigned ORDER>
class oomph::TPoroelasticityElement< ORDER >

Element which solves the Darcy equations using TElements.

Constructor & Destructor Documentation

◆ TPoroelasticityElement() [1/3]

template<unsigned ORDER>
oomph::TPoroelasticityElement< ORDER >::TPoroelasticityElement ( )

Constructor.

◆ ~TPoroelasticityElement() [1/3]

template<unsigned ORDER>
oomph::TPoroelasticityElement< ORDER >::~TPoroelasticityElement ( )

Destructor.

◆ TPoroelasticityElement() [2/3]

Lowest-order Raviart-Thomas based Darcy equation element.

Constructor. Order 0 elements have 1 pressure dof and no internal velocity dofs

36  : TElement<2, 3>(), PoroelasticityEquations<2>(), Sign_edge(3, 1)
37  {
38  P_internal_data_index = this->add_internal_data(new Data(1));
39  }
unsigned add_internal_data(Data *const &data_pt, const bool &fd=true)
Definition: elements.cc:62
std::vector< short > Sign_edge
Definition: Tporoelasticity_elements.h:64
unsigned P_internal_data_index
The internal data index where the p degrees of freedom are stored.
Definition: Tporoelasticity_elements.h:60

References oomph::GeneralisedElement::add_internal_data(), and oomph::TPoroelasticityElement< ORDER >::P_internal_data_index.

◆ ~TPoroelasticityElement() [2/3]

Destructor.

44  {
45  }

◆ TPoroelasticityElement() [3/3]

Second-order Raviart-Thomas based Darcy equation element.

Constructor. Order 1 elements have 3 pressure dofs and 2 internal velocity dofs

134  : TElement<2, 3>(), PoroelasticityEquations<2>(), Sign_edge(3, 1)
135  {
136  // RT_1 elements have 2 internal degrees of freedom for u, and 3 for p
137  Q_internal_data_index = this->add_internal_data(new Data(2));
138  P_internal_data_index = this->add_internal_data(new Data(3));
139  }
unsigned Q_internal_data_index
Definition: Tporoelasticity_elements.h:57

References oomph::GeneralisedElement::add_internal_data(), oomph::TPoroelasticityElement< ORDER >::P_internal_data_index, and oomph::TPoroelasticityElement< ORDER >::Q_internal_data_index.

◆ ~TPoroelasticityElement() [3/3]

Destructor.

144  {
145  }

Member Function Documentation

◆ edge_gauss_point()

template<unsigned ORDER>
double oomph::TPoroelasticityElement< ORDER >::edge_gauss_point ( const unsigned edge,
const unsigned n 
) const
inlinevirtual

Returns the nth gauss point along an edge: if sign_edge(edge)==1, returns regular gauss point; if sign_edge(edge)==-1, returns 1-(gauss point)

Implements oomph::PoroelasticityEquations< 2 >.

263  {
264 #ifdef RANGE_CHECKING
265  if (edge >= 3)
266  {
267  std::ostringstream error_message;
268  error_message << "Range Error: edge " << edge
269  << " is not in the range (0,2)";
270  throw OomphLibError(error_message.str(),
273  }
274  if (n >= nedge_gauss_point())
275  {
276  std::ostringstream error_message;
277  error_message << "Range Error: n " << n << " is not in the range (0,"
278  << nedge_gauss_point() - 1 << ")";
279  throw OomphLibError(error_message.str(),
282  }
283 #endif
284  return (1 - sign_edge(edge)) / 2.0 + sign_edge(edge) * Gauss_point[n];
285  }
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
unsigned nedge_gauss_point() const
Returns the number of gauss points along each edge of the element.
static const double Gauss_point[]
The points along each edge where the fluxes are taken to be.
Definition: Tporoelasticity_elements.h:53
const short & sign_edge(const unsigned &n) const
Accessor for the unit normal sign of edge n (const version)
Definition: Tporoelasticity_elements.h:463
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References oomph::TPoroelasticityElement< ORDER >::Gauss_point, n, oomph::TPoroelasticityElement< ORDER >::nedge_gauss_point(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::TPoroelasticityElement< ORDER >::sign_edge().

Referenced by oomph::TPoroelasticityElement< ORDER >::edge_gauss_point_global().

◆ edge_gauss_point_global()

template<unsigned ORDER>
void oomph::TPoroelasticityElement< ORDER >::edge_gauss_point_global ( const unsigned edge,
const unsigned n,
Vector< double > &  x 
) const
inlinevirtual

Returns the global coordinates of the nth gauss point along an edge.

Implements oomph::PoroelasticityEquations< 2 >.

291  {
292 #ifdef RANGE_CHECKING
293  if (edge >= 3)
294  {
295  std::ostringstream error_message;
296  error_message << "Range Error: edge " << edge
297  << " is not in the range (0,2)";
298  throw OomphLibError(error_message.str(),
301  }
302  if (n >= nedge_gauss_point())
303  {
304  std::ostringstream error_message;
305  error_message << "Range Error: n " << n << " is not in the range (0,"
306  << nedge_gauss_point() - 1 << ")";
307  throw OomphLibError(error_message.str(),
310  }
311 #endif
312 
313  // Get the location of the n-th gauss point along the edge in terms of the
314  // distance along the edge itself
315  double gauss_point = edge_gauss_point(edge, n);
316 
317  // Convert the edge number to the number of the mid-edge node along that
318  // edge
319  unsigned node_number = Q_edge_conv[edge];
320 
321  // Storage for the local coords of the gauss point
322  Vector<double> s_gauss(2, 0);
323 
324  // The edge basis functions are defined in a clockwise manner, so we have
325  // to effectively "flip" the coordinates along edges 0 and 1 to match this
326  switch (node_number)
327  {
328  case 3:
329  s_gauss[0] = 1 - gauss_point;
330  s_gauss[1] = gauss_point;
331  break;
332  case 4:
333  s_gauss[0] = 0;
334  s_gauss[1] = 1 - gauss_point;
335  break;
336  case 5:
337  s_gauss[0] = gauss_point;
338  s_gauss[1] = 0;
339  break;
340  }
341 
342  // Calculate the global coordinates from the local ones
343  interpolated_x(s_gauss, x);
344  }
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
double edge_gauss_point(const unsigned &edge, const unsigned &n) const
Definition: Tporoelasticity_elements.h:262
static const unsigned Q_edge_conv[]
Definition: Tporoelasticity_elements.h:50
list x
Definition: plotDoE.py:28

References oomph::TPoroelasticityElement< ORDER >::edge_gauss_point(), oomph::FiniteElement::interpolated_x(), n, oomph::TPoroelasticityElement< ORDER >::nedge_gauss_point(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::TPoroelasticityElement< ORDER >::Q_edge_conv, and plotDoE::x.

◆ Gauss_point() [1/2]

const double oomph::TPoroelasticityElement< 0 >::Gauss_point
private

The points along each edge where the fluxes are taken to be.

◆ Gauss_point() [2/2]

const double oomph::TPoroelasticityElement< 1 >::Gauss_point
private

The points along each edge where the fluxes are taken to be.

References sqrt().

◆ get_div_q_basis_local() [1/3]

void oomph::TPoroelasticityElement< 0 >::get_div_q_basis_local ( const Vector< double > &  s,
Shape div_q_basis_ds 
) const
virtual

Returns the local form of the q basis and dbasis/ds at local coordinate s.

Implements oomph::PoroelasticityEquations< 2 >.

81  {
82  div_q_basis_ds(0) = Sign_edge[0] * 2 * std::sqrt(2);
83  div_q_basis_ds(1) = Sign_edge[1] * 2;
84  div_q_basis_ds(2) = Sign_edge[2] * 2;
85 
86  // Scale the basis by the ratio of the length of the edge to the length of
87  // the corresponding edge on the reference element
88  scale_basis(div_q_basis_ds);
89  }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
void scale_basis(Shape &basis) const
Scale the edge basis to allow arbitrary edge mappings.
Definition: Tporoelasticity_elements.h:422

References sqrt().

◆ get_div_q_basis_local() [2/3]

void oomph::TPoroelasticityElement< 1 >::get_div_q_basis_local ( const Vector< double > &  s,
Shape div_q_basis_ds 
) const
virtual

Returns the local form of the q basis and dbasis/ds at local coordinate s.

Implements oomph::PoroelasticityEquations< 2 >.

209  {
210  double g1, g2;
211 
212  g1 = edge_gauss_point(0, 0);
213  g2 = edge_gauss_point(0, 1);
214  div_q_basis_ds(0) =
215  Sign_edge[0] * std::sqrt(2) * (3 * s[1] - 2 * g2) / (g1 - g2);
216  div_q_basis_ds(1) =
217  Sign_edge[0] * std::sqrt(2) * (2 * g1 - 3 * s[1]) / (g1 - g2);
218 
219  g1 = edge_gauss_point(1, 0);
220  g2 = edge_gauss_point(1, 1);
221  div_q_basis_ds(2) = Sign_edge[1] * (2 * g1 - 3 * s[1]) / (g1 - g2);
222  div_q_basis_ds(3) = Sign_edge[1] * (3 * s[1] - 2 * g2) / (g1 - g2);
223 
224  g1 = edge_gauss_point(2, 0);
225  g2 = edge_gauss_point(2, 1);
226  div_q_basis_ds(4) = Sign_edge[2] * (3 * s[0] - 2 * g2) / (g1 - g2);
227  div_q_basis_ds(5) = Sign_edge[2] * (2 * g1 - 3 * s[0]) / (g1 - g2);
228 
229  div_q_basis_ds(6) = 3 * s[1] - 1;
230  div_q_basis_ds(7) = 3 * s[0] - 1;
231 
232  // Scale the basis by the ratio of the length of the edge to the length of
233  // the corresponding edge on the reference element
234  scale_basis(div_q_basis_ds);
235  }
RealScalar s
Definition: level1_cplx_impl.h:130

References s, and sqrt().

◆ get_div_q_basis_local() [3/3]

template<unsigned ORDER>
void oomph::TPoroelasticityElement< ORDER >::get_div_q_basis_local ( const Vector< double > &  s,
Shape div_q_basis_ds 
) const
virtual

Returns the local form of the q basis and dbasis/ds at local coordinate s

Implements oomph::PoroelasticityEquations< 2 >.

Referenced by oomph::TPoroelasticityElement< ORDER >::shape_basis_test_local().

◆ get_p_basis() [1/3]

void oomph::TPoroelasticityElement< 0 >::get_p_basis ( const Vector< double > &  s,
Shape p_basis 
) const
virtual

Return the pressure basis.

Implements oomph::PoroelasticityEquations< 2 >.

109  {
110  p_basis(0) = 1.0;
111  }

◆ get_p_basis() [2/3]

void oomph::TPoroelasticityElement< 1 >::get_p_basis ( const Vector< double > &  s,
Shape p_basis 
) const
virtual

Return the pressure basis.

Implements oomph::PoroelasticityEquations< 2 >.

255  {
256  p_basis(0) = 1.0;
257  p_basis(1) = s[0];
258  p_basis(2) = s[1];
259  }

References s.

◆ get_p_basis() [3/3]

template<unsigned ORDER>
void oomph::TPoroelasticityElement< ORDER >::get_p_basis ( const Vector< double > &  s,
Shape p_basis 
) const
virtual

◆ get_q_basis_local() [1/3]

void oomph::TPoroelasticityElement< 0 >::get_q_basis_local ( const Vector< double > &  s,
Shape q_basis 
) const
virtual

Returns the local form of the q basis at local coordinate s.

Implements oomph::PoroelasticityEquations< 2 >.

65  {
66  // RT_0 basis functions
67  q_basis(0, 0) = Sign_edge[0] * std::sqrt(2) * s[0];
68  q_basis(0, 1) = Sign_edge[0] * std::sqrt(2) * s[1];
69 
70  q_basis(1, 0) = Sign_edge[1] * (s[0] - 1);
71  q_basis(1, 1) = Sign_edge[1] * s[1];
72 
73  q_basis(2, 0) = Sign_edge[2] * s[0];
74  q_basis(2, 1) = Sign_edge[2] * (s[1] - 1);
75  }

References s, and sqrt().

◆ get_q_basis_local() [2/3]

void oomph::TPoroelasticityElement< 1 >::get_q_basis_local ( const Vector< double > &  s,
Shape q_basis 
) const
virtual

Returns the local form of the q basis at local coordinate s.

Implements oomph::PoroelasticityEquations< 2 >.

165  {
166  // RT_1 basis functions
167 
168  double g1, g2;
169 
170  g1 = edge_gauss_point(0, 0);
171  g2 = edge_gauss_point(0, 1);
172  q_basis(0, 0) =
173  Sign_edge[0] * std::sqrt(2) * s[0] * (s[1] - g2) / (g1 - g2);
174  q_basis(0, 1) =
175  Sign_edge[0] * std::sqrt(2) * s[1] * (s[1] - g2) / (g1 - g2);
176 
177  q_basis(1, 0) =
178  Sign_edge[0] * std::sqrt(2) * s[0] * (s[1] - g1) / (g2 - g1);
179  q_basis(1, 1) =
180  Sign_edge[0] * std::sqrt(2) * s[1] * (s[1] - g1) / (g2 - g1);
181 
182  g1 = edge_gauss_point(1, 0);
183  g2 = edge_gauss_point(1, 1);
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);
186 
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);
189 
190  g1 = edge_gauss_point(2, 0);
191  g2 = edge_gauss_point(2, 1);
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);
194 
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);
197 
198  q_basis(6, 0) = s[1] * s[0];
199  q_basis(6, 1) = s[1] * (s[1] - 1);
200 
201  q_basis(7, 0) = s[0] * (s[0] - 1);
202  q_basis(7, 1) = s[0] * s[1];
203  }

References s, and sqrt().

◆ get_q_basis_local() [3/3]

template<unsigned ORDER>
void oomph::TPoroelasticityElement< ORDER >::get_q_basis_local ( const Vector< double > &  s,
Shape q_basis 
) const
virtual

Returns the local form of the q basis at local coordinate s.

Implements oomph::PoroelasticityEquations< 2 >.

Referenced by oomph::TPoroelasticityElement< ORDER >::shape_basis_test_local().

◆ Initial_Nvalue() [1/2]

const unsigned oomph::TPoroelasticityElement< 0 >::Initial_Nvalue
private

The number of values stored at each node.

◆ Initial_Nvalue() [2/2]

const unsigned oomph::TPoroelasticityElement< 1 >::Initial_Nvalue
private

The number of values stored at each node.

◆ nedge_gauss_point() [1/3]

unsigned oomph::TPoroelasticityElement< 0 >::nedge_gauss_point ( ) const
virtual

Returns the number of gauss points along each edge of the element.

Implements oomph::PoroelasticityEquations< 2 >.

94  {
95  return 1;
96  }

◆ nedge_gauss_point() [2/3]

unsigned oomph::TPoroelasticityElement< 1 >::nedge_gauss_point ( ) const
virtual

Returns the number of gauss points along each edge of the element.

Implements oomph::PoroelasticityEquations< 2 >.

240  {
241  return 2;
242  }

◆ nedge_gauss_point() [3/3]

template<unsigned ORDER>
unsigned oomph::TPoroelasticityElement< ORDER >::nedge_gauss_point ( ) const
virtual

◆ np_basis() [1/3]

unsigned oomph::TPoroelasticityElement< 0 >::np_basis ( ) const
virtual

Return the total number of pressure basis functions.

Implements oomph::PoroelasticityEquations< 2 >.

101  {
102  return 1;
103  }

◆ np_basis() [2/3]

unsigned oomph::TPoroelasticityElement< 1 >::np_basis ( ) const
virtual

Return the total number of pressure basis functions.

Implements oomph::PoroelasticityEquations< 2 >.

247  {
248  return 3;
249  }

◆ np_basis() [3/3]

template<unsigned ORDER>
unsigned oomph::TPoroelasticityElement< ORDER >::np_basis ( ) const
virtual

◆ nq_basis() [1/3]

unsigned oomph::TPoroelasticityElement< 0 >::nq_basis ( ) const
virtual

Return the total number of computational basis functions for u.

Implements oomph::PoroelasticityEquations< 2 >.

50  {
51  return 3;
52  }

◆ nq_basis() [2/3]

unsigned oomph::TPoroelasticityElement< 1 >::nq_basis ( ) const
virtual

Return the total number of computational basis functions for u.

Implements oomph::PoroelasticityEquations< 2 >.

150  {
151  return 8;
152  }

◆ nq_basis() [3/3]

◆ nq_basis_edge() [1/3]

unsigned oomph::TPoroelasticityElement< 0 >::nq_basis_edge ( ) const
virtual

Return the number of edge basis functions for u.

Implements oomph::PoroelasticityEquations< 2 >.

57  {
58  return 3;
59  }

◆ nq_basis_edge() [2/3]

unsigned oomph::TPoroelasticityElement< 1 >::nq_basis_edge ( ) const
virtual

Return the number of edge basis functions for u.

Implements oomph::PoroelasticityEquations< 2 >.

157  {
158  return 6;
159  }

◆ nq_basis_edge() [3/3]

◆ output() [1/2]

template<unsigned ORDER>
void oomph::TPoroelasticityElement< ORDER >::output ( std::ostream &  outfile)
inlinevirtual

Output with default number of plot points.

Reimplemented from oomph::FiniteElement.

476  {
478  }
void output(std::ostream &outfile)
Output with default number of plot points.
Definition: poroelasticity_elements.h:706

References oomph::PoroelasticityEquations< DIM >::output().

◆ output() [2/2]

template<unsigned ORDER>
void oomph::TPoroelasticityElement< ORDER >::output ( std::ostream &  outfile,
const unsigned Nplot 
)
inlinevirtual

Output FE representation of soln: x,y,u1,u2,div_q,p at Nplot^DIM plot points

Reimplemented from oomph::FiniteElement.

483  {
484  PoroelasticityEquations<2>::output(outfile, Nplot);
485  }

References oomph::PoroelasticityEquations< DIM >::output().

◆ p_local_eqn()

template<unsigned ORDER>
int oomph::TPoroelasticityElement< ORDER >::p_local_eqn ( const unsigned n) const
inlinevirtual

Return the equation number of the n-th pressure degree of freedom.

Implements oomph::PoroelasticityEquations< 2 >.

365  {
366 #ifdef RANGE_CHECKING
367  if (n >= np_basis())
368  {
369  std::ostringstream error_message;
370  error_message << "Range Error: n " << n << " is not in the range (0,"
371  << np_basis() - 1 << ")";
372  throw OomphLibError(error_message.str(),
375  }
376 #endif
377  return this->internal_local_eqn(P_internal_data_index, n);
378  }
int internal_local_eqn(const unsigned &i, const unsigned &j) const
Definition: elements.h:267
unsigned np_basis() const
Return the total number of pressure basis functions.

References oomph::GeneralisedElement::internal_local_eqn(), n, oomph::TPoroelasticityElement< ORDER >::np_basis(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ p_value()

template<unsigned ORDER>
double oomph::TPoroelasticityElement< ORDER >::p_value ( unsigned n) const
inlinevirtual

Return the nth pressure value.

Implements oomph::PoroelasticityEquations< 2 >.

382  {
383 #ifdef RANGE_CHECKING
384  if (n >= np_basis())
385  {
386  std::ostringstream error_message;
387  error_message << "Range Error: n " << n << " is not in the range (0,"
388  << np_basis() - 1 << ")";
389  throw OomphLibError(error_message.str(),
392  }
393 #endif
394  return this->internal_data_pt(P_internal_data_index)->value(n);
395  }
double value(const unsigned &i) const
Definition: nodes.h:293
Data *& internal_data_pt(const unsigned &i)
Return a pointer to i-th internal data object.
Definition: elements.h:622

References oomph::GeneralisedElement::internal_data_pt(), n, oomph::TPoroelasticityElement< ORDER >::np_basis(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Data::value().

◆ pin_p_value()

template<unsigned ORDER>
void oomph::TPoroelasticityElement< ORDER >::pin_p_value ( const unsigned n,
const double p 
)
inlinevirtual

Pin the nth pressure value.

Implements oomph::PoroelasticityEquations< 2 >.

405  {
406 #ifdef RANGE_CHECKING
407  if (n >= np_basis())
408  {
409  std::ostringstream error_message;
410  error_message << "Range Error: n " << n << " is not in the range (0,"
411  << np_basis() - 1 << ")";
412  throw OomphLibError(error_message.str(),
415  }
416 #endif
419  }
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

References oomph::GeneralisedElement::internal_data_pt(), n, oomph::TPoroelasticityElement< ORDER >::np_basis(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, p, oomph::Data::pin(), and oomph::Data::set_value().

◆ pin_q_internal_value()

template<unsigned ORDER>
void oomph::TPoroelasticityElement< ORDER >::pin_q_internal_value ( const unsigned n)
inlinevirtual

Pin the nth internal q value.

Implements oomph::PoroelasticityEquations< 2 >.

348  {
349 #ifdef RANGE_CHECKING
350  if (n >= (nq_basis() - nq_basis_edge()))
351  {
352  std::ostringstream error_message;
353  error_message << "Range Error: n " << n << " is not in the range (0,"
354  << (nq_basis() - nq_basis_edge()) - 1 << ")";
355  throw OomphLibError(error_message.str(),
358  }
359 #endif
361  }
unsigned q_internal_index() const
Definition: Tporoelasticity_elements.h:132
unsigned nq_basis_edge() const
Return the number of edge basis functions for u.
unsigned nq_basis() const
Return the total number of computational basis functions for u.

References oomph::GeneralisedElement::internal_data_pt(), n, oomph::TPoroelasticityElement< ORDER >::nq_basis(), oomph::TPoroelasticityElement< ORDER >::nq_basis_edge(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::Data::pin(), and oomph::TPoroelasticityElement< ORDER >::q_internal_index().

◆ q_edge() [1/2]

template<unsigned ORDER>
double oomph::TPoroelasticityElement< ORDER >::q_edge ( const unsigned n) const
inlinevirtual

Return the values of the edge (flux) degrees of freedom.

Implements oomph::PoroelasticityEquations< 2 >.

173  {
174 #ifdef RANGE_CHECKING
175  if (n >= (nq_basis_edge()))
176  {
177  std::ostringstream error_message;
178  error_message << "Range Error: n " << n << " is not in the range (0,"
179  << nq_basis_edge() - 1 << ")";
180  throw OomphLibError(error_message.str(),
183  }
184 #endif
186  }
double nodal_value(const unsigned &n, const unsigned &i) const
Definition: elements.h:2593
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
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

References n, oomph::FiniteElement::nodal_value(), oomph::TPoroelasticityElement< ORDER >::nq_basis_edge(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::TPoroelasticityElement< ORDER >::q_edge_index(), and oomph::TPoroelasticityElement< ORDER >::q_edge_node_number().

◆ q_edge() [2/2]

template<unsigned ORDER>
double oomph::TPoroelasticityElement< ORDER >::q_edge ( const unsigned t,
const unsigned n 
) const
inlinevirtual

Return the values of the edge (flux) degrees of freedom at time history level t

Implements oomph::PoroelasticityEquations< 2 >.

191  {
192 #ifdef RANGE_CHECKING
193  if (n >= (nq_basis_edge()))
194  {
195  std::ostringstream error_message;
196  error_message << "Range Error: n " << n << " is not in the range (0,"
197  << nq_basis_edge() - 1 << ")";
198  throw OomphLibError(error_message.str(),
201  }
202 #endif
204  }
t
Definition: plotPSD.py:36

References n, oomph::FiniteElement::nodal_value(), oomph::TPoroelasticityElement< ORDER >::nq_basis_edge(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::TPoroelasticityElement< ORDER >::q_edge_index(), oomph::TPoroelasticityElement< ORDER >::q_edge_node_number(), and plotPSD::t.

◆ Q_edge_conv() [1/2]

const unsigned oomph::TPoroelasticityElement< 0 >::Q_edge_conv
private

Conversion scheme from an edge degree of freedom to the node it's stored at

◆ Q_edge_conv() [2/2]

const unsigned oomph::TPoroelasticityElement< 1 >::Q_edge_conv
private

Conversion scheme from an edge degree of freedom to the node it's stored at

◆ q_edge_index()

template<unsigned ORDER>
unsigned oomph::TPoroelasticityElement< ORDER >::q_edge_index ( const unsigned n) const
inlinevirtual

Return the nodal index at which the nth edge unknown is stored.

Implements oomph::PoroelasticityEquations< 2 >.

139  {
140 #ifdef RANGE_CHECKING
141  if (n >= (nq_basis_edge()))
142  {
143  std::ostringstream error_message;
144  error_message << "Range Error: n " << n << " is not in the range (0,"
145  << nq_basis_edge() - 1 << ")";
146  throw OomphLibError(error_message.str(),
149  }
150 #endif
151  return n % (ORDER + 1) + 2;
152  }

References n, oomph::TPoroelasticityElement< ORDER >::nq_basis_edge(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::TPoroelasticityElement< ORDER >::q_edge(), and oomph::TPoroelasticityElement< ORDER >::q_edge_local_eqn().

◆ q_edge_local_eqn()

template<unsigned ORDER>
int oomph::TPoroelasticityElement< ORDER >::q_edge_local_eqn ( const unsigned n) const
inlinevirtual

Return the equation number of the n-th edge (flux) degree of freedom.

Implements oomph::PoroelasticityEquations< 2 >.

97  {
98 #ifdef RANGE_CHECKING
99  if (n >= nq_basis_edge())
100  {
101  std::ostringstream error_message;
102  error_message << "Range Error: n " << n << " is not in the range (0,"
103  << nq_basis_edge() - 1 << ")";
104  throw OomphLibError(error_message.str(),
107  }
108 #endif
110  }
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Definition: elements.h:1432

References n, oomph::FiniteElement::nodal_local_eqn(), oomph::TPoroelasticityElement< ORDER >::nq_basis_edge(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::TPoroelasticityElement< ORDER >::q_edge_index(), and oomph::TPoroelasticityElement< ORDER >::q_edge_node_number().

◆ q_edge_node_number()

template<unsigned ORDER>
unsigned oomph::TPoroelasticityElement< ORDER >::q_edge_node_number ( const unsigned n) const
inlinevirtual

Return the number of the node where the nth edge unknown is stored.

Implements oomph::PoroelasticityEquations< 2 >.

156  {
157 #ifdef RANGE_CHECKING
158  if (n >= (nq_basis_edge()))
159  {
160  std::ostringstream error_message;
161  error_message << "Range Error: n " << n << " is not in the range (0,"
162  << nq_basis_edge() - 1 << ")";
163  throw OomphLibError(error_message.str(),
166  }
167 #endif
168  return Q_edge_conv[n / (ORDER + 1)];
169  }

References n, oomph::TPoroelasticityElement< ORDER >::nq_basis_edge(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::TPoroelasticityElement< ORDER >::Q_edge_conv.

Referenced by oomph::TPoroelasticityElement< ORDER >::q_edge(), and oomph::TPoroelasticityElement< ORDER >::q_edge_local_eqn().

◆ q_internal() [1/2]

template<unsigned ORDER>
double oomph::TPoroelasticityElement< ORDER >::q_internal ( const unsigned n) const
inlinevirtual

Return the values of the internal (moment) degrees of freedom.

Implements oomph::PoroelasticityEquations< 2 >.

208  {
209 #ifdef RANGE_CHECKING
210  if (n >= (nq_basis() - nq_basis_edge()))
211  {
212  std::ostringstream error_message;
213  error_message << "Range Error: n " << n << " is not in the range (0,"
214  << (nq_basis() - nq_basis_edge()) - 1 << ")";
215  throw OomphLibError(error_message.str(),
218  }
219 #endif
220  return this->internal_data_pt(q_internal_index())->value(n);
221  }

References oomph::GeneralisedElement::internal_data_pt(), n, oomph::TPoroelasticityElement< ORDER >::nq_basis(), oomph::TPoroelasticityElement< ORDER >::nq_basis_edge(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::TPoroelasticityElement< ORDER >::q_internal_index(), and oomph::Data::value().

◆ q_internal() [2/2]

template<unsigned ORDER>
double oomph::TPoroelasticityElement< ORDER >::q_internal ( const unsigned t,
const unsigned n 
) const
inlinevirtual

Return the values of the internal (moment) degrees of freedom at time history level t

Implements oomph::PoroelasticityEquations< 2 >.

226  {
227 #ifdef RANGE_CHECKING
228  // mjr TODO add time history level range checking
229  if (n >= (nq_basis() - nq_basis_edge()))
230  {
231  std::ostringstream error_message;
232  error_message << "Range Error: n " << n << " is not in the range (0,"
233  << (nq_basis() - nq_basis_edge()) - 1 << ")";
234  throw OomphLibError(error_message.str(),
237  }
238 #endif
239  return this->internal_data_pt(q_internal_index())->value(t, n);
240  }

References oomph::GeneralisedElement::internal_data_pt(), n, oomph::TPoroelasticityElement< ORDER >::nq_basis(), oomph::TPoroelasticityElement< ORDER >::nq_basis_edge(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::TPoroelasticityElement< ORDER >::q_internal_index(), and oomph::Data::value().

◆ q_internal_index()

template<unsigned ORDER>
unsigned oomph::TPoroelasticityElement< ORDER >::q_internal_index ( ) const
inlinevirtual

◆ q_internal_local_eqn()

template<unsigned ORDER>
int oomph::TPoroelasticityElement< ORDER >::q_internal_local_eqn ( const unsigned n) const
inlinevirtual

Return the equation number of the n-th internal (moment) degree of freedom

Implements oomph::PoroelasticityEquations< 2 >.

115  {
116 #ifdef RANGE_CHECKING
117  if (n >= (nq_basis() - nq_basis_edge()))
118  {
119  std::ostringstream error_message;
120  error_message << "Range Error: n " << n << " is not in the range (0,"
121  << (nq_basis() - nq_basis_edge()) - 1 << ")";
122  throw OomphLibError(error_message.str(),
125  }
126 #endif
128  }

References oomph::GeneralisedElement::internal_local_eqn(), n, oomph::TPoroelasticityElement< ORDER >::nq_basis(), oomph::TPoroelasticityElement< ORDER >::nq_basis_edge(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::TPoroelasticityElement< ORDER >::q_internal_index().

◆ required_nvalue()

template<unsigned ORDER>
unsigned oomph::TPoroelasticityElement< ORDER >::required_nvalue ( const unsigned n) const
inlinevirtual

Number of values required at node n.

Implements oomph::PoroelasticityEquations< 2 >.

75  {
76  return Initial_Nvalue[n];
77  }
static const unsigned Initial_Nvalue[]
The number of values stored at each node.
Definition: Tporoelasticity_elements.h:46

References oomph::TPoroelasticityElement< ORDER >::Initial_Nvalue, and n.

◆ scale_basis()

template<unsigned ORDER>
void oomph::TPoroelasticityElement< ORDER >::scale_basis ( Shape basis) const
inlinevirtual

Scale the edge basis to allow arbitrary edge mappings.

Implements oomph::PoroelasticityEquations< 2 >.

423  {
424  // Storage for the lengths of the edges of the element
425  Vector<double> length(3, 0.0);
426 
427  // Temporary storage for the vertex positions
428  double x0, y0, x1, y1;
429 
430  // loop over the edges of the element and calculate their lengths (in x-y
431  // space)
432  for (unsigned i = 0; i < 3; i++)
433  {
434  x0 = this->node_pt(i)->x(0);
435  y0 = this->node_pt(i)->x(1);
436  x1 = this->node_pt((i + 1) % 3)->x(0);
437  y1 = this->node_pt((i + 1) % 3)->x(1);
438 
439  length[i] = std::sqrt(std::pow(y1 - y0, 2) + std::pow(x1 - x0, 2));
440  }
441 
442  // lengths of the sides of the reference element (in the same order as the
443  // basis functions)
444  const double ref_length[3] = {std::sqrt(2.0), 1, 1};
445 
446  // get the number of basis functions associated with the edges
447  unsigned n_q_basis_edge = nq_basis_edge();
448 
449  // rescale the edge basis functions to allow arbitrary edge mappings from
450  // element to ref. element
451  const unsigned n_index2 = basis.nindex2();
452  for (unsigned i = 0; i < n_index2; i++)
453  {
454  for (unsigned l = 0; l < n_q_basis_edge; l++)
455  {
456  basis(l, i) *=
457  (length[l / (ORDER + 1)] / ref_length[l / (ORDER + 1)]);
458  }
459  }
460  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
double & x(const unsigned &i)
Return the i-th nodal coordinate.
Definition: nodes.h:1060
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)

References i, oomph::Shape::nindex2(), oomph::FiniteElement::node_pt(), oomph::TPoroelasticityElement< ORDER >::nq_basis_edge(), Eigen::bfloat16_impl::pow(), sqrt(), oomph::Node::x(), Global::x0, and Global_parameters::x1().

◆ shape_basis_test_local()

template<unsigned ORDER>
double oomph::TPoroelasticityElement< ORDER >::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
inlineprotectedvirtual

Returns the geometric basis, and the u, p and divergence basis functions and test functions at local coordinate s

Implements oomph::PoroelasticityEquations< 2 >.

503  {
504  const unsigned n_q_basis = this->nq_basis();
505 
506  Shape q_basis_local(n_q_basis, 2);
507  this->get_q_basis_local(s, q_basis_local);
508  this->get_p_basis(s, p_basis);
509  this->get_div_q_basis_local(s, div_q_basis_ds);
510 
511  double J = this->transform_basis(s, q_basis_local, psi, dpsi, q_basis);
512 
513  // u_basis consists of the normal Lagrangian shape functions
514  u_basis = psi;
515  du_basis_dx = dpsi;
516 
517  u_test = psi;
518  du_test_dx = dpsi;
519 
520  q_test = q_basis;
521  p_test = p_basis;
522  div_q_test_ds = div_q_basis_ds;
523 
524  return J;
525  }
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
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 get_div_q_basis_local(const Vector< double > &s, Shape &div_q_basis_ds) const
void get_p_basis(const Vector< double > &s, Shape &p_basis) const
Return the pressure basis.
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.

References oomph::TPoroelasticityElement< ORDER >::get_div_q_basis_local(), oomph::TPoroelasticityElement< ORDER >::get_p_basis(), oomph::TPoroelasticityElement< ORDER >::get_q_basis_local(), J, oomph::TPoroelasticityElement< ORDER >::nq_basis(), and oomph::PoroelasticityEquations< 2 >::transform_basis().

Referenced by oomph::TPoroelasticityElement< ORDER >::shape_basis_test_local_at_knot().

◆ shape_basis_test_local_at_knot()

template<unsigned ORDER>
double oomph::TPoroelasticityElement< ORDER >::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
inlineprotectedvirtual

Returns the geometric basis, and the u, p and divergence basis functions and test functions at integration point ipt

Implements oomph::PoroelasticityEquations< 2 >.

542  {
543  Vector<double> s(2);
544  for (unsigned i = 0; i < 2; i++)
545  {
546  s[i] = this->integral_pt()->knot(ipt, i);
547  }
548 
549  return shape_basis_test_local(s,
550  psi,
551  dpsi,
552  u_basis,
553  u_test,
554  du_basis_dx,
555  du_test_dx,
556  q_basis,
557  q_test,
558  p_basis,
559  p_test,
560  div_q_basis_ds,
561  div_q_test_ds);
562  }
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
Definition: elements.h:1963
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.
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

References i, oomph::FiniteElement::integral_pt(), oomph::Integral::knot(), s, and oomph::TPoroelasticityElement< ORDER >::shape_basis_test_local().

◆ sign_edge() [1/2]

template<unsigned ORDER>
short& oomph::TPoroelasticityElement< ORDER >::sign_edge ( const unsigned n)
inline

Accessor for the unit normal sign of edge n.

470  {
471  return Sign_edge[n];
472  }

References n, and oomph::TPoroelasticityElement< ORDER >::Sign_edge.

◆ sign_edge() [2/2]

template<unsigned ORDER>
const short& oomph::TPoroelasticityElement< ORDER >::sign_edge ( const unsigned n) const
inline

Accessor for the unit normal sign of edge n (const version)

464  {
465  return Sign_edge[n];
466  }

References n, and oomph::TPoroelasticityElement< ORDER >::Sign_edge.

Referenced by oomph::TPoroelasticityElement< ORDER >::edge_gauss_point().

◆ u_index()

template<unsigned ORDER>
unsigned oomph::TPoroelasticityElement< ORDER >::u_index ( const unsigned n) const
inlinevirtual

Return the nodal index of the n-th solid displacement unknown.

Implements oomph::PoroelasticityEquations< 2 >.

80  {
81 #ifdef RANGE_CHECKING
82  if (n >= 2)
83  {
84  std::ostringstream error_message;
85  error_message << "Range Error: n " << n << " is not in the range (0,1)";
86  throw OomphLibError(error_message.str(),
89  }
90 #endif
91 
92  return n;
93  }

References n, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Member Data Documentation

◆ Gauss_point

template<unsigned ORDER>
const double oomph::TPoroelasticityElement< ORDER >::Gauss_point[]
staticprivate

The points along each edge where the fluxes are taken to be.

Referenced by oomph::TPoroelasticityElement< ORDER >::edge_gauss_point().

◆ Initial_Nvalue

template<unsigned ORDER>
const unsigned oomph::TPoroelasticityElement< ORDER >::Initial_Nvalue[]
staticprivate

The number of values stored at each node.

Referenced by oomph::TPoroelasticityElement< ORDER >::required_nvalue().

◆ P_internal_data_index

template<unsigned ORDER>
unsigned oomph::TPoroelasticityElement< ORDER >::P_internal_data_index
private

The internal data index where the p degrees of freedom are stored.

Referenced by oomph::TPoroelasticityElement< ORDER >::TPoroelasticityElement().

◆ Q_edge_conv

template<unsigned ORDER>
const unsigned oomph::TPoroelasticityElement< ORDER >::Q_edge_conv[]
staticprivate

Conversion scheme from an edge degree of freedom to the node it's stored at

Referenced by oomph::TPoroelasticityElement< ORDER >::edge_gauss_point_global(), and oomph::TPoroelasticityElement< ORDER >::q_edge_node_number().

◆ Q_internal_data_index

template<unsigned ORDER>
unsigned oomph::TPoroelasticityElement< ORDER >::Q_internal_data_index
private

The internal data index where the internal q degrees of freedom are stored

Referenced by oomph::TPoroelasticityElement< ORDER >::q_internal_index(), and oomph::TPoroelasticityElement< ORDER >::TPoroelasticityElement().

◆ Sign_edge

template<unsigned ORDER>
std::vector<short> oomph::TPoroelasticityElement< ORDER >::Sign_edge
private

Unit normal signs associated with each edge to ensure inter-element continuity of the flux

Referenced by oomph::TPoroelasticityElement< ORDER >::sign_edge().


The documentation for this class was generated from the following file: