oomph::StorableShapeSolidElementBase Class Reference

#include <stored_shape_function_elements.h>

+ Inheritance diagram for oomph::StorableShapeSolidElementBase:

Public Member Functions

 StorableShapeSolidElementBase ()
 Constructor: Set defaults: Nothing is stored. More...
 
virtual ~StorableShapeSolidElementBase ()
 Destructor to clean up any allocated memory. More...
 
 StorableShapeSolidElementBase (const StorableShapeSolidElementBase &)=delete
 Broken copy constructor. More...
 
void operator= (const StorableShapeSolidElementBase &)=delete
 Broken assignment operator. More...
 
void delete_all_dshape_lagrangian_stored ()
 
void delete_dshape_lagrangian_stored ()
 
void delete_d2shape_lagrangian_stored ()
 
void delete_J_lagrangian_stored ()
 
void set_integration_scheme (Integral *const &integral_pt)
 
Vector< DShape * > *& dshape_lagrangian_stored_pt ()
 
Vector< DShape * > *const & dshape_lagrangian_stored_pt () const
 
Vector< DShape * > *& d2shape_lagrangian_stored_pt ()
 
Vector< DShape * > *const & d2shape_lagrangian_stored_pt () const
 
Vector< double > *& jacobian_lagrangian_stored_pt ()
 
Vector< double > *const & jacobian_lagrangian_stored_pt () const
 
void pre_compute_dshape_lagrangian_at_knots ()
 
double dshape_lagrangian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidxi) const
 
void pre_compute_d2shape_lagrangian_at_knots ()
 
double d2shape_lagrangian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidxi, DShape &d2psidxi) const
 
void set_dshape_lagrangian_stored_from_element (StorableShapeSolidElementBase *const &element_pt)
 
- Public Member Functions inherited from oomph::StorableShapeElementBase
 StorableShapeElementBase ()
 Constructor, set most storage pointers to NULL. More...
 
virtual ~StorableShapeElementBase ()
 
 StorableShapeElementBase (const StorableShapeElementBase &)=delete
 Broken copy constructor. More...
 
void operator= (const StorableShapeElementBase &)=delete
 Broken assignment operator. More...
 
void delete_all_shape_local_stored ()
 
void delete_shape_local_stored ()
 Delete stored shape functions. More...
 
void delete_dshape_local_stored ()
 
void delete_d2shape_local_stored ()
 
void delete_all_dshape_eulerian_stored ()
 
void delete_dshape_eulerian_stored ()
 Delete stored derivatives w.r.t. Eulerian coordinates. More...
 
void delete_d2shape_eulerian_stored ()
 Delete stored 2nd derivatives w.r.t. Eulerian coordinates. More...
 
void delete_J_eulerian_stored ()
 
Vector< Shape * > *& shape_stored_pt ()
 
Vector< Shape * > *const & shape_stored_pt () const
 
Shape *& shape_stored_pt (const unsigned &ipt)
 
Shape *const & shape_stored_pt (const unsigned &ipt) const
 
Vector< DShape * > *& dshape_local_stored_pt ()
 
Vector< DShape * > *const & dshape_local_stored_pt () const
 
Vector< DShape * > *& d2shape_local_stored_pt ()
 
Vector< DShape * > *const & d2shape_local_stored_pt () const
 
Vector< DShape * > *& dshape_eulerian_stored_pt ()
 
Vector< DShape * > *const & dshape_eulerian_stored_pt () const
 
Vector< DShape * > *& d2shape_eulerian_stored_pt ()
 
Vector< DShape * > *const & d2shape_eulerian_stored_pt () const
 
Vector< double > *& jacobian_eulerian_stored_pt ()
 
Vector< double > *const & jacobian_eulerian_stored_pt () const
 
void set_shape_local_stored_from_element (StorableShapeElementBase *const &element_pt)
 
void set_dshape_eulerian_stored_from_element (StorableShapeElementBase *const &element_pt)
 
void pre_compute_shape_at_knots ()
 
void shape_at_knot (const unsigned &ipt, Shape &psi) const
 
void pre_compute_dshape_local_at_knots ()
 
void dshape_local_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsids) const
 
void pre_compute_d2shape_local_at_knots ()
 
void d2shape_local_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids) const
 
void pre_compute_J_eulerian_at_knots ()
 
double J_eulerian_at_knot (const unsigned &ipt) const
 
void pre_compute_dshape_eulerian_at_knots ()
 
double dshape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidx) const
 
void pre_compute_d2shape_eulerian_at_knots ()
 
double d2shape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidx, DShape &d2psidx) const
 
- 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)
 
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)
 
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 dshape_local (const Vector< double > &s, Shape &psi, DShape &dpsids) const
 
virtual void d2shape_local (const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
 
virtual double J_eulerian (const Vector< double > &s) 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 &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 void assign_nodal_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void describe_nodal_local_dofs (std::ostream &out, const std::string &current_string) const
 
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 ()
 
virtual unsigned required_nvalue (const unsigned &n) const
 
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
 
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)
 
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)
 
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 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 (std::ostream &outfile)
 
virtual void output (std::ostream &outfile, const unsigned &n_plot)
 
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, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
 Output an exact solution over the element. More...
 
virtual void output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
 Output a time-dependent exact solution over the element. More...
 
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_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< 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 self_test ()
 
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 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
 
- Public Member Functions inherited from oomph::SolidFiniteElement
void set_lagrangian_dimension (const unsigned &lagrangian_dimension)
 
virtual bool has_internal_solid_data ()
 
 SolidFiniteElement ()
 Constructor: Set defaults. More...
 
virtual ~SolidFiniteElement ()
 Destructor to clean up any allocated memory. More...
 
 SolidFiniteElement (const SolidFiniteElement &)=delete
 Broken copy constructor. More...
 
unsigned ngeom_data () const
 Broken assignment operator. More...
 
Datageom_data_pt (const unsigned &j)
 
void identify_geometric_data (std::set< Data * > &geometric_data_pt)
 
double zeta_nodal (const unsigned &n, const unsigned &k, const unsigned &i) const
 
virtual void get_x_and_xi (const Vector< double > &s, Vector< double > &x_fe, Vector< double > &x, Vector< double > &xi_fe, Vector< double > &xi) const
 
virtual void set_macro_elem_pt (MacroElement *macro_elem_pt)
 
virtual void set_macro_elem_pt (MacroElement *macro_elem_pt, MacroElement *undeformed_macro_elem_pt)
 
void set_undeformed_macro_elem_pt (MacroElement *undeformed_macro_elem_pt)
 
MacroElementundeformed_macro_elem_pt ()
 Access function to pointer to "undeformed" macro element. More...
 
double dshape_lagrangian (const Vector< double > &s, Shape &psi, DShape &dpsidxi) const
 
double d2shape_lagrangian (const Vector< double > &s, Shape &psi, DShape &dpsidxi, DShape &d2psidxi) const
 
unsigned lagrangian_dimension () const
 
unsigned nnodal_lagrangian_type () const
 
Nodeconstruct_node (const unsigned &n)
 Construct the local node n and return a pointer to it. More...
 
Nodeconstruct_node (const unsigned &n, TimeStepper *const &time_stepper_pt)
 
Nodeconstruct_boundary_node (const unsigned &n)
 
Nodeconstruct_boundary_node (const unsigned &n, TimeStepper *const &time_stepper_pt)
 
virtual void assign_all_generic_local_eqn_numbers (const bool &store_local_dof_pt)
 
void describe_local_dofs (std::ostream &out, const std::string &current_string) const
 
double raw_lagrangian_position (const unsigned &n, const unsigned &i) const
 
double raw_lagrangian_position_gen (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double lagrangian_position (const unsigned &n, const unsigned &i) const
 Return i-th Lagrangian coordinate at local node n. More...
 
double lagrangian_position_gen (const unsigned &n, const unsigned &k, const unsigned &i) const
 
virtual double interpolated_xi (const Vector< double > &s, const unsigned &i) const
 
virtual void interpolated_xi (const Vector< double > &s, Vector< double > &xi) const
 
virtual void interpolated_dxids (const Vector< double > &s, DenseMatrix< double > &dxids) const
 
virtual void J_lagrangian (const Vector< double > &s) const
 
virtual double J_lagrangian_at_knot (const unsigned &ipt) const
 
SolidInitialCondition *& solid_ic_pt ()
 Pointer to object that describes the initial condition. More...
 
void enable_solve_for_consistent_newmark_accel ()
 
void disable_solve_for_consistent_newmark_accel ()
 Set to reset the problem being solved to be the standard problem. More...
 
MultiplierFctPtmultiplier_fct_pt ()
 
MultiplierFctPt multiplier_fct_pt () const
 
virtual void get_residuals_for_solid_ic (Vector< double > &residuals)
 
void fill_in_residuals_for_solid_ic (Vector< double > &residuals)
 
void fill_in_jacobian_for_solid_ic (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void fill_in_jacobian_for_newmark_accel (DenseMatrix< double > &jacobian)
 
void compute_norm (double &el_norm)
 
int position_local_eqn (const unsigned &n, const unsigned &k, const unsigned &j) const
 

Private Attributes

Vector< DShape * > * DShape_lagrangian_stored_pt
 
Vector< DShape * > * D2Shape_lagrangian_stored_pt
 
Vector< double > * Jacobian_lagrangian_stored_pt
 
bool Can_delete_dshape_lagrangian_stored
 

Additional Inherited Members

- Public Types inherited from oomph::FiniteElement
typedef void(* SteadyExactSolutionFctPt) (const Vector< double > &, Vector< double > &)
 
typedef void(* UnsteadyExactSolutionFctPt) (const double &, const Vector< double > &, Vector< double > &)
 
- Public Types inherited from oomph::SolidFiniteElement
typedef double(* MultiplierFctPt) (const Vector< double > &xi)
 
- 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 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)
 
virtual void fill_in_contribution_to_residuals (Vector< double > &residuals)
 
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)
 
- Protected Member Functions inherited from oomph::SolidFiniteElement
void fill_in_generic_jacobian_for_solid_ic (Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
 
void set_nnodal_lagrangian_type (const unsigned &nlagrangian_type)
 
virtual double local_to_lagrangian_mapping (const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
double local_to_lagrangian_mapping (const DShape &dpsids, DenseMatrix< double > &inverse_jacobian) const
 
virtual double local_to_lagrangian_mapping_diagonal (const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
virtual void assign_solid_local_eqn_numbers (const bool &store_local_dof)
 Assign local equation numbers for the solid equations in the element. More...
 
void describe_solid_local_dofs (std::ostream &out, const std::string &current_string) const
 Classifies dofs locally for solid specific aspects. More...
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
virtual void fill_in_jacobian_from_solid_position_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void fill_in_jacobian_from_solid_position_by_fd (DenseMatrix< double > &jacobian)
 
virtual void update_before_solid_position_fd ()
 
virtual void reset_after_solid_position_fd ()
 
virtual void update_in_solid_position_fd (const unsigned &i)
 
virtual void reset_in_solid_position_fd (const unsigned &i)
 
- 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
 
- Protected Attributes inherited from oomph::SolidFiniteElement
MacroElementUndeformed_macro_elem_pt
 Pointer to the element's "undeformed" macro element (NULL by default) More...
 
SolidInitialConditionSolid_ic_pt
 Pointer to object that specifies the initial condition. More...
 
bool Solve_for_consistent_newmark_accel_flag
 
- 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

Base class for solid elements that allow storage of precomputed shape functions and their derivatives w.r.t to the local and global (Lagrangian) coordinates at the element's integration points.

Constructor & Destructor Documentation

◆ StorableShapeSolidElementBase() [1/2]

oomph::StorableShapeSolidElementBase::StorableShapeSolidElementBase ( )
inline

Constructor: Set defaults: Nothing is stored.

406  {
407  }
SolidFiniteElement()
Constructor: Set defaults.
Definition: elements.h:3585
StorableShapeElementBase()
Constructor, set most storage pointers to NULL.
Definition: stored_shape_function_elements.h:100
Vector< double > * Jacobian_lagrangian_stored_pt
Definition: stored_shape_function_elements.h:391
Vector< DShape * > * D2Shape_lagrangian_stored_pt
Definition: stored_shape_function_elements.h:387
bool Can_delete_dshape_lagrangian_stored
Definition: stored_shape_function_elements.h:395
Vector< DShape * > * DShape_lagrangian_stored_pt
Definition: stored_shape_function_elements.h:383

◆ ~StorableShapeSolidElementBase()

virtual oomph::StorableShapeSolidElementBase::~StorableShapeSolidElementBase ( )
inlinevirtual

Destructor to clean up any allocated memory.

411  {
413  }
void delete_all_dshape_lagrangian_stored()
Definition: stored_shape_function_elements.cc:883

References delete_all_dshape_lagrangian_stored().

◆ StorableShapeSolidElementBase() [2/2]

oomph::StorableShapeSolidElementBase::StorableShapeSolidElementBase ( const StorableShapeSolidElementBase )
delete

Broken copy constructor.

Member Function Documentation

◆ d2shape_lagrangian_at_knot()

double oomph::StorableShapeSolidElementBase::d2shape_lagrangian_at_knot ( const unsigned ipt,
Shape psi,
DShape dpsidxi,
DShape d2psidxi 
) const
virtual

Return the geometric shape functions and also first and second derivatives w.r.t. Lagrangian coordinates at the ipt-th integration point. If the values have been pre-computed, they will be used. Returns Jacobian of mapping from Lagrangian to local coordinates.

Compute the geometric shape functions, first and second derivatives w.r.t Lagrangian coordinates at the ipt-th integration point. If the values have already been computed, return the stored values.

Reimplemented from oomph::SolidFiniteElement.

1145  {
1146  // If we are not storing the values return the calculated values
1148  {
1150  ipt, psi, dpsidxi, d2psidxi);
1151  }
1152  else
1153  {
1154  // Set the internal values of the pointers in the Shape objects
1155  psi = shape_stored_pt(ipt);
1156  dpsidxi = (*DShape_lagrangian_stored_pt)[ipt];
1157  d2psidxi = (*D2Shape_lagrangian_stored_pt)[ipt];
1158 
1159  // Return the stored value of the jacobian
1160  return ((*Jacobian_lagrangian_stored_pt)[ipt]);
1161  }
1162  }
virtual double d2shape_lagrangian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsidxi, DShape &d2psidxi) const
Definition: elements.cc:6832
Vector< Shape * > *& shape_stored_pt()
Definition: stored_shape_function_elements.h:163

References oomph::SolidFiniteElement::d2shape_lagrangian_at_knot(), D2Shape_lagrangian_stored_pt, Jacobian_lagrangian_stored_pt, and oomph::StorableShapeElementBase::shape_stored_pt().

◆ d2shape_lagrangian_stored_pt() [1/2]

Vector<DShape*>*& oomph::StorableShapeSolidElementBase::d2shape_lagrangian_stored_pt ( )
inline

Return a pointer to the vector of pointers to the stored second derivatives of the shape functions w.r.t the global (eulerian) coordinates

477  {
479  }

References D2Shape_lagrangian_stored_pt.

Referenced by set_dshape_lagrangian_stored_from_element().

◆ d2shape_lagrangian_stored_pt() [2/2]

Vector<DShape*>* const& oomph::StorableShapeSolidElementBase::d2shape_lagrangian_stored_pt ( ) const
inline

Return a pointer to the vector of pointers to the stored second derivatives of the shape functions w.r.t the global (eulerian) coordinates (const version)

485  {
487  }

References D2Shape_lagrangian_stored_pt.

◆ delete_all_dshape_lagrangian_stored()

void oomph::StorableShapeSolidElementBase::delete_all_dshape_lagrangian_stored ( )

Delete all the objects stored in the [...]_lagrangian_stored_pt vectors and delete the vectors themselves

//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// Delete all the objects and storage associated with stored derivatives of shape functions with respect to Lagrangian coordinates

884  {
888  }
void delete_J_lagrangian_stored()
Definition: stored_shape_function_elements.cc:944
void delete_d2shape_lagrangian_stored()
Definition: stored_shape_function_elements.cc:920
void delete_dshape_lagrangian_stored()
Definition: stored_shape_function_elements.cc:895

References delete_d2shape_lagrangian_stored(), delete_dshape_lagrangian_stored(), and delete_J_lagrangian_stored().

Referenced by set_dshape_lagrangian_stored_from_element(), and ~StorableShapeSolidElementBase().

◆ delete_d2shape_lagrangian_stored()

void oomph::StorableShapeSolidElementBase::delete_d2shape_lagrangian_stored ( )

Delete stored second derivatives of shape functions w.r.t. Lagrangian coordinates

Delete all the objects stored in the vectors: D2Shape_lagrangian_stored

921  {
922  // If storage has been allocated
924  {
925  // Now find the number of entries in the second vector
926  unsigned n_intpt = D2Shape_lagrangian_stored_pt->size();
927  // Loop over the entries in reverse and delete them
928  for (unsigned ipt = n_intpt; ipt > 0; ipt--)
929  {
930  delete (*D2Shape_lagrangian_stored_pt)[ipt - 1];
931  (*D2Shape_lagrangian_stored_pt)[ipt - 1] = 0;
932  }
933  // Delete the actual vector
935  }
936  // Reset the pointer to zero
938  }

References Can_delete_dshape_lagrangian_stored, and D2Shape_lagrangian_stored_pt.

Referenced by delete_all_dshape_lagrangian_stored(), and pre_compute_d2shape_lagrangian_at_knots().

◆ delete_dshape_lagrangian_stored()

void oomph::StorableShapeSolidElementBase::delete_dshape_lagrangian_stored ( )

Delete all the objects stored in the Lagrangian_stored vectors

Delete all the objects stored in the vectors: DShape_lagrangian_stored

896  {
897  // If storage has been allocated
899  {
900  // Find the number of entries in the shape function storage vector
901  unsigned n_intpt = DShape_lagrangian_stored_pt->size();
902  // Loop over the entries of the vectors, in reverse and delete them
903  for (unsigned ipt = n_intpt; ipt > 0; ipt--)
904  {
905  delete (*DShape_lagrangian_stored_pt)[ipt - 1];
906  (*DShape_lagrangian_stored_pt)[ipt - 1] = 0;
907  }
908  // Delete the actual vector
910  }
911  // Reset the pointer to zero
913  }

References Can_delete_dshape_lagrangian_stored, and DShape_lagrangian_stored_pt.

Referenced by delete_all_dshape_lagrangian_stored(), pre_compute_d2shape_lagrangian_at_knots(), and pre_compute_dshape_lagrangian_at_knots().

◆ delete_J_lagrangian_stored()

void oomph::StorableShapeSolidElementBase::delete_J_lagrangian_stored ( )

Delete stored Jaocbian of mapping between local and Lagrangian coordinates

Delete the stored Jacobian of the mapping between the Lagrangian and local coordinates.

945  {
946  // If we allocated the storage, delete it
948  {
949  // Delete the stored Jacobian
951  }
952  // Reset the pointer to zero
954  }

References Can_delete_dshape_lagrangian_stored, and Jacobian_lagrangian_stored_pt.

Referenced by delete_all_dshape_lagrangian_stored(), pre_compute_d2shape_lagrangian_at_knots(), and pre_compute_dshape_lagrangian_at_knots().

◆ dshape_lagrangian_at_knot()

double oomph::StorableShapeSolidElementBase::dshape_lagrangian_at_knot ( const unsigned ipt,
Shape psi,
DShape dpsidxi 
) const
virtual

Return the geometric shape functions and also first derivatives w.r.t. Lagrangian coordinates at ipt-th integration point. If the values of the shape function and derivatives have been pre-computed, they will be used.

Compute the geometric shape functions, and derivatives w.r.t Lagrangian coordinates at the ipt-th integration point. If the values have already been computed, return the stored values.

Reimplemented from oomph::SolidFiniteElement.

1121  {
1122  // If we are not storing the values, return the calculated values
1123  if (DShape_lagrangian_stored_pt == 0)
1124  {
1125  return SolidFiniteElement::dshape_lagrangian_at_knot(ipt, psi, dpsidxi);
1126  }
1127  else
1128  {
1129  // Set the internal pointers in the shape functions
1130  psi = shape_stored_pt(ipt);
1131  dpsidxi = (*DShape_lagrangian_stored_pt)[ipt];
1132 
1133  // Return the stored value of the jacobian
1134  return ((*Jacobian_lagrangian_stored_pt)[ipt]);
1135  }
1136  }
virtual double dshape_lagrangian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsidxi) const
Definition: elements.cc:6737

References oomph::SolidFiniteElement::dshape_lagrangian_at_knot(), DShape_lagrangian_stored_pt, Jacobian_lagrangian_stored_pt, and oomph::StorableShapeElementBase::shape_stored_pt().

◆ dshape_lagrangian_stored_pt() [1/2]

Vector<DShape*>*& oomph::StorableShapeSolidElementBase::dshape_lagrangian_stored_pt ( )
inline

Return a pointer to the vector of pointers to the stored first derivatives of the shape functions w.r.t the global (eulerian) coordinates

461  {
463  }

References DShape_lagrangian_stored_pt.

Referenced by set_dshape_lagrangian_stored_from_element().

◆ dshape_lagrangian_stored_pt() [2/2]

Vector<DShape*>* const& oomph::StorableShapeSolidElementBase::dshape_lagrangian_stored_pt ( ) const
inline

Return a pointer to the vector of pointers to the stored first derivatives of the shape functions w.r.t the global (eulerian) coordinates (const version)

469  {
471  }

References DShape_lagrangian_stored_pt.

◆ jacobian_lagrangian_stored_pt() [1/2]

Vector<double>*& oomph::StorableShapeSolidElementBase::jacobian_lagrangian_stored_pt ( )
inline

Return a pointer to the vector of Jacobians of the mapping between the local and global (eulerian) coordinates

492  {
494  }

References Jacobian_lagrangian_stored_pt.

Referenced by set_dshape_lagrangian_stored_from_element().

◆ jacobian_lagrangian_stored_pt() [2/2]

Vector<double>* const& oomph::StorableShapeSolidElementBase::jacobian_lagrangian_stored_pt ( ) const
inline

Return a pointer to the vector of Jacobians of the mapping between the local and global (eulerian) coordinates (const version)

500  {
502  }

References Jacobian_lagrangian_stored_pt.

◆ operator=()

void oomph::StorableShapeSolidElementBase::operator= ( const StorableShapeSolidElementBase )
delete

Broken assignment operator.

◆ pre_compute_d2shape_lagrangian_at_knots()

void oomph::StorableShapeSolidElementBase::pre_compute_d2shape_lagrangian_at_knots ( )

Calculate the first and second derivatives of the shape functions w.r.t Lagrangian coordinates at the integration points and store the results internally

Calculate the values of the first and second derivatives of the shape functions at the integration points and store in the internal storage of the element

1024  {
1025  // Pre-compute the basic shape functions
1027 
1028  // Find the number of nodes
1029  unsigned n_node = nnode();
1030  // Get the number of position types and the dimension from first node
1031  // N.B. Assume that it is the same for all nodes
1032  unsigned n_lagrangian_type =
1033  static_cast<SolidNode*>(node_pt(0))->nlagrangian_type();
1034  unsigned n_lagrangian = static_cast<SolidNode*>(node_pt(0))->nlagrangian();
1035 
1036  // Find the number of second derivatives required
1037  // N.B. We are assuming that the mixed derivatives are symmetric here
1038  unsigned n_deriv = 0;
1039  switch (n_lagrangian)
1040  {
1041  case 1:
1042  n_deriv = 1;
1043  break;
1044  case 2:
1045  n_deriv = 3;
1046  break;
1047  case 3:
1048  n_deriv = 6;
1049  break;
1050  default:
1051  oomph_info << "Really more than 3 dimensions?" << std::endl;
1052  break;
1053  }
1054 
1055  // Delete the existing objects, if there are any
1059  // We are in charge of deleting again
1061 
1062  // Allocate storage for the stored shape function derivatives
1063  DShape_lagrangian_stored_pt = new Vector<DShape*>;
1064  D2Shape_lagrangian_stored_pt = new Vector<DShape*>;
1065  Jacobian_lagrangian_stored_pt = new Vector<double>;
1066 
1067  // Assign local variables for the shape function and derivatives
1068  Shape psi(n_node, n_lagrangian_type);
1069  DShape dpsidxi(n_node, n_lagrangian_type, n_lagrangian);
1070  DShape d2psidxi(n_node, n_lagrangian_type, n_deriv);
1071 
1072  // Loop over the integration points
1073  unsigned n_intpt = integral_pt()->nweight();
1074  for (unsigned ipt = 0; ipt < n_intpt; ipt++)
1075  {
1076  // Get the values of the shape function and derivatives at the
1077  // integration point and assign the value of the Jacobian to the
1078  // internally stored vector
1079  Jacobian_lagrangian_stored_pt->push_back(
1081  ipt, psi, dpsidxi, d2psidxi));
1082 
1083  // Set up local storage for the shape function derivatives
1084  DShape* dpsidxi_pt = new DShape(n_node, n_lagrangian_type, n_lagrangian);
1085  DShape* d2psidxi_pt = new DShape(n_node, n_lagrangian_type, n_deriv);
1086 
1087  // Now copy the values over
1088  for (unsigned l = 0; l < n_node; l++)
1089  {
1090  for (unsigned k = 0; k < n_lagrangian_type; k++)
1091  {
1092  // First derivatives
1093  for (unsigned i = 0; i < n_lagrangian; i++)
1094  {
1095  (*dpsidxi_pt)(l, k, i) = dpsidxi(l, k, i);
1096  }
1097 
1098  // Second derivatives
1099  for (unsigned i = 0; i < n_deriv; i++)
1100  {
1101  (*d2psidxi_pt)(l, k, i) = d2psidxi(l, k, i);
1102  }
1103  }
1104  }
1105 
1106  // Add the pointers to the shape function derivatives to the internal
1107  // storage
1108  DShape_lagrangian_stored_pt->push_back(dpsidxi_pt);
1109  D2Shape_lagrangian_stored_pt->push_back(d2psidxi_pt);
1110  } // End of loop over the shape functions
1111  }
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
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
Definition: elements.h:1963
unsigned nlagrangian() const
Access function to # of Lagrangian coordinates.
Definition: geom_objects.h:171
virtual unsigned nweight() const =0
Return the number of integration points of the scheme.
void pre_compute_shape_at_knots()
Definition: stored_shape_function_elements.cc:262
char char char int int * k
Definition: level2_impl.h:374
OomphInfo oomph_info
Definition: oomph_definitions.cc:319

References Can_delete_dshape_lagrangian_stored, oomph::SolidFiniteElement::d2shape_lagrangian_at_knot(), D2Shape_lagrangian_stored_pt, delete_d2shape_lagrangian_stored(), delete_dshape_lagrangian_stored(), delete_J_lagrangian_stored(), DShape_lagrangian_stored_pt, i, oomph::FiniteElement::integral_pt(), Jacobian_lagrangian_stored_pt, k, oomph::GeomObject::nlagrangian(), oomph::FiniteElement::nnode(), oomph::FiniteElement::node_pt(), oomph::Integral::nweight(), oomph::oomph_info, and oomph::StorableShapeElementBase::pre_compute_shape_at_knots().

Referenced by set_integration_scheme().

◆ pre_compute_dshape_lagrangian_at_knots()

void oomph::StorableShapeSolidElementBase::pre_compute_dshape_lagrangian_at_knots ( )

Calculate the first derivatives of the shape functions w.r.t Lagrangian coordinates at the integration points and store the results internally.

Calculate the values of the derivatives of the shape functions at the integration points and store in the internal storage of the element

961  {
962  // Pre-compute the basic shape functions
964 
965  // Find the number of nodes
966  unsigned n_node = nnode();
967  // Get the number of position types and the dimension from first node
968  // N.B. Assume that it is the same for all nodes
969  unsigned n_lagrangian_type =
970  static_cast<SolidNode*>(node_pt(0))->nlagrangian_type();
971  unsigned n_lagrangian = static_cast<SolidNode*>(node_pt(0))->nlagrangian();
972 
973  // Delete the exisiting stored objects
976  // Now we're in charge of deletion again
978 
979  // Allocate storage for the stored shape function derivatives
980  DShape_lagrangian_stored_pt = new Vector<DShape*>;
981  Jacobian_lagrangian_stored_pt = new Vector<double>;
982 
983  // Assign local variables for the shape function and derivatives
984  Shape psi(n_node, n_lagrangian_type);
985  DShape dpsidxi(n_node, n_lagrangian_type, n_lagrangian);
986 
987  // Loop over the integration points
988  unsigned n_intpt = integral_pt()->nweight();
989  for (unsigned ipt = 0; ipt < n_intpt; ipt++)
990  {
991  // Get the values of the shape function and derivatives at the
992  // integration point and add to the value of the Jacobian to the
993  // internally stored vector
996 
997  // Set up local storage for the shape function derivatives
998  DShape* dpsidxi_pt = new DShape(n_node, n_lagrangian_type, n_lagrangian);
999 
1000  // Now copy the values over
1001  for (unsigned l = 0; l < n_node; l++)
1002  {
1003  for (unsigned k = 0; k < n_lagrangian_type; k++)
1004  {
1005  // First derivatives
1006  for (unsigned i = 0; i < n_lagrangian; i++)
1007  {
1008  (*dpsidxi_pt)(l, k, i) = dpsidxi(l, k, i);
1009  }
1010  }
1011  }
1012 
1013  // Add the pointer to the vector of stored DShape objects
1014  DShape_lagrangian_stored_pt->push_back(dpsidxi_pt);
1015  } // End of loop over integration points
1016  }

References Can_delete_dshape_lagrangian_stored, delete_dshape_lagrangian_stored(), delete_J_lagrangian_stored(), oomph::SolidFiniteElement::dshape_lagrangian_at_knot(), DShape_lagrangian_stored_pt, i, oomph::FiniteElement::integral_pt(), Jacobian_lagrangian_stored_pt, k, oomph::GeomObject::nlagrangian(), oomph::FiniteElement::nnode(), oomph::FiniteElement::node_pt(), oomph::Integral::nweight(), and oomph::StorableShapeElementBase::pre_compute_shape_at_knots().

Referenced by set_integration_scheme().

◆ set_dshape_lagrangian_stored_from_element()

void oomph::StorableShapeSolidElementBase::set_dshape_lagrangian_stored_from_element ( StorableShapeSolidElementBase *const &  element_pt)

Set the derivatives of stored shape functions with respect to the lagrangian coordinates to be the same as those pointed to by the FiniteElement element_pt. Note that this function also calls set_shape_local_stored_from_element(element_pt). so that the local derivatives are also stored. Calling this function only makes sense for uniformly-spaced meshes with elements of equal sizes.

Set the stored derivatives of shape functions w.r.t Lagrangian coordinates to be those stored in the StorableShapeElementBase pointed to by element_pt. Using this function will allow a saving in the storage required for integration schemes in the (most common) case when a large number of elements have the same integration scheme

1175  {
1177 
1178  // Only do this if the referenced Shape objects are not already the same
1179  // Assume that if the stored shape functions are the same, the rest will be
1181  element_pt->dshape_lagrangian_stored_pt())
1182  {
1183  // Delete the existing data
1185  // Now this element can no longer delete the data pointed at by
1186  // the internal vectors
1188 
1189  // Assign the pointers
1190  DShape_lagrangian_stored_pt = element_pt->dshape_lagrangian_stored_pt();
1191  D2Shape_lagrangian_stored_pt = element_pt->d2shape_lagrangian_stored_pt();
1193  element_pt->jacobian_lagrangian_stored_pt();
1194  }
1195  }
void set_shape_local_stored_from_element(StorableShapeElementBase *const &element_pt)
Definition: stored_shape_function_elements.cc:810

References Can_delete_dshape_lagrangian_stored, D2Shape_lagrangian_stored_pt, d2shape_lagrangian_stored_pt(), delete_all_dshape_lagrangian_stored(), DShape_lagrangian_stored_pt, dshape_lagrangian_stored_pt(), Jacobian_lagrangian_stored_pt, jacobian_lagrangian_stored_pt(), and oomph::StorableShapeElementBase::set_shape_local_stored_from_element().

◆ set_integration_scheme()

void oomph::StorableShapeSolidElementBase::set_integration_scheme ( Integral *const &  integral_pt)
inlinevirtual

Overload the set_integration_scheme to recompute any stored derivatives w.r.t. Lagrangian coordinates

Reimplemented from oomph::StorableShapeElementBase.

441  {
443 
444  // If we are storing Lagrangian first and second derivatives, recompute
445  // them
447  {
449  }
450  // If we are storing Lagrangian first derivatives, recompute them
451  else if (DShape_lagrangian_stored_pt != 0)
452  {
454  }
455  }
virtual void set_integration_scheme(Integral *const &integral_pt)
Definition: stored_shape_function_elements.cc:218
void pre_compute_d2shape_lagrangian_at_knots()
Definition: stored_shape_function_elements.cc:1023
void pre_compute_dshape_lagrangian_at_knots()
Definition: stored_shape_function_elements.cc:960

References D2Shape_lagrangian_stored_pt, DShape_lagrangian_stored_pt, oomph::FiniteElement::integral_pt(), pre_compute_d2shape_lagrangian_at_knots(), pre_compute_dshape_lagrangian_at_knots(), and oomph::StorableShapeElementBase::set_integration_scheme().

Referenced by oomph::StorableShapeSolidElement< ELEMENT >::StorableShapeSolidElement().

Member Data Documentation

◆ Can_delete_dshape_lagrangian_stored

bool oomph::StorableShapeSolidElementBase::Can_delete_dshape_lagrangian_stored
private

Boolean to determine whether the element can delete the stored shape function derivatives w.r.t. the Lagrangian coordinate

Referenced by delete_d2shape_lagrangian_stored(), delete_dshape_lagrangian_stored(), delete_J_lagrangian_stored(), pre_compute_d2shape_lagrangian_at_knots(), pre_compute_dshape_lagrangian_at_knots(), and set_dshape_lagrangian_stored_from_element().

◆ D2Shape_lagrangian_stored_pt

Vector<DShape*>* oomph::StorableShapeSolidElementBase::D2Shape_lagrangian_stored_pt
private

Pointer to storage for the pointers to the second derivatives of the shape functions w.r.t. Lagrangian coordinates at integration points

Referenced by d2shape_lagrangian_at_knot(), d2shape_lagrangian_stored_pt(), delete_d2shape_lagrangian_stored(), pre_compute_d2shape_lagrangian_at_knots(), set_dshape_lagrangian_stored_from_element(), and set_integration_scheme().

◆ DShape_lagrangian_stored_pt

Vector<DShape*>* oomph::StorableShapeSolidElementBase::DShape_lagrangian_stored_pt
private

Pointer to storage for the pointers to the derivatives of the shape functions w.r.t. Lagrangian coordinates at integration points

Referenced by delete_dshape_lagrangian_stored(), dshape_lagrangian_at_knot(), dshape_lagrangian_stored_pt(), pre_compute_d2shape_lagrangian_at_knots(), pre_compute_dshape_lagrangian_at_knots(), set_dshape_lagrangian_stored_from_element(), and set_integration_scheme().

◆ Jacobian_lagrangian_stored_pt

Vector<double>* oomph::StorableShapeSolidElementBase::Jacobian_lagrangian_stored_pt
private

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