oomph::FiniteElement Class Referenceabstract

#include <elements.h>

+ Inheritance diagram for oomph::FiniteElement:

Public Types

typedef void(* SteadyExactSolutionFctPt) (const Vector< double > &, Vector< double > &)
 
typedef void(* UnsteadyExactSolutionFctPt) (const double &, const Vector< double > &, Vector< double > &)
 

Public Member Functions

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 ()
 
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
 
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 (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 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
 

Static Public Attributes

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

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)
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
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 Attributes

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

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
 

Private Attributes

IntegralIntegral_pt
 Pointer to the spatial integration scheme. More...
 
Node ** Node_pt
 Storage for pointers to the nodes in the element. More...
 
int ** Nodal_local_eqn
 
unsigned Nnode
 Number of nodes in the element. More...
 
unsigned Elemental_dimension
 
unsigned Nodal_dimension
 
unsigned Nnodal_position_type
 

Detailed Description

A general Finite Element class.

The main components of a FiniteElement are:

  • pointers to its Nodes
  • pointers to its internal Data (inherited from GeneralisedElement)
  • pointers to its external Data (inherited from GeneralisedElement)
  • a pointer to a spatial integration scheme
  • a pointer to the global Time object (inherited from GeneralisedElement)
  • a lookup table which establishes the relation between local and global equation numbers (inherited from GeneralisedElement)

We also provide interfaces for functions that compute the element's Jacobian matrix and/or the Vector of residuals (inherited from GeneralisedElement) plus various output routines.

Member Typedef Documentation

◆ SteadyExactSolutionFctPt

typedef void(* oomph::FiniteElement::SteadyExactSolutionFctPt) (const Vector< double > &, Vector< double > &)

Function pointer for function that computes vector-valued steady "exact solution" \( {\bf f}({\bf x}) \) as \( \mbox{\tt fct}({\bf x}, {\bf f}) \).

◆ UnsteadyExactSolutionFctPt

typedef void(* oomph::FiniteElement::UnsteadyExactSolutionFctPt) (const double &, const Vector< double > &, Vector< double > &)

Function pointer for function that computes Vector-valued time-dependent function \( {\bf f}(t,{\bf x}) \) as \( \mbox{\tt fct}(t, {\bf x}, {\bf f}) \).

Constructor & Destructor Documentation

◆ FiniteElement() [1/2]

oomph::FiniteElement::FiniteElement ( )
inline

Constructor.

1783  : GeneralisedElement(),
1784  Integral_pt(0),
1785  Node_pt(0),
1786  Nodal_local_eqn(0),
1787  Nnode(0),
1789  Nodal_dimension(0),
1791  Macro_elem_pt(0)
1792  {
1793  }
Integral * Integral_pt
Pointer to the spatial integration scheme.
Definition: elements.h:1316
MacroElement * Macro_elem_pt
Pointer to the element's macro element (NULL by default)
Definition: elements.h:1683
unsigned Nodal_dimension
Definition: elements.h:1336
Node ** Node_pt
Storage for pointers to the nodes in the element.
Definition: elements.h:1319
unsigned Nnodal_position_type
Definition: elements.h:1344
unsigned Elemental_dimension
Definition: elements.h:1330
int ** Nodal_local_eqn
Definition: elements.h:1323
unsigned Nnode
Number of nodes in the element.
Definition: elements.h:1326
GeneralisedElement()
Constructor: Initialise all pointers and all values to zero.
Definition: elements.h:596

◆ ~FiniteElement()

FiniteElement::~FiniteElement ( )
virtual

The destructor cleans up the static memory allocated for shape function storage. Internal and external data get wiped by the GeneralisedElement destructor; nodes get killed in mesh destructor.

The destructor cleans up the memory allocated for storage of pointers to nodes. Internal and external data get wiped by the GeneralisedElement destructor; nodes get killed in mesh destructor.

3174  {
3175  // Delete the storage allocated for the pointers to the loca nodes
3176  delete[] Node_pt;
3177 
3178  // Delete the storage allocated for the nodal numbering schemes
3179  if (Nodal_local_eqn)
3180  {
3181  delete[] Nodal_local_eqn[0];
3182  delete[] Nodal_local_eqn;
3183  }
3184  }

References Nodal_local_eqn, and Node_pt.

◆ FiniteElement() [2/2]

oomph::FiniteElement::FiniteElement ( const FiniteElement )
delete

Broken copy constructor.

Member Function Documentation

◆ assemble_eulerian_base_vectors()

void FiniteElement::assemble_eulerian_base_vectors ( const DShape dpsids,
DenseMatrix< double > &  interpolated_G 
) const
protectedvirtual

Assemble the covariant Eulerian base vectors, assuming that the derivatives of the shape functions with respect to the local coordinates have already been constructed.

Assemble the covariant Eulerian base vectors and return them in the matrix interpolated_G. The derivatives of the shape functions with respect to the local coordinate should already have been calculated before calling this function

Reimplemented in oomph::RefineableElement.

2011  {
2012  // Find the number of nodes and position types
2013  const unsigned n_node = nnode();
2014  const unsigned n_position_type = nnodal_position_type();
2015  // Find the dimension of the node and element
2016  const unsigned n_dim_node = nodal_dimension();
2017  const unsigned n_dim_element = dim();
2018 
2019  // Loop over the dimensions and compute the entries of the
2020  // base vector matrix
2021  for (unsigned i = 0; i < n_dim_element; i++)
2022  {
2023  for (unsigned j = 0; j < n_dim_node; j++)
2024  {
2025  // Initialise the j-th component of the i-th base vector to zero
2026  interpolated_G(i, j) = 0.0;
2027  for (unsigned l = 0; l < n_node; l++)
2028  {
2029  for (unsigned k = 0; k < n_position_type; k++)
2030  {
2031  interpolated_G(i, j) +=
2032  raw_nodal_position_gen(l, k, j) * dpsids(l, k, i);
2033  }
2034  }
2035  }
2036  }
2037  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
unsigned nnodal_position_type() const
Definition: elements.h:2463
unsigned dim() const
Definition: elements.h:2611
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
unsigned nodal_dimension() const
Return the required Eulerian dimension of the nodes in this element.
Definition: elements.h:2484
double raw_nodal_position_gen(const unsigned &n, const unsigned &k, const unsigned &i) const
Definition: elements.h:2272
char char char int int * k
Definition: level2_impl.h:374
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References dim(), i, j, k, nnodal_position_type(), nnode(), nodal_dimension(), and raw_nodal_position_gen().

Referenced by J_eulerian(), and J_eulerian_at_knot().

◆ assemble_local_to_eulerian_jacobian()

void FiniteElement::assemble_local_to_eulerian_jacobian ( const DShape dpsids,
DenseMatrix< double > &  jacobian 
) const
protectedvirtual

Assemble the jacobian matrix for the mapping from local to Eulerian coordinates, given the derivatives of the shape function w.r.t the local coordinates.

Internal function that is used to assemble the jacobian of the mapping from local coordinates (s) to the eulerian coordinates (x), given the derivatives of the shape functions. The entire jacobian matrix is constructed and this function will only work if there are the same number of local coordinates as global coordinates (i.e. for "bulk" elements).

Reimplemented in oomph::RefineableElement.

1907  {
1908  // Locally cache the elemental dimension
1909  const unsigned el_dim = dim();
1910  // The number of shape functions must be equal to the number
1911  // of nodes (by definition)
1912  const unsigned n_shape = nnode();
1913  // The number of shape function types must be equal to the number
1914  // of nodal position types (by definition)
1915  const unsigned n_shape_type = nnodal_position_type();
1916 
1917 #ifdef PARANOID
1918  // Check for dimensional compatibility
1920  {
1921  std::ostringstream error_message;
1922  error_message << "Dimension mismatch" << std::endl;
1923  error_message << "The elemental dimension: " << Elemental_dimension
1924  << " must equal the nodal dimension: " << Nodal_dimension
1925  << " for the jacobian of the mapping to be well-defined"
1926  << std::endl;
1927  throw OomphLibError(
1928  error_message.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
1929  }
1930 #endif
1931 
1932 
1933  // Loop over the rows of the jacobian
1934  for (unsigned i = 0; i < el_dim; i++)
1935  {
1936  // Loop over the columns of the jacobian
1937  for (unsigned j = 0; j < el_dim; j++)
1938  {
1939  // Zero the entry
1940  jacobian(i, j) = 0.0;
1941  // Loop over the shape functions
1942  for (unsigned l = 0; l < n_shape; l++)
1943  {
1944  for (unsigned k = 0; k < n_shape_type; k++)
1945  {
1946  // Jacobian is dx_j/ds_i, which is represented by the sum
1947  // over the dpsi/ds_i of the nodal points X j
1948  // Call the Non-hanging version of positions
1949  // This is overloaded in refineable elements
1950  jacobian(i, j) += raw_nodal_position_gen(l, k, j) * dpsids(l, k, i);
1951  }
1952  }
1953  }
1954  }
1955  }
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
unsigned el_dim
dimension
Definition: overloaded_cartesian_element_body.h:30

References dim(), el_dim, Elemental_dimension, i, j, k, nnodal_position_type(), nnode(), Nodal_dimension, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and raw_nodal_position_gen().

Referenced by local_to_eulerian_mapping().

◆ assemble_local_to_eulerian_jacobian2()

void FiniteElement::assemble_local_to_eulerian_jacobian2 ( const DShape d2psids,
DenseMatrix< double > &  jacobian2 
) const
protectedvirtual

Assemble the the "jacobian" matrix of second derivatives of the mapping from local to Eulerian coordinates, given the second derivatives of the shape functions w.r.t. local coordinates.

Internal function that is used to assemble the jacobian of second derivatives of the mapping from local coordinates (s) to the eulerian coordinates (x), given the second derivatives of the shape functions.

Reimplemented in oomph::RefineableElement.

1965  {
1966  // Find the dimension of the element
1967  const unsigned el_dim = dim();
1968  // Find the number of shape functions and shape functions types
1969  // Must be equal to the number of nodes and their position types
1970  // by the definition of the shape function.
1971  const unsigned n_shape = nnode();
1972  const unsigned n_shape_type = nnodal_position_type();
1973  // Find the number of second derivatives
1974  const unsigned n_row = N2deriv[el_dim];
1975 
1976  // Assemble the "jacobian" (d^2 x_j/ds_i^2) for second derivatives of
1977  // shape functions
1978  // Loop over the rows (number of second derivatives)
1979  for (unsigned i = 0; i < n_row; i++)
1980  {
1981  // Loop over the columns (element dimension
1982  for (unsigned j = 0; j < el_dim; j++)
1983  {
1984  // Zero the entry
1985  jacobian2(i, j) = 0.0;
1986  // Loop over the shape functions
1987  for (unsigned l = 0; l < n_shape; l++)
1988  {
1989  // Loop over the shape function types
1990  for (unsigned k = 0; k < n_shape_type; k++)
1991  {
1992  // Add the terms to the jacobian entry
1993  // Call the Non-hanging version of positions
1994  // This is overloaded in refineable elements
1995  jacobian2(i, j) +=
1996  raw_nodal_position_gen(l, k, j) * d2psids(l, k, i);
1997  }
1998  }
1999  }
2000  }
2001  }
static const unsigned N2deriv[]
Definition: elements.h:1483

References dim(), el_dim, i, j, k, N2deriv, nnodal_position_type(), nnode(), and raw_nodal_position_gen().

Referenced by d2shape_eulerian(), and d2shape_eulerian_at_knot().

◆ assign_all_generic_local_eqn_numbers()

virtual void oomph::FiniteElement::assign_all_generic_local_eqn_numbers ( const bool store_local_dof_pt)
inlinevirtual

Overloaded version of the calculation of the local equation numbers. If the boolean argument is true then pointers to the degrees of freedom associated with each equation number are stored locally in the array Dof_pt.

Reimplemented from oomph::GeneralisedElement.

Reimplemented in oomph::RefineableQSpectralPoissonElement< DIM, NNODE_1D >, oomph::SpectralElement, oomph::FaceElementAsGeomObject< ELEMENT >, oomph::SolidFiniteElement, oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >, oomph::ElementWithSpecificMovingNodes< ELEMENT, SpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, PerturbedSpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, AlgebraicNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, MacroElementNodeUpdateNode >, and oomph::ElementWithMovingNodes.

2166  {
2167  // GeneralisedElement's version assigns internal and external data
2169  store_local_dof_pt);
2170  // Need simply to add the nodal numbering scheme
2171  assign_nodal_local_eqn_numbers(store_local_dof_pt);
2172  }
virtual void assign_nodal_local_eqn_numbers(const bool &store_local_dof_pt)
Definition: elements.cc:3544
virtual void assign_all_generic_local_eqn_numbers(const bool &store_local_dof_pt)
Definition: elements.h:253

References oomph::GeneralisedElement::assign_all_generic_local_eqn_numbers(), and assign_nodal_local_eqn_numbers().

Referenced by oomph::SolidFiniteElement::assign_all_generic_local_eqn_numbers(), oomph::FaceElementAsGeomObject< ELEMENT >::assign_all_generic_local_eqn_numbers(), oomph::SpectralElement::assign_all_generic_local_eqn_numbers(), and oomph::RefineableQSpectralPoissonElement< DIM, NNODE_1D >::assign_all_generic_local_eqn_numbers().

◆ assign_nodal_local_eqn_numbers()

void FiniteElement::assign_nodal_local_eqn_numbers ( const bool store_local_dof_pt)
virtual

Assign the local equation numbers for Data stored at the nodes Virtual so that it can be overloaded by RefineableFiniteElements. If the boolean is true then the pointers to the degrees of freedom associated with each equation number are stored in Dof_pt

This function loops over the nodal data of the element, adds the GLOBAL equation numbers to the local-to-global look-up scheme and fills in the Nodal_local_eqn look-up scheme for the local equation numbers If the boolean argument is true then pointers to the dofs will be stored in Dof_pt

Reimplemented in oomph::RefineableElement.

3546  {
3547  // Find the number of nodes
3548  const unsigned n_node = nnode();
3549  // If there are nodes
3550  if (n_node > 0)
3551  {
3552  // Find the number of local equations assigned so far
3553  unsigned local_eqn_number = ndof();
3554 
3555  // We need to find the total number of values stored at the node
3556  // Initialise to the number of values stored at the first node
3557  unsigned n_total_values = node_pt(0)->nvalue();
3558  // Loop over the other nodes and add the values stored
3559  for (unsigned n = 1; n < n_node; n++)
3560  {
3561  n_total_values += node_pt(n)->nvalue();
3562  }
3563 
3564  // If allocated delete the old storage
3565  if (Nodal_local_eqn)
3566  {
3567  delete[] Nodal_local_eqn[0];
3568  delete[] Nodal_local_eqn;
3569  }
3570 
3571  // If there are no values, we are done, null out the storage and
3572  // return
3573  if (n_total_values == 0)
3574  {
3575  Nodal_local_eqn = 0;
3576  return;
3577  }
3578 
3579  // Resize the storage for the nodal local equation numbers
3580  // Firstly allocate pointers to rows for each node
3581  Nodal_local_eqn = new int*[n_node];
3582  // Now allocate storage for the equation numbers
3583  Nodal_local_eqn[0] = new int[n_total_values];
3584  // initially all local equations are unclassified
3585  for (unsigned i = 0; i < n_total_values; i++)
3586  {
3588  }
3589 
3590  // Loop over the remaining rows and set their pointers
3591  for (unsigned n = 1; n < n_node; ++n)
3592  {
3593  // Initially set the pointer to the i-th row to the pointer
3594  // to the i-1th row
3596  // Now increase the row pointer by the number of values
3597  // stored at the i-1th node
3598  Nodal_local_eqn[n] += Node_pt[n - 1]->nvalue();
3599  }
3600 
3601 
3602  // A local queue to store the global equation numbers
3603  std::deque<unsigned long> global_eqn_number_queue;
3604 
3605  // Now loop over the nodes again and assign local equation numbers
3606  for (unsigned n = 0; n < n_node; n++)
3607  {
3608  // Pointer to node
3609  Node* const nod_pt = node_pt(n);
3610 
3611  // Find the number of values stored at the node
3612  unsigned n_value = nod_pt->nvalue();
3613 
3614  // Loop over the number of values
3615  for (unsigned j = 0; j < n_value; j++)
3616  {
3617  // Get the GLOBAL equation number
3618  long eqn_number = nod_pt->eqn_number(j);
3619  // If the GLOBAL equation number is positive (a free variable)
3620  if (eqn_number >= 0)
3621  {
3622  // Add the GLOBAL equation number to the queue
3623  global_eqn_number_queue.push_back(eqn_number);
3624  // Add pointer to the dof to the queue if required
3625  if (store_local_dof_pt)
3626  {
3627  GeneralisedElement::Dof_pt_deque.push_back(nod_pt->value_pt(j));
3628  }
3629  // Add the local equation number to the local scheme
3631  // Increase the local number
3632  local_eqn_number++;
3633  }
3634  else
3635  {
3636  // Set the local scheme to be pinned
3638  }
3639  }
3640  }
3641 
3642  // Now add our global equations numbers to the internal element storage
3643  add_global_eqn_numbers(global_eqn_number_queue,
3645  // Clear the memory used in the deque
3646  if (store_local_dof_pt)
3647  {
3648  std::deque<double*>().swap(GeneralisedElement::Dof_pt_deque);
3649  }
3650  }
3651  }
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
static long Is_pinned
Static "Magic number" to indicate pinned values.
Definition: nodes.h:183
unsigned nvalue() const
Return number of values stored in data object (incl pinned ones).
Definition: nodes.h:483
static long Is_unclassified
Definition: nodes.h:192
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
unsigned ndof() const
Return the number of equations/dofs in the element.
Definition: elements.h:835
unsigned long eqn_number(const unsigned &ieqn_local) const
Definition: elements.h:704
static std::deque< double * > Dof_pt_deque
Definition: elements.h:231
int local_eqn_number(const unsigned long &ieqn_global) const
Definition: elements.h:726
void add_global_eqn_numbers(std::deque< unsigned long > const &global_eqn_numbers, std::deque< double * > const &global_dof_pt)
Definition: elements.cc:156

References oomph::GeneralisedElement::add_global_eqn_numbers(), oomph::GeneralisedElement::Dof_pt_deque, oomph::Data::eqn_number(), oomph::GeneralisedElement::eqn_number(), i, oomph::Data::Is_pinned, oomph::Data::Is_unclassified, j, oomph::GeneralisedElement::local_eqn_number(), n, oomph::GeneralisedElement::ndof(), nnode(), Nodal_local_eqn, Node_pt, node_pt(), oomph::Data::nvalue(), and oomph::Data::value_pt().

Referenced by assign_all_generic_local_eqn_numbers(), and oomph::RefineableElement::assign_nodal_local_eqn_numbers().

◆ build_face_element()

void FiniteElement::build_face_element ( const int face_index,
FaceElement face_element_pt 
)
virtual

Function for building a lower dimensional FaceElement on the specified face of the FiniteElement. The arguments are the index of the face, an integer whose value depends on the particular element type, and a pointer to the FaceElement.

Reimplemented in oomph::SolidTElement< 3, NNODE_1D >, oomph::SolidTElement< 2, NNODE_1D >, oomph::SolidTElement< 1, NNODE_1D >, oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::SolidQElement< 3, NNODE_1D >, oomph::SolidQElement< 2, NNODE_1D >, oomph::SolidQElement< 1, NNODE_1D >, oomph::SolidQHermiteElement< DIM >, oomph::SolidQHermiteElement< 1 >, oomph::SolidQHermiteElement< 2 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, and oomph::QHermiteElement< DIM - 1 >.

5134  {
5135  // Set the nodal dimension
5136  face_element_pt->set_nodal_dimension(nodal_dimension());
5137 
5138  // Set the pointer to the orginal "bulk" element
5139  face_element_pt->bulk_element_pt() = this;
5140 
5141 #ifdef OOMPH_HAS_MPI
5142  // Pass on non-halo proc ID
5143  face_element_pt->set_halo(Non_halo_proc_ID);
5144 #endif
5145 
5146  // Set the face index
5147  face_element_pt->face_index() = face_index;
5148 
5149  // Get number of bulk nodes on a face of this element
5150  const unsigned nnode_face = nnode_on_face();
5151 
5152  // Set the function pointer for face coordinate to bulk coordinate
5153  // mapping
5154  face_element_pt->face_to_bulk_coordinate_fct_pt() =
5155  face_to_bulk_coordinate_fct_pt(face_index);
5156 
5157  // Set the function pointer for the derivative of the face coordinate to
5158  // bulk coordinate mapping
5159  face_element_pt->bulk_coordinate_derivatives_fct_pt() =
5161 
5162  // Resize storage for the number of values originally stored each of the
5163  // face element's nodes.
5164  face_element_pt->nbulk_value_resize(nnode_face);
5165 
5166  // Resize storage for the bulk node numbers corresponding to the face
5167  // element's nodes.
5168  face_element_pt->bulk_node_number_resize(nnode_face);
5169 
5170  // Copy bulk_node_numbers and nbulk_values
5171  for (unsigned i = 0; i < nnode_face; i++)
5172  {
5173  // Find the corresponding bulk node's number
5174  unsigned bulk_number = get_bulk_node_number(face_index, i);
5175 
5176  // Assign the pointer and number into the face element
5177  face_element_pt->node_pt(i) = node_pt(bulk_number);
5178  face_element_pt->bulk_node_number(i) = bulk_number;
5179 
5180  // Set the number of values originally stored at this node
5181  face_element_pt->nbulk_value(i) = required_nvalue(bulk_number);
5182  }
5183 
5184  // Set the outer unit normal sign
5185  face_element_pt->normal_sign() = face_outer_unit_normal_sign(face_index);
5186  }
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.
Definition: elements.h:3380
virtual unsigned get_bulk_node_number(const int &face_index, const unsigned &i) const
Definition: elements.h:3371
virtual unsigned required_nvalue(const unsigned &n) const
Definition: elements.h:2455
virtual BulkCoordinateDerivativesFctPt bulk_coordinate_derivatives_fct_pt(const int &face_index) const
Definition: elements.h:3419
virtual unsigned nnode_on_face() const
Definition: elements.h:3387
virtual CoordinateMappingFctPt face_to_bulk_coordinate_fct_pt(const int &face_index) const
Definition: elements.h:3409

References oomph::FaceElement::bulk_coordinate_derivatives_fct_pt(), bulk_coordinate_derivatives_fct_pt(), oomph::FaceElement::bulk_element_pt(), oomph::FaceElement::bulk_node_number(), oomph::FaceElement::bulk_node_number_resize(), oomph::FaceElement::face_index(), face_outer_unit_normal_sign(), oomph::FaceElement::face_to_bulk_coordinate_fct_pt(), face_to_bulk_coordinate_fct_pt(), get_bulk_node_number(), i, oomph::FaceElement::nbulk_value(), oomph::FaceElement::nbulk_value_resize(), nnode_on_face(), nodal_dimension(), node_pt(), oomph::FaceElement::normal_sign(), required_nvalue(), and set_nodal_dimension().

Referenced by oomph::AdvectionDiffusionFluxElement< ELEMENT >::AdvectionDiffusionFluxElement(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::AxisymmetricLinearElasticityTractionElement(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::AxisymmetricNavierStokesTractionElement(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::AxisymmetricPoroelasticityTractionElement(), oomph::AxisymmetricSolidTractionElement< ELEMENT >::AxisymmetricSolidTractionElement(), oomph::BiharmonicFluxElement< DIM >::BiharmonicFluxElement(), oomph::ClampedHermiteShellBoundaryConditionElement::ClampedHermiteShellBoundaryConditionElement(), oomph::ClampedSlidingHermiteBeamBoundaryConditionElement::ClampedSlidingHermiteBeamBoundaryConditionElement(), oomph::DarcyFaceElement< ELEMENT >::DarcyFaceElement(), oomph::DGEulerFaceElement< ELEMENT >::DGEulerFaceElement(), oomph::DGEulerFaceReflectionElement< ELEMENT >::DGEulerFaceReflectionElement(), oomph::DGScalarAdvectionFaceElement< ELEMENT >::DGScalarAdvectionFaceElement(), DragNusseltCalculationElement< ELEMENT >::DragNusseltCalculationElement(), oomph::DummyFaceElement< ELEMENT >::DummyFaceElement(), oomph::ElasticAxisymmetricVolumeConstraintBoundingElement< ELEMENT >::ElasticAxisymmetricVolumeConstraintBoundingElement(), oomph::ElasticLineVolumeConstraintBoundingElement< ELEMENT >::ElasticLineVolumeConstraintBoundingElement(), oomph::ElasticSurfaceVolumeConstraintBoundingElement< ELEMENT >::ElasticSurfaceVolumeConstraintBoundingElement(), oomph::ElasticUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >::ElasticUpdateFluidInterfaceElement(), oomph::FaceElementAsGeomObject< ELEMENT >::FaceElementAsGeomObject(), oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >::FourierDecomposedHelmholtzBCElementBase(), oomph::FourierDecomposedHelmholtzFluxElement< ELEMENT >::FourierDecomposedHelmholtzFluxElement(), oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement(), oomph::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement(), oomph::FpPressureAdvDiffRobinBCElement< ELEMENT >::FpPressureAdvDiffRobinBCElement(), oomph::FpPressureAdvDiffRobinBCMixedOrderSpaceTimeElement< ELEMENT >::FpPressureAdvDiffRobinBCMixedOrderSpaceTimeElement(), oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >::FpPressureAdvDiffRobinBCSpaceTimeElement(), oomph::FSIAxisymmetricLinearElasticityTractionElement< ELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::FSIAxisymmetricLinearElasticityTractionElement(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::FSIImposeDisplacementByLagrangeMultiplierElement(), oomph::HeatedPenetratorFluxElement< ELEMENT >::HeatedPenetratorFluxElement(), oomph::HelmholtzBCElementBase< ELEMENT >::HelmholtzBCElementBase(), oomph::HelmholtzFluxElement< ELEMENT >::HelmholtzFluxElement(), oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::HelmholtzFluxFromNormalDisplacementBCElement(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::ImposeDisplacementByLagrangeMultiplierElement(), oomph::ImposeImpenetrabilityElement< ELEMENT >::ImposeImpenetrabilityElement(), oomph::ImposeParallelOutflowElement< ELEMENT >::ImposeParallelOutflowElement(), oomph::LinearElasticityTractionElement< ELEMENT >::LinearElasticityTractionElement(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::LinearisedAxisymPoroelasticBJS_FSIElement(), oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >::LinearisedFSIAxisymmetricNStNoSlipBCElementElement(), oomph::LinearWaveFluxElement< ELEMENT >::LinearWaveFluxElement(), oomph::SpineUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >::make_bounding_element(), oomph::NavierStokesFluxControlElement< ELEMENT >::NavierStokesFluxControlElement(), oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::NavierStokesImpedanceTractionElement(), oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >::NavierStokesMixedOrderSpaceTimeTractionElement(), oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >::NavierStokesSpaceTimeTractionElement(), oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >::NavierStokesSurfaceDragTorqueElement(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::NavierStokesSurfacePowerElement(), oomph::NavierStokesTractionElement< ELEMENT >::NavierStokesTractionElement(), oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement(), oomph::PMLFourierDecomposedHelmholtzFluxElement< ELEMENT >::PMLFourierDecomposedHelmholtzFluxElement(), oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >::PMLFourierDecomposedHelmholtzPowerMonitorElement(), oomph::PMLHelmholtzFluxElement< ELEMENT >::PMLHelmholtzFluxElement(), oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::PMLHelmholtzFluxFromNormalDisplacementBCElement(), oomph::PMLHelmholtzPowerElement< ELEMENT >::PMLHelmholtzPowerElement(), oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >::PMLTimeHarmonicLinearElasticityTractionElement(), oomph::PoissonFluxElement< ELEMENT >::PoissonFluxElement(), oomph::PolarNavierStokesTractionElement< ELEMENT >::PolarNavierStokesTractionElement(), oomph::PolarStreamfunctionTractionElement< ELEMENT >::PolarStreamfunctionTractionElement(), oomph::PolarStressIntegralElement< ELEMENT >::PolarStressIntegralElement(), oomph::PoroelasticityFaceElement< ELEMENT >::PoroelasticityFaceElement(), oomph::SolidTractionElement< ELEMENT >::SolidTractionElement(), oomph::SphericalAdvectionDiffusionFluxElement< ELEMENT >::SphericalAdvectionDiffusionFluxElement(), oomph::SpineAxisymmetricVolumeConstraintBoundingElement< ELEMENT >::SpineAxisymmetricVolumeConstraintBoundingElement(), SpineGravityTractionElement< ELEMENT >::SpineGravityTractionElement(), oomph::SpineLineVolumeConstraintBoundingElement< ELEMENT >::SpineLineVolumeConstraintBoundingElement(), oomph::SpineSurfaceVolumeConstraintBoundingElement< ELEMENT >::SpineSurfaceVolumeConstraintBoundingElement(), oomph::SpineUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >::SpineUpdateFluidInterfaceElement(), oomph::SteadyAxisymAdvectionDiffusionFluxElement< ELEMENT >::SteadyAxisymAdvectionDiffusionFluxElement(), oomph::SurfaceContactElementBase< ELEMENT >::SurfaceContactElementBase(), oomph::TimeHarmonicFourierDecomposedLinearElasticityTractionElement< ELEMENT >::TimeHarmonicFourierDecomposedLinearElasticityTractionElement(), oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >::TimeHarmonicLinearElasticityTractionElement(), oomph::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement(), oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement(), TorqueCalculationElement< ELEMENT >::TorqueCalculationElement(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::UnsteadyHeatBaseFaceElement(), oomph::UnsteadyHeatFluxElement< ELEMENT >::UnsteadyHeatFluxElement(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::UnsteadyHeatFluxPseudoMeltElement(), and oomph::YoungLaplaceContactAngleElement< ELEMENT >::YoungLaplaceContactAngleElement().

◆ bulk_coordinate_derivatives_fct_pt()

virtual BulkCoordinateDerivativesFctPt oomph::FiniteElement::bulk_coordinate_derivatives_fct_pt ( const int face_index) const
inlinevirtual

Get a pointer to the derivative of the mapping from face to bulk coordinates.

Reimplemented in oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, and oomph::QElement< 1, NNODE_1D >.

3421  {
3422  std::string err = "Not implemented for this element.";
3423  throw OomphLibError(
3425  }
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

Referenced by build_face_element().

◆ check_J_eulerian_at_knots()

void FiniteElement::check_J_eulerian_at_knots ( bool passed) const

Check that Jacobian of mapping between local and Eulerian coordinates at all integration points is positive.

4238  {
4239  // Bypass check deep down in the guts...
4242 
4243  // Let's be optimistic...
4244  passed = true;
4245 
4246  // Find the number of nodes
4247  const unsigned n_node = nnode();
4248 
4249  // Find the number of position types
4250  const unsigned n_position_type = nnodal_position_type();
4251 
4252  // DRAIG: Unused variable
4253  // const unsigned n_dim_node = nodal_dimension();
4254 
4255  // Find the dimension of the node and element
4256  const unsigned n_dim_element = dim();
4257 
4258  // Set up dummy memory for the shape functions
4259  Shape psi(n_node, n_position_type);
4260  DShape dpsi(n_node, n_dim_element);
4261 
4262  unsigned nintpt = integral_pt()->nweight();
4263  for (unsigned ipt = 0; ipt < nintpt; ipt++)
4264  {
4265  double jac = dshape_eulerian_at_knot(ipt, psi, dpsi);
4266 
4267  // Are we dead yet?
4268  if (jac <= 0.0)
4269  {
4270  passed = false;
4271 
4272  // Reset
4274 
4275  return;
4276  }
4277  }
4278 
4279  // Reset
4281  }
static bool Accept_negative_jacobian
Definition: elements.h:1775
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
Definition: elements.h:1963
virtual double dshape_eulerian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsidx) const
Definition: elements.cc:3325
virtual unsigned nweight() const =0
Return the number of integration points of the scheme.

References Accept_negative_jacobian, dim(), dshape_eulerian_at_knot(), integral_pt(), nnodal_position_type(), nnode(), and oomph::Integral::nweight().

Referenced by oomph::TetMeshBase::snap_nodes_onto_geometric_objects(), and oomph::WomersleyMesh< WOMERSLEY_ELEMENT >::WomersleyMesh().

◆ check_jacobian()

void FiniteElement::check_jacobian ( const double jacobian) const

Helper function used to check for singular or negative Jacobians in the transform from local to global or Lagrangian coordinates.

Internal function used to check for singular or negative values of the determinant of the Jacobian of the mapping between local and global or lagrangian coordinates. Negative jacobians are allowed if the Accept_negative_jacobian flag is set to true.

1751  {
1752  // First check for a zero jacobian
1754  {
1756  {
1757  throw OomphLibQuietException();
1758  }
1759  else
1760  {
1761  std::ostringstream error_stream;
1762  error_stream
1763  << "Determinant of Jacobian matrix is zero --- "
1764  << "singular mapping!\nThe determinant of the "
1765  << "jacobian is " << std::fabs(jacobian)
1766  << " which is smaller than the treshold "
1768  << "You can change this treshold, by specifying "
1769  << "FiniteElement::Tolerance_for_singular_jacobian \n"
1770  << "Here are the nodal coordinates of the inverted element\n"
1771  << "in the form \n\n x,y[,z], hang_status\n\n"
1772  << "where hang_status = 1 or 2 for non-hanging or hanging\n"
1773  << "nodes respectively (useful for automatic sizing of\n"
1774  << "tecplot markers to identify the hanging nodes). \n\n";
1775  unsigned n_dim_nod = node_pt(0)->ndim();
1776  unsigned n_nod = nnode();
1777  unsigned hang_count = 0;
1778  for (unsigned j = 0; j < n_nod; j++)
1779  {
1780  for (unsigned i = 0; i < n_dim_nod; i++)
1781  {
1782  error_stream << node_pt(j)->x(i) << " ";
1783  }
1784  if (node_pt(j)->is_hanging())
1785  {
1786  error_stream << " 2";
1787  hang_count++;
1788  }
1789  else
1790  {
1791  error_stream << " 1";
1792  }
1793  error_stream << std::endl;
1794  }
1795  error_stream << std::endl << std::endl;
1796  if ((Macro_elem_pt != 0) && (0 != hang_count))
1797  {
1798  error_stream
1799  << "NOTE: Offending element is associated with a MacroElement\n"
1800  << " AND the element has hanging nodes! \n"
1801  << " If an element is thin and highly curved, the \n"
1802  << " constraints imposed by\n \n"
1803  << " (1) inter-element continuity (imposed by the hanging\n"
1804  << " node constraints) and \n\n"
1805  << " (2) the need to respect curvilinear domain boundaries\n"
1806  << " during mesh refinement (imposed by the element's\n"
1807  << " macro element mapping)\n\n"
1808  << " may be irreconcilable! \n \n"
1809  << " You may have to re-design your base mesh to avoid \n"
1810  << " the creation of thin, highly curved elements during\n"
1811  << " the refinement process.\n"
1812  << std::endl;
1813  }
1814  throw OomphLibError(
1815  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
1816  }
1817  }
1818 
1819 
1820  // Now check for negative jacobians, if we're not allowing them (default)
1821  if ((Accept_negative_jacobian == false) && (jacobian < 0.0))
1822  {
1824  {
1825  throw OomphLibQuietException();
1826  }
1827  else
1828  {
1829  std::ostringstream error_stream;
1830  error_stream << "Negative Jacobian in transform from "
1831  << "local to global coordinates" << std::endl
1832  << " You have an inverted coordinate system!"
1833  << std::endl
1834  << std::endl;
1835  error_stream
1836  << "Here are the nodal coordinates of the inverted element\n"
1837  << "in the form \n\n x,y[,z], hang_status\n\n"
1838  << "where hang_status = 1 or 2 for non-hanging or hanging\n"
1839  << "nodes respectively (useful for automatic sizing of\n"
1840  << "tecplot markers to identify the hanging nodes). \n\n";
1841  unsigned n_dim_nod = node_pt(0)->ndim();
1842  unsigned n_nod = nnode();
1843  unsigned hang_count = 0;
1844  for (unsigned j = 0; j < n_nod; j++)
1845  {
1846  for (unsigned i = 0; i < n_dim_nod; i++)
1847  {
1848  error_stream << node_pt(j)->x(i) << " ";
1849  }
1850  if (node_pt(j)->is_hanging())
1851  {
1852  error_stream << " 2";
1853  hang_count++;
1854  }
1855  else
1856  {
1857  error_stream << " 1";
1858  }
1859  error_stream << std::endl;
1860  }
1861  error_stream << std::endl << std::endl;
1862  if ((Macro_elem_pt != 0) && (0 != hang_count))
1863  {
1864  error_stream
1865  << "NOTE: The inverted element is associated with a MacroElement\n"
1866  << " AND the element has hanging nodes! \n"
1867  << " If an element is thin and highly curved, the \n"
1868  << " constraints imposed by\n \n"
1869  << " (1) inter-element continuity (imposed by the hanging\n"
1870  << " node constraints) and \n\n"
1871  << " (2) the need to respect curvilinear domain boundaries\n"
1872  << " during mesh refinement (imposed by the element's\n"
1873  << " macro element mapping)\n\n"
1874  << " may be irreconcilable! \n \n"
1875  << " You may have to re-design your base mesh to avoid \n"
1876  << " the creation of thin, highly curved elements during\n"
1877  << " the refinement process.\n"
1878  << std::endl;
1879  }
1880 
1881  error_stream
1882  << std::endl
1883  << std::endl
1884  << "If you believe that inverted elements do not cause any\n"
1885  << "problems in your specific application you can \n "
1886  << "suppress this test by: " << std::endl
1887  << " i) setting the (static) flag "
1888  << "FiniteElement::Accept_negative_jacobian to be true" << std::endl;
1889  error_stream << " ii) switching OFF the PARANOID flag" << std::endl
1890  << std::endl;
1891 
1892  throw OomphLibError(
1893  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
1894  }
1895  }
1896  }
static double Tolerance_for_singular_jacobian
Tolerance below which the jacobian is considered singular.
Definition: elements.h:1770
static bool Suppress_output_while_checking_for_inverted_elements
Definition: elements.h:1779
double & x(const unsigned &i)
Return the i-th nodal coordinate.
Definition: nodes.h:1060
unsigned ndim() const
Return (Eulerian) spatial dimension of the node.
Definition: nodes.h:1054
Real fabs(const Real &a)
Definition: boostmultiprec.cpp:117

References Accept_negative_jacobian, boost::multiprecision::fabs(), i, j, Macro_elem_pt, oomph::Node::ndim(), nnode(), node_pt(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, Suppress_output_while_checking_for_inverted_elements, Tolerance_for_singular_jacobian, and oomph::Node::x().

Referenced by oomph::Mesh::check_inverted_elements(), invert_jacobian(), local_to_eulerian_mapping_diagonal(), oomph::RefineableElement::local_to_eulerian_mapping_diagonal(), oomph::SolidFiniteElement::local_to_lagrangian_mapping_diagonal(), and oomph::RefineableSolidElement::local_to_lagrangian_mapping_diagonal().

◆ compute_abs_error()

virtual void oomph::FiniteElement::compute_abs_error ( std::ostream &  outfile,
FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt,
double error 
)
inlinevirtual

Plot the error when compared against a given exact solution \( {\bf f}({\bf x}) \). Also calculates the maximum absolute error

3334  {
3335  std::string error_message =
3336  "compute_abs_error undefined for this element \n";
3337  outfile << error_message;
3338 
3339  throw OomphLibError(
3341  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

◆ compute_error() [1/8]

virtual void oomph::FiniteElement::compute_error ( FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt,
double error,
double norm 
)
inlinevirtual

Calculate the norm of the error and that of the exact solution.

Reimplemented in oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::NavierStokesEquations< DIM >, and oomph::NavierStokesEquations< 2 >.

3202  {
3203  std::string error_message = "compute_error undefined for this element \n";
3204  throw OomphLibError(
3206  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

Referenced by RefineableBuoyantQCrouzeixRaviartElement< DIM >::compute_error(), RefineableQCrouzeixRaviartElementWithExternalElement< DIM >::compute_error(), RefineableQAdvectionDiffusionElementWithExternalElement< DIM >::compute_error(), QThermalPVDElement< DIM >::compute_error(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::compute_error(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::compute_error(), oomph::AxisymmetricQAdvectionCrouzeixRaviartElement::compute_error(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::compute_error(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::compute_error(), oomph::BiharmonicEquations< DIM >::compute_error(), oomph::Mesh::compute_error(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::compute_error(), and oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::compute_error().

◆ compute_error() [2/8]

virtual void oomph::FiniteElement::compute_error ( FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt,
Vector< double > &  error,
Vector< double > &  norm 
)
inlinevirtual

Given the exact solution \( {\bf f}({\bf x}) \) this function calculates the norm of the error and that of the exact solution. Version with vectors of norms and errors so that different variables' norms and errors can be returned individually

3229  {
3230  std::string error_message = "compute_error undefined for this element \n";
3231  throw OomphLibError(
3233  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

◆ compute_error() [3/8]

virtual void oomph::FiniteElement::compute_error ( FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt,
const double time,
double error,
double norm 
)
inlinevirtual

Calculate the norm of the error and that of the exact solution.

Reimplemented in oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::NavierStokesEquations< DIM >, and oomph::NavierStokesEquations< 2 >.

3214  {
3215  std::string error_message = "time-dependent compute_error ";
3216  error_message += "undefined for this element \n";
3217  throw OomphLibError(
3219  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

◆ compute_error() [4/8]

virtual void oomph::FiniteElement::compute_error ( FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt,
const double time,
Vector< double > &  error,
Vector< double > &  norm 
)
inlinevirtual

Given the exact solution \( {\bf f}({\bf x}) \) this function calculates the norm of the error and that of the exact solution. Version with vectors of norms and errors so that different variables' norms and errors can be returned individually

3244  {
3245  std::string error_message = "time-dependent compute_error ";
3246  error_message += "undefined for this element \n";
3247  throw OomphLibError(
3249  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

◆ compute_error() [5/8]

virtual void oomph::FiniteElement::compute_error ( std::ostream &  outfile,
FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt,
double error,
double norm 
)
inlinevirtual

Plot the error when compared against a given exact solution \( {\bf f}({\bf x}) \). Also calculates the norm of the error and that of the exact solution.

Reimplemented in oomph::YoungLaplaceEquations, oomph::WomersleyEquations< DIM >, oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations, oomph::SteadyAxisymAdvectionDiffusionEquations, oomph::SphericalNavierStokesEquations, oomph::SphericalAdvectionDiffusionEquations, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::PolarNavierStokesEquations, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::PMLTimeHarmonicLinearElasticityEquations< DIM >, oomph::PMLHelmholtzEquations< DIM >, oomph::PMLFourierDecomposedHelmholtzEquations, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearWaveEquations< DIM >, oomph::LinearElasticityEquations< DIM >, oomph::HelmholtzEquations< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::FourierDecomposedHelmholtzEquations, oomph::FoepplvonKarmanEquations, oomph::DisplacementBasedFoepplvonKarmanEquations, oomph::BiharmonicFluidBoundaryElement, oomph::BiharmonicFluxElement< DIM >, oomph::BiharmonicElement< DIM >, oomph::BiharmonicEquations< DIM >, oomph::AxisymmetricNavierStokesEquations, oomph::AxisymmetricLinearElasticityEquations, oomph::AxisymFoepplvonKarmanEquations, oomph::AxisymFoepplvonKarmanEquations, oomph::AxisymAdvectionDiffusionEquations, oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >, oomph::GeneralisedAdvectionDiffusionEquations< DIM >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::MultiPoissonEquations< DIM, NFIELDS >, and oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >.

3261  {
3262  std::string error_message = "compute_error undefined for this element \n";
3263  outfile << error_message;
3264 
3265  throw OomphLibError(
3267  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

◆ compute_error() [6/8]

virtual void oomph::FiniteElement::compute_error ( std::ostream &  outfile,
FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt,
Vector< double > &  error,
Vector< double > &  norm 
)
inlinevirtual

Plot the error when compared against a given exact solution \( {\bf f}({\bf x}) \). Also calculates the norm of the error and that of the exact solution. The version with vectors of norms and errors so that different variables' norms and errors can be returned individually

Reimplemented in oomph::PoroelasticityEquations< DIM >, oomph::PoroelasticityEquations< 2 >, oomph::DarcyEquations< DIM >, oomph::DarcyEquations< 2 >, and oomph::AxisymmetricPoroelasticityEquations.

3297  {
3298  std::string error_message = "compute_error undefined for this element \n";
3299  outfile << error_message;
3300 
3301  throw OomphLibError(error_message,
3302  "FiniteElement::compute_error()",
3304  }

References OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

◆ compute_error() [7/8]

virtual void oomph::FiniteElement::compute_error ( std::ostream &  outfile,
FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt,
const double time,
double error,
double norm 
)
inlinevirtual

Plot the error when compared against a given time-dependent exact solution \( {\bf f}(t,{\bf x}) \). Also calculates the norm of the error and that of the exact solution.

Reimplemented in oomph::YoungLaplaceEquations, oomph::WomersleyEquations< DIM >, oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::SphericalNavierStokesEquations, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::PolarNavierStokesEquations, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::PMLTimeHarmonicLinearElasticityEquations< DIM >, oomph::PMLHelmholtzEquations< DIM >, oomph::PMLFourierDecomposedHelmholtzEquations, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearWaveEquations< DIM >, oomph::LinearElasticityEquations< DIM >, oomph::HelmholtzEquations< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::FourierDecomposedHelmholtzEquations, oomph::FoepplvonKarmanEquations, oomph::DisplacementBasedFoepplvonKarmanEquations, oomph::BiharmonicElement< DIM >, oomph::BiharmonicEquations< DIM >, oomph::AxisymmetricNavierStokesEquations, oomph::AxisymmetricLinearElasticityEquations, oomph::AxisymFoepplvonKarmanEquations, oomph::AxisymFoepplvonKarmanEquations, oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >, oomph::GeneralisedAdvectionDiffusionEquations< DIM >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::MultiPoissonEquations< DIM, NFIELDS >, and oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >.

3278  {
3279  std::string error_message =
3280  "time-dependent compute_error undefined for this element \n";
3281  outfile << error_message;
3282 
3283  throw OomphLibError(
3285  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

◆ compute_error() [8/8]

virtual void oomph::FiniteElement::compute_error ( std::ostream &  outfile,
FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt,
const double time,
Vector< double > &  error,
Vector< double > &  norm 
)
inlinevirtual

Plot the error when compared against a given time-dependent exact solution \( {\bf f}(t,{\bf x}) \). Also calculates the norm of the error and that of the exact solution. The version with vectors of norms and errors so that different variables' norms and errors can be returned individually

Reimplemented in oomph::ScalarAdvectionEquations< DIM >, oomph::EulerEquations< DIM >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::PoroelasticityEquations< DIM >, oomph::PoroelasticityEquations< 2 >, and oomph::AxisymmetricPoroelasticityEquations.

3317  {
3318  std::string error_message =
3319  "time-dependent compute_error undefined for this element \n";
3320  outfile << error_message;
3321 
3322  throw OomphLibError(error_message,
3323  "FiniteElement::compute_error()",
3325  }

References OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

◆ compute_physical_size()

virtual double oomph::FiniteElement::compute_physical_size ( ) const
inlinevirtual

Broken virtual function to compute the actual size (taking into account factors such as 2pi or radii the integrand) – such function can only be implemented on an equation-by-equation basis.

Reimplemented in oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::AxisymmetricPVDEquationsWithPressure, oomph::AxisymmetricPVDEquations, and oomph::AxisymmetricNavierStokesEquations.

2826  {
2827  throw OomphLibError(
2828  "compute_physical_size() isn't implemented for this element\n",
2831  // Dummy return
2832  return 0.0;
2833  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::MyProblem::min_element_size().

◆ construct_boundary_node() [1/2]

virtual Node* oomph::FiniteElement::construct_boundary_node ( const unsigned n)
inlinevirtual

Construct the local node n as a boundary node; that is a node that MAY be placed on a mesh boundary and return a pointer to the newly created node object.

Reimplemented in oomph::SolidFiniteElement, oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >, oomph::ElementWithSpecificMovingNodes< ELEMENT, SpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, PerturbedSpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, AlgebraicNode >, and oomph::ElementWithSpecificMovingNodes< ELEMENT, MacroElementNodeUpdateNode >.

2539  {
2540  // Create a node and assign it to the local node pointer
2541  // The dimension and number of values are taken from internal element data
2542  node_pt(n) = new BoundaryNode<Node>(
2544  // Now return a pointer to the node, so that the mesh can use it
2545  return node_pt(n);
2546  }

References n, Nnodal_position_type, Nodal_dimension, node_pt(), and required_nvalue().

Referenced by oomph::GmshTetMesh< ELEMENT >::build_from_scaffold(), oomph::TetgenMesh< ELEMENT >::build_from_scaffold(), oomph::TriangleMesh< ELEMENT >::build_from_scaffold(), oomph::BrickFromTetMesh< ELEMENT >::build_mesh(), oomph::ChannelWithLeafletMesh< ELEMENT >::ChannelWithLeafletMesh(), oomph::DGElement::construct_boundary_nodes_and_faces(), oomph::Mesh::convert_to_boundary_node(), oomph::GeompackQuadScaffoldMesh::GeompackQuadScaffoldMesh(), oomph::QuarterCircleSectorMesh< ELEMENT >::QuarterCircleSectorMesh(), oomph::TetMeshBase::split_elements_in_corners(), oomph::TetgenScaffoldMesh::TetgenScaffoldMesh(), and oomph::TriangleScaffoldMesh::TriangleScaffoldMesh().

◆ construct_boundary_node() [2/2]

virtual Node* oomph::FiniteElement::construct_boundary_node ( const unsigned n,
TimeStepper *const &  time_stepper_pt 
)
inlinevirtual

Construct the local node n, including storage for history values required by timestepper, as a boundary node; that is a node that MAY be placed on a mesh boundary and return a pointer to the newly created node object.

Reimplemented in oomph::SolidFiniteElement, oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >, oomph::ElementWithSpecificMovingNodes< ELEMENT, SpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, PerturbedSpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, AlgebraicNode >, and oomph::ElementWithSpecificMovingNodes< ELEMENT, MacroElementNodeUpdateNode >.

2554  {
2555  // Create a node and assign it to the local node pointer.
2556  // The dimension and number of values are taken from internal element data
2557  node_pt(n) = new BoundaryNode<Node>(time_stepper_pt,
2560  required_nvalue(n));
2561  // Now return a pointer to the node, so that the mesh can find it
2562  return node_pt(n);
2563  }
TimeStepper *& time_stepper_pt()
Definition: geom_objects.h:192

References n, Nnodal_position_type, Nodal_dimension, node_pt(), required_nvalue(), and oomph::GeomObject::time_stepper_pt().

◆ construct_node() [1/2]

virtual Node* oomph::FiniteElement::construct_node ( const unsigned n)
inlinevirtual

Construct the local node n and return a pointer to the newly created node object.

Reimplemented in oomph::SolidFiniteElement, oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >, oomph::ElementWithSpecificMovingNodes< ELEMENT, SpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, PerturbedSpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, AlgebraicNode >, and oomph::ElementWithSpecificMovingNodes< ELEMENT, MacroElementNodeUpdateNode >.

2510  {
2511  // Create a node and assign it to the local node pointer
2512  // The dimension and number of values are taken from internal element data
2513  node_pt(n) =
2515  // Now return a pointer to the node, so that the mesh can use it
2516  return node_pt(n);
2517  }

References n, Nnodal_position_type, Nodal_dimension, node_pt(), and required_nvalue().

Referenced by oomph::GmshTetMesh< ELEMENT >::build_from_scaffold(), oomph::TetgenMesh< ELEMENT >::build_from_scaffold(), oomph::TriangleMesh< ELEMENT >::build_from_scaffold(), oomph::BrickFromTetMesh< ELEMENT >::build_mesh(), oomph::DGElement::construct_boundary_nodes_and_faces(), oomph::DGElement::construct_nodes_and_faces(), oomph::FullCircleMesh< ELEMENT >::FullCircleMesh(), oomph::GeompackQuadScaffoldMesh::GeompackQuadScaffoldMesh(), oomph::LinearElasticitySmoothMesh< LINEAR_ELASTICITY_ELEMENT >::operator()(), oomph::PoissonSmoothMesh< POISSON_ELEMENT >::operator()(), oomph::QuarterCircleSectorMesh< ELEMENT >::QuarterCircleSectorMesh(), oomph::QuarterTubeMesh< ELEMENT >::QuarterTubeMesh(), oomph::RectangleWithHoleMesh< ELEMENT >::RectangleWithHoleMesh(), oomph::SimpleRectangularTriMesh< ELEMENT >::SimpleRectangularTriMesh(), oomph::TetMeshBase::split_elements_in_corners(), oomph::TetgenScaffoldMesh::TetgenScaffoldMesh(), oomph::TriangleScaffoldMesh::TriangleScaffoldMesh(), oomph::TubeMesh< ELEMENT >::TubeMesh(), and oomph::WomersleyMesh< WOMERSLEY_ELEMENT >::WomersleyMesh().

◆ construct_node() [2/2]

virtual Node* oomph::FiniteElement::construct_node ( const unsigned n,
TimeStepper *const &  time_stepper_pt 
)
inlinevirtual

Construct the local node n, including storage for history values required by timestepper, and return a pointer to the newly created node object.

Reimplemented in oomph::SolidFiniteElement, oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >, oomph::ElementWithSpecificMovingNodes< ELEMENT, SpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, PerturbedSpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, AlgebraicNode >, and oomph::ElementWithSpecificMovingNodes< ELEMENT, MacroElementNodeUpdateNode >.

2524  {
2525  // Create a node and assign it to the local node pointer.
2526  // The dimension and number of values are taken from internal element data
2527  node_pt(n) = new Node(time_stepper_pt,
2530  required_nvalue(n));
2531  // Now return a pointer to the node, so that the mesh can find it
2532  return node_pt(n);
2533  }

References n, Nnodal_position_type, Nodal_dimension, node_pt(), required_nvalue(), and oomph::GeomObject::time_stepper_pt().

◆ d2shape_eulerian()

double FiniteElement::d2shape_eulerian ( const Vector< double > &  s,
Shape psi,
DShape dpsi,
DShape d2psi 
) const

Compute the geometric shape functions and also first and second derivatives w.r.t. global coordinates at local coordinate s; Returns Jacobian of mapping from global to local coordinates. Numbering: 1D: d2psidx(i,0) = \( d^2 \psi_j / d x^2 \) 2D: d2psidx(i,0) = \( \partial^2 \psi_j / \partial x_0^2 \) d2psidx(i,1) = \( \partial^2 \psi_j / \partial x_1^2 \) d2psidx(i,2) = \( \partial^2 \psi_j / \partial x_0 \partial x_1 \) 3D: d2psidx(i,0) = \( \partial^2 \psi_j / \partial x_0^2 \) d2psidx(i,1) = \( \partial^2 \psi_j / \partial x_1^2 \) d2psidx(i,2) = \( \partial^2 \psi_j / \partial x_2^2 \) d2psidx(i,3) = \( \partial^2 \psi_j / \partial x_0 \partial x_1 \) d2psidx(i,4) = \( \partial^2 \psi_j / \partial x_0 \partial x_2 \) d2psidx(i,5) = \( \partial^2 \psi_j / \partial x_1 \partial x_2 \)

Compute the geometric shape functions and also first and second derivatives w.r.t. global coordinates at local coordinate s; Also returns Jacobian of mapping from global to local coordinates. Numbering: 1D: d2psidx(i,0) = \( d^2 \psi_j / d x^2 \) 2D: d2psidx(i,0) = \( \partial^2 \psi_j / \partial x_0^2 \) d2psidx(i,1) = \( \partial^2 \psi_j / \partial x_1^2 \) d2psidx(i,2) = \( \partial^2 \psi_j / \partial x_0 \partial x_1 \) 3D: d2psidx(i,0) = \( \partial^2 \psi_j / \partial x_0^2 \) d2psidx(i,1) = \( \partial^2 \psi_j / \partial x_1^2 \) d2psidx(i,2) = \( \partial^2 \psi_j / \partial x_2^2 \) d2psidx(i,3) = \( \partial^2 \psi_j / \partial x_0 \partial x_1 \) d2psidx(i,4) = \( \partial^2 \psi_j / \partial x_0 \partial x_2 \) d2psidx(i,5) = \( \partial^2 \psi_j / \partial x_1 \partial x_2 \)

3452  {
3453  // Find the values of the indices of the shape functions
3454  // Locally cached.
3455  // Find the element dimension
3456  const unsigned el_dim = dim();
3457  // Find the number of second derivatives required
3458  const unsigned n_deriv = N2deriv[el_dim];
3459 
3460  // Get the values of the shape function and local derivatives
3461  d2shape_local(s, psi, dpsi, d2psi);
3462 
3463  // Allocate memory for the jacobian and inverse jacobian
3464  DenseMatrix<double> jacobian(el_dim), inverse_jacobian(el_dim);
3465  // Calculate the jacobian and inverse jacobian
3466  const double det =
3467  local_to_eulerian_mapping(dpsi, jacobian, inverse_jacobian);
3468 
3469  // Allocate memory for the jacobian of second derivatives
3470  DenseMatrix<double> jacobian2(n_deriv, el_dim);
3471  // Assemble the jacobian of second derivatives
3472  assemble_local_to_eulerian_jacobian2(d2psi, jacobian2);
3473 
3474  // Now set the value of the derivatives
3476  jacobian, inverse_jacobian, jacobian2, dpsi, d2psi);
3477  // Return the determinant of the mapping
3478  return det;
3479  }
virtual void assemble_local_to_eulerian_jacobian2(const DShape &d2psids, DenseMatrix< double > &jacobian2) const
Definition: elements.cc:1963
virtual void d2shape_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
Definition: elements.h:2016
virtual double local_to_eulerian_mapping(const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
Definition: elements.h:1508
virtual void transform_second_derivatives(const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
Definition: elements.cc:3125
RealScalar s
Definition: level1_cplx_impl.h:130

References assemble_local_to_eulerian_jacobian2(), d2shape_local(), dim(), el_dim, local_to_eulerian_mapping(), N2deriv, s, and transform_second_derivatives().

◆ d2shape_eulerian_at_knot()

double FiniteElement::d2shape_eulerian_at_knot ( const unsigned ipt,
Shape psi,
DShape dpsi,
DShape d2psi 
) const
virtual

Return the geometric shape functions and also first and second derivatives w.r.t. global coordinates at ipt-th integration point. Numbering: 1D: d2psidx(i,0) = \( d^2 \psi_j / d s^2 \) 2D: d2psidx(i,0) = \( \partial^2 \psi_j / \partial x_0^2 \) d2psidx(i,1) = \( \partial^2 \psi_j / \partial x_1^2 \) d2psidx(i,2) = \( \partial^2 \psi_j / \partial x_0 \partial x_1 \) 3D: d2psidx(i,0) = \( \partial^2 \psi_j / \partial x_0^2 \) d2psidx(i,1) = \( \partial^2 \psi_j / \partial x_1^2 \) d2psidx(i,2) = \( \partial^2 \psi_j / \partial x_2^2 \) d2psidx(i,3) = \( \partial^2 \psi_j / \partial x_0 \partial x_1 \) d2psidx(i,4) = \( \partial^2 \psi_j / \partial x_0 \partial x_2 \) d2psidx(i,5) = \( \partial^2 \psi_j / \partial x_1 \partial x_2 \)

Compute the geometric shape functions and also first and second derivatives w.r.t. global coordinates at ipt-th integration point Returns Jacobian of mapping from global to local coordinates. This is the most general version, may be overloaded, if desired. Numbering: 1D: d2psidx(i,0) = \( d^2 \psi_j / d x^2 \) 2D: d2psidx(i,0) = \( \partial^2 \psi_j / \partial x_0^2 \) d2psidx(i,1) = \( \partial^2 \psi_j / \partial x_1^2 \) d2psidx(i,2) = \( \partial^2 \psi_j / \partial x_0 \partial x_1 \) 3D: d2psidx(i,0) = \( \partial^2 \psi_j / \partial x_0^2 \) d2psidx(i,1) = \( \partial^2 \psi_j / \partial x_1^2 \) d2psidx(i,2) = \( \partial^2 \psi_j / \partial x_2^2 \) d2psidx(i,3) = \( \partial^2 \psi_j / \partial x_0 \partial x_1 \) d2psidx(i,4) = \( \partial^2 \psi_j / \partial x_0 \partial x_2 \) d2psidx(i,5) = \( \partial^2 \psi_j / \partial x_1 \partial x_2 \)

Reimplemented in oomph::StorableShapeElementBase.

3506  {
3507  // Find the values of the indices of the shape functions
3508  // Locally cached
3509  // Find the element dimension
3510  const unsigned el_dim = dim();
3511  // Find the number of second derivatives required
3512  const unsigned n_deriv = N2deriv[el_dim];
3513 
3514  // Get the values of the shape function and local derivatives
3515  d2shape_local_at_knot(ipt, psi, dpsi, d2psi);
3516 
3517  // Allocate memory for the jacobian and inverse jacobian
3518  DenseMatrix<double> jacobian(el_dim), inverse_jacobian(el_dim);
3519  // Calculate the jacobian and inverse jacobian
3520  const double det =
3521  local_to_eulerian_mapping(dpsi, jacobian, inverse_jacobian);
3522 
3523  // Allocate memory for the jacobian of second derivatives
3524  DenseMatrix<double> jacobian2(n_deriv, el_dim);
3525  // Assemble the jacobian of second derivatives
3526  assemble_local_to_eulerian_jacobian2(d2psi, jacobian2);
3527 
3528  // Now set the value of the derivatives
3530  jacobian, inverse_jacobian, jacobian2, dpsi, d2psi);
3531  // Return the determinant of the mapping
3532  return det;
3533  }
virtual void d2shape_local_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids) const
Definition: elements.cc:3274

References assemble_local_to_eulerian_jacobian2(), d2shape_local_at_knot(), dim(), el_dim, local_to_eulerian_mapping(), N2deriv, and transform_second_derivatives().

Referenced by oomph::StorableShapeElementBase::d2shape_eulerian_at_knot(), and oomph::StorableShapeElementBase::pre_compute_d2shape_eulerian_at_knots().

◆ d2shape_local()

virtual void oomph::FiniteElement::d2shape_local ( const Vector< double > &  s,
Shape psi,
DShape dpsids,
DShape d2psids 
) const
inlinevirtual

Function to compute the geometric shape functions and also first and second derivatives w.r.t. local coordinates at local coordinate s. This function must be overloaded for each specific geometric element (if required). (Broken virtual function — specifies the interface). Numbering: 1D: d2psids(i,0) = \( d^2 \psi_j / ds^2 \) 2D: d2psids(i,0) = \( \partial^2 \psi_j / \partial s_0^2 \) d2psids(i,1) = \( \partial^2 \psi_j / \partial s_1^2 \) d2psids(i,2) = \( \partial^2 \psi_j / \partial s_0 \partial s_1 \) 3D: d2psids(i,0) = \( \partial^2 \psi_j / \partial s_0^2 \) d2psids(i,1) = \( \partial^2 \psi_j / \partial s_1^2 \) d2psids(i,2) = \( \partial^2 \psi_j / \partial s_2^2 \) d2psids(i,3) = \( \partial^2 \psi_j / \partial s_0 \partial s_1 \) d2psids(i,4) = \( \partial^2 \psi_j / \partial s_0 \partial s_2 \) d2psids(i,5) = \( \partial^2 \psi_j / \partial s_1 \partial s_2 \)

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, and oomph::QHermiteElement< DIM - 1 >.

2020  {
2021  throw OomphLibError(
2022  "d2shape_local() is not implemented for this element\n",
2025  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by d2shape_eulerian(), oomph::SolidFiniteElement::d2shape_lagrangian(), and d2shape_local_at_knot().

◆ d2shape_local_at_knot()

void FiniteElement::d2shape_local_at_knot ( const unsigned ipt,
Shape psi,
DShape dpsids,
DShape d2psids 
) const
virtual

Return the geometric shape function and its first and second derivatives w.r.t. the local coordinates at the ipt-th integration point. Numbering: 1D: d2psids(i,0) = \( d^2 \psi_j / ds^2 \) 2D: d2psids(i,0) = \( \partial^2 \psi_j / \partial s_0^2 \) d2psids(i,1) = \( \partial^2 \psi_j / \partial s_1^2 \) d2psids(i,2) = \( \partial^2 \psi_j / \partial s_0 \partial s_1 \) 3D: d2psids(i,0) = \( \partial^2 \psi_j / \partial s_0^2 \) d2psids(i,1) = \( \partial^2 \psi_j / \partial s_1^2 \) d2psids(i,2) = \( \partial^2 \psi_j / \partial s_2^2 \) d2psids(i,3) = \( \partial^2 \psi_j / \partial s_0 \partial s_1 \) d2psids(i,4) = \( \partial^2 \psi_j / \partial s_0 \partial s_2 \) d2psids(i,5) = \( \partial^2 \psi_j / \partial s_1 \partial s_2 \)

Calculate the shape function and its first and second derivatives w.r.t. local coordinates at the ipt-th integration point. Numbering: 1D: d2psids(i,0) = \( d^2 \psi_j / d s^2 \) 2D: d2psids(i,0) = \( \partial^2 \psi_j / \partial s_0^2 \) d2psids(i,1) = \( \partial^2 \psi_j / \partial s_1^2 \) d2psids(i,2) = \( \partial^2 \psi_j / \partial s_0 \partial s_1 \) 3D: d2psids(i,0) = \( \partial^2 \psi_j / \partial s_0^2 \) d2psids(i,1) = \( \partial^2 \psi_j / \partial s_1^2 \) d2psids(i,2) = \( \partial^2 \psi_j / \partial s_2^2 \) d2psids(i,3) = \( \partial^2 \psi_j / \partial s_0 \partial s_1 \) d2psids(i,4) = \( \partial^2 \psi_j / \partial s_0 \partial s_2 \) d2psids(i,5) = \( \partial^2 \psi_j / \partial s_1 \partial s_2 \)

Reimplemented in oomph::StorableShapeElementBase.

3278  {
3279  // Find the dimension of the element
3280  const unsigned el_dim = dim();
3281  // Storage for the local coordinates of the integration point
3282  Vector<double> s(el_dim);
3283  // Set the local coordinate
3284  for (unsigned i = 0; i < el_dim; i++)
3285  {
3286  s[i] = integral_pt()->knot(ipt, i);
3287  }
3288  // Get the shape function and first and second derivatives
3289  d2shape_local(s, psi, dpsids, d2psids);
3290  }
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.

References d2shape_local(), dim(), el_dim, i, integral_pt(), oomph::Integral::knot(), and s.

Referenced by d2shape_eulerian_at_knot(), oomph::SolidFiniteElement::d2shape_lagrangian_at_knot(), oomph::StorableShapeElementBase::d2shape_local_at_knot(), and oomph::StorableShapeElementBase::pre_compute_d2shape_local_at_knots().

◆ d_dshape_eulerian_dnodal_coordinates()

void FiniteElement::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
protectedvirtual

A template-free interface that calculates the derivative w.r.t. the nodal coordinates \( X_{pq} \) of the derivative of the shape functions \( \psi_j \) w.r.t. the global eulerian coordinates \( x_i \). I.e. this function calculates

\[ \frac{\partial}{\partial X_{pq}} \left( \frac{\partial \psi_j}{\partial x_i} \right). \]

To do this it requires the determinant of the jacobian mapping, its derivative w.r.t. the nodal coordinates \( X_{pq} \), the inverse jacobian and the derivatives of the shape functions w.r.t. the local coordinates. The result is returned as a tensor of rank four. Numbering: d_dpsidx_dX(p,q,j,i) = \( \frac{\partial}{\partial X_{pq}} \left( \frac{\partial \psi_j}{\partial x_i} \right) \) By default the function will use the dimension of the element to call the correct d_dshape_eulerian_dnodal_coordinates_templated_helper(..) function. This should be overloaded for efficiency (removal of a switch statement) in specific elements.

Template-free interface calculating the derivative w.r.t. the nodal coordinates \( X_{pq} \) of the derivative of the shape functions \( \psi_j \) w.r.t. the global eulerian coordinates \( x_i \). I.e. this function calculates

\[ \frac{\partial}{\partial X_{pq}} \left( \frac{\partial \psi_j}{\partial x_i} \right). \]

To do this it requires the determinant of the jacobian mapping, its derivative w.r.t. the nodal coordinates \( X_{pq} \), the inverse jacobian and the derivatives of the shape functions w.r.t. the local coordinates. The result is returned as a tensor of rank four. Numbering: d_dpsidx_dX(p,q,j,i) = \( \frac{\partial}{\partial X_{pq}} \left( \frac{\partial \psi_j}{\partial x_i} \right) \) This function is slightly inefficient, given that it uses a switch statement. It can always be overloaded in specific geometric elements, for efficiency reasons.

2756  {
2757  // Determine the spatial dimension of the element
2758  const unsigned el_dim = dim();
2759 
2760 #ifdef PARANOID
2761  // Determine the number of nodes in the element
2762  const unsigned n_node = nnode();
2763 
2764  // Check that d_dpsidx_dX is of the correct size
2765  if (d_dpsidx_dX.nindex1() != el_dim || d_dpsidx_dX.nindex2() != n_node ||
2766  d_dpsidx_dX.nindex3() != n_node || d_dpsidx_dX.nindex4() != el_dim)
2767  {
2768  std::ostringstream error_message;
2769  error_message << "d_dpsidx_dX must be of the following dimensions:"
2770  << "\nd_dpsidx_dX(el_dim,n_node,n_node,el_dim)";
2771  throw OomphLibError(
2772  error_message.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
2773  }
2774 #endif
2775 
2776  // Call the appropriate templated function, depending on the
2777  // element dimension
2778  switch (el_dim)
2779  {
2780  case 0:
2781  d_dshape_eulerian_dnodal_coordinates_templated_helper<0>(
2782  det_jacobian,
2783  jacobian,
2784  djacobian_dX,
2785  inverse_jacobian,
2786  dpsids,
2787  d_dpsidx_dX);
2788  break;
2789  case 1:
2790  d_dshape_eulerian_dnodal_coordinates_templated_helper<1>(
2791  det_jacobian,
2792  jacobian,
2793  djacobian_dX,
2794  inverse_jacobian,
2795  dpsids,
2796  d_dpsidx_dX);
2797  break;
2798  case 2:
2799  d_dshape_eulerian_dnodal_coordinates_templated_helper<2>(
2800  det_jacobian,
2801  jacobian,
2802  djacobian_dX,
2803  inverse_jacobian,
2804  dpsids,
2805  d_dpsidx_dX);
2806  break;
2807  case 3:
2808  d_dshape_eulerian_dnodal_coordinates_templated_helper<3>(
2809  det_jacobian,
2810  jacobian,
2811  djacobian_dX,
2812  inverse_jacobian,
2813  dpsids,
2814  d_dpsidx_dX);
2815  break;
2816  // Catch-all default case: issue warning and die
2817  default:
2818  std::ostringstream error_stream;
2819  error_stream << "Dimension of the element must be 0,1,2 or 3, not "
2820  << el_dim << std::endl;
2821 
2822  throw OomphLibError(
2823  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
2824  }
2825  }

References dim(), el_dim, oomph::RankFourTensor< T >::nindex1(), oomph::RankFourTensor< T >::nindex2(), oomph::RankFourTensor< T >::nindex3(), oomph::RankFourTensor< T >::nindex4(), nnode(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by dshape_eulerian_at_knot(), oomph::AxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst(), and oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst().

◆ d_dshape_eulerian_dnodal_coordinates_templated_helper() [1/5]

template<>
void oomph::FiniteElement::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
protected

Zero-d specialisation of function to calculate the derivative w.r.t. the nodal coordinates \( X_{pq} \) of the derivative of the shape functions w.r.t. the global eulerian coordinates \( x_i \).

2324  {
2325  // Issue a warning
2326  oomph_info << "\nWarning: You are trying to calculate derivatives of "
2327  << "eulerian derivatives of shape functions w.r.t. nodal "
2328  << "coordinates for a 'point' element." << std::endl
2329  << "This makes no sense and is almost certainly an error."
2330  << std::endl
2331  << std::endl;
2332  }
OomphInfo oomph_info
Definition: oomph_definitions.cc:319

References oomph::oomph_info.

◆ d_dshape_eulerian_dnodal_coordinates_templated_helper() [2/5]

template<>
void oomph::FiniteElement::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
protected

One-d specialisation of function to calculate the derivative w.r.t. the nodal coordinates \( X_{pq} \) of the derivative of the shape functions w.r.t. the global eulerian coordinates \( x_i \).

2347  {
2348  // Find inverse of determinant of jacobian of mapping
2349  const double inv_det_jac = 1.0 / det_jacobian;
2350 
2351  // Determine the number of nodes in the element
2352  const unsigned n_node = nnode();
2353 
2354  // Loop over the shape functions
2355  for (unsigned q = 0; q < n_node; q++)
2356  {
2357  // Loop over the shape functions
2358  for (unsigned j = 0; j < n_node; j++)
2359  {
2360  d_dpsidx_dX(0, q, j, 0) =
2361  -djacobian_dX(0, q) * dpsids(j, 0) * inv_det_jac * inv_det_jac;
2362  }
2363  }
2364  }
EIGEN_DEVICE_FUNC const Scalar & q
Definition: SpecialFunctionsImpl.h:2019

References j, nnode(), and Eigen::numext::q.

◆ d_dshape_eulerian_dnodal_coordinates_templated_helper() [3/5]

template<>
void oomph::FiniteElement::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
protected

Two-d specialisation of function to calculate the derivative w.r.t. the nodal coordinates \( X_{pq} \) of the derivative of the shape functions w.r.t. the global eulerian coordinates \( x_i \).

2379  {
2380  // Find inverse of determinant of jacobian of mapping
2381  const double inv_det_jac = 1.0 / det_jacobian;
2382 
2383  // Determine the number of nodes in the element
2384  const unsigned n_node = nnode();
2385 
2386  // Loop over the spatial dimension (this must be 2)
2387  for (unsigned p = 0; p < 2; p++)
2388  {
2389  // Loop over the shape functions
2390  for (unsigned q = 0; q < n_node; q++)
2391  {
2392  // Loop over the shape functions
2393  for (unsigned j = 0; j < n_node; j++)
2394  {
2395  // i=0
2396  d_dpsidx_dX(p, q, j, 0) =
2397  -djacobian_dX(p, q) * (inverse_jacobian(0, 0) * dpsids(j, 0) +
2398  inverse_jacobian(0, 1) * dpsids(j, 1));
2399 
2400  if (p == 1)
2401  {
2402  d_dpsidx_dX(p, q, j, 0) +=
2403  dpsids(j, 0) * dpsids(q, 1) - dpsids(j, 1) * dpsids(q, 0);
2404  }
2405  d_dpsidx_dX(p, q, j, 0) *= inv_det_jac;
2406 
2407  // i=1
2408  d_dpsidx_dX(p, q, j, 1) =
2409  -djacobian_dX(p, q) * (inverse_jacobian(1, 1) * dpsids(j, 1) +
2410  inverse_jacobian(1, 0) * dpsids(j, 0));
2411 
2412  if (p == 0)
2413  {
2414  d_dpsidx_dX(p, q, j, 1) +=
2415  dpsids(j, 1) * dpsids(q, 0) - dpsids(j, 0) * dpsids(q, 1);
2416  }
2417  d_dpsidx_dX(p, q, j, 1) *= inv_det_jac;
2418  }
2419  }
2420  }
2421  }
float * p
Definition: Tutorial_Map_using.cpp:9

References j, nnode(), p, and Eigen::numext::q.

◆ d_dshape_eulerian_dnodal_coordinates_templated_helper() [4/5]

template<>
void oomph::FiniteElement::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
protected

Three-d specialisation of function to calculate the derivative w.r.t. the nodal coordinates \( X_{pq} \) of the derivative of the shape functions w.r.t. the global eulerian coordinates \( x_i \).

2436  {
2437  // Find inverse of determinant of jacobian of mapping
2438  const double inv_det_jac = 1.0 / det_jacobian;
2439 
2440  // Determine the number of nodes in the element
2441  const unsigned n_node = nnode();
2442 
2443  // Loop over the spatial dimension (this must be 3)
2444  for (unsigned p = 0; p < 3; p++)
2445  {
2446  // Loop over the shape functions
2447  for (unsigned q = 0; q < n_node; q++)
2448  {
2449  // Loop over the shape functions
2450  for (unsigned j = 0; j < n_node; j++)
2451  {
2452  // Terms not multiplied by delta function
2453  for (unsigned i = 0; i < 3; i++)
2454  {
2455  d_dpsidx_dX(p, q, j, i) =
2456  -djacobian_dX(p, q) * (inverse_jacobian(i, 0) * dpsids(j, 0) +
2457  inverse_jacobian(i, 1) * dpsids(j, 1) +
2458  inverse_jacobian(i, 2) * dpsids(j, 2));
2459  }
2460 
2461  // Delta function terms
2462  switch (p)
2463  {
2464  case 0:
2465  d_dpsidx_dX(p, q, j, 1) += ((dpsids(q, 2) * jacobian(1, 2) -
2466  dpsids(q, 1) * jacobian(2, 2)) *
2467  dpsids(j, 0) +
2468  (dpsids(q, 0) * jacobian(2, 2) -
2469  dpsids(q, 2) * jacobian(0, 2)) *
2470  dpsids(j, 1) +
2471  (dpsids(q, 1) * jacobian(0, 2) -
2472  dpsids(q, 0) * jacobian(1, 2)) *
2473  dpsids(j, 2));
2474 
2475  d_dpsidx_dX(p, q, j, 2) += ((dpsids(q, 1) * jacobian(2, 1) -
2476  dpsids(q, 2) * jacobian(1, 1)) *
2477  dpsids(j, 0) +
2478  (dpsids(q, 2) * jacobian(0, 1) -
2479  dpsids(q, 0) * jacobian(2, 1)) *
2480  dpsids(j, 1) +
2481  (dpsids(q, 0) * jacobian(1, 1) -
2482  dpsids(q, 1) * jacobian(0, 1)) *
2483  dpsids(j, 2));
2484  break;
2485 
2486  case 1:
2487 
2488  d_dpsidx_dX(p, q, j, 0) += ((dpsids(q, 1) * jacobian(2, 2) -
2489  dpsids(q, 2) * jacobian(1, 2)) *
2490  dpsids(j, 0) +
2491  (dpsids(q, 2) * jacobian(0, 2) -
2492  dpsids(q, 0) * jacobian(2, 2)) *
2493  dpsids(j, 1) +
2494  (dpsids(q, 0) * jacobian(1, 2) -
2495  dpsids(q, 1) * jacobian(0, 2)) *
2496  dpsids(j, 2));
2497 
2498  d_dpsidx_dX(p, q, j, 2) += ((dpsids(q, 2) * jacobian(1, 0) -
2499  dpsids(q, 1) * jacobian(2, 0)) *
2500  dpsids(j, 0) +
2501  (dpsids(q, 0) * jacobian(2, 0) -
2502  dpsids(q, 2) * jacobian(0, 0)) *
2503  dpsids(j, 1) +
2504  (dpsids(q, 1) * jacobian(0, 0) -
2505  dpsids(q, 0) * jacobian(1, 0)) *
2506  dpsids(j, 2));
2507  break;
2508 
2509  case 2:
2510 
2511  d_dpsidx_dX(p, q, j, 0) += ((dpsids(q, 2) * jacobian(1, 1) -
2512  dpsids(q, 1) * jacobian(2, 1)) *
2513  dpsids(j, 0) +
2514  (dpsids(q, 0) * jacobian(2, 1) -
2515  dpsids(q, 2) * jacobian(0, 1)) *
2516  dpsids(j, 1) +
2517  (dpsids(q, 1) * jacobian(0, 1) -
2518  dpsids(q, 0) * jacobian(1, 1)) *
2519  dpsids(j, 2));
2520 
2521  d_dpsidx_dX(p, q, j, 1) += ((dpsids(q, 1) * jacobian(2, 0) -
2522  dpsids(q, 2) * jacobian(1, 0)) *
2523  dpsids(j, 0) +
2524  (dpsids(q, 2) * jacobian(0, 0) -
2525  dpsids(q, 0) * jacobian(2, 0)) *
2526  dpsids(j, 1) +
2527  (dpsids(q, 0) * jacobian(1, 0) -
2528  dpsids(q, 1) * jacobian(0, 0)) *
2529  dpsids(j, 2));
2530  break;
2531  }
2532 
2533  // Divide through by the determinant of the Jacobian mapping
2534  for (unsigned i = 0; i < 3; i++)
2535  {
2536  d_dpsidx_dX(p, q, j, i) *= inv_det_jac;
2537  }
2538  }
2539  }
2540  }
2541  }

References i, j, nnode(), p, and Eigen::numext::q.

◆ d_dshape_eulerian_dnodal_coordinates_templated_helper() [5/5]

template<unsigned DIM>
void oomph::FiniteElement::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
protected

Calculate the derivative w.r.t. the nodal coordinates \( X_{pq} \) of the derivative of the shape functions w.r.t. the global eulerian coordinates \( x_i \), using the determinant of the jacobian mapping, its derivative w.r.t. the nodal coordinates \( X_{pq} \), the inverse jacobian and the derivatives of the shape functions w.r.t. the local coordinates. The result is returned as a tensor of rank four. Numbering: d_dpsidx_dX(p,q,j,i) = \( \frac{\partial}{\partial X_{pq}} \left( \frac{\partial \psi_j}{\partial x_i} \right) \) This function is templated by the dimension of the element.

◆ describe_local_dofs()

void FiniteElement::describe_local_dofs ( std::ostream &  out,
const std::string &  current_string 
) const
virtual

Function to describe the local dofs of the element[s]. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...)

Function to describe the local dofs of the element. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...)

Reimplemented from oomph::GeneralisedElement.

Reimplemented in DistanceWrapper< ELEMENT >, oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >, oomph::RefineableQSpectralPoissonElement< DIM, NNODE_1D >, oomph::SpectralElement, oomph::PseudoSolidNodeUpdateElement< TCrouzeixRaviartElement< 2 >, TPVDBubbleEnrichedElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< TTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianAxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< AxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianTTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::ProjectableElement< ELEMENT >, oomph::ProjectableElement< FVK_ELEMENT >, oomph::ProjectableElement< AXISYM_LINEAR_ELAST_ELEMENT >, oomph::ProjectableElement< UNSTEADY_HEAT_ELEMENT >, oomph::ProjectableElement< LINEAR_ELAST_ELEMENT >, oomph::ProjectableElement< CROUZEIX_RAVIART_ELEMENT >, oomph::ProjectableElement< HELMHOLTZ_ELEMENT >, oomph::ProjectableElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >, oomph::ProjectableElement< TAYLOR_HOOD_ELEMENT >, oomph::ProjectableElement< PVD_ELEMENT >, oomph::ProjectableElement< ADR_ELEMENT >, oomph::ProjectableElement< DARCY_ELEMENT >, oomph::ProjectableElement< POISSON_ELEMENT >, oomph::ProjectableElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >, oomph::ProjectableElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >, oomph::ProjectableElement< LINEAR_HEAT_AND_ELAST_ELEMENT >, oomph::FSIWallElement, oomph::FaceElementAsGeomObject< ELEMENT >, oomph::SolidFiniteElement, oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >, oomph::ElementWithSpecificMovingNodes< ELEMENT, SpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, PerturbedSpineNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, AlgebraicNode >, oomph::ElementWithSpecificMovingNodes< ELEMENT, MacroElementNodeUpdateNode >, oomph::ElementWithMovingNodes, oomph::HeatedLinearSurfaceContactElement< ELEMENT >, and oomph::ElementWithExternalElement.

1711  {
1712  // Call the standard finite element classification.
1714  describe_nodal_local_dofs(out, current_string);
1715  }
virtual void describe_nodal_local_dofs(std::ostream &out, const std::string &current_string) const
Definition: elements.cc:1727
virtual void describe_local_dofs(std::ostream &out, const std::string &current_string) const
Definition: elements.cc:573
std::ofstream out("Result.txt")

References oomph::GeneralisedElement::describe_local_dofs(), describe_nodal_local_dofs(), and out().

Referenced by oomph::ElementWithMovingNodes::describe_local_dofs(), oomph::SolidFiniteElement::describe_local_dofs(), oomph::FSIWallElement::describe_local_dofs(), oomph::SpectralElement::describe_local_dofs(), and oomph::RefineableQSpectralPoissonElement< DIM, NNODE_1D >::describe_local_dofs().

◆ describe_nodal_local_dofs()

void FiniteElement::describe_nodal_local_dofs ( std::ostream &  out,
const std::string &  current_string 
) const
virtual

Function to describe the local dofs of the element[s]. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...)

specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...)

1729  {
1730  // Find the number of nodes
1731  const unsigned n_node = nnode();
1732  for (unsigned n = 0; n < n_node; n++)
1733  {
1734  // Pointer to node
1735  Node* const nod_pt = node_pt(n);
1736 
1737  std::stringstream conversion;
1738  conversion << " of Node " << n << current_string;
1739  std::string in(conversion.str());
1740  nod_pt->describe_dofs(out, in);
1741  } // End if for n_node
1742  } // End describe_nodal_local_dofs

References oomph::Data::describe_dofs(), n, nnode(), node_pt(), out(), and oomph::Global_string_for_annotation::string().

Referenced by describe_local_dofs(), and oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::describe_local_dofs().

◆ dim()

unsigned oomph::FiniteElement::dim ( ) const
inline

Return the spatial dimension of the element, i.e. the number of local coordinates required to parametrise its geometry.

2612  {
2613  return Elemental_dimension;
2614  }

References Elemental_dimension.

Referenced by oomph::TreeBasedRefineableMeshBase::adapt_mesh(), oomph::DGFaceElement::add_flux_contributions(), oomph::ImposeImpenetrabilityElement< ELEMENT >::additional_ndof_types(), assemble_eulerian_base_vectors(), oomph::RefineableElement::assemble_eulerian_base_vectors(), assemble_local_to_eulerian_jacobian(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian(), assemble_local_to_eulerian_jacobian2(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian2(), oomph::SolidFiniteElement::assemble_local_to_lagrangian_jacobian(), oomph::RefineableSolidElement::assemble_local_to_lagrangian_jacobian(), oomph::SolidFiniteElement::assemble_local_to_lagrangian_jacobian2(), oomph::RefineableSolidElement::assemble_local_to_lagrangian_jacobian2(), oomph::Multi_domain_functions::aux_setup_multi_domain_interaction(), oomph::AxisymmetricLinearElasticityEquationsBase::body_force(), oomph::LinearElasticityEquationsBase< DIM >::body_force(), oomph::PMLTimeHarmonicLinearElasticityEquationsBase< DIM >::body_force(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquationsBase::body_force(), oomph::TimeHarmonicLinearElasticityEquationsBase< DIM >::body_force(), oomph::PVDEquationsBase< DIM >::body_force(), oomph::MeshAsGeomObject::build_it(), oomph::OneDMesh< ELEMENT >::check_1d(), FourierDecomposedHelmholtzProblem< ELEMENT >::check_gamma(), oomph::Mesh::check_inverted_elements(), check_J_eulerian_at_knots(), oomph::FaceElement::check_J_eulerian_at_knots(), oomph::SolidFiniteElement::compute_norm(), oomph::AxisymmetricNavierStokesEquations::compute_physical_size(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::compute_physical_size(), AirwayReopeningProblem< ELEMENT >::connect_walls(), oomph::FaceElement::continuous_tangent_and_outer_unit_normal(), d2shape_eulerian(), d2shape_eulerian_at_knot(), oomph::SolidFiniteElement::d2shape_lagrangian(), oomph::SolidFiniteElement::d2shape_lagrangian_at_knot(), d2shape_local_at_knot(), d_dshape_eulerian_dnodal_coordinates(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::data_values_of_field(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::data_values_of_field(), oomph::DGEulerFaceElement< ELEMENT >::DGEulerFaceElement(), oomph::DGEulerFaceReflectionElement< ELEMENT >::DGEulerFaceReflectionElement(), dJ_eulerian_at_knot(), dJ_eulerian_dnodal_coordinates(), oomph::Z2ErrorEstimator::doc_flux(), oomph::FSI_functions::doc_fsi(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::drag_force(), dshape_eulerian(), dshape_eulerian_at_knot(), oomph::SolidFiniteElement::dshape_lagrangian(), oomph::SolidFiniteElement::dshape_lagrangian_at_knot(), dshape_local_at_knot(), oomph::Mesh::elemental_dimension(), oomph::ElementElementMortaringElement::evaluate_constraint_functions(), oomph::FaceElementAsGeomObject< ELEMENT >::FaceElementAsGeomObject(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::ImposeImpenetrabilityElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::ImposeParallelOutflowElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::SolidFiniteElement::fill_in_generic_jacobian_for_solid_ic(), oomph::FluidInterfaceElement::fill_in_generic_residual_contribution_interface(), oomph::PointFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::SolidFiniteElement::fill_in_jacobian_for_newmark_accel(), oomph::RefineableNavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::NavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::AxisymmetricPoroelasticityEquations::fluid_body_force(), oomph::PoroelasticityEquations< DIM >::force_fluid(), oomph::PoroelasticityEquations< DIM >::force_solid(), oomph::FpPressureAdvDiffRobinBCElement< ELEMENT >::FpPressureAdvDiffRobinBCElement(), oomph::FpPressureAdvDiffRobinBCMixedOrderSpaceTimeElement< ELEMENT >::FpPressureAdvDiffRobinBCMixedOrderSpaceTimeElement(), oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >::FpPressureAdvDiffRobinBCSpaceTimeElement(), oomph::FpPressureAdvectionDiffusionProblem< ELEMENT >::FpPressureAdvectionDiffusionProblem(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::FSIImposeDisplacementByLagrangeMultiplierElement(), oomph::MGSolver< DIM >::full_setup(), oomph::HelmholtzMGPreconditioner< DIM >::full_setup(), oomph::RefineableNavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >::get_body_force_nst(), oomph::ImposeImpenetrabilityElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ImposeParallelOutflowElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >::get_drag_and_torque(), oomph::Z2ErrorEstimator::get_element_errors(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::get_field(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::get_field(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_flux(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::get_kinetic_energy_flux(), oomph::NavierStokesSchurComplementPreconditioner::get_pressure_advection_diffusion_matrix(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::get_rate_of_traction_work(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::get_rate_of_traction_work_components(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::get_volume_flux(), oomph::QSolidElementBase::get_x_and_xi(), oomph::QElementBase::get_x_from_macro_element(), oomph::PMLHelmholtzPowerElement< ELEMENT >::global_flux_contribution(), oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::global_flux_contribution_from_helmholtz(), oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::global_flux_contribution_from_solid(), oomph::HelmholtzBCElementBase< ELEMENT >::global_power_contribution(), oomph::PMLHelmholtzPowerElement< ELEMENT >::global_power_contribution(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::ImposeDisplacementByLagrangeMultiplierElement(), oomph::ImposeParallelOutflowElement< ELEMENT >::ImposeParallelOutflowElement(), oomph::SurfactantTransportInterfaceElement::integrate_c(), integrate_fct(), oomph::SolubleSurfactantTransportInterfaceElement::integrated_C(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::interpolated_du_dt_nst(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), oomph::FaceElement::interpolated_dxdt(), oomph::SolidFiniteElement::interpolated_dxids(), oomph::AxisymFoepplvonKarmanEquations::interpolated_stress(), oomph::FoepplvonKarmanEquations::interpolated_stress(), oomph::FaceElement::interpolated_x(), oomph::SolidFaceElement::interpolated_xi(), interpolated_zeta(), invert_jacobian_mapping(), J_eulerian(), oomph::FaceElement::J_eulerian(), J_eulerian_at_knot(), oomph::FaceElement::J_eulerian_at_knot(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::jacobian_and_shape_of_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::jacobian_and_shape_of_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::jacobian_and_shape_of_field(), oomph::SolubleSurfactantTransportInterfaceElement::l2_norm_of_height(), oomph::QHermiteElement< DIM >::local_coord_is_valid(), oomph::QElementBase::local_coord_is_valid(), oomph::TElementBase::local_coord_is_valid(), oomph::FaceElement::local_coordinate_in_bulk(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::local_equation(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::local_equation(), local_to_eulerian_mapping(), local_to_eulerian_mapping_diagonal(), oomph::RefineableElement::local_to_eulerian_mapping_diagonal(), oomph::SolidFiniteElement::local_to_lagrangian_mapping(), oomph::SolidFiniteElement::local_to_lagrangian_mapping_diagonal(), oomph::RefineableSolidElement::local_to_lagrangian_mapping_diagonal(), locate_zeta(), oomph::Multi_domain_functions::locate_zeta_for_local_coordinates(), oomph::QHermiteElement< DIM >::move_local_coord_back_into_element(), oomph::QElementBase::move_local_coord_back_into_element(), oomph::TElementBase::move_local_coord_back_into_element(), oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >::NavierStokesMixedOrderSpaceTimeTractionElement(), oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >::NavierStokesSpaceTimeTractionElement(), oomph::NavierStokesTractionElement< ELEMENT >::NavierStokesTractionElement(), oomph::ImposeParallelOutflowElement< ELEMENT >::ndof_types(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::ndof_types(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::ndof_types(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nfields_for_projection(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nfields_for_projection(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::nfields_for_projection(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nfields_for_projection(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nfields_for_projection(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nfields_for_projection(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nhistory_values_for_projection(), oomph::QElementBase::nnode_on_face(), oomph::Mesh::node_update(), oomph::NodeElementSolidOnlyMortaringElement::NodeElementSolidOnlyMortaringElement(), oomph::DGEulerFaceElement< ELEMENT >::numerical_flux(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nvalue_of_field(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nvalue_of_field(), oomph::FaceElement::outer_unit_normal(), oomph::DummyFaceElement< ELEMENT >::output(), oomph::FluidInterfaceElement::output(), oomph::SurfactantTransportInterfaceElement::output(), oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >::output(), oomph::FSISolidTractionElement< ELEMENT, DIM >::output(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), oomph::PoissonFluxElement< ELEMENT >::output(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ElementWithExternalElement::output_external_elements(), oomph::FaceElement::output_zeta(), oomph::TreeBasedRefineableMeshBase::p_adapt_mesh(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::point_output_data(), oomph::NavierStokesEquations< DIM >::point_output_data(), oomph::PoissonEquations< DIM >::point_output_data(), oomph::StorableShapeElementBase::pre_compute_d2shape_local_at_knots(), oomph::StorableShapeElementBase::pre_compute_dshape_local_at_knots(), oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::DGFaceElement::report_info(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::residual_for_projection(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::residual_for_projection(), oomph::ProjectableElement< ELEMENT >::residual_for_projection(), self_test(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::set_boundary_shape_geom_object_pt(), set_dimension(), oomph::QElementBase::set_macro_elem_pt(), oomph::LineMeshBase::setup_boundary_element_info(), oomph::QuadMeshBase::setup_boundary_element_info(), oomph::TetMeshBase::setup_boundary_element_info(), oomph::TriangleMeshBase::setup_boundary_element_info(), oomph::HermiteQuadMesh< ELEMENT >::setup_boundary_element_info(), oomph::FourierDecomposedHelmholtzDtNMesh< ELEMENT >::setup_gamma(), oomph::HelmholtzDtNMesh< ELEMENT >::setup_gamma(), oomph::DGFaceElement::setup_neighbour_info(), oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >::shape_and_test_at_knot(), shape_at_knot(), oomph::DGElement::slope_limit(), oomph::AxisymmetricPoroelasticityEquations::solid_body_force(), oomph::PVDEquationsWithPressure< DIM >::solid_pshape_at_knot(), oomph::SolidTractionElement< ELEMENT >::SolidTractionElement(), oomph::DarcyEquations< DIM >::source(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::square_of_l2_norm_of_error(), oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::StefanBoltzmannUnsteadyHeatFluxElement(), oomph::SurfaceContactElementBase< ELEMENT >::SurfaceContactElementBase(), oomph::SurfaceMeltElement< ELEMENT >::SurfaceMeltElement(), transform_derivatives(), transform_derivatives_diagonal(), transform_second_derivatives(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::UnsteadyHeatBaseFaceElement(), oomph::YoungLaplaceContactAngleElement< ELEMENT >::YoungLaplaceContactAngleElement(), oomph::FaceElement::zeta_nodal(), and oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::zeta_nodal().

◆ disable_ALE()

virtual void oomph::FiniteElement::disable_ALE ( )
inlinevirtual

This is an empty function that establishes a uniform interface for all (derived) elements that involve time-derivatives. Such elements are/should be implemented in ALE form to allow mesh motions. The additional expense associated with the computation of the mesh velocities is, of course, superfluous if the elements are used in problems in which the mesh is stationary. This function should therefore be overloaded in all derived elements that are formulated in ALE form to suppress the computation of the mesh velocities. The user disables the ALE functionality at his/her own risk! If the mesh does move after all, then the results will be wrong. Here we simply issue a warning message stating that the empty function has been called.

Reimplemented in oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::SphericalNavierStokesEquations, oomph::SphericalAdvectionDiffusionEquations, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearisedNavierStokesEquations, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::AxisymmetricNavierStokesEquations, oomph::AxisymAdvectionDiffusionEquations, oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >, oomph::GeneralisedAdvectionDiffusionEquations< DIM >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearisedAxisymmetricNavierStokesEquations, and oomph::LinearisedAxisymmetricNavierStokesEquations.

2409  {
2410  std::ostringstream warn_message;
2411  warn_message
2412  << "Warning: You have just called the default (empty) function \n\n"
2413  << " FiniteElement::disable_ALE() \n\n"
2414  << "This suggests that you've either tried to call it for an element\n"
2415  << "that \n"
2416  << "(1) does not involve time-derivatives (e.g. a Poisson element) \n"
2417  << "(2) an element for which the time-derivatives aren't implemented \n"
2418  << " in ALE form \n"
2419  << "(3) an element for which the ALE form of the equations can't be \n"
2420  << " be disabled (yet).\n";
2421  OomphLibWarning(
2422  warn_message.str(), "Problem::disable_ALE()", OOMPH_EXCEPTION_LOCATION);
2423  }

References OOMPH_EXCEPTION_LOCATION.

◆ dJ_eulerian_at_knot()

double FiniteElement::dJ_eulerian_at_knot ( const unsigned ipt,
Shape psi,
DenseMatrix< double > &  djacobian_dX 
) const

Compute the geometric shape functions (psi) at integration point ipt. Return the determinant of the jacobian of the mapping (detJ). Additionally calculate the derivatives of "detJ" w.r.t. the nodal coordinates.

3356  {
3357  // Find the element dimension
3358  const unsigned el_dim = dim();
3359 
3360  // Get the values of the shape function and local derivatives
3361  unsigned nnod = nnode();
3362  DShape dpsi(nnod, el_dim);
3363  dshape_local_at_knot(ipt, psi, dpsi);
3364 
3365  // Allocate memory for the jacobian and the inverse of the jacobian
3366  DenseMatrix<double> jacobian(el_dim), inverse_jacobian(el_dim);
3367 
3368  // Now calculate the inverse jacobian
3369  const double det =
3370  local_to_eulerian_mapping(dpsi, jacobian, inverse_jacobian);
3371 
3372  // Calculate the derivative of the jacobian w.r.t. nodal coordinates
3373  // Note: must call this before "transform_derivatives(...)" since this
3374  // function requires dpsids rather than dpsidx
3375  dJ_eulerian_dnodal_coordinates(jacobian, dpsi, djacobian_dX);
3376 
3377  // Return the determinant of the jacobian
3378  return det;
3379  }
virtual void dJ_eulerian_dnodal_coordinates(const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
Definition: elements.cc:2669
virtual void dshape_local_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsids) const
Definition: elements.cc:3239

References dim(), dJ_eulerian_dnodal_coordinates(), dshape_local_at_knot(), el_dim, local_to_eulerian_mapping(), and nnode().

◆ dJ_eulerian_dnodal_coordinates()

void FiniteElement::dJ_eulerian_dnodal_coordinates ( const DenseMatrix< double > &  jacobian,
const DShape dpsids,
DenseMatrix< double > &  djacobian_dX 
) const
protectedvirtual

A template-free interface that calculates the derivative of the jacobian of a mapping with respect to the nodal coordinates X_ij. To do this it requires the jacobian matrix and the derivatives of the shape functions w.r.t. the local coordinates. By default the function will use the dimension of the element to call the correct dJ_eulerian_dnodal_coordinates_templated_helper(..) function. This should be overloaded for efficiency (removal of a switch statement) in specific elements.

Template-free interface calculating the derivative of the jacobian of a mapping with respect to the nodal coordinates X_ij. This is slightly inefficient, given that it uses a switch statement. It can always be overloaded in specific geometric elements, for efficiency reasons.

2673  {
2674  // Determine the spatial dimension of the element
2675  const unsigned el_dim = dim();
2676 
2677 #ifdef PARANOID
2678  // Determine the number of nodes in the element
2679  const unsigned n_node = nnode();
2680 
2681  // Check that djacobian_dX has the correct number of rows (= el_dim)
2682  if (djacobian_dX.nrow() != el_dim)
2683  {
2684  std::ostringstream error_message;
2685  error_message << "djacobian_dX must have the same number of rows as the"
2686  << "\nspatial dimension of the element.";
2687  throw OomphLibError(
2688  error_message.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
2689  }
2690  // Check that djacobian_dX has the correct number of columns (= n_node)
2691  if (djacobian_dX.ncol() != n_node)
2692  {
2693  std::ostringstream error_message;
2694  error_message
2695  << "djacobian_dX must have the same number of columns as the"
2696  << "\nnumber of nodes in the element.";
2697  throw OomphLibError(
2698  error_message.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
2699  }
2700 #endif
2701 
2702  // Call the appropriate templated function, depending on the
2703  // element dimension
2704  switch (el_dim)
2705  {
2706  case 0:
2707  dJ_eulerian_dnodal_coordinates_templated_helper<0>(
2708  jacobian, dpsids, djacobian_dX);
2709  break;
2710  case 1:
2711  dJ_eulerian_dnodal_coordinates_templated_helper<1>(
2712  jacobian, dpsids, djacobian_dX);
2713  break;
2714  case 2:
2715  dJ_eulerian_dnodal_coordinates_templated_helper<2>(
2716  jacobian, dpsids, djacobian_dX);
2717  break;
2718  case 3:
2719  dJ_eulerian_dnodal_coordinates_templated_helper<3>(
2720  jacobian, dpsids, djacobian_dX);
2721  break;
2722  // Catch-all default case: issue warning and die
2723  default:
2724  std::ostringstream error_stream;
2725  error_stream << "Dimension of the element must be 0,1,2 or 3, not "
2726  << el_dim << std::endl;
2727 
2728  throw OomphLibError(
2729  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
2730  }
2731  }
unsigned long nrow() const
Return the number of rows of the matrix.
Definition: matrices.h:485
unsigned long ncol() const
Return the number of columns of the matrix.
Definition: matrices.h:491

References dim(), el_dim, oomph::DenseMatrix< T >::ncol(), nnode(), oomph::DenseMatrix< T >::nrow(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by dJ_eulerian_at_knot(), dshape_eulerian_at_knot(), oomph::AxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst(), and oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst().

◆ dJ_eulerian_dnodal_coordinates_templated_helper() [1/5]

template<>
void oomph::FiniteElement::dJ_eulerian_dnodal_coordinates_templated_helper ( const DenseMatrix< double > &  jacobian,
const DShape dpsids,
DenseMatrix< double > &  djacobian_dX 
) const
protected

Zero-d specialisation of function to calculate the derivative of the jacobian of a mapping with respect to the nodal coordinates X_ij.

2210  {
2211  // Issue a warning
2212  oomph_info << "\nWarning: You are trying to calculate derivatives of "
2213  << "a jacobian w.r.t. nodal coordinates for a 'point' "
2214  << "element." << std::endl
2215  << "This makes no sense and is almost certainly an error."
2216  << std::endl
2217  << std::endl;
2218  }

References oomph::oomph_info.

◆ dJ_eulerian_dnodal_coordinates_templated_helper() [2/5]

template<>
void oomph::FiniteElement::dJ_eulerian_dnodal_coordinates_templated_helper ( const DenseMatrix< double > &  jacobian,
const DShape dpsids,
DenseMatrix< double > &  djacobian_dX 
) const
protected

One-d specialisation of function to calculate the derivative of the jacobian of a mapping with respect to the nodal coordinates X_ij.

2229  {
2230  // Determine the number of nodes in the element
2231  const unsigned n_node = nnode();
2232 
2233  // Loop over nodes
2234  for (unsigned j = 0; j < n_node; j++)
2235  {
2236  djacobian_dX(0, j) = dpsids(j, 0);
2237  }
2238  }

References j, and nnode().

◆ dJ_eulerian_dnodal_coordinates_templated_helper() [3/5]

template<>
void oomph::FiniteElement::dJ_eulerian_dnodal_coordinates_templated_helper ( const DenseMatrix< double > &  jacobian,
const DShape dpsids,
DenseMatrix< double > &  djacobian_dX 
) const
protected

Two-d specialisation of function to calculate the derivative of the jacobian of a mapping with respect to the nodal coordinates X_ij.

2249  {
2250  // Determine the number of nodes in the element
2251  const unsigned n_node = nnode();
2252 
2253  // Loop over nodes
2254  for (unsigned j = 0; j < n_node; j++)
2255  {
2256  // i=0
2257  djacobian_dX(0, j) =
2258  dpsids(j, 0) * jacobian(1, 1) - dpsids(j, 1) * jacobian(0, 1);
2259 
2260  // i=1
2261  djacobian_dX(1, j) =
2262  dpsids(j, 1) * jacobian(0, 0) - dpsids(j, 0) * jacobian(1, 0);
2263  }
2264  }

References j, and nnode().

◆ dJ_eulerian_dnodal_coordinates_templated_helper() [4/5]

template<>
void oomph::FiniteElement::dJ_eulerian_dnodal_coordinates_templated_helper ( const DenseMatrix< double > &  jacobian,
const DShape dpsids,
DenseMatrix< double > &  djacobian_dX 
) const
protected

Three-d specialisation of function to calculate the derivative of the jacobian of a mapping with respect to the nodal coordinates X_ij.

2275  {
2276  // Determine the number of nodes in the element
2277  const unsigned n_node = nnode();
2278 
2279  // Loop over nodes
2280  for (unsigned j = 0; j < n_node; j++)
2281  {
2282  // i=0
2283  djacobian_dX(0, j) =
2284  dpsids(j, 0) *
2285  (jacobian(1, 1) * jacobian(2, 2) - jacobian(1, 2) * jacobian(2, 1)) +
2286  dpsids(j, 1) *
2287  (jacobian(0, 2) * jacobian(2, 1) - jacobian(0, 1) * jacobian(2, 2)) +
2288  dpsids(j, 2) *
2289  (jacobian(0, 1) * jacobian(1, 2) - jacobian(0, 2) * jacobian(1, 1));
2290 
2291  // i=1
2292  djacobian_dX(1, j) =
2293  dpsids(j, 0) *
2294  (jacobian(1, 2) * jacobian(2, 0) - jacobian(1, 0) * jacobian(2, 2)) +
2295  dpsids(j, 1) *
2296  (jacobian(0, 0) * jacobian(2, 2) - jacobian(0, 2) * jacobian(2, 0)) +
2297  dpsids(j, 2) *
2298  (jacobian(0, 2) * jacobian(1, 0) - jacobian(0, 0) * jacobian(1, 2));
2299 
2300  // i=2
2301  djacobian_dX(2, j) =
2302  dpsids(j, 0) *
2303  (jacobian(1, 0) * jacobian(2, 1) - jacobian(1, 1) * jacobian(2, 0)) +
2304  dpsids(j, 1) *
2305  (jacobian(0, 1) * jacobian(2, 0) - jacobian(0, 0) * jacobian(2, 1)) +
2306  dpsids(j, 2) *
2307  (jacobian(0, 0) * jacobian(1, 1) - jacobian(0, 1) * jacobian(1, 0));
2308  }
2309  }

References j, and nnode().

◆ dJ_eulerian_dnodal_coordinates_templated_helper() [5/5]

template<unsigned DIM>
void oomph::FiniteElement::dJ_eulerian_dnodal_coordinates_templated_helper ( const DenseMatrix< double > &  jacobian,
const DShape dpsids,
DenseMatrix< double > &  djacobian_dX 
) const
protected

Calculate the derivative of the jacobian of a mapping with respect to the nodal coordinates X_ij using the jacobian matrix and the derivatives of the shape functions w.r.t. the local coordinates. This function is templated by the dimension of the element.

◆ dnodal_position_dt() [1/2]

double oomph::FiniteElement::dnodal_position_dt ( const unsigned n,
const unsigned i 
) const
inline

Return the i-th component of nodal velocity: dx/dt at local node n.

2334  {
2335  return node_pt(n)->dposition_dt(i);
2336  }
double dposition_dt(const unsigned &i) const
Definition: nodes.cc:2659

References oomph::Node::dposition_dt(), i, n, and node_pt().

Referenced by oomph::SurfactantTransportInterfaceElement::add_additional_residual_contributions_interface(), oomph::SphericalNavierStokesEquations::d_kin_energy_dt(), oomph::LinearisedAxisymmetricNavierStokesEquations::dkin_energy_dt(), oomph::RefineableAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::RefineableAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_cons_axisym_adv_diff(), oomph::FluidInterfaceElement::fill_in_generic_residual_contribution_interface(), oomph::RefineableLinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::RefineableSphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::PolarNavierStokesEquations::full_output(), oomph::SphericalNavierStokesEquations::full_output(), oomph::RefineableAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), and oomph::MyTaylorHoodElement< DIM >::output().

◆ dnodal_position_dt() [2/2]

double oomph::FiniteElement::dnodal_position_dt ( const unsigned n,
const unsigned j,
const unsigned i 
) const
inline

Return the i-th component of j-th derivative of nodal position: d^jx/dt^j at node n.

2343  {
2344  return node_pt(n)->dposition_dt(j, i);
2345  }

References oomph::Node::dposition_dt(), i, j, n, and node_pt().

◆ dnodal_position_gen_dt() [1/2]

double oomph::FiniteElement::dnodal_position_gen_dt ( const unsigned j,
const unsigned n,
const unsigned k,
const unsigned i 
) const
inline

i-th component of j-th time derivative of the generalised position, dx(k,i)/dt at local node n. ‘Type’: k; Coordinate direction: i.

2383  {
2384  return node_pt(n)->dposition_gen_dt(j, k, i);
2385  }
double dposition_gen_dt(const unsigned &k, const unsigned &i) const
Definition: nodes.cc:2708

References oomph::Node::dposition_gen_dt(), i, j, k, n, and node_pt().

◆ dnodal_position_gen_dt() [2/2]

double oomph::FiniteElement::dnodal_position_gen_dt ( const unsigned n,
const unsigned k,
const unsigned i 
) const
inline

i-th component of time derivative (velocity) of the generalised position, dx(k,i)/dt at local node n. ‘Type’: k; Coordinate direction: i.

2372  {
2373  return node_pt(n)->dposition_gen_dt(k, i);
2374  }

References oomph::Node::dposition_gen_dt(), i, k, n, and node_pt().

Referenced by oomph::RefineableQDPVDElement< DIM, NNODE_1D >::fill_in_generic_contribution_to_residuals_pvd(), oomph::KirchhoffLoveShellEquations::get_energy(), interpolated_dxdt(), and oomph::KirchhoffLoveShellEquations::load_rate_of_work().

◆ dposition_dt()

void oomph::FiniteElement::dposition_dt ( const Vector< double > &  zeta,
const unsigned t,
Vector< double > &  drdt 
)
inlinevirtual

Return the t-th time derivative of the parametrised position of the FiniteElement in its GeomObject incarnation: \( \frac{d^{t} dr(zeta)}{d t^{t}} \). Call the t-th time derivative of the FE-interpolated Eulerian coordinate

Reimplemented from oomph::GeomObject.

2704  {
2705  this->interpolated_dxdt(zeta, t, drdt);
2706  }
virtual double interpolated_dxdt(const Vector< double > &s, const unsigned &i, const unsigned &t)
Definition: elements.cc:4596
t
Definition: plotPSD.py:36

References interpolated_dxdt(), and plotPSD::t.

◆ dshape_eulerian()

double FiniteElement::dshape_eulerian ( const Vector< double > &  s,
Shape psi,
DShape dpsi 
) const

Compute the geometric shape functions and also first derivatives w.r.t. global coordinates at local coordinate s; Returns Jacobian of mapping from global to local coordinates.

Compute the geometric shape functions and also first derivatives w.r.t. global coordinates at local coordinate s; Returns Jacobian of mapping from global to local coordinates. Most general form of the function, but may be over-loaded, if desired

3301  {
3302  // Find the element dimension
3303  const unsigned el_dim = dim();
3304 
3305  // Get the values of the shape functions and their local derivatives
3306  // Temporarily stored in dpsi
3307  dshape_local(s, psi, dpsi);
3308 
3309  // Allocate memory for the inverse jacobian
3310  DenseMatrix<double> inverse_jacobian(el_dim);
3311  // Now calculate the inverse jacobian
3312  const double det = local_to_eulerian_mapping(dpsi, inverse_jacobian);
3313 
3314  // Now set the values of the derivatives to be dpsidx
3315  transform_derivatives(inverse_jacobian, dpsi);
3316  // Return the determinant of the jacobian
3317  return det;
3318  }
virtual void transform_derivatives(const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const
Definition: elements.cc:2833
virtual void dshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Definition: elements.h:1981

References dim(), dshape_local(), el_dim, local_to_eulerian_mapping(), s, and transform_derivatives().

Referenced by oomph::Mesh::check_inverted_elements(), oomph::AxisymmetricQCrouzeixRaviartElement::dshape_and_dtest_eulerian_axi_nst(), oomph::AxisymmetricQTaylorHoodElement::dshape_and_dtest_eulerian_axi_nst(), oomph::AxisymmetricTCrouzeixRaviartElement::dshape_and_dtest_eulerian_axi_nst(), oomph::AxisymmetricTTaylorHoodElement::dshape_and_dtest_eulerian_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::dshape_and_dtest_eulerian_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement::dshape_and_dtest_eulerian_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::dshape_and_dtest_eulerian_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::dshape_and_dtest_eulerian_axi_nst(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::dshape_and_dtest_eulerian_lin_axi_nst(), oomph::LinearisedAxisymmetricQTaylorHoodElement::dshape_and_dtest_eulerian_lin_axi_nst(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::dshape_and_dtest_eulerian_linearised_axi_nst(), oomph::LinearisedAxisymmetricQTaylorHoodElement::dshape_and_dtest_eulerian_linearised_axi_nst(), oomph::LinearisedQCrouzeixRaviartElement::dshape_and_dtest_eulerian_linearised_nst(), oomph::LinearisedQTaylorHoodElement::dshape_and_dtest_eulerian_linearised_nst(), oomph::PolarStreamfunctionElement::dshape_and_dtest_eulerian_poisson(), oomph::QSphericalCrouzeixRaviartElement::dshape_and_dtest_eulerian_spherical_nst(), oomph::QSphericalTaylorHoodElement::dshape_and_dtest_eulerian_spherical_nst(), oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >::fill_in_generic_residual_contribution_interface(), oomph::PolarNavierStokesEquations::full_output(), oomph::SphericalNavierStokesEquations::full_output(), oomph::PoissonEquations< DIM >::get_dflux_dnodal_u(), oomph::PolarStreamfunctionEquations::get_flux(), oomph::AdvectionDiffusionEquations< DIM >::get_flux(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::get_flux(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::get_flux(), oomph::AxisymAdvectionDiffusionEquations::get_flux(), oomph::LinearWaveEquations< DIM >::get_flux(), oomph::PoissonEquations< DIM >::get_flux(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_flux(), oomph::SphericalAdvectionDiffusionEquations::get_flux(), oomph::SteadyAxisymAdvectionDiffusionEquations::get_flux(), oomph::UnsteadyHeatEquations< DIM >::get_flux(), oomph::WomersleyEquations< DIM >::get_flux(), oomph::YoungLaplaceEquations::get_flux(), oomph::FourierDecomposedHelmholtzEquations::get_flux(), oomph::HelmholtzEquations< DIM >::get_flux(), oomph::PMLFourierDecomposedHelmholtzEquations::get_flux(), oomph::PMLHelmholtzEquations< DIM >::get_flux(), oomph::AxisymFoepplvonKarmanEquations::get_gradient_of_deflection(), oomph::DisplacementBasedFoepplvonKarmanEquations::get_gradient_of_deflection(), oomph::FoepplvonKarmanEquations::get_gradient_of_deflection(), oomph::DisplacementBasedFoepplvonKarmanEquations::get_gradient_of_field(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::get_strain(), oomph::DisplacementBasedFoepplvonKarmanEquations::get_stress_and_strain_for_output(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::get_total_flux(), oomph::SphericalNavierStokesEquations::get_vorticity(), oomph::SpectralPeriodicOrbitElement< NNODE_1D >::get_Z2_flux(), oomph::RefineableSpaceTimeNavierStokesEquations< DIM >::get_Z2_flux(), oomph::RefineableSpaceTimeNavierStokesMixedOrderEquations< DIM >::get_Z2_flux(), oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_Z2_flux(), oomph::RefineableSpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_Z2_flux(), oomph::AxisymmetricPoroelasticityEquations::interpolated_div_du_dt(), oomph::AxisymmetricPoroelasticityEquations::interpolated_div_u(), oomph::SpaceTimeNavierStokesEquations< DIM >::interpolated_du_dt_nst(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), oomph::PolarStreamfunctionEquations::interpolated_dudx(), oomph::BiharmonicEquations< DIM >::interpolated_dudx(), oomph::AxisymmetricNavierStokesEquations::interpolated_dudx_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_dudx_axi_nst(), oomph::NavierStokesEquations< DIM >::interpolated_dudx_nst(), oomph::PolarNavierStokesEquations::interpolated_dudx_pnst(), oomph::SphericalNavierStokesEquations::interpolated_dudx_spherical_nst(), oomph::AxisymFoepplvonKarmanEquations::interpolated_stress(), oomph::FoepplvonKarmanEquations::interpolated_stress(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::PeriodicOrbitEquations::orbit_output(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::LinearisedAxisymmetricNavierStokesEquations::strain_rate(), oomph::AxisymmetricNavierStokesEquations::strain_rate(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::strain_rate(), oomph::PolarNavierStokesEquations::strain_rate(), oomph::SphericalNavierStokesEquations::strain_rate(), oomph::LinearisedNavierStokesEquations::strain_rate(), and oomph::PolarNavierStokesEquations::strain_rate_by_r().

◆ dshape_eulerian_at_knot() [1/2]

double FiniteElement::dshape_eulerian_at_knot ( const unsigned ipt,
Shape psi,
DShape dpsi,
DenseMatrix< double > &  djacobian_dX,
RankFourTensor< double > &  d_dpsidx_dX 
) const
virtual

Compute the geometric shape functions (psi) and first derivatives w.r.t. global coordinates (dpsidx) at the ipt-th integration point. Return the determinant of the jacobian of the mapping (detJ). Additionally calculate the derivatives of both "detJ" and "dpsidx" w.r.t. the nodal coordinates.

Compute the geometric shape functions (psi) and first derivatives w.r.t. global coordinates (dpsidx) at integration point ipt. Return the determinant of the jacobian of the mapping (detJ). Additionally calculate the derivatives of both "detJ" and "dpsidx" w.r.t. the nodal coordinates. Most general form of function, but may be over-loaded if desired.

3396  {
3397  // Find the element dimension
3398  const unsigned el_dim = dim();
3399 
3400  // Get the values of the shape function and local derivatives
3401  // Temporarily store in dpsi
3402  dshape_local_at_knot(ipt, psi, dpsi);
3403 
3404  // Allocate memory for the jacobian and the inverse of the jacobian
3405  DenseMatrix<double> jacobian(el_dim), inverse_jacobian(el_dim);
3406 
3407  // Now calculate the inverse jacobian
3408  const double det =
3409  local_to_eulerian_mapping(dpsi, jacobian, inverse_jacobian);
3410 
3411  // Calculate the derivative of the jacobian w.r.t. nodal coordinates
3412  // Note: must call this before "transform_derivatives(...)" since this
3413  // function requires dpsids rather than dpsidx
3414  dJ_eulerian_dnodal_coordinates(jacobian, dpsi, djacobian_dX);
3415 
3416  // Calculate the derivative of dpsidx w.r.t. nodal coordinates
3417  // Note: this function also requires dpsids rather than dpsidx
3419  det, jacobian, djacobian_dX, inverse_jacobian, dpsi, d_dpsidx_dX);
3420 
3421  // Now set the values of the derivatives to dpsidx
3422  transform_derivatives(inverse_jacobian, dpsi);
3423 
3424  // Return the determinant of the jacobian
3425  return det;
3426  }
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
Definition: elements.cc:2749

References d_dshape_eulerian_dnodal_coordinates(), dim(), dJ_eulerian_dnodal_coordinates(), dshape_local_at_knot(), el_dim, local_to_eulerian_mapping(), and transform_derivatives().

◆ dshape_eulerian_at_knot() [2/2]

double FiniteElement::dshape_eulerian_at_knot ( const unsigned ipt,
Shape psi,
DShape dpsi 
) const
virtual

Return the geometric shape functions and also first derivatives w.r.t. global coordinates at the ipt-th integration point.

Compute the geometric shape functions and also first derivatives w.r.t. global coordinates at integration point ipt. Most general form of function, but may be over-loaded if desired

Reimplemented in HarmonicEquations, OrrSommerfeldEquations< DIM >, HarmonicEquations, ComplexHarmonicEquations, oomph::StorableShapeElementBase, QHarmonicElement< NNODE_1D >, QOrrSommerfeldElement< 1, NNODE_1D >, QHarmonicElement< NNODE_1D >, and QComplexHarmonicElement< NNODE_1D >.

3328  {
3329  // Find the element dimension
3330  const unsigned el_dim = dim();
3331 
3332  // Get the values of the shape function and local derivatives
3333  // Temporarily store it in dpsi
3334  dshape_local_at_knot(ipt, psi, dpsi);
3335 
3336  // Allocate memory for the inverse jacobian
3337  DenseMatrix<double> inverse_jacobian(el_dim);
3338  // Now calculate the inverse jacobian
3339  const double det = local_to_eulerian_mapping(dpsi, inverse_jacobian);
3340 
3341  // Now set the values of the derivatives to dpsidx
3342  transform_derivatives(inverse_jacobian, dpsi);
3343  // Return the determinant of the jacobian
3344  return det;
3345  }

References dim(), dshape_local_at_knot(), el_dim, local_to_eulerian_mapping(), and transform_derivatives().

Referenced by check_J_eulerian_at_knots(), oomph::EulerEquations< DIM >::compute_error(), oomph::ScalarAdvectionEquations< DIM >::compute_error(), oomph::SphericalNavierStokesEquations::d_kin_energy_dt(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::dshape_and_dtest_eulerian_and_dnodal_coordinates_at_knot_lin_axi_nst(), oomph::LinearisedAxisymmetricQTaylorHoodElement::dshape_and_dtest_eulerian_and_dnodal_coordinates_at_knot_lin_axi_nst(), oomph::AxisymmetricQCrouzeixRaviartElement::dshape_and_dtest_eulerian_at_knot_axi_nst(), oomph::AxisymmetricQTaylorHoodElement::dshape_and_dtest_eulerian_at_knot_axi_nst(), oomph::AxisymmetricTCrouzeixRaviartElement::dshape_and_dtest_eulerian_at_knot_axi_nst(), oomph::AxisymmetricTTaylorHoodElement::dshape_and_dtest_eulerian_at_knot_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::dshape_and_dtest_eulerian_at_knot_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement::dshape_and_dtest_eulerian_at_knot_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::dshape_and_dtest_eulerian_at_knot_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::dshape_and_dtest_eulerian_at_knot_axi_nst(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::dshape_and_dtest_eulerian_at_knot_lin_axi_nst(), oomph::LinearisedAxisymmetricQTaylorHoodElement::dshape_and_dtest_eulerian_at_knot_lin_axi_nst(), oomph::LinearisedAxisymmetricQCrouzeixRaviartElement::dshape_and_dtest_eulerian_at_knot_linearised_axi_nst(), oomph::LinearisedAxisymmetricQTaylorHoodElement::dshape_and_dtest_eulerian_at_knot_linearised_axi_nst(), oomph::LinearisedQCrouzeixRaviartElement::dshape_and_dtest_eulerian_at_knot_linearised_nst(), oomph::LinearisedQTaylorHoodElement::dshape_and_dtest_eulerian_at_knot_linearised_nst(), oomph::PolarStreamfunctionElement::dshape_and_dtest_eulerian_at_knot_poisson(), oomph::QSphericalCrouzeixRaviartElement::dshape_and_dtest_eulerian_at_knot_spherical_nst(), oomph::QSphericalTaylorHoodElement::dshape_and_dtest_eulerian_at_knot_spherical_nst(), oomph::StorableShapeElementBase::dshape_eulerian_at_knot(), oomph::RefineableYoungLaplaceEquations::fill_in_contribution_to_residuals(), oomph::YoungLaplaceEquations::fill_in_contribution_to_residuals(), oomph::AxisymmetricLinearElasticityEquations::fill_in_generic_contribution_to_residuals_axisymmetric_linear_elasticity(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::fill_in_generic_contribution_to_residuals_fourier_decomp_time_harmonic_linear_elasticity(), oomph::FoepplvonKarmanEquations::get_bounded_volume(), oomph::StorableShapeElementBase::pre_compute_dshape_eulerian_at_knots(), self_test(), and oomph::MyTaylorHoodElement< DIM >::square_of_l2_norm().

◆ dshape_local()

virtual void oomph::FiniteElement::dshape_local ( const Vector< double > &  s,
Shape psi,
DShape dpsids 
) const
inlinevirtual

Function to compute the geometric shape functions and derivatives w.r.t. local coordinates at local coordinate s. This function must be overloaded for each specific geometric element. (Broken virtual function — specifies the interface)

Reimplemented in oomph::ClampedHermiteShellBoundaryConditionElement, oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, TwoNodeGeometricElement, FixSpineHeightElement, FixSpineHeightElement, oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >, and oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >.

1984  {
1985  throw OomphLibError(
1986  "dshape_local() is not implemented for this element\n",
1989  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::HelmholtzBCElementBase< ELEMENT >::compute_contribution_to_fourier_components(), oomph::FaceElement::continuous_tangent_and_outer_unit_normal(), oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >::d_shape_and_test_local(), oomph::HelmholtzBCElementBase< ELEMENT >::d_shape_and_test_local(), oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >::d_shape_and_test_local(), oomph::AxisymmetricTCrouzeixRaviartElement::dpshape_and_dptest_eulerian_axi_nst(), oomph::AxisymmetricTTaylorHoodElement::dpshape_and_dptest_eulerian_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::dpshape_and_dptest_eulerian_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::dpshape_and_dptest_eulerian_axi_nst(), dshape_eulerian(), oomph::SolidFiniteElement::dshape_lagrangian(), dshape_local_at_knot(), oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::KirchhoffLoveBeamEquations::get_non_unit_tangent(), oomph::AxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst(), oomph::AxisymmetricPoroelasticityEquations::interpolated_div_q(), oomph::DarcyEquations< DIM >::interpolated_div_q(), oomph::PoroelasticityEquations< DIM >::interpolated_div_q(), oomph::AxisymmetricNavierStokesEquations::interpolated_duds_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_duds_axi_nst(), oomph::SolidFiniteElement::interpolated_dxids(), J_eulerian(), oomph::FaceElement::J_eulerian(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::lagrangian_eulerian_translation_factor(), locate_zeta(), oomph::FaceElement::outer_unit_normal(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::output(), and oomph::AxisymmetricPoroelasticityEquations::transform_basis().

◆ dshape_local_at_knot()

void FiniteElement::dshape_local_at_knot ( const unsigned ipt,
Shape psi,
DShape dpsids 
) const
virtual

Return the geometric shape function and its derivative w.r.t. the local coordinates at the ipt-th integration point.

Return the shape function and its derivatives w.r.t. the local coordinates at the ipt-th integration point.

Reimplemented in oomph::StorableShapeElementBase.

3242  {
3243  // Find the dimension of the element
3244  const unsigned el_dim = dim();
3245  // Storage for the local coordinates of the integration point
3246  Vector<double> s(el_dim);
3247  // Set the local coordinate
3248  for (unsigned i = 0; i < el_dim; i++)
3249  {
3250  s[i] = integral_pt()->knot(ipt, i);
3251  }
3252  // Get the shape function and derivatives
3253  dshape_local(s, psi, dpsids);
3254  }

References dim(), dshape_local(), el_dim, i, integral_pt(), oomph::Integral::knot(), and s.

Referenced by oomph::FaceElement::check_J_eulerian_at_knots(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::contribution_to_enclosed_volume(), oomph::LineVolumeConstraintBoundingElement::contribution_to_enclosed_volume(), oomph::AxisymmetricVolumeConstraintBoundingElement::contribution_to_enclosed_volume(), oomph::StefanBoltzmannRadiationBase::contribution_to_stefan_boltzmann_radiation(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::contribution_to_total_porous_flux(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::contribution_to_total_porous_flux(), oomph::AxisymmetricVolumeConstraintBoundingElement::contribution_to_volume_flux(), dJ_eulerian_at_knot(), oomph::LinearisedAxisymmetricNavierStokesEquations::dkin_energy_dt(), dshape_eulerian_at_knot(), oomph::SolidFiniteElement::dshape_lagrangian_at_knot(), oomph::StorableShapeElementBase::dshape_local_at_knot(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::FluidInterfaceElement::fill_in_generic_residual_contribution_interface(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_lin_axi_nst(), oomph::LineVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::AxisymmetricVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::SurfaceVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::SurfactantTransportInterfaceElement::integrate_c(), J_eulerian_at_knot(), oomph::FaceElement::J_eulerian_at_knot(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::output(), oomph::StorableShapeElementBase::pre_compute_dshape_local_at_knots(), oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), and oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::square_of_l2_norm_of_error().

◆ element_geometry()

virtual ElementGeometry::ElementGeometry oomph::FiniteElement::element_geometry ( ) const
inlinevirtual

Return the geometry type of the element (either Q or T usually).

Reimplemented in oomph::TElementBase, and oomph::QElementBase.

2618  {
2619  std::string err = "Broken virtual function.";
2620  throw OomphLibError(
2622  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

◆ enable_ALE()

virtual void oomph::FiniteElement::enable_ALE ( )
inlinevirtual

(Re-)enable ALE, i.e. take possible mesh motion into account when evaluating the time-derivative. This function is empty and simply establishes a common interface for all derived elements that are formulated in ALE form.

Reimplemented in oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::SphericalNavierStokesEquations, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearisedNavierStokesEquations, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::AxisymmetricNavierStokesEquations, oomph::AxisymAdvectionDiffusionEquations, oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >, oomph::GeneralisedAdvectionDiffusionEquations< DIM >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearisedAxisymmetricNavierStokesEquations, and oomph::LinearisedAxisymmetricNavierStokesEquations.

2431  {
2432  std::ostringstream warn_message;
2433  warn_message
2434  << "Warning: You have just called the default (empty) function \n\n"
2435  << " FiniteElement::enable_ALE() \n\n"
2436  << "This suggests that you've either tried to call it for an element\n"
2437  << "that \n"
2438  << "(1) does not involve time-derivatives (e.g. a Poisson element) \n"
2439  << "(2) an element for which the time-derivatives aren't implemented \n"
2440  << " in ALE form \n"
2441  << "(3) an element for which the ALE form of the equations can't be \n"
2442  << " be disabled (yet)\n"
2443  << "(4) an element for which this function has not been (properly) \n "
2444  << " implemented. This is likely to be a bug!\n ";
2445  OomphLibWarning(
2446  warn_message.str(), "Problem::enable_ALE()", OOMPH_EXCEPTION_LOCATION);
2447  }

References OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::enable_ALE().

◆ face_node_number_error_check()

void oomph::FiniteElement::face_node_number_error_check ( const unsigned i) const
inline

Range check for face node numbers.

3396  {
3397 #ifdef RANGE_CHECKING
3398  if (i > nnode_on_face())
3399  {
3400  std::string err = "Face node index i out of range on face.";
3401  throw OomphLibError(
3403  }
3404 #endif
3405  }

References i, nnode_on_face(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

◆ face_outer_unit_normal_sign()

virtual int oomph::FiniteElement::face_outer_unit_normal_sign ( const int face_index) const
inlinevirtual

Get the sign of the outer unit normal on the face given by face_index.

Reimplemented in oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, and oomph::QElement< 1, NNODE_1D >.

3381  {
3382  std::string err = "Not implemented for this element.";
3383  throw OomphLibError(
3385  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

Referenced by build_face_element().

◆ face_to_bulk_coordinate_fct_pt()

virtual CoordinateMappingFctPt oomph::FiniteElement::face_to_bulk_coordinate_fct_pt ( const int face_index) const
inlinevirtual

Get a pointer to the function mapping face coordinates to bulk coordinates

Reimplemented in oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, and oomph::QElement< 1, NNODE_1D >.

3411  {
3412  std::string err = "Not implemented for this element.";
3413  throw OomphLibError(
3415  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

Referenced by build_face_element().

◆ fill_in_contribution_to_jacobian()

void oomph::FiniteElement::fill_in_contribution_to_jacobian ( Vector< double > &  residuals,
DenseMatrix< double > &  jacobian 
)
inlineprotectedvirtual

Add the elemental contribution to the jacobian matrix. and the residuals vector. Note that this function will NOT initialise the residuals vector or the jacobian matrix. It must be called after the residuals vector and jacobian matrix have been initialised to zero. The default is to use finite differences to calculate the jacobian

Reimplemented from oomph::GeneralisedElement.

Reimplemented in oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >, oomph::WomersleyEquations< DIM >, oomph::UnsteadyHeatFluxElement< ELEMENT >, oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::TimeHarmonicLinearElasticityEquations< DIM >, oomph::TimeHarmonicFourierDecomposedLinearElasticityTractionElement< ELEMENT >, oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations, oomph::SteadyAxisymAdvectionDiffusionFluxElement< ELEMENT >, oomph::SteadyAxisymAdvectionDiffusionEquations, oomph::SphericalNavierStokesEquations, oomph::SphericalAdvectionDiffusionFluxElement< ELEMENT >, oomph::SphericalAdvectionDiffusionEquations, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::FpPressureAdvDiffRobinBCMixedOrderSpaceTimeElement< ELEMENT >, oomph::RefineableNavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >, oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >, oomph::RefineableNavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >, oomph::RefineableNavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >, oomph::RefineableNavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >, oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >, oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >, oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >, oomph::RefineableFSISolidTractionElement< ELEMENT, DIM >, oomph::FSISolidTractionElement< ELEMENT, DIM >, oomph::RefineableSolidTractionElement< ELEMENT >, oomph::SolidTractionElement< ELEMENT >, oomph::PVDEquationsWithPressure< DIM >, oomph::PVDEquations< DIM >, oomph::FSIDiagHermiteShellElement, oomph::KirchhoffLoveShellEquations, oomph::PoroelasticityFaceElement< ELEMENT >, oomph::PoroelasticityEquations< DIM >, oomph::PoroelasticityEquations< 2 >, oomph::PolarStressIntegralElement< ELEMENT >, oomph::PolarNavierStokesEquations, oomph::PolarNavierStokesTractionElement< ELEMENT >, oomph::PoissonFluxElement< ELEMENT >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::PMLTimeHarmonicLinearElasticityEquations< DIM >, oomph::PMLHelmholtzFluxElement< ELEMENT >, oomph::PMLHelmholtzEquations< DIM >, oomph::PMLFourierDecomposedHelmholtzFluxElement< ELEMENT >, oomph::PMLFourierDecomposedHelmholtzEquations, oomph::RefineableNavierStokesFluxControlElement< ELEMENT >, oomph::NavierStokesFluxControlElement< ELEMENT >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::FpPressureAdvDiffRobinBCElement< ELEMENT >, oomph::ImposeParallelOutflowElement< ELEMENT >, oomph::ImposeImpenetrabilityElement< ELEMENT >, oomph::RefineableNavierStokesTractionElement< ELEMENT >, oomph::NavierStokesTractionElement< ELEMENT >, oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >, oomph::NavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >, oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >, oomph::RefineableNavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >, oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, RefineableLinearisedQCrouzeixRaviartMultiDomainElement, RefineableLinearisedQTaylorHoodMultiDomainElement, LinearisedQCrouzeixRaviartMultiDomainElement, LinearisedQTaylorHoodMultiDomainElement, RefineableLinearisedAxisymmetricQCrouzeixRaviartMultiDomainElement, RefineableLinearisedAxisymmetricQTaylorHoodMultiDomainElement, LinearisedAxisymmetricQCrouzeixRaviartMultiDomainElement, LinearisedAxisymmetricQTaylorHoodMultiDomainElement, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::LinearWaveFluxElement< ELEMENT >, oomph::LinearWaveEquations< DIM >, oomph::LinearElasticityTractionElement< ELEMENT >, oomph::LinearElasticityEquations< DIM >, oomph::HelmholtzFluxElement< ELEMENT >, oomph::HelmholtzEquations< DIM >, oomph::HelmholtzDtNBoundaryElement< ELEMENT >, oomph::HelmholtzAbsorbingBCElement< ELEMENT >, oomph::PseudoSolidNodeUpdateElement< TCrouzeixRaviartElement< 2 >, TPVDBubbleEnrichedElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< TTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianAxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< AxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianTTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::ProjectableElement< ELEMENT >, oomph::ProjectableElement< FVK_ELEMENT >, oomph::ProjectableElement< AXISYM_LINEAR_ELAST_ELEMENT >, oomph::ProjectableElement< UNSTEADY_HEAT_ELEMENT >, oomph::ProjectableElement< LINEAR_ELAST_ELEMENT >, oomph::ProjectableElement< CROUZEIX_RAVIART_ELEMENT >, oomph::ProjectableElement< HELMHOLTZ_ELEMENT >, oomph::ProjectableElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >, oomph::ProjectableElement< TAYLOR_HOOD_ELEMENT >, oomph::ProjectableElement< PVD_ELEMENT >, oomph::ProjectableElement< ADR_ELEMENT >, oomph::ProjectableElement< DARCY_ELEMENT >, oomph::ProjectableElement< POISSON_ELEMENT >, oomph::ProjectableElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >, oomph::ProjectableElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >, oomph::ProjectableElement< LINEAR_HEAT_AND_ELAST_ELEMENT >, oomph::FSIWallElement, oomph::FaceElementAsGeomObject< ELEMENT >, oomph::SolidFiniteElement, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SolubleSurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SolubleSurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT >, oomph::AxisymmetricPoroelasticityTractionElement< POROELASTICITY_BULK_ELEMENT >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, and oomph::AdvectionDiffusionEquations< 2 >.

1737  {
1738  // Add the contribution to the residuals
1740  // Allocate storage for the full residuals (residuals of entire element)
1741  unsigned n_dof = ndof();
1742  Vector<double> full_residuals(n_dof);
1743  // Get the residuals for the entire element
1744  get_residuals(full_residuals);
1745  // Calculate the contributions from the internal dofs
1746  //(finite-difference the lot by default)
1747  fill_in_jacobian_from_internal_by_fd(full_residuals, jacobian, true);
1748  // Calculate the contributions from the external dofs
1749  //(finite-difference the lot by default)
1750  fill_in_jacobian_from_external_by_fd(full_residuals, jacobian, true);
1751  // Calculate the contributions from the nodal dofs
1752  fill_in_jacobian_from_nodal_by_fd(full_residuals, jacobian);
1753  }
virtual void fill_in_jacobian_from_nodal_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: elements.cc:3660
virtual void fill_in_contribution_to_residuals(Vector< double > &residuals)
Definition: elements.h:357
virtual void get_residuals(Vector< double > &residuals)
Definition: elements.h:980
void fill_in_jacobian_from_external_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
Definition: elements.cc:1199
void fill_in_jacobian_from_internal_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
Definition: elements.cc:1102

References oomph::GeneralisedElement::fill_in_contribution_to_residuals(), oomph::GeneralisedElement::fill_in_jacobian_from_external_by_fd(), oomph::GeneralisedElement::fill_in_jacobian_from_internal_by_fd(), fill_in_jacobian_from_nodal_by_fd(), oomph::GeneralisedElement::get_residuals(), and oomph::GeneralisedElement::ndof().

Referenced by RefineableBuoyantQCrouzeixRaviartElement< DIM >::fill_in_contribution_to_jacobian(), RefineableQCrouzeixRaviartElementWithExternalElement< DIM >::fill_in_contribution_to_jacobian(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::fill_in_contribution_to_jacobian(), RefineableQCrouzeixRaviartElementWithTwoExternalElement< DIM >::fill_in_contribution_to_jacobian(), RefineableQAdvectionDiffusionElementWithExternalElement< DIM >::fill_in_contribution_to_jacobian(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::fill_in_contribution_to_jacobian(), LinearisedQTaylorHoodMultiDomainElement::fill_in_contribution_to_jacobian(), LinearisedQCrouzeixRaviartMultiDomainElement::fill_in_contribution_to_jacobian(), RefineableLinearisedQTaylorHoodMultiDomainElement::fill_in_contribution_to_jacobian(), RefineableLinearisedQCrouzeixRaviartMultiDomainElement::fill_in_contribution_to_jacobian(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::fill_in_contribution_to_jacobian(), oomph::SolubleSurfactantTransportInterfaceElement::fill_in_contribution_to_jacobian_and_mass_matrix(), oomph::SurfactantTransportInterfaceElement::fill_in_contribution_to_jacobian_and_mass_matrix(), and oomph::DisplacementBasedFoepplvonKarmanEquations::fill_in_contribution_to_jacobian_and_mass_matrix().

◆ fill_in_jacobian_from_nodal_by_fd() [1/2]

void oomph::FiniteElement::fill_in_jacobian_from_nodal_by_fd ( DenseMatrix< double > &  jacobian)
inlineprotected

Calculate the contributions to the jacobian from the nodal degrees of freedom using finite differences. This version computes the residuals vector before calculating the jacobian terms.

1696  {
1697  // Allocate storage for a residuals vector and initialise to zero
1698  unsigned n_dof = ndof();
1699  Vector<double> residuals(n_dof, 0.0);
1700  // Get the residuals for the entire element
1701  get_residuals(residuals);
1702  // Call the jacobian calculation
1703  fill_in_jacobian_from_nodal_by_fd(residuals, jacobian);
1704  }

References fill_in_jacobian_from_nodal_by_fd(), oomph::GeneralisedElement::get_residuals(), and oomph::GeneralisedElement::ndof().

◆ fill_in_jacobian_from_nodal_by_fd() [2/2]

void FiniteElement::fill_in_jacobian_from_nodal_by_fd ( Vector< double > &  residuals,
DenseMatrix< double > &  jacobian 
)
protectedvirtual

Calculate the contributions to the jacobian from the nodal degrees of freedom using finite differences. This version of the function assumes that the residuals vector has already been calculated

This function calculates the entries of Jacobian matrix, used in the Newton method, associated with the nodal degrees of freedom. It does this using finite differences, rather than an analytical formulation, so can be done in total generality.

Reimplemented in oomph::RefineableElement.

3662  {
3663  // Find the number of nodes
3664  const unsigned n_node = nnode();
3665  // If there aren't any nodes, then return straight awayy
3666  if (n_node == 0)
3667  {
3668  return;
3669  }
3670 
3671  // Call the update function to ensure that the element is in
3672  // a consistent state before finite differencing starts
3674 
3675  // Find the number of dofs in the element
3676  const unsigned n_dof = ndof();
3677  // Create newres vector
3678  Vector<double> newres(n_dof);
3679 
3680  // Integer storage for local unknown
3681  int local_unknown = 0;
3682 
3683  // Use the default finite difference step
3684  const double fd_step = Default_fd_jacobian_step;
3685 
3686  // Loop over the nodes
3687  for (unsigned n = 0; n < n_node; n++)
3688  {
3689  // Get the number of values stored at the node
3690  const unsigned n_value = node_pt(n)->nvalue();
3691 
3692  // Loop over the number of values
3693  for (unsigned i = 0; i < n_value; i++)
3694  {
3695  // Get the local equation number
3696  local_unknown = nodal_local_eqn(n, i);
3697  // If it's not pinned
3698  if (local_unknown >= 0)
3699  {
3700  // Store a pointer to the nodal data value
3701  double* const value_pt = node_pt(n)->value_pt(i);
3702 
3703  // Save the old value of the Nodal data
3704  const double old_var = *value_pt;
3705 
3706  // Increment the value of the Nodal data
3707  *value_pt += fd_step;
3708 
3709  // Now update any dependent variables
3711 
3712  // Calculate the new residuals
3713  get_residuals(newres);
3714 
3715  // Do finite differences
3716  for (unsigned m = 0; m < n_dof; m++)
3717  {
3718  double sum = (newres[m] - residuals[m]) / fd_step;
3719  // Stick the entry into the Jacobian matrix
3720  jacobian(m, local_unknown) = sum;
3721  }
3722 
3723  // Reset the Nodal data
3724  *value_pt = old_var;
3725 
3726  // Reset any dependent variables
3728  }
3729  }
3730  }
3731 
3732  // End of finite difference loop
3733  // Final reset of any dependent data
3735  }
double * value_pt(const unsigned &i) const
Definition: nodes.h:324
virtual void update_before_nodal_fd()
Definition: elements.h:1709
virtual void update_in_nodal_fd(const unsigned &i)
Definition: elements.h:1718
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Definition: elements.h:1432
virtual void reset_in_nodal_fd(const unsigned &i)
Definition: elements.h:1723
virtual void reset_after_nodal_fd()
Definition: elements.h:1714
static double Default_fd_jacobian_step
Definition: elements.h:1198
int * m
Definition: level2_cplx_impl.h:294

References oomph::GeneralisedElement::Default_fd_jacobian_step, oomph::GeneralisedElement::get_residuals(), i, m, n, oomph::GeneralisedElement::ndof(), nnode(), nodal_local_eqn(), node_pt(), oomph::Data::nvalue(), reset_after_nodal_fd(), reset_in_nodal_fd(), update_before_nodal_fd(), update_in_nodal_fd(), and oomph::Data::value_pt().

Referenced by oomph::ElementWithExternalElement::fill_in_contribution_to_jacobian(), fill_in_contribution_to_jacobian(), oomph::SolidFiniteElement::fill_in_contribution_to_jacobian(), oomph::FSIWallElement::fill_in_contribution_to_jacobian(), and fill_in_jacobian_from_nodal_by_fd().

◆ geom_data_pt()

Data* oomph::FiniteElement::geom_data_pt ( const unsigned j)
inlinevirtual

A standard FiniteElement is fixed, so there are no geometric data when viewed in its GeomObject incarnation

Reimplemented from oomph::GeomObject.

Reimplemented in oomph::RefineableSolidElement, oomph::FaceElementAsGeomObject< ELEMENT >, and oomph::SolidFiniteElement.

2668  {
2669  return 0;
2670  }

Referenced by oomph::ElementWithExternalElement::assign_external_interaction_data_local_eqn_numbers().

◆ get_bulk_node_number()

virtual unsigned oomph::FiniteElement::get_bulk_node_number ( const int face_index,
const unsigned i 
) const
inlinevirtual

Get the number of the ith node on face face_index (in the bulk node vector).

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, and oomph::QElement< 1, NNODE_1D >.

3373  {
3374  std::string err = "Not implemented for this element.";
3375  throw OomphLibError(
3377  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

Referenced by build_face_element().

◆ get_centre_of_gravity_and_max_radius_in_terms_of_zeta()

void FiniteElement::get_centre_of_gravity_and_max_radius_in_terms_of_zeta ( Vector< double > &  cog,
double max_radius 
) const

Compute centre of gravity of all nodes and radius of node that is furthest from it. Used to assess approximately if a point is likely to be contained with an element in locate_zeta-like operations

Compute centre of gravity of all nodes and radius of node that is furthest from it. Used to assess approximately if a point is likely to be contained with an element in locate_zeta-like operations. NOTE: All computed in terms of zeta!

3926  {
3927  // Initialise
3928  cog.resize(Elemental_dimension);
3929  max_radius = 0.0;
3930 
3931  // Get cog
3932  unsigned nnod = nnode();
3933  for (unsigned j = 0; j < nnod; j++)
3934  {
3935  for (unsigned i = 0; i < Elemental_dimension; i++)
3936  {
3937  cog[i] += zeta_nodal(j, 0, i);
3938  }
3939  }
3940  for (unsigned i = 0; i < Elemental_dimension; i++)
3941  {
3942  cog[i] /= double(nnod);
3943  }
3944 
3945  // Get max distance
3946  for (unsigned j = 0; j < nnod; j++)
3947  {
3948  double dist_squared = 0.0;
3949  for (unsigned i = 0; i < Elemental_dimension; i++)
3950  {
3951  dist_squared +=
3952  (cog[i] - zeta_nodal(j, 0, i)) * (cog[i] - zeta_nodal(j, 0, i));
3953  }
3954  if (dist_squared > max_radius) max_radius = dist_squared;
3955  }
3956  max_radius = sqrt(max_radius);
3957  }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
virtual double zeta_nodal(const unsigned &n, const unsigned &k, const unsigned &i) const
Definition: elements.h:2722

References Elemental_dimension, i, j, nnode(), sqrt(), and zeta_nodal().

Referenced by locate_zeta().

◆ get_dresidual_dnodal_coordinates()

void FiniteElement::get_dresidual_dnodal_coordinates ( RankThreeTensor< double > &  dresidual_dnodal_coordinates)
virtual

Compute derivatives of elemental residual vector with respect to nodal coordinates. Default implementation by FD can be overwritten for specific elements. dresidual_dnodal_coordinates(l,i,j) = d res(l) / dX_{ij}

Compute derivatives of elemental residual vector with respect to nodal coordinates. Default implementation by FD can be overwritten for specific elements. dresidual_dnodal_coordinates(l,i,j) = d res(l) / dX_{ij} /=======================================================================

Reimplemented in oomph::RefineableSpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::RefineableSpaceTimeNavierStokesEquations< DIM >, oomph::RefineableSpaceTimeNavierStokesEquations< DIM >, oomph::RefineableSpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::RefineablePoissonEquations< DIM >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::RefineableNavierStokesEquations< DIM >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::RefineableElement, oomph::RefineableGeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::RefineableAxisymmetricNavierStokesEquations, oomph::AxisymmetricNavierStokesEquations, ModalPRefineableQPoissonElement< DIM >, and RefineableModalPoissonEquations< DIM >.

3746  {
3747  // Number of nodes
3748  unsigned n_nod = nnode();
3749 
3750  // If the element has no nodes (why??!!) return straightaway
3751  if (n_nod == 0) return;
3752 
3753  // Get dimension from first node
3754  unsigned dim_nod = node_pt(0)->ndim();
3755 
3756  // Number of dofs
3757  unsigned n_dof = ndof();
3758 
3759  // Get reference residual
3760  Vector<double> res(n_dof);
3761  Vector<double> res_pls(n_dof);
3762  get_residuals(res);
3763 
3764  // FD step
3766 
3767  // Do FD loop
3768  for (unsigned j = 0; j < n_nod; j++)
3769  {
3770  // Get node
3771  Node* nod_pt = node_pt(j);
3772 
3773  // Loop over coordinate directions
3774  for (unsigned i = 0; i < dim_nod; i++)
3775  {
3776  // Make backup
3777  double backup = nod_pt->x(i);
3778 
3779  // Do FD step. No node update required as we're
3780  // attacking the coordinate directly...
3781  nod_pt->x(i) += eps_fd;
3782 
3783  // Perform auxiliary node update function
3784  nod_pt->perform_auxiliary_node_update_fct();
3785 
3786  // Get advanced residual
3787  get_residuals(res_pls);
3788 
3789  // Fill in FD entries [Loop order is "wrong" here as l is the
3790  // slow index but this is in a function that's costly anyway
3791  // and gives us the fastest loop outside where these tensor
3792  // is actually used.]
3793  for (unsigned l = 0; l < n_dof; l++)
3794  {
3795  dresidual_dnodal_coordinates(l, i, j) =
3796  (res_pls[l] - res[l]) / eps_fd;
3797  }
3798 
3799  // Reset coordinate. No node update required as we're
3800  // attacking the coordinate directly...
3801  nod_pt->x(i) = backup;
3802 
3803  // Perform auxiliary node update function
3804  nod_pt->perform_auxiliary_node_update_fct();
3805  }
3806  }
3807  }
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition: PartialRedux_count.cpp:3

References oomph::GeneralisedElement::Default_fd_jacobian_step, oomph::GeneralisedElement::get_residuals(), i, j, oomph::Node::ndim(), oomph::GeneralisedElement::ndof(), nnode(), node_pt(), oomph::Node::perform_auxiliary_node_update_fct(), res, and oomph::Node::x().

Referenced by oomph::ElementWithMovingNodes::fill_in_jacobian_from_geometric_data(), and ModalPRefineableQPoissonElement< DIM >::get_dresidual_dnodal_coordinates().

◆ get_node_at_local_coordinate()

Node * FiniteElement::get_node_at_local_coordinate ( const Vector< double > &  s) const
virtual

If there is a node at this local coordinate, return the pointer to the node

If there is a node at the local coordinate, s, return the pointer to the node. If not return 0. Note that this is a default, brute force implementation, can almost certainly be made more efficient for specific elements.

Reimplemented in oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >, and oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >.

3884  {
3885  // Locally cache the tolerance
3886  const double tol = Node_location_tolerance;
3887  Vector<double> s_node;
3888  // Locally cache the member data
3889  const unsigned el_dim = Elemental_dimension;
3890  const unsigned n_node = Nnode;
3891  // Loop over the nodes
3892  for (unsigned n = 0; n < n_node; n++)
3893  {
3894  bool Match = true;
3895  // Find the local coordinate of the node
3896  local_coordinate_of_node(n, s_node);
3897  for (unsigned i = 0; i < el_dim; i++)
3898  {
3899  // Calculate the difference between coordinates
3900  // and if it's bigger than our tolerance
3901  // break out of the (inner)loop
3902  if (std::fabs(s[i] - s_node[i]) > tol)
3903  {
3904  Match = false;
3905  break;
3906  }
3907  }
3908  // If we haven't complained then we have a match
3909  if (Match)
3910  {
3911  return node_pt(n);
3912  }
3913  }
3914  // If we get here, we have no match
3915  return 0;
3916  }
virtual void local_coordinate_of_node(const unsigned &j, Vector< double > &s) const
Definition: elements.h:1842
static const double Node_location_tolerance
Definition: elements.h:1374

Referenced by oomph::RefineableQElement< 3 >::build(), oomph::RefineableQElement< 1 >::build(), oomph::RefineableQElement< 2 >::build(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableAxisymmetricQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableLinearisedQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableQSphericalTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::get_interpolating_node_at_local_coordinate(), oomph::RefineableElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableQTaylorHoodElement< DIM >::get_interpolating_node_at_local_coordinate(), oomph::RefineablePolarTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::get_interpolating_node_at_local_coordinate(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::get_interpolating_node_at_local_coordinate(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::get_interpolating_node_at_local_coordinate(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::node_created_by_neighbour(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::node_created_by_neighbour(), oomph::RefineableQElement< 3 >::node_created_by_neighbour(), oomph::RefineableQElement< 1 >::node_created_by_neighbour(), oomph::RefineableQElement< 2 >::node_created_by_neighbour(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::node_created_by_son_of_neighbour(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::node_created_by_son_of_neighbour(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::pre_build(), and oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::pre_build().

◆ get_node_number()

int FiniteElement::get_node_number ( Node *const &  global_node_pt) const

Return the number of the node *node_pt if this node is in the element, else return -1;

Return the number of the node located at *node_pt if this node is in the element, else return \( -1 \)

3815  {
3816  // Initialise the number to -1
3817  int number = -1;
3818  // Find the number of nodes
3819  unsigned n_node = nnode();
3820 #ifdef PARANOID
3821  {
3822  // Error check that node does not appear in element more than once
3823  unsigned count = 0;
3824  // Storage for the local node numbers of the element
3825  std::vector<int> local_node_number;
3826  // Loop over the nodes
3827  for (unsigned i = 0; i < n_node; i++)
3828  {
3829  // If the node is present increase the counter
3830  // and store the local node number
3831  if (node_pt(i) == global_node_pt)
3832  {
3833  ++count;
3834  local_node_number.push_back(i);
3835  }
3836  }
3837 
3838  // If the node appears more than once, complain
3839  if (count > 1)
3840  {
3841  std::ostringstream error_stream;
3842  error_stream << "Node " << global_node_pt << " appears " << count
3843  << " times in an element." << std::endl
3844  << "In positions: ";
3845  for (std::vector<int>::iterator it = local_node_number.begin();
3846  it != local_node_number.end();
3847  ++it)
3848  {
3849  error_stream << *it << " ";
3850  }
3851  error_stream << std::endl << "That seems very odd." << std::endl;
3852 
3853  throw OomphLibError(
3854  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
3855  }
3856  }
3857 #endif
3858 
3859  // Loop over the nodes
3860  for (unsigned i = 0; i < n_node; i++)
3861  {
3862  // If the passed node pointer is present in the element
3863  // set number to be its local node number
3864  if (node_pt(i) == global_node_pt)
3865  {
3866  number = i;
3867  break;
3868  }
3869  }
3870 
3871  // Return the node number
3872  return number;
3873  }

References i, nnode(), node_pt(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::OcTreeForest::construct_up_right_equivalents(), oomph::Mesh::convert_to_boundary_node(), and oomph::RefineableElement::unbuild().

◆ get_s_plot()

virtual void oomph::FiniteElement::get_s_plot ( const unsigned i,
const unsigned nplot,
Vector< double > &  s,
const bool shifted_to_interior = false 
) const
inlinevirtual

Get cector of local coordinates of plot point i (when plotting nplot points in each "coordinate direction"). Generally these plot points will be uniformly spaced across the element. The optional final boolean flag (default: false) allows them to be shifted inwards to avoid duplication of plot point points between elements – useful when they are used in locate_zeta, say.

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, and oomph::QHermiteElement< DIM - 1 >.

3152  {
3153  throw OomphLibError(
3154  "get_s_plot(...) is not implemented for this element\n",
3157  };

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by UnstructuredFluidProblem< ELEMENT >::doc_boundary_coordinates(), oomph::Mesh::doc_boundary_coordinates(), oomph::Z2ErrorEstimator::doc_flux(), oomph::StefanBoltzmannHelper::doc_sample_points(), PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::doc_solid_boundary_coordinates(), UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::doc_solid_boundary_coordinates(), oomph::PolarNavierStokesEquations::full_output(), oomph::SphericalNavierStokesEquations::full_output(), locate_zeta(), oomph::NonlinearSurfaceContactElement< ELEMENT >::output(), oomph::LinearSurfaceContactElement< ELEMENT >::output(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::output(), oomph::PolarStreamfunctionEquations::output(), oomph::AxisymFoepplvonKarmanEquations::output(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::output(), oomph::AxisymmetricLinearElasticityEquations::output(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::output(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::output(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::output(), oomph::FluidInterfaceElement::output(), oomph::SurfactantTransportInterfaceElement::output(), oomph::DisplacementBasedFoepplvonKarmanEquations::output(), oomph::FoepplvonKarmanEquations::output(), oomph::FourierDecomposedHelmholtzEquations::output(), oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >::output(), oomph::PMLFourierDecomposedHelmholtzEquations::output(), oomph::SolidTractionElement< ELEMENT >::output(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::output(), oomph::YoungLaplaceEquations::output(), oomph::LinearisedAxisymmetricNavierStokesEquations::output(), oomph::THomogenisedLinearElasticityElement< DIM, NNODE_1D >::output(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::output(), oomph::AxisymAdvectionDiffusionEquations::output(), oomph::AxisymmetricNavierStokesEquations::output(), oomph::AxisymmetricPoroelasticityEquations::output(), oomph::BiharmonicEquations< DIM >::output(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output(), oomph::LinearisedNavierStokesEquations::output(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), oomph::PoissonFluxElement< ELEMENT >::output(), oomph::PolarNavierStokesEquations::output(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::SphericalAdvectionDiffusionEquations::output(), oomph::SphericalNavierStokesEquations::output(), oomph::SteadyAxisymAdvectionDiffusionEquations::output(), oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::AxisymFoepplvonKarmanEquations::output_fct(), oomph::DisplacementBasedFoepplvonKarmanEquations::output_fct(), oomph::FoepplvonKarmanEquations::output_fct(), oomph::FourierDecomposedHelmholtzEquations::output_fct(), oomph::PMLFourierDecomposedHelmholtzEquations::output_fct(), oomph::YoungLaplaceEquations::output_fct(), oomph::AxisymAdvectionDiffusionEquations::output_fct(), oomph::AxisymmetricLinearElasticityEquations::output_fct(), oomph::AxisymmetricNavierStokesEquations::output_fct(), oomph::AxisymmetricPoroelasticityEquations::output_fct(), oomph::BiharmonicEquations< DIM >::output_fct(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_fct(), oomph::PolarNavierStokesEquations::output_fct(), oomph::SphericalAdvectionDiffusionEquations::output_fct(), oomph::SphericalNavierStokesEquations::output_fct(), oomph::SteadyAxisymAdvectionDiffusionEquations::output_fct(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::output_fct(), oomph::BiharmonicEquations< DIM >::output_fluid_velocity(), output_paraview(), oomph::FourierDecomposedHelmholtzEquations::output_real(), oomph::PMLFourierDecomposedHelmholtzEquations::output_real(), oomph::FourierDecomposedHelmholtzEquations::output_real_fct(), oomph::PMLFourierDecomposedHelmholtzEquations::output_real_fct(), oomph::LinearisedAxisymmetricNavierStokesEquations::output_veloc(), oomph::AxisymmetricNavierStokesEquations::output_veloc(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_veloc(), oomph::LinearisedNavierStokesEquations::output_veloc(), oomph::PolarNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_vorticity(), oomph::FaceElement::output_zeta(), oomph::NavierStokesEquations< DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeNavierStokesEquations< DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::scalar_value_fct_paraview(), oomph::PMLHelmholtzEquations< DIM >::scalar_value_fct_paraview(), oomph::PoissonEquations< DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::scalar_value_fct_paraview(), oomph::MultiPoissonEquations< DIM, NFIELDS >::scalar_value_paraview(), oomph::AdvectionDiffusionEquations< DIM >::scalar_value_paraview(), oomph::AxisymAdvectionDiffusionEquations::scalar_value_paraview(), oomph::AxisymmetricNavierStokesEquations::scalar_value_paraview(), oomph::AxisymmetricPoroelasticityEquations::scalar_value_paraview(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::scalar_value_paraview(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::scalar_value_paraview(), oomph::HelmholtzEquations< DIM >::scalar_value_paraview(), oomph::NavierStokesEquations< DIM >::scalar_value_paraview(), oomph::PMLHelmholtzEquations< DIM >::scalar_value_paraview(), oomph::PoissonEquations< DIM >::scalar_value_paraview(), oomph::SpaceTimeNavierStokesEquations< DIM >::scalar_value_paraview(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::scalar_value_paraview(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_paraview(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::scalar_value_paraview(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::scalar_value_paraview(), oomph::Multi_domain_functions::setup_bulk_elements_adjacent_to_face_mesh(), oomph::StefanBoltzmannHelper::setup_stefan_boltzmann_visibility(), and TFaceTestProblem< ELEMENT >::TFaceTestProblem().

◆ get_x() [1/2]

void oomph::FiniteElement::get_x ( const unsigned t,
const Vector< double > &  s,
Vector< double > &  x 
)
inline

Global coordinates as function of local coordinates at previous time "level" t (t=0: present; t>0: previous). Either via FE representation of QElement or via macro-element (if Macro_elem_pt!=0).

1905  {
1906  // Get timestepper from first node
1907  TimeStepper* time_stepper_pt = node_pt(0)->time_stepper_pt();
1908 
1909  // Number of previous values
1910  const unsigned nprev = time_stepper_pt->nprev_values();
1911 
1912  // If t > nprev_values(), we're not dealing with a previous value
1913  // but a generalised history value -- this cannot be recovered from
1914  // macro element but must be determined by finite element interpolation
1915 
1916  // If there is no macro element, or we're dealing with a generalised
1917  // history value then use the FE representation
1918  if ((Macro_elem_pt == 0) || (t > nprev))
1919  {
1920  interpolated_x(t, s, x);
1921  }
1922  // Otherwise use the macro element representation
1923  else
1924  {
1926  }
1927  }
TimeStepper *& time_stepper_pt()
Return the pointer to the timestepper.
Definition: nodes.h:238
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
virtual void get_x_from_macro_element(const Vector< double > &s, Vector< double > &x) const
Definition: elements.h:1934
virtual unsigned nprev_values() const =0
Number of previous values available: 0 for static, 1 for BDF<1>,...
list x
Definition: plotDoE.py:28

References get_x_from_macro_element(), interpolated_x(), Macro_elem_pt, node_pt(), oomph::TimeStepper::nprev_values(), s, plotPSD::t, oomph::GeomObject::time_stepper_pt(), oomph::Data::time_stepper_pt(), and plotDoE::x.

◆ get_x() [2/2]

void oomph::FiniteElement::get_x ( const Vector< double > &  s,
Vector< double > &  x 
) const
inline

Global coordinates as function of local coordinates. Either via FE representation or via macro-element (if Macro_elem_pt!=0)

1886  {
1887  // If there is no macro element then return interpolated x
1888  if (Macro_elem_pt == 0)
1889  {
1890  interpolated_x(s, x);
1891  }
1892  // Otherwise call the macro element representation
1893  else
1894  {
1896  }
1897  }

References get_x_from_macro_element(), interpolated_x(), Macro_elem_pt, s, and plotDoE::x.

Referenced by oomph::TreeBasedRefineableMeshBase::adapt_mesh(), oomph::RefineableQElement< 3 >::build(), oomph::RefineableQElement< 1 >::build(), oomph::RefineableQElement< 2 >::build(), oomph::OcTree::doc_face_neighbours(), oomph::BinaryTree::doc_neighbours(), oomph::QuadTree::doc_neighbours(), oomph::OcTree::doc_true_edge_neighbours(), oomph::Mesh::node_update(), oomph::MacroElementNodeUpdateNode::node_update(), oomph::TreeBasedRefineableMeshBase::p_adapt_mesh(), oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >::rebuild_from_sons(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::rebuild_from_sons(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::rebuild_from_sons(), oomph::RefineableQSpectralElement< 3 >::rebuild_from_sons(), oomph::RefineableQSpectralElement< 1 >::rebuild_from_sons(), and oomph::RefineableQSpectralElement< 2 >::rebuild_from_sons().

◆ get_x_from_macro_element() [1/2]

virtual void oomph::FiniteElement::get_x_from_macro_element ( const unsigned t,
const Vector< double > &  s,
Vector< double > &  x 
)
inlinevirtual

Global coordinates as function of local coordinates at previous time "level" t (t=0: present; t>0: previous). using macro element representation (Broken virtual – overload in specific geometric element class if you want to use this functionality.)

Reimplemented in oomph::QElementBase.

1951  {
1952  throw OomphLibError(
1953  "get_x_from_macro_element(...) is not implemented for this element\n",
1956  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ get_x_from_macro_element() [2/2]

virtual void oomph::FiniteElement::get_x_from_macro_element ( const Vector< double > &  s,
Vector< double > &  x 
) const
inlinevirtual

Global coordinates as function of local coordinates using macro element representation. (Broken virtual — this must be overloaded in specific geometric element classes)

Reimplemented in oomph::QElementBase.

1936  {
1937  throw OomphLibError(
1938  "get_x_from_macro_element(...) is not implemented for this element\n",
1941  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by get_x(), and interpolated_zeta().

◆ has_hanging_nodes()

bool oomph::FiniteElement::has_hanging_nodes ( ) const
inline

Return boolean to indicate if any of the element's nodes are geometrically hanging.

2471  {
2472  unsigned nnod = nnode();
2473  for (unsigned j = 0; j < nnod; j++)
2474  {
2475  if (node_pt(j)->is_hanging())
2476  {
2477  return true;
2478  }
2479  }
2480  return false;
2481  }

References j, nnode(), and node_pt().

Referenced by oomph::AdvectionDiffusionFluxElement< ELEMENT >::AdvectionDiffusionFluxElement(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::AxisymmetricPoroelasticityTractionElement(), oomph::DarcyFaceElement< ELEMENT >::DarcyFaceElement(), oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement(), oomph::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement(), oomph::FpPressureAdvDiffRobinBCElement< ELEMENT >::FpPressureAdvDiffRobinBCElement(), oomph::FpPressureAdvDiffRobinBCMixedOrderSpaceTimeElement< ELEMENT >::FpPressureAdvDiffRobinBCMixedOrderSpaceTimeElement(), oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >::FpPressureAdvDiffRobinBCSpaceTimeElement(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::FSIImposeDisplacementByLagrangeMultiplierElement(), oomph::HeatedPenetratorFluxElement< ELEMENT >::HeatedPenetratorFluxElement(), oomph::HelmholtzFluxElement< ELEMENT >::HelmholtzFluxElement(), oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::HelmholtzFluxFromNormalDisplacementBCElement(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::ImposeDisplacementByLagrangeMultiplierElement(), oomph::LinearElasticityTractionElement< ELEMENT >::LinearElasticityTractionElement(), oomph::LinearWaveFluxElement< ELEMENT >::LinearWaveFluxElement(), oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::NavierStokesImpedanceTractionElement(), oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >::NavierStokesMixedOrderSpaceTimeTractionElement(), oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >::NavierStokesSpaceTimeTractionElement(), oomph::NavierStokesTractionElement< ELEMENT >::NavierStokesTractionElement(), oomph::PMLHelmholtzFluxElement< ELEMENT >::PMLHelmholtzFluxElement(), oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::PMLHelmholtzFluxFromNormalDisplacementBCElement(), oomph::PMLHelmholtzPowerElement< ELEMENT >::PMLHelmholtzPowerElement(), oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >::PMLTimeHarmonicLinearElasticityTractionElement(), oomph::PoissonFluxElement< ELEMENT >::PoissonFluxElement(), oomph::PolarNavierStokesTractionElement< ELEMENT >::PolarNavierStokesTractionElement(), oomph::PolarStressIntegralElement< ELEMENT >::PolarStressIntegralElement(), oomph::SolidTractionElement< ELEMENT >::SolidTractionElement(), oomph::SphericalAdvectionDiffusionFluxElement< ELEMENT >::SphericalAdvectionDiffusionFluxElement(), oomph::SpineUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >::SpineUpdateFluidInterfaceElement(), oomph::SteadyAxisymAdvectionDiffusionFluxElement< ELEMENT >::SteadyAxisymAdvectionDiffusionFluxElement(), oomph::SurfaceContactElementBase< ELEMENT >::SurfaceContactElementBase(), oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >::TimeHarmonicLinearElasticityTractionElement(), oomph::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement(), oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement(), and oomph::UnsteadyHeatFluxElement< ELEMENT >::UnsteadyHeatFluxElement().

◆ identify_field_data_for_interactions()

void FiniteElement::identify_field_data_for_interactions ( std::set< std::pair< Data *, unsigned >> &  paired_field_data)
virtual

The purpose of this function is to identify all possible Data that can affect the fields interpolated by the FiniteElement. The information will typically be used in interaction problems in which the FiniteElement provides a forcing term for an ElementWithExternalElement. The Data must be provided as paired_load data containing

  • the pointer to a Data object and

the index of the value in that Data objectThe generic implementation (should be overloaded in more specific applications) is to include all nodal and internal Data stored in the FiniteElement. The geometric data, which includes the positions of SolidNodes, is treated separately by the function identify_geometric_data()

The purpose of this function is to identify all possible Data that can affect the fields interpolated by the FiniteElement. The information will typically be used in interaction problems in which the FiniteElement provides a forcing term for an ElementWithExternalElement. The Data must be provided as paired_load data containing (a) the pointer to a Data object and (b) the index of the value in that Data object. The generic implementation (should be overloaded in more specific applications) is to include all nodal and internal Data stored in the FiniteElement. Note that the geometric data, which includes the positions of SolidNodes, is treated separately by the function identify_geometric_data()

Reimplemented in oomph::RefineableElement.

5098  {
5099  // Loop over all internal data
5100  const unsigned n_internal = this->ninternal_data();
5101  for (unsigned n = 0; n < n_internal; n++)
5102  {
5103  // Cache the data pointer
5104  Data* const dat_pt = this->internal_data_pt(n);
5105  // Find the number of data values stored in the data object
5106  const unsigned n_value = dat_pt->nvalue();
5107  // Add the index of each data value and the pointer to the set
5108  // of pairs
5109  for (unsigned i = 0; i < n_value; i++)
5110  {
5111  paired_field_data.insert(std::make_pair(dat_pt, i));
5112  }
5113  }
5114 
5115  // Loop over all the nodes
5116  const unsigned n_node = this->nnode();
5117  for (unsigned n = 0; n < n_node; n++)
5118  {
5119  // Cache the node pointer
5120  Node* const nod_pt = this->node_pt(n);
5121  // Find the number of values stored at the node
5122  const unsigned n_value = nod_pt->nvalue();
5123  // Add the index of each data value and the pointer to the set
5124  // of pairs
5125  for (unsigned i = 0; i < n_value; i++)
5126  {
5127  paired_field_data.insert(std::make_pair(nod_pt, i));
5128  }
5129  }
5130  }
Data *& internal_data_pt(const unsigned &i)
Return a pointer to i-th internal data object.
Definition: elements.h:622
unsigned ninternal_data() const
Return the number of internal data objects.
Definition: elements.h:823

References i, oomph::GeneralisedElement::internal_data_pt(), n, oomph::GeneralisedElement::ninternal_data(), nnode(), node_pt(), and oomph::Data::nvalue().

◆ identify_geometric_data()

virtual void oomph::FiniteElement::identify_geometric_data ( std::set< Data * > &  geometric_data_pt)
inlinevirtual

◆ integral_pt()

Integral* const& oomph::FiniteElement::integral_pt ( ) const
inline

Return the pointer to the integration scheme (const version)

1964  {
1965  return Integral_pt;
1966  }

References Integral_pt.

Referenced by oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::add_element_contribution_to_aux_integral(), oomph::DGFaceElement::add_flux_contributions(), oomph::ElementWithExternalElement::assign_external_interaction_data_local_eqn_numbers(), oomph::Multi_domain_functions::aux_setup_multi_domain_interaction(), FourierDecomposedHelmholtzProblem< ELEMENT >::check_gamma(), oomph::Mesh::check_inverted_elements(), check_J_eulerian_at_knots(), oomph::FaceElement::check_J_eulerian_at_knots(), oomph::HelmholtzBCElementBase< ELEMENT >::compute_contribution_to_fourier_components(), oomph::AxisymAdvectionDiffusionEquations::compute_error(), oomph::AxisymFoepplvonKarmanEquations::compute_error(), oomph::AxisymmetricLinearElasticityEquations::compute_error(), oomph::BiharmonicEquations< DIM >::compute_error(), oomph::DisplacementBasedFoepplvonKarmanEquations::compute_error(), oomph::FoepplvonKarmanEquations::compute_error(), oomph::FourierDecomposedHelmholtzEquations::compute_error(), oomph::PMLFourierDecomposedHelmholtzEquations::compute_error(), oomph::SphericalAdvectionDiffusionEquations::compute_error(), oomph::SteadyAxisymAdvectionDiffusionEquations::compute_error(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::compute_error(), oomph::YoungLaplaceEquations::compute_error(), oomph::AxisymmetricPoroelasticityEquations::compute_error(), oomph::AxisymmetricNavierStokesEquations::compute_error(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::compute_error(), oomph::PolarNavierStokesEquations::compute_error(), oomph::SphericalNavierStokesEquations::compute_error(), oomph::EulerEquations< DIM >::compute_error(), oomph::ScalarAdvectionEquations< DIM >::compute_error(), oomph::SphericalNavierStokesEquations::compute_error_e(), oomph::SolidFiniteElement::compute_norm(), oomph::FourierDecomposedHelmholtzEquations::compute_norm(), oomph::PMLFourierDecomposedHelmholtzEquations::compute_norm(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::compute_norm(), oomph::AxisymmetricNavierStokesEquations::compute_physical_size(), oomph::AxisymmetricPVDEquations::compute_physical_size(), oomph::AxisymmetricPVDEquationsWithPressure::compute_physical_size(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::compute_physical_size(), AirwayReopeningProblem< ELEMENT >::connect_walls(), oomph::FaceElement::continuous_tangent_and_outer_unit_normal(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::contribution_to_enclosed_volume(), oomph::LineVolumeConstraintBoundingElement::contribution_to_enclosed_volume(), oomph::AxisymmetricVolumeConstraintBoundingElement::contribution_to_enclosed_volume(), oomph::StefanBoltzmannRadiationBase::contribution_to_stefan_boltzmann_radiation(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::contribution_to_total_porous_flux(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::contribution_to_total_porous_flux(), oomph::AxisymmetricVolumeConstraintBoundingElement::contribution_to_volume_flux(), d2shape_local_at_knot(), oomph::SphericalNavierStokesEquations::d_kin_energy_dt(), oomph::AxisymmetricNavierStokesEquations::dissipation(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::dissipation(), oomph::PolarNavierStokesEquations::dissipation(), oomph::SphericalNavierStokesEquations::dissipation(), oomph::LinearisedAxisymmetricNavierStokesEquations::dkin_energy_dt(), oomph::FSI_functions::doc_fsi(), ContactProblem< ELEMENT >::doc_solution(), StefanBoltzmannProblem< ELEMENT >::doc_solution(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::drag_force(), dshape_local_at_knot(), oomph::SphericalNavierStokesEquations::extract_velocity(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::extrapolated_strain_rate(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::extrapolated_strain_rate(), oomph::AxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::AxisymFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::DisplacementBasedFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::FoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::ClampedHermiteShellBoundaryConditionElement::fill_in_contribution_to_residuals(), oomph::RefineableYoungLaplaceEquations::fill_in_contribution_to_residuals(), oomph::YoungLaplaceEquations::fill_in_contribution_to_residuals(), oomph::AxisymmetricPVDEquations::fill_in_contribution_to_residuals_axisym_pvd(), oomph::KirchhoffLoveBeamEquations::fill_in_contribution_to_residuals_beam(), oomph::KirchhoffLoveShellEquations::fill_in_contribution_to_residuals_shell(), oomph::AxisymmetricLinearElasticityEquations::fill_in_generic_contribution_to_residuals_axisymmetric_linear_elasticity(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::fill_in_generic_contribution_to_residuals_fourier_decomp_time_harmonic_linear_elasticity(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::ImposeImpenetrabilityElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::ImposeParallelOutflowElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::RefineableQDPVDElement< DIM, NNODE_1D >::fill_in_generic_contribution_to_residuals_pvd(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::SolidFiniteElement::fill_in_generic_jacobian_for_solid_ic(), oomph::AxisymmetricPoroelasticityEquations::fill_in_generic_residual_contribution(), oomph::PolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::PolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::SteadyAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::RefineableAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::AxisymmetricPVDEquationsWithPressure::fill_in_generic_residual_contribution_axisym_pvd_with_pressure(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_cons_axisym_adv_diff(), oomph::NavierStokesFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_fluid_traction(), oomph::FourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_fourier_decomposed_helmholtz(), oomph::FourierDecomposedHelmholtzDtNBoundaryElement< ELEMENT >::fill_in_generic_residual_contribution_fourier_decomposed_helmholtz_DtN_bc(), oomph::HelmholtzAbsorbingBCElement< ELEMENT >::fill_in_generic_residual_contribution_helmholtz_abc(), oomph::HelmholtzDtNBoundaryElement< ELEMENT >::fill_in_generic_residual_contribution_helmholtz_DtN_bc(), oomph::FluidInterfaceElement::fill_in_generic_residual_contribution_interface(), oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_lin_axi_nst(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::RefineableLinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::RefineableLinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::PeriodicOrbitEquations::fill_in_generic_residual_contribution_orbit(), oomph::PMLFourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_pml_fourier_decomposed_helmholtz(), oomph::RefineableSphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::SphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::RefineableSphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::SphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::LineVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::AxisymmetricVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::SurfaceVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::SolidFiniteElement::fill_in_jacobian_for_newmark_accel(), oomph::RefineableNavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::NavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::FoepplvonKarmanEquations::get_bounded_volume(), oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >::get_drag_and_torque(), oomph::AxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::Z2ErrorEstimator::get_element_errors(), oomph::KirchhoffLoveShellEquations::get_energy(), oomph::KirchhoffLoveBeamEquations::get_energy(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::get_kinetic_energy_flux(), oomph::AxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::SphericalNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::get_rate_of_traction_work(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::get_rate_of_traction_work_components(), oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::get_traction(), oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::get_volume_flux(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::get_volume_flux(), oomph::PMLHelmholtzPowerElement< ELEMENT >::global_flux_contribution(), oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::global_flux_contribution_from_helmholtz(), oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::global_flux_contribution_from_solid(), oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >::global_power_contribution(), oomph::HelmholtzBCElementBase< ELEMENT >::global_power_contribution(), oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >::global_power_contribution(), oomph::PMLHelmholtzPowerElement< ELEMENT >::global_power_contribution(), oomph::ElementWithExternalElement::initialise_external_element_storage(), oomph::SurfactantTransportInterfaceElement::integrate_c(), integrate_fct(), oomph::SolubleSurfactantTransportInterfaceElement::integrated_C(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::integrated_C_and_M(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::integrated_C_and_M(), oomph::AxisymmetricNavierStokesEquations::kin_energy(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::kin_energy(), oomph::PolarNavierStokesEquations::kin_energy(), oomph::SphericalNavierStokesEquations::kin_energy(), oomph::SolubleSurfactantTransportInterfaceElement::l2_norm_of_height(), oomph::KirchhoffLoveShellEquations::load_rate_of_work(), oomph::Multi_domain_functions::locate_zeta_for_local_coordinates(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::max_and_min_invariant_and_viscosity(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::node_update_adjacent_fluid_elements(), oomph::FSIWallElement::node_update_adjacent_fluid_elements(), oomph::FaceElement::outer_unit_normal(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::output(), oomph::FSIAxisymmetricLinearElasticityTractionElement< ELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::output(), oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >::output(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::output(), oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::output(), oomph::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::output(), oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::output(), oomph::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::output(), oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::output(), oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::output(), oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::output(), oomph::ClampedHermiteShellBoundaryConditionElement::output(), oomph::FSISolidTractionElement< ELEMENT, DIM >::output(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::output_adjacent_fluid_elements(), oomph::SolarRadiationBase::output_atmospheric_radiation(), oomph::SolarRadiationBase::output_diffuse_radiation_cone(), oomph::SolarRadiationBase::output_diffuse_radiation_cone_max_angle(), oomph::SolarRadiationBase::output_diffuse_radiation_cone_min_angle(), oomph::ElementWithExternalElement::output_external_elements(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::output_integration_points(), oomph::SolarRadiationBase::output_limiting_angles(), oomph::SurfaceMeltElement< ELEMENT >::output_melt(), oomph::NavierStokesEquations< DIM >::output_pressure_advection_diffusion_robin_elements(), oomph::SpaceTimeNavierStokesEquations< DIM >::output_pressure_advection_diffusion_robin_elements(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::output_pressure_advection_diffusion_robin_elements(), oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::output_stefan_boltzmann_radiation(), oomph::StefanBoltzmannRadiationBase::output_stefan_boltzmann_radiation_rays(), oomph::StorableShapeElementBase::pre_compute_d2shape_eulerian_at_knots(), oomph::StorableShapeSolidElementBase::pre_compute_d2shape_lagrangian_at_knots(), oomph::StorableShapeElementBase::pre_compute_d2shape_local_at_knots(), oomph::StorableShapeElementBase::pre_compute_dshape_eulerian_at_knots(), oomph::StorableShapeSolidElementBase::pre_compute_dshape_lagrangian_at_knots(), oomph::StorableShapeElementBase::pre_compute_dshape_local_at_knots(), oomph::InterpolateFromIntegralPointsBase::pre_compute_ipt_to_node_mapping(), oomph::StorableShapeElementBase::pre_compute_J_eulerian_at_knots(), oomph::StorableShapeElementBase::pre_compute_shape_at_knots(), oomph::AxisymmetricNavierStokesEquations::pressure_integral(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::pressure_integral(), oomph::PolarNavierStokesEquations::pressure_integral(), oomph::SphericalNavierStokesEquations::pressure_integral(), oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::RefineableNavierStokesFluxControlElement< ELEMENT >::refineable_fill_in_generic_residual_contribution_fluid_traction(), oomph::DGFaceElement::report_info(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::residual_for_projection(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::residual_for_projection(), oomph::ProjectableElement< ELEMENT >::residual_for_projection(), self_test(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::set_boundary_shape_geom_object_pt(), oomph::InterpolateFromIntegralPointsBase::set_integration_scheme(), oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::set_integration_scheme(), set_integration_scheme(), oomph::StorableShapeElementBase::set_integration_scheme(), oomph::StorableShapeSolidElementBase::set_integration_scheme(), oomph::FourierDecomposedHelmholtzDtNMesh< ELEMENT >::setup_gamma(), oomph::HelmholtzDtNMesh< ELEMENT >::setup_gamma(), oomph::DGFaceElement::setup_neighbour_info(), oomph::StefanBoltzmannHelper::setup_stefan_boltzmann_visibility(), oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >::shape_and_test_at_knot(), shape_at_knot(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::shape_basis_test_local_at_knot(), oomph::TPoroelasticityElement< ORDER >::shape_basis_test_local_at_knot(), oomph::TRaviartThomasDarcyElement< ORDER >::shape_basis_test_local_at_knot(), size(), oomph::SolarRadiationBase::SolarRadiationBase(), oomph::AxisymmetricPVDEquationsWithPressure::solid_pshape_at_knot(), oomph::PVDEquationsWithPressure< DIM >::solid_pshape_at_knot(), oomph::MyTaylorHoodElement< DIM >::square_of_l2_norm(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::square_of_l2_norm_of_error(), oomph::StefanBoltzmannRadiationBase::StefanBoltzmannRadiationBase(), oomph::StorableShapeElement< ELEMENT >::StorableShapeElement(), oomph::StorableShapeSolidElement< ELEMENT >::StorableShapeSolidElement(), oomph::SolarRadiationBase::update_limiting_angles(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::~PRefineableGeneralisedNewtonianQCrouzeixRaviartElement(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::~PRefineableQCrouzeixRaviartElement(), oomph::PRefineableQLinearElasticityElement< DIM >::~PRefineableQLinearElasticityElement(), oomph::PRefineableQPoissonElement< DIM >::~PRefineableQPoissonElement(), and oomph::QTaylorHoodSpaceTimeElement< DIM >::~QTaylorHoodSpaceTimeElement().

◆ integrate_fct() [1/2]

void FiniteElement::integrate_fct ( FiniteElement::SteadyExactSolutionFctPt  integrand_fct_pt,
Vector< double > &  integral 
)

Integrate Vector-valued function over element.

Evaluate integral of a Vector-valued function \( {\bf f}({\bf x}) \) over the element.

4380  {
4381  // Initialise all components of integral Vector
4382  const unsigned ncomponents = integral.size();
4383  Vector<double> integrand(ncomponents);
4384  for (unsigned i = 0; i < ncomponents; i++)
4385  {
4386  integral[i] = 0.0;
4387  }
4388 
4389  // Figure out the global (Eulerian) spatial dimension of the
4390  // element by checking the Eulerian dimension of the nodes
4391  const unsigned n_dim_eulerian = nodal_dimension();
4392 
4393  // Allocate Vector of global Eulerian coordinates
4394  Vector<double> x(n_dim_eulerian);
4395 
4396  // Set the value of n_intpt
4397  const unsigned n_intpt = integral_pt()->nweight();
4398 
4399  // Vector of local coordinates
4400  const unsigned n_dim = dim();
4401  Vector<double> s(n_dim);
4402 
4403  // Loop over the integration points
4404  for (unsigned ipt = 0; ipt < n_intpt; ipt++)
4405  {
4406  // Assign the values of s
4407  for (unsigned i = 0; i < n_dim; i++)
4408  {
4409  s[i] = integral_pt()->knot(ipt, i);
4410  }
4411 
4412  // Assign the values of the global Eulerian coordinates
4413  for (unsigned i = 0; i < n_dim_eulerian; i++)
4414  {
4415  x[i] = interpolated_x(s, i);
4416  }
4417 
4418  // Get the integral weight
4419  double w = integral_pt()->weight(ipt);
4420 
4421  // Get Jacobian of mapping
4422  double J = J_eulerian(s);
4423 
4424  // Evaluate the integrand at the knot points
4425  integrand_fct_pt(x, integrand);
4426 
4427  // Add to components of integral Vector
4428  for (unsigned i = 0; i < ncomponents; i++)
4429  {
4430  integral[i] += integrand[i] * w * J;
4431  }
4432  }
4433  }
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
RowVector3d w
Definition: Matrix_resize_int.cpp:3
virtual double J_eulerian(const Vector< double > &s) const
Definition: elements.cc:4103
virtual double weight(const unsigned &i) const =0
Return weight of i-th integration point.

References dim(), i, integral_pt(), interpolated_x(), J, J_eulerian(), oomph::Integral::knot(), nodal_dimension(), oomph::Integral::nweight(), s, w, oomph::Integral::weight(), and plotDoE::x.

◆ integrate_fct() [2/2]

void FiniteElement::integrate_fct ( FiniteElement::UnsteadyExactSolutionFctPt  integrand_fct_pt,
const double time,
Vector< double > &  integral 
)

Integrate Vector-valued time-dep function over element.

Evaluate integral of a Vector-valued, time-dependent function \( {\bf f}(t,{\bf x}) \) over the element.

4319  {
4320  // Initialise all components of integral Vector and setup integrand vector
4321  const unsigned ncomponents = integral.size();
4322  Vector<double> integrand(ncomponents);
4323  for (unsigned i = 0; i < ncomponents; i++)
4324  {
4325  integral[i] = 0.0;
4326  }
4327 
4328  // Figure out the global (Eulerian) spatial dimension of the
4329  // element
4330  const unsigned n_dim_eulerian = nodal_dimension();
4331 
4332  // Allocate Vector of global Eulerian coordinates
4333  Vector<double> x(n_dim_eulerian);
4334 
4335  // Set the value of n_intpt
4336  const unsigned n_intpt = integral_pt()->nweight();
4337 
4338  // Vector of local coordinates
4339  const unsigned n_dim = dim();
4340  Vector<double> s(n_dim);
4341 
4342  // Loop over the integration points
4343  for (unsigned ipt = 0; ipt < n_intpt; ipt++)
4344  {
4345  // Assign the values of s
4346  for (unsigned i = 0; i < n_dim; i++)
4347  {
4348  s[i] = integral_pt()->knot(ipt, i);
4349  }
4350 
4351  // Assign the values of the global Eulerian coordinates
4352  for (unsigned i = 0; i < n_dim_eulerian; i++)
4353  {
4354  x[i] = interpolated_x(s, i);
4355  }
4356 
4357  // Get the integral weight
4358  double w = integral_pt()->weight(ipt);
4359 
4360  // Get Jacobian of mapping
4361  double J = J_eulerian(s);
4362 
4363  // Evaluate the integrand at the knot points
4364  integrand_fct_pt(time, x, integrand);
4365 
4366  // Add to components of integral Vector
4367  for (unsigned i = 0; i < ncomponents; i++)
4368  {
4369  integral[i] += integrand[i] * w * J;
4370  }
4371  }
4372  }

References dim(), i, integral_pt(), interpolated_x(), J, J_eulerian(), oomph::Integral::knot(), nodal_dimension(), oomph::Integral::nweight(), s, w, oomph::Integral::weight(), and plotDoE::x.

◆ interpolated_dxdt() [1/2]

double FiniteElement::interpolated_dxdt ( const Vector< double > &  s,
const unsigned i,
const unsigned t_deriv 
)
virtual

Return t-th time-derivative of the i-th FE-interpolated Eulerian coordinate at local coordinate s.

Return the t-th time-derivative of the i-th FE-interpolated Eulerian coordinate at local coordinate s.

Reimplemented in oomph::FaceElement.

4599  {
4600  // Find the number of nodes and positions (locally cached)
4601  const unsigned n_node = nnode();
4602  const unsigned n_position_type = nnodal_position_type();
4603  // Get shape functions: specify # of nodes, # of positional dofs
4604  Shape psi(n_node, n_position_type);
4605  shape(s, psi);
4606 
4607  // Initialise
4608  double drdt = 0.0;
4609 
4610  // Assemble time derivative
4611  // Loop over nodes
4612  for (unsigned l = 0; l < n_node; l++)
4613  {
4614  // Loop over types of dof
4615  for (unsigned k = 0; k < n_position_type; k++)
4616  {
4617  drdt += dnodal_position_gen_dt(t_deriv, l, k, i) * psi(l, k);
4618  }
4619  }
4620  return drdt;
4621  }
double dnodal_position_gen_dt(const unsigned &n, const unsigned &k, const unsigned &i) const
Definition: elements.h:2369
virtual void shape(const Vector< double > &s, Shape &psi) const =0

References dnodal_position_gen_dt(), i, k, nnodal_position_type(), nnode(), s, and shape().

Referenced by DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::doc_solution(), DiskOscillationProblem< ELEMENT >::doc_solution(), dposition_dt(), oomph::FaceElement::interpolated_dxdt(), oomph::SCoupledElement< ELEMENT >::output(), oomph::VolumeCoupledElement< ELEMENT >::output(), and oomph::HermiteShellElement::output_with_time_dep_quantities().

◆ interpolated_dxdt() [2/2]

void FiniteElement::interpolated_dxdt ( const Vector< double > &  s,
const unsigned t_deriv,
Vector< double > &  dxdt 
)
virtual

Compte t-th time-derivative of the FE-interpolated Eulerian coordinate vector at local coordinate s.

Compute t-th time-derivative of the FE-interpolated Eulerian coordinate vector at local coordinate s.

Reimplemented in oomph::FaceElement.

4632  {
4633  // Find the number of nodes and positions (locally cached)
4634  const unsigned n_node = nnode();
4635  const unsigned n_position_type = nnodal_position_type();
4636  const unsigned nodal_dim = nodal_dimension();
4637 
4638  // Get shape functions: specify # of nodes, # of positional dofs
4639  Shape psi(n_node, n_position_type);
4640  shape(s, psi);
4641 
4642  // Loop over directions
4643  for (unsigned i = 0; i < nodal_dim; i++)
4644  {
4645  // Initialise
4646  dxdt[i] = 0.0;
4647 
4648  // Assemble time derivative
4649  // Loop over nodes
4650  for (unsigned l = 0; l < n_node; l++)
4651  {
4652  // Loop over types of dof
4653  for (unsigned k = 0; k < n_position_type; k++)
4654  {
4655  dxdt[i] += dnodal_position_gen_dt(t_deriv, l, k, i) * psi(l, k);
4656  }
4657  }
4658  }
4659  }

References dnodal_position_gen_dt(), i, k, nnodal_position_type(), nnode(), nodal_dimension(), s, and shape().

◆ interpolated_x() [1/4]

double FiniteElement::interpolated_x ( const unsigned t,
const Vector< double > &  s,
const unsigned i 
) const
virtual

Return FE interpolated coordinate x[i] at local coordinate s at previous timestep t (t=0: present; t>0: previous timestep)

Reimplemented in oomph::FaceElement.

3996  {
3997  // Find the number of nodes
3998  const unsigned n_node = nnode();
3999  // Find the number of positional types
4000  const unsigned n_position_type = nnodal_position_type();
4001 
4002  // Assign storage for the local shape function
4003  Shape psi(n_node, n_position_type);
4004  // Find the values of shape function
4005  shape(s, psi);
4006 
4007  // Initialise value of x
4008  double interpolated_x = 0.0;
4009  // Loop over the local nodes
4010  for (unsigned l = 0; l < n_node; l++)
4011  {
4012  // Loop over the number of dofs
4013  for (unsigned k = 0; k < n_position_type; k++)
4014  {
4015  interpolated_x += nodal_position_gen(t, l, k, i) * psi(l, k);
4016  }
4017  }
4018 
4019  return (interpolated_x);
4020  }
double nodal_position_gen(const unsigned &n, const unsigned &k, const unsigned &i) const
Definition: elements.h:2349

References i, interpolated_x(), k, nnodal_position_type(), nnode(), nodal_position_gen(), s, shape(), and plotPSD::t.

◆ interpolated_x() [2/4]

void FiniteElement::interpolated_x ( const unsigned t,
const Vector< double > &  s,
Vector< double > &  x 
) const
virtual

Return FE interpolated position x[] at local coordinate s at previous timestep t as Vector (t=0: present; t>0: previous timestep)

Reimplemented in oomph::FaceElement.

4064  {
4065  // Find the number of nodes
4066  const unsigned n_node = nnode();
4067  // Find the number of positional types
4068  const unsigned n_position_type = nnodal_position_type();
4069  // Find the dimensions of the nodes
4070  const unsigned nodal_dim = nodal_dimension();
4071 
4072  // Assign storage for the local shape function
4073  Shape psi(n_node, n_position_type);
4074  // Find the values of shape function
4075  shape(s, psi);
4076 
4077  // Loop over the dimensions
4078  for (unsigned i = 0; i < nodal_dim; i++)
4079  {
4080  // Initilialise value of x[i] to zero
4081  x[i] = 0.0;
4082  // Loop over the local nodes
4083  for (unsigned l = 0; l < n_node; l++)
4084  {
4085  // Loop over the number of dofs
4086  for (unsigned k = 0; k < n_position_type; k++)
4087  {
4088  x[i] += nodal_position_gen(t, l, k, i) * psi(l, k);
4089  }
4090  }
4091  }
4092  }

References i, k, nnodal_position_type(), nnode(), nodal_dimension(), nodal_position_gen(), s, shape(), plotPSD::t, and plotDoE::x.

◆ interpolated_x() [3/4]

double FiniteElement::interpolated_x ( const Vector< double > &  s,
const unsigned i 
) const
virtual

Return FE interpolated coordinate x[i] at local coordinate s.

Reimplemented in oomph::FaceElement.

3964  {
3965  // Find the number of nodes
3966  const unsigned n_node = nnode();
3967  // Find the number of positional types
3968  const unsigned n_position_type = nnodal_position_type();
3969  // Assign storage for the local shape function
3970  Shape psi(n_node, n_position_type);
3971  // Find the values of shape function
3972  shape(s, psi);
3973 
3974  // Initialise value of x
3975  double interpolated_x = 0.0;
3976  // Loop over the local nodes
3977  for (unsigned l = 0; l < n_node; l++)
3978  {
3979  // Loop over the number of dofs
3980  for (unsigned k = 0; k < n_position_type; k++)
3981  {
3982  interpolated_x += nodal_position_gen(l, k, i) * psi(l, k);
3983  }
3984  }
3985 
3986  return (interpolated_x);
3987  }

References i, k, nnodal_position_type(), nnode(), nodal_position_gen(), s, and shape().

Referenced by oomph::SpineUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >::add_additional_residual_contributions_interface(), oomph::Multi_domain_functions::aux_setup_multi_domain_interaction(), oomph::RefineableSolidQElement< 3 >::build(), oomph::RefineableSolidQElement< 2 >::build(), oomph::GmshTetMesh< ELEMENT >::build_from_scaffold(), oomph::TetgenMesh< ELEMENT >::build_from_scaffold(), oomph::TriangleMesh< ELEMENT >::build_from_scaffold(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::check_integrity(), oomph::RefineableQElement< 3 >::check_integrity(), oomph::RefineableQElement< 1 >::check_integrity(), oomph::RefineableQElement< 2 >::check_integrity(), oomph::AxisymAdvectionDiffusionEquations::compute_error(), oomph::AxisymFoepplvonKarmanEquations::compute_error(), oomph::AxisymmetricLinearElasticityEquations::compute_error(), oomph::BiharmonicEquations< DIM >::compute_error(), oomph::DisplacementBasedFoepplvonKarmanEquations::compute_error(), oomph::FoepplvonKarmanEquations::compute_error(), oomph::FourierDecomposedHelmholtzEquations::compute_error(), oomph::PMLFourierDecomposedHelmholtzEquations::compute_error(), oomph::SphericalAdvectionDiffusionEquations::compute_error(), oomph::SteadyAxisymAdvectionDiffusionEquations::compute_error(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::compute_error(), oomph::AxisymmetricPoroelasticityEquations::compute_error(), oomph::AxisymmetricNavierStokesEquations::compute_error(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::compute_error(), oomph::PolarNavierStokesEquations::compute_error(), oomph::SphericalNavierStokesEquations::compute_error(), oomph::EulerEquations< DIM >::compute_error(), oomph::ScalarAdvectionEquations< DIM >::compute_error(), oomph::SphericalNavierStokesEquations::compute_error_e(), oomph::SolidFiniteElement::compute_norm(), oomph::AxisymmetricNavierStokesEquations::compute_physical_size(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::compute_physical_size(), oomph::SphericalNavierStokesEquations::compute_shear_stress(), oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::compute_stabilisation_parameter(), oomph::SpineUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >::compute_surface_derivatives(), oomph::Z2ErrorEstimator::doc_flux(), oomph::FSI_functions::doc_fsi(), oomph::StefanBoltzmannHelper::doc_sample_points(), DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::doc_solution(), CantileverProblem< ELEMENT >::doc_solution(), DiskOscillationProblem< ELEMENT >::doc_solution(), TestPoissonProblem< ELEMENT >::doc_solution(), FSIChannelWithLeafletProblem< ELEMENT >::doc_solution(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::edge_flux_interpolation_point_global(), oomph::TRaviartThomasDarcyElement< ORDER >::edge_flux_interpolation_point_global(), oomph::TPoroelasticityElement< ORDER >::edge_gauss_point_global(), UnsteadyHeatProblem< ELEMENT >::enforce_time_periodic_boundary_conditions(), oomph::ElementElementMortaringElement::evaluate_constraint_functions(), oomph::YoungLaplaceEquations::exact_position(), oomph::SphericalNavierStokesEquations::extract_velocity(), oomph::AxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::DisplacementBasedFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::FoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::DisplacementControlElement::fill_in_contribution_to_residuals(), oomph::KirchhoffLoveBeamEquations::fill_in_contribution_to_residuals_beam(), oomph::KirchhoffLoveShellEquations::fill_in_contribution_to_residuals_shell(), oomph::AxisymmetricLinearElasticityEquations::fill_in_generic_contribution_to_residuals_axisymmetric_linear_elasticity(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::fill_in_generic_contribution_to_residuals_fourier_decomp_time_harmonic_linear_elasticity(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::SolidFiniteElement::fill_in_generic_jacobian_for_solid_ic(), oomph::AxisymmetricPoroelasticityEquations::fill_in_generic_residual_contribution(), oomph::PolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::PolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::SteadyAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::RefineableAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_cons_axisym_adv_diff(), oomph::FourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_fourier_decomposed_helmholtz(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_lin_axi_nst(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::RefineableLinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::RefineableLinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::PMLFourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_pml_fourier_decomposed_helmholtz(), oomph::RefineableSphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::SphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::RefineableSphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::SphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), FSICollapsibleChannelProblem< ELEMENT >::FSICollapsibleChannelProblem(), oomph::PolarNavierStokesEquations::full_output(), oomph::SphericalNavierStokesEquations::full_output(), oomph::AxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::Z2ErrorEstimator::get_element_errors(), oomph::KirchhoffLoveBeamEquations::get_energy(), oomph::Z2ErrorEstimator::get_recovered_flux_in_patch(), oomph::AxisymmetricLinearElasticityEquations::get_strain(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::get_strain(), oomph::KirchhoffLoveShellEquations::get_strain_and_bend(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::get_total_flux(), oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::get_traction(), get_x(), oomph::QSolidElementBase::get_x_and_xi(), integrate_fct(), oomph::AxisymmetricPoroelasticityEquations::interpolated_div_du_dt(), oomph::AxisymmetricPoroelasticityEquations::interpolated_div_q(), oomph::AxisymmetricPoroelasticityEquations::interpolated_div_u(), oomph::AxisymFoepplvonKarmanEquations::interpolated_stress(), interpolated_x(), oomph::FaceElement::interpolated_x(), oomph::AxisymmetricNavierStokesEquations::kin_energy(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::kin_energy(), oomph::RefineableQElement< 3 >::oc_hang_helper(), oomph::HermiteBeamElement::output(), oomph::PolarStreamfunctionEquations::output(), oomph::AxisymFoepplvonKarmanEquations::output(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::output(), oomph::AxisymmetricLinearElasticityEquations::output(), oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::output(), oomph::AxisymmetricPVDEquations::output(), oomph::AxisymDiagHermitePVDElement::output(), oomph::AxisymmetricPVDEquationsWithPressure::output(), oomph::DisplacementBasedFoepplvonKarmanEquations::output(), oomph::FoepplvonKarmanEquations::output(), oomph::FourierDecomposedHelmholtzEquations::output(), oomph::PMLFourierDecomposedHelmholtzEquations::output(), oomph::HermiteShellElement::output(), oomph::ClampedHermiteShellBoundaryConditionElement::output(), oomph::FSISolidTractionElement< ELEMENT, DIM >::output(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::output(), oomph::YoungLaplaceEquations::output(), oomph::LinearisedAxisymmetricNavierStokesEquations::output(), oomph::THomogenisedLinearElasticityElement< DIM, NNODE_1D >::output(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::output(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::AxisymmetricQAdvectionCrouzeixRaviartElement::output(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::output(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::output(), oomph::AxisymAdvectionDiffusionEquations::output(), oomph::AxisymmetricNavierStokesEquations::output(), oomph::AxisymmetricPoroelasticityEquations::output(), oomph::BiharmonicEquations< DIM >::output(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output(), oomph::LinearisedNavierStokesEquations::output(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::PolarNavierStokesEquations::output(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::SphericalAdvectionDiffusionEquations::output(), oomph::SphericalNavierStokesEquations::output(), oomph::SteadyAxisymAdvectionDiffusionEquations::output(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::SolarRadiationBase::output_atmospheric_radiation(), oomph::SolarRadiationBase::output_diffuse_radiation_cone(), oomph::SolarRadiationBase::output_diffuse_radiation_cone_max_angle(), oomph::SolarRadiationBase::output_diffuse_radiation_cone_min_angle(), oomph::ElementWithExternalElement::output_external_elements(), oomph::AxisymFoepplvonKarmanEquations::output_fct(), oomph::DisplacementBasedFoepplvonKarmanEquations::output_fct(), oomph::FoepplvonKarmanEquations::output_fct(), oomph::FourierDecomposedHelmholtzEquations::output_fct(), oomph::PMLFourierDecomposedHelmholtzEquations::output_fct(), oomph::YoungLaplaceEquations::output_fct(), oomph::AxisymAdvectionDiffusionEquations::output_fct(), oomph::AxisymmetricLinearElasticityEquations::output_fct(), oomph::AxisymmetricNavierStokesEquations::output_fct(), oomph::AxisymmetricPoroelasticityEquations::output_fct(), oomph::BiharmonicEquations< DIM >::output_fct(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_fct(), oomph::PolarNavierStokesEquations::output_fct(), oomph::SphericalAdvectionDiffusionEquations::output_fct(), oomph::SphericalNavierStokesEquations::output_fct(), oomph::SteadyAxisymAdvectionDiffusionEquations::output_fct(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::output_fct(), oomph::BiharmonicEquations< DIM >::output_fluid_velocity(), oomph::SolarRadiationBase::output_limiting_angles(), output_paraview(), oomph::FourierDecomposedHelmholtzEquations::output_real(), oomph::PMLFourierDecomposedHelmholtzEquations::output_real(), oomph::FourierDecomposedHelmholtzEquations::output_real_fct(), oomph::PMLFourierDecomposedHelmholtzEquations::output_real_fct(), oomph::StefanBoltzmannRadiationBase::output_stefan_boltzmann_radiation_rays(), oomph::LinearisedAxisymmetricNavierStokesEquations::output_veloc(), oomph::AxisymmetricNavierStokesEquations::output_veloc(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_veloc(), oomph::LinearisedNavierStokesEquations::output_veloc(), oomph::PolarNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_vorticity(), oomph::HermiteShellElement::output_with_time_dep_quantities(), PlateProblem< ELEMENT >::PlateProblem(), oomph::AxisymmetricNavierStokesEquations::point_output_data(), oomph::AxisymmetricPoroelasticityEquations::point_output_data(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::point_output_data(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::point_output_data(), oomph::NavierStokesEquations< DIM >::point_output_data(), oomph::PoissonEquations< DIM >::point_output_data(), oomph::SpaceTimeNavierStokesEquations< DIM >::point_output_data(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::point_output_data(), oomph::YoungLaplaceEquations::position(), position(), oomph::AxisymmetricNavierStokesEquations::pressure_integral(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::pressure_integral(), oomph::RefineableQElement< 2 >::quad_hang_helper(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::residual_for_projection(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::residual_for_projection(), oomph::ProjectableElement< ELEMENT >::residual_for_projection(), oomph::NavierStokesEquations< DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeNavierStokesEquations< DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::scalar_value_fct_paraview(), oomph::PMLHelmholtzEquations< DIM >::scalar_value_fct_paraview(), oomph::PoissonEquations< DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::scalar_value_fct_paraview(), oomph::AdvectionDiffusionEquations< DIM >::scalar_value_paraview(), oomph::AxisymAdvectionDiffusionEquations::scalar_value_paraview(), oomph::StefanBoltzmannHelper::setup_stefan_boltzmann_visibility(), ShellProblem< ELEMENT >::ShellProblem(), oomph::PolarNavierStokesEquations::strain_rate(), oomph::PolarNavierStokesEquations::strain_rate_by_r(), and oomph::SolarRadiationBase::update_limiting_angles().

◆ interpolated_x() [4/4]

void FiniteElement::interpolated_x ( const Vector< double > &  s,
Vector< double > &  x 
) const
virtual

Return FE interpolated position x[] at local coordinate s as Vector.

Reimplemented in oomph::FaceElement.

4027  {
4028  // Find the number of nodes
4029  const unsigned n_node = nnode();
4030  // Find the number of positional types
4031  const unsigned n_position_type = nnodal_position_type();
4032  // Find the dimension stored in the node
4033  const unsigned nodal_dim = nodal_dimension();
4034 
4035  // Assign storage for the local shape function
4036  Shape psi(n_node, n_position_type);
4037  // Find the values of shape function
4038  shape(s, psi);
4039 
4040  // Loop over the dimensions
4041  for (unsigned i = 0; i < nodal_dim; i++)
4042  {
4043  // Initilialise value of x[i] to zero
4044  x[i] = 0.0;
4045  // Loop over the local nodes
4046  for (unsigned l = 0; l < n_node; l++)
4047  {
4048  // Loop over the number of dofs
4049  for (unsigned k = 0; k < n_position_type; k++)
4050  {
4051  x[i] += nodal_position_gen(l, k, i) * psi(l, k);
4052  }
4053  }
4054  }
4055  }

References i, k, nnodal_position_type(), nnode(), nodal_dimension(), nodal_position_gen(), s, shape(), and plotDoE::x.

◆ interpolated_zeta()

void FiniteElement::interpolated_zeta ( const Vector< double > &  s,
Vector< double > &  zeta 
) const
virtual

Calculate the interpolated value of zeta, the intrinsic coordinate of the element when viewed as a compound geometric object within a Mesh as a function of the local coordinate of the element, s. The default assumption is the zeta is interpolated using the shape functions of the element with the values given by zeta_nodal(). A MacroElement representation of the intrinsic coordinate parametrised by the local coordinate s is used if available. Choosing the MacroElement representation of zeta (Eulerian x by default) allows a correspondence to be established between elements on different Meshes covering the same curvilinear domain in cases where one element is much coarser than the other.

Reimplemented from oomph::GeomObject.

4677  {
4678  // If there is a macro element use it
4679  if (Macro_elem_pt != 0)
4680  {
4681  this->get_x_from_macro_element(s, zeta);
4682  }
4683  // Otherwise interpolate zeta_nodal using the shape functions
4684  else
4685  {
4686  // Find the number of nodes
4687  const unsigned n_node = this->nnode();
4688  // Find the number of positional types
4689  const unsigned n_position_type = this->nnodal_position_type();
4690  // Storage for the shape functions
4691  Shape psi(n_node, n_position_type);
4692  // Get the values of the shape functions at the local coordinate s
4693  this->shape(s, psi);
4694 
4695  // Find the number of coordinates
4696  const unsigned ncoord = this->dim();
4697  // Initialise the value of zeta to zero
4698  for (unsigned i = 0; i < ncoord; i++)
4699  {
4700  zeta[i] = 0.0;
4701  }
4702 
4703  // Add the contributions from each nodal dof to the interpolated value
4704  // of zeta.
4705  for (unsigned l = 0; l < n_node; l++)
4706  {
4707  for (unsigned k = 0; k < n_position_type; k++)
4708  {
4709  // Locally cache the value of the shape function
4710  const double psi_ = psi(l, k);
4711  for (unsigned i = 0; i < ncoord; i++)
4712  {
4713  zeta[i] += this->zeta_nodal(l, k, i) * psi_;
4714  }
4715  }
4716  }
4717  }
4718  }
EIGEN_STRONG_INLINE const Eigen::CwiseBinaryOp< Eigen::internal::scalar_zeta_op< typename DerivedX::Scalar >, const DerivedX, const DerivedQ > zeta(const Eigen::ArrayBase< DerivedX > &x, const Eigen::ArrayBase< DerivedQ > &q)
Definition: SpecialFunctionsArrayAPI.h:152

References dim(), get_x_from_macro_element(), i, k, Macro_elem_pt, nnodal_position_type(), nnode(), shape(), Eigen::zeta(), and zeta_nodal().

Referenced by oomph::BrickFromTetMesh< ELEMENT >::build_mesh(), UnstructuredFluidProblem< ELEMENT >::doc_boundary_coordinates(), oomph::Mesh::doc_boundary_coordinates(), PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::doc_solid_boundary_coordinates(), UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::doc_solid_boundary_coordinates(), oomph::RefineableYoungLaplaceEquations::fill_in_contribution_to_residuals(), oomph::YoungLaplaceEquations::fill_in_contribution_to_residuals(), oomph::Multi_domain_functions::first_closer_than_second(), oomph::FSIHermiteBeamElement::locate_zeta(), locate_zeta(), oomph::Multi_domain_functions::locate_zeta_for_local_coordinates(), oomph::FSIAxisymmetricLinearElasticityTractionElement< ELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::output(), oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >::output(), oomph::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::output(), oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::output(), oomph::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::output(), oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::output(), oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::output(), oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::output(), oomph::FaceElement::output_zeta(), oomph::Multi_domain_functions::setup_bulk_elements_adjacent_to_face_mesh(), and oomph::ThinLayerBrickOnTetMesh< ELEMENT >::ThinLayerBrickOnTetMesh().

◆ invert_jacobian() [1/5]

template<>
double oomph::FiniteElement::invert_jacobian ( const DenseMatrix< double > &  jacobian,
DenseMatrix< double > &  inverse_jacobian 
) const
protected

Zero-d specialisation of function to calculate inverse of jacobian mapping.

2047  {
2048  // Issue a warning
2049  oomph_info << "\nWarning: You are trying to invert the jacobian for "
2050  << "a 'point' element" << std::endl
2051  << "This makes no sense and is almost certainly an error"
2052  << std::endl
2053  << std::endl;
2054 
2055  // Dummy return
2056  return (1.0);
2057  }

References oomph::oomph_info.

◆ invert_jacobian() [2/5]

template<>
double oomph::FiniteElement::invert_jacobian ( const DenseMatrix< double > &  jacobian,
DenseMatrix< double > &  inverse_jacobian 
) const
protected

One-d specialisation of function to calculate inverse of jacobian mapping.

2067  {
2068  // Calculate the determinant of the matrix
2069  const double det = jacobian(0, 0);
2070 
2071 // Report if Matrix is singular or negative
2072 #ifdef PARANOID
2073  check_jacobian(det);
2074 #endif
2075 
2076  // Calculate the inverse --- trivial in 1D
2077  inverse_jacobian(0, 0) = 1.0 / jacobian(0, 0);
2078 
2079  // Return the determinant
2080  return (det);
2081  }
void check_jacobian(const double &jacobian) const
Definition: elements.cc:1750

References check_jacobian().

◆ invert_jacobian() [3/5]

template<>
double oomph::FiniteElement::invert_jacobian ( const DenseMatrix< double > &  jacobian,
DenseMatrix< double > &  inverse_jacobian 
) const
protected

Two-d specialisation of function to calculate inverse of jacobian mapping.

2090  {
2091  // Calculate the determinant of the matrix
2092  const double det =
2093  jacobian(0, 0) * jacobian(1, 1) - jacobian(0, 1) * jacobian(1, 0);
2094 
2095 // Report if Matrix is singular or negative
2096 #ifdef PARANOID
2097  check_jacobian(det);
2098 #endif
2099 
2100  // Calculate the inverset of the 2x2 matrix
2101  inverse_jacobian(0, 0) = jacobian(1, 1) / det;
2102  inverse_jacobian(0, 1) = -jacobian(0, 1) / det;
2103  inverse_jacobian(1, 0) = -jacobian(1, 0) / det;
2104  inverse_jacobian(1, 1) = jacobian(0, 0) / det;
2105 
2106  // Return the jacobian
2107  return (det);
2108  }

References check_jacobian().

◆ invert_jacobian() [4/5]

template<>
double oomph::FiniteElement::invert_jacobian ( const DenseMatrix< double > &  jacobian,
DenseMatrix< double > &  inverse_jacobian 
) const
protected

Three-d specialisation of function to calculate inverse of jacobian mapping

2118  {
2119  // Calculate the determinant of the matrix
2120  const double det = jacobian(0, 0) * jacobian(1, 1) * jacobian(2, 2) +
2121  jacobian(0, 1) * jacobian(1, 2) * jacobian(2, 0) +
2122  jacobian(0, 2) * jacobian(1, 0) * jacobian(2, 1) -
2123  jacobian(0, 0) * jacobian(1, 2) * jacobian(2, 1) -
2124  jacobian(0, 1) * jacobian(1, 0) * jacobian(2, 2) -
2125  jacobian(0, 2) * jacobian(1, 1) * jacobian(2, 0);
2126 
2127  // Report if Matrix is singular or negative
2128 #ifdef PARANOID
2129  check_jacobian(det);
2130 #endif
2131 
2132  // Calculate the inverse of the 3x3 matrix
2133  inverse_jacobian(0, 0) =
2134  (jacobian(1, 1) * jacobian(2, 2) - jacobian(1, 2) * jacobian(2, 1)) / det;
2135  inverse_jacobian(0, 1) =
2136  -(jacobian(0, 1) * jacobian(2, 2) - jacobian(0, 2) * jacobian(2, 1)) /
2137  det;
2138  inverse_jacobian(0, 2) =
2139  (jacobian(0, 1) * jacobian(1, 2) - jacobian(0, 2) * jacobian(1, 1)) / det;
2140  inverse_jacobian(1, 0) =
2141  -(jacobian(1, 0) * jacobian(2, 2) - jacobian(1, 2) * jacobian(2, 0)) /
2142  det;
2143  inverse_jacobian(1, 1) =
2144  (jacobian(0, 0) * jacobian(2, 2) - jacobian(0, 2) * jacobian(2, 0)) / det;
2145  inverse_jacobian(1, 2) =
2146  -(jacobian(0, 0) * jacobian(1, 2) - jacobian(0, 2) * jacobian(1, 0)) /
2147  det;
2148  inverse_jacobian(2, 0) =
2149  (jacobian(1, 0) * jacobian(2, 1) - jacobian(1, 1) * jacobian(2, 0)) / det;
2150  inverse_jacobian(2, 1) =
2151  -(jacobian(0, 0) * jacobian(2, 1) - jacobian(0, 1) * jacobian(2, 0)) /
2152  det;
2153  inverse_jacobian(2, 2) =
2154  (jacobian(0, 0) * jacobian(1, 1) - jacobian(0, 1) * jacobian(1, 0)) / det;
2155 
2156  // Return the determinant
2157  return (det);
2158  }

References check_jacobian().

◆ invert_jacobian() [5/5]

template<unsigned DIM>
double oomph::FiniteElement::invert_jacobian ( const DenseMatrix< double > &  jacobian,
DenseMatrix< double > &  inverse_jacobian 
) const
protected

Take the matrix passed as jacobian and return its inverse in inverse_jacobian. This function is templated by the dimension of the element because matrix inversion cannot be written efficiently in a generic manner.

◆ invert_jacobian_mapping()

double FiniteElement::invert_jacobian_mapping ( const DenseMatrix< double > &  jacobian,
DenseMatrix< double > &  inverse_jacobian 
) const
protectedvirtual

A template-free interface that takes the matrix passed as jacobian and return its inverse in inverse_jacobian. By default the function will use the dimension of the element to call the correct invert_jacobian(..) function. This should be overloaded for efficiency (removal of a switch statement) in specific elements.

Template-free interface for inversion of the jacobian of a mapping. This is slightly inefficient, given that it uses a switch statement. It can always be overloaded in specific geometric elements, for efficiency reasons.

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::DiagQHermiteElement< DIM >, oomph::QHermiteElement< DIM >, and oomph::QHermiteElement< DIM - 1 >.

2169  {
2170  // Find the spatial dimension of the element
2171  const unsigned el_dim = dim();
2172  // Call the appropriate templated function, depending on the
2173  // element dimension
2174  switch (el_dim)
2175  {
2176  case 0:
2177  return invert_jacobian<0>(jacobian, inverse_jacobian);
2178  break;
2179  case 1:
2180  return invert_jacobian<1>(jacobian, inverse_jacobian);
2181  break;
2182  case 2:
2183  return invert_jacobian<2>(jacobian, inverse_jacobian);
2184  break;
2185  case 3:
2186  return invert_jacobian<3>(jacobian, inverse_jacobian);
2187  break;
2188  // Catch-all default case: issue warning and die
2189  default:
2190  std::ostringstream error_stream;
2191  error_stream << "Dimension of the element must be 0,1,2 or 3, not "
2192  << el_dim << std::endl;
2193 
2194  throw OomphLibError(
2195  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
2196  }
2197  // Dummy return for Intel compiler
2198  return 1.0;
2199  }

References dim(), el_dim, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by local_to_eulerian_mapping(), and oomph::SolidFiniteElement::local_to_lagrangian_mapping().

◆ J_eulerian()

double FiniteElement::J_eulerian ( const Vector< double > &  s) const
virtual

Return the Jacobian of mapping from local to global coordinates at local position s.

Calculate the determinant of the Jacobian of the mapping between local and global coordinates at the position. Works directly from the base vectors without assuming that coordinates match spatial dimension. Will be overloaded in FaceElements, in which the elemental dimension does not match the spatial dimension. WARNING: this is always positive and cannot be used to check if the element is inverted, say!

Reimplemented in oomph::FaceElement, oomph::BiharmonicFluxElement< DIM >, and oomph::BiharmonicFluxElement< DIM >.

4104  {
4105  // Find the number of nodes and position types
4106  const unsigned n_node = nnode();
4107  const unsigned n_position_type = nnodal_position_type();
4108  // Find the dimension of the node and element
4109  const unsigned n_dim_node = nodal_dimension();
4110  const unsigned n_dim_element = dim();
4111 
4112  // Set up dummy memory for the shape functions
4113  Shape psi(n_node, n_position_type);
4114  DShape dpsids(n_node, n_position_type, n_dim_element);
4115  // Get the shape functions and local derivatives
4116  dshape_local(s, psi, dpsids);
4117 
4118  // Right calculate the base vectors
4119  DenseMatrix<double> interpolated_G(n_dim_element, n_dim_node);
4120  assemble_eulerian_base_vectors(dpsids, interpolated_G);
4121 
4122  // Calculate the metric tensor of the element
4123  DenseMatrix<double> G(n_dim_element, n_dim_element, 0.0);
4124  for (unsigned i = 0; i < n_dim_element; i++)
4125  {
4126  for (unsigned j = 0; j < n_dim_element; j++)
4127  {
4128  for (unsigned k = 0; k < n_dim_node; k++)
4129  {
4130  G(i, j) += interpolated_G(i, k) * interpolated_G(j, k);
4131  }
4132  }
4133  }
4134 
4135  // Calculate the determinant of the metric tensor
4136  double det = 0.0;
4137  switch (n_dim_element)
4138  {
4139  case 0:
4140  throw OomphLibError("Cannot calculate J_eulerian() for point element\n",
4143  break;
4144  case 1:
4145  det = G(0, 0);
4146  break;
4147  case 2:
4148  det = G(0, 0) * G(1, 1) - G(0, 1) * G(1, 0);
4149  break;
4150  case 3:
4151  det = G(0, 0) * G(1, 1) * G(2, 2) + G(0, 1) * G(1, 2) * G(2, 0) +
4152  G(0, 2) * G(1, 0) * G(2, 1) - G(0, 0) * G(1, 2) * G(2, 1) -
4153  G(0, 1) * G(1, 0) * G(2, 2) - G(0, 2) * G(1, 1) * G(2, 0);
4154  break;
4155  default:
4156  oomph_info << "More than 3 dimensions in J_eulerian()" << std::endl;
4157  break;
4158  }
4159 
4160  // Return the Jacobian (square-root of the determinant of the metric tensor)
4161  return sqrt(det);
4162  }
JacobiRotation< float > G
Definition: Jacobi_makeGivens.cpp:2
virtual void assemble_eulerian_base_vectors(const DShape &dpsids, DenseMatrix< double > &interpolated_G) const
Definition: elements.cc:2009

References assemble_eulerian_base_vectors(), dim(), dshape_local(), G, i, j, k, nnodal_position_type(), nnode(), nodal_dimension(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, s, and sqrt().

Referenced by oomph::AxisymAdvectionDiffusionEquations::compute_error(), oomph::AxisymFoepplvonKarmanEquations::compute_error(), oomph::AxisymmetricLinearElasticityEquations::compute_error(), oomph::BiharmonicEquations< DIM >::compute_error(), oomph::DisplacementBasedFoepplvonKarmanEquations::compute_error(), oomph::FoepplvonKarmanEquations::compute_error(), oomph::FourierDecomposedHelmholtzEquations::compute_error(), oomph::PMLFourierDecomposedHelmholtzEquations::compute_error(), oomph::SphericalAdvectionDiffusionEquations::compute_error(), oomph::SteadyAxisymAdvectionDiffusionEquations::compute_error(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::compute_error(), oomph::YoungLaplaceEquations::compute_error(), oomph::AxisymmetricPoroelasticityEquations::compute_error(), oomph::AxisymmetricNavierStokesEquations::compute_error(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::compute_error(), oomph::PolarNavierStokesEquations::compute_error(), oomph::SphericalNavierStokesEquations::compute_error(), oomph::SphericalNavierStokesEquations::compute_error_e(), oomph::SolidFiniteElement::compute_norm(), oomph::FourierDecomposedHelmholtzEquations::compute_norm(), oomph::PMLFourierDecomposedHelmholtzEquations::compute_norm(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::compute_norm(), oomph::AxisymmetricNavierStokesEquations::compute_physical_size(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::compute_physical_size(), oomph::AxisymmetricNavierStokesEquations::dissipation(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::dissipation(), oomph::PolarNavierStokesEquations::dissipation(), oomph::SphericalNavierStokesEquations::dissipation(), oomph::LinearisedAxisymmetricNavierStokesEquations::dkin_energy_dt(), oomph::SphericalNavierStokesEquations::extract_velocity(), oomph::Z2ErrorEstimator::get_element_errors(), oomph::Z2ErrorEstimator::get_recovered_flux_in_patch(), integrate_fct(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectablePVDElement< PVD_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectablePVDElementWithContinuousPressure< PVD_ELEMENT >::jacobian_and_shape_of_field(), oomph::AxisymmetricNavierStokesEquations::kin_energy(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::kin_energy(), oomph::PolarNavierStokesEquations::kin_energy(), oomph::SphericalNavierStokesEquations::kin_energy(), oomph::AxisymmetricNavierStokesEquations::pressure_integral(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::pressure_integral(), oomph::PolarNavierStokesEquations::pressure_integral(), oomph::SphericalNavierStokesEquations::pressure_integral(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::residual_for_projection(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::residual_for_projection(), oomph::ProjectableElement< ELEMENT >::residual_for_projection(), and self_test().

◆ J_eulerian_at_knot()

double FiniteElement::J_eulerian_at_knot ( const unsigned ipt) const
virtual

Return the Jacobian of the mapping from local to global coordinates at the ipt-th integration point

Compute the Jacobian of the mapping between the local and global coordinates at the ipt-th integration point

Reimplemented in oomph::StorableShapeElementBase, and oomph::FaceElement.

4169  {
4170  // Find the number of nodes
4171  const unsigned n_node = nnode();
4172  // Find the number of position types
4173  const unsigned n_position_type = nnodal_position_type();
4174  // Find the dimension of the node and element
4175  const unsigned n_dim_node = nodal_dimension();
4176  const unsigned n_dim_element = dim();
4177 
4178  // Set up dummy memory for the shape functions
4179  Shape psi(n_node, n_position_type);
4180  DShape dpsids(n_node, n_position_type, n_dim_element);
4181  // Get the shape functions and local derivatives at the knot
4182  // This call may use the stored versions, which is why this entire
4183  // function doesn't just call J_eulerian(s), after reading out s from
4184  // the knots.
4185  dshape_local_at_knot(ipt, psi, dpsids);
4186 
4187  // Right calculate the base vectors
4188  DenseMatrix<double> interpolated_G(n_dim_element, n_dim_node);
4189  assemble_eulerian_base_vectors(dpsids, interpolated_G);
4190 
4191  // Calculate the metric tensor of the element
4192  DenseMatrix<double> G(n_dim_element, n_dim_element, 0.0);
4193  for (unsigned i = 0; i < n_dim_element; i++)
4194  {
4195  for (unsigned j = 0; j < n_dim_element; j++)
4196  {
4197  for (unsigned k = 0; k < n_dim_node; k++)
4198  {
4199  G(i, j) += interpolated_G(i, k) * interpolated_G(j, k);
4200  }
4201  }
4202  }
4203 
4204  // Calculate the determinant of the metric tensor
4205  double det = 0.0;
4206  switch (n_dim_element)
4207  {
4208  case 0:
4209  throw OomphLibError("Cannot calculate J_eulerian() for point element\n",
4212  break;
4213  case 1:
4214  det = G(0, 0);
4215  break;
4216  case 2:
4217  det = G(0, 0) * G(1, 1) - G(0, 1) * G(1, 0);
4218  break;
4219  case 3:
4220  det = G(0, 0) * G(1, 1) * G(2, 2) + G(0, 1) * G(1, 2) * G(2, 0) +
4221  G(0, 2) * G(1, 0) * G(2, 1) - G(0, 0) * G(1, 2) * G(2, 1) -
4222  G(0, 1) * G(1, 0) * G(2, 2) - G(0, 2) * G(1, 1) * G(2, 0);
4223  break;
4224  default:
4225  oomph_info << "More than 3 dimensions in J_eulerian()" << std::endl;
4226  break;
4227  }
4228 
4229  // Return the Jacobian (square-root of the determinant of the metric tensor)
4230  return sqrt(det);
4231  }

References assemble_eulerian_base_vectors(), dim(), dshape_local_at_knot(), G, i, j, k, nnodal_position_type(), nnode(), nodal_dimension(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and sqrt().

Referenced by oomph::AxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::SphericalNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::integrated_C_and_M(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::integrated_C_and_M(), oomph::StorableShapeElementBase::J_eulerian_at_knot(), oomph::StorableShapeElementBase::pre_compute_J_eulerian_at_knots(), and size().

◆ local_coord_is_valid()

virtual bool oomph::FiniteElement::local_coord_is_valid ( const Vector< double > &  s)
inlinevirtual

Broken assignment operator.

Check whether the local coordinate are valid or not

Reimplemented in oomph::TElementBase, oomph::QElementBase, oomph::QHermiteElement< DIM >, and oomph::QHermiteElement< DIM - 1 >.

1814  {
1815  throw OomphLibError(
1816  "local_coord_is_valid is not implemented for this element\n",
1819  return true;
1820  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by locate_zeta().

◆ local_coordinate_of_node()

virtual void oomph::FiniteElement::local_coordinate_of_node ( const unsigned j,
Vector< double > &  s 
) const
inlinevirtual

Get local coordinates of node j in the element; vector sets its own size (broken virtual)

Reimplemented in oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >, oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, and oomph::PointElement.

1844  {
1845  throw OomphLibError(
1846  "local_coordinate_of_node(...) is not implemented for this element\n",
1849  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::TreeBasedRefineableMeshBase::adapt_mesh(), oomph::GmshTetMesh< ELEMENT >::build_from_scaffold(), oomph::TetgenMesh< ELEMENT >::build_from_scaffold(), oomph::TriangleMesh< ELEMENT >::build_from_scaffold(), oomph::BrickFromTetMesh< ELEMENT >::build_mesh(), oomph::TPVDElement< DIM, NNODE_1D >::describe_local_dofs(), oomph::SpaceTimeNavierStokesEquations< DIM >::du_dt_nst(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::du_dt_nst(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::du_dt_ust_heat(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::du_dt_ust_heat(), SCoupling< M, O >::getSCoupledElements(), TwoDDGProblem< ELEMENT >::limit(), local_fraction_of_node(), oomph::Mesh::node_update(), oomph::TreeBasedRefineableMeshBase::p_adapt_mesh(), oomph::MacroElementNodeUpdateElement< ELEMENT >::rebuild_from_sons(), oomph::MacroElementNodeUpdateElement< ELEMENT >::set_node_update_info(), and oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::setup_algebraic_node_update().

◆ local_fraction_of_node()

void FiniteElement::local_fraction_of_node ( const unsigned j,
Vector< double > &  s_fraction 
)
virtual

Get the local fraction of the node j in the element A dumb, but correct default implementation is provided.

Get the local fraction of the node j in the element; vector sets its own size

Reimplemented in oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::QHermiteElement< DIM >, and oomph::QHermiteElement< DIM - 1 >.

3193  {
3194  // Default implementation is rather dumb
3195  // Get the local coordinate and scale by local coordinate range
3196  local_coordinate_of_node(j, s_fraction);
3197  unsigned n_coordinates = s_fraction.size();
3198  for (unsigned i = 0; i < n_coordinates; i++)
3199  {
3200  s_fraction[i] = (s_fraction[i] - s_min()) / (s_max() - s_min());
3201  }
3202  }
virtual double s_min() const
Min value of local coordinate.
Definition: elements.h:2793
virtual double s_max() const
Max. value of local coordinate.
Definition: elements.h:2803

References i, j, local_coordinate_of_node(), s_max(), and s_min().

Referenced by oomph::EighthSphereMesh< ELEMENT >::EighthSphereMesh(), and OneDimMesh< ELEMENT >::OneDimMesh().

◆ local_one_d_fraction_of_node()

virtual double oomph::FiniteElement::local_one_d_fraction_of_node ( const unsigned n1d,
const unsigned i 
)
inlinevirtual

Get the local fraction of any node in the n-th position in a one dimensional expansion along the i-th local coordinate

Reimplemented in oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >, oomph::QHermiteElement< DIM >, and oomph::QHermiteElement< DIM - 1 >.

1860  {
1861  std::string error_message =
1862  "local one_d_fraction_of_node is not implemented for this element\n";
1863  error_message +=
1864  "It only makes sense for elements that use tensor-product expansions\n";
1865 
1866  throw OomphLibError(
1868  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

Referenced by oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::local_one_d_fraction_of_interpolating_node(), oomph::RefineableAxisymmetricQTaylorHoodElement::local_one_d_fraction_of_interpolating_node(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::local_one_d_fraction_of_interpolating_node(), oomph::RefineableLinearisedQTaylorHoodElement::local_one_d_fraction_of_interpolating_node(), oomph::RefineableQSphericalTaylorHoodElement::local_one_d_fraction_of_interpolating_node(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::local_one_d_fraction_of_interpolating_node(), oomph::RefineableElement::local_one_d_fraction_of_interpolating_node(), oomph::RefineableQTaylorHoodElement< DIM >::local_one_d_fraction_of_interpolating_node(), oomph::RefineablePolarTaylorHoodElement::local_one_d_fraction_of_interpolating_node(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::local_one_d_fraction_of_interpolating_node(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::local_one_d_fraction_of_interpolating_node(), and oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::local_one_d_fraction_of_interpolating_node().

◆ local_to_eulerian_mapping() [1/2]

double oomph::FiniteElement::local_to_eulerian_mapping ( const DShape dpsids,
DenseMatrix< double > &  inverse_jacobian 
) const
inlineprotected

Calculate the mapping from local to Eulerian coordinates, given the derivatives of the shape functions w.r.t. local coordinates, Return only the determinant of the jacobian and the inverse of the mapping (ds/dx).

1526  {
1527  // Find the dimension of the element
1528  const unsigned el_dim = dim();
1529  // Assign memory for the jacobian
1530  DenseMatrix<double> jacobian(el_dim);
1531  // Calculate the jacobian and inverse
1532  return local_to_eulerian_mapping(dpsids, jacobian, inverse_jacobian);
1533  }

References dim(), el_dim, and local_to_eulerian_mapping().

◆ local_to_eulerian_mapping() [2/2]

virtual double oomph::FiniteElement::local_to_eulerian_mapping ( const DShape dpsids,
DenseMatrix< double > &  jacobian,
DenseMatrix< double > &  inverse_jacobian 
) const
inlineprotectedvirtual

Calculate the mapping from local to Eulerian coordinates, given the derivatives of the shape functions w.r.t. local coordinates. Returns the determinant of the jacobian, the jacobian and inverse jacobian

Reimplemented in oomph::DiagQHermiteElement< DIM >.

1512  {
1513  // Assemble the jacobian
1514  assemble_local_to_eulerian_jacobian(dpsids, jacobian);
1515  // Invert the jacobian (use the template-free interface)
1516  return invert_jacobian_mapping(jacobian, inverse_jacobian);
1517  }
virtual double invert_jacobian_mapping(const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
Definition: elements.cc:2166
virtual void assemble_local_to_eulerian_jacobian(const DShape &dpsids, DenseMatrix< double > &jacobian) const
Definition: elements.cc:1905

References assemble_local_to_eulerian_jacobian(), and invert_jacobian_mapping().

Referenced by d2shape_eulerian(), d2shape_eulerian_at_knot(), dJ_eulerian_at_knot(), oomph::AxisymmetricTCrouzeixRaviartElement::dpshape_and_dptest_eulerian_axi_nst(), oomph::AxisymmetricTTaylorHoodElement::dpshape_and_dptest_eulerian_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::dpshape_and_dptest_eulerian_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::dpshape_and_dptest_eulerian_axi_nst(), dshape_eulerian(), dshape_eulerian_at_knot(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_flux(), oomph::AxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst(), oomph::AxisymmetricPoroelasticityEquations::interpolated_div_q(), oomph::DarcyEquations< DIM >::interpolated_div_q(), oomph::PoroelasticityEquations< DIM >::interpolated_div_q(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::interpolated_du_dt_nst(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), local_to_eulerian_mapping(), and oomph::AxisymmetricPoroelasticityEquations::transform_basis().

◆ local_to_eulerian_mapping_diagonal()

double FiniteElement::local_to_eulerian_mapping_diagonal ( const DShape dpsids,
DenseMatrix< double > &  jacobian,
DenseMatrix< double > &  inverse_jacobian 
) const
protectedvirtual

Calculate the mapping from local to Eulerian coordinates given the derivatives of the shape functions w.r.t the local coordinates. assuming that the coordinates are aligned in the direction of the local coordinates, i.e. there are no cross terms and the jacobian is diagonal. This function returns the determinant of the jacobian, the jacobian and the inverse jacobian.

Calculate the mapping from local to eulerian coordinates assuming that the coordinates are aligned in the direction of the local coordinates, i.e. there are no cross terms and the jacobian is diagonal. The local derivatives are passed as dpsids and the jacobian and inverse jacobian are returned.

Reimplemented in oomph::RefineableElement.

2592  {
2593  // Find the dimension of the element
2594  const unsigned el_dim = dim();
2595  // Find the number of shape functions and shape functions types
2596  // Equal to the number of nodes and their position types by definition
2597  const unsigned n_shape = nnode();
2598  const unsigned n_shape_type = nnodal_position_type();
2599 
2600 #ifdef PARANOID
2601  // Check for dimension compatibility
2603  {
2604  std::ostringstream error_message;
2605  error_message << "Dimension mismatch" << std::endl;
2606  error_message << "The elemental dimension: " << Elemental_dimension
2607  << " must equal the nodal dimension: " << Nodal_dimension
2608  << " for the jacobian of the mapping to be well-defined"
2609  << std::endl;
2610  throw OomphLibError(
2611  error_message.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
2612  }
2613 #endif
2614 
2615  // In this case we assume that there are no cross terms, that is
2616  // global coordinate 0 is always in the direction of local coordinate 0
2617 
2618  // Loop over the coordinates
2619  for (unsigned i = 0; i < el_dim; i++)
2620  {
2621  // Zero the jacobian and inverse jacobian entries
2622  for (unsigned j = 0; j < el_dim; j++)
2623  {
2624  jacobian(i, j) = 0.0;
2625  inverse_jacobian(i, j) = 0.0;
2626  }
2627 
2628  // Loop over the shape functions
2629  for (unsigned l = 0; l < n_shape; l++)
2630  {
2631  // Loop over the types of dof
2632  for (unsigned k = 0; k < n_shape_type; k++)
2633  {
2634  // Derivatives are always dx_{i}/ds_{i}
2635  jacobian(i, i) += raw_nodal_position_gen(l, k, i) * dpsids(l, k, i);
2636  }
2637  }
2638  }
2639 
2640  // Now calculate the determinant of the matrix
2641  double det = 1.0;
2642  for (unsigned i = 0; i < el_dim; i++)
2643  {
2644  det *= jacobian(i, i);
2645  }
2646 
2647 // Report if Matrix is singular, or negative
2648 #ifdef PARANOID
2649  check_jacobian(det);
2650 #endif
2651 
2652  // Calculate the inverse mapping (trivial in this case)
2653  for (unsigned i = 0; i < el_dim; i++)
2654  {
2655  inverse_jacobian(i, i) = 1.0 / jacobian(i, i);
2656  }
2657 
2658  // Return the value of the Jacobian
2659  return (det);
2660  }

References check_jacobian(), dim(), el_dim, Elemental_dimension, i, j, k, nnodal_position_type(), nnode(), Nodal_dimension, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and raw_nodal_position_gen().

Referenced by oomph::DiagQHermiteElement< DIM >::local_to_eulerian_mapping().

◆ locate_zeta()

void FiniteElement::locate_zeta ( const Vector< double > &  zeta,
GeomObject *&  geom_object_pt,
Vector< double > &  s,
const bool use_coordinate_as_initial_guess = false 
)
virtual

For a given value of zeta, the "global" intrinsic coordinate of a mesh of FiniteElements represented as a compound geometric object, find the local coordinate in this element that corresponds to the requested value of zeta. If zeta cannot be located in this element, geom_object_pt is set to NULL. If zeta is located in this element, we return its "this" pointer. By default don't use any value passed in to the local coordinate s as the initial guess in the Newton method

For a given value of zeta, the "global" intrinsic coordinate of a mesh of FiniteElements represented as a compound geometric object, find the local coordinate in this element that corresponds to the requested value of zeta. This is achieved in generality by using Newton's method to find the value of the local coordinate, s, such that interpolated_zeta(s) is equal to the requested value of zeta. If zeta cannot be located in this element, geom_object_pt is set to NULL. If zeta is located in this element, we return its "this" pointer. Setting the optional bool argument to true means that the coordinate argument "s" is used as the initial guess. (Default is false).

Reimplemented from oomph::GeomObject.

4738  {
4739  // Find the number of coordinates, the dimension of the element
4740  // This must be the same for the local and intrinsic global coordinate
4741  unsigned ncoord = this->dim();
4742 
4743  // Fast return based on centre of gravity and max. radius of any nodal
4744  // point
4746  0.0)
4747  {
4748  Vector<double> cog(ncoord);
4749  double max_radius = 0.0;
4751 
4752  // Get radius
4753  double radius = 0.0;
4754  for (unsigned i = 0; i < ncoord; i++)
4755  {
4756  radius += (cog[i] - zeta[i]) * (cog[i] - zeta[i]);
4757  }
4758  radius = sqrt(radius);
4759  if (radius > Locate_zeta_helpers::
4761  max_radius)
4762  {
4763  geom_object_pt = 0;
4764  return;
4765  }
4766  }
4767 
4768  // Assign storage for the vector and matrix used in Newton's method
4769  Vector<double> dx(ncoord, 0.0);
4770  DenseDoubleMatrix jacobian(ncoord, ncoord, 0.0);
4771 
4772  // // Make a list of (equally-spaced) local coordinates inside the element
4773  // unsigned n_list=Locate_zeta_helpers::N_local_points;
4774 
4775  // double list_space=(1.0/(double(n_list)-1.0))*(s_max()-s_min());
4776 
4777  // Possible initial guesses for Newton's method
4778  Vector<Vector<double>> s_list;
4779 
4780  // If the boolean argument use_coordinate_as_initial_guess was set
4781  // to true then we don't need to initialise s
4782  if (!use_coordinate_as_initial_guess)
4783  {
4784  // Vector of local coordinates
4785  Vector<double> s_c(ncoord);
4786 
4787  // Loop over plot points
4788  unsigned num_plot_points =
4790  for (unsigned iplot = 0; iplot < num_plot_points; iplot++)
4791  {
4792  // Get local coordinates of plot point
4794  s_list.push_back(s_c);
4795  }
4796  }
4797 
4798  // Counter for the number of Newton steps
4799  unsigned count = 0;
4800 
4801  // Control flag for the Newton loop
4802  bool keep_going = true;
4803 
4804  // Storage for the interpolated value of x
4805  Vector<double> inter_x(ncoord);
4806 
4807  // Ifwe have specified the coordinate already
4808  if (use_coordinate_as_initial_guess)
4809  {
4810  // Get the value of x at the initial guess
4811  this->interpolated_zeta(s, inter_x);
4812 
4813  // Set up the residuals
4814  for (unsigned i = 0; i < ncoord; i++)
4815  {
4816  dx[i] = zeta[i] - inter_x[i];
4817  }
4818  }
4819  else
4820  {
4821  // Find the smallest residual from the list of coordinates made earlier
4822  double my_min_resid = DBL_MAX;
4823  Vector<double> s_local(ncoord);
4824  Vector<double> work_x(ncoord);
4825  Vector<double> work_dx(ncoord);
4826 
4827  unsigned n_list_coord = s_list.size();
4828 
4829  for (unsigned i_coord = 0; i_coord < n_list_coord; i_coord++)
4830  {
4831  for (unsigned i = 0; i < ncoord; i++)
4832  {
4833  s_local[i] = s_list[i_coord][i];
4834  }
4835  // get_x for this coordinate
4836  this->interpolated_zeta(s_local, work_x);
4837 
4838  // calculate residuals
4839  for (unsigned i = 0; i < ncoord; i++)
4840  {
4841  work_dx[i] = zeta[i] - work_x[i];
4842  }
4843 
4844  double maxres = std::fabs(
4845  *std::max_element(work_dx.begin(), work_dx.end(), AbsCmp<double>()));
4846 
4847  // test against previous residuals
4848  if (maxres < my_min_resid)
4849  {
4850  my_min_resid = maxres;
4851  dx = work_dx;
4852  inter_x = work_x;
4853  s = s_local;
4854  }
4855  }
4856  }
4857 
4858  // Main Newton Loop
4859  do // start of do while loop
4860  {
4861  // Increase loop counter
4862  count++;
4863 
4864  // Bail out if necessary (without an error for now...)
4866  {
4867  keep_going = false;
4868  continue;
4869  }
4870 
4871  // If it's the first time round the loop, check the initial residuals
4872  if (count == 1)
4873  {
4874  double maxres =
4875  std::fabs(*std::max_element(dx.begin(), dx.end(), AbsCmp<double>()));
4876 
4877  // If it's small enough exit
4879  {
4880  keep_going = false;
4881  continue;
4882  }
4883  }
4884 
4885  // Is there a macro element? If so, assemble the Jacobian by FD-ing
4886  if (macro_elem_pt() != 0)
4887  {
4888  // Assemble jacobian on the fly by finite differencing
4889  Vector<double> work_s = s;
4890  Vector<double> r = inter_x; // i.e. the result of previous call to get_x
4891 
4892  // Finite difference step
4894 
4895  // Storage for calculated r from incremented s
4896  Vector<double> work_r(ncoord, 0.0);
4897 
4898  // Loop over s coordinates
4899  for (unsigned i = 0; i < ncoord; i++)
4900  {
4901  // Increment work_s by a small amount
4902  work_s[i] += fd_step;
4903 
4904  // Calculate work_r from macro element
4905  this->interpolated_zeta(work_s, work_r);
4906 
4907  // Loop over r to fill Jacobian
4908  for (unsigned j = 0; j < ncoord; j++)
4909  {
4910  jacobian(j, i) = -(work_r[j] - r[j]) / fd_step;
4911  }
4912 
4913  // Reset work_s
4914  work_s[i] = s[i];
4915  }
4916  }
4917  else // no macro element, so compute Jacobian with shape functions etc.
4918  {
4919  // Compute the entries of the Jacobian matrix
4920  unsigned n_node = this->nnode();
4921  unsigned n_position_type = this->nnodal_position_type();
4922  Shape psi(n_node, n_position_type);
4923  DShape dpsids(n_node, n_position_type, ncoord);
4924 
4925  // Get the local shape functions and their derivatives
4926  dshape_local(s, psi, dpsids);
4927 
4928  // Calculate the values of dxds
4929  DenseMatrix<double> interpolated_dxds(ncoord, ncoord, 0.0);
4930 
4931  // MH: No longer needed
4932  // //This implementation will only work for n_position_type=1
4933  // //since the function nodal_position_gen does not yet exist
4934  // #ifdef PARANOID
4935  // if (n_position_type!=1)
4936  // {
4937  // std::ostringstream error_stream;
4938  // error_stream << "This implementation does not exist
4939  // yet;\n"
4940  // << "it currently uses
4941  // raw_nodal_position_gen\n"
4942  // << "which does not take hangingness into
4943  // account\n"
4944  // << "It will work if n_position_type=1\n";
4945  // throw OomphLibError(error_stream.str(),
4946  // OOMPH_CURRENT_FUNCTION,
4947  // OOMPH_EXCEPTION_LOCATION);
4948  // }
4949  // #endif
4950 
4951  // Loop over the nodes
4952  for (unsigned l = 0; l < n_node; l++)
4953  {
4954  // Loop over position type even though it should be 1; the
4955  // functionality for n_position_type>1 will exist in the future
4956  for (unsigned k = 0; k < n_position_type; k++)
4957  {
4958  // Add the contribution from the nodal coordinates to the matrix
4959  for (unsigned i = 0; i < ncoord; i++)
4960  {
4961  for (unsigned j = 0; j < ncoord; j++)
4962  {
4963  interpolated_dxds(i, j) +=
4964  this->zeta_nodal(l, k, i) * dpsids(l, k, j);
4965  }
4966  }
4967  }
4968  }
4969 
4970  // The entries of the Jacobian matrix are merely dresiduals/ds
4971  // i.e. \f$ -dx/ds \f$
4972  for (unsigned i = 0; i < ncoord; i++)
4973  {
4974  for (unsigned j = 0; j < ncoord; j++)
4975  {
4976  jacobian(i, j) = -interpolated_dxds(i, j);
4977  }
4978  }
4979  }
4980 
4981  // Now solve the damn thing
4982  try
4983  {
4984  jacobian.solve(dx);
4985  }
4986  catch (OomphLibError& error)
4987  {
4988  // I've caught the error so shut up!
4989  error.disable_error_message();
4990 #ifdef PARANOID
4991  oomph_info << "Error in linear solve for "
4992  << "FiniteElement::locate_zeta()" << std::endl;
4993  oomph_info << "Should not affect the result!" << std::endl;
4994 #endif
4995  }
4996 
4997  // Add the correction to the local coordinates
4998  for (unsigned i = 0; i < ncoord; i++)
4999  {
5000  s[i] -= dx[i];
5001  }
5002 
5003  // Get the new residuals
5004  this->interpolated_zeta(s, inter_x);
5005  for (unsigned i = 0; i < ncoord; i++)
5006  {
5007  dx[i] = zeta[i] - inter_x[i];
5008  }
5009 
5010  // Get the maximum residuals
5011  double maxres =
5012  std::fabs(*std::max_element(dx.begin(), dx.end(), AbsCmp<double>()));
5013 
5014  // If we have converged jump straight to the test at the end of the loop
5016  {
5017  keep_going = false;
5018  continue;
5019  }
5020  } while (keep_going);
5021 
5022  // Test whether the local coordinates are valid or not
5023  bool valid = local_coord_is_valid(s);
5024 
5025  // If not valid, experimentally push back into element
5026  // and see if the result is still valid (within the Newton tolerance)
5027  if (!valid)
5028  {
5030 
5031  // Check residuals again
5032  this->interpolated_zeta(s, inter_x);
5033  for (unsigned i = 0; i < ncoord; i++)
5034  {
5035  dx[i] = zeta[i] - inter_x[i];
5036  }
5037 
5038  // Get the maximum residuals
5039  double maxres =
5040  std::fabs(*std::max_element(dx.begin(), dx.end(), AbsCmp<double>()));
5041 
5042  // Are we still OK?
5044  {
5045  // oomph_info
5046  // << "Pushing back inside has violated the Newton tolerance: max_res =
5047  // "
5048  // << maxres << std::endl;
5049  geom_object_pt = 0;
5050  return;
5051  }
5052  }
5053 
5054  // It is also possible now that it may not have converged "correctly",
5055  // i.e. count is greater than Max_newton_iterations
5057  {
5058  // Don't trust the current answer, return null
5059  geom_object_pt = 0;
5060  return;
5061  }
5062 
5063  // Otherwise the required point is located in "this" element:
5064  geom_object_pt = this;
5065  }
void interpolated_zeta(const Vector< double > &s, Vector< double > &zeta) const
Definition: elements.cc:4675
void get_centre_of_gravity_and_max_radius_in_terms_of_zeta(Vector< double > &cog, double &max_radius) const
Definition: elements.cc:3924
virtual void get_s_plot(const unsigned &i, const unsigned &nplot, Vector< double > &s, const bool &shifted_to_interior=false) const
Definition: elements.h:3148
virtual unsigned nplot_points(const unsigned &nplot) const
Definition: elements.h:3186
virtual bool local_coord_is_valid(const Vector< double > &s)
Broken assignment operator.
Definition: elements.h:1813
virtual void move_local_coord_back_into_element(Vector< double > &s) const
Definition: elements.h:1824
MacroElement * macro_elem_pt()
Access function to pointer to macro element.
Definition: elements.h:1878
r
Definition: UniformPSDSelfTest.py:20
radius
Definition: UniformPSDSelfTest.py:15
int error
Definition: calibrate.py:297
unsigned Max_newton_iterations
Maximum number of newton iterations.
Definition: elements.cc:1654
double Newton_tolerance
Convergence tolerance for the newton solver.
Definition: elements.cc:1651
unsigned N_local_points
Definition: elements.cc:1665
double Radius_multiplier_for_fast_exit_from_locate_zeta
Definition: elements.cc:1659

References oomph::GeneralisedElement::Default_fd_jacobian_step, dim(), dshape_local(), calibrate::error, boost::multiprecision::fabs(), get_centre_of_gravity_and_max_radius_in_terms_of_zeta(), get_s_plot(), i, interpolated_zeta(), j, k, local_coord_is_valid(), macro_elem_pt(), oomph::Locate_zeta_helpers::Max_newton_iterations, move_local_coord_back_into_element(), oomph::Locate_zeta_helpers::N_local_points, oomph::Locate_zeta_helpers::Newton_tolerance, nnodal_position_type(), nnode(), nplot_points(), oomph::oomph_info, UniformPSDSelfTest::r, UniformPSDSelfTest::radius, oomph::Locate_zeta_helpers::Radius_multiplier_for_fast_exit_from_locate_zeta, s, oomph::DoubleMatrixBase::solve(), sqrt(), Eigen::zeta(), and zeta_nodal().

◆ macro_elem_pt()

◆ move_local_coord_back_into_element()

virtual void oomph::FiniteElement::move_local_coord_back_into_element ( Vector< double > &  s) const
inlinevirtual

Adjust local coordinates so that they're located inside the element

Reimplemented in oomph::TElementBase, oomph::QElementBase, oomph::QHermiteElement< DIM >, and oomph::QHermiteElement< DIM - 1 >.

1825  {
1826  throw OomphLibError("move_local_coords_back_into_element() is not "
1827  "implemented for this element\n",
1830  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by locate_zeta().

◆ ngeom_data()

unsigned oomph::FiniteElement::ngeom_data ( ) const
inlinevirtual

A standard FiniteElement is fixed, so there are no geometric data when viewed in its GeomObject incarnation

Reimplemented from oomph::GeomObject.

Reimplemented in oomph::RefineableSolidElement, oomph::FaceElementAsGeomObject< ELEMENT >, and oomph::SolidFiniteElement.

2661  {
2662  return 0;
2663  }

Referenced by oomph::ElementWithExternalElement::assign_external_interaction_data_local_eqn_numbers().

◆ nnodal_position_type()

unsigned oomph::FiniteElement::nnodal_position_type ( ) const
inline

Return the number of coordinate types that the element requires to interpolate the geometry between the nodes. For Lagrange elements it is 1.

2464  {
2465  return Nnodal_position_type;
2466  }

References Nnodal_position_type.

Referenced by assemble_eulerian_base_vectors(), oomph::RefineableElement::assemble_eulerian_base_vectors(), assemble_local_to_eulerian_jacobian(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian(), assemble_local_to_eulerian_jacobian2(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian2(), oomph::RefineableSolidElement::assign_solid_hanging_local_eqn_numbers(), oomph::SolidFiniteElement::assign_solid_local_eqn_numbers(), oomph::SolidICProblem::backup_original_state(), check_J_eulerian_at_knots(), oomph::FaceElement::check_J_eulerian_at_knots(), oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >::construct_boundary_node(), oomph::SolidFiniteElement::construct_boundary_node(), oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >::construct_node(), oomph::SolidFiniteElement::construct_node(), oomph::FaceElement::continuous_tangent_and_outer_unit_normal(), oomph::FSIHermiteBeamElement::dposition_dlagrangian_at_local_coordinate(), oomph::FSIDiagHermiteShellElement::dposition_dlagrangian_at_local_coordinate(), oomph::ClampedSlidingHermiteBeamBoundaryConditionElement::fill_in_contribution_to_residuals(), oomph::AxisymmetricPVDEquations::fill_in_contribution_to_residuals_axisym_pvd(), oomph::KirchhoffLoveBeamEquations::fill_in_contribution_to_residuals_beam(), oomph::KirchhoffLoveShellEquations::fill_in_contribution_to_residuals_shell(), oomph::AxisymmetricLinearElasticityEquations::fill_in_generic_contribution_to_residuals_axisymmetric_linear_elasticity(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::fill_in_generic_contribution_to_residuals_fourier_decomp_time_harmonic_linear_elasticity(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::RefineableQDPVDElement< DIM, NNODE_1D >::fill_in_generic_contribution_to_residuals_pvd(), oomph::SolidFiniteElement::fill_in_generic_jacobian_for_solid_ic(), oomph::AxisymmetricPVDEquationsWithPressure::fill_in_generic_residual_contribution_axisym_pvd_with_pressure(), oomph::SolidFiniteElement::fill_in_jacobian_for_newmark_accel(), oomph::SolidFiniteElement::fill_in_jacobian_from_solid_position_by_fd(), oomph::RefineableSolidElement::fill_in_jacobian_from_solid_position_by_fd(), FlatPlateMesh< ELEMENT >::FlatPlateMesh(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::FSIImposeDisplacementByLagrangeMultiplierElement(), oomph::FSIHermiteBeamElement::get_dof_numbers_for_unknowns(), oomph::FSIDiagHermiteShellElement::get_dof_numbers_for_unknowns(), oomph::ClampedHermiteShellBoundaryConditionElement::get_dof_numbers_for_unknowns(), oomph::PVDEquationsBase< DIM >::get_dof_numbers_for_unknowns(), oomph::PVDEquationsWithPressure< DIM >::get_dof_numbers_for_unknowns(), oomph::KirchhoffLoveShellEquations::get_energy(), oomph::KirchhoffLoveBeamEquations::get_energy(), oomph::KirchhoffLoveBeamEquations::get_non_unit_tangent(), oomph::KirchhoffLoveShellEquations::get_normal(), oomph::KirchhoffLoveBeamEquations::get_normal(), oomph::AxisymmetricLinearElasticityEquations::get_strain(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::get_strain(), oomph::KirchhoffLoveShellEquations::get_strain_and_bend(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::ImposeDisplacementByLagrangeMultiplierElement(), interpolated_dxdt(), interpolated_x(), interpolated_zeta(), J_eulerian(), oomph::FaceElement::J_eulerian(), J_eulerian_at_knot(), oomph::FaceElement::J_eulerian_at_knot(), oomph::KirchhoffLoveShellEquations::load_rate_of_work(), local_to_eulerian_mapping_diagonal(), oomph::RefineableElement::local_to_eulerian_mapping_diagonal(), locate_zeta(), oomph::FaceElement::outer_unit_normal(), oomph::HermiteBeamElement::output(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::SolidFiniteElement::position_local_eqn(), oomph::StorableShapeElementBase::pre_compute_d2shape_eulerian_at_knots(), oomph::StorableShapeElementBase::pre_compute_d2shape_local_at_knots(), oomph::StorableShapeElementBase::pre_compute_dshape_eulerian_at_knots(), oomph::StorableShapeElementBase::pre_compute_dshape_local_at_knots(), oomph::StorableShapeElementBase::pre_compute_shape_at_knots(), oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::SolidICProblem::reset_original_state(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::residual_for_projection(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::residual_for_projection(), oomph::ProjectableElement< ELEMENT >::residual_for_projection(), self_test(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::set_boundary_shape_geom_object_pt(), oomph::SolidICProblem::setup_problem(), ShellMesh< ELEMENT >::ShellMesh(), and oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::square_of_l2_norm_of_error().

◆ nnode()

unsigned oomph::FiniteElement::nnode ( ) const
inline

Return the number of nodes.

2211  {
2212  return Nnode;
2213  }

References Nnode.

Referenced by oomph::TreeBasedRefineableMeshBase::adapt_mesh(), oomph::SolubleSurfactantTransportInterfaceElement::add_additional_residual_contributions_interface(), oomph::SurfactantTransportInterfaceElement::add_additional_residual_contributions_interface(), oomph::FaceElement::add_additional_values(), oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::add_element_contribution_to_aux_integral(), oomph::DGFaceElement::add_flux_contributions(), oomph::StefanBoltzmannRadiationBase::add_stefan_boltzmann_illumination_info(), AirwayReopeningProblem< ELEMENT >::AirwayReopeningProblem(), assemble_eulerian_base_vectors(), oomph::RefineableElement::assemble_eulerian_base_vectors(), assemble_local_to_eulerian_jacobian(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian(), assemble_local_to_eulerian_jacobian2(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian2(), oomph::SolidFiniteElement::assemble_local_to_lagrangian_jacobian(), oomph::RefineableSolidElement::assemble_local_to_lagrangian_jacobian(), oomph::SolidFiniteElement::assemble_local_to_lagrangian_jacobian2(), oomph::RefineableSolidElement::assemble_local_to_lagrangian_jacobian2(), oomph::ElementWithMovingNodes::assemble_set_of_all_geometric_data(), oomph::ElementWithExternalElement::assign_external_interaction_data_local_eqn_numbers(), oomph::RefineableElement::assign_hanging_local_eqn_numbers(), oomph::GeneralisedElement::assign_local_eqn_numbers(), assign_nodal_local_eqn_numbers(), oomph::RefineableSolidElement::assign_solid_hanging_local_eqn_numbers(), oomph::SolidFiniteElement::assign_solid_local_eqn_numbers(), oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::BackupMeshForProjection(), oomph::GmshTetMesh< ELEMENT >::build_from_scaffold(), RefineableUnsteadyHeatProblem< ELEMENT >::build_mesh(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::build_mesh(), oomph::BackwardStepQuadMesh< ELEMENT >::build_mesh(), oomph::ExtrudedCubeMeshFromQuadMesh< ELEMENT >::build_mesh(), CapProblem< ELEMENT >::CapProblem(), oomph::Mesh::check_inverted_elements(), check_J_eulerian_at_knots(), oomph::FaceElement::check_J_eulerian_at_knots(), check_jacobian(), oomph::TriangleScaffoldMesh::check_mesh_integrity(), ContactProblem< ELEMENT >::complete_problem_setup(), oomph::FourierDecomposedHelmholtzDtNBoundaryElement< ELEMENT >::complete_setup_of_dependencies(), oomph::HelmholtzDtNBoundaryElement< ELEMENT >::complete_setup_of_dependencies(), oomph::HelmholtzBCElementBase< ELEMENT >::compute_contribution_to_fourier_components(), oomph::AxisymAdvectionDiffusionEquations::compute_error(), oomph::AxisymFoepplvonKarmanEquations::compute_error(), oomph::BiharmonicEquations< DIM >::compute_error(), oomph::DisplacementBasedFoepplvonKarmanEquations::compute_error(), oomph::FoepplvonKarmanEquations::compute_error(), oomph::FourierDecomposedHelmholtzEquations::compute_error(), oomph::PMLFourierDecomposedHelmholtzEquations::compute_error(), oomph::SphericalAdvectionDiffusionEquations::compute_error(), oomph::SteadyAxisymAdvectionDiffusionEquations::compute_error(), oomph::EulerEquations< DIM >::compute_error(), oomph::ScalarAdvectionEquations< DIM >::compute_error(), oomph::SolidFiniteElement::compute_norm(), oomph::FourierDecomposedHelmholtzEquations::compute_norm(), oomph::PMLFourierDecomposedHelmholtzEquations::compute_norm(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::compute_norm(), oomph::AxisymmetricPVDEquations::compute_physical_size(), oomph::AxisymmetricPVDEquationsWithPressure::compute_physical_size(), oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::compute_stabilisation_parameter(), oomph::DGElement::construct_boundary_nodes_and_faces(), oomph::DGElement::construct_nodes_and_faces(), oomph::FaceElement::continuous_tangent_and_outer_unit_normal(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::contribution_to_enclosed_volume(), oomph::LineVolumeConstraintBoundingElement::contribution_to_enclosed_volume(), oomph::AxisymmetricVolumeConstraintBoundingElement::contribution_to_enclosed_volume(), oomph::StefanBoltzmannRadiationBase::contribution_to_stefan_boltzmann_radiation(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::contribution_to_total_porous_flux(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::contribution_to_total_porous_flux(), oomph::AxisymmetricVolumeConstraintBoundingElement::contribution_to_volume_flux(), oomph::LinearisedQCrouzeixRaviartElement::copy_efunction_to_normalisation(), ContactProblem< ELEMENT >::create_displ_imposition_elements(), RefineableRotatingCylinderProblem< ELEMENT >::create_free_surface_elements(), UnstructuredTorusProblem< ELEMENT >::create_lagrange_multiplier_elements(), FSICollapsibleChannelProblem< ELEMENT >::create_lagrange_multiplier_elements(), PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_lagrange_multiplier_elements(), FSIChannelWithLeafletProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_lagrange_multiplier_elements(), PrescribedBoundaryDisplacementProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredImmersedEllipseProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredFluidProblem< ELEMENT >::create_lagrange_multiplier_elements(), CollapsibleChannelProblem< ELEMENT >::create_lagrange_multiplier_elements(), StefanBoltzmannProblem< ELEMENT >::create_melt_elements(), TiltedCavityProblem< ELEMENT >::create_parall_outflow_lagrange_elements(), d_dshape_eulerian_dnodal_coordinates(), d_dshape_eulerian_dnodal_coordinates_templated_helper(), oomph::SphericalNavierStokesEquations::d_kin_energy_dt(), oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >::d_shape_and_test_local(), oomph::HelmholtzBCElementBase< ELEMENT >::d_shape_and_test_local(), oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >::d_shape_and_test_local(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::data_values_of_field(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::data_values_of_field(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::data_values_of_field(), oomph::ProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::data_values_of_field(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::data_values_of_field(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::data_values_of_field(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::data_values_of_field(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::data_values_of_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::data_values_of_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::data_values_of_field(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::data_values_of_field(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::data_values_of_field(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::data_values_of_field(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::data_values_of_field(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::data_values_of_field(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::data_values_of_field(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::data_values_of_field(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::data_values_of_field(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::data_values_of_field(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::data_values_of_field(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::data_values_of_field(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::data_values_of_field(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::data_values_of_field(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::data_values_of_field(), oomph::RefineableElement::deactivate_element(), describe_nodal_local_dofs(), oomph::SolidFiniteElement::describe_solid_local_dofs(), oomph::AdvectionDiffusionEquations< DIM >::dinterpolated_u_adv_diff_ddata(), oomph::RefineableAdvectionDiffusionEquations< DIM >::dinterpolated_u_adv_diff_ddata(), oomph::RefineableAxisymAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::RefineableSphericalAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::SphericalAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::SteadyAxisymAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::AxisymAdvectionDiffusionEquations::dinterpolated_u_axi_adv_diff_ddata(), oomph::AxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::RefineableAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableGeneralisedNewtonianNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::NavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::SpaceTimeNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableSpaceTimeNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableSpaceTimeNavierStokesMixedOrderEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::SurfaceMeltElement< ELEMENT >::disable_melting(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::disable_melting(), oomph::DisplacementControlElement::DisplacementControlElement(), dJ_eulerian_at_knot(), dJ_eulerian_dnodal_coordinates(), dJ_eulerian_dnodal_coordinates_templated_helper(), oomph::LinearisedAxisymmetricNavierStokesEquations::dkin_energy_dt(), oomph::Z2ErrorEstimator::doc_flux(), StefanBoltzmannProblem< ELEMENT >::doc_solution(), PoissonProblem< ELEMENT >::doc_solution(), FallingBlockProblem< ELEMENT >::doc_solution(), RisingBubbleProblem< ELEMENT >::doc_solution(), oomph::FSIHermiteBeamElement::dposition_dlagrangian_at_local_coordinate(), oomph::FSIDiagHermiteShellElement::dposition_dlagrangian_at_local_coordinate(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::dposition_dt(), oomph::DummyErrorEstimator::DummyErrorEstimator(), ElasticRefineableTwoLayerMesh< ELEMENT >::ElasticRefineableTwoLayerMesh(), oomph::AxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::SpinePointMarangoniSurfactantFluidInterfaceBoundingElement< ELEMENT >::fill_in_contribution_to_jacobian(), oomph::NodeElementSolidOnlyMortaringElement::fill_in_contribution_to_jacobian_mortared_nodes(), oomph::AxisymFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::DisplacementBasedFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::FoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::ClampedHermiteShellBoundaryConditionElement::fill_in_contribution_to_residuals(), oomph::RefineableYoungLaplaceEquations::fill_in_contribution_to_residuals(), oomph::YoungLaplaceEquations::fill_in_contribution_to_residuals(), oomph::AxisymmetricPVDEquations::fill_in_contribution_to_residuals_axisym_pvd(), oomph::KirchhoffLoveBeamEquations::fill_in_contribution_to_residuals_beam(), oomph::KirchhoffLoveShellEquations::fill_in_contribution_to_residuals_shell(), oomph::AxisymmetricLinearElasticityEquations::fill_in_generic_contribution_to_residuals_axisymmetric_linear_elasticity(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::fill_in_generic_contribution_to_residuals_fourier_decomp_time_harmonic_linear_elasticity(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::ImposeImpenetrabilityElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::ImposeParallelOutflowElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::RefineableQDPVDElement< DIM, NNODE_1D >::fill_in_generic_contribution_to_residuals_pvd(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::SolidFiniteElement::fill_in_generic_jacobian_for_solid_ic(), oomph::AxisymmetricPoroelasticityEquations::fill_in_generic_residual_contribution(), oomph::PolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::PolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::SteadyAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::RefineableAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::AxisymmetricPVDEquationsWithPressure::fill_in_generic_residual_contribution_axisym_pvd_with_pressure(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_cons_axisym_adv_diff(), oomph::NavierStokesFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_fluid_traction(), oomph::FourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_fourier_decomposed_helmholtz(), oomph::FourierDecomposedHelmholtzDtNBoundaryElement< ELEMENT >::fill_in_generic_residual_contribution_fourier_decomposed_helmholtz_DtN_bc(), oomph::HelmholtzAbsorbingBCElement< ELEMENT >::fill_in_generic_residual_contribution_helmholtz_abc(), oomph::HelmholtzDtNBoundaryElement< ELEMENT >::fill_in_generic_residual_contribution_helmholtz_DtN_bc(), oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >::fill_in_generic_residual_contribution_interface(), oomph::FluidInterfaceElement::fill_in_generic_residual_contribution_interface(), oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_lin_axi_nst(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::RefineableLinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::RefineableLinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::PeriodicOrbitEquations::fill_in_generic_residual_contribution_orbit(), oomph::PMLFourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_pml_fourier_decomposed_helmholtz(), oomph::RefineableSphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::SphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::RefineableSphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::SphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::LineVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::AxisymmetricVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::SurfaceVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::SolidFiniteElement::fill_in_jacobian_for_newmark_accel(), oomph::ElementWithMovingNodes::fill_in_jacobian_from_geometric_data(), fill_in_jacobian_from_nodal_by_fd(), oomph::RefineableElement::fill_in_jacobian_from_nodal_by_fd(), oomph::SolidFiniteElement::fill_in_jacobian_from_solid_position_by_fd(), oomph::RefineableSolidElement::fill_in_jacobian_from_solid_position_by_fd(), oomph::RefineableNavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::NavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_by_fd(), oomph::AxisymmetricQAdvectionCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_by_fd(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_by_fd(), GlobalParameters::find_node_on_centerline(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::FSIImposeDisplacementByLagrangeMultiplierElement(), FSIRingProblem::FSIRingProblem(), oomph::PolarNavierStokesEquations::full_output(), oomph::SphericalNavierStokesEquations::full_output(), oomph::RefineableSolidElement::geom_data_pt(), oomph::LinearisedAxisymmetricNavierStokesEquations::get_base_flow_d_dudx_dX(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::get_body_force_nst(), oomph::FoepplvonKarmanEquations::get_bounded_volume(), get_centre_of_gravity_and_max_radius_in_terms_of_zeta(), oomph::PoissonEquations< DIM >::get_dflux_dnodal_u(), oomph::ElementWithMovingNodes::get_dnodal_coordinates_dgeom_dofs(), oomph::MultiPoissonEquations< DIM, NFIELDS >::get_dof_numbers_for_unknowns(), oomph::AxisymmetricLinearElasticityEquationsBase::get_dof_numbers_for_unknowns(), oomph::AxisymmetricQCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::AxisymmetricQTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::AxisymmetricTCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::AxisymmetricTTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::FSIHermiteBeamElement::get_dof_numbers_for_unknowns(), oomph::BiharmonicEquations< DIM >::get_dof_numbers_for_unknowns(), oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >::get_dof_numbers_for_unknowns(), oomph::LinearElasticityEquationsBase< DIM >::get_dof_numbers_for_unknowns(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ImposeImpenetrabilityElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ImposeParallelOutflowElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::TTaylorHoodElement< DIM >::get_dof_numbers_for_unknowns(), oomph::PMLHelmholtzEquations< DIM >::get_dof_numbers_for_unknowns(), oomph::PMLHelmholtzFluxElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::PMLTimeHarmonicLinearElasticityEquationsBase< DIM >::get_dof_numbers_for_unknowns(), oomph::FSIDiagHermiteShellElement::get_dof_numbers_for_unknowns(), oomph::ClampedHermiteShellBoundaryConditionElement::get_dof_numbers_for_unknowns(), oomph::PVDEquationsBase< DIM >::get_dof_numbers_for_unknowns(), oomph::PVDEquationsWithPressure< DIM >::get_dof_numbers_for_unknowns(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::BlockPrecQTaylorHoodSpaceTimeElement::get_dof_numbers_for_unknowns(), oomph::BlockPrecQTaylorHoodMixedOrderSpaceTimeElement::get_dof_numbers_for_unknowns(), oomph::QSphericalCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::QSphericalTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquationsBase::get_dof_numbers_for_unknowns(), oomph::TimeHarmonicLinearElasticityEquationsBase< DIM >::get_dof_numbers_for_unknowns(), oomph::AxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), get_dresidual_dnodal_coordinates(), oomph::RefineableElement::get_dresidual_dnodal_coordinates(), oomph::Z2ErrorEstimator::get_element_errors(), oomph::KirchhoffLoveShellEquations::get_energy(), oomph::KirchhoffLoveBeamEquations::get_energy(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::get_field(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::get_field(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::get_field(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::get_field(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::get_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::get_field(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::get_field(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::get_field(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::get_field(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::get_field(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::get_field(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::get_field(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::get_field(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::get_field(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::get_field(), oomph::PolarStreamfunctionEquations::get_flux(), oomph::AdvectionDiffusionEquations< DIM >::get_flux(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::get_flux(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::get_flux(), oomph::AxisymAdvectionDiffusionEquations::get_flux(), oomph::LinearWaveEquations< DIM >::get_flux(), oomph::PoissonEquations< DIM >::get_flux(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_flux(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_flux(), oomph::SphericalAdvectionDiffusionEquations::get_flux(), oomph::SteadyAxisymAdvectionDiffusionEquations::get_flux(), oomph::UnsteadyHeatEquations< DIM >::get_flux(), oomph::WomersleyEquations< DIM >::get_flux(), oomph::YoungLaplaceEquations::get_flux(), oomph::FourierDecomposedHelmholtzEquations::get_flux(), oomph::HelmholtzEquations< DIM >::get_flux(), oomph::PMLFourierDecomposedHelmholtzEquations::get_flux(), oomph::PMLHelmholtzEquations< DIM >::get_flux(), oomph::AxisymFoepplvonKarmanEquations::get_gradient_of_deflection(), oomph::DisplacementBasedFoepplvonKarmanEquations::get_gradient_of_deflection(), oomph::FoepplvonKarmanEquations::get_gradient_of_deflection(), oomph::DisplacementBasedFoepplvonKarmanEquations::get_gradient_of_field(), oomph::SurfaceContactElementBase< ELEMENT >::get_interpolated_lagrange_p(), oomph::SurfaceMeltElement< ELEMENT >::get_interpolated_lagrange_p(), oomph::SpectralPeriodicOrbitElement< NNODE_1D >::get_interpolated_values(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::get_interpolated_values(), oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableAxisymmetricQTaylorHoodElement::get_interpolated_values(), oomph::RefineableAxisymmetricQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::RefineableLinearElasticityEquations< DIM >::get_interpolated_values(), oomph::RefineableLinearisedQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableLinearisedQTaylorHoodElement::get_interpolated_values(), oomph::RefineableQTaylorHoodElement< DIM >::get_interpolated_values(), oomph::RefineableQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::RefineablePolarTaylorHoodElement::get_interpolated_values(), oomph::RefineablePolarCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableQSphericalTaylorHoodElement::get_interpolated_values(), oomph::RefineableQSphericalCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableTimeHarmonicLinearElasticityEquations< DIM >::get_interpolated_values(), oomph::RefineablePolarStreamfunctionEquations::get_interpolated_values(), oomph::RefineableAdvectionDiffusionEquations< DIM >::get_interpolated_values(), oomph::RefineableGeneralisedAdvectionDiffusionEquations< DIM >::get_interpolated_values(), oomph::RefineableAdvectionDiffusionReactionEquations< NREAGENT, DIM >::get_interpolated_values(), oomph::RefineableAxisymAdvectionDiffusionEquations::get_interpolated_values(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::get_interpolated_values(), oomph::RefineableHelmholtzEquations< DIM >::get_interpolated_values(), oomph::RefineableLinearWaveEquations< DIM >::get_interpolated_values(), oomph::RefineablePMLHelmholtzEquations< DIM >::get_interpolated_values(), oomph::RefineablePoissonEquations< DIM >::get_interpolated_values(), oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_interpolated_values(), oomph::RefineableSpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_interpolated_values(), oomph::RefineableSphericalAdvectionDiffusionEquations::get_interpolated_values(), oomph::RefineableUnsteadyHeatEquations< DIM >::get_interpolated_values(), oomph::RefineableYoungLaplaceEquations::get_interpolated_values(), oomph::DGFaceElement::get_interpolation_data(), ThreeDimBethertonProblem< ELEMENT >::get_lambda(), oomph::PolarCrouzeixRaviartElement::get_load_data(), oomph::PolarTaylorHoodElement::get_load_data(), get_node_number(), NodeReordering::get_node_reordering(), oomph::Mesh::get_node_reordering(), oomph::KirchhoffLoveBeamEquations::get_non_unit_tangent(), oomph::KirchhoffLoveShellEquations::get_normal(), oomph::KirchhoffLoveBeamEquations::get_normal(), oomph::AxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::SphericalNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::AxisymmetricPoroelasticityEquations::get_q_basis(), oomph::DarcyEquations< DIM >::get_q_basis(), oomph::PoroelasticityEquations< DIM >::get_q_basis(), oomph::AxisymmetricLinearElasticityEquations::get_strain(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::get_strain(), oomph::KirchhoffLoveShellEquations::get_strain_and_bend(), oomph::DisplacementBasedFoepplvonKarmanEquations::get_stress_and_strain_for_output(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::get_total_flux(), oomph::SphericalNavierStokesEquations::get_vorticity(), oomph::SpectralPeriodicOrbitElement< NNODE_1D >::get_Z2_flux(), oomph::RefineableSpaceTimeNavierStokesEquations< DIM >::get_Z2_flux(), oomph::RefineableSpaceTimeNavierStokesMixedOrderEquations< DIM >::get_Z2_flux(), oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_Z2_flux(), oomph::RefineableSpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_Z2_flux(), SCoupling< M, O >::getSCoupledElements(), oomph::PMLHelmholtzPowerElement< ELEMENT >::global_flux_contribution(), oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >::global_power_contribution(), oomph::HelmholtzBCElementBase< ELEMENT >::global_power_contribution(), oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >::global_power_contribution(), oomph::PMLHelmholtzPowerElement< ELEMENT >::global_power_contribution(), has_hanging_nodes(), RefineableQAxisymAdvectionDiffusionBoussinesqElement::identify_all_field_data_for_external_interaction(), identify_field_data_for_interactions(), oomph::RefineableElement::identify_field_data_for_interactions(), oomph::SolidFiniteElement::identify_geometric_data(), oomph::RefineableSolidElement::identify_geometric_data(), oomph::FSIAxisymmetricQTaylorHoodElement::identify_load_data(), oomph::AxisymmetricTCrouzeixRaviartElement::identify_load_data(), oomph::AxisymmetricTTaylorHoodElement::identify_load_data(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::identify_load_data(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::identify_load_data(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::identify_load_data(), oomph::RefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::identify_load_data(), oomph::RefineableQTaylorHoodElement< DIM >::identify_load_data(), oomph::RefineableQCrouzeixRaviartElement< DIM >::identify_load_data(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::identify_load_data(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::identify_load_data(), oomph::QSphericalCrouzeixRaviartElement::identify_load_data(), oomph::QSphericalTaylorHoodElement::identify_load_data(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::ImposeDisplacementByLagrangeMultiplierElement(), oomph::ImposeImpenetrabilityElement< ELEMENT >::ImposeImpenetrabilityElement(), oomph::ImposeParallelOutflowElement< ELEMENT >::ImposeParallelOutflowElement(), oomph::RefineablePolarTaylorHoodElement::insert_load_data(), oomph::RefineablePolarCrouzeixRaviartElement::insert_load_data(), oomph::SurfactantTransportInterfaceElement::integrate_c(), oomph::SolubleSurfactantTransportInterfaceElement::integrated_C(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::integrated_C_and_M(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::integrated_C_and_M(), oomph::SurfactantTransportInterfaceElement::interpolated_C(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::interpolated_c_adv_diff_react(), oomph::SolubleSurfactantTransportInterfaceElement::interpolated_C_bulk(), oomph::AxisymmetricLinearElasticityEquationsBase::interpolated_d2u_dt2_axisymmetric_linear_elasticity(), oomph::LinearWaveEquations< DIM >::interpolated_d2u_dt2_lin_wave(), oomph::AxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst(), oomph::AxisymmetricPoroelasticityEquations::interpolated_div_du_dt(), oomph::AxisymmetricPoroelasticityEquations::interpolated_div_q(), oomph::DarcyEquations< DIM >::interpolated_div_q(), oomph::PoroelasticityEquations< DIM >::interpolated_div_q(), oomph::AxisymmetricPoroelasticityEquations::interpolated_div_u(), oomph::AxisymmetricPoroelasticityEquations::interpolated_du_dt(), oomph::AxisymmetricLinearElasticityEquationsBase::interpolated_du_dt_axisymmetric_linear_elasticity(), oomph::LinearWaveEquations< DIM >::interpolated_du_dt_lin_wave(), oomph::SpaceTimeNavierStokesEquations< DIM >::interpolated_du_dt_nst(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::interpolated_du_dt_nst(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), oomph::UnsteadyHeatEquations< DIM >::interpolated_du_dt_ust_heat(), oomph::AxisymmetricNavierStokesEquations::interpolated_duds_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_duds_axi_nst(), oomph::AxisymmetricNavierStokesEquations::interpolated_dudt_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_dudt_axi_nst(), oomph::PolarStreamfunctionEquations::interpolated_dudx(), oomph::BiharmonicEquations< DIM >::interpolated_dudx(), oomph::AxisymmetricNavierStokesEquations::interpolated_dudx_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_dudx_axi_nst(), oomph::NavierStokesEquations< DIM >::interpolated_dudx_nst(), oomph::PolarNavierStokesEquations::interpolated_dudx_pnst(), oomph::SphericalNavierStokesEquations::interpolated_dudx_spherical_nst(), interpolated_dxdt(), oomph::SolidFiniteElement::interpolated_dxids(), oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >::interpolated_H(), oomph::SolubleSurfactantTransportInterfaceElement::interpolated_M(), oomph::SurfaceMeltElement< ELEMENT >::interpolated_melt_rate(), oomph::LinearisedAxisymmetricNavierStokesEquations::interpolated_nodal_position_perturbation_lin_axi_nst(), oomph::PolarStreamfunctionEquations::interpolated_streamfunction(), oomph::AxisymFoepplvonKarmanEquations::interpolated_stress(), oomph::FoepplvonKarmanEquations::interpolated_stress(), oomph::YoungLaplaceEquations::interpolated_u(), oomph::LinearisedAxisymmetricFluidInterfaceElement::interpolated_u(), oomph::FluidInterfaceElement::interpolated_u(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::interpolated_u(), oomph::AxisymmetricPoroelasticityEquations::interpolated_u(), oomph::PoroelasticityEquations< DIM >::interpolated_u(), oomph::DGFaceElement::interpolated_u(), oomph::AdvectionDiffusionEquations< DIM >::interpolated_u_adv_diff(), oomph::SteadyAxisymAdvectionDiffusionEquations::interpolated_u_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::interpolated_u_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::interpolated_u_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_u_axi_nst(), oomph::AxisymmetricLinearElasticityEquationsBase::interpolated_u_axisymmetric_linear_elasticity(), oomph::BiharmonicEquations< DIM >::interpolated_u_biharmonic(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::interpolated_u_cons_adv_diff(), oomph::FourierDecomposedHelmholtzEquations::interpolated_u_fourier_decomposed_helmholtz(), oomph::AxisymFoepplvonKarmanEquations::interpolated_u_fvk(), oomph::HelmholtzEquations< DIM >::interpolated_u_helmholtz(), oomph::LinearisedAxisymmetricNavierStokesEquations::interpolated_u_lin_axi_nst(), oomph::LinearWaveEquations< DIM >::interpolated_u_lin_wave(), oomph::LinearSurfaceContactElement< ELEMENT >::interpolated_u_linear_elasticity(), oomph::HomogenisedLinearElasticityEquationsBase::interpolated_u_linear_elasticity(), oomph::LinearElasticityEquationsBase< DIM >::interpolated_u_linear_elasticity(), oomph::LinearisedAxisymmetricNavierStokesEquations::interpolated_u_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::interpolated_u_linearised_nst(), oomph::MultiPoissonEquations< DIM, NFIELDS >::interpolated_u_multi_poisson(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::interpolated_u_nst(), oomph::NavierStokesEquations< DIM >::interpolated_u_nst(), oomph::SpaceTimeNavierStokesEquations< DIM >::interpolated_u_nst(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::interpolated_u_nst(), oomph::PMLFourierDecomposedHelmholtzEquations::interpolated_u_pml_fourier_decomposed_helmholtz(), oomph::PMLHelmholtzEquations< DIM >::interpolated_u_pml_helmholtz(), oomph::PolarNavierStokesEquations::interpolated_u_pnst(), oomph::PoissonEquations< DIM >::interpolated_u_poisson(), oomph::SphericalAdvectionDiffusionEquations::interpolated_u_spherical_adv_diff(), oomph::SphericalNavierStokesEquations::interpolated_u_spherical_nst(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquationsBase::interpolated_u_time_harmonic_fourier_decomposed_linear_elasticity(), oomph::PMLTimeHarmonicLinearElasticityEquationsBase< DIM >::interpolated_u_time_harmonic_linear_elasticity(), oomph::TimeHarmonicLinearElasticityEquationsBase< DIM >::interpolated_u_time_harmonic_linear_elasticity(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_u_ust_heat(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::interpolated_u_ust_heat(), oomph::UnsteadyHeatEquations< DIM >::interpolated_u_ust_heat(), oomph::WomersleyEquations< DIM >::interpolated_u_womersley(), oomph::PolarStreamfunctionEquations::interpolated_velocity(), oomph::PolarStreamfunctionEquations::interpolated_vorticity(), oomph::AxisymFoepplvonKarmanEquations::interpolated_w_fvk(), oomph::DisplacementBasedFoepplvonKarmanEquations::interpolated_w_fvk(), oomph::FoepplvonKarmanEquations::interpolated_w_fvk(), interpolated_x(), oomph::SolidFiniteElement::interpolated_xi(), interpolated_zeta(), J_eulerian(), oomph::FaceElement::J_eulerian(), J_eulerian_at_knot(), oomph::FaceElement::J_eulerian_at_knot(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::jacobian_and_shape_of_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::jacobian_and_shape_of_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::jacobian_and_shape_of_field(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::jacobian_and_shape_of_field(), oomph::SolubleSurfactantTransportInterfaceElement::l2_norm_of_height(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::lagrangian_eulerian_translation_factor(), TwoDDGProblem< ELEMENT >::limit(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::LinearisedAxisymPoroelasticBJS_FSIElement(), oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >::LinearisedFSIAxisymmetricNStNoSlipBCElementElement(), oomph::KirchhoffLoveShellEquations::load_rate_of_work(), local_to_eulerian_mapping_diagonal(), oomph::RefineableElement::local_to_eulerian_mapping_diagonal(), oomph::SolidFiniteElement::local_to_lagrangian_mapping_diagonal(), oomph::RefineableSolidElement::local_to_lagrangian_mapping_diagonal(), locate_zeta(), oomph::MeshHelper::merge_spine_meshes(), oomph::NetFluxControlElement< ELEMENT >::NetFluxControlElement(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::ngeom_data(), oomph::SolidFiniteElement::ngeom_data(), oomph::RefineableSolidElement::ngeom_data(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::ninterpolating_node(), oomph::RefineableAxisymmetricQTaylorHoodElement::ninterpolating_node(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::ninterpolating_node(), oomph::RefineableLinearisedQTaylorHoodElement::ninterpolating_node(), oomph::RefineableQSphericalTaylorHoodElement::ninterpolating_node(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::ninterpolating_node(), oomph::RefineableElement::ninterpolating_node(), oomph::RefineableQTaylorHoodElement< DIM >::ninterpolating_node(), oomph::RefineablePolarTaylorHoodElement::ninterpolating_node(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::ninterpolating_node(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::ninterpolating_node(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::ninterpolating_node(), oomph::NodeElementSolidOnlyMortaringElement::node_and_vector_to_data_pt(), node_update(), oomph::Mesh::node_update(), oomph::PRefineableElement::nodes_built(), oomph::DGFaceElement::numerical_flux_at_knot(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::nvalue_of_field(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::nvalue_of_field(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nvalue_of_field(), oomph::ProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nvalue_of_field(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::nvalue_of_field(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::nvalue_of_field(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::nvalue_of_field(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::nvalue_of_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nvalue_of_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nvalue_of_field(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nvalue_of_field(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nvalue_of_field(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::nvalue_of_field(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::nvalue_of_field(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::nvalue_of_field(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::nvalue_of_field(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::nvalue_of_field(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nvalue_of_field(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::nvalue_of_field(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::nvalue_of_field(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::nvalue_of_field(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nvalue_of_field(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nvalue_of_field(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::nvalue_of_field(), OneDimMesh< ELEMENT >::OneDimMesh(), oomph::LinearElasticitySmoothMesh< LINEAR_ELASTICITY_ELEMENT >::operator()(), oomph::PoissonSmoothMesh< POISSON_ELEMENT >::operator()(), oomph::PeriodicOrbitEquations::orbit_output(), oomph::FaceElement::outer_unit_normal(), oomph::DummyFaceElement< ELEMENT >::output(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::output(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::output(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::output(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::output(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::output(), oomph::HermiteBeamElement::output(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::TriangleMesh< ELEMENT >::output_boundary_coordinates(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::output_integration_points(), output_paraview(), oomph::LinearisedAxisymmetricNavierStokesEquations::output_veloc(), oomph::AxisymmetricNavierStokesEquations::output_veloc(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_veloc(), oomph::LinearisedNavierStokesEquations::output_veloc(), oomph::PolarNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_veloc(), oomph::TreeBasedRefineableMeshBase::p_adapt_mesh(), oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::p_refine(), oomph::Tree::p_refine_if_required(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::pin_all(), oomph::AxisymmetricTTaylorHoodElement::pin_all_nodal_pressure_dofs(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::pin_all_nodal_pressure_dofs(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::NavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::pin_all_non_pressure_dofs(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableLinearisedQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineablePolarTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQSphericalTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::pin_elemental_redundant_nodal_solid_pressures(), oomph::LinearisedQCrouzeixRaviartElement::pin_real_or_imag(), oomph::MGSolver< DIM >::plot(), oomph::PMLQuadMeshBase< ELEMENT >::pml_locate_zeta(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::position(), oomph::NodeElementSolidOnlyMortaringElement::position_in_element(), oomph::SolidFiniteElement::position_local_eqn(), oomph::StorableShapeElementBase::pre_compute_d2shape_eulerian_at_knots(), oomph::StorableShapeSolidElementBase::pre_compute_d2shape_lagrangian_at_knots(), oomph::StorableShapeElementBase::pre_compute_d2shape_local_at_knots(), oomph::StorableShapeElementBase::pre_compute_dshape_eulerian_at_knots(), oomph::StorableShapeSolidElementBase::pre_compute_dshape_lagrangian_at_knots(), oomph::StorableShapeElementBase::pre_compute_dshape_local_at_knots(), oomph::InterpolateFromIntegralPointsBase::pre_compute_ipt_to_node_mapping(), oomph::StorableShapeElementBase::pre_compute_shape_at_knots(), PressureWaveFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::PressureWaveFSIProblem(), print_connectivity_matrix(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::project(), oomph::MacroElementNodeUpdateElement< ELEMENT >::rebuild_from_sons(), oomph::TreeBasedRefineableMeshBase::refine_as_in_reference_mesh(), oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::RefineableNavierStokesFluxControlElement< ELEMENT >::refineable_fill_in_generic_residual_contribution_fluid_traction(), RefineableUnsteadyHeatProblem< ELEMENT >::RefineableUnsteadyHeatProblem(), oomph::DGFaceElement::report_info(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::residual_for_projection(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::residual_for_projection(), oomph::ProjectableElement< ELEMENT >::residual_for_projection(), oomph::FaceElement::resize_nodes(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::scalar_value_paraview(), self_test(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::set_boundary_conditions(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::set_boundary_shape_geom_object_pt(), HeatedCircularPenetratorElement::set_contact_element_mesh_pt(), CircularPenetratorElement::set_contact_element_mesh_pt(), oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::set_external_data_from_navier_stokes_outflow_mesh(), AdvectionProblem::set_initial_conditions(), EulerProblem::set_initial_conditions(), oomph::SurfaceMeltElement< ELEMENT >::set_lagrange_multiplier_pressure_to_zero(), oomph::MacroElementNodeUpdateElement< ELEMENT >::set_node_update_info(), oomph::SurfaceContactElementBase< ELEMENT >::set_penetrator_pt(), oomph::MGSolver< DIM >::set_self_test_vector(), oomph::PeriodicOrbitEquations::set_timestepper_weights(), oomph::VolumeConstraintBoundingElement::set_volume_constraint_element(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicElementBase::setup_algebraic_node_update(), oomph::UnstructuredTwoDMeshGeometryBase::setup_boundary_coordinates(), oomph::FluidInterfaceAdditionalValues< SolubleSurfactantTransportInterfaceElement >::setup_equation_indices(), oomph::FluidInterfaceAdditionalValues< SurfactantTransportInterfaceElement >::setup_equation_indices(), oomph::FourierDecomposedHelmholtzDtNMesh< ELEMENT >::setup_gamma(), oomph::HelmholtzDtNMesh< ELEMENT >::setup_gamma(), oomph::MGSolver< DIM >::setup_interpolation_matrices_unstructured(), oomph::HelmholtzMGPreconditioner< DIM >::setup_interpolation_matrices_unstructured(), oomph::Z2ErrorEstimator::setup_patches(), SolarRadiationProblem< ELEMENT >::setup_shielding_nodes(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::shape_and_test(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::shape_and_test(), oomph::AdvectionDiffusionFluxElement< ELEMENT >::shape_and_test(), oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >::shape_and_test(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::shape_and_test(), oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >::shape_and_test(), oomph::FourierDecomposedHelmholtzFluxElement< ELEMENT >::shape_and_test(), oomph::HelmholtzFluxElement< ELEMENT >::shape_and_test(), oomph::LinearWaveFluxElement< ELEMENT >::shape_and_test(), oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test(), oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test(), oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test(), oomph::PMLFourierDecomposedHelmholtzFluxElement< ELEMENT >::shape_and_test(), oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >::shape_and_test(), oomph::PMLHelmholtzFluxElement< ELEMENT >::shape_and_test(), oomph::PoissonFluxElement< ELEMENT >::shape_and_test(), oomph::SphericalAdvectionDiffusionFluxElement< ELEMENT >::shape_and_test(), oomph::SteadyAxisymAdvectionDiffusionFluxElement< ELEMENT >::shape_and_test(), oomph::UnsteadyHeatFluxElement< ELEMENT >::shape_and_test(), oomph::PolarStreamfunctionTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::NavierStokesFluxControlElement< ELEMENT >::shape_and_test_at_knot(), oomph::AdvectionDiffusionFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >::shape_and_test_at_knot(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::shape_and_test_at_knot(), oomph::FourierDecomposedHelmholtzFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::HelmholtzFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test_at_knot(), oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test_at_knot(), oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test_at_knot(), oomph::NavierStokesTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::PMLFourierDecomposedHelmholtzFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::PMLHelmholtzFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::PoissonFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::PolarNavierStokesTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::PolarStressIntegralElement< ELEMENT >::shape_and_test_at_knot(), oomph::SphericalAdvectionDiffusionFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::SteadyAxisymAdvectionDiffusionFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::shape_and_test_at_knot(), oomph::SurfactantTransportInterfaceElement::sigma(), SimpleRefineableRectangularQuadMesh< ELEMENT >::SimpleRefineableRectangularQuadMesh(), oomph::TetMeshBase::snap_nodes_onto_geometric_objects(), oomph::TetMeshBase::snap_to_quadratic_surface(), oomph::SolidQHermiteElement< DIM >::SolidQHermiteElement(), RefineableRotatingCylinderProblem< ELEMENT >::solve(), oomph::SpineElement< ELEMENT >::spine_local_eqn(), oomph::PerturbedSpineElement< ELEMENT >::spine_local_eqn(), oomph::SpineUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >::SpineUpdateFluidInterfaceElement(), oomph::TetMeshBase::split_elements_in_corners(), oomph::Tree::split_if_required(), oomph::MyTaylorHoodElement< DIM >::square_of_l2_norm(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::square_of_l2_norm_of_error(), oomph::LinearisedAxisymmetricNavierStokesEquations::strain_rate(), oomph::AxisymmetricNavierStokesEquations::strain_rate(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::strain_rate(), oomph::PolarNavierStokesEquations::strain_rate(), oomph::SphericalNavierStokesEquations::strain_rate(), oomph::LinearisedNavierStokesEquations::strain_rate(), oomph::PolarNavierStokesEquations::strain_rate_by_r(), oomph::SurfaceContactElementBase< ELEMENT >::SurfaceContactElementBase(), oomph::SurfaceMeltElement< ELEMENT >::SurfaceMeltElement(), ThreeDimBethertonProblem< ELEMENT >::ThreeDimBethertonProblem(), oomph::AxisymmetricPoroelasticityEquations::transform_basis(), oomph::PoroelasticityEquations< DIM >::transform_basis(), TriangleFaceTestProblem< ELEMENT >::TriangleFaceTestProblem(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), oomph::RefineableElement::unbuild(), oomph::AxisymmetricTTaylorHoodElement::unpin_all_nodal_pressure_dofs(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::unpin_all_nodal_pressure_dofs(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableAxisymmetricQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineableLinearisedQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableQTaylorHoodElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineablePolarTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineableQSphericalTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::unpin_elemental_solid_pressure_dofs(), oomph::QPVDElementWithContinuousPressure< DIM >::unpin_elemental_solid_pressure_dofs(), oomph::TPVDElementWithContinuousPressure< DIM >::unpin_elemental_solid_pressure_dofs(), oomph::LinearisedQCrouzeixRaviartElement::unpin_real_or_imag(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::unpin_surface(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::UnsteadyHeatFluxPseudoMeltElement(), oomph::SolarRadiationBase::update_limiting_angles(), oomph::AxisymFoepplvonKarmanEquations::use_linear_bending_model(), oomph::DisplacementBasedFoepplvonKarmanEquations::use_linear_bending_model(), oomph::FoepplvonKarmanEquations::use_linear_bending_model(), and oomph::WomersleyMesh< WOMERSLEY_ELEMENT >::WomersleyMesh().

◆ nnode_1d()

virtual unsigned oomph::FiniteElement::nnode_1d ( ) const
inlinevirtual

Return the number of nodes along one edge of the element Default is to return zero — must be overloaded by geometric elements

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, ModalPRefineableQPoissonElement< DIM >, TwoNodeGeometricElement, FixSpineHeightElement, and FixSpineHeightElement.

2219  {
2220  return 0;
2221  }

Referenced by AxialSolidQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::AxialSolidQuarterTubeMesh(), AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::AxialSpineQuarterTubeMesh(), oomph::GmshTetMesh< ELEMENT >::build_from_scaffold(), oomph::BackwardStepQuadMesh< ELEMENT >::build_mesh(), oomph::ExtrudedCubeMeshFromQuadMesh< ELEMENT >::build_mesh(), oomph::ChannelWithLeafletMesh< ELEMENT >::ChannelWithLeafletMesh(), oomph::CollapsibleChannelMesh< ELEMENT >::CollapsibleChannelMesh(), oomph::EighthSphereMesh< ELEMENT >::EighthSphereMesh(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_lin_axi_nst(), oomph::FSIDrivenCavityMesh< ELEMENT >::FSIDrivenCavityMesh(), oomph::BlockPrecQTaylorHoodSpaceTimeElement::get_dof_numbers_for_unknowns(), oomph::BlockPrecQTaylorHoodMixedOrderSpaceTimeElement::get_dof_numbers_for_unknowns(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::get_interpolating_node_at_local_coordinate(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::get_interpolating_node_at_local_coordinate(), oomph::BrethertonSpineMesh< ELEMENT, INTERFACE_ELEMENT >::nfree_surface_spines(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::ninterpolating_node_1d(), oomph::RefineableAxisymmetricQTaylorHoodElement::ninterpolating_node_1d(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::ninterpolating_node_1d(), oomph::RefineableLinearisedQTaylorHoodElement::ninterpolating_node_1d(), oomph::RefineableQSphericalTaylorHoodElement::ninterpolating_node_1d(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::ninterpolating_node_1d(), oomph::RefineableElement::ninterpolating_node_1d(), oomph::RefineableQTaylorHoodElement< DIM >::ninterpolating_node_1d(), oomph::RefineablePolarTaylorHoodElement::ninterpolating_node_1d(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::ninterpolating_node_1d(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::ninterpolating_node_1d(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::ninterpolating_node_1d(), oomph::QElementBase::nnode_on_face(), oomph::MGSolver< DIM >::plot(), oomph::PMLQuadMeshBase< ELEMENT >::pml_locate_zeta(), oomph::PMLCornerQuadMesh< ELEMENT >::PMLCornerQuadMesh(), oomph::PMLQuadMesh< ELEMENT >::PMLQuadMesh(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::setup_algebraic_node_update(), oomph::BrickMeshBase::setup_boundary_element_info(), oomph::LineMeshBase::setup_boundary_element_info(), oomph::QuadMeshBase::setup_boundary_element_info(), oomph::HermiteQuadMesh< ELEMENT >::setup_boundary_element_info(), oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::SimpleRectangularTriMesh< ELEMENT >::SimpleRectangularTriMesh(), oomph::TetMeshBase::snap_nodes_onto_geometric_objects(), oomph::TetMeshBase::split_elements_in_corners(), and TwoDDGMesh< ELEMENT >::TwoDDGMesh().

◆ nnode_on_face()

virtual unsigned oomph::FiniteElement::nnode_on_face ( ) const
inlinevirtual

Reimplemented in oomph::QElementBase.

3388  {
3389  std::string err = "Not implemented for this element.";
3390  throw OomphLibError(
3392  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

Referenced by build_face_element(), and face_node_number_error_check().

◆ nodal_dimension()

unsigned oomph::FiniteElement::nodal_dimension ( ) const
inline

Return the required Eulerian dimension of the nodes in this element.

2485  {
2486  return Nodal_dimension;
2487  }

References Nodal_dimension.

Referenced by assemble_eulerian_base_vectors(), oomph::RefineableElement::assemble_eulerian_base_vectors(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian(), oomph::RefineableSolidElement::assign_solid_hanging_local_eqn_numbers(), oomph::SolidFiniteElement::assign_solid_local_eqn_numbers(), oomph::SolarRadiationBase::atmospheric_radiation(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::AxisymmetricLinearElasticityTractionElement(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::AxisymmetricNavierStokesTractionElement(), oomph::MyProblem::build(), build_face_element(), oomph::Mesh::check_inverted_elements(), oomph::FaceElement::check_J_eulerian_at_knots(), oomph::AxisymmetricNavierStokesEquations::compute_physical_size(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::compute_physical_size(), oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >::construct_boundary_node(), oomph::SolidFiniteElement::construct_boundary_node(), oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >::construct_node(), oomph::SolidFiniteElement::construct_node(), oomph::FaceElement::continuous_tangent_and_outer_unit_normal(), oomph::FSI_functions::doc_fsi(), oomph::FaceElementAsGeomObject< ELEMENT >::FaceElementAsGeomObject(), oomph::ClampedSlidingHermiteBeamBoundaryConditionElement::fill_in_contribution_to_residuals(), oomph::SolidFiniteElement::fill_in_generic_jacobian_for_solid_ic(), oomph::FluidInterfaceElement::fill_in_generic_residual_contribution_interface(), oomph::PointFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::SolidFiniteElement::fill_in_jacobian_for_newmark_accel(), oomph::SolidFiniteElement::fill_in_jacobian_from_solid_position_by_fd(), oomph::RefineableSolidElement::fill_in_jacobian_from_solid_position_by_fd(), oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement(), oomph::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement(), oomph::FSIAxisymmetricLinearElasticityTractionElement< ELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::FSIAxisymmetricLinearElasticityTractionElement(), oomph::FSIHermiteBeamElement::get_dof_numbers_for_unknowns(), oomph::FSIDiagHermiteShellElement::get_dof_numbers_for_unknowns(), oomph::ClampedHermiteShellBoundaryConditionElement::get_dof_numbers_for_unknowns(), oomph::PVDEquationsBase< DIM >::get_dof_numbers_for_unknowns(), oomph::PVDEquationsWithPressure< DIM >::get_dof_numbers_for_unknowns(), oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::get_pressure(), oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::get_traction(), oomph::SurfactantTransportInterfaceElement::integrate_c(), integrate_fct(), interpolated_dxdt(), oomph::LinearSurfaceContactElement< ELEMENT >::interpolated_u_linear_elasticity(), interpolated_x(), J_eulerian(), oomph::FaceElement::J_eulerian(), J_eulerian_at_knot(), oomph::FaceElement::J_eulerian_at_knot(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::lagrangian_eulerian_translation_factor(), oomph::LinearElasticityTractionElement< ELEMENT >::LinearElasticityTractionElement(), oomph::LinearSurfaceContactElement< ELEMENT >::LinearSurfaceContactElement(), oomph::RefineableElement::local_to_eulerian_mapping_diagonal(), oomph::Mesh::nodal_dimension(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::nscalar_paraview(), oomph::DGFaceElement::numerical_flux_at_knot(), oomph::FaceElement::outer_unit_normal(), oomph::NonlinearSurfaceContactElement< ELEMENT >::output(), oomph::LinearSurfaceContactElement< ELEMENT >::output(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::output(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::output(), oomph::FSIAxisymmetricLinearElasticityTractionElement< ELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::output(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::output(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::output(), oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::output(), oomph::FluidInterfaceElement::output(), oomph::SurfactantTransportInterfaceElement::output(), oomph::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::output(), oomph::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::output(), oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::output(), oomph::SolidTractionElement< ELEMENT >::output(), oomph::SolarRadiationBase::output_atmospheric_radiation(), oomph::SolarRadiationBase::output_diffuse_radiation_cone(), oomph::SolarRadiationBase::output_diffuse_radiation_cone_max_angle(), oomph::SolarRadiationBase::output_diffuse_radiation_cone_min_angle(), oomph::SolarRadiationBase::output_limiting_angles(), oomph::SurfaceMeltElement< ELEMENT >::output_melt(), oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::output_stefan_boltzmann_radiation(), oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >::PMLTimeHarmonicLinearElasticityTractionElement(), oomph::SolidFiniteElement::position_local_eqn(), oomph::StorableShapeElementBase::pre_compute_d2shape_eulerian_at_knots(), oomph::StorableShapeElementBase::pre_compute_dshape_eulerian_at_knots(), oomph::DGFaceElement::report_info(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::scalar_name_paraview(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::scalar_value_paraview(), oomph::FaceElement::set_tangent_direction(), oomph::TimeHarmonicFourierDecomposedLinearElasticityTractionElement< ELEMENT >::TimeHarmonicFourierDecomposedLinearElasticityTractionElement(), oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >::TimeHarmonicLinearElasticityTractionElement(), oomph::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement(), oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement(), and oomph::SolarRadiationBase::update_limiting_angles().

◆ nodal_local_eqn()

int oomph::FiniteElement::nodal_local_eqn ( const unsigned n,
const unsigned i 
) const
inline

Return the local equation number corresponding to the i-th value at the n-th local node.

1433  {
1434 #ifdef RANGE_CHECKING
1435  if (n >= Nnode)
1436  {
1437  std::ostringstream error_message;
1438  error_message << "Range Error: Node number " << n
1439  << " is not in the range (0," << Nnode - 1 << ")";
1440  throw OomphLibError(error_message.str(),
1443  }
1444  else
1445  {
1446  unsigned n_value = node_pt(n)->nvalue();
1447  if (i >= n_value)
1448  {
1449  std::ostringstream error_message;
1450  error_message << "Range Error: value " << i << " at node " << n
1451  << " is not in the range (0," << n_value - 1 << ")";
1452  throw OomphLibError(error_message.str(),
1455  }
1456  }
1457 #endif
1458 #ifdef PARANOID
1459  // Check that the equations have been allocated
1460  if (Nodal_local_eqn == 0)
1461  {
1462  throw OomphLibError(
1463  "Nodal local equation numbers have not been allocated",
1466  }
1467 #endif
1468  return Nodal_local_eqn[n][i];
1469  }

References i, n, Nnode, Nodal_local_eqn, node_pt(), oomph::Data::nvalue(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::SolubleSurfactantTransportInterfaceElement::add_additional_residual_contributions_interface(), oomph::SurfactantTransportInterfaceElement::add_additional_residual_contributions_interface(), oomph::DGFaceElement::add_flux_contributions(), oomph::RefineableElement::assign_hanging_local_eqn_numbers(), oomph::AxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::SpinePointMarangoniSurfactantFluidInterfaceBoundingElement< ELEMENT >::fill_in_contribution_to_jacobian(), oomph::AxisymFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::ClampedSlidingHermiteBeamBoundaryConditionElement::fill_in_contribution_to_residuals(), oomph::DisplacementBasedFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::FoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::ClampedHermiteShellBoundaryConditionElement::fill_in_contribution_to_residuals(), oomph::AxisymmetricLinearElasticityEquations::fill_in_generic_contribution_to_residuals_axisymmetric_linear_elasticity(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::fill_in_generic_contribution_to_residuals_fourier_decomp_time_harmonic_linear_elasticity(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::ImposeImpenetrabilityElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::ImposeParallelOutflowElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::AxisymmetricPoroelasticityEquations::fill_in_generic_residual_contribution(), oomph::PolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::PolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::SteadyAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::RefineableAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::BiharmonicFluidBoundaryElement::fill_in_generic_residual_contribution_biharmonic_boundary(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_cons_axisym_adv_diff(), oomph::FourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_fourier_decomposed_helmholtz(), oomph::FourierDecomposedHelmholtzDtNBoundaryElement< ELEMENT >::fill_in_generic_residual_contribution_fourier_decomposed_helmholtz_DtN_bc(), oomph::HelmholtzAbsorbingBCElement< ELEMENT >::fill_in_generic_residual_contribution_helmholtz_abc(), oomph::HelmholtzDtNBoundaryElement< ELEMENT >::fill_in_generic_residual_contribution_helmholtz_DtN_bc(), oomph::FluidInterfaceElement::fill_in_generic_residual_contribution_interface(), oomph::PointFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_lin_axi_nst(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::RefineableLinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::RefineableLinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::PeriodicOrbitEquations::fill_in_generic_residual_contribution_orbit(), oomph::PMLFourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_pml_fourier_decomposed_helmholtz(), oomph::RefineableSphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::SphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::RefineableSphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::SphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), fill_in_jacobian_from_nodal_by_fd(), oomph::RefineableElement::fill_in_jacobian_from_nodal_by_fd(), oomph::RefineableNavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::NavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_by_fd(), oomph::AxisymmetricQAdvectionCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_by_fd(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_by_fd(), oomph::MultiPoissonEquations< DIM, NFIELDS >::get_dof_numbers_for_unknowns(), oomph::AxisymmetricLinearElasticityEquationsBase::get_dof_numbers_for_unknowns(), oomph::AxisymmetricQCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::AxisymmetricQTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::AxisymmetricTCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::AxisymmetricTTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::BiharmonicEquations< DIM >::get_dof_numbers_for_unknowns(), oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >::get_dof_numbers_for_unknowns(), oomph::LinearElasticityEquationsBase< DIM >::get_dof_numbers_for_unknowns(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ImposeImpenetrabilityElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ImposeParallelOutflowElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::TTaylorHoodElement< DIM >::get_dof_numbers_for_unknowns(), oomph::PMLHelmholtzEquations< DIM >::get_dof_numbers_for_unknowns(), oomph::PMLHelmholtzFluxElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::PMLTimeHarmonicLinearElasticityEquationsBase< DIM >::get_dof_numbers_for_unknowns(), oomph::ClampedHermiteShellBoundaryConditionElement::get_dof_numbers_for_unknowns(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::BlockPrecQTaylorHoodSpaceTimeElement::get_dof_numbers_for_unknowns(), oomph::BlockPrecQTaylorHoodMixedOrderSpaceTimeElement::get_dof_numbers_for_unknowns(), oomph::QSphericalCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::QSphericalTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquationsBase::get_dof_numbers_for_unknowns(), oomph::TimeHarmonicLinearElasticityEquationsBase< DIM >::get_dof_numbers_for_unknowns(), oomph::AxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::AxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::SphericalNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::ElasticPointFluidInterfaceBoundingElement< ELEMENT >::kinematic_local_eqn(), oomph::ElasticLineFluidInterfaceBoundingElement< ELEMENT >::kinematic_local_eqn(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::local_equation(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::local_equation(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::local_equation(), oomph::ProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::local_equation(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::local_equation(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::local_equation(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::local_equation(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::local_equation(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::local_equation(), oomph::GeneralisedNewtonianProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::local_equation(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::local_equation(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::local_equation(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::local_equation(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::local_equation(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::local_equation(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::local_equation(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::local_equation(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::local_equation(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::local_equation(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::local_equation(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::local_equation(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::local_equation(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::local_equation(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::local_equation(), oomph::PolarTaylorHoodElement::p_local_eqn(), oomph::AxisymmetricQTaylorHoodElement::p_local_eqn(), oomph::AxisymmetricTTaylorHoodElement::p_local_eqn(), oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement::p_local_eqn(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::p_local_eqn(), oomph::GeneralisedNewtonianQTaylorHoodElement< DIM >::p_local_eqn(), oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >::p_local_eqn(), oomph::QTaylorHoodElement< DIM >::p_local_eqn(), oomph::TTaylorHoodElement< DIM >::p_local_eqn(), oomph::QTaylorHoodSpaceTimeElement< DIM >::p_local_eqn(), oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >::p_local_eqn(), oomph::QSphericalTaylorHoodElement::p_local_eqn(), oomph::LinearisedAxisymmetricQTaylorHoodElement::p_local_eqn(), oomph::LinearisedQTaylorHoodElement::p_local_eqn(), oomph::VolumeConstraintBoundingElement::ptraded_local_eqn(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::q_edge_local_eqn(), oomph::TRaviartThomasDarcyElement< ORDER >::q_edge_local_eqn(), oomph::TPoroelasticityElement< ORDER >::q_edge_local_eqn(), oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::RefineableNavierStokesFluxControlElement< ELEMENT >::refineable_fill_in_generic_residual_contribution_fluid_traction(), oomph::PolarStreamfunctionTractionElement< ELEMENT >::s_local_eqn(), oomph::PeriodicOrbitEquations::set_timestepper_weights(), oomph::FourierDecomposedHelmholtzDtNMesh< ELEMENT >::setup_gamma(), oomph::HelmholtzDtNMesh< ELEMENT >::setup_gamma(), oomph::QPVDElementWithContinuousPressure< DIM >::solid_p_local_eqn(), oomph::TPVDElementWithContinuousPressure< DIM >::solid_p_local_eqn(), oomph::YoungLaplaceContactAngleElement< ELEMENT >::u_local_eqn(), oomph::YoungLaplaceEquations::u_local_eqn(), oomph::NavierStokesFluxControlElement< ELEMENT >::u_local_eqn(), oomph::NavierStokesTractionElement< ELEMENT >::u_local_eqn(), oomph::PolarNavierStokesTractionElement< ELEMENT >::u_local_eqn(), oomph::PolarStressIntegralElement< ELEMENT >::u_local_eqn(), oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >::u_local_eqn(), oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >::u_local_eqn(), and oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::u_local_eqn().

◆ nodal_position() [1/2]

double oomph::FiniteElement::nodal_position ( const unsigned n,
const unsigned i 
) const
inline

Return the i-th coordinate at local node n. If the node is hanging, the appropriate interpolation is handled by the position function in the Node class.

2318  {
2319  return node_pt(n)->position(i);
2320  }
void position(Vector< double > &pos) const
Definition: nodes.cc:2499

References i, n, node_pt(), and oomph::Node::position().

Referenced by oomph::HelmholtzBCElementBase< ELEMENT >::compute_contribution_to_fourier_components(), oomph::EulerEquations< DIM >::compute_error(), oomph::ScalarAdvectionEquations< DIM >::compute_error(), oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::compute_stabilisation_parameter(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::contribution_to_enclosed_volume(), oomph::LineVolumeConstraintBoundingElement::contribution_to_enclosed_volume(), oomph::AxisymmetricVolumeConstraintBoundingElement::contribution_to_enclosed_volume(), oomph::StefanBoltzmannRadiationBase::contribution_to_stefan_boltzmann_radiation(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::contribution_to_total_porous_flux(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::contribution_to_total_porous_flux(), oomph::AxisymmetricVolumeConstraintBoundingElement::contribution_to_volume_flux(), oomph::LinearisedAxisymmetricNavierStokesEquations::dkin_energy_dt(), oomph::DisplacementBasedFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::RefineableYoungLaplaceEquations::fill_in_contribution_to_residuals(), oomph::YoungLaplaceEquations::fill_in_contribution_to_residuals(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::AxisymmetricPoroelasticityEquations::fill_in_generic_residual_contribution(), oomph::PolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::RefineableAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::RefineableAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_cons_axisym_adv_diff(), oomph::NavierStokesFluxControlElement< ELEMENT >::fill_in_generic_residual_contribution_fluid_traction(), oomph::FluidInterfaceElement::fill_in_generic_residual_contribution_interface(), oomph::LineFluidInterfaceBoundingElement::fill_in_generic_residual_contribution_interface_boundary(), oomph::RefineableLinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::RefineableLinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::RefineableSphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::RefineableSphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::LineVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::AxisymmetricVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::SurfaceVolumeConstraintBoundingElement::fill_in_generic_residual_contribution_volume_constraint(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::SphericalAdvectionDiffusionEquations::get_flux(), oomph::AxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::SphericalNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::get_strain(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::get_total_flux(), oomph::SurfactantTransportInterfaceElement::integrate_c(), oomph::PolarStreamfunctionEquations::interpolated_vorticity(), oomph::SolubleSurfactantTransportInterfaceElement::l2_norm_of_height(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::lagrangian_eulerian_translation_factor(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::output(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::output(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::output(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::output(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::output(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::LinearisedAxisymmetricNavierStokesEquations::output_veloc(), oomph::AxisymmetricNavierStokesEquations::output_veloc(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_veloc(), oomph::LinearisedNavierStokesEquations::output_veloc(), oomph::PolarNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_veloc(), oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::scalar_value_paraview(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::square_of_l2_norm_of_error(), oomph::LinearisedAxisymmetricNavierStokesEquations::strain_rate(), oomph::AxisymmetricNavierStokesEquations::strain_rate(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::strain_rate(), oomph::PolarNavierStokesEquations::strain_rate(), oomph::SphericalNavierStokesEquations::strain_rate(), oomph::PolarNavierStokesEquations::strain_rate_by_r(), oomph::PolarStreamfunctionTractionElement< ELEMENT >::x(), oomph::PolarNavierStokesTractionElement< ELEMENT >::x(), and oomph::PolarStressIntegralElement< ELEMENT >::x().

◆ nodal_position() [2/2]

double oomph::FiniteElement::nodal_position ( const unsigned t,
const unsigned n,
const unsigned i 
) const
inline

Return the i-th coordinate at local node n, at time level t (t=0: present; t>0: previous time level) Returns suitably interpolated version for hanging nodes.

2328  {
2329  return node_pt(n)->position(t, i);
2330  }

References i, n, node_pt(), oomph::Node::position(), and plotPSD::t.

◆ nodal_position_gen() [1/2]

double oomph::FiniteElement::nodal_position_gen ( const unsigned n,
const unsigned k,
const unsigned i 
) const
inline

Return the value of the k-th type of the i-th positional variable at the local node n.

2352  {
2353  return node_pt(n)->position_gen(k, i);
2354  }
double position_gen(const unsigned &k, const unsigned &i) const
Definition: nodes.cc:2592

References i, k, n, node_pt(), and oomph::Node::position_gen().

Referenced by oomph::RefineableElement::assemble_eulerian_base_vectors(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian2(), oomph::FaceElement::check_J_eulerian_at_knots(), oomph::AxisymmetricPVDEquations::compute_physical_size(), oomph::AxisymmetricPVDEquationsWithPressure::compute_physical_size(), oomph::FaceElement::continuous_tangent_and_outer_unit_normal(), oomph::FSIHermiteBeamElement::dposition_dlagrangian_at_local_coordinate(), oomph::FSIDiagHermiteShellElement::dposition_dlagrangian_at_local_coordinate(), oomph::AxisymmetricPVDEquations::fill_in_contribution_to_residuals_axisym_pvd(), oomph::RefineableQDPVDElement< DIM, NNODE_1D >::fill_in_generic_contribution_to_residuals_pvd(), oomph::AxisymmetricPVDEquationsWithPressure::fill_in_generic_residual_contribution_axisym_pvd_with_pressure(), oomph::KirchhoffLoveShellEquations::get_energy(), interpolated_x(), oomph::FaceElement::J_eulerian(), oomph::FaceElement::J_eulerian_at_knot(), oomph::KirchhoffLoveShellEquations::load_rate_of_work(), oomph::RefineableElement::local_to_eulerian_mapping_diagonal(), oomph::FaceElement::outer_unit_normal(), zeta_nodal(), and oomph::ProjectableElement< ELEMENT >::zeta_nodal().

◆ nodal_position_gen() [2/2]

double oomph::FiniteElement::nodal_position_gen ( const unsigned t,
const unsigned n,
const unsigned k,
const unsigned i 
) const
inline

Return the generalised nodal position (type k, i-th variable) at previous timesteps at local node n

2362  {
2363  return node_pt(n)->position_gen(t, k, i);
2364  }

References i, k, n, node_pt(), oomph::Node::position_gen(), and plotPSD::t.

◆ nodal_value() [1/2]

double oomph::FiniteElement::nodal_value ( const unsigned n,
const unsigned i 
) const
inline

Return the i-th value stored at local node n. Produces suitably interpolated values for hanging nodes.

2594  {
2595  return node_pt(n)->value(i);
2596  }
double value(const unsigned &i) const
Definition: nodes.cc:2408

References i, n, node_pt(), and oomph::Node::value().

Referenced by oomph::SolubleSurfactantTransportInterfaceElement::add_additional_residual_contributions_interface(), oomph::SurfactantTransportInterfaceElement::add_additional_residual_contributions_interface(), oomph::HelmholtzBCElementBase< ELEMENT >::compute_contribution_to_fourier_components(), oomph::EulerEquations< DIM >::compute_error(), oomph::ScalarAdvectionEquations< DIM >::compute_error(), oomph::AxisymmetricPoroelasticityEquations::d2u_dt2(), oomph::PoroelasticityEquations< DIM >::d2u_dt2(), oomph::AxisymmetricLinearElasticityEquationsBase::d2u_dt2_axisymmetric_linear_elasticity(), oomph::LinearWaveEquations< DIM >::d2u_dt2_lin_wave(), oomph::LinearElasticityEquationsBase< DIM >::d2u_dt2_linear_elasticity(), oomph::SphericalNavierStokesEquations::d_kin_energy_dt(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::dc_dt_adv_diff_react(), oomph::SurfactantTransportInterfaceElement::dcdt_surface(), oomph::LinearisedAxisymmetricNavierStokesEquations::dkin_energy_dt(), oomph::LinearisedAxisymmetricNavierStokesEquations::dnodal_position_perturbation_dt_lin_axi_nst(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::dposition_dt(), oomph::AxisymmetricPoroelasticityEquations::du_dt(), oomph::PoroelasticityEquations< DIM >::du_dt(), oomph::AdvectionDiffusionEquations< DIM >::du_dt_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::du_dt_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::du_dt_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::du_dt_axi_nst(), oomph::AxisymmetricLinearElasticityEquationsBase::du_dt_axisymmetric_linear_elasticity(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::du_dt_cons_adv_diff(), oomph::LinearisedAxisymmetricNavierStokesEquations::du_dt_lin_axi_nst(), oomph::LinearWaveEquations< DIM >::du_dt_lin_wave(), oomph::LinearisedAxisymmetricNavierStokesEquations::du_dt_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::du_dt_linearised_nst(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::du_dt_nst(), oomph::NavierStokesEquations< DIM >::du_dt_nst(), oomph::SphericalAdvectionDiffusionEquations::du_dt_spherical_adv_diff(), oomph::SphericalNavierStokesEquations::du_dt_spherical_nst(), oomph::UnsteadyHeatEquations< DIM >::du_dt_ust_heat(), oomph::WomersleyEquations< DIM >::du_dt_womersley(), oomph::AxisymFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::DisplacementBasedFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::FoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::ImposeImpenetrabilityElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::ImposeParallelOutflowElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::PolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::PolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::RefineableAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::RefineableAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_cons_axisym_adv_diff(), oomph::HelmholtzAbsorbingBCElement< ELEMENT >::fill_in_generic_residual_contribution_helmholtz_abc(), oomph::RefineableLinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::RefineableLinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::RefineableSphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::RefineableSphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::SphericalNavierStokesEquations::full_output(), oomph::RefineableAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::get_field(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::get_field(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::get_field(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::get_field(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::get_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::get_field(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::get_field(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::get_field(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::get_field(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::get_field(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::get_field(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::get_field(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::get_field(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::get_field(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::get_field(), oomph::PolarStreamfunctionEquations::get_flux(), oomph::AdvectionDiffusionEquations< DIM >::get_flux(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::get_flux(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::get_flux(), oomph::AxisymAdvectionDiffusionEquations::get_flux(), oomph::LinearWaveEquations< DIM >::get_flux(), oomph::PoissonEquations< DIM >::get_flux(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_flux(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_flux(), oomph::SphericalAdvectionDiffusionEquations::get_flux(), oomph::SteadyAxisymAdvectionDiffusionEquations::get_flux(), oomph::UnsteadyHeatEquations< DIM >::get_flux(), oomph::WomersleyEquations< DIM >::get_flux(), oomph::FourierDecomposedHelmholtzEquations::get_flux(), oomph::HelmholtzEquations< DIM >::get_flux(), oomph::PMLFourierDecomposedHelmholtzEquations::get_flux(), oomph::PMLHelmholtzEquations< DIM >::get_flux(), oomph::AxisymFoepplvonKarmanEquations::get_gradient_of_deflection(), oomph::DisplacementBasedFoepplvonKarmanEquations::get_gradient_of_deflection(), oomph::FoepplvonKarmanEquations::get_gradient_of_deflection(), oomph::DisplacementBasedFoepplvonKarmanEquations::get_gradient_of_field(), oomph::SpectralPeriodicOrbitElement< NNODE_1D >::get_interpolated_values(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::get_interpolated_values(), oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableAxisymmetricQTaylorHoodElement::get_interpolated_values(), oomph::RefineableAxisymmetricQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::RefineableLinearElasticityEquations< DIM >::get_interpolated_values(), oomph::RefineableLinearisedQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableLinearisedQTaylorHoodElement::get_interpolated_values(), oomph::RefineableQTaylorHoodElement< DIM >::get_interpolated_values(), oomph::RefineableQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::RefineablePolarTaylorHoodElement::get_interpolated_values(), oomph::RefineablePolarCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableQSphericalTaylorHoodElement::get_interpolated_values(), oomph::RefineableQSphericalCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableTimeHarmonicLinearElasticityEquations< DIM >::get_interpolated_values(), oomph::RefineablePolarStreamfunctionEquations::get_interpolated_values(), oomph::RefineableAdvectionDiffusionEquations< DIM >::get_interpolated_values(), oomph::RefineableGeneralisedAdvectionDiffusionEquations< DIM >::get_interpolated_values(), oomph::RefineableAdvectionDiffusionReactionEquations< NREAGENT, DIM >::get_interpolated_values(), oomph::RefineableAxisymAdvectionDiffusionEquations::get_interpolated_values(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::get_interpolated_values(), oomph::RefineableHelmholtzEquations< DIM >::get_interpolated_values(), oomph::RefineableLinearWaveEquations< DIM >::get_interpolated_values(), oomph::RefineablePMLHelmholtzEquations< DIM >::get_interpolated_values(), oomph::RefineablePoissonEquations< DIM >::get_interpolated_values(), oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_interpolated_values(), oomph::RefineableSpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_interpolated_values(), oomph::RefineableSphericalAdvectionDiffusionEquations::get_interpolated_values(), oomph::RefineableUnsteadyHeatEquations< DIM >::get_interpolated_values(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::get_strain(), oomph::DisplacementBasedFoepplvonKarmanEquations::get_stress_and_strain_for_output(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::get_total_flux(), oomph::SphericalNavierStokesEquations::get_vorticity(), oomph::SpectralPeriodicOrbitElement< NNODE_1D >::get_Z2_flux(), oomph::RefineableSpaceTimeNavierStokesEquations< DIM >::get_Z2_flux(), oomph::RefineableSpaceTimeNavierStokesMixedOrderEquations< DIM >::get_Z2_flux(), oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_Z2_flux(), oomph::RefineableSpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_Z2_flux(), oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >::global_power_contribution(), oomph::HelmholtzBCElementBase< ELEMENT >::global_power_contribution(), oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >::global_power_contribution(), oomph::PMLHelmholtzPowerElement< ELEMENT >::global_power_contribution(), oomph::SurfactantTransportInterfaceElement::integrate_c(), oomph::SolubleSurfactantTransportInterfaceElement::integrated_C(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::integrated_C_and_M(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::integrated_C_and_M(), oomph::SurfactantTransportInterfaceElement::interpolated_C(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::interpolated_c_adv_diff_react(), oomph::SolubleSurfactantTransportInterfaceElement::interpolated_C_bulk(), oomph::AxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_d_dudx_dX_axi_nst(), oomph::AxisymmetricPoroelasticityEquations::interpolated_div_u(), oomph::SpaceTimeNavierStokesEquations< DIM >::interpolated_du_dt_nst(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::interpolated_du_dt_nst(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), oomph::AxisymmetricNavierStokesEquations::interpolated_duds_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_duds_axi_nst(), oomph::PolarStreamfunctionEquations::interpolated_dudx(), oomph::AxisymmetricNavierStokesEquations::interpolated_dudx_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_dudx_axi_nst(), oomph::NavierStokesEquations< DIM >::interpolated_dudx_nst(), oomph::SphericalNavierStokesEquations::interpolated_dudx_spherical_nst(), oomph::SolubleSurfactantTransportInterfaceElement::interpolated_M(), oomph::LinearisedAxisymmetricNavierStokesEquations::interpolated_nodal_position_perturbation_lin_axi_nst(), oomph::PolarStreamfunctionEquations::interpolated_streamfunction(), oomph::AxisymFoepplvonKarmanEquations::interpolated_stress(), oomph::AxisymmetricPoroelasticityEquations::interpolated_u(), oomph::PoroelasticityEquations< DIM >::interpolated_u(), oomph::AdvectionDiffusionEquations< DIM >::interpolated_u_adv_diff(), oomph::SteadyAxisymAdvectionDiffusionEquations::interpolated_u_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::interpolated_u_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::interpolated_u_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_u_axi_nst(), oomph::AxisymmetricLinearElasticityEquationsBase::interpolated_u_axisymmetric_linear_elasticity(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::interpolated_u_cons_adv_diff(), oomph::FourierDecomposedHelmholtzEquations::interpolated_u_fourier_decomposed_helmholtz(), oomph::AxisymFoepplvonKarmanEquations::interpolated_u_fvk(), oomph::HelmholtzEquations< DIM >::interpolated_u_helmholtz(), oomph::LinearisedAxisymmetricNavierStokesEquations::interpolated_u_lin_axi_nst(), oomph::LinearWaveEquations< DIM >::interpolated_u_lin_wave(), oomph::LinearSurfaceContactElement< ELEMENT >::interpolated_u_linear_elasticity(), oomph::HomogenisedLinearElasticityEquationsBase::interpolated_u_linear_elasticity(), oomph::LinearElasticityEquationsBase< DIM >::interpolated_u_linear_elasticity(), oomph::LinearisedAxisymmetricNavierStokesEquations::interpolated_u_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::interpolated_u_linearised_nst(), oomph::MultiPoissonEquations< DIM, NFIELDS >::interpolated_u_multi_poisson(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::interpolated_u_nst(), oomph::NavierStokesEquations< DIM >::interpolated_u_nst(), oomph::SpaceTimeNavierStokesEquations< DIM >::interpolated_u_nst(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::interpolated_u_nst(), oomph::PMLFourierDecomposedHelmholtzEquations::interpolated_u_pml_fourier_decomposed_helmholtz(), oomph::PMLHelmholtzEquations< DIM >::interpolated_u_pml_helmholtz(), oomph::PoissonEquations< DIM >::interpolated_u_poisson(), oomph::SphericalAdvectionDiffusionEquations::interpolated_u_spherical_adv_diff(), oomph::SphericalNavierStokesEquations::interpolated_u_spherical_nst(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquationsBase::interpolated_u_time_harmonic_fourier_decomposed_linear_elasticity(), oomph::PMLTimeHarmonicLinearElasticityEquationsBase< DIM >::interpolated_u_time_harmonic_linear_elasticity(), oomph::TimeHarmonicLinearElasticityEquationsBase< DIM >::interpolated_u_time_harmonic_linear_elasticity(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_u_ust_heat(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::interpolated_u_ust_heat(), oomph::UnsteadyHeatEquations< DIM >::interpolated_u_ust_heat(), oomph::WomersleyEquations< DIM >::interpolated_u_womersley(), oomph::PolarStreamfunctionEquations::interpolated_velocity(), oomph::AxisymFoepplvonKarmanEquations::interpolated_w_fvk(), oomph::DisplacementBasedFoepplvonKarmanEquations::interpolated_w_fvk(), oomph::FoepplvonKarmanEquations::interpolated_w_fvk(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::lagrangian_eulerian_translation_factor(), oomph::DGFaceElement::numerical_flux_at_knot(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::output(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::output_integration_points(), oomph::LinearisedAxisymmetricNavierStokesEquations::output_veloc(), oomph::AxisymmetricNavierStokesEquations::output_veloc(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_veloc(), oomph::LinearisedNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_veloc(), oomph::AxisymmetricQTaylorHoodElement::p_axi_nst(), oomph::AxisymmetricTTaylorHoodElement::p_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement::p_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::p_axi_nst(), oomph::LinearisedAxisymmetricQTaylorHoodElement::p_lin_axi_nst(), oomph::LinearisedAxisymmetricQTaylorHoodElement::p_linearised_axi_nst(), oomph::LinearisedQTaylorHoodElement::p_linearised_nst(), oomph::GeneralisedNewtonianQTaylorHoodElement< DIM >::p_nst(), oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >::p_nst(), oomph::QTaylorHoodElement< DIM >::p_nst(), oomph::TTaylorHoodElement< DIM >::p_nst(), oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nst(), oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >::p_nst(), oomph::PolarTaylorHoodElement::p_pnst(), oomph::QSphericalTaylorHoodElement::p_spherical_nst(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::position(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::q_edge(), oomph::TRaviartThomasDarcyElement< ORDER >::q_edge(), oomph::TPoroelasticityElement< ORDER >::q_edge(), oomph::PolarStreamfunctionTractionElement< ELEMENT >::s(), oomph::SurfactantTransportInterfaceElement::sigma(), oomph::QPVDElementWithContinuousPressure< DIM >::solid_p(), oomph::TPVDElementWithContinuousPressure< DIM >::solid_p(), oomph::LinearisedAxisymmetricNavierStokesEquations::strain_rate(), oomph::AxisymmetricNavierStokesEquations::strain_rate(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::strain_rate(), oomph::PolarNavierStokesEquations::strain_rate(), oomph::SphericalNavierStokesEquations::strain_rate(), oomph::PolarNavierStokesEquations::strain_rate_by_r(), oomph::PolarNavierStokesTractionElement< ELEMENT >::u(), oomph::PolarStressIntegralElement< ELEMENT >::u(), oomph::YoungLaplaceEquations::u(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::u_nst(), oomph::NavierStokesEquations< DIM >::u_nst(), oomph::SpaceTimeNavierStokesEquations< DIM >::u_nst(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::u_nst(), oomph::PolarCrouzeixRaviartElement::u_pnst(), oomph::PolarTaylorHoodElement::u_pnst(), and oomph::SphericalNavierStokesEquations::u_spherical_nst().

◆ nodal_value() [2/2]

double oomph::FiniteElement::nodal_value ( const unsigned t,
const unsigned n,
const unsigned i 
) const
inline

Return the i-th value stored at local node n, at time level t (t=0: present; t>0 previous timesteps). Produces suitably interpolated values for hanging nodes.

2604  {
2605  return node_pt(n)->value(t, i);
2606  }

References i, n, node_pt(), plotPSD::t, and oomph::Node::value().

◆ node_pt() [1/2]

Node*& oomph::FiniteElement::node_pt ( const unsigned n)
inline

Return a pointer to the local node n.

2176  {
2177 #ifdef RANGE_CHECKING
2178  if (n >= Nnode)
2179  {
2180  std::ostringstream error_message;
2181  error_message << "Range Error: " << n << " is not in the range (0,"
2182  << Nnode - 1 << ")";
2183  throw OomphLibError(error_message.str(),
2186  }
2187 #endif
2188  return Node_pt[n];
2189  }

References n, Nnode, Node_pt, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::TreeBasedRefineableMeshBase::adapt_mesh(), oomph::SurfactantTransportInterfaceElement::add_additional_residual_contributions_interface(), oomph::FaceElement::add_additional_values(), oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::add_element_contribution_to_aux_integral(), oomph::StefanBoltzmannRadiationBase::add_stefan_boltzmann_illumination_info(), oomph::AdvectionDiffusionFluxElement< ELEMENT >::AdvectionDiffusionFluxElement(), oomph::ElementWithMovingNodes::assemble_set_of_all_geometric_data(), oomph::TetMeshBase::assess_mesh_quality(), oomph::ElementWithExternalElement::assign_external_interaction_data_local_eqn_numbers(), oomph::RefineableElement::assign_hanging_local_eqn_numbers(), oomph::GeneralisedElement::assign_local_eqn_numbers(), assign_nodal_local_eqn_numbers(), oomph::RefineableSolidElement::assign_solid_hanging_local_eqn_numbers(), oomph::SolidFiniteElement::assign_solid_local_eqn_numbers(), oomph::Multi_domain_functions::aux_setup_multi_domain_interaction(), AxialSolidQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::AxialSolidQuarterTubeMesh(), AxialSpineQuarterTubeMesh< ELEMENT, INTERFACE_ELEMENT >::AxialSpineQuarterTubeMesh(), oomph::BackupMeshForProjection< GEOMETRIC_ELEMENT >::BackupMeshForProjection(), oomph::BiharmonicFluidBoundaryElement::BiharmonicFluidBoundaryElement(), oomph::LinearElasticityEquationsBase< DIM >::body_force(), oomph::TimeHarmonicLinearElasticityEquationsBase< DIM >::body_force(), oomph::PVDEquationsBase< DIM >::body_force(), oomph::RefineableQElement< 3 >::build(), oomph::RefineableSolidQElement< 3 >::build(), oomph::RefineableQElement< 1 >::build(), oomph::RefineableQElement< 2 >::build(), oomph::RefineableSolidQElement< 2 >::build(), build_face_element(), oomph::QHermiteElement< DIM >::build_face_element(), oomph::QSpectralElement< 1, NNODE_1D >::build_face_element(), oomph::QSpectralElement< 2, NNODE_1D >::build_face_element(), oomph::QSpectralElement< 3, NNODE_1D >::build_face_element(), oomph::TBubbleEnrichedElement< DIM, NNODE_1D >::build_face_element(), oomph::TElement< 1, NNODE_1D >::build_face_element(), oomph::TElement< 2, NNODE_1D >::build_face_element(), oomph::TElement< 3, NNODE_1D >::build_face_element(), oomph::GmshTetMesh< ELEMENT >::build_from_scaffold(), oomph::TetgenMesh< ELEMENT >::build_from_scaffold(), oomph::TriangleMesh< ELEMENT >::build_from_scaffold(), oomph::QuadFromTriangleMesh< ELEMENT >::build_from_scaffold(), RefineableUnsteadyHeatProblem< ELEMENT >::build_mesh(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::build_mesh(), oomph::BackwardStepQuadMesh< ELEMENT >::build_mesh(), oomph::ExtrudedCubeMeshFromQuadMesh< ELEMENT >::build_mesh(), oomph::BrickFromTetMesh< ELEMENT >::build_mesh(), oomph::TwoLayerSpineMesh< BASE_ELEMENT >::build_two_layer_mesh(), CapProblem< ELEMENT >::CapProblem(), oomph::ChannelWithLeafletMesh< ELEMENT >::ChannelWithLeafletMesh(), check_jacobian(), oomph::TriangleScaffoldMesh::check_mesh_integrity(), oomph::CollapsibleChannelMesh< ELEMENT >::CollapsibleChannelMesh(), ContactProblem< ELEMENT >::complete_problem_setup(), oomph::FourierDecomposedHelmholtzDtNBoundaryElement< ELEMENT >::complete_setup_of_dependencies(), oomph::HelmholtzDtNBoundaryElement< ELEMENT >::complete_setup_of_dependencies(), oomph::RefineableTriangleMesh< ELEMENT >::compute_area_target(), oomph::RefineableTetgenMesh< ELEMENT >::compute_volume_target(), oomph::RefineableTetMeshBase::compute_volume_target(), oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >::construct_boundary_node(), construct_boundary_node(), oomph::SolidFiniteElement::construct_boundary_node(), oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >::construct_node(), construct_node(), oomph::SolidFiniteElement::construct_node(), oomph::StefanBoltzmannRadiationBase::contribution_to_stefan_boltzmann_radiation(), oomph::AxisymmetricVolumeConstraintBoundingElement::contribution_to_volume_flux(), oomph::Mesh::convert_to_boundary_node(), oomph::LinearisedQCrouzeixRaviartElement::copy_efunction_to_normalisation(), ContactProblem< ELEMENT >::create_displ_imposition_elements(), RefineableRotatingCylinderProblem< ELEMENT >::create_free_surface_elements(), UnstructuredTorusProblem< ELEMENT >::create_lagrange_multiplier_elements(), FSICollapsibleChannelProblem< ELEMENT >::create_lagrange_multiplier_elements(), PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_lagrange_multiplier_elements(), FSIChannelWithLeafletProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_lagrange_multiplier_elements(), PrescribedBoundaryDisplacementProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredImmersedEllipseProblem< ELEMENT >::create_lagrange_multiplier_elements(), UnstructuredFluidProblem< ELEMENT >::create_lagrange_multiplier_elements(), CollapsibleChannelProblem< ELEMENT >::create_lagrange_multiplier_elements(), StefanBoltzmannProblem< ELEMENT >::create_melt_elements(), TiltedCavityProblem< ELEMENT >::create_parall_outflow_lagrange_elements(), oomph::AxisymmetricPoroelasticityEquations::d2u_dt2(), oomph::PoroelasticityEquations< DIM >::d2u_dt2(), oomph::AxisymmetricLinearElasticityEquationsBase::d2u_dt2_axisymmetric_linear_elasticity(), oomph::LinearWaveEquations< DIM >::d2u_dt2_lin_wave(), oomph::LinearElasticityEquationsBase< DIM >::d2u_dt2_linear_elasticity(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::data_values_of_field(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::data_values_of_field(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::data_values_of_field(), oomph::ProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::data_values_of_field(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::data_values_of_field(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::data_values_of_field(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::data_values_of_field(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::data_values_of_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::data_values_of_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::data_values_of_field(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::data_values_of_field(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::data_values_of_field(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::data_values_of_field(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::data_values_of_field(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::data_values_of_field(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::data_values_of_field(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::data_values_of_field(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::data_values_of_field(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::data_values_of_field(), oomph::ProjectablePVDElementWithContinuousPressure< PVD_ELEMENT >::data_values_of_field(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::data_values_of_field(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::data_values_of_field(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::data_values_of_field(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::data_values_of_field(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::data_values_of_field(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::dc_dt_adv_diff_react(), oomph::SurfactantTransportInterfaceElement::dcdt_surface(), oomph::RefineableElement::deactivate_element(), oomph::TPVDElement< DIM, NNODE_1D >::describe_local_dofs(), describe_nodal_local_dofs(), oomph::SolidFiniteElement::describe_solid_local_dofs(), oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >::dH_dt(), oomph::AdvectionDiffusionEquations< DIM >::dinterpolated_u_adv_diff_ddata(), oomph::RefineableAdvectionDiffusionEquations< DIM >::dinterpolated_u_adv_diff_ddata(), oomph::RefineableAxisymAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::RefineableSphericalAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::SphericalAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::SteadyAxisymAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::AxisymAdvectionDiffusionEquations::dinterpolated_u_axi_adv_diff_ddata(), oomph::AxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::RefineableAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableGeneralisedNewtonianNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::NavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::SpaceTimeNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableSpaceTimeNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableSpaceTimeNavierStokesMixedOrderEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::SurfaceMeltElement< ELEMENT >::disable_melting(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::disable_melting(), oomph::DiskTetMeshFacetedSurface::DiskTetMeshFacetedSurface(), oomph::DisplacementControlElement::DisplacementControlElement(), dnodal_position_dt(), dnodal_position_gen_dt(), oomph::LinearisedAxisymmetricNavierStokesEquations::dnodal_position_perturbation_dt_lin_axi_nst(), oomph::Mesh::doc_boundary_coordinates(), oomph::Z2ErrorEstimator::doc_flux(), StefanBoltzmannProblem< ELEMENT >::doc_solution(), PoissonProblem< ELEMENT >::doc_solution(), FallingBlockProblem< ELEMENT >::doc_solution(), RisingBubbleProblem< ELEMENT >::doc_solution(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::dposition_dt(), oomph::AxisymmetricPoroelasticityEquations::dq_edge_dt(), oomph::PoroelasticityEquations< DIM >::dq_edge_dt(), oomph::AxisymmetricPoroelasticityEquations::du_dt(), oomph::PoroelasticityEquations< DIM >::du_dt(), oomph::AdvectionDiffusionEquations< DIM >::du_dt_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::du_dt_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::du_dt_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::du_dt_axi_nst(), oomph::AxisymmetricLinearElasticityEquationsBase::du_dt_axisymmetric_linear_elasticity(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::du_dt_cons_adv_diff(), oomph::LinearisedAxisymmetricNavierStokesEquations::du_dt_lin_axi_nst(), oomph::LinearWaveEquations< DIM >::du_dt_lin_wave(), oomph::LinearisedAxisymmetricNavierStokesEquations::du_dt_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::du_dt_linearised_nst(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::du_dt_nst(), oomph::NavierStokesEquations< DIM >::du_dt_nst(), oomph::PolarNavierStokesEquations::du_dt_pnst(), oomph::SphericalAdvectionDiffusionEquations::du_dt_spherical_adv_diff(), oomph::SphericalNavierStokesEquations::du_dt_spherical_nst(), oomph::UnsteadyHeatEquations< DIM >::du_dt_ust_heat(), oomph::WomersleyEquations< DIM >::du_dt_womersley(), oomph::DummyErrorEstimator::DummyErrorEstimator(), oomph::LinearisedAxisymmetricFluidInterfaceElement::dXhat_dt(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::edge_flux_node_pt(), oomph::TRaviartThomasDarcyElement< ORDER >::edge_flux_node_pt(), oomph::EighthSphereMesh< ELEMENT >::EighthSphereMesh(), ElasticRefineableTwoLayerMesh< ELEMENT >::ElasticRefineableTwoLayerMesh(), ElasticTwoLayerMesh< ELEMENT >::ElasticTwoLayerMesh(), oomph::PerturbedSpineMesh::element_node_pt(), oomph::SolidMesh::element_node_pt(), oomph::SpineMesh::element_node_pt(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::extrapolated_strain_rate(), oomph::SpinePointMarangoniSurfactantFluidInterfaceBoundingElement< ELEMENT >::fill_in_contribution_to_jacobian(), oomph::ClampedSlidingHermiteBeamBoundaryConditionElement::fill_in_contribution_to_residuals(), oomph::ClampedHermiteShellBoundaryConditionElement::fill_in_contribution_to_residuals(), oomph::RefineableYoungLaplaceEquations::fill_in_contribution_to_residuals(), oomph::AxisymmetricLinearElasticityEquations::fill_in_generic_contribution_to_residuals_axisymmetric_linear_elasticity(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::ImposeImpenetrabilityElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::ImposeParallelOutflowElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::RefineableQDPVDElement< DIM, NNODE_1D >::fill_in_generic_contribution_to_residuals_pvd(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::AxisymmetricPoroelasticityEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarNavierStokesEquations::fill_in_generic_residual_contribution(), oomph::RefineablePolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::AxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::RefineableAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::BiharmonicFluidBoundaryElement::fill_in_generic_residual_contribution_biharmonic_boundary(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_cons_axisym_adv_diff(), oomph::FourierDecomposedHelmholtzDtNBoundaryElement< ELEMENT >::fill_in_generic_residual_contribution_fourier_decomposed_helmholtz_DtN_bc(), oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >::fill_in_generic_residual_contribution_interface(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_lin_axi_nst(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::RefineableLinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::RefineableLinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::RefineableSphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::SphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::RefineableSphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::SphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::SolidFiniteElement::fill_in_jacobian_for_newmark_accel(), oomph::ElementWithMovingNodes::fill_in_jacobian_from_geometric_data(), fill_in_jacobian_from_nodal_by_fd(), oomph::RefineableElement::fill_in_jacobian_from_nodal_by_fd(), oomph::SolidFiniteElement::fill_in_jacobian_from_solid_position_by_fd(), oomph::RefineableSolidElement::fill_in_jacobian_from_solid_position_by_fd(), oomph::RefineableNavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_by_fd(), oomph::AxisymmetricQAdvectionCrouzeixRaviartElement::fill_in_off_diagonal_jacobian_blocks_by_fd(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_by_fd(), GlobalParameters::find_node_on_centerline(), oomph::LinearisedAxisymmetricQTaylorHoodElement::fix_cosine_component_of_pressure(), oomph::LinearisedAxisymmetricQTaylorHoodElement::fix_pressure(), oomph::AxisymmetricQTaylorHoodElement::fix_pressure(), oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement::fix_pressure(), oomph::LinearisedQTaylorHoodElement::fix_pressure(), oomph::AxisymmetricTTaylorHoodElement::fix_pressure(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::fix_pressure(), oomph::GeneralisedNewtonianQTaylorHoodElement< DIM >::fix_pressure(), oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >::fix_pressure(), oomph::QTaylorHoodElement< DIM >::fix_pressure(), oomph::TTaylorHoodElement< DIM >::fix_pressure(), oomph::PolarTaylorHoodElement::fix_pressure(), oomph::QTaylorHoodSpaceTimeElement< DIM >::fix_pressure(), oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >::fix_pressure(), oomph::QSphericalTaylorHoodElement::fix_pressure(), oomph::LinearisedAxisymmetricQTaylorHoodElement::fix_sine_component_of_pressure(), oomph::QPVDElementWithContinuousPressure< DIM >::fix_solid_pressure(), oomph::TPVDElementWithContinuousPressure< DIM >::fix_solid_pressure(), oomph::FSIDrivenCavityMesh< ELEMENT >::FSIDrivenCavityMesh(), FSIRingProblem::FSIRingProblem(), oomph::FullCircleMesh< ELEMENT >::FullCircleMesh(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::geom_data_pt(), oomph::SolidFiniteElement::geom_data_pt(), oomph::RefineableSolidElement::geom_data_pt(), oomph::GeompackQuadScaffoldMesh::GeompackQuadScaffoldMesh(), oomph::ElementWithMovingNodes::get_dnodal_coordinates_dgeom_dofs(), oomph::AxisymmetricQCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::AxisymmetricQTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::AxisymmetricTCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::BiharmonicEquations< DIM >::get_dof_numbers_for_unknowns(), oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ImposeImpenetrabilityElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ImposeParallelOutflowElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::ClampedHermiteShellBoundaryConditionElement::get_dof_numbers_for_unknowns(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::get_dof_numbers_for_unknowns(), oomph::BlockPrecQTaylorHoodSpaceTimeElement::get_dof_numbers_for_unknowns(), oomph::BlockPrecQTaylorHoodMixedOrderSpaceTimeElement::get_dof_numbers_for_unknowns(), oomph::QSphericalCrouzeixRaviartElement::get_dof_numbers_for_unknowns(), oomph::QSphericalTaylorHoodElement::get_dof_numbers_for_unknowns(), oomph::AxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), get_dresidual_dnodal_coordinates(), oomph::RefineableElement::get_dresidual_dnodal_coordinates(), oomph::Z2ErrorEstimator::get_element_errors(), oomph::DummyErrorEstimator::get_element_errors(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::SurfaceContactElementBase< ELEMENT >::get_interpolated_lagrange_p(), oomph::SurfaceMeltElement< ELEMENT >::get_interpolated_lagrange_p(), oomph::RefineablePolarTaylorHoodElement::get_interpolated_values(), oomph::RefineablePolarCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableAxisymmetricQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableLinearisedQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableQSphericalTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::DGFaceElement::get_interpolation_data(), ThreeDimBethertonProblem< ELEMENT >::get_lambda(), oomph::PolarCrouzeixRaviartElement::get_load_data(), oomph::PolarTaylorHoodElement::get_load_data(), get_node_number(), NodeReordering::get_node_reordering(), oomph::Mesh::get_node_reordering(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::get_wind_adv_diff_react(), get_x(), oomph::SpectralPeriodicOrbitElement< NNODE_1D >::get_Z2_flux(), SCoupling< M, O >::getSCoupledElements(), oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >::global_power_contribution(), oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >::global_power_contribution(), has_hanging_nodes(), oomph::HeatedPenetratorFluxElement< ELEMENT >::HeatedPenetratorFluxElement(), oomph::HelmholtzBCElementBase< ELEMENT >::HelmholtzBCElementBase(), oomph::HelmholtzFluxElement< ELEMENT >::HelmholtzFluxElement(), oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::HelmholtzFluxFromNormalDisplacementBCElement(), RefineableQAxisymAdvectionDiffusionBoussinesqElement::identify_all_field_data_for_external_interaction(), identify_field_data_for_interactions(), oomph::RefineableElement::identify_field_data_for_interactions(), oomph::SolidFiniteElement::identify_geometric_data(), oomph::RefineableSolidElement::identify_geometric_data(), oomph::FSIAxisymmetricQTaylorHoodElement::identify_load_data(), oomph::AxisymmetricTCrouzeixRaviartElement::identify_load_data(), oomph::AxisymmetricTTaylorHoodElement::identify_load_data(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::identify_load_data(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::identify_load_data(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::identify_load_data(), oomph::RefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::identify_load_data(), oomph::RefineableQTaylorHoodElement< DIM >::identify_load_data(), oomph::RefineableQCrouzeixRaviartElement< DIM >::identify_load_data(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::identify_load_data(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::identify_load_data(), oomph::QSphericalCrouzeixRaviartElement::identify_load_data(), oomph::QSphericalTaylorHoodElement::identify_load_data(), oomph::FSIAxisymmetricQTaylorHoodElement::identify_pressure_data(), oomph::AxisymmetricTTaylorHoodElement::identify_pressure_data(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::identify_pressure_data(), oomph::QSphericalTaylorHoodElement::identify_pressure_data(), oomph::RefineablePolarTaylorHoodElement::insert_load_data(), oomph::RefineablePolarCrouzeixRaviartElement::insert_load_data(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::interface_min_max(), oomph::BiharmonicEquations< DIM >::interpolated_dudx(), oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >::interpolated_H(), oomph::SurfaceMeltElement< ELEMENT >::interpolated_melt_rate(), oomph::DGFaceElement::interpolated_u(), oomph::BiharmonicEquations< DIM >::interpolated_u_biharmonic(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::interpolating_node_pt(), oomph::RefineableAxisymmetricQTaylorHoodElement::interpolating_node_pt(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::interpolating_node_pt(), oomph::RefineableLinearisedQTaylorHoodElement::interpolating_node_pt(), oomph::RefineableQSphericalTaylorHoodElement::interpolating_node_pt(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::interpolating_node_pt(), oomph::RefineableElement::interpolating_node_pt(), oomph::RefineableQTaylorHoodElement< DIM >::interpolating_node_pt(), oomph::RefineablePolarTaylorHoodElement::interpolating_node_pt(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::interpolating_node_pt(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::interpolating_node_pt(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::interpolating_node_pt(), oomph::SolubleSurfactantTransportInterfaceElement::l2_norm_of_height(), oomph::SolidFiniteElement::lagrangian_position(), oomph::SolidFiniteElement::lagrangian_position_gen(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::LinearisedAxisymPoroelasticBJS_FSIElement(), oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >::LinearisedFSIAxisymmetricNStNoSlipBCElementElement(), oomph::LinearWaveFluxElement< ELEMENT >::LinearWaveFluxElement(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::local_equation(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::local_equation(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::local_equation(), oomph::RefineableElement::local_hang_eqn(), oomph::RefineableSolidElement::local_position_hang_eqn(), oomph::FixedVolumeSpineLineMarangoniFluidInterfaceElement< ELEMENT >::make_bounding_element(), oomph::HelmholtzMGPreconditioner< DIM >::maximum_edge_width(), oomph::MeshHelper::merge_spine_meshes(), oomph::NavierStokesFluxControlElement< ELEMENT >::NavierStokesFluxControlElement(), oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >::NavierStokesMixedOrderSpaceTimeTractionElement(), oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >::NavierStokesSpaceTimeTractionElement(), oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >::NavierStokesSurfaceDragTorqueElement(), oomph::NavierStokesSurfacePowerElement< ELEMENT >::NavierStokesSurfacePowerElement(), oomph::NavierStokesTractionElement< ELEMENT >::NavierStokesTractionElement(), oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::ncont_interpolated_values(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::ncont_interpolated_values(), oomph::NetFluxControlElement< ELEMENT >::NetFluxControlElement(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::nfields_for_projection(), oomph::RefineableSolidElement::ngeom_data(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::GeneralisedNewtonianProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectablePVDElement< PVD_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectablePVDElementWithContinuousPressure< PVD_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::nhistory_values_for_coordinate_projection(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::nhistory_values_for_projection(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nhistory_values_for_projection(), oomph::GeneralisedNewtonianProjectableAxisymmetricCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableGeneralisedNewtonianCrouzeixRaviartElement< CROUZEIX_RAVIART_ELEMENT >::nhistory_values_for_projection(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::nhistory_values_for_projection(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::nhistory_values_for_projection(), nodal_local_eqn(), nodal_position(), nodal_position_gen(), nodal_value(), oomph::NodeElementSolidOnlyMortaringElement::node_and_vector_to_data_pt(), node_update(), oomph::Mesh::node_update(), oomph::RefineableElement::nodes_built(), oomph::PRefineableElement::nodes_built(), oomph::SpectralPeriodicOrbitElement< NNODE_1D >::num_Z2_flux_terms(), OneDimMesh< ELEMENT >::OneDimMesh(), FiniteElementComp::operator()(), ElementCmp::operator()(), oomph::LinearElasticitySmoothMesh< LINEAR_ELASTICITY_ELEMENT >::operator()(), oomph::PoissonSmoothMesh< POISSON_ELEMENT >::operator()(), oomph::HermiteBeamElement::output(), oomph::DummyFaceElement< ELEMENT >::output(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::output(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::output(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::output(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::output(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::output(), oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::output(), oomph::ClampedHermiteShellBoundaryConditionElement::output(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::SolarRadiationBase::output_atmospheric_radiation(), oomph::TriangleMesh< ELEMENT >::output_boundary_coordinates(), oomph::TriangleMesh< FLUID_ELEMENT >::output_boundary_coordinates(), oomph::ElementWithExternalElement::output_external_elements(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::output_integration_points(), oomph::SurfaceMeltElement< ELEMENT >::output_melt(), output_paraview(), oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::output_stefan_boltzmann_radiation(), oomph::TreeBasedRefineableMeshBase::p_adapt_mesh(), oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::p_refine(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::p_refine(), oomph::Tree::p_refine_if_required(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::pin_all(), oomph::AxisymmetricTTaylorHoodElement::pin_all_nodal_pressure_dofs(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::pin_all_nodal_pressure_dofs(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::NavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::pin_all_non_pressure_dofs(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableLinearisedQTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineablePolarTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQSphericalTaylorHoodElement::pin_elemental_redundant_nodal_pressure_dofs(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::pin_elemental_redundant_nodal_solid_pressures(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::pin_q_edge_value(), oomph::LinearisedQCrouzeixRaviartElement::pin_real_or_imag(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::pin_superfluous_darcy_dofs(), oomph::MGSolver< DIM >::plot(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::plot_residual_landscape(), oomph::PMLQuadMeshBase< ELEMENT >::pml_locate_zeta(), oomph::PMLHelmholtzFluxElement< ELEMENT >::PMLHelmholtzFluxElement(), oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::PMLHelmholtzFluxFromNormalDisplacementBCElement(), oomph::PMLHelmholtzPowerElement< ELEMENT >::PMLHelmholtzPowerElement(), oomph::PoissonFluxElement< ELEMENT >::PoissonFluxElement(), oomph::PolarNavierStokesTractionElement< ELEMENT >::PolarNavierStokesTractionElement(), oomph::PolarStreamfunctionTractionElement< ELEMENT >::PolarStreamfunctionTractionElement(), oomph::PolarStressIntegralElement< ELEMENT >::PolarStressIntegralElement(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::position(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::pre_build(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::pre_build(), oomph::StorableShapeSolidElementBase::pre_compute_d2shape_lagrangian_at_knots(), oomph::StorableShapeSolidElementBase::pre_compute_dshape_lagrangian_at_knots(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::pressure_node_pt(), oomph::RefineableAxisymmetricQTaylorHoodElement::pressure_node_pt(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::pressure_node_pt(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::pressure_node_pt(), oomph::RefineableLinearisedQTaylorHoodElement::pressure_node_pt(), oomph::RefineableQTaylorHoodElement< DIM >::pressure_node_pt(), oomph::PolarTaylorHoodElement::pressure_node_pt(), oomph::RefineablePolarTaylorHoodElement::pressure_node_pt(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::pressure_node_pt(), oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >::pressure_node_pt(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::pressure_node_pt(), oomph::RefineableQSphericalTaylorHoodElement::pressure_node_pt(), PressureWaveFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::PressureWaveFSIProblem(), print_connectivity_matrix(), oomph::ProjectionProblem< PROJECTABLE_ELEMENT >::project(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::q_edge_data_pt(), oomph::TRaviartThomasDarcyElement< ORDER >::q_edge_data_pt(), oomph::QuarterCircleSectorMesh< ELEMENT >::QuarterCircleSectorMesh(), oomph::QuarterTubeMesh< ELEMENT >::QuarterTubeMesh(), raw_dnodal_position_dt(), raw_dnodal_position_gen_dt(), oomph::SolidFiniteElement::raw_lagrangian_position(), oomph::SolidFiniteElement::raw_lagrangian_position_gen(), raw_nodal_position(), raw_nodal_position_gen(), raw_nodal_value(), oomph::MacroElementNodeUpdateElement< ELEMENT >::rebuild_from_sons(), oomph::RectangleWithHoleMesh< ELEMENT >::RectangleWithHoleMesh(), oomph::TreeBasedRefineableMeshBase::refine_as_in_reference_mesh(), CollapsibleChannelProblem< ELEMENT >::refine_elements_based_on_x_coord(), oomph::RefineableImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_displ_lagr_multiplier(), oomph::RefineableFSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::refineable_fill_in_generic_contribution_to_residuals_fsi_displ_lagr_multiplier(), oomph::RefineableNavierStokesFluxControlElement< ELEMENT >::refineable_fill_in_generic_residual_contribution_fluid_traction(), RefineableUnsteadyHeatProblem< ELEMENT >::RefineableUnsteadyHeatProblem(), oomph::FaceElement::resize_nodes(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::scalar_value_paraview(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::scale_basis(), oomph::TRaviartThomasDarcyElement< ORDER >::scale_basis(), oomph::TPoroelasticityElement< ORDER >::scale_basis(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::set_boundary_conditions(), HeatedCircularPenetratorElement::set_contact_element_mesh_pt(), CircularPenetratorElement::set_contact_element_mesh_pt(), oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::set_external_data_from_navier_stokes_outflow_mesh(), AdvectionProblem::set_initial_conditions(), EulerProblem::set_initial_conditions(), oomph::SurfaceMeltElement< ELEMENT >::set_lagrange_multiplier_pressure_to_zero(), oomph::MacroElementNodeUpdateElement< ELEMENT >::set_node_update_info(), oomph::SurfaceContactElementBase< ELEMENT >::set_penetrator_pt(), oomph::TAxisymmetricPoroelasticityElement< ORDER >::set_q_edge(), oomph::TRaviartThomasDarcyElement< ORDER >::set_q_edge(), oomph::MGSolver< DIM >::set_self_test_vector(), oomph::QPVDElementWithContinuousPressure< DIM >::set_solid_p(), oomph::TPVDElementWithContinuousPressure< DIM >::set_solid_p(), oomph::VolumeConstraintBoundingElement::set_volume_constraint_element(), oomph::AlgebraicCylinderWithFlagMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicFishMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicRefineableQuarterCircleSectorMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicRefineableQuarterTubeMesh< ELEMENT >::setup_algebraic_node_update(), oomph::AlgebraicElementBase::setup_algebraic_node_update(), oomph::XdaTetMesh< ELEMENT >::setup_boundary_coordinates(), oomph::UnstructuredTwoDMeshGeometryBase::setup_boundary_coordinates(), oomph::BrickMeshBase::setup_boundary_element_info(), oomph::LineMeshBase::setup_boundary_element_info(), oomph::QuadMeshBase::setup_boundary_element_info(), oomph::TetMeshBase::setup_boundary_element_info(), oomph::TriangleMeshBase::setup_boundary_element_info(), oomph::HermiteQuadMesh< ELEMENT >::setup_boundary_element_info(), oomph::FluidInterfaceAdditionalValues< SolubleSurfactantTransportInterfaceElement >::setup_equation_indices(), oomph::FluidInterfaceAdditionalValues< SurfactantTransportInterfaceElement >::setup_equation_indices(), oomph::FourierDecomposedHelmholtzDtNMesh< ELEMENT >::setup_gamma(), oomph::HelmholtzDtNMesh< ELEMENT >::setup_gamma(), oomph::MGSolver< DIM >::setup_interpolation_matrices_unstructured(), oomph::HelmholtzMGPreconditioner< DIM >::setup_interpolation_matrices_unstructured(), oomph::Z2ErrorEstimator::setup_patches(), SolarRadiationProblem< ELEMENT >::setup_shielding_nodes(), oomph::SimpleRectangularTriMesh< ELEMENT >::SimpleRectangularTriMesh(), SimpleRefineableRectangularQuadMesh< ELEMENT >::SimpleRefineableRectangularQuadMesh(), oomph::TetMeshBase::snap_nodes_onto_geometric_objects(), oomph::TetMeshBase::snap_to_quadratic_surface(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::solid_pressure_node_pt(), solve_with_selected_refinement_pattern(), oomph::TetMeshBase::split_elements_in_corners(), oomph::Tree::split_if_required(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::square_of_l2_norm_of_error(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::strain_rate(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::SurfactantProblem(), oomph::TetgenScaffoldMesh::TetgenScaffoldMesh(), oomph::ThinLayerBrickOnTetMesh< ELEMENT >::ThinLayerBrickOnTetMesh(), ThreeDimBethertonProblem< ELEMENT >::ThreeDimBethertonProblem(), oomph::TemplateFreeContactElementBase::traction_fct(), TriangleFaceTestProblem< ELEMENT >::TriangleFaceTestProblem(), oomph::TriangleScaffoldMesh::TriangleScaffoldMesh(), oomph::TubeMesh< ELEMENT >::TubeMesh(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem(), TwoDDGMesh< ELEMENT >::TwoDDGMesh(), oomph::FluidInterfaceElement::u(), oomph::LinearisedAxisymmetricFluidInterfaceElement::u(), oomph::BiharmonicElement< DIM >::u(), oomph::YoungLaplaceContactAngleElement< ELEMENT >::u(), oomph::RefineableElement::unbuild(), oomph::AxisymmetricTTaylorHoodElement::unpin_all_nodal_pressure_dofs(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::unpin_all_nodal_pressure_dofs(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableAxisymmetricQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineableLinearisedQTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableQTaylorHoodElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineablePolarTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::unpin_elemental_pressure_dofs(), oomph::RefineableQSphericalTaylorHoodElement::unpin_elemental_pressure_dofs(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::unpin_elemental_solid_pressure_dofs(), oomph::QPVDElementWithContinuousPressure< DIM >::unpin_elemental_solid_pressure_dofs(), oomph::TPVDElementWithContinuousPressure< DIM >::unpin_elemental_solid_pressure_dofs(), oomph::AxisymmetricTTaylorHoodElement::unpin_proper_nodal_pressure_dofs(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::unpin_proper_nodal_pressure_dofs(), oomph::LinearisedQCrouzeixRaviartElement::unpin_real_or_imag(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::unpin_surface(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::UnsteadyHeatBaseFaceElement(), oomph::UnsteadyHeatFluxElement< ELEMENT >::UnsteadyHeatFluxElement(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::UnsteadyHeatFluxPseudoMeltElement(), oomph::RefineableTetgenMesh< ELEMENT >::update_faceted_surface_using_face_mesh(), oomph::SolarRadiationBase::update_limiting_angles(), oomph::AxisymFoepplvonKarmanEquations::use_linear_bending_model(), oomph::DisplacementBasedFoepplvonKarmanEquations::use_linear_bending_model(), oomph::FoepplvonKarmanEquations::use_linear_bending_model(), oomph::AxisymmetricTCrouzeixRaviartElement::vertex_node_pt(), oomph::AxisymmetricTTaylorHoodElement::vertex_node_pt(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::vertex_node_pt(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::vertex_node_pt(), oomph::GeneralisedNewtonianTCrouzeixRaviartElement< DIM >::vertex_node_pt(), oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >::vertex_node_pt(), oomph::TCrouzeixRaviartElement< DIM >::vertex_node_pt(), oomph::TTaylorHoodElement< DIM >::vertex_node_pt(), oomph::WomersleyMesh< WOMERSLEY_ELEMENT >::WomersleyMesh(), oomph::YoungLaplaceContactAngleElement< ELEMENT >::YoungLaplaceContactAngleElement(), oomph::FaceElement::zeta_nodal(), and oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::zeta_nodal().

◆ node_pt() [2/2]

Node* const& oomph::FiniteElement::node_pt ( const unsigned n) const
inline

Return a pointer to the local node n (const version)

2193  {
2194 #ifdef RANGE_CHECKING
2195  if (n >= Nnode)
2196  {
2197  std::ostringstream error_message;
2198  error_message << "Range Error: " << n << " is not in the range (0,"
2199  << Nnode - 1 << ")";
2200  throw OomphLibError(error_message.str(),
2203  }
2204 #endif
2205 
2206  return Node_pt[n];
2207  }

References n, Nnode, Node_pt, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ node_update()

void FiniteElement::node_update ( )
virtual

Update the positions of all nodes in the element using each node update function. The default implementation may be overloaded so that more efficient versions can be written

Loop over all nodes in the element and update their positions using each node's (algebraic) update function

Reimplemented in SpineGravityTractionElement< ELEMENT >.

5073  {
5074  const unsigned n_node = nnode();
5075  for (unsigned n = 0; n < n_node; n++)
5076  {
5077  node_pt(n)->node_update();
5078  }
5079  }
virtual void node_update(const bool &update_all_time_levels_for_new_node=false)
Definition: nodes.h:1586

References n, nnode(), node_pt(), and oomph::Node::node_update().

Referenced by oomph::ElementWithMovingNodes::fill_in_jacobian_from_geometric_data(), oomph::ElementWithMovingNodes::get_dnodal_coordinates_dgeom_dofs(), oomph::FSIWallElement::node_update_adjacent_fluid_elements(), oomph::ImmersedRigidBodyElement::node_update_adjacent_fluid_elements(), oomph::FluidInterfaceBoundingElement::reset_after_external_fd(), and oomph::FluidInterfaceBoundingElement::update_in_external_fd().

◆ nplot_points()

virtual unsigned oomph::FiniteElement::nplot_points ( const unsigned nplot) const
inlinevirtual

Return total number of plot points (when plotting nplot points in each "coordinate direction")

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, and oomph::QHermiteElement< DIM - 1 >.

3187  {
3188  throw OomphLibError(
3189  "nplot_points(...) is not implemented for this element",
3192  // Dummy return
3193  return 0;
3194  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by UnstructuredFluidProblem< ELEMENT >::doc_boundary_coordinates(), oomph::Mesh::doc_boundary_coordinates(), oomph::Z2ErrorEstimator::doc_flux(), PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::doc_solid_boundary_coordinates(), UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::doc_solid_boundary_coordinates(), oomph::PolarNavierStokesEquations::full_output(), oomph::SphericalNavierStokesEquations::full_output(), locate_zeta(), oomph::NonlinearSurfaceContactElement< ELEMENT >::output(), oomph::LinearSurfaceContactElement< ELEMENT >::output(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::output(), oomph::PolarStreamfunctionEquations::output(), oomph::AxisymFoepplvonKarmanEquations::output(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::output(), oomph::AxisymmetricLinearElasticityEquations::output(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::output(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::output(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::output(), oomph::FluidInterfaceElement::output(), oomph::SurfactantTransportInterfaceElement::output(), oomph::DisplacementBasedFoepplvonKarmanEquations::output(), oomph::FoepplvonKarmanEquations::output(), oomph::FourierDecomposedHelmholtzEquations::output(), oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >::output(), oomph::PMLFourierDecomposedHelmholtzEquations::output(), oomph::SolidTractionElement< ELEMENT >::output(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::output(), oomph::YoungLaplaceEquations::output(), oomph::LinearisedAxisymmetricNavierStokesEquations::output(), oomph::THomogenisedLinearElasticityElement< DIM, NNODE_1D >::output(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::output(), oomph::AxisymAdvectionDiffusionEquations::output(), oomph::AxisymmetricNavierStokesEquations::output(), oomph::AxisymmetricPoroelasticityEquations::output(), oomph::BiharmonicEquations< DIM >::output(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output(), oomph::LinearisedNavierStokesEquations::output(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), oomph::PoissonFluxElement< ELEMENT >::output(), oomph::PolarNavierStokesEquations::output(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::SphericalAdvectionDiffusionEquations::output(), oomph::SphericalNavierStokesEquations::output(), oomph::SteadyAxisymAdvectionDiffusionEquations::output(), oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::AxisymFoepplvonKarmanEquations::output_fct(), oomph::DisplacementBasedFoepplvonKarmanEquations::output_fct(), oomph::FoepplvonKarmanEquations::output_fct(), oomph::FourierDecomposedHelmholtzEquations::output_fct(), oomph::PMLFourierDecomposedHelmholtzEquations::output_fct(), oomph::YoungLaplaceEquations::output_fct(), oomph::AxisymAdvectionDiffusionEquations::output_fct(), oomph::AxisymmetricLinearElasticityEquations::output_fct(), oomph::AxisymmetricNavierStokesEquations::output_fct(), oomph::AxisymmetricPoroelasticityEquations::output_fct(), oomph::BiharmonicEquations< DIM >::output_fct(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_fct(), oomph::PolarNavierStokesEquations::output_fct(), oomph::SphericalAdvectionDiffusionEquations::output_fct(), oomph::SphericalNavierStokesEquations::output_fct(), oomph::SteadyAxisymAdvectionDiffusionEquations::output_fct(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::output_fct(), oomph::BiharmonicEquations< DIM >::output_fluid_velocity(), oomph::FourierDecomposedHelmholtzEquations::output_real(), oomph::PMLFourierDecomposedHelmholtzEquations::output_real(), oomph::FourierDecomposedHelmholtzEquations::output_real_fct(), oomph::PMLFourierDecomposedHelmholtzEquations::output_real_fct(), oomph::LinearisedAxisymmetricNavierStokesEquations::output_veloc(), oomph::AxisymmetricNavierStokesEquations::output_veloc(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_veloc(), oomph::LinearisedNavierStokesEquations::output_veloc(), oomph::PolarNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_vorticity(), oomph::FaceElement::output_zeta(), oomph::Multi_domain_functions::setup_bulk_elements_adjacent_to_face_mesh(), and TFaceTestProblem< ELEMENT >::TFaceTestProblem().

◆ nplot_points_paraview()

virtual unsigned oomph::FiniteElement::nplot_points_paraview ( const unsigned nplot) const
inlinevirtual

Return the number of actual plot points for paraview plot with parameter nplot. Broken virtual; can be overloaded in specific elements.

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, and oomph::QElement< 1, NNODE_1D >.

2863  {
2864  throw OomphLibError(
2865  "This function hasn't been implemented for this element",
2868 
2869  // Dummy unsigned
2870  return 0;
2871  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::Mesh::output_fct_paraview(), output_paraview(), oomph::Mesh::output_paraview(), oomph::NavierStokesEquations< DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeNavierStokesEquations< DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::scalar_value_fct_paraview(), oomph::PMLHelmholtzEquations< DIM >::scalar_value_fct_paraview(), oomph::PoissonEquations< DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_fct_paraview(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::scalar_value_fct_paraview(), oomph::MultiPoissonEquations< DIM, NFIELDS >::scalar_value_paraview(), oomph::AdvectionDiffusionEquations< DIM >::scalar_value_paraview(), oomph::AxisymAdvectionDiffusionEquations::scalar_value_paraview(), oomph::AxisymmetricNavierStokesEquations::scalar_value_paraview(), oomph::AxisymmetricPoroelasticityEquations::scalar_value_paraview(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::scalar_value_paraview(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::scalar_value_paraview(), oomph::HelmholtzEquations< DIM >::scalar_value_paraview(), oomph::NavierStokesEquations< DIM >::scalar_value_paraview(), oomph::PMLHelmholtzEquations< DIM >::scalar_value_paraview(), oomph::PoissonEquations< DIM >::scalar_value_paraview(), oomph::SpaceTimeNavierStokesEquations< DIM >::scalar_value_paraview(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::scalar_value_paraview(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_paraview(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::scalar_value_paraview(), and oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::scalar_value_paraview().

◆ nscalar_paraview()

virtual unsigned oomph::FiniteElement::nscalar_paraview ( ) const
inlinevirtual

Number of scalars/fields output by this element. Broken virtual. Needs to be implemented for each new specific element type.

Reimplemented in oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::PMLHelmholtzEquations< DIM >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::HelmholtzEquations< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::AxisymmetricPoroelasticityEquations, oomph::AxisymmetricNavierStokesEquations, oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >, oomph::AxisymAdvectionDiffusionEquations, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::MultiPoissonEquations< DIM, NFIELDS >, and oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >.

2989  {
2990  throw OomphLibError(
2991  "This function hasn't been implemented for this element",
2994 
2995  // Dummy unsigned
2996  return 0;
2997  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::Mesh::output_fct_paraview(), and oomph::Mesh::output_paraview().

◆ nsub_elements_paraview()

virtual unsigned oomph::FiniteElement::nsub_elements_paraview ( const unsigned nplot) const
inlinevirtual

Return the number of local sub-elements for paraview plot with parameter nplot. Broken virtual; can be overloaded in specific elements.

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, and oomph::QElement< 1, NNODE_1D >.

2877  {
2878  throw OomphLibError(
2879  "This function hasn't been implemented for this element",
2882 
2883  // Dummy unsigned
2884  return 0;
2885  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::Mesh::output_fct_paraview(), and oomph::Mesh::output_paraview().

◆ nvertex_node()

virtual unsigned oomph::FiniteElement::nvertex_node ( ) const
inlinevirtual

Return the number of vertex nodes in this element. Broken virtual function in "pure" finite elements.

Reimplemented in oomph::BrickElementBase, oomph::QuadElementBase, oomph::LineElementBase, oomph::ElementWithZ2ErrorEstimator, oomph::RefineableQYoungLaplaceElement< NNODE_1D >, oomph::TUnsteadyHeatElement< DIM, NNODE_1D >, oomph::RefineableQUnsteadyHeatElement< DIM, NNODE_1D >, oomph::TTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::RefineableQTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TTimeHarmonicFourierDecomposedLinearElasticityElement< NNODE_1D >, oomph::RefineableQSphericalCrouzeixRaviartElement, oomph::RefineableQSphericalTaylorHoodElement, oomph::RefineableQSphericalAdvectionDiffusionElement< NNODE_1D >, oomph::RefineableQSphericalAdvectionDiffusionElement< 3 >, oomph::RefineableQUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::RefineableQUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::RefineableQUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::TPVDElementWithContinuousPressure< DIM >, oomph::TPVDBubbleEnrichedElement< DIM, NNODE_1D >, oomph::TPVDElement< DIM, NNODE_1D >, oomph::RefineableQPVDElementWithContinuousPressure< DIM >, oomph::RefineableQPVDElementWithPressure< DIM >, oomph::RefineableQPVDElement< DIM, NNODE_1D >, oomph::RefineablePolarCrouzeixRaviartElement, oomph::RefineablePolarTaylorHoodElement, oomph::TPoissonElement< DIM, NNODE_1D >, oomph::RefineableQSpectralPoissonElement< DIM, NNODE_1D >, oomph::PRefineableQPoissonElement< DIM >, oomph::RefineableQPoissonElement< DIM, NNODE_1D >, oomph::TPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TPMLHelmholtzElement< DIM, NNODE_1D >, oomph::RefineableQPMLHelmholtzElement< DIM, NNODE_1D >, oomph::RefineableQPMLHelmholtzElement< 2, NNODE_1D >, oomph::TPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::TTaylorHoodElement< DIM >, oomph::TCrouzeixRaviartElement< DIM >, oomph::PRefineableQCrouzeixRaviartElement< DIM >, oomph::RefineableQCrouzeixRaviartElement< DIM >, oomph::RefineableQCrouzeixRaviartElement< 2 >, oomph::RefineableQTaylorHoodElement< DIM >, oomph::RefineableQTaylorHoodElement< 2 >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableLinearisedQTaylorHoodElement, oomph::RefineableLinearisedQCrouzeixRaviartElement, oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement, oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement, oomph::RefineableQLinearWaveElement< DIM, NNODE_1D >, oomph::TLinearElasticityElement< DIM, NNODE_1D >, oomph::PRefineableQLinearElasticityElement< DIM >, oomph::RefineableQLinearElasticityElement< DIM, NNODE_1D >, oomph::THelmholtzElement< DIM, NNODE_1D >, oomph::RefineableQHelmholtzElement< DIM, NNODE_1D >, oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::PseudoSolidNodeUpdateElement< TCrouzeixRaviartElement< 2 >, TPVDBubbleEnrichedElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< TTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianAxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< AxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianTTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::SpectralPeriodicOrbitElement< NNODE_1D >, oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianTCrouzeixRaviartElement< DIM >, oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >, oomph::RefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >, oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement, oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement, oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement, oomph::TFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::TFoepplvonKarmanElement< NNODE_1D >, oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >, oomph::TRaviartThomasDarcyElement< ORDER >, oomph::TAxisymmetricPoroelasticityElement< ORDER >, oomph::AxisymmetricTTaylorHoodElement, oomph::AxisymmetricTCrouzeixRaviartElement, oomph::RefineableAxisymmetricQCrouzeixRaviartElement, oomph::RefineableAxisymmetricQTaylorHoodElement, oomph::TAxisymmetricLinearElasticityElement< NNODE_1D >, oomph::RefineableQGeneralisedAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::RefineableQAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::RefineableQAxisymAdvectionDiffusionElement< 3 >, oomph::TAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::RefineableQAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::RefineableQAdvectionDiffusionReactionElement< 2, DIM, 3 >, oomph::RefineableQSUPGAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::RefineableQGeneralisedAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::RefineableQAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::RefineableQAdvectionDiffusionElement< DIM, 3 >, oomph::RefineablePolarStreamfunctionElement, ModalPRefineableQPoissonElement< DIM >, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >, oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement, and oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement.

2492  {
2493  std::string error_msg = "Not implemented for FiniteElement.";
2494  throw OomphLibError(
2496  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

Referenced by oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::nvertex_node(), oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement::nvertex_node(), oomph::RefineablePolarStreamfunctionElement::nvertex_node(), oomph::RefineableQAdvectionDiffusionElement< DIM, NNODE_1D >::nvertex_node(), oomph::RefineableQSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::nvertex_node(), oomph::RefineableQAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >::nvertex_node(), oomph::RefineableAxisymmetricQTaylorHoodElement::nvertex_node(), oomph::RefineableAxisymmetricQCrouzeixRaviartElement::nvertex_node(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::nvertex_node(), oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::nvertex_node(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::nvertex_node(), oomph::RefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::nvertex_node(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::nvertex_node(), oomph::RefineableQHelmholtzElement< DIM, NNODE_1D >::nvertex_node(), oomph::RefineableQLinearElasticityElement< DIM, NNODE_1D >::nvertex_node(), oomph::PRefineableQLinearElasticityElement< DIM >::nvertex_node(), oomph::RefineableQLinearWaveElement< DIM, NNODE_1D >::nvertex_node(), oomph::RefineableLinearisedQCrouzeixRaviartElement::nvertex_node(), oomph::RefineableLinearisedQTaylorHoodElement::nvertex_node(), oomph::RefineableQTaylorHoodElement< DIM >::nvertex_node(), oomph::RefineableQCrouzeixRaviartElement< DIM >::nvertex_node(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::nvertex_node(), oomph::RefineableQPMLHelmholtzElement< DIM, NNODE_1D >::nvertex_node(), oomph::RefineableQPoissonElement< DIM, NNODE_1D >::nvertex_node(), oomph::PRefineableQPoissonElement< DIM >::nvertex_node(), oomph::RefineableQSpectralPoissonElement< DIM, NNODE_1D >::nvertex_node(), oomph::RefineablePolarTaylorHoodElement::nvertex_node(), oomph::RefineablePolarCrouzeixRaviartElement::nvertex_node(), oomph::RefineableQPVDElement< DIM, NNODE_1D >::nvertex_node(), oomph::RefineableQPVDElementWithPressure< DIM >::nvertex_node(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::nvertex_node(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::nvertex_node(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::nvertex_node(), oomph::RefineableQSphericalTaylorHoodElement::nvertex_node(), oomph::RefineableQSphericalCrouzeixRaviartElement::nvertex_node(), and oomph::RefineableQUnsteadyHeatElement< DIM, NNODE_1D >::nvertex_node().

◆ output() [1/5]

virtual void oomph::FiniteElement::output ( const unsigned t,
std::ostream &  outfile,
const unsigned n_plot 
) const
inlinevirtual

Output the element data at time step t. This is const because it is newly added and so can be done easily. Really all the output(...) functions should be const!

Reimplemented in oomph::HermiteBeamElement.

3074  {
3075  throw OomphLibError(
3076  "Output function function hasn't been implemented for this element",
3079  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ output() [2/5]

virtual void oomph::FiniteElement::output ( FILE *  file_pt)
inlinevirtual

Output the element data — typically the values at the nodes in a format suitable for post-processing. (C style output)

Reimplemented in oomph::YoungLaplaceContactAngleElement< ELEMENT >, oomph::QWomersleyElement< DIM, NNODE_1D >, oomph::WomersleyEquations< DIM >, oomph::TWomersleyElement< DIM, NNODE_1D >, oomph::UnsteadyHeatFluxElement< ELEMENT >, oomph::QUnsteadyHeatElement< DIM, NNODE_1D >, oomph::QUnsteadyHeatElement< DIM, 3 >, oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::TUnsteadyHeatElement< DIM, NNODE_1D >, oomph::TTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::QTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TimeHarmonicLinearElasticityEquations< DIM >, oomph::TimeHarmonicFourierDecomposedLinearElasticityTractionElement< ELEMENT >, oomph::TTimeHarmonicFourierDecomposedLinearElasticityElement< NNODE_1D >, oomph::QTimeHarmonicFourierDecomposedLinearElasticityElement< NNODE_1D >, oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations, oomph::QSteadyAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::SteadyAxisymAdvectionDiffusionEquations, oomph::QSphericalTaylorHoodElement, oomph::QSphericalCrouzeixRaviartElement, oomph::SphericalNavierStokesEquations, oomph::QSphericalAdvectionDiffusionElement< NNODE_1D >, oomph::SphericalAdvectionDiffusionEquations, oomph::QUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >, oomph::QTaylorHoodMixedOrderSpaceTimeElement< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SolidTractionElement< ELEMENT >, oomph::TPVDElementWithContinuousPressure< DIM >, oomph::TPVDBubbleEnrichedElement< DIM, NNODE_1D >, oomph::TPVDElement< DIM, NNODE_1D >, oomph::QPVDElementWithContinuousPressure< DIM >, oomph::QPVDElementWithPressure< DIM >, oomph::PVDEquationsWithPressure< DIM >, oomph::HermitePVDElement< DIM >, oomph::QPVDElement< DIM, NNODE_1D >, oomph::QPVDElement< DIM, 3 >, oomph::PVDEquations< DIM >, oomph::ClampedHermiteShellBoundaryConditionElement, oomph::HermiteShellElement, oomph::KirchhoffLoveShellEquations, oomph::PoroelasticityFaceElement< ELEMENT >, oomph::PolarTaylorHoodElement, oomph::PolarCrouzeixRaviartElement, oomph::PolarNavierStokesEquations, oomph::TPoissonElement< DIM, NNODE_1D >, oomph::QSpectralPoissonElement< DIM, NNODE_1D >, oomph::PoissonFluxElement< ELEMENT >, oomph::QPoissonElement< DIM, NNODE_1D >, oomph::QPoissonElement< DIM, 2 >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::TPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::QPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::QPMLTimeHarmonicLinearElasticityElement< 2, NNODE_1D >, oomph::PMLTimeHarmonicLinearElasticityEquations< DIM >, oomph::TPMLHelmholtzElement< DIM, NNODE_1D >, oomph::PMLHelmholtzFluxElement< ELEMENT >, oomph::QPMLHelmholtzElement< DIM, NNODE_1D >, oomph::QPMLHelmholtzElement< 2, NNODE_1D >, oomph::PMLHelmholtzEquations< DIM >, oomph::TPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >, oomph::PMLFourierDecomposedHelmholtzFluxElement< ELEMENT >, oomph::QPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::PMLFourierDecomposedHelmholtzEquations, oomph::TTaylorHoodElement< DIM >, oomph::TCrouzeixRaviartElement< DIM >, oomph::QTaylorHoodElement< DIM >, oomph::QTaylorHoodElement< 2 >, oomph::QCrouzeixRaviartElement< DIM >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >, oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >, oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearisedQTaylorHoodElement, oomph::LinearisedQCrouzeixRaviartElement, oomph::LinearisedNavierStokesEquations, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::LinearWaveFluxElement< ELEMENT >, oomph::QLinearWaveElement< DIM, NNODE_1D >, oomph::LinearWaveEquations< DIM >, oomph::TLinearElasticityElement< DIM, NNODE_1D >, oomph::LinearElasticityTractionElement< ELEMENT >, oomph::QLinearElasticityElement< DIM, NNODE_1D >, oomph::QLinearElasticityElement< DIM, 2 >, oomph::QLinearElasticityElement< DIM, 3 >, oomph::LinearElasticityEquations< DIM >, oomph::THelmholtzElement< DIM, NNODE_1D >, oomph::HelmholtzFluxElement< ELEMENT >, oomph::QHelmholtzElement< DIM, NNODE_1D >, oomph::HelmholtzEquations< DIM >, oomph::HelmholtzBCElementBase< ELEMENT >, oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::SolidQElement< 3, NNODE_1D >, oomph::SolidQElement< 2, NNODE_1D >, oomph::SolidQElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::PseudoSolidNodeUpdateElement< TCrouzeixRaviartElement< 2 >, TPVDBubbleEnrichedElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< TTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianAxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< AxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianTTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::SpectralPeriodicOrbitElement< NNODE_1D >, oomph::SolidQHermiteElement< DIM >, oomph::SolidQHermiteElement< 1 >, oomph::SolidQHermiteElement< 2 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::DummyFaceElement< ELEMENT >, oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianTCrouzeixRaviartElement< DIM >, oomph::GeneralisedNewtonianQTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianQCrouzeixRaviartElement< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement, oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::TFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::FourierDecomposedHelmholtzFluxElement< ELEMENT >, oomph::QFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::FourierDecomposedHelmholtzEquations, oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >, oomph::TFoepplvonKarmanElement< NNODE_1D >, oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >, oomph::QFoepplvonKarmanElement< NNODE_1D >, oomph::FoepplvonKarmanEquations, oomph::DisplacementBasedFoepplvonKarmanEquations, oomph::SurfactantTransportInterfaceElement, oomph::ElasticLineFluidInterfaceBoundingElement< ELEMENT >, oomph::ElasticPointFluidInterfaceBoundingElement< ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SolubleSurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineLineFluidInterfaceBoundingElement< ELEMENT >, oomph::SpinePointFluidInterfaceBoundingElement< ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SolubleSurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT >, oomph::FluidInterfaceElement, oomph::FluidInterfaceBoundingElement, oomph::DarcyFaceElement< ELEMENT >, oomph::BiharmonicFluidBoundaryElement, oomph::BiharmonicFluxElement< DIM >, oomph::BiharmonicElement< DIM >, oomph::BiharmonicEquations< DIM >, oomph::ClampedSlidingHermiteBeamBoundaryConditionElement, oomph::HermiteBeamElement, oomph::AxisymmetricSolidTractionElement< ELEMENT >, oomph::AxisymQPVDElementWithPressure, oomph::AxisymmetricPVDEquationsWithPressure, oomph::AxisymDiagHermitePVDElement, oomph::AxisymQPVDElement, oomph::AxisymmetricPVDEquations, oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >, oomph::AxisymmetricPoroelasticityTractionElement< POROELASTICITY_BULK_ELEMENT >, oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >, oomph::AxisymmetricTTaylorHoodElement, oomph::AxisymmetricTCrouzeixRaviartElement, oomph::AxisymmetricQTaylorHoodElement, oomph::AxisymmetricQCrouzeixRaviartElement, oomph::AxisymmetricNavierStokesEquations, oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >, oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >, oomph::TAxisymmetricLinearElasticityElement< NNODE_1D >, oomph::FSIAxisymmetricLinearElasticityTractionElement< ELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >, oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >, oomph::QAxisymmetricLinearElasticityElement< NNODE_1D >, oomph::AxisymmetricLinearElasticityEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::QAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::QAxisymAdvectionDiffusionElement< 3 >, oomph::AxisymAdvectionDiffusionEquations, oomph::TAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< 2, DIM, 3 >, oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >, oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QGeneralisedAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::GeneralisedAdvectionDiffusionEquations< DIM >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, oomph::QAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QAdvectionDiffusionElement< DIM, 3 >, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::PolarStreamfunctionElement, oomph::PolarStreamfunctionEquations, oomph::SolubleSurfactantTransportInterfaceElement, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, QThermalPVDElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, QAxisymAdvectionDiffusionElementWithExternalElement, RefineableQAxisymAdvectionDiffusionBoussinesqElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, QAxisymAdvectionDiffusionElementWithExternalElement, RefineableQAxisymAdvectionDiffusionBoussinesqElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, RefineableQAdvectionDiffusionElementWithExternalElement< DIM >, RefineableQCrouzeixRaviartElementWithExternalElement< DIM >, RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >, oomph::LinearisedAxisymmetricFluidInterfaceElement, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::QMultiPoissonElement< DIM, NNODE_1D, NFIELDS >, oomph::MultiPoissonEquations< DIM, NFIELDS >, oomph::THomogenisedLinearElasticityElement< DIM, NNODE_1D >, oomph::HomogenisedLinearElasticityEquations< DIM >, oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >, oomph::HeatedPenetratorFluxElement< ELEMENT >, oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >, oomph::UnsteadyHeatBaseFaceElement< ELEMENT >, oomph::SurfaceContactElementBase< ELEMENT >, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, and oomph::LinearisedAxisymmetricNavierStokesEquations.

3085  {
3086  throw OomphLibError("C-style otput function function hasn't been "
3087  "implemented for this element",
3090  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ output() [3/5]

virtual void oomph::FiniteElement::output ( FILE *  file_pt,
const unsigned n_plot 
)
inlinevirtual

Output the element data — pass (some measure of) the number of plot points per element (C style output)

Reimplemented in oomph::QSphericalTaylorHoodElement, oomph::QSphericalCrouzeixRaviartElement, oomph::SphericalNavierStokesEquations, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >, oomph::QTaylorHoodMixedOrderSpaceTimeElement< 2 >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::PolarTaylorHoodElement, oomph::PolarCrouzeixRaviartElement, oomph::PolarNavierStokesEquations, oomph::QTaylorHoodElement< DIM >, oomph::QTaylorHoodElement< 2 >, oomph::QCrouzeixRaviartElement< DIM >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::LinearisedNavierStokesEquations, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::LinearWaveEquations< DIM >, oomph::GeneralisedNewtonianQTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianQCrouzeixRaviartElement< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::AxisymmetricNavierStokesEquations, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::YoungLaplaceContactAngleElement< ELEMENT >, oomph::QWomersleyElement< DIM, NNODE_1D >, oomph::WomersleyEquations< DIM >, oomph::TWomersleyElement< DIM, NNODE_1D >, oomph::UnsteadyHeatFluxElement< ELEMENT >, oomph::QUnsteadyHeatElement< DIM, NNODE_1D >, oomph::QUnsteadyHeatElement< DIM, 3 >, oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::TUnsteadyHeatElement< DIM, NNODE_1D >, oomph::TTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::QTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TimeHarmonicLinearElasticityEquations< DIM >, oomph::TimeHarmonicFourierDecomposedLinearElasticityTractionElement< ELEMENT >, oomph::TTimeHarmonicFourierDecomposedLinearElasticityElement< NNODE_1D >, oomph::QTimeHarmonicFourierDecomposedLinearElasticityElement< NNODE_1D >, oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations, oomph::QSteadyAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::SteadyAxisymAdvectionDiffusionEquations, oomph::QSphericalAdvectionDiffusionElement< NNODE_1D >, oomph::SphericalAdvectionDiffusionEquations, oomph::QUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SolidTractionElement< ELEMENT >, oomph::TPVDElementWithContinuousPressure< DIM >, oomph::TPVDBubbleEnrichedElement< DIM, NNODE_1D >, oomph::TPVDElement< DIM, NNODE_1D >, oomph::QPVDElementWithContinuousPressure< DIM >, oomph::QPVDElementWithPressure< DIM >, oomph::PVDEquationsWithPressure< DIM >, oomph::HermitePVDElement< DIM >, oomph::QPVDElement< DIM, NNODE_1D >, oomph::QPVDElement< DIM, 3 >, oomph::PVDEquations< DIM >, oomph::ClampedHermiteShellBoundaryConditionElement, oomph::HermiteShellElement, oomph::KirchhoffLoveShellEquations, oomph::PoroelasticityFaceElement< ELEMENT >, oomph::TPoissonElement< DIM, NNODE_1D >, oomph::QSpectralPoissonElement< DIM, NNODE_1D >, oomph::PoissonFluxElement< ELEMENT >, oomph::QPoissonElement< DIM, NNODE_1D >, oomph::QPoissonElement< DIM, 2 >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::TPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::QPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::QPMLTimeHarmonicLinearElasticityElement< 2, NNODE_1D >, oomph::PMLTimeHarmonicLinearElasticityEquations< DIM >, oomph::TPMLHelmholtzElement< DIM, NNODE_1D >, oomph::PMLHelmholtzFluxElement< ELEMENT >, oomph::QPMLHelmholtzElement< DIM, NNODE_1D >, oomph::QPMLHelmholtzElement< 2, NNODE_1D >, oomph::PMLHelmholtzEquations< DIM >, oomph::TPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >, oomph::PMLFourierDecomposedHelmholtzFluxElement< ELEMENT >, oomph::QPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::PMLFourierDecomposedHelmholtzEquations, oomph::TTaylorHoodElement< DIM >, oomph::TCrouzeixRaviartElement< DIM >, oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >, oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >, oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearisedQTaylorHoodElement, oomph::LinearisedQCrouzeixRaviartElement, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::LinearWaveFluxElement< ELEMENT >, oomph::QLinearWaveElement< DIM, NNODE_1D >, oomph::TLinearElasticityElement< DIM, NNODE_1D >, oomph::LinearElasticityTractionElement< ELEMENT >, oomph::QLinearElasticityElement< DIM, NNODE_1D >, oomph::QLinearElasticityElement< DIM, 2 >, oomph::QLinearElasticityElement< DIM, 3 >, oomph::LinearElasticityEquations< DIM >, oomph::THelmholtzElement< DIM, NNODE_1D >, oomph::HelmholtzFluxElement< ELEMENT >, oomph::QHelmholtzElement< DIM, NNODE_1D >, oomph::HelmholtzEquations< DIM >, oomph::HelmholtzBCElementBase< ELEMENT >, oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::SolidQElement< 3, NNODE_1D >, oomph::SolidQElement< 2, NNODE_1D >, oomph::SolidQElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::SpectralPeriodicOrbitElement< NNODE_1D >, oomph::SolidQHermiteElement< DIM >, oomph::SolidQHermiteElement< 1 >, oomph::SolidQHermiteElement< 2 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::SolidQHermiteElement< DIM >, oomph::SolidQHermiteElement< 1 >, oomph::SolidQHermiteElement< 2 >, oomph::SolidQHermiteElement< DIM >, oomph::SolidQHermiteElement< 1 >, oomph::SolidQHermiteElement< 2 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::DummyFaceElement< ELEMENT >, oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianTCrouzeixRaviartElement< DIM >, oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement, oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement, oomph::TFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::FourierDecomposedHelmholtzFluxElement< ELEMENT >, oomph::QFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::FourierDecomposedHelmholtzEquations, oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >, oomph::TFoepplvonKarmanElement< NNODE_1D >, oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >, oomph::QFoepplvonKarmanElement< NNODE_1D >, oomph::FoepplvonKarmanEquations, oomph::DisplacementBasedFoepplvonKarmanEquations, oomph::SurfactantTransportInterfaceElement, oomph::ElasticLineFluidInterfaceBoundingElement< ELEMENT >, oomph::ElasticPointFluidInterfaceBoundingElement< ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SolubleSurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineLineFluidInterfaceBoundingElement< ELEMENT >, oomph::SpinePointFluidInterfaceBoundingElement< ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SolubleSurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT >, oomph::FluidInterfaceElement, oomph::FluidInterfaceBoundingElement, oomph::DarcyFaceElement< ELEMENT >, oomph::BiharmonicFluidBoundaryElement, oomph::BiharmonicFluxElement< DIM >, oomph::BiharmonicElement< DIM >, oomph::BiharmonicEquations< DIM >, oomph::ClampedSlidingHermiteBeamBoundaryConditionElement, oomph::HermiteBeamElement, oomph::AxisymmetricSolidTractionElement< ELEMENT >, oomph::AxisymQPVDElementWithPressure, oomph::AxisymmetricPVDEquationsWithPressure, oomph::AxisymDiagHermitePVDElement, oomph::AxisymQPVDElement, oomph::AxisymmetricPVDEquations, oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >, oomph::AxisymmetricPoroelasticityTractionElement< POROELASTICITY_BULK_ELEMENT >, oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >, oomph::AxisymmetricTTaylorHoodElement, oomph::AxisymmetricTCrouzeixRaviartElement, oomph::AxisymmetricQTaylorHoodElement, oomph::AxisymmetricQCrouzeixRaviartElement, oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >, oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >, oomph::TAxisymmetricLinearElasticityElement< NNODE_1D >, oomph::FSIAxisymmetricLinearElasticityTractionElement< ELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >, oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >, oomph::QAxisymmetricLinearElasticityElement< NNODE_1D >, oomph::AxisymmetricLinearElasticityEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::QAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::QAxisymAdvectionDiffusionElement< 3 >, oomph::AxisymAdvectionDiffusionEquations, oomph::TAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< 2, DIM, 3 >, oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >, oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QGeneralisedAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::GeneralisedAdvectionDiffusionEquations< DIM >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, oomph::QAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QAdvectionDiffusionElement< DIM, 3 >, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::PolarStreamfunctionElement, oomph::PolarStreamfunctionEquations, oomph::SolubleSurfactantTransportInterfaceElement, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, QThermalPVDElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, QAxisymAdvectionDiffusionElementWithExternalElement, RefineableQAxisymAdvectionDiffusionBoussinesqElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, QAxisymAdvectionDiffusionElementWithExternalElement, RefineableQAxisymAdvectionDiffusionBoussinesqElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, RefineableQAdvectionDiffusionElementWithExternalElement< DIM >, RefineableQCrouzeixRaviartElementWithExternalElement< DIM >, RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >, oomph::LinearisedAxisymmetricFluidInterfaceElement, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::QMultiPoissonElement< DIM, NNODE_1D, NFIELDS >, oomph::MultiPoissonEquations< DIM, NFIELDS >, oomph::THomogenisedLinearElasticityElement< DIM, NNODE_1D >, oomph::HomogenisedLinearElasticityEquations< DIM >, oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >, oomph::HeatedPenetratorFluxElement< ELEMENT >, oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >, oomph::UnsteadyHeatBaseFaceElement< ELEMENT >, oomph::SurfaceContactElementBase< ELEMENT >, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::PseudoSolidNodeUpdateElement< TCrouzeixRaviartElement< 2 >, TPVDBubbleEnrichedElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< TTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianAxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< AxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, and oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianTTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >.

3096  {
3097  throw OomphLibError("C-style output function function hasn't been "
3098  "implemented for this element",
3101  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ output() [4/5]

virtual void oomph::FiniteElement::output ( std::ostream &  outfile)
inlinevirtual

Output the element data — typically the values at the nodes in a format suitable for post-processing.

Reimplemented in oomph::CustomisedQPoissonElement< DIM, NNODE_1D >, oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QYoungLaplaceElement< NNODE_1D >, oomph::YoungLaplaceEquations, oomph::YoungLaplaceContactAngleElement< ELEMENT >, oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >, oomph::QWomersleyElement< DIM, NNODE_1D >, oomph::WomersleyEquations< DIM >, oomph::TWomersleyElement< DIM, NNODE_1D >, oomph::UnsteadyHeatFluxElement< ELEMENT >, oomph::QUnsteadyHeatElement< DIM, NNODE_1D >, oomph::QUnsteadyHeatElement< DIM, 3 >, oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::TUnsteadyHeatElement< DIM, NNODE_1D >, oomph::TTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::QTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TimeHarmonicLinearElasticityEquations< DIM >, oomph::TimeHarmonicFourierDecomposedLinearElasticityTractionElement< ELEMENT >, oomph::TTimeHarmonicFourierDecomposedLinearElasticityElement< NNODE_1D >, oomph::QTimeHarmonicFourierDecomposedLinearElasticityElement< NNODE_1D >, oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations, oomph::SteadyAxisymAdvectionDiffusionFluxElement< ELEMENT >, oomph::QSteadyAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::SteadyAxisymAdvectionDiffusionEquations, oomph::QSphericalTaylorHoodElement, oomph::QSphericalCrouzeixRaviartElement, oomph::SphericalNavierStokesEquations, oomph::SphericalAdvectionDiffusionFluxElement< ELEMENT >, oomph::QSphericalAdvectionDiffusionElement< NNODE_1D >, oomph::SphericalAdvectionDiffusionEquations, oomph::QUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >, oomph::QTaylorHoodMixedOrderSpaceTimeElement< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::FpPressureAdvDiffRobinBCMixedOrderSpaceTimeElement< ELEMENT >, oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >, oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >, oomph::SolidTractionElement< ELEMENT >, oomph::TPVDElementWithContinuousPressure< DIM >, oomph::TPVDBubbleEnrichedElement< DIM, NNODE_1D >, oomph::TPVDElement< DIM, NNODE_1D >, oomph::QPVDElementWithContinuousPressure< DIM >, oomph::QPVDElementWithPressure< DIM >, oomph::PVDEquationsWithPressure< DIM >, oomph::HermitePVDElement< DIM >, oomph::QPVDElement< DIM, NNODE_1D >, oomph::QPVDElement< DIM, 3 >, oomph::PVDEquations< DIM >, oomph::ClampedHermiteShellBoundaryConditionElement, oomph::HermiteShellElement, oomph::KirchhoffLoveShellEquations, oomph::TPoroelasticityElement< ORDER >, oomph::PoroelasticityFaceElement< ELEMENT >, oomph::PoroelasticityEquations< DIM >, oomph::PoroelasticityEquations< 2 >, oomph::PolarStressIntegralElement< ELEMENT >, oomph::PolarTaylorHoodElement, oomph::PolarCrouzeixRaviartElement, oomph::PolarNavierStokesEquations, oomph::PolarNavierStokesTractionElement< ELEMENT >, oomph::TPoissonElement< DIM, NNODE_1D >, oomph::QSpectralPoissonElement< DIM, NNODE_1D >, oomph::PoissonFluxElement< ELEMENT >, oomph::QPoissonElement< DIM, NNODE_1D >, oomph::QPoissonElement< DIM, 2 >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::TPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::QPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::QPMLTimeHarmonicLinearElasticityElement< 2, NNODE_1D >, oomph::PMLTimeHarmonicLinearElasticityEquations< DIM >, oomph::TPMLHelmholtzElement< DIM, NNODE_1D >, oomph::PMLHelmholtzFluxElement< ELEMENT >, oomph::QPMLHelmholtzElement< DIM, NNODE_1D >, oomph::QPMLHelmholtzElement< 2, NNODE_1D >, oomph::PMLHelmholtzEquations< DIM >, oomph::TPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >, oomph::PMLFourierDecomposedHelmholtzFluxElement< ELEMENT >, oomph::QPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::PMLFourierDecomposedHelmholtzEquations, oomph::TTaylorHoodElement< DIM >, oomph::TCrouzeixRaviartElement< DIM >, oomph::QTaylorHoodElement< DIM >, oomph::QTaylorHoodElement< 2 >, oomph::QCrouzeixRaviartElement< DIM >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::FpPressureAdvDiffRobinBCElement< ELEMENT >, oomph::ImposeParallelOutflowElement< ELEMENT >, oomph::ImposeImpenetrabilityElement< ELEMENT >, oomph::NavierStokesTractionElement< ELEMENT >, oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >, oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >, oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearisedQTaylorHoodElement, oomph::LinearisedQCrouzeixRaviartElement, oomph::LinearisedNavierStokesEquations, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::LinearWaveFluxElement< ELEMENT >, oomph::QLinearWaveElement< DIM, NNODE_1D >, oomph::LinearWaveEquations< DIM >, oomph::TLinearElasticityElement< DIM, NNODE_1D >, oomph::LinearElasticityTractionElement< ELEMENT >, oomph::QLinearElasticityElement< DIM, NNODE_1D >, oomph::QLinearElasticityElement< DIM, 2 >, oomph::QLinearElasticityElement< DIM, 3 >, oomph::LinearElasticityEquations< DIM >, oomph::THelmholtzElement< DIM, NNODE_1D >, oomph::HelmholtzFluxElement< ELEMENT >, oomph::QHelmholtzElement< DIM, NNODE_1D >, oomph::HelmholtzEquations< DIM >, oomph::HelmholtzBCElementBase< ELEMENT >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::SolidQElement< 3, NNODE_1D >, oomph::SolidQElement< 2, NNODE_1D >, oomph::SolidQElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::PseudoSolidNodeUpdateElement< TCrouzeixRaviartElement< 2 >, TPVDBubbleEnrichedElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< TTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianAxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< AxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianTTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::SpectralPeriodicOrbitElement< NNODE_1D >, oomph::SolidQHermiteElement< DIM >, oomph::SolidQHermiteElement< 1 >, oomph::SolidQHermiteElement< 2 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::DummyFaceElement< ELEMENT >, oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianTCrouzeixRaviartElement< DIM >, oomph::GeneralisedNewtonianQTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianQCrouzeixRaviartElement< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement, oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::TFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::FourierDecomposedHelmholtzFluxElement< ELEMENT >, oomph::QFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::FourierDecomposedHelmholtzEquations, oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >, oomph::TFoepplvonKarmanElement< NNODE_1D >, oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >, oomph::QFoepplvonKarmanElement< NNODE_1D >, oomph::FoepplvonKarmanEquations, oomph::DisplacementBasedFoepplvonKarmanEquations, oomph::QScalarAdvectionElement< DIM, NNODE_1D >, oomph::QScalarAdvectionElement< 1, NNODE_1D >, oomph::QScalarAdvectionElement< 2, NNODE_1D >, oomph::QSpectralScalarAdvectionElement< DIM, NNODE_1D >, oomph::QSpectralScalarAdvectionElement< 1, NNODE_1D >, oomph::QSpectralScalarAdvectionElement< 2, NNODE_1D >, oomph::FluxTransportEquations< DIM >, oomph::QSpectralEulerElement< DIM, NNODE_1D >, oomph::QSpectralEulerElement< 1, NNODE_1D >, oomph::QSpectralEulerElement< 2, NNODE_1D >, oomph::EulerEquations< DIM >, oomph::SurfactantTransportInterfaceElement, oomph::ElasticLineFluidInterfaceBoundingElement< ELEMENT >, oomph::ElasticPointFluidInterfaceBoundingElement< ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SolubleSurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineLineFluidInterfaceBoundingElement< ELEMENT >, oomph::SpinePointFluidInterfaceBoundingElement< ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SolubleSurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT >, oomph::FluidInterfaceElement, oomph::FluidInterfaceBoundingElement, oomph::TRaviartThomasDarcyElement< ORDER >, oomph::DarcyFaceElement< ELEMENT >, oomph::DarcyEquations< DIM >, oomph::DarcyEquations< 2 >, oomph::BiharmonicFluidBoundaryElement, oomph::BiharmonicFluxElement< DIM >, oomph::BiharmonicElement< DIM >, oomph::BiharmonicEquations< DIM >, oomph::ClampedSlidingHermiteBeamBoundaryConditionElement, oomph::HermiteBeamElement, oomph::AxisymmetricSolidTractionElement< ELEMENT >, oomph::AxisymQPVDElementWithPressure, oomph::AxisymmetricPVDEquationsWithPressure, oomph::AxisymDiagHermitePVDElement, oomph::AxisymQPVDElement, oomph::AxisymmetricPVDEquations, oomph::TAxisymmetricPoroelasticityElement< ORDER >, oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >, oomph::AxisymmetricPoroelasticityTractionElement< POROELASTICITY_BULK_ELEMENT >, oomph::AxisymmetricPoroelasticityEquations, oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >, oomph::AxisymmetricTTaylorHoodElement, oomph::AxisymmetricTCrouzeixRaviartElement, oomph::AxisymmetricQTaylorHoodElement, oomph::AxisymmetricQCrouzeixRaviartElement, oomph::AxisymmetricNavierStokesEquations, oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >, oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >, oomph::TAxisymmetricLinearElasticityElement< NNODE_1D >, oomph::FSIAxisymmetricLinearElasticityTractionElement< ELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >, oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >, oomph::QAxisymmetricLinearElasticityElement< NNODE_1D >, oomph::AxisymmetricLinearElasticityEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::QAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::QAxisymAdvectionDiffusionElement< 3 >, oomph::AxisymAdvectionDiffusionEquations, oomph::TAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< 2, DIM, 3 >, oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >, oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QGeneralisedAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::GeneralisedAdvectionDiffusionEquations< DIM >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, oomph::AdvectionDiffusionFluxElement< ELEMENT >, oomph::QAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QAdvectionDiffusionElement< DIM, 3 >, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::NavierStokesFluxControlElement< ELEMENT >, oomph::PolarStreamfunctionElement, oomph::PolarStreamfunctionEquations, oomph::PolarStreamfunctionTractionElement< ELEMENT >, SpineGravityTractionElement< ELEMENT >, FixSpineHeightElement, oomph::SolubleSurfactantTransportInterfaceElement, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >, oomph::LinearisedAxisymmetricFluidInterfaceElement, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::QMultiPoissonElement< DIM, NNODE_1D, NFIELDS >, oomph::MultiPoissonEquations< DIM, NFIELDS >, oomph::THomogenisedLinearElasticityElement< DIM, NNODE_1D >, oomph::HomogenisedLinearElasticityEquations< DIM >, oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >, oomph::HeatedPenetratorFluxElement< ELEMENT >, oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >, oomph::UnsteadyHeatBaseFaceElement< ELEMENT >, oomph::LinearSurfaceContactElement< ELEMENT >, oomph::NonlinearSurfaceContactElement< ELEMENT >, oomph::SurfaceContactElementBase< ELEMENT >, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::LinearisedAxisymmetricNavierStokesEquations, TwoNodePoissonElement, GelfandBratuElement< NNODE_1D >, ModalPRefineableQPoissonElement< DIM >, ModalPoissonEquations< DIM >, QThermalPVDElement< DIM >, QAxisymAdvectionDiffusionElementWithExternalElement, RefineableQAxisymAdvectionDiffusionBoussinesqElement, QAxisymAdvectionDiffusionElementWithExternalElement, RefineableQAxisymAdvectionDiffusionBoussinesqElement, RefineableQAdvectionDiffusionElementWithExternalElement< DIM >, RefineableQCrouzeixRaviartElementWithExternalElement< DIM >, RefineableBuoyantQCrouzeixRaviartElement< DIM >, QHarmonicElement< NNODE_1D >, HarmonicEquations, SSPorousChannelElement, SSPorousChannelEquations, FixSpineHeightElement, SpineGravityTractionElement< ELEMENT >, QOrrSommerfeldElement< 1, NNODE_1D >, OrrSommerfeldEquations< DIM >, QHarmonicElement< NNODE_1D >, HarmonicEquations, QComplexHarmonicElement< NNODE_1D >, ComplexHarmonicEquations, SSPorousChannelElement, and SSPorousChannelEquations.

3051  {
3052  throw OomphLibError(
3053  "Output function function hasn't been implemented for this element",
3056  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::Multi_domain_functions::aux_setup_multi_domain_interaction(), oomph::Mesh::check_inverted_elements(), RingWithTRibProblem< ELASTICITY_ELEMENT >::doc_solution(), oomph::FluidInterfaceAdditionalValues< SolubleSurfactantTransportInterfaceElement >::FluidInterfaceAdditionalValues(), oomph::SurfaceContactElementBase< ELEMENT >::output(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::output(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::output(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::output(), oomph::QSpectralElement< 1, NNODE_1D >::output(), oomph::QSpectralElement< 2, NNODE_1D >::output(), oomph::QSpectralElement< 3, NNODE_1D >::output(), oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), oomph::PoissonFluxElement< ELEMENT >::output(), oomph::SolidTractionElement< ELEMENT >::output(), oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), RefineableBuoyantQCrouzeixRaviartElement< DIM >::output(), RefineableQCrouzeixRaviartElementWithExternalElement< DIM >::output(), RefineableQAdvectionDiffusionElementWithExternalElement< DIM >::output(), RefineableQAxisymAdvectionDiffusionBoussinesqElement::output(), QAxisymAdvectionDiffusionElementWithExternalElement::output(), QThermalPVDElement< DIM >::output(), oomph::LinearisedAxisymmetricFluidInterfaceElement::output(), oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >::output(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::output(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::AxisymmetricQAdvectionCrouzeixRaviartElement::output(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::output(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::SolubleSurfactantTransportInterfaceElement::output(), oomph::PolarStreamfunctionTractionElement< ELEMENT >::output(), oomph::NavierStokesFluxControlElement< ELEMENT >::output(), oomph::AdvectionDiffusionFluxElement< ELEMENT >::output(), oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::output(), oomph::AxisymmetricPVDEquations::output(), oomph::AxisymQPVDElement::output(), oomph::AxisymDiagHermitePVDElement::output(), oomph::AxisymmetricPVDEquationsWithPressure::output(), oomph::AxisymQPVDElementWithPressure::output(), oomph::AxisymmetricSolidTractionElement< ELEMENT >::output(), oomph::ClampedSlidingHermiteBeamBoundaryConditionElement::output(), oomph::BiharmonicEquations< DIM >::output(), oomph::FluidInterfaceBoundingElement::output(), oomph::FluidInterfaceElement::output(), oomph::SpinePointFluidInterfaceBoundingElement< ELEMENT >::output(), oomph::SpineLineFluidInterfaceBoundingElement< ELEMENT >::output(), oomph::ElasticPointFluidInterfaceBoundingElement< ELEMENT >::output(), oomph::ElasticLineFluidInterfaceBoundingElement< ELEMENT >::output(), oomph::SurfactantTransportInterfaceElement::output(), oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >::output(), oomph::FourierDecomposedHelmholtzFluxElement< ELEMENT >::output(), oomph::Mesh::output(), oomph::SpectralPeriodicOrbitElement< NNODE_1D >::output(), oomph::SolidQElement< 1, NNODE_1D >::output(), oomph::SolidQElement< 2, NNODE_1D >::output(), oomph::SolidQElement< 3, NNODE_1D >::output(), oomph::HelmholtzBCElementBase< ELEMENT >::output(), oomph::HelmholtzFluxElement< ELEMENT >::output(), oomph::LinearElasticityTractionElement< ELEMENT >::output(), oomph::LinearWaveFluxElement< ELEMENT >::output(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::NavierStokesTractionElement< ELEMENT >::output(), oomph::ImposeImpenetrabilityElement< ELEMENT >::output(), oomph::ImposeParallelOutflowElement< ELEMENT >::output(), oomph::FpPressureAdvDiffRobinBCElement< ELEMENT >::output(), oomph::PMLFourierDecomposedHelmholtzFluxElement< ELEMENT >::output(), oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >::output(), oomph::PMLHelmholtzFluxElement< ELEMENT >::output(), oomph::PolarNavierStokesTractionElement< ELEMENT >::output(), oomph::PolarStressIntegralElement< ELEMENT >::output(), oomph::PoroelasticityFaceElement< ELEMENT >::output(), oomph::KirchhoffLoveShellEquations::output(), oomph::ClampedHermiteShellBoundaryConditionElement::output(), oomph::QPVDElementWithPressure< DIM >::output(), oomph::QPVDElementWithContinuousPressure< DIM >::output(), oomph::TPVDElementWithContinuousPressure< DIM >::output(), oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >::output(), oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >::output(), oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >::output(), oomph::FpPressureAdvDiffRobinBCMixedOrderSpaceTimeElement< ELEMENT >::output(), oomph::SphericalAdvectionDiffusionFluxElement< ELEMENT >::output(), oomph::SteadyAxisymAdvectionDiffusionFluxElement< ELEMENT >::output(), oomph::TimeHarmonicFourierDecomposedLinearElasticityTractionElement< ELEMENT >::output(), oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::output(), oomph::YoungLaplaceContactAngleElement< ELEMENT >::output(), oomph::DummyFaceElement< ELEMENT >::output(), oomph::DGElement::output_faces(), oomph::MyProblem::output_solution(), oomph::TetMeshBase::setup_boundary_element_info(), oomph::TetMeshBase::snap_nodes_onto_geometric_objects(), and STSpineMesh< ELEMENT, INTERFACE_ELEMENT >::surface_output().

◆ output() [5/5]

virtual void oomph::FiniteElement::output ( std::ostream &  outfile,
const unsigned n_plot 
)
inlinevirtual

Output the element data — pass (some measure of) the number of plot points per element

Reimplemented in oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >, oomph::WomersleyEquations< DIM >, oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >, oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::TTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::SteadyAxisymAdvectionDiffusionFluxElement< ELEMENT >, oomph::SteadyAxisymAdvectionDiffusionEquations, oomph::QSphericalTaylorHoodElement, oomph::QSphericalCrouzeixRaviartElement, oomph::SphericalNavierStokesEquations, oomph::SphericalAdvectionDiffusionFluxElement< ELEMENT >, oomph::SphericalAdvectionDiffusionEquations, oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >, oomph::QTaylorHoodMixedOrderSpaceTimeElement< 2 >, oomph::FpPressureAdvDiffRobinBCMixedOrderSpaceTimeElement< ELEMENT >, oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::FpPressureAdvDiffRobinBCSpaceTimeElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::TPoroelasticityElement< ORDER >, oomph::PoroelasticityEquations< DIM >, oomph::PoroelasticityEquations< 2 >, oomph::PolarStressIntegralElement< ELEMENT >, oomph::PolarTaylorHoodElement, oomph::PolarCrouzeixRaviartElement, oomph::PolarNavierStokesEquations, oomph::PolarNavierStokesTractionElement< ELEMENT >, oomph::PoissonFluxElement< ELEMENT >, oomph::TPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >, oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >, oomph::TTaylorHoodElement< DIM >, oomph::TCrouzeixRaviartElement< DIM >, oomph::QTaylorHoodElement< DIM >, oomph::QTaylorHoodElement< 2 >, oomph::QCrouzeixRaviartElement< DIM >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::FpPressureAdvDiffRobinBCElement< ELEMENT >, oomph::ImposeParallelOutflowElement< ELEMENT >, oomph::ImposeImpenetrabilityElement< ELEMENT >, oomph::NavierStokesTractionElement< ELEMENT >, oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >, oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearisedNavierStokesEquations, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::LinearWaveEquations< DIM >, oomph::TLinearElasticityElement< DIM, NNODE_1D >, oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >, oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianTCrouzeixRaviartElement< DIM >, oomph::GeneralisedNewtonianQTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianQCrouzeixRaviartElement< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >, oomph::FluxTransportEquations< DIM >, oomph::TRaviartThomasDarcyElement< ORDER >, oomph::ProjectableDarcyElement< DARCY_ELEMENT >, oomph::DarcyEquations< DIM >, oomph::DarcyEquations< 2 >, oomph::BiharmonicEquations< DIM >, oomph::TAxisymmetricPoroelasticityElement< ORDER >, oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >, oomph::AxisymmetricPoroelasticityEquations, oomph::AxisymmetricTTaylorHoodElement, oomph::AxisymmetricTCrouzeixRaviartElement, oomph::AxisymmetricNavierStokesEquations, oomph::TAxisymmetricLinearElasticityElement< NNODE_1D >, oomph::AxisymAdvectionDiffusionEquations, oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >, oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::GeneralisedAdvectionDiffusionEquations< DIM >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, oomph::AdvectionDiffusionFluxElement< ELEMENT >, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::NavierStokesFluxControlElement< ELEMENT >, oomph::PolarStreamfunctionTractionElement< ELEMENT >, oomph::MyCrouzeixRaviartElement, oomph::MyTaylorHoodElement< DIM >, oomph::MyTaylorHoodElement< DIM >, oomph::MyCrouzeixRaviartElement, oomph::MyTaylorHoodElement< DIM >, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::LinearisedAxisymmetricNavierStokesEquations, oomph::THomogenisedLinearElasticityElement< DIM, NNODE_1D >, oomph::HeatedPenetratorFluxElement< ELEMENT >, oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >, oomph::MyTaylorHoodElement< DIM >, oomph::LinearisedAxisymmetricNavierStokesEquations, SpineGravityTractionElement< ELEMENT >, FixSpineHeightElement, oomph::QYoungLaplaceElement< NNODE_1D >, oomph::YoungLaplaceEquations, oomph::YoungLaplaceContactAngleElement< ELEMENT >, oomph::QWomersleyElement< DIM, NNODE_1D >, oomph::TWomersleyElement< DIM, NNODE_1D >, oomph::UnsteadyHeatFluxElement< ELEMENT >, oomph::QUnsteadyHeatElement< DIM, NNODE_1D >, oomph::QUnsteadyHeatElement< DIM, 3 >, oomph::TUnsteadyHeatElement< DIM, NNODE_1D >, oomph::QTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TimeHarmonicLinearElasticityEquations< DIM >, oomph::TimeHarmonicFourierDecomposedLinearElasticityTractionElement< ELEMENT >, oomph::TTimeHarmonicFourierDecomposedLinearElasticityElement< NNODE_1D >, oomph::QTimeHarmonicFourierDecomposedLinearElasticityElement< NNODE_1D >, oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations, oomph::QSteadyAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::QSphericalAdvectionDiffusionElement< NNODE_1D >, oomph::QUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >, oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >, oomph::FSISolidTractionElement< ELEMENT, DIM >, oomph::SolidTractionElement< ELEMENT >, oomph::TPVDElementWithContinuousPressure< DIM >, oomph::TPVDBubbleEnrichedElement< DIM, NNODE_1D >, oomph::TPVDElement< DIM, NNODE_1D >, oomph::QPVDElementWithContinuousPressure< DIM >, oomph::QPVDElementWithPressure< DIM >, oomph::PVDEquationsWithPressure< DIM >, oomph::HermitePVDElement< DIM >, oomph::QPVDElement< DIM, NNODE_1D >, oomph::QPVDElement< DIM, 3 >, oomph::PVDEquations< DIM >, oomph::ClampedHermiteShellBoundaryConditionElement, oomph::HermiteShellElement, oomph::KirchhoffLoveShellEquations, oomph::PoroelasticityFaceElement< ELEMENT >, oomph::TPoissonElement< DIM, NNODE_1D >, oomph::QSpectralPoissonElement< DIM, NNODE_1D >, oomph::QPoissonElement< DIM, NNODE_1D >, oomph::QPoissonElement< DIM, 2 >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::QPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::QPMLTimeHarmonicLinearElasticityElement< 2, NNODE_1D >, oomph::PMLTimeHarmonicLinearElasticityEquations< DIM >, oomph::TPMLHelmholtzElement< DIM, NNODE_1D >, oomph::PMLHelmholtzFluxElement< ELEMENT >, oomph::QPMLHelmholtzElement< DIM, NNODE_1D >, oomph::QPMLHelmholtzElement< 2, NNODE_1D >, oomph::PMLHelmholtzEquations< DIM >, oomph::TPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >, oomph::PMLFourierDecomposedHelmholtzFluxElement< ELEMENT >, oomph::QPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::PMLFourierDecomposedHelmholtzEquations, oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >, oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::TimeHarmonicLinElastLoadedByPMLHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::TimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >, oomph::FourierDecomposedTimeHarmonicLinElastLoadedByHelmholtzPressureBCElement< ELASTICITY_BULK_ELEMENT, HELMHOLTZ_BULK_ELEMENT >, oomph::LinearisedQTaylorHoodElement, oomph::LinearisedQCrouzeixRaviartElement, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::LinearWaveFluxElement< ELEMENT >, oomph::QLinearWaveElement< DIM, NNODE_1D >, oomph::LinearElasticityTractionElement< ELEMENT >, oomph::QLinearElasticityElement< DIM, NNODE_1D >, oomph::QLinearElasticityElement< DIM, 2 >, oomph::QLinearElasticityElement< DIM, 3 >, oomph::LinearElasticityEquations< DIM >, oomph::THelmholtzElement< DIM, NNODE_1D >, oomph::HelmholtzFluxElement< ELEMENT >, oomph::QHelmholtzElement< DIM, NNODE_1D >, oomph::HelmholtzEquations< DIM >, oomph::HelmholtzBCElementBase< ELEMENT >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::SolidQElement< 3, NNODE_1D >, oomph::SolidQElement< 2, NNODE_1D >, oomph::SolidQElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::SpectralPeriodicOrbitElement< NNODE_1D >, oomph::SolidQHermiteElement< DIM >, oomph::SolidQHermiteElement< 1 >, oomph::SolidQHermiteElement< 2 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::SolidQHermiteElement< DIM >, oomph::SolidQHermiteElement< 1 >, oomph::SolidQHermiteElement< 2 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::DummyFaceElement< ELEMENT >, oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement, oomph::TFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::FourierDecomposedHelmholtzFluxElement< ELEMENT >, oomph::QFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::FourierDecomposedHelmholtzEquations, oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >, oomph::TFoepplvonKarmanElement< NNODE_1D >, oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >, oomph::QFoepplvonKarmanElement< NNODE_1D >, oomph::FoepplvonKarmanEquations, oomph::DisplacementBasedFoepplvonKarmanEquations, oomph::QScalarAdvectionElement< DIM, NNODE_1D >, oomph::QScalarAdvectionElement< 1, NNODE_1D >, oomph::QScalarAdvectionElement< 2, NNODE_1D >, oomph::QSpectralScalarAdvectionElement< DIM, NNODE_1D >, oomph::QSpectralScalarAdvectionElement< 1, NNODE_1D >, oomph::QSpectralScalarAdvectionElement< 2, NNODE_1D >, oomph::QSpectralEulerElement< DIM, NNODE_1D >, oomph::QSpectralEulerElement< 1, NNODE_1D >, oomph::QSpectralEulerElement< 2, NNODE_1D >, oomph::EulerEquations< DIM >, oomph::SurfactantTransportInterfaceElement, oomph::ElasticLineFluidInterfaceBoundingElement< ELEMENT >, oomph::ElasticPointFluidInterfaceBoundingElement< ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SolubleSurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineLineFluidInterfaceBoundingElement< ELEMENT >, oomph::SpinePointFluidInterfaceBoundingElement< ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< EQUATION_CLASS, DERIVATIVE_CLASS, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< SolubleSurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT >, oomph::FluidInterfaceElement, oomph::FluidInterfaceBoundingElement, oomph::DarcyFaceElement< ELEMENT >, oomph::BiharmonicFluidBoundaryElement, oomph::BiharmonicFluxElement< DIM >, oomph::BiharmonicElement< DIM >, oomph::ClampedSlidingHermiteBeamBoundaryConditionElement, oomph::HermiteBeamElement, oomph::AxisymmetricSolidTractionElement< ELEMENT >, oomph::AxisymQPVDElementWithPressure, oomph::AxisymmetricPVDEquationsWithPressure, oomph::AxisymDiagHermitePVDElement, oomph::AxisymQPVDElement, oomph::AxisymmetricPVDEquations, oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >, oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >, oomph::AxisymmetricPoroelasticityTractionElement< POROELASTICITY_BULK_ELEMENT >, oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >, oomph::AxisymmetricQTaylorHoodElement, oomph::AxisymmetricQCrouzeixRaviartElement, oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >, oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >, oomph::FSIAxisymmetricLinearElasticityTractionElement< ELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >, oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >, oomph::QAxisymmetricLinearElasticityElement< NNODE_1D >, oomph::AxisymmetricLinearElasticityEquations, oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::QAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::QAxisymAdvectionDiffusionElement< 3 >, oomph::TAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< 2, DIM, 3 >, oomph::QGeneralisedAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QAdvectionDiffusionElement< DIM, 3 >, oomph::PolarStreamfunctionElement, oomph::PolarStreamfunctionEquations, oomph::SolubleSurfactantTransportInterfaceElement, oomph::SpineLineMarangoniSurfactantFluidInterfaceElement< ELEMENT >, ElasticAxisymmetricSolubleSurfactantTransportInterfaceElement< ELEMENT >, oomph::SpineAxisymmetricMarangoniSurfactantFluidInterfaceElement< ELEMENT >, oomph::SpineLineMarangoniSurfactantFluidInterfaceElement< ELEMENT >, oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >, oomph::LinearisedAxisymmetricFluidInterfaceElement, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::QMultiPoissonElement< DIM, NNODE_1D, NFIELDS >, oomph::MultiPoissonEquations< DIM, NFIELDS >, oomph::HomogenisedLinearElasticityEquations< DIM >, oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >, oomph::HeatedLinearSurfaceContactElement< ELEMENT >, oomph::UnsteadyHeatBaseFaceElement< ELEMENT >, oomph::LinearSurfaceContactElement< ELEMENT >, oomph::NonlinearSurfaceContactElement< ELEMENT >, oomph::SurfaceContactElementBase< ELEMENT >, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, DistanceWrapper< ELEMENT >, oomph::PseudoSolidNodeUpdateElement< TCrouzeixRaviartElement< 2 >, TPVDBubbleEnrichedElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< TTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianAxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< AxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianTTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::SolidQHermiteElement< DIM >, oomph::SolidQHermiteElement< 1 >, oomph::SolidQHermiteElement< 2 >, ModalPRefineableQPoissonElement< DIM >, ModalPoissonEquations< DIM >, QThermalPVDElement< DIM >, QAxisymAdvectionDiffusionElementWithExternalElement, RefineableQAxisymAdvectionDiffusionBoussinesqElement, QAxisymAdvectionDiffusionElementWithExternalElement, RefineableQAxisymAdvectionDiffusionBoussinesqElement, RefineableQAdvectionDiffusionElementWithExternalElement< DIM >, RefineableQCrouzeixRaviartElementWithExternalElement< DIM >, RefineableBuoyantQCrouzeixRaviartElement< DIM >, QHarmonicElement< NNODE_1D >, HarmonicEquations, SSPorousChannelElement, QOrrSommerfeldElement< 1, NNODE_1D >, OrrSommerfeldEquations< DIM >, QHarmonicElement< NNODE_1D >, HarmonicEquations, QComplexHarmonicElement< NNODE_1D >, ComplexHarmonicEquations, SSPorousChannelElement, SSPorousChannelEquations, FixSpineHeightElement, SpineGravityTractionElement< ELEMENT >, and SSPorousChannelEquations.

3061  {
3062  throw OomphLibError(
3063  "Output function function hasn't been implemented for this element",
3066  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ output_fct() [1/3]

virtual void oomph::FiniteElement::output_fct ( std::ostream &  outfile,
const unsigned n_plot,
const double time,
const SolutionFunctorBase exact_soln 
) const
inlinevirtual

Output a time-dependent exact solution over the element.

3134  {
3135  throw OomphLibError(
3136  "Output function function hasn't been implemented for exact solution",
3139  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ output_fct() [2/3]

virtual void oomph::FiniteElement::output_fct ( std::ostream &  outfile,
const unsigned n_plot,
const double time,
FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt 
)
inlinevirtual

Output a time-dependent exact solution over the element.

Reimplemented in oomph::WomersleyEquations< DIM >, oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::SphericalNavierStokesEquations, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::PoroelasticityEquations< DIM >, oomph::PoroelasticityEquations< 2 >, oomph::PolarNavierStokesEquations, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearWaveEquations< DIM >, oomph::LinearElasticityEquations< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::BiharmonicElement< DIM >, oomph::BiharmonicEquations< DIM >, oomph::AxisymmetricPoroelasticityEquations, oomph::AxisymmetricNavierStokesEquations, oomph::AxisymmetricLinearElasticityEquations, oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >, oomph::GeneralisedAdvectionDiffusionEquations< DIM >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >, oomph::QYoungLaplaceElement< NNODE_1D >, oomph::YoungLaplaceEquations, oomph::QWomersleyElement< DIM, NNODE_1D >, oomph::TWomersleyElement< DIM, NNODE_1D >, oomph::QUnsteadyHeatElement< DIM, NNODE_1D >, oomph::QUnsteadyHeatElement< DIM, 3 >, oomph::TUnsteadyHeatElement< DIM, NNODE_1D >, oomph::QUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::TPoissonElement< DIM, NNODE_1D >, oomph::QSpectralPoissonElement< DIM, NNODE_1D >, oomph::QPoissonElement< DIM, NNODE_1D >, oomph::QPoissonElement< DIM, 2 >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::TPMLHelmholtzElement< DIM, NNODE_1D >, oomph::QPMLHelmholtzElement< DIM, NNODE_1D >, oomph::QPMLHelmholtzElement< 2, NNODE_1D >, oomph::PMLHelmholtzEquations< DIM >, oomph::TPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::QPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::PMLFourierDecomposedHelmholtzEquations, oomph::QLinearWaveElement< DIM, NNODE_1D >, oomph::THelmholtzElement< DIM, NNODE_1D >, oomph::QHelmholtzElement< DIM, NNODE_1D >, oomph::HelmholtzEquations< DIM >, oomph::TFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::QFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::FourierDecomposedHelmholtzEquations, oomph::TFoepplvonKarmanElement< NNODE_1D >, oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >, oomph::QFoepplvonKarmanElement< NNODE_1D >, oomph::FoepplvonKarmanEquations, oomph::DisplacementBasedFoepplvonKarmanEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::TAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< 2, DIM, 3 >, oomph::QGeneralisedAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QAdvectionDiffusionElement< DIM, 3 >, oomph::PolarStreamfunctionElement, oomph::QMultiPoissonElement< DIM, NNODE_1D, NFIELDS >, and oomph::MultiPoissonEquations< DIM, NFIELDS >.

3122  {
3123  throw OomphLibError(
3124  "Output function function hasn't been implemented for exact solution",
3127  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ output_fct() [3/3]

virtual void oomph::FiniteElement::output_fct ( std::ostream &  outfile,
const unsigned n_plot,
FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt 
)
inlinevirtual

Output an exact solution over the element.

Reimplemented in oomph::WomersleyEquations< DIM >, oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::TimeHarmonicLinearElasticityEquations< DIM >, oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations, oomph::SteadyAxisymAdvectionDiffusionEquations, oomph::SphericalNavierStokesEquations, oomph::SphericalAdvectionDiffusionEquations, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::PoroelasticityEquations< DIM >, oomph::PoroelasticityEquations< 2 >, oomph::PolarNavierStokesEquations, oomph::PMLTimeHarmonicLinearElasticityEquations< DIM >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::LinearWaveEquations< DIM >, oomph::QLinearElasticityElement< DIM, NNODE_1D >, oomph::QLinearElasticityElement< DIM, 2 >, oomph::QLinearElasticityElement< DIM, 3 >, oomph::LinearElasticityEquations< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::DarcyEquations< DIM >, oomph::DarcyEquations< 2 >, oomph::BiharmonicFluxElement< DIM >, oomph::BiharmonicElement< DIM >, oomph::BiharmonicEquations< DIM >, oomph::AxisymmetricPoroelasticityEquations, oomph::AxisymmetricNavierStokesEquations, oomph::AxisymmetricLinearElasticityEquations, oomph::AxisymAdvectionDiffusionEquations, oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >, oomph::GeneralisedAdvectionDiffusionEquations< DIM >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >, oomph::QYoungLaplaceElement< NNODE_1D >, oomph::YoungLaplaceEquations, oomph::QWomersleyElement< DIM, NNODE_1D >, oomph::TWomersleyElement< DIM, NNODE_1D >, oomph::QUnsteadyHeatElement< DIM, NNODE_1D >, oomph::QUnsteadyHeatElement< DIM, 3 >, oomph::TUnsteadyHeatElement< DIM, NNODE_1D >, oomph::QSteadyAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::QSphericalAdvectionDiffusionElement< NNODE_1D >, oomph::QUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::TPoissonElement< DIM, NNODE_1D >, oomph::QSpectralPoissonElement< DIM, NNODE_1D >, oomph::QPoissonElement< DIM, NNODE_1D >, oomph::QPoissonElement< DIM, 2 >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::TPMLHelmholtzElement< DIM, NNODE_1D >, oomph::QPMLHelmholtzElement< DIM, NNODE_1D >, oomph::QPMLHelmholtzElement< 2, NNODE_1D >, oomph::PMLHelmholtzEquations< DIM >, oomph::TPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::QPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::PMLFourierDecomposedHelmholtzEquations, oomph::QLinearWaveElement< DIM, NNODE_1D >, oomph::THelmholtzElement< DIM, NNODE_1D >, oomph::QHelmholtzElement< DIM, NNODE_1D >, oomph::HelmholtzEquations< DIM >, oomph::TFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::QFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::FourierDecomposedHelmholtzEquations, oomph::TFoepplvonKarmanElement< NNODE_1D >, oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >, oomph::QFoepplvonKarmanElement< NNODE_1D >, oomph::FoepplvonKarmanEquations, oomph::DisplacementBasedFoepplvonKarmanEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanEquations, oomph::QAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::QAxisymAdvectionDiffusionElement< 3 >, oomph::TAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< 2, DIM, 3 >, oomph::QGeneralisedAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QAdvectionDiffusionElement< DIM, 3 >, oomph::PolarStreamfunctionElement, oomph::QMultiPoissonElement< DIM, NNODE_1D, NFIELDS >, and oomph::MultiPoissonEquations< DIM, NFIELDS >.

3108  {
3109  throw OomphLibError(
3110  "Output function function hasn't been implemented for exact solution",
3113  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::MyProblem::output_exact_solution(), RefineableBuoyantQCrouzeixRaviartElement< DIM >::output_fct(), RefineableQCrouzeixRaviartElementWithExternalElement< DIM >::output_fct(), RefineableQAdvectionDiffusionElementWithExternalElement< DIM >::output_fct(), QThermalPVDElement< DIM >::output_fct(), oomph::PolarStreamfunctionElement::output_fct(), oomph::Mesh::output_fct(), oomph::BiharmonicEquations< DIM >::output_fct(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::output_fct(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::output_fct(), oomph::AxisymmetricQAdvectionCrouzeixRaviartElement::output_fct(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::output_fct(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::output_fct(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::output_fct(), and oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::output_fct().

◆ output_paraview()

void oomph::FiniteElement::output_paraview ( std::ofstream &  file_out,
const unsigned nplot 
) const
inline

Paraview output – this outputs the coordinates at the plot points (for parameter nplot) to specified output file.

2890  {
2891  // Decide the dimensions of the nodes
2892  unsigned nnod = nnode();
2893  if (nnod == 0) return;
2894  unsigned n = node_pt(0)->ndim();
2895 
2896  // Vector for local coordinates
2897  Vector<double> s(n, 0.0);
2898 
2899  // Vector for cartesian coordinates
2900  Vector<double> x(n, 0.0);
2901 
2902  // Determine the total number of plotpoints
2903  unsigned plot = nplot_points_paraview(nplot);
2904 
2905  // Loop over the local points
2906  for (unsigned j = 0; j < plot; j++)
2907  {
2908  // Determine where in the local element the point is
2909  this->get_s_plot(j, nplot, s);
2910 
2911  // Update the cartesian coordinates vector
2912  this->interpolated_x(s, x);
2913 
2914  // Print the global coordinates. Note: no whitespace after last
2915  // coordinate or paraview is very unhappy.
2916  for (unsigned i = 0; i < n - 1; i++)
2917  {
2918  file_out << x[i] << " ";
2919  }
2920  file_out << x[n - 1];
2921 
2922  // Since unstructured grid always needs 3 components for each
2923  // point, output 0's by default
2924  switch (n)
2925  {
2926  case 1:
2927  file_out << " 0"
2928  << " 0" << std::endl;
2929  break;
2930 
2931  case 2:
2932  file_out << " 0" << std::endl;
2933  break;
2934 
2935  case 3:
2936  file_out << std::endl;
2937  break;
2938 
2939  // Paraview can't handle more than 3 dimensions, output error
2940  default:
2941  throw OomphLibError(
2942  "Printing PlotPoint to .vtu failed; it has >3 dimensions.",
2945  }
2946  }
2947  }
virtual unsigned nplot_points_paraview(const unsigned &nplot) const
Definition: elements.h:2862
void plot()
Plot.
Definition: sphere_scattering.cc:180

References get_s_plot(), i, interpolated_x(), j, n, oomph::Node::ndim(), nnode(), node_pt(), nplot_points_paraview(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, PlanarWave::plot(), s, and plotDoE::x.

Referenced by oomph::Mesh::output_fct_paraview(), and oomph::Mesh::output_paraview().

◆ point_output()

void oomph::FiniteElement::point_output ( std::ostream &  outfile,
const Vector< double > &  s 
)
inline

Output solution (as defined by point_output_data()) at local cordinates s

2846  {
2847  // Get point data
2848  Vector<double> data;
2849  this->point_output_data(s, data);
2850 
2851  // Output
2852  unsigned n = data.size();
2853  for (unsigned i = 0; i < n; i++)
2854  {
2855  outfile << data[i] << " ";
2856  }
2857  }
int data[]
Definition: Map_placement_new.cpp:1
virtual void point_output_data(const Vector< double > &s, Vector< double > &data)
Definition: elements.h:2838

References data, i, n, and point_output_data().

◆ point_output_data()

◆ position() [1/2]

void oomph::FiniteElement::position ( const unsigned t,
const Vector< double > &  zeta,
Vector< double > &  r 
) const
inlinevirtual

Return the parametrised position of the FiniteElement in its GeomObject incarnation: r(zeta). The position is given by the Eulerian coordinate and the intrinsic coordinate (zeta) is the local coordinate of the element (s) This version of the function returns the position as a function of time t=0: current time; t>0: previous timestep. Works for t=0 but needs to be overloaded if genuine time-dependence is required.

Reimplemented from oomph::GeomObject.

2692  {
2693  this->interpolated_x(t, zeta, r);
2694  }

References interpolated_x(), UniformPSDSelfTest::r, and Eigen::zeta().

◆ position() [2/2]

void oomph::FiniteElement::position ( const Vector< double > &  zeta,
Vector< double > &  r 
) const
inlinevirtual

Return the parametrised position of the FiniteElement in its incarnation as a GeomObject, r(zeta). The position is given by the Eulerian coordinate and the intrinsic coordinate (zeta) is the local coordinate of the element (s).

Implements oomph::GeomObject.

Reimplemented in oomph::YoungLaplaceEquations.

2677  {
2678  this->interpolated_x(zeta, r);
2679  }

References interpolated_x(), and UniformPSDSelfTest::r.

◆ raw_dnodal_position_dt() [1/2]

◆ raw_dnodal_position_dt() [2/2]

double oomph::FiniteElement::raw_dnodal_position_dt ( const unsigned n,
const unsigned j,
const unsigned i 
) const
inline

Return the i-th component of j-th derivative of nodal position: d^jx/dt^j at node n. Do not use the hanging node representation.

2266  {
2267  return node_pt(n)->dx_dt(j, i);
2268  }

References oomph::Node::dx_dt(), i, j, n, and node_pt().

◆ raw_dnodal_position_gen_dt() [1/2]

double oomph::FiniteElement::raw_dnodal_position_gen_dt ( const unsigned j,
const unsigned n,
const unsigned k,
const unsigned i 
) const
inline

i-th component of j-th time derivative of the generalised position, dx(k,i)/dt at local node n. ‘Type’: k; Coordinate direction: i. Do not use the hanging node representation.

2309  {
2310  return node_pt(n)->dx_gen_dt(j, k, i);
2311  }
double dx_gen_dt(const unsigned &k, const unsigned &i) const
Definition: nodes.cc:1865

References oomph::Node::dx_gen_dt(), i, j, k, n, and node_pt().

◆ raw_dnodal_position_gen_dt() [2/2]

double oomph::FiniteElement::raw_dnodal_position_gen_dt ( const unsigned n,
const unsigned k,
const unsigned i 
) const
inline

i-th component of time derivative (velocity) of the generalised position, dx(k,i)/dt at local node n. ‘Type’: k; Coordinate direction: i. Do not use the hanging node representation.

2297  {
2298  return node_pt(n)->dx_gen_dt(k, i);
2299  }

References oomph::Node::dx_gen_dt(), i, k, n, and node_pt().

Referenced by oomph::KirchhoffLoveBeamEquations::fill_in_contribution_to_residuals_beam(), oomph::KirchhoffLoveShellEquations::fill_in_contribution_to_residuals_shell(), oomph::KirchhoffLoveBeamEquations::get_energy(), oomph::KirchhoffLoveShellEquations::get_strain_and_bend(), and oomph::HermiteBeamElement::output().

◆ raw_nodal_position() [1/2]

double FiniteElement::raw_nodal_position ( const unsigned n,
const unsigned i 
) const

Return the i-th coordinate at local node n. Do not use the hanging node representation. NOTE: Moved to cc file because of a possible compiler bug in gcc (yes, really!). The move to the cc file avoids inlining which appears to cause problems (only) when compiled with gcc and -O3; offensive "illegal read" is in optimised-out section of code and data that is allegedly illegal is readily readable (by other means) just before this function is called so I can't really see how we could possibly be responsible for this...

//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// Return the i-th coordinate at local node n. Do not use the hanging node representation. NOTE: Moved to cc file because of a possible compiler bug in gcc (yes, really!). The move to the cc file avoids inlining which appears to cause problems (only) when compiled with gcc and -O3; offensive "illegal read" is in optimised-out section of code and data that is allegedly illegal is readily readable (by other means) just before this function is called so I can't really see how we could possibly be responsible for this...

1688  {
1689  /* oomph_info << "n: "<< n << std::endl; */
1690  /* oomph_info << "i: "<< i << std::endl; */
1691  /* oomph_info << "node_pt(n): "<< node_pt(n) << std::endl; */
1692  /* oomph_info << "node_pt(n)->x(i): "<< node_pt(n)->x(i) << std::endl; */
1693  // double tmp=node_pt(n)->x(i);
1694  // oomph_info << "tmp: "<< tmp << std::endl;
1695  return node_pt(n)->x(i);
1696  }

References i, n, node_pt(), and oomph::Node::x().

Referenced by oomph::AxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::AxisymFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::FoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::AxisymmetricLinearElasticityEquations::fill_in_generic_contribution_to_residuals_axisymmetric_linear_elasticity(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::fill_in_generic_contribution_to_residuals_fourier_decomp_time_harmonic_linear_elasticity(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::PolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::SteadyAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::FourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_fourier_decomposed_helmholtz(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_lin_axi_nst(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::PeriodicOrbitEquations::fill_in_generic_residual_contribution_orbit(), oomph::PMLFourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_pml_fourier_decomposed_helmholtz(), oomph::SphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::SphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::AxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::AxisymmetricLinearElasticityEquations::get_strain(), oomph::AxisymFoepplvonKarmanEquations::interpolated_stress(), and oomph::PeriodicOrbitEquations::orbit_output().

◆ raw_nodal_position() [2/2]

double oomph::FiniteElement::raw_nodal_position ( const unsigned t,
const unsigned n,
const unsigned i 
) const
inline

Return the i-th coordinate at local node n, at time level t (t=0: present; t>0: previous time level). Do not use the hanging node representation.

2250  {
2251  return node_pt(n)->x(t, i);
2252  }

References i, n, node_pt(), plotPSD::t, and oomph::Node::x().

◆ raw_nodal_position_gen() [1/2]

◆ raw_nodal_position_gen() [2/2]

double oomph::FiniteElement::raw_nodal_position_gen ( const unsigned t,
const unsigned n,
const unsigned k,
const unsigned i 
) const
inline

Return the generalised nodal position (type k, i-th variable) at previous timesteps at local node n. Do not use the hanging node representation.

2286  {
2287  return node_pt(n)->x_gen(t, k, i);
2288  }

References i, k, n, node_pt(), plotPSD::t, and oomph::Node::x_gen().

◆ raw_nodal_value() [1/2]

double oomph::FiniteElement::raw_nodal_value ( const unsigned n,
const unsigned i 
) const
inline

Return the i-th value stored at local node n but do NOT take hanging nodes into account

2577  {
2578  return node_pt(n)->raw_value(i);
2579  }
double raw_value(const unsigned &i) const
Definition: nodes.h:1455

References i, n, node_pt(), and oomph::Node::raw_value().

Referenced by oomph::AxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_contribution_to_hessian_vector_products(), oomph::AxisymFoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::FoepplvonKarmanEquations::fill_in_contribution_to_residuals(), oomph::AxisymmetricLinearElasticityEquations::fill_in_generic_contribution_to_residuals_axisymmetric_linear_elasticity(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::fill_in_generic_contribution_to_residuals_fourier_decomp_time_harmonic_linear_elasticity(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_dresidual_contribution_axi_nst(), oomph::AxisymmetricPoroelasticityEquations::fill_in_generic_residual_contribution(), oomph::PolarStreamfunctionEquations::fill_in_generic_residual_contribution(), oomph::SteadyAxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::fill_in_generic_residual_contribution_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::FourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_fourier_decomposed_helmholtz(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_lin_axi_nst(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::fill_in_generic_residual_contribution_linearised_nst(), oomph::PMLFourierDecomposedHelmholtzEquations::fill_in_generic_residual_contribution_pml_fourier_decomposed_helmholtz(), oomph::SphericalAdvectionDiffusionEquations::fill_in_generic_residual_contribution_spherical_adv_diff(), oomph::SphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::fill_in_off_diagonal_block_analytic(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::fill_in_off_diagonal_jacobian_blocks_analytic(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::get_body_force_nst(), oomph::FoepplvonKarmanEquations::get_bounded_volume(), oomph::AxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::AxisymmetricLinearElasticityEquations::get_strain(), oomph::AxisymFoepplvonKarmanEquations::interpolated_stress(), oomph::FoepplvonKarmanEquations::interpolated_stress(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::interpolated_u(), oomph::MyTaylorHoodElement< DIM >::square_of_l2_norm(), and oomph::LinearisedNavierStokesEquations::strain_rate().

◆ raw_nodal_value() [2/2]

double oomph::FiniteElement::raw_nodal_value ( const unsigned t,
const unsigned n,
const unsigned i 
) const
inline

Return the i-th value stored at local node n, at time level t (t=0: present; t>0 previous timesteps), but do NOT take hanging nodes into account

2587  {
2588  return node_pt(n)->raw_value(t, i);
2589  }

References i, n, node_pt(), oomph::Node::raw_value(), and plotPSD::t.

◆ required_nvalue()

virtual unsigned oomph::FiniteElement::required_nvalue ( const unsigned n) const
inlinevirtual

Number of values that must be stored at local node n by the element. The default is 0, until over-ridden by a particular element. For example, a Poisson equation requires only one value to be stored at each node; 2D Navier–Stokes equations require two values (velocity components) to be stored at each Node (provided that the pressure interpolation is discontinuous).

Reimplemented in oomph::PoroelasticityEquations< 2 >, oomph::DarcyEquations< 2 >, oomph::PoroelasticityEquations< DIM >, oomph::DarcyEquations< DIM >, oomph::AxisymmetricPoroelasticityEquations, oomph::QYoungLaplaceElement< NNODE_1D >, oomph::QWomersleyElement< DIM, NNODE_1D >, oomph::TWomersleyElement< DIM, NNODE_1D >, oomph::QUnsteadyHeatElement< DIM, NNODE_1D >, oomph::QUnsteadyHeatElement< DIM, 3 >, oomph::TUnsteadyHeatElement< DIM, NNODE_1D >, oomph::TimeHarmonicLinearElasticityEquations< DIM >, oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations, oomph::QSteadyAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::QSphericalTaylorHoodElement, oomph::QSphericalCrouzeixRaviartElement, oomph::RefineableQSphericalTaylorHoodElement, oomph::QSphericalAdvectionDiffusionElement< NNODE_1D >, oomph::QUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >, oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >, oomph::QTaylorHoodMixedOrderSpaceTimeElement< 2 >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::QTaylorHoodSpaceTimeElement< DIM >, oomph::QTaylorHoodSpaceTimeElement< 2 >, oomph::TPVDElementWithContinuousPressure< DIM >, oomph::QPVDElementWithContinuousPressure< DIM >, oomph::RefineableQPVDElementWithContinuousPressure< DIM >, oomph::TPoroelasticityElement< ORDER >, oomph::RefineablePolarTaylorHoodElement, oomph::PolarTaylorHoodElement, oomph::PolarCrouzeixRaviartElement, oomph::TPoissonElement< DIM, NNODE_1D >, oomph::QSpectralPoissonElement< DIM, NNODE_1D >, oomph::QPoissonElement< DIM, NNODE_1D >, oomph::QPoissonElement< DIM, 2 >, oomph::PMLTimeHarmonicLinearElasticityEquations< DIM >, oomph::TPMLHelmholtzElement< DIM, NNODE_1D >, oomph::QPMLHelmholtzElement< DIM, NNODE_1D >, oomph::QPMLHelmholtzElement< 2, NNODE_1D >, oomph::TPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::QPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::TTaylorHoodElement< DIM >, oomph::TCrouzeixRaviartElement< DIM >, oomph::PRefineableQCrouzeixRaviartElement< DIM >, oomph::RefineableQTaylorHoodElement< DIM >, oomph::RefineableQTaylorHoodElement< 2 >, oomph::QTaylorHoodElement< DIM >, oomph::QTaylorHoodElement< 2 >, oomph::QCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableLinearisedQTaylorHoodElement, oomph::LinearisedQTaylorHoodElement, oomph::LinearisedQCrouzeixRaviartElement, oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::QLinearWaveElement< DIM, NNODE_1D >, oomph::LinearElasticityEquations< DIM >, oomph::THelmholtzElement< DIM, NNODE_1D >, oomph::QHelmholtzElement< DIM, NNODE_1D >, oomph::PseudoSolidNodeUpdateElement< TCrouzeixRaviartElement< 2 >, TPVDBubbleEnrichedElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< TTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianAxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< AxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianTTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::SpectralPeriodicOrbitElement< NNODE_1D >, oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianTCrouzeixRaviartElement< DIM >, oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >, oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianQTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianQCrouzeixRaviartElement< DIM >, oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement, oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricQTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement, oomph::TFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::QFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::TFoepplvonKarmanElement< NNODE_1D >, oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >, oomph::QFoepplvonKarmanElement< NNODE_1D >, oomph::QScalarAdvectionElement< DIM, NNODE_1D >, oomph::QScalarAdvectionElement< 1, NNODE_1D >, oomph::QScalarAdvectionElement< 2, NNODE_1D >, oomph::QSpectralScalarAdvectionElement< DIM, NNODE_1D >, oomph::QSpectralScalarAdvectionElement< 1, NNODE_1D >, oomph::QSpectralScalarAdvectionElement< 2, NNODE_1D >, oomph::ScalarAdvectionEquations< DIM >, oomph::EulerEquations< DIM >, oomph::TRaviartThomasDarcyElement< ORDER >, oomph::ProjectableDarcyElement< DARCY_ELEMENT >, oomph::BiharmonicElement< DIM >, oomph::TAxisymmetricPoroelasticityElement< ORDER >, oomph::AxisymmetricTTaylorHoodElement, oomph::AxisymmetricTCrouzeixRaviartElement, oomph::RefineableAxisymmetricQTaylorHoodElement, oomph::AxisymmetricQTaylorHoodElement, oomph::AxisymmetricQCrouzeixRaviartElement, oomph::AxisymmetricLinearElasticityEquations, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::AxisymFoepplvonKarmanElement< NNODE_1D >, oomph::QAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::QAxisymAdvectionDiffusionElement< 3 >, oomph::TAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::QAdvectionDiffusionReactionElement< 2, DIM, 3 >, oomph::QGeneralisedAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::QAdvectionDiffusionElement< DIM, 3 >, oomph::PolarStreamfunctionElement, TwoNodePoissonElement, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, QThermalPVDElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, RefineableQAdvectionDiffusionElementWithExternalElement< DIM >, RefineableQCrouzeixRaviartElementWithExternalElement< DIM >, RefineableBuoyantQCrouzeixRaviartElement< DIM >, QHarmonicElement< NNODE_1D >, SSPorousChannelElement, oomph::LinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQCrouzeixRaviartElement, oomph::QMultiPoissonElement< DIM, NNODE_1D, NFIELDS >, oomph::HomogenisedLinearElasticityEquations< DIM >, oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >, QOrrSommerfeldElement< 1, NNODE_1D >, QHarmonicElement< NNODE_1D >, QComplexHarmonicElement< NNODE_1D >, SSPorousChannelElement, GelfandBratuElement< NNODE_1D >, oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement, oomph::LinearisedAxisymmetricQTaylorHoodElement, and oomph::LinearisedAxisymmetricQCrouzeixRaviartElement.

2456  {
2457  return Default_Initial_Nvalue;
2458  }
static const unsigned Default_Initial_Nvalue
Default value for the number of values at a node.
Definition: elements.h:1370

References Default_Initial_Nvalue.

Referenced by oomph::GeneralisedElement::assign_local_eqn_numbers(), build_face_element(), oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >::construct_boundary_node(), construct_boundary_node(), oomph::SolidFiniteElement::construct_boundary_node(), oomph::ElementWithSpecificMovingNodes< ELEMENT, NODE_TYPE >::construct_node(), construct_node(), oomph::SolidFiniteElement::construct_node(), and oomph::BiharmonicEquations< DIM >::ndof_types().

◆ reset_after_nodal_fd()

virtual void oomph::FiniteElement::reset_after_nodal_fd ( )
inlineprotectedvirtual

Function that is call after the finite differencing of the nodal data. This may be overloaded to reset any dependent variables that may have changed during the finite differencing.

Reimplemented in oomph::FSIWallElement.

1714 {}

Referenced by fill_in_jacobian_from_nodal_by_fd(), and oomph::RefineableElement::fill_in_jacobian_from_nodal_by_fd().

◆ reset_in_nodal_fd()

virtual void oomph::FiniteElement::reset_in_nodal_fd ( const unsigned i)
inlineprotectedvirtual

Function called within the finite difference loop for nodal data after the i-th nodal values is reset. The default behaviour is to call the update function.

Reimplemented in oomph::FSIWallElement.

1724  {
1726  }

References i, and update_in_nodal_fd().

Referenced by fill_in_jacobian_from_nodal_by_fd(), and oomph::RefineableElement::fill_in_jacobian_from_nodal_by_fd().

◆ s_max()

◆ s_min()

◆ scalar_name_paraview()

virtual std::string oomph::FiniteElement::scalar_name_paraview ( const unsigned i) const
inlinevirtual

Name of the i-th scalar field. Default implementation returns V1 for the first one, V2 for the second etc. Can (should!) be overloaded with more meaningful names in specific elements.

Reimplemented in oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::PMLHelmholtzEquations< DIM >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::HelmholtzEquations< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::AxisymmetricPoroelasticityEquations, oomph::AxisymmetricNavierStokesEquations, oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >, oomph::AxisymAdvectionDiffusionEquations, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::MultiPoissonEquations< DIM, NFIELDS >, and oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >.

3044  {
3045  return "V" + StringConversion::to_string(i);
3046  }
std::string to_string(T object, unsigned float_precision=8)
Definition: oomph_utilities.h:189

References i, and oomph::StringConversion::to_string().

Referenced by oomph::Mesh::output_fct_paraview(), and oomph::Mesh::output_paraview().

◆ scalar_value_fct_paraview() [1/2]

virtual void oomph::FiniteElement::scalar_value_fct_paraview ( std::ofstream &  file_out,
const unsigned i,
const unsigned nplot,
const double time,
FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt 
) const
inlinevirtual

◆ scalar_value_fct_paraview() [2/2]

virtual void oomph::FiniteElement::scalar_value_fct_paraview ( std::ofstream &  file_out,
const unsigned i,
const unsigned nplot,
FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt 
) const
inlinevirtual

◆ scalar_value_paraview()

virtual void oomph::FiniteElement::scalar_value_paraview ( std::ofstream &  file_out,
const unsigned i,
const unsigned nplot 
) const
inlinevirtual

Write values of the i-th scalar field at the plot points. Broken virtual. Needs to be implemented for each new specific element type.

Reimplemented in oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::SpaceTimeNavierStokesEquations< DIM >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::PMLHelmholtzEquations< DIM >, oomph::NavierStokesEquations< DIM >, oomph::NavierStokesEquations< 2 >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::BuoyantQCrouzeixRaviartElement< DIM >, oomph::HelmholtzEquations< DIM >, oomph::GeneralisedNewtonianNavierStokesEquations< DIM >, oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations, oomph::AxisymmetricPoroelasticityEquations, oomph::AxisymmetricNavierStokesEquations, oomph::AxisymAdvectionDiffusionEquations, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, oomph::AxisymmetricQAdvectionCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::MultiPoissonEquations< DIM, NFIELDS >, and oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >.

3004  {
3005  throw OomphLibError(
3006  "This function hasn't been implemented for this element",
3009  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::Mesh::output_paraview().

◆ self_test()

unsigned FiniteElement::self_test ( )
virtual

Self-test: Check inversion of element & do self-test for GeneralisedElement. Return 0 if OK.

Self-test: Have all internal values been classified as pinned/unpinned? Has pointer to spatial integration scheme been set? Return 0 if OK.

Reimplemented from oomph::GeneralisedElement.

Reimplemented in oomph::YoungLaplaceEquations, oomph::WomersleyEquations< DIM >, oomph::UnsteadyHeatEquations< DIM >, oomph::UnsteadyHeatEquations< 2 >, oomph::SteadyAxisymAdvectionDiffusionEquations, oomph::SphericalAdvectionDiffusionEquations, oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, oomph::SpaceTimeUnsteadyHeatEquations< 2 >, oomph::PoroelasticityEquations< DIM >, oomph::PoroelasticityEquations< 2 >, oomph::PoissonEquations< DIM >, oomph::PoissonEquations< 1 >, oomph::PoissonEquations< 2 >, oomph::PoissonEquations< 3 >, oomph::PMLHelmholtzEquations< DIM >, oomph::PMLFourierDecomposedHelmholtzEquations, oomph::LinearWaveEquations< DIM >, oomph::HelmholtzEquations< DIM >, oomph::FourierDecomposedHelmholtzEquations, oomph::FoepplvonKarmanEquations, oomph::DisplacementBasedFoepplvonKarmanEquations, oomph::DarcyEquations< DIM >, oomph::DarcyEquations< 2 >, oomph::BiharmonicEquations< DIM >, oomph::AxisymmetricPoroelasticityEquations, oomph::AxisymFoepplvonKarmanEquations, oomph::AxisymFoepplvonKarmanEquations, oomph::AxisymAdvectionDiffusionEquations, oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >, oomph::GeneralisedAdvectionDiffusionEquations< DIM >, oomph::GeneralisedAdvectionDiffusionEquations< 2 >, oomph::AdvectionDiffusionEquations< DIM >, oomph::AdvectionDiffusionEquations< 2 >, ModalPRefineableQPoissonElement< DIM >, ModalPoissonEquations< DIM >, TwoNodePoissonElement, and oomph::MultiPoissonEquations< DIM, NFIELDS >.

4441  {
4442  // Initialise
4443  bool passed = true;
4444 
4445  if (GeneralisedElement::self_test() != 0)
4446  {
4447  passed = false;
4448  }
4449 
4450  // Check that pointer to spatial integration scheme has been set
4451  if (integral_pt() == 0)
4452  {
4453  passed = false;
4454 
4455  OomphLibWarning("Pointer to spatial integration scheme has not been set.",
4456  "FiniteElement::self_test()",
4458  }
4459 
4460  // If the dimension of the element is zero (point element), there
4461  // is not jacobian
4462  const unsigned dim_el = dim();
4463 
4464  if (dim_el > 0)
4465  {
4466  // Loop over integration points to check sign of Jacobian
4467  //-------------------------------------------------------
4468 
4469  // Set the value of n_intpt
4470  const unsigned n_intpt = integral_pt()->nweight();
4471 
4472  // Set the Vector to hold local coordinates
4473  Vector<double> s(dim_el);
4474 
4475  // Find the number of local nodes
4476  const unsigned n_node = nnode();
4477  const unsigned n_position_type = nnodal_position_type();
4478  // Set up memory for the shape and test functions
4479  Shape psi(n_node, n_position_type);
4480  DShape dpsidx(n_node, dim_el);
4481 
4482  // Jacobian
4483  double jacobian;
4484 
4485 
4486  // Two ways of testing for negative Jacobian for non-FaceElements
4487  unsigned ntest = 1;
4488 
4489  // For FaceElements checking the Jacobian via dpsidx doesn't
4490  // make sense
4491  FiniteElement* tmp_pt = const_cast<FiniteElement*>(this);
4492  FaceElement* face_el_pt = dynamic_cast<FaceElement*>(tmp_pt);
4493  if (face_el_pt == 0)
4494  {
4495  ntest = 2;
4496  }
4497 
4498  // For now overwrite -- the stuff above fails for Bretherton.
4499  // Not sure why.
4500  ntest = 1;
4501 
4502  // Loop over the integration points
4503  for (unsigned ipt = 0; ipt < n_intpt; ipt++)
4504  {
4505  // Assign values of s
4506  for (unsigned i = 0; i < dim_el; i++)
4507  {
4508  s[i] = integral_pt()->knot(ipt, i);
4509  }
4510 
4511 
4512  // Do tests
4513  for (unsigned test = 0; test < ntest; test++)
4514  {
4515  switch (test)
4516  {
4517  case 0:
4518 
4519  // Get the jacobian from the mapping between local and Eulerian
4520  // coordinates
4521  jacobian = J_eulerian(s);
4522 
4523  break;
4524 
4525  case 1:
4526 
4527  // Call the geometrical shape functions and derivatives
4528  // This also computes the Jacobian by a slightly different
4529  // method
4530  jacobian = dshape_eulerian_at_knot(ipt, psi, dpsidx);
4531 
4532  break;
4533 
4534  default:
4535 
4536  throw OomphLibError("Never get here",
4539  }
4540 
4541 
4542  // Check for a singular jacobian
4543  if (std::fabs(jacobian) < 1.0e-16)
4544  {
4545  std::ostringstream warning_stream;
4546  warning_stream << "Determinant of Jacobian matrix is zero at ipt "
4547  << ipt << std::endl;
4548  OomphLibWarning(warning_stream.str(),
4549  "FiniteElement::self_test()",
4551  passed = false;
4552  // Skip the next test
4553  continue;
4554  }
4555 
4556  // Check sign of Jacobian
4557  if ((Accept_negative_jacobian == false) && (jacobian < 0.0))
4558  {
4559  std::ostringstream warning_stream;
4560  warning_stream << "Jacobian negative at integration point ipt="
4561  << ipt << std::endl;
4562  warning_stream
4563  << "If you think that this is what you want you may: "
4564  << std::endl
4565  << "set the (static) flag "
4566  << "FiniteElement::Accept_negative_jacobian to be true"
4567  << std::endl;
4568 
4569  OomphLibWarning(warning_stream.str(),
4570  "FiniteElement::self_test()",
4572  passed = false;
4573  }
4574 
4575  } // end of loop over two tests
4576  }
4577  } // End of non-zero dimension check
4578 
4579  // Return verdict
4580  if (passed)
4581  {
4582  return 0;
4583  }
4584  else
4585  {
4586  return 1;
4587  }
4588  }
FiniteElement()
Constructor.
Definition: elements.h:1782
virtual unsigned self_test()
Definition: elements.cc:1603
Definition: indexed_view.cpp:20

References Accept_negative_jacobian, dim(), dshape_eulerian_at_knot(), boost::multiprecision::fabs(), i, integral_pt(), J_eulerian(), oomph::Integral::knot(), nnodal_position_type(), nnode(), oomph::Integral::nweight(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, s, and oomph::GeneralisedElement::self_test().

Referenced by oomph::MultiPoissonEquations< DIM, NFIELDS >::self_test(), oomph::AdvectionDiffusionEquations< DIM >::self_test(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::self_test(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::self_test(), oomph::AxisymAdvectionDiffusionEquations::self_test(), oomph::AxisymFoepplvonKarmanEquations::self_test(), oomph::BiharmonicEquations< DIM >::self_test(), oomph::DisplacementBasedFoepplvonKarmanEquations::self_test(), oomph::FoepplvonKarmanEquations::self_test(), oomph::FourierDecomposedHelmholtzEquations::self_test(), oomph::HelmholtzEquations< DIM >::self_test(), oomph::LinearWaveEquations< DIM >::self_test(), oomph::PMLFourierDecomposedHelmholtzEquations::self_test(), oomph::PMLHelmholtzEquations< DIM >::self_test(), oomph::PoissonEquations< DIM >::self_test(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::self_test(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::self_test(), oomph::SphericalAdvectionDiffusionEquations::self_test(), oomph::SteadyAxisymAdvectionDiffusionEquations::self_test(), oomph::UnsteadyHeatEquations< DIM >::self_test(), oomph::WomersleyEquations< DIM >::self_test(), and oomph::YoungLaplaceEquations::self_test().

◆ set_dimension()

void oomph::FiniteElement::set_dimension ( const unsigned dim)
inline

Set the dimension of the element and initially set the dimension of the nodes to be the same as the dimension of the element.

1381  {
1383  Nodal_dimension = dim;
1384  }

References dim(), Elemental_dimension, and Nodal_dimension.

Referenced by oomph::QHermiteElement< DIM >::QHermiteElement().

◆ set_integration_scheme()

void FiniteElement::set_integration_scheme ( Integral *const &  integral_pt)
virtual

◆ set_macro_elem_pt()

◆ set_n_node()

void oomph::FiniteElement::set_n_node ( const unsigned n)
inline

Set the number of nodes in the element to n, by resizing the storage for pointers to the Node objects.

1405  {
1406  // This should only be done once, in a Node constructor
1407  //#ifdef PARANOID
1408  // if(Node_pt)
1409  // {
1410  // OomphLibWarning(
1411  // "You are resetting the number of nodes in an element -- Be careful",
1412  // "FiniteElement::set_n_node()",
1413  // OOMPH_EXCEPTION_LOCATION);
1414  // }
1415  //#endif
1416  // Delete any previous storage to avoid memory leaks
1417  // This will only happen in very special cases
1418  delete[] Node_pt;
1419  // Set the number of nodes
1420  Nnode = n;
1421  // Allocate the storage
1422  Node_pt = new Node*[n];
1423  // Initialise all the pointers to NULL
1424  for (unsigned i = 0; i < n; i++)
1425  {
1426  Node_pt[i] = 0;
1427  }
1428  }

References i, n, Nnode, and Node_pt.

Referenced by oomph::PointElement::PointElement(), and oomph::QHermiteElement< DIM >::QHermiteElement().

◆ set_nnodal_position_type()

void oomph::FiniteElement::set_nnodal_position_type ( const unsigned nposition_type)
inline

◆ set_nodal_dimension()

◆ shape()

virtual void oomph::FiniteElement::shape ( const Vector< double > &  s,
Shape psi 
) const
pure virtual

Calculate the geometric shape functions at local coordinate s. This function must be overloaded for each specific geometric element.

Implemented in oomph::ClampedHermiteShellBoundaryConditionElement, oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >, oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::PointElement, TwoNodeGeometricElement, FixSpineHeightElement, and FixSpineHeightElement.

Referenced by oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::add_element_contribution_to_aux_integral(), oomph::AdvectionDiffusionEquations< DIM >::dinterpolated_u_adv_diff_ddata(), oomph::RefineableAdvectionDiffusionEquations< DIM >::dinterpolated_u_adv_diff_ddata(), oomph::RefineableAxisymAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::RefineableSphericalAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::SphericalAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::SteadyAxisymAdvectionDiffusionEquations::dinterpolated_u_adv_diff_ddata(), oomph::AxisymAdvectionDiffusionEquations::dinterpolated_u_axi_adv_diff_ddata(), oomph::AxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::RefineableAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::dinterpolated_u_axi_nst_ddata(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableGeneralisedNewtonianNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::NavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::SpaceTimeNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableSpaceTimeNavierStokesEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::RefineableSpaceTimeNavierStokesMixedOrderEquations< DIM >::dinterpolated_u_nst_ddata(), oomph::Z2ErrorEstimator::doc_flux(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::dposition_dt(), oomph::NodeElementSolidOnlyMortaringElement::fill_in_contribution_to_jacobian_mortared_nodes(), oomph::SolidFiniteElement::fill_in_generic_jacobian_for_solid_ic(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::get_body_force_nst(), oomph::Z2ErrorEstimator::get_element_errors(), oomph::ProjectableAdvectionDiffusionReactionElement< ADR_ELEMENT >::get_field(), oomph::ProjectableAxisymLinearElasticityElement< AXISYM_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::get_field(), oomph::ProjectableDisplacementBasedFoepplvonKarmanElement< FVK_ELEMENT >::get_field(), oomph::ProjectableFoepplvonKarmanElement< FVK_ELEMENT >::get_field(), oomph::ProjectableFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::get_field(), oomph::GeneralisedNewtonianProjectableAxisymmetricTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::get_field(), oomph::ProjectableGeneralisedNewtonianTaylorHoodElement< TAYLOR_HOOD_ELEMENT >::get_field(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::get_field(), oomph::ProjectableHelmholtzElement< HELMHOLTZ_ELEMENT >::get_field(), oomph::ProjectableLinearElasticityElement< LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectablePMLFourierDecomposedHelmholtzElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >::get_field(), oomph::ProjectablePMLHelmholtzElement< HELMHOLTZ_ELEMENT >::get_field(), oomph::ProjectablePMLTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectablePoissonElement< POISSON_ELEMENT >::get_field(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::get_field(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::get_field(), oomph::ProjectableTimeHarmonicFourierDecomposedLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableTimeHarmonicLinearElasticityElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >::get_field(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::get_field(), oomph::SurfaceMeltElement< ELEMENT >::get_interpolated_lagrange_p(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::get_interpolated_values(), oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableAxisymmetricQTaylorHoodElement::get_interpolated_values(), oomph::RefineableAxisymmetricQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::get_interpolated_values(), oomph::RefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::RefineableLinearElasticityEquations< DIM >::get_interpolated_values(), oomph::RefineableLinearisedQCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableLinearisedQTaylorHoodElement::get_interpolated_values(), oomph::RefineableQTaylorHoodElement< DIM >::get_interpolated_values(), oomph::RefineableQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::get_interpolated_values(), oomph::RefineablePolarTaylorHoodElement::get_interpolated_values(), oomph::RefineablePolarCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableQSphericalTaylorHoodElement::get_interpolated_values(), oomph::RefineableQSphericalCrouzeixRaviartElement::get_interpolated_values(), oomph::RefineableTimeHarmonicLinearElasticityEquations< DIM >::get_interpolated_values(), oomph::RefineablePolarStreamfunctionEquations::get_interpolated_values(), oomph::RefineableAdvectionDiffusionEquations< DIM >::get_interpolated_values(), oomph::RefineableGeneralisedAdvectionDiffusionEquations< DIM >::get_interpolated_values(), oomph::RefineableAdvectionDiffusionReactionEquations< NREAGENT, DIM >::get_interpolated_values(), oomph::RefineableAxisymAdvectionDiffusionEquations::get_interpolated_values(), oomph::RefineableGeneralisedAxisymAdvectionDiffusionEquations::get_interpolated_values(), oomph::RefineableHelmholtzEquations< DIM >::get_interpolated_values(), oomph::RefineableLinearWaveEquations< DIM >::get_interpolated_values(), oomph::RefineablePMLHelmholtzEquations< DIM >::get_interpolated_values(), oomph::RefineablePoissonEquations< DIM >::get_interpolated_values(), oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_interpolated_values(), oomph::RefineableSpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_interpolated_values(), oomph::RefineableSphericalAdvectionDiffusionEquations::get_interpolated_values(), oomph::RefineableUnsteadyHeatEquations< DIM >::get_interpolated_values(), oomph::RefineableYoungLaplaceEquations::get_interpolated_values(), oomph::PMLHelmholtzPowerElement< ELEMENT >::global_flux_contribution(), oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >::global_power_contribution(), oomph::HelmholtzBCElementBase< ELEMENT >::global_power_contribution(), oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >::global_power_contribution(), oomph::PMLHelmholtzPowerElement< ELEMENT >::global_power_contribution(), oomph::SurfactantTransportInterfaceElement::interpolated_C(), oomph::AdvectionDiffusionReactionEquations< NREAGENT, DIM >::interpolated_c_adv_diff_react(), oomph::SolubleSurfactantTransportInterfaceElement::interpolated_C_bulk(), oomph::AxisymmetricLinearElasticityEquationsBase::interpolated_d2u_dt2_axisymmetric_linear_elasticity(), oomph::LinearWaveEquations< DIM >::interpolated_d2u_dt2_lin_wave(), oomph::AxisymmetricPoroelasticityEquations::interpolated_du_dt(), oomph::AxisymmetricLinearElasticityEquationsBase::interpolated_du_dt_axisymmetric_linear_elasticity(), oomph::LinearWaveEquations< DIM >::interpolated_du_dt_lin_wave(), oomph::UnsteadyHeatEquations< DIM >::interpolated_du_dt_ust_heat(), oomph::AxisymmetricNavierStokesEquations::interpolated_dudt_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_dudt_axi_nst(), interpolated_dxdt(), oomph::PerturbedSpineLinearisedAxisymmetricFluidInterfaceElement< ELEMENT >::interpolated_H(), oomph::SolubleSurfactantTransportInterfaceElement::interpolated_M(), oomph::SurfaceMeltElement< ELEMENT >::interpolated_melt_rate(), oomph::LinearisedAxisymmetricNavierStokesEquations::interpolated_nodal_position_perturbation_lin_axi_nst(), oomph::PolarStreamfunctionEquations::interpolated_streamfunction(), oomph::YoungLaplaceEquations::interpolated_u(), oomph::LinearisedAxisymmetricFluidInterfaceElement::interpolated_u(), oomph::FluidInterfaceElement::interpolated_u(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::interpolated_u(), oomph::AxisymmetricPoroelasticityEquations::interpolated_u(), oomph::PoroelasticityEquations< DIM >::interpolated_u(), oomph::DGFaceElement::interpolated_u(), oomph::AdvectionDiffusionEquations< DIM >::interpolated_u_adv_diff(), oomph::SteadyAxisymAdvectionDiffusionEquations::interpolated_u_adv_diff(), oomph::AxisymAdvectionDiffusionEquations::interpolated_u_axi_adv_diff(), oomph::AxisymmetricNavierStokesEquations::interpolated_u_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::interpolated_u_axi_nst(), oomph::AxisymmetricLinearElasticityEquationsBase::interpolated_u_axisymmetric_linear_elasticity(), oomph::BiharmonicEquations< DIM >::interpolated_u_biharmonic(), oomph::GeneralisedAdvectionDiffusionEquations< DIM >::interpolated_u_cons_adv_diff(), oomph::FourierDecomposedHelmholtzEquations::interpolated_u_fourier_decomposed_helmholtz(), oomph::AxisymFoepplvonKarmanEquations::interpolated_u_fvk(), oomph::HelmholtzEquations< DIM >::interpolated_u_helmholtz(), oomph::LinearisedAxisymmetricNavierStokesEquations::interpolated_u_lin_axi_nst(), oomph::LinearWaveEquations< DIM >::interpolated_u_lin_wave(), oomph::LinearSurfaceContactElement< ELEMENT >::interpolated_u_linear_elasticity(), oomph::HomogenisedLinearElasticityEquationsBase::interpolated_u_linear_elasticity(), oomph::LinearElasticityEquationsBase< DIM >::interpolated_u_linear_elasticity(), oomph::LinearisedAxisymmetricNavierStokesEquations::interpolated_u_linearised_axi_nst(), oomph::LinearisedNavierStokesEquations::interpolated_u_linearised_nst(), oomph::MultiPoissonEquations< DIM, NFIELDS >::interpolated_u_multi_poisson(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::interpolated_u_nst(), oomph::NavierStokesEquations< DIM >::interpolated_u_nst(), oomph::SpaceTimeNavierStokesEquations< DIM >::interpolated_u_nst(), oomph::PMLFourierDecomposedHelmholtzEquations::interpolated_u_pml_fourier_decomposed_helmholtz(), oomph::PMLHelmholtzEquations< DIM >::interpolated_u_pml_helmholtz(), oomph::PolarNavierStokesEquations::interpolated_u_pnst(), oomph::PoissonEquations< DIM >::interpolated_u_poisson(), oomph::SphericalAdvectionDiffusionEquations::interpolated_u_spherical_adv_diff(), oomph::SphericalNavierStokesEquations::interpolated_u_spherical_nst(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquationsBase::interpolated_u_time_harmonic_fourier_decomposed_linear_elasticity(), oomph::PMLTimeHarmonicLinearElasticityEquationsBase< DIM >::interpolated_u_time_harmonic_linear_elasticity(), oomph::TimeHarmonicLinearElasticityEquationsBase< DIM >::interpolated_u_time_harmonic_linear_elasticity(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_u_ust_heat(), oomph::UnsteadyHeatEquations< DIM >::interpolated_u_ust_heat(), oomph::WomersleyEquations< DIM >::interpolated_u_womersley(), oomph::PolarStreamfunctionEquations::interpolated_velocity(), oomph::PolarStreamfunctionEquations::interpolated_vorticity(), oomph::AxisymFoepplvonKarmanEquations::interpolated_w_fvk(), oomph::DisplacementBasedFoepplvonKarmanEquations::interpolated_w_fvk(), oomph::FoepplvonKarmanEquations::interpolated_w_fvk(), interpolated_x(), oomph::SolidFiniteElement::interpolated_xi(), interpolated_zeta(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::interpolating_basis(), oomph::RefineableAxisymmetricQTaylorHoodElement::interpolating_basis(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::interpolating_basis(), oomph::RefineableLinearisedQTaylorHoodElement::interpolating_basis(), oomph::RefineableQSphericalTaylorHoodElement::interpolating_basis(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::interpolating_basis(), oomph::RefineableElement::interpolating_basis(), oomph::RefineableQTaylorHoodElement< DIM >::interpolating_basis(), oomph::RefineablePolarTaylorHoodElement::interpolating_basis(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::interpolating_basis(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::interpolating_basis(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::interpolating_basis(), oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >::jacobian_and_shape_of_field(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::output(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::output(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::output(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::output_integration_points(), oomph::LinearisedAxisymmetricNavierStokesEquations::output_veloc(), oomph::AxisymmetricNavierStokesEquations::output_veloc(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_veloc(), oomph::LinearisedNavierStokesEquations::output_veloc(), oomph::PolarNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_veloc(), oomph::FSIAxisymFoepplvonKarmanElement< NNODE_1D, FLUID_ELEMENT >::position(), oomph::NodeElementSolidOnlyMortaringElement::position_in_element(), oomph::ProjectableAxisymmetricPoroelasticityElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >::residual_for_projection(), oomph::ProjectableDarcyElement< DARCY_ELEMENT >::residual_for_projection(), oomph::ProjectableElement< ELEMENT >::residual_for_projection(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::scalar_value_paraview(), oomph::AlgebraicElementBase::setup_algebraic_node_update(), oomph::MGSolver< DIM >::setup_interpolation_matrices_unstructured(), oomph::HelmholtzMGPreconditioner< DIM >::setup_interpolation_matrices_unstructured(), oomph::UnsteadyHeatBaseFaceElement< ELEMENT >::shape_and_test(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::shape_and_test(), oomph::AdvectionDiffusionFluxElement< ELEMENT >::shape_and_test(), oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >::shape_and_test(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::shape_and_test(), oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >::shape_and_test(), oomph::FourierDecomposedHelmholtzFluxElement< ELEMENT >::shape_and_test(), oomph::HelmholtzFluxElement< ELEMENT >::shape_and_test(), oomph::LinearWaveFluxElement< ELEMENT >::shape_and_test(), oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test(), oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test(), oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test(), oomph::PMLFourierDecomposedHelmholtzFluxElement< ELEMENT >::shape_and_test(), oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >::shape_and_test(), oomph::PMLHelmholtzFluxElement< ELEMENT >::shape_and_test(), oomph::PoissonFluxElement< ELEMENT >::shape_and_test(), oomph::SphericalAdvectionDiffusionFluxElement< ELEMENT >::shape_and_test(), oomph::SteadyAxisymAdvectionDiffusionFluxElement< ELEMENT >::shape_and_test(), oomph::UnsteadyHeatFluxElement< ELEMENT >::shape_and_test(), shape_at_knot(), oomph::SurfactantTransportInterfaceElement::sigma(), and oomph::HelmholtzBCElementBase< ELEMENT >::test_only().

◆ shape_at_knot()

void FiniteElement::shape_at_knot ( const unsigned ipt,
Shape psi 
) const
virtual

Return the geometric shape function at the ipt-th integration point

Return the shape function stored at the ipt-th integration point.

Reimplemented in oomph::StorableShapeElementBase.

3221  {
3222  // Find the dimension of the element
3223  const unsigned el_dim = dim();
3224  // Storage for the local coordinates of the integration point
3225  Vector<double> s(el_dim);
3226  // Set the local coordinate
3227  for (unsigned i = 0; i < el_dim; i++)
3228  {
3229  s[i] = integral_pt()->knot(ipt, i);
3230  }
3231  // Get the shape function
3232  shape(s, psi);
3233  }

References dim(), el_dim, i, integral_pt(), oomph::Integral::knot(), s, and shape().

Referenced by oomph::DGFaceElement::add_flux_contributions(), oomph::ImposeImpenetrabilityElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::ImposeParallelOutflowElement< ELEMENT >::fill_in_generic_contribution_to_residuals_parall_lagr_multiplier(), oomph::AxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::SphericalNavierStokesEquations::get_pressure_and_velocity_mass_matrix_diagonal(), oomph::SolubleSurfactantTransportInterfaceElement::integrated_C(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::integrated_C_and_M(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::integrated_C_and_M(), oomph::SolubleSurfactantTransportInterfaceElement::l2_norm_of_height(), oomph::InterpolateFromIntegralPointsBase::pre_compute_ipt_to_node_mapping(), oomph::StorableShapeElementBase::pre_compute_shape_at_knots(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::set_boundary_shape_geom_object_pt(), oomph::PolarStreamfunctionTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::NavierStokesFluxControlElement< ELEMENT >::shape_and_test_at_knot(), oomph::AdvectionDiffusionFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::LinearisedFSIAxisymmetricNStNoSlipBCElementElement< FLUID_BULK_ELEMENT, SOLID_BULK_ELEMENT >::shape_and_test_at_knot(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::shape_and_test_at_knot(), oomph::FourierDecomposedHelmholtzFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::HelmholtzFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::FourierDecomposedHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test_at_knot(), oomph::HelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test_at_knot(), oomph::PMLHelmholtzFluxFromNormalDisplacementBCElement< HELMHOLTZ_BULK_ELEMENT, ELASTICITY_BULK_ELEMENT >::shape_and_test_at_knot(), oomph::NavierStokesTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::PMLFourierDecomposedHelmholtzFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::PMLHelmholtzFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::PoissonFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::PolarNavierStokesTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::PolarStressIntegralElement< ELEMENT >::shape_and_test_at_knot(), oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::SphericalAdvectionDiffusionFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::SteadyAxisymAdvectionDiffusionFluxElement< ELEMENT >::shape_and_test_at_knot(), oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >::shape_and_test_at_knot(), and oomph::StorableShapeElementBase::shape_at_knot().

◆ size()

double FiniteElement::size ( ) const

Calculate the size of the element (length, area, volume,...) in Eulerian computational coordinates. Use suitably overloaded compute_physical_size() function to compute the actual size (taking into account factors such as 2pi or radii the integrand) – such function can only be implemented on an equation-by-equation basis.

Calculate the size of the element (in Eulerian computational coordinates. Use suitably overloaded compute_physical_size() function to compute the actual size (taking into account factors such as 2pi or radii the integrand). Such function can only be implemented on an equation-by-equation basis.

4291  {
4292  // Initialise the sum to zero
4293  double sum = 0.0;
4294 
4295  // Loop over the integration points
4296  const unsigned n_intpt = integral_pt()->nweight();
4297  for (unsigned ipt = 0; ipt < n_intpt; ipt++)
4298  {
4299  // Get the integral weight
4300  double w = integral_pt()->weight(ipt);
4301  // Get the value of the Jacobian of the mapping to global coordinates
4302  double J = J_eulerian_at_knot(ipt);
4303 
4304  // Add the product to the sum
4305  sum += w * J;
4306  }
4307 
4308  // Return the answer
4309  return (sum);
4310  }
virtual double J_eulerian_at_knot(const unsigned &ipt) const
Definition: elements.cc:4168

References integral_pt(), J, J_eulerian_at_knot(), oomph::Integral::nweight(), w, and oomph::Integral::weight().

Referenced by oomph::RefineableTetgenMesh< ELEMENT >::adapt(), oomph::RefineableTriangleMesh< ELEMENT >::compute_area_target(), SurfactantProblem< ELEMENT, INTERFACE_ELEMENT >::compute_areas(), oomph::RefineableTetgenMesh< ELEMENT >::compute_volume_target(), oomph::RefineableTetMeshBase::compute_volume_target(), oomph::FaceElement::continuous_tangent_and_outer_unit_normal(), oomph::GmshTetScaffoldMesh::create_mesh_from_msh_file(), TetmeshPoissonProblem< ELEMENT >::doc_solution(), RefineableQCrouzeixRaviartElementWithTwoExternalElement< DIM >::get_dbody_force_nst_dexternal_element_data(), QCrouzeixRaviartElementWithTwoExternalElement< DIM >::get_dbody_force_nst_dexternal_element_data(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::StefanBoltzmannRadiationBase::output_stefan_boltzmann_radiation_rays(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::NavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesEquations< DIM >::pin_all_non_pressure_dofs(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::pin_all_non_pressure_dofs(), and oomph::Mesh::total_size().

◆ tecplot_zone_string()

virtual std::string oomph::FiniteElement::tecplot_zone_string ( const unsigned nplot) const
inlinevirtual

Return string for tecplot zone header (when plotting nplot points in each "coordinate direction")

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, oomph::QHermiteElement< DIM - 1 >, oomph::QHermiteElement< DIM >, and oomph::QHermiteElement< DIM - 1 >.

3162  {
3163  throw OomphLibError(
3164  "tecplot_zone_string(...) is not implemented for this element\n",
3167  return "dummy return";
3168  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::BiharmonicEquations< DIM >::compute_error(), UnstructuredFluidProblem< ELEMENT >::doc_boundary_coordinates(), oomph::Mesh::doc_boundary_coordinates(), oomph::Z2ErrorEstimator::doc_flux(), PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::doc_solid_boundary_coordinates(), UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::doc_solid_boundary_coordinates(), oomph::PolarNavierStokesEquations::full_output(), oomph::SphericalNavierStokesEquations::full_output(), oomph::AxisymFoepplvonKarmanEquations::output(), oomph::NonlinearSurfaceContactElement< ELEMENT >::output(), oomph::LinearSurfaceContactElement< ELEMENT >::output(), oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >::output(), oomph::PolarStreamfunctionEquations::output(), oomph::AxisymmetricLinearElasticityEquations::output(), oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >::output(), oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >::output(), oomph::LinearisedAxisymPoroelasticBJS_FSIElement< FLUID_BULK_ELEMENT, POROELASTICITY_BULK_ELEMENT >::output(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::output(), oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::output(), oomph::FluidInterfaceElement::output(), oomph::SurfactantTransportInterfaceElement::output(), oomph::DisplacementBasedFoepplvonKarmanEquations::output(), oomph::FoepplvonKarmanEquations::output(), oomph::FourierDecomposedHelmholtzEquations::output(), oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >::output(), oomph::PMLFourierDecomposedHelmholtzEquations::output(), oomph::SolidTractionElement< ELEMENT >::output(), oomph::ImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::FSIImposeDisplacementByLagrangeMultiplierElement< ELEMENT >::output(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::output(), oomph::YoungLaplaceEquations::output(), oomph::LinearisedAxisymmetricNavierStokesEquations::output(), oomph::THomogenisedLinearElasticityElement< DIM, NNODE_1D >::output(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::output(), oomph::AxisymAdvectionDiffusionEquations::output(), oomph::AxisymmetricNavierStokesEquations::output(), oomph::AxisymmetricPoroelasticityEquations::output(), oomph::BiharmonicEquations< DIM >::output(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output(), oomph::LinearisedNavierStokesEquations::output(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), oomph::PoissonFluxElement< ELEMENT >::output(), oomph::PolarNavierStokesEquations::output(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::SphericalAdvectionDiffusionEquations::output(), oomph::SphericalNavierStokesEquations::output(), oomph::SteadyAxisymAdvectionDiffusionEquations::output(), oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::AxisymFoepplvonKarmanEquations::output_fct(), oomph::DisplacementBasedFoepplvonKarmanEquations::output_fct(), oomph::FoepplvonKarmanEquations::output_fct(), oomph::FourierDecomposedHelmholtzEquations::output_fct(), oomph::PMLFourierDecomposedHelmholtzEquations::output_fct(), oomph::YoungLaplaceEquations::output_fct(), oomph::AxisymAdvectionDiffusionEquations::output_fct(), oomph::AxisymmetricLinearElasticityEquations::output_fct(), oomph::AxisymmetricNavierStokesEquations::output_fct(), oomph::AxisymmetricPoroelasticityEquations::output_fct(), oomph::BiharmonicEquations< DIM >::output_fct(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_fct(), oomph::PolarNavierStokesEquations::output_fct(), oomph::SphericalAdvectionDiffusionEquations::output_fct(), oomph::SphericalNavierStokesEquations::output_fct(), oomph::SteadyAxisymAdvectionDiffusionEquations::output_fct(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::output_fct(), oomph::BiharmonicEquations< DIM >::output_fluid_velocity(), oomph::FourierDecomposedHelmholtzEquations::output_real(), oomph::PMLFourierDecomposedHelmholtzEquations::output_real(), oomph::FourierDecomposedHelmholtzEquations::output_real_fct(), oomph::PMLFourierDecomposedHelmholtzEquations::output_real_fct(), oomph::LinearisedAxisymmetricNavierStokesEquations::output_veloc(), oomph::AxisymmetricNavierStokesEquations::output_veloc(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_veloc(), oomph::LinearisedNavierStokesEquations::output_veloc(), oomph::PolarNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_vorticity(), oomph::FaceElement::output_zeta(), oomph::MGSolver< DIM >::plot(), oomph::Multi_domain_functions::setup_bulk_elements_adjacent_to_face_mesh(), and TFaceTestProblem< ELEMENT >::TFaceTestProblem().

◆ transform_derivatives()

void FiniteElement::transform_derivatives ( const DenseMatrix< double > &  inverse_jacobian,
DShape dbasis 
) const
protectedvirtual

Convert derivative w.r.t.local coordinates to derivatives w.r.t the coordinates used to assemble the inverse_jacobian passed in the mapping. On entry, dbasis must contain the basis function derivatives w.r.t. the local coordinates; it will contain the derivatives w.r.t. the new coordinates on exit. This is virtual so that it may be overloaded if desired for efficiency reasons.

Convert derivatives w.r.t local coordinates to derivatives w.r.t the coordinates used to assemble the inverse jacobian mapping passed as inverse_jacobian. The derivatives passed in dbasis will be modified in this function from dbasisds to dbasisdX.

Reimplemented in oomph::DiagQHermiteElement< DIM >.

2835  {
2836  // Find the number of basis functions and basis function types
2837  const unsigned n_basis = dbasis.nindex1();
2838  const unsigned n_basis_type = dbasis.nindex2();
2839  // Find the dimension of the array (Must be the elemental dimension)
2840  const unsigned n_dim = dim();
2841 
2842  // Allocate temporary (stack) storage of the dimension of the element
2843  double new_derivatives[n_dim];
2844 
2845  // Loop over the number of basis functions
2846  for (unsigned l = 0; l < n_basis; l++)
2847  {
2848  // Loop over type of basis functions
2849  for (unsigned k = 0; k < n_basis_type; k++)
2850  {
2851  // Loop over the coordinates
2852  for (unsigned j = 0; j < n_dim; j++)
2853  {
2854  // Zero the new transformed derivatives
2855  new_derivatives[j] = 0.0;
2856  // Do premultiplication by inverse jacobian
2857  for (unsigned i = 0; i < n_dim; i++)
2858  {
2859  new_derivatives[j] += inverse_jacobian(j, i) * dbasis(l, k, i);
2860  }
2861  }
2862  // We now copy the new derivatives into the shape functions
2863  for (unsigned j = 0; j < n_dim; j++)
2864  {
2865  dbasis(l, k, j) = new_derivatives[j];
2866  }
2867  }
2868  }
2869  }

References dim(), i, j, k, oomph::DShape::nindex1(), and oomph::DShape::nindex2().

Referenced by oomph::AxisymmetricTCrouzeixRaviartElement::dpshape_and_dptest_eulerian_axi_nst(), oomph::AxisymmetricTTaylorHoodElement::dpshape_and_dptest_eulerian_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement::dpshape_and_dptest_eulerian_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement::dpshape_and_dptest_eulerian_axi_nst(), dshape_eulerian(), dshape_eulerian_at_knot(), oomph::SolidFiniteElement::dshape_lagrangian(), oomph::SolidFiniteElement::dshape_lagrangian_at_knot(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_flux(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::interpolated_du_dt_nst(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), oomph::AxisymmetricPoroelasticityEquations::transform_basis(), and transform_second_derivatives_template().

◆ transform_derivatives_diagonal()

void FiniteElement::transform_derivatives_diagonal ( const DenseMatrix< double > &  inverse_jacobian,
DShape dbasis 
) const
protected

Convert derivative w.r.t local coordinates to derivatives w.r.t the coordinates used to assemble the inverse jacobian passed in the mapping, assuming that the coordinates are aligned in the direction of the local coordinates. On entry dbasis must contain the derivatives of the basis functions w.r.t. the local coordinates; it will contain the derivatives w.r.t. the new coordinates. are converted into the new using the mapping inverse_jacobian.

Convert derivatives w.r.t local coordinates to derivatives w.r.t the coordinates used to assemble the inverse jacobian mapping passed as inverse_jacobian, assuming that the mapping is diagonal. This merely saves a few loops, but is probably worth it.

2879  {
2880  // Find the number of basis functions and basis function types
2881  const unsigned n_basis = dbasis.nindex1();
2882  const unsigned n_basis_type = dbasis.nindex2();
2883  // Find the dimension of the array (must be the elemental dimension)
2884  const unsigned n_dim = dim();
2885 
2886  // Loop over the number of basis functions
2887  for (unsigned l = 0; l < n_basis; l++)
2888  {
2889  // Loop over type of basis functions
2890  for (unsigned k = 0; k < n_basis_type; k++)
2891  {
2892  // Loop over the coordinates
2893  for (unsigned j = 0; j < n_dim; j++)
2894  {
2895  dbasis(l, k, j) *= inverse_jacobian(j, j);
2896  }
2897  }
2898  }
2899  }

References dim(), j, k, oomph::DShape::nindex1(), and oomph::DShape::nindex2().

Referenced by oomph::DiagQHermiteElement< DIM >::transform_derivatives(), and transform_second_derivatives_diagonal().

◆ transform_second_derivatives()

void FiniteElement::transform_second_derivatives ( const DenseMatrix< double > &  jacobian,
const DenseMatrix< double > &  inverse_jacobian,
const DenseMatrix< double > &  jacobian2,
DShape dbasis,
DShape d2basis 
) const
protectedvirtual

Convert derivatives and second derivatives w.r.t. local coordiantes to derivatives and second derivatives w.r.t. the coordinates used to assemble the jacobian, inverse jacobian and jacobian2 passed to the function. By default this function will call transform_second_derivatives_template<>(...) using the dimension of the element as the template parameter. It is virtual so that it can be overloaded by a specific element to save using a switch statement. Optionally, the element writer may wish to use the transform_second_derivatives_diagonal<>(...) function On entry dbasis and d2basis must contain the derivatives w.r.t. the local coordinates; on exit they will be the derivatives w.r.t. the transformed coordinates.

Convert derivatives and second derivatives w.r.t. local coordiantes to derivatives and second derivatives w.r.t. the coordinates used to assemble the jacobian, inverse jacobian and jacobian2 passed to the function. This is a template-free general interface, that should be overloaded for efficiency

Reimplemented in oomph::DiagQHermiteElement< DIM >, oomph::QHermiteElement< DIM >, and oomph::QHermiteElement< DIM - 1 >.

3131  {
3132  // Find the dimension of the element
3133  const unsigned el_dim = dim();
3134  // Choose the appropriate function based on the dimension of the element
3135  switch (el_dim)
3136  {
3137  case 1:
3138  transform_second_derivatives_template<1>(
3139  jacobian, inverse_jacobian, jacobian2, dbasis, d2basis);
3140  break;
3141  case 2:
3142  transform_second_derivatives_template<2>(
3143  jacobian, inverse_jacobian, jacobian2, dbasis, d2basis);
3144  break;
3145 
3146  case 3:
3147  throw OomphLibError("Not implemented yet ... maybe one day",
3150 
3151  // transform_second_derivatives_template<3>(dphids,d2phids,jacobian,
3152  // inverse_jacobian,jacobian2,
3153  // dphidX,d2phidX);
3154  break;
3155  // Catch-all default case: issue warning and die
3156  default:
3157  std::ostringstream error_stream;
3158  error_stream << "Dimension of the element must be 1,2 or 3, not "
3159  << el_dim << std::endl;
3160 
3161  throw OomphLibError(
3162  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
3163  }
3164  }

References dim(), el_dim, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by d2shape_eulerian(), d2shape_eulerian_at_knot(), oomph::SolidFiniteElement::d2shape_lagrangian(), and oomph::SolidFiniteElement::d2shape_lagrangian_at_knot().

◆ transform_second_derivatives_diagonal() [1/3]

template<>
void oomph::FiniteElement::transform_second_derivatives_diagonal ( const DenseMatrix< double > &  jacobian,
const DenseMatrix< double > &  inverse_jacobian,
const DenseMatrix< double > &  jacobian2,
DShape dbasis,
DShape d2basis 
) const
protected

Convert derivatives and second derivatives w.r.t local coordinates to derivatives w.r.t. the coordinates used to assemble the jacobian, inverse_jacobian and jacobian 2 passed. This must be specialised for each dimension, otherwise it gets very ugly Specialisation to one dimension.

3066  {
3067  FiniteElement::transform_second_derivatives_template<1>(
3068  jacobian, inverse_jacobian, jacobian2, dbasis, d2basis);
3069  }

◆ transform_second_derivatives_diagonal() [2/3]

template<>
void oomph::FiniteElement::transform_second_derivatives_diagonal ( const DenseMatrix< double > &  jacobian,
const DenseMatrix< double > &  inverse_jacobian,
const DenseMatrix< double > &  jacobian2,
DShape dbasis,
DShape d2basis 
) const
protected

Convert second derivatives w.r.t. local coordinates to second derivatives w.r.t. the coordinates passed in the tensor coordinate. Specialised to two spatial dimension

3084  {
3085  // Find the number of basis functions and basis function types
3086  const unsigned n_basis = dbasis.nindex1();
3087  const unsigned n_basis_type = dbasis.nindex2();
3088 
3089  // Again we assume that there are no cross terms and that coordinate
3090  // i depends only upon local coordinate i
3091 
3092  // Now calculate the DShape d2phidx
3093  for (unsigned l = 0; l < n_basis; l++)
3094  {
3095  for (unsigned k = 0; k < n_basis_type; k++)
3096  {
3097  // Second derivatives
3098  d2basis(l, k, 0) =
3099  d2basis(l, k, 0) / (jacobian(0, 0) * jacobian(0, 0)) -
3100  dbasis(l, k, 0) * jacobian2(0, 0) /
3101  (jacobian(0, 0) * jacobian(0, 0) * jacobian(0, 0));
3102 
3103  d2basis(l, k, 1) =
3104  d2basis(l, k, 1) / (jacobian(1, 1) * jacobian(1, 1)) -
3105  dbasis(l, k, 1) * jacobian2(1, 1) /
3106  (jacobian(1, 1) * jacobian(1, 1) * jacobian(1, 1));
3107 
3108  d2basis(l, k, 2) = d2basis(l, k, 2) / (jacobian(0, 0) * jacobian(1, 1));
3109  }
3110  }
3111 
3112 
3113  // Assemble the first derivatives
3114  transform_derivatives_diagonal(inverse_jacobian, dbasis);
3115  }
void transform_derivatives_diagonal(const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const
Definition: elements.cc:2877

References k, oomph::DShape::nindex1(), oomph::DShape::nindex2(), and transform_derivatives_diagonal().

◆ transform_second_derivatives_diagonal() [3/3]

template<unsigned DIM>
void oomph::FiniteElement::transform_second_derivatives_diagonal ( const DenseMatrix< double > &  jacobian,
const DenseMatrix< double > &  inverse_jacobian,
const DenseMatrix< double > &  jacobian2,
DShape dbasis,
DShape d2basis 
) const
protected

Convert derivatives and second derivatives w.r.t. local coordinates to derivatives and second derivatives w.r.t. the coordinates used to asssmble the jacobian, inverse jacobian and jacobian2 passed in the mapping. This version of the function assumes that the local coordinates are aligned with the global coordinates, i.e. the jacobians are diagonal On entry dbasis and d2basis must contain the derivatives w.r.t. the local coordinates; on exit they will be the derivatives w.r.t. the transformed coordinates.

◆ transform_second_derivatives_template() [1/3]

template<>
void oomph::FiniteElement::transform_second_derivatives_template ( const DenseMatrix< double > &  jacobian,
const DenseMatrix< double > &  inverse_jacobian,
const DenseMatrix< double > &  jacobian2,
DShape dbasis,
DShape d2basis 
) const
protected

Convert derivatives and second derivatives w.r.t local coordinates to derivatives w.r.t. the coordinates used to assemble the jacobian, inverse_jacobian and jacobian 2 passed. This must be specialised for each dimension, otherwise it gets very ugly Specialisation to one dimension.

2915  {
2916  // Find the number of basis functions and basis function types
2917  const unsigned n_basis = dbasis.nindex1();
2918  const unsigned n_basis_type = dbasis.nindex2();
2919 
2920  // The second derivatives are easy, because there can be no mixed terms
2921  // Loop over number of basis functions
2922  for (unsigned l = 0; l < n_basis; l++)
2923  {
2924  // Loop over number of basis function types
2925  for (unsigned k = 0; k < n_basis_type; k++)
2926  {
2927  d2basis(l, k, 0) =
2928  d2basis(l, k, 0) / (jacobian(0, 0) * jacobian(0, 0))
2929  // Second term comes from taking d/dx of (dpsi/ds / dx/ds)
2930  - dbasis(l, k, 0) * jacobian2(0, 0) /
2931  (jacobian(0, 0) * jacobian(0, 0) * jacobian(0, 0));
2932  }
2933  }
2934 
2935  // Assemble the first derivatives (do this last so that we don't
2936  // overwrite the dphids before we use it in the above)
2937  transform_derivatives(inverse_jacobian, dbasis);
2938  }

References k, oomph::DShape::nindex1(), oomph::DShape::nindex2(), and transform_derivatives().

◆ transform_second_derivatives_template() [2/3]

template<>
void oomph::FiniteElement::transform_second_derivatives_template ( const DenseMatrix< double > &  jacobian,
const DenseMatrix< double > &  inverse_jacobian,
const DenseMatrix< double > &  jacobian2,
DShape dbasis,
DShape d2basis 
) const
protected

Convert derivatives and second derivatives w.r.t local coordinates to derivatives w.r.t. the coordinates used to assemble the jacobian, inverse_jacobian and jacobian 2 passed. This must be specialised for each dimension, otherwise it gets very ugly. Specialisation to two spatial dimensions

2954  {
2955  // Find the number of basis functions and basis function types
2956  const unsigned n_basis = dbasis.nindex1();
2957  const unsigned n_basis_type = dbasis.nindex2();
2958 
2959  // Calculate the determinant
2960  const double det =
2961  jacobian(0, 0) * jacobian(1, 1) - jacobian(0, 1) * jacobian(1, 0);
2962 
2963  // Second derivatives ... the approach taken here is to construct
2964  // dphidX/ds which can then be used to calculate the second derivatives
2965  // using the relationship d/dX = inverse_jacobian*d/ds
2966 
2967  double ddetds[2];
2968 
2969  ddetds[0] =
2970  jacobian2(0, 0) * jacobian(1, 1) + jacobian(0, 0) * jacobian2(2, 1) -
2971  jacobian2(0, 1) * jacobian(1, 0) - jacobian(0, 1) * jacobian2(2, 0);
2972  ddetds[1] =
2973  jacobian2(2, 0) * jacobian(1, 1) + jacobian(0, 0) * jacobian2(1, 1) -
2974  jacobian2(2, 1) * jacobian(1, 0) - jacobian(0, 1) * jacobian2(1, 0);
2975 
2976  // Calculate the derivatives of the inverse jacobian wrt the local
2977  // coordinates
2978  double dinverse_jacobiands[2][2][2];
2979 
2980  dinverse_jacobiands[0][0][0] =
2981  jacobian2(2, 1) / det - jacobian(1, 1) * ddetds[0] / (det * det);
2982  dinverse_jacobiands[0][1][0] =
2983  -jacobian2(0, 1) / det + jacobian(0, 1) * ddetds[0] / (det * det);
2984  dinverse_jacobiands[1][0][0] =
2985  -jacobian2(2, 0) / det + jacobian(1, 0) * ddetds[0] / (det * det);
2986  dinverse_jacobiands[1][1][0] =
2987  jacobian2(0, 0) / det - jacobian(0, 0) * ddetds[0] / (det * det);
2988 
2989  dinverse_jacobiands[0][0][1] =
2990  jacobian2(1, 1) / det - jacobian(1, 1) * ddetds[1] / (det * det);
2991  dinverse_jacobiands[0][1][1] =
2992  -jacobian2(2, 1) / det + jacobian(0, 1) * ddetds[1] / (det * det);
2993  dinverse_jacobiands[1][0][1] =
2994  -jacobian2(1, 0) / det + jacobian(1, 0) * ddetds[1] / (det * det);
2995  dinverse_jacobiands[1][1][1] =
2996  jacobian2(2, 0) / det - jacobian(0, 0) * ddetds[1] / (det * det);
2997 
2998  // Set up derivatives of dpsidx wrt local coordinates
2999  DShape dphidXds0(n_basis, n_basis_type, 2),
3000  dphidXds1(n_basis, n_basis_type, 2);
3001 
3002  for (unsigned l = 0; l < n_basis; l++)
3003  {
3004  for (unsigned k = 0; k < n_basis_type; k++)
3005  {
3006  for (unsigned j = 0; j < 2; j++)
3007  {
3008  // Note that we can't have an inner loop because of the
3009  // convention I've chosen for the mixed derivatives!
3010  dphidXds0(l, k, j) = dinverse_jacobiands[j][0][0] * dbasis(l, k, 0) +
3011  dinverse_jacobiands[j][1][0] * dbasis(l, k, 1) +
3012  inverse_jacobian(j, 0) * d2basis(l, k, 0) +
3013  inverse_jacobian(j, 1) * d2basis(l, k, 2);
3014 
3015  dphidXds1(l, k, j) = dinverse_jacobiands[j][0][1] * dbasis(l, k, 0) +
3016  dinverse_jacobiands[j][1][1] * dbasis(l, k, 1) +
3017  inverse_jacobian(j, 0) * d2basis(l, k, 2) +
3018  inverse_jacobian(j, 1) * d2basis(l, k, 1);
3019  }
3020  }
3021  }
3022 
3023  // Now calculate the DShape d2phidX
3024  for (unsigned l = 0; l < n_basis; l++)
3025  {
3026  for (unsigned k = 0; k < n_basis_type; k++)
3027  {
3028  // Zero dpsidx
3029  for (unsigned j = 0; j < 3; j++)
3030  {
3031  d2basis(l, k, j) = 0.0;
3032  }
3033 
3034  // Do premultiplication by inverse jacobian
3035  for (unsigned i = 0; i < 2; i++)
3036  {
3037  d2basis(l, k, i) = inverse_jacobian(i, 0) * dphidXds0(l, k, i) +
3038  inverse_jacobian(i, 1) * dphidXds1(l, k, i);
3039  }
3040  // Calculate mixed derivative term
3041  d2basis(l, k, 2) += inverse_jacobian(0, 0) * dphidXds0(l, k, 1) +
3042  inverse_jacobian(0, 1) * dphidXds1(l, k, 1);
3043  }
3044  }
3045 
3046  // Assemble the first derivatives second, so that we don't
3047  // overwrite dphids
3048  transform_derivatives(inverse_jacobian, dbasis);
3049  }

References i, j, k, oomph::DShape::nindex1(), oomph::DShape::nindex2(), and transform_derivatives().

◆ transform_second_derivatives_template() [3/3]

template<unsigned DIM>
void oomph::FiniteElement::transform_second_derivatives_template ( const DenseMatrix< double > &  jacobian,
const DenseMatrix< double > &  inverse_jacobian,
const DenseMatrix< double > &  jacobian2,
DShape dbasis,
DShape d2basis 
) const
protected

Convert derivatives and second derivatives w.r.t. local coordinates to derivatives and second derivatives w.r.t. the coordinates used to asssmble the jacobian, inverse jacobian and jacobian2 passed in the mapping. This is templated by dimension because the method of calculation varies significantly with the dimension. On entry dbasis and d2basis must contain the derivatives w.r.t. the local coordinates; on exit they will be the derivatives w.r.t. the transformed coordinates.

◆ update_before_nodal_fd()

virtual void oomph::FiniteElement::update_before_nodal_fd ( )
inlineprotectedvirtual

Function that is called before the finite differencing of any nodal data. This may be overloaded to update any dependent data before finite differencing takes place.

1709 {}

Referenced by fill_in_jacobian_from_nodal_by_fd(), and oomph::RefineableElement::fill_in_jacobian_from_nodal_by_fd().

◆ update_in_nodal_fd()

virtual void oomph::FiniteElement::update_in_nodal_fd ( const unsigned i)
inlineprotectedvirtual

Function called within the finite difference loop for nodal data after a change in the i-th nodal value.

Reimplemented in oomph::FSIWallElement.

1718 {}

Referenced by fill_in_jacobian_from_nodal_by_fd(), oomph::RefineableElement::fill_in_jacobian_from_nodal_by_fd(), and reset_in_nodal_fd().

◆ vertex_node_pt()

virtual Node* oomph::FiniteElement::vertex_node_pt ( const unsigned j) const
inlinevirtual

Pointer to the j-th vertex node in the element. Broken virtual function in "pure" finite elements.

Reimplemented in oomph::BrickElementBase, oomph::QuadElementBase, oomph::LineElementBase, oomph::ElementWithZ2ErrorEstimator, oomph::RefineableQYoungLaplaceElement< NNODE_1D >, oomph::TUnsteadyHeatElement< DIM, NNODE_1D >, oomph::RefineableQUnsteadyHeatElement< DIM, NNODE_1D >, oomph::TTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::RefineableQTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TTimeHarmonicFourierDecomposedLinearElasticityElement< NNODE_1D >, oomph::RefineableQSphericalCrouzeixRaviartElement, oomph::RefineableQSphericalTaylorHoodElement, oomph::RefineableQSphericalAdvectionDiffusionElement< NNODE_1D >, oomph::RefineableQSphericalAdvectionDiffusionElement< 3 >, oomph::RefineableQUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::RefineableQUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::RefineableQUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::TPVDElementWithContinuousPressure< DIM >, oomph::TPVDBubbleEnrichedElement< DIM, NNODE_1D >, oomph::TPVDElement< DIM, NNODE_1D >, oomph::RefineableQPVDElementWithContinuousPressure< DIM >, oomph::RefineableQPVDElementWithPressure< DIM >, oomph::RefineableQPVDElement< DIM, NNODE_1D >, oomph::RefineablePolarCrouzeixRaviartElement, oomph::RefineablePolarTaylorHoodElement, oomph::TPoissonElement< DIM, NNODE_1D >, oomph::RefineableQSpectralPoissonElement< DIM, NNODE_1D >, oomph::PRefineableQPoissonElement< DIM >, oomph::RefineableQPoissonElement< DIM, NNODE_1D >, oomph::TPMLTimeHarmonicLinearElasticityElement< DIM, NNODE_1D >, oomph::TPMLHelmholtzElement< DIM, NNODE_1D >, oomph::RefineableQPMLHelmholtzElement< DIM, NNODE_1D >, oomph::RefineableQPMLHelmholtzElement< 2, NNODE_1D >, oomph::TPMLFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::TTaylorHoodElement< DIM >, oomph::TCrouzeixRaviartElement< DIM >, oomph::PRefineableQCrouzeixRaviartElement< DIM >, oomph::RefineableQCrouzeixRaviartElement< DIM >, oomph::RefineableQCrouzeixRaviartElement< 2 >, oomph::RefineableQTaylorHoodElement< DIM >, oomph::RefineableQTaylorHoodElement< 2 >, oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableLinearisedQTaylorHoodElement, oomph::RefineableLinearisedQCrouzeixRaviartElement, oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement, oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement, oomph::RefineableQLinearWaveElement< DIM, NNODE_1D >, oomph::TLinearElasticityElement< DIM, NNODE_1D >, oomph::PRefineableQLinearElasticityElement< DIM >, oomph::RefineableQLinearElasticityElement< DIM, NNODE_1D >, oomph::THelmholtzElement< DIM, NNODE_1D >, oomph::RefineableQHelmholtzElement< DIM, NNODE_1D >, oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QSpectralElement< 3, NNODE_1D >, oomph::QSpectralElement< 2, NNODE_1D >, oomph::QSpectralElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, oomph::QElement< 1, NNODE_1D >, oomph::PseudoSolidNodeUpdateElement< TCrouzeixRaviartElement< 2 >, TPVDBubbleEnrichedElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< TTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianAxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< AxisymmetricTTaylorHoodElement, TPVDElement< 2, 3 > >, oomph::PseudoSolidNodeUpdateElement< GeneralisedNewtonianTTaylorHoodElement< 2 >, TPVDElement< 2, 3 > >, oomph::SpectralPeriodicOrbitElement< NNODE_1D >, oomph::GeneralisedNewtonianTTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianTCrouzeixRaviartElement< DIM >, oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >, oomph::RefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >, oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >, oomph::GeneralisedNewtonianAxisymmetricTTaylorHoodElement, oomph::GeneralisedNewtonianAxisymmetricTCrouzeixRaviartElement, oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement, oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement, oomph::TFourierDecomposedHelmholtzElement< NNODE_1D >, oomph::TFoepplvonKarmanElement< NNODE_1D >, oomph::TDisplacementBasedFoepplvonKarmanElement< NNODE_1D >, oomph::TRaviartThomasDarcyElement< ORDER >, oomph::TAxisymmetricPoroelasticityElement< ORDER >, oomph::AxisymmetricTTaylorHoodElement, oomph::AxisymmetricTCrouzeixRaviartElement, oomph::RefineableAxisymmetricQCrouzeixRaviartElement, oomph::RefineableAxisymmetricQTaylorHoodElement, oomph::TAxisymmetricLinearElasticityElement< NNODE_1D >, oomph::RefineableQGeneralisedAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::RefineableQAxisymAdvectionDiffusionElement< NNODE_1D >, oomph::RefineableQAxisymAdvectionDiffusionElement< 3 >, oomph::TAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::RefineableQAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >, oomph::RefineableQAdvectionDiffusionReactionElement< 2, DIM, 3 >, oomph::RefineableQSUPGAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::RefineableQGeneralisedAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::RefineableQAdvectionDiffusionElement< DIM, NNODE_1D >, oomph::RefineableQAdvectionDiffusionElement< DIM, 3 >, oomph::RefineablePolarStreamfunctionElement, ModalPRefineableQPoissonElement< DIM >, oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >, oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement, RefineableBuoyantQCrouzeixRaviartElement< DIM >, oomph::TLinearHeatAndElasticityElement< DIM, NNODE_1D >, oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement, and oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement.

2501  {
2502  std::string error_msg = "Not implemented for FiniteElement.";
2503  throw OomphLibError(
2505  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().

Referenced by oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::compute_stabilisation_parameter(), oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::vertex_node_pt(), oomph::RefineableLinearisedAxisymmetricQCrouzeixRaviartElement::vertex_node_pt(), oomph::RefineablePolarStreamfunctionElement::vertex_node_pt(), oomph::RefineableQAdvectionDiffusionElement< DIM, NNODE_1D >::vertex_node_pt(), oomph::RefineableQSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::vertex_node_pt(), oomph::RefineableQAdvectionDiffusionReactionElement< NREAGENT, DIM, NNODE_1D >::vertex_node_pt(), oomph::RefineableAxisymmetricQTaylorHoodElement::vertex_node_pt(), oomph::RefineableAxisymmetricQCrouzeixRaviartElement::vertex_node_pt(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::vertex_node_pt(), oomph::RefineableGeneralisedNewtonianAxisymmetricQCrouzeixRaviartElement::vertex_node_pt(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::vertex_node_pt(), oomph::RefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::vertex_node_pt(), oomph::PRefineableGeneralisedNewtonianQCrouzeixRaviartElement< DIM >::vertex_node_pt(), oomph::RefineableQHelmholtzElement< DIM, NNODE_1D >::vertex_node_pt(), oomph::RefineableQLinearElasticityElement< DIM, NNODE_1D >::vertex_node_pt(), oomph::PRefineableQLinearElasticityElement< DIM >::vertex_node_pt(), oomph::RefineableQLinearWaveElement< DIM, NNODE_1D >::vertex_node_pt(), oomph::RefineableLinearisedQCrouzeixRaviartElement::vertex_node_pt(), oomph::RefineableLinearisedQTaylorHoodElement::vertex_node_pt(), oomph::RefineableQTaylorHoodElement< DIM >::vertex_node_pt(), oomph::RefineableQCrouzeixRaviartElement< DIM >::vertex_node_pt(), oomph::PRefineableQCrouzeixRaviartElement< DIM >::vertex_node_pt(), oomph::RefineableQPMLHelmholtzElement< DIM, NNODE_1D >::vertex_node_pt(), oomph::RefineableQPoissonElement< DIM, NNODE_1D >::vertex_node_pt(), oomph::PRefineableQPoissonElement< DIM >::vertex_node_pt(), oomph::RefineableQSpectralPoissonElement< DIM, NNODE_1D >::vertex_node_pt(), oomph::RefineablePolarTaylorHoodElement::vertex_node_pt(), oomph::RefineablePolarCrouzeixRaviartElement::vertex_node_pt(), oomph::RefineableQPVDElement< DIM, NNODE_1D >::vertex_node_pt(), oomph::RefineableQPVDElementWithPressure< DIM >::vertex_node_pt(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::vertex_node_pt(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::vertex_node_pt(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::vertex_node_pt(), oomph::RefineableQUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >::vertex_node_pt(), oomph::RefineableQSphericalTaylorHoodElement::vertex_node_pt(), oomph::RefineableQSphericalCrouzeixRaviartElement::vertex_node_pt(), and oomph::RefineableQUnsteadyHeatElement< DIM, NNODE_1D >::vertex_node_pt().

◆ write_paraview_offsets()

virtual void oomph::FiniteElement::write_paraview_offsets ( std::ofstream &  file_out,
const unsigned nplot,
unsigned offset_sum 
) const
inlinevirtual

Return the offsets for the paraview sub-elements. Broken virtual. Needs to be implemented for each new geometric element type; see http://www.vtk.org/VTK/img/file-formats.pdf

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, and oomph::QElement< 1, NNODE_1D >.

2979  {
2980  throw OomphLibError(
2981  "This function hasn't been implemented for this element",
2984  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::Mesh::output_fct_paraview(), and oomph::Mesh::output_paraview().

◆ write_paraview_output_offset_information()

virtual void oomph::FiniteElement::write_paraview_output_offset_information ( std::ofstream &  file_out,
const unsigned nplot,
unsigned counter 
) const
inlinevirtual

Fill in the offset information for paraview plot. Broken virtual. Needs to be implemented for each new geometric element type; see http://www.vtk.org/VTK/img/file-formats.pdf

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, and oomph::QElement< 1, NNODE_1D >.

2954  {
2955  throw OomphLibError(
2956  "This function hasn't been implemented for this element",
2959  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::Mesh::output_fct_paraview(), and oomph::Mesh::output_paraview().

◆ write_paraview_type()

virtual void oomph::FiniteElement::write_paraview_type ( std::ofstream &  file_out,
const unsigned nplot 
) const
inlinevirtual

Return the paraview element type. Broken virtual. Needs to be implemented for each new geometric element type; see http://www.vtk.org/VTK/img/file-formats.pdf

Reimplemented in oomph::TElement< 3, NNODE_1D >, oomph::TElement< 2, NNODE_1D >, oomph::TElement< 1, NNODE_1D >, oomph::QElement< 3, NNODE_1D >, oomph::QElement< 2, NNODE_1D >, and oomph::QElement< 1, NNODE_1D >.

2966  {
2967  throw OomphLibError(
2968  "This function hasn't been implemented for this element",
2971  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::Mesh::output_fct_paraview(), and oomph::Mesh::output_paraview().

◆ write_tecplot_zone_footer() [1/2]

virtual void oomph::FiniteElement::write_tecplot_zone_footer ( FILE *  file_pt,
const unsigned nplot 
) const
inlinevirtual

Add tecplot zone "footer" to C-style output. (when plotting nplot points in each "coordinate direction"). Empty by default – can be used, e.g., to add FE connectivity lists to elements that need it.

Reimplemented in oomph::TElement< 3, NNODE_1D >, and oomph::TElement< 2, NNODE_1D >.

3182  {};

◆ write_tecplot_zone_footer() [2/2]

virtual void oomph::FiniteElement::write_tecplot_zone_footer ( std::ostream &  outfile,
const unsigned nplot 
) const
inlinevirtual

Add tecplot zone "footer" to output stream (when plotting nplot points in each "coordinate direction"). Empty by default – can be used, e.g., to add FE connectivity lists to elements that need it.

Reimplemented in oomph::TElement< 3, NNODE_1D >, and oomph::TElement< 2, NNODE_1D >.

3175  {};

Referenced by oomph::BiharmonicEquations< DIM >::compute_error(), oomph::Mesh::doc_boundary_coordinates(), oomph::Z2ErrorEstimator::doc_flux(), PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::doc_solid_boundary_coordinates(), UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::doc_solid_boundary_coordinates(), oomph::SphericalNavierStokesEquations::full_output(), oomph::AxisymFoepplvonKarmanEquations::output(), oomph::NonlinearSurfaceContactElement< ELEMENT >::output(), oomph::LinearSurfaceContactElement< ELEMENT >::output(), oomph::PolarStreamfunctionEquations::output(), oomph::AxisymmetricLinearElasticityEquations::output(), oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >::output(), oomph::FSILinearisedAxisymPoroelasticTractionElement< POROELASTICITY_BULK_ELEMENT, NAVIER_STOKES_BULK_ELEMENT >::output(), oomph::FluidInterfaceElement::output(), oomph::DisplacementBasedFoepplvonKarmanEquations::output(), oomph::FoepplvonKarmanEquations::output(), oomph::FourierDecomposedHelmholtzEquations::output(), oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >::output(), oomph::PMLFourierDecomposedHelmholtzEquations::output(), oomph::SolidTractionElement< ELEMENT >::output(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::output(), oomph::YoungLaplaceEquations::output(), oomph::LinearisedAxisymmetricNavierStokesEquations::output(), oomph::THomogenisedLinearElasticityElement< DIM, NNODE_1D >::output(), oomph::RefineableBuoyantQAxisymCrouzeixRaviartElement::output(), oomph::DoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::AxisymmetricQAdvectionCrouzeixRaviartElement::output(), oomph::RefineableBuoyantQSphericalCrouzeixRaviartElement::output(), oomph::RefineableDoubleBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::QSUPGAdvectionDiffusionElement< DIM, NNODE_1D >::output(), oomph::AxisymAdvectionDiffusionEquations::output(), oomph::AxisymmetricNavierStokesEquations::output(), oomph::AxisymmetricPoroelasticityEquations::output(), oomph::BiharmonicEquations< DIM >::output(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output(), oomph::LinearisedNavierStokesEquations::output(), oomph::BuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableBuoyantQCrouzeixRaviartElement< DIM >::output(), oomph::RefineableAdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::AdvectionDiffusionBoussinesqElement< AD_ELEMENT, NST_ELEMENT >::output(), oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), oomph::PoissonFluxElement< ELEMENT >::output(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::SphericalAdvectionDiffusionEquations::output(), oomph::SphericalNavierStokesEquations::output(), oomph::SteadyAxisymAdvectionDiffusionEquations::output(), oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >::output(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::AxisymFoepplvonKarmanEquations::output_fct(), oomph::DisplacementBasedFoepplvonKarmanEquations::output_fct(), oomph::FoepplvonKarmanEquations::output_fct(), oomph::FourierDecomposedHelmholtzEquations::output_fct(), oomph::PMLFourierDecomposedHelmholtzEquations::output_fct(), oomph::YoungLaplaceEquations::output_fct(), oomph::AxisymAdvectionDiffusionEquations::output_fct(), oomph::AxisymmetricLinearElasticityEquations::output_fct(), oomph::AxisymmetricNavierStokesEquations::output_fct(), oomph::AxisymmetricPoroelasticityEquations::output_fct(), oomph::BiharmonicEquations< DIM >::output_fct(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_fct(), oomph::PolarNavierStokesEquations::output_fct(), oomph::SphericalAdvectionDiffusionEquations::output_fct(), oomph::SphericalNavierStokesEquations::output_fct(), oomph::SteadyAxisymAdvectionDiffusionEquations::output_fct(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::output_fct(), oomph::BiharmonicEquations< DIM >::output_fluid_velocity(), oomph::FourierDecomposedHelmholtzEquations::output_real(), oomph::PMLFourierDecomposedHelmholtzEquations::output_real(), oomph::FourierDecomposedHelmholtzEquations::output_real_fct(), oomph::PMLFourierDecomposedHelmholtzEquations::output_real_fct(), oomph::LinearisedAxisymmetricNavierStokesEquations::output_veloc(), oomph::AxisymmetricNavierStokesEquations::output_veloc(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::output_veloc(), oomph::LinearisedNavierStokesEquations::output_veloc(), oomph::PolarNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_veloc(), oomph::SphericalNavierStokesEquations::output_vorticity(), oomph::FaceElement::output_zeta(), oomph::Multi_domain_functions::setup_bulk_elements_adjacent_to_face_mesh(), and TFaceTestProblem< ELEMENT >::TFaceTestProblem().

◆ zeta_nodal()

virtual double oomph::FiniteElement::zeta_nodal ( const unsigned n,
const unsigned k,
const unsigned i 
) const
inlinevirtual

Specify the values of the "global" intrinsic coordinate, zeta, of a compound geometric object (a mesh of elements) when the element is viewied as a sub-geometric object. The default assumption is that the element will be treated as a sub-geometric object in a bulk Mesh of other elements (geometric objects). The "global" coordinate of the compound geometric object is simply the Eulerian coordinate, x. The second default assumption is that the coordinate zeta will be stored at the nodes and interpolated using the shape functions of the element. This function returns the value of zeta stored at local node n, where k is the type of coordinate and i is the coordinate direction. The function is virtual so that it can be overloaded by different types of element: FaceElements and SolidFiniteElements

Reimplemented in oomph::YoungLaplaceContactAngleElement< ELEMENT >, oomph::NavierStokesImpedanceTractionElement< BULK_NAVIER_STOKES_ELEMENT, WOMERSLEY_ELEMENT, DIM >, oomph::UnsteadyHeatFluxElement< ELEMENT >, oomph::TimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::TimeHarmonicFourierDecomposedLinearElasticityTractionElement< ELEMENT >, oomph::SteadyAxisymAdvectionDiffusionFluxElement< ELEMENT >, oomph::SphericalAdvectionDiffusionFluxElement< ELEMENT >, oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >, oomph::PoroelasticityFaceElement< ELEMENT >, oomph::PoissonFluxElement< ELEMENT >, oomph::PMLTimeHarmonicLinearElasticityTractionElement< ELEMENT >, oomph::PMLHelmholtzFluxElement< ELEMENT >, oomph::PMLHelmholtzPowerElement< ELEMENT >, oomph::PMLFourierDecomposedHelmholtzPowerMonitorElement< ELEMENT >, oomph::NavierStokesSurfacePowerElement< ELEMENT >, oomph::NavierStokesSurfaceDragTorqueElement< ELEMENT >, oomph::ImposeParallelOutflowElement< ELEMENT >, oomph::ImposeImpenetrabilityElement< ELEMENT >, oomph::NavierStokesTractionElement< ELEMENT >, oomph::LinearWaveFluxElement< ELEMENT >, oomph::LinearElasticityTractionElement< ELEMENT >, oomph::HelmholtzFluxElement< ELEMENT >, oomph::HelmholtzBCElementBase< ELEMENT >, oomph::ProjectableElement< ELEMENT >, oomph::ProjectableElement< FVK_ELEMENT >, oomph::ProjectableElement< AXISYM_LINEAR_ELAST_ELEMENT >, oomph::ProjectableElement< UNSTEADY_HEAT_ELEMENT >, oomph::ProjectableElement< LINEAR_ELAST_ELEMENT >, oomph::ProjectableElement< CROUZEIX_RAVIART_ELEMENT >, oomph::ProjectableElement< HELMHOLTZ_ELEMENT >, oomph::ProjectableElement< AXISYMMETRIC_POROELASTICITY_ELEMENT >, oomph::ProjectableElement< TAYLOR_HOOD_ELEMENT >, oomph::ProjectableElement< PVD_ELEMENT >, oomph::ProjectableElement< ADR_ELEMENT >, oomph::ProjectableElement< DARCY_ELEMENT >, oomph::ProjectableElement< POISSON_ELEMENT >, oomph::ProjectableElement< FOURIER_DECOMPOSED_HELMHOLTZ_ELEMENT >, oomph::ProjectableElement< TIME_HARMONIC_LINEAR_ELAST_ELEMENT >, oomph::ProjectableElement< LINEAR_HEAT_AND_ELAST_ELEMENT >, oomph::GenericLagrangeInterpolatedProjectableElement< ELEMENT >, oomph::FaceElementAsGeomObject< ELEMENT >, oomph::DummyFaceElement< ELEMENT >, oomph::SolidFaceElement, oomph::FaceElement, oomph::SolidFiniteElement, oomph::FourierDecomposedHelmholtzBCElementBase< ELEMENT >, oomph::DGEulerFaceReflectionElement< ELEMENT >, oomph::DGEulerFaceElement< ELEMENT >, oomph::ElasticLineFluidInterfaceBoundingElement< ELEMENT >, oomph::ElasticPointFluidInterfaceBoundingElement< ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, SurfaceDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SurfactantTransportInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, AxisymmetricDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< SolubleSurfactantTransportInterfaceElement, LineDerivatives, ELEMENT >, oomph::ElasticUpdateFluidInterfaceElement< FluidInterfaceElement, LineDerivatives, ELEMENT >, oomph::SpineSurfaceVolumeConstraintBoundingElement< ELEMENT >, oomph::ElasticSurfaceVolumeConstraintBoundingElement< ELEMENT >, oomph::SpineAxisymmetricVolumeConstraintBoundingElement< ELEMENT >, oomph::ElasticAxisymmetricVolumeConstraintBoundingElement< ELEMENT >, oomph::SpineLineVolumeConstraintBoundingElement< ELEMENT >, oomph::ElasticLineVolumeConstraintBoundingElement< ELEMENT >, oomph::DarcyFaceElement< ELEMENT >, oomph::BiharmonicFluxElement< DIM >, oomph::AxisymmetricPoroelasticityTractionElement< ELEMENT >, oomph::AxisymmetricPoroelasticityTractionElement< POROELASTICITY_BULK_ELEMENT >, oomph::AxisymmetricNavierStokesTractionElement< ELEMENT >, oomph::AxisymmetricLinearElasticityTractionElement< ELEMENT >, oomph::AdvectionDiffusionFluxElement< ELEMENT >, oomph::UnsteadyHeatFluxPseudoMeltElement< ELEMENT >, oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >, StefanBoltzmannMeltElement< ELEMENT >, oomph::HeatedPenetratorFluxElement< ELEMENT >, oomph::HeatedLinearSurfaceContactElement< ELEMENT >, oomph::SurfaceMeltElement< ELEMENT >, oomph::UnsteadyHeatBaseFaceElement< ELEMENT >, and oomph::SurfaceContactElementBase< ELEMENT >.

2725  {
2726  // By default return the value for nodal_position_gen
2727  return nodal_position_gen(n, k, i);
2728  }

References i, k, n, and nodal_position_gen().

Referenced by get_centre_of_gravity_and_max_radius_in_terms_of_zeta(), interpolated_zeta(), locate_zeta(), and oomph::SurfaceContactElementBase< ELEMENT >::zeta_nodal().

Member Data Documentation

◆ Accept_negative_jacobian

bool FiniteElement::Accept_negative_jacobian = false
static

Boolean that if set to true allows a negative jacobian in the transform between global and local coordinates (negative surface area = left-handed coordinate system).

Set the default value of the Accept_negative_jacobian flag to be false

Referenced by check_J_eulerian_at_knots(), check_jacobian(), and self_test().

◆ Default_Initial_Nvalue

const unsigned FiniteElement::Default_Initial_Nvalue = 0
staticprotected

Default value for the number of values at a node.

Default return value for required_nvalue(n) which gives the number of "data" values required by the element at node n; for example, solving a Poisson equation would required only one "data" value at each node. The defaults is set to zero, because a general element is problem-less.

Referenced by required_nvalue().

◆ Elemental_dimension

unsigned oomph::FiniteElement::Elemental_dimension
private

The spatial dimension of the element, i.e. the number of local coordinates used to parametrize it.

Referenced by assemble_local_to_eulerian_jacobian(), dim(), get_centre_of_gravity_and_max_radius_in_terms_of_zeta(), local_to_eulerian_mapping_diagonal(), and set_dimension().

◆ Integral_pt

Integral* oomph::FiniteElement::Integral_pt
private

Pointer to the spatial integration scheme.

Referenced by integral_pt(), and set_integration_scheme().

◆ Macro_elem_pt

◆ N2deriv

const unsigned FiniteElement::N2deriv = {0, 1, 3, 6}
staticprotected

Static array that holds the number of second derivatives as a function of the dimension of the element

Static array that holds the number of rows in the second derivative matrix as a function of spatial dimension. In one-dimension, there is only one possible second derivative. In two-dimensions, there are three, the two second derivatives and the mixed derivatives. In three dimensions there are six.

Referenced by assemble_local_to_eulerian_jacobian2(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian2(), oomph::SolidFiniteElement::assemble_local_to_lagrangian_jacobian2(), oomph::RefineableSolidElement::assemble_local_to_lagrangian_jacobian2(), d2shape_eulerian(), d2shape_eulerian_at_knot(), oomph::SolidFiniteElement::d2shape_lagrangian(), and oomph::SolidFiniteElement::d2shape_lagrangian_at_knot().

◆ Nnodal_position_type

unsigned oomph::FiniteElement::Nnodal_position_type
private

The number of coordinate types required to interpolate the element's geometry between the nodes. For Lagrange elements it is 1 (the default). It must be over-ridden by using the set_nposition_type() function in the constructors of elements that use generalised coordinate, e.g. for 1D Hermite elements Nnodal_position_types =2.

Referenced by construct_boundary_node(), construct_node(), nnodal_position_type(), and set_nnodal_position_type().

◆ Nnode

unsigned oomph::FiniteElement::Nnode
private

Number of nodes in the element.

Referenced by nnode(), nodal_local_eqn(), node_pt(), and set_n_node().

◆ Nodal_dimension

unsigned oomph::FiniteElement::Nodal_dimension
private

The spatial dimension of the nodes in the element. We assume that nodes have the same spatial dimension, because we cannot think of any "real" problems for which that would not be the case.

Referenced by assemble_local_to_eulerian_jacobian(), construct_boundary_node(), construct_node(), local_to_eulerian_mapping_diagonal(), nodal_dimension(), set_dimension(), and set_nodal_dimension().

◆ Nodal_local_eqn

int** oomph::FiniteElement::Nodal_local_eqn
private

Storage for the local equation numbers associated with the values stored at the nodes

Referenced by assign_nodal_local_eqn_numbers(), nodal_local_eqn(), and ~FiniteElement().

◆ Node_location_tolerance

const double FiniteElement::Node_location_tolerance = 1.0e-14
staticprotected

Default value for the tolerance to be used when locating nodes via local coordinates

Default value that is used for the tolerance required when locating nodes via local coordinates

Referenced by oomph::RefineableLinearisedAxisymmetricQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableAxisymmetricQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableGeneralisedNewtonianAxisymmetricQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableLinearisedQTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableQSphericalTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableGeneralisedNewtonianQTaylorHoodElement< DIM >::get_interpolating_node_at_local_coordinate(), oomph::RefineableQTaylorHoodElement< DIM >::get_interpolating_node_at_local_coordinate(), oomph::RefineablePolarTaylorHoodElement::get_interpolating_node_at_local_coordinate(), oomph::RefineableQPVDElementWithContinuousPressure< DIM >::get_interpolating_node_at_local_coordinate(), oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::get_interpolating_node_at_local_coordinate(), oomph::RefineableQTaylorHoodMixedOrderSpaceTimeElement< DIM >::get_interpolating_node_at_local_coordinate(), oomph::PRefineableQElement< 1, INITIAL_NNODE_1D >::get_node_at_local_coordinate(), oomph::PRefineableQElement< 2, INITIAL_NNODE_1D >::get_node_at_local_coordinate(), oomph::PRefineableQElement< 3, INITIAL_NNODE_1D >::get_node_at_local_coordinate(), oomph::QElement< 1, NNODE_1D >::get_node_at_local_coordinate(), oomph::QElement< 2, NNODE_1D >::get_node_at_local_coordinate(), and oomph::QElement< 3, NNODE_1D >::get_node_at_local_coordinate().

◆ Node_pt

Node** oomph::FiniteElement::Node_pt
private

Storage for pointers to the nodes in the element.

Referenced by assign_nodal_local_eqn_numbers(), node_pt(), set_n_node(), and ~FiniteElement().

◆ Suppress_output_while_checking_for_inverted_elements

bool FiniteElement::Suppress_output_while_checking_for_inverted_elements
static
Initial value:
=
false

Static boolean to suppress output while checking for inverted elements

Set default for static boolean to suppress output while checking for inverted elements

Referenced by oomph::Mesh::check_inverted_elements(), and check_jacobian().

◆ Tolerance_for_singular_jacobian

double FiniteElement::Tolerance_for_singular_jacobian = 1.0e-16
static

Tolerance below which the jacobian is considered singular.

Set the default tolerance for a singular jacobian.

Referenced by check_jacobian().


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