![]() |
|
p-refineable version of RefineableQElement<2,INITIAL_NNODE_1D>. More...
#include <hp_refineable_elements.h>
Public Member Functions | |
PRefineableQElement () | |
Constructor. More... | |
virtual | ~PRefineableQElement () |
Destructor. More... | |
void | initial_setup (Tree *const &adopted_father_pt=0, const unsigned &initial_p_order=0) |
void | pre_build (Mesh *&mesh_pt, Vector< Node * > &new_node_pt) |
void | p_refine (const int &inc, Mesh *const &mesh_pt, GeneralisedElement *const &clone_pt) |
p-refine the element (refine if inc>0, unrefine if inc<0). More... | |
void | shape (const Vector< double > &s, Shape &psi) const |
Overload the shape functions. More... | |
void | dshape_local (const Vector< double > &s, Shape &psi, DShape &dpsi) const |
Derivatives of shape functions for PRefineableQElement<DIM> More... | |
void | d2shape_local (const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const |
void | further_setup_hanging_nodes () |
unsigned | nnode_1d () const |
unsigned | initial_p_order () const |
Get the initial P_order. More... | |
Node * | get_node_at_local_coordinate (const Vector< double > &s) const |
Return the node at the specified local coordinate. More... | |
Node * | node_created_by_neighbour (const Vector< double > &s_fraction, bool &is_periodic) |
Node * | node_created_by_son_of_neighbour (const Vector< double > &s_fraction, bool &is_periodic) |
void | local_coordinate_of_node (const unsigned &n, Vector< double > &s) const |
Get local coordinates of node j in the element; vector sets its own size. More... | |
void | local_fraction_of_node (const unsigned &n, Vector< double > &s_fraction) |
Get the local fractino of node j in the element. More... | |
double | local_one_d_fraction_of_node (const unsigned &n1d, const unsigned &i) |
The local one-d fraction is the same. More... | |
void | rebuild_from_sons (Mesh *&mesh_pt) |
void | check_integrity (double &max_error) |
![]() | |
RefineableQElement () | |
Constructor: Pass refinement level (default 0 = root) More... | |
RefineableQElement (const RefineableQElement< 2 > &dummy)=delete | |
Broken copy constructor. More... | |
virtual | ~RefineableQElement () |
Broken assignment operator. More... | |
unsigned | required_nsons () const |
A refineable quad element has four sons. More... | |
virtual void | build (Mesh *&mesh_pt, Vector< Node * > &new_node_pt, bool &was_already_built, std::ofstream &new_nodes_file) |
void | check_integrity (double &max_error) |
void | output_corners (std::ostream &outfile, const std::string &colour) const |
Print corner nodes, use colour. More... | |
QuadTree * | quadtree_pt () |
Pointer to quadtree representation of this element. More... | |
QuadTree * | quadtree_pt () const |
Pointer to quadtree representation of this element. More... | |
void | setup_hanging_nodes (Vector< std::ofstream * > &output_stream) |
void | get_boundaries (const int &edge, std::set< unsigned > &boundaries) const |
void | get_bcs (int bound, Vector< int > &bound_cons) const |
void | interpolated_zeta_on_edge (const unsigned &boundary, const int &edge, const Vector< double > &s, Vector< double > &zeta) |
![]() | |
RefineableElement () | |
virtual | ~RefineableElement () |
Destructor, delete the allocated storage for the hanging equations. More... | |
RefineableElement (const RefineableElement &)=delete | |
Broken copy constructor. More... | |
void | operator= (const RefineableElement &)=delete |
Broken assignment operator. More... | |
Tree * | tree_pt () |
Access function: Pointer to quadtree representation of this element. More... | |
void | set_tree_pt (Tree *my_tree_pt) |
Set pointer to quadtree representation of this element. More... | |
bool | refinement_is_enabled () |
Flag to indicate suppression of any refinement. More... | |
void | disable_refinement () |
Suppress of any refinement for this element. More... | |
void | enable_refinement () |
Emnable refinement for this element. More... | |
template<class ELEMENT > | |
void | split (Vector< ELEMENT * > &son_pt) const |
int | local_hang_eqn (Node *const &node_pt, const unsigned &i) |
void | set_refinement_level (const int &refine_level) |
Set the refinement level. More... | |
unsigned | refinement_level () const |
Return the Refinement level. More... | |
void | select_for_refinement () |
Select the element for refinement. More... | |
void | deselect_for_refinement () |
Deselect the element for refinement. More... | |
void | select_sons_for_unrefinement () |
Unrefinement will be performed by merging the four sons of this element. More... | |
void | deselect_sons_for_unrefinement () |
bool | to_be_refined () |
Has the element been selected for refinement? More... | |
bool | sons_to_be_unrefined () |
Has the element been selected for unrefinement? More... | |
virtual void | unbuild () |
virtual void | deactivate_element () |
long | number () const |
Element number (for debugging/plotting) More... | |
void | set_number (const long &mynumber) |
Set element number (for debugging/plotting) More... | |
virtual unsigned | ncont_interpolated_values () const =0 |
virtual void | get_interpolated_values (const Vector< double > &s, Vector< double > &values) |
virtual void | get_interpolated_values (const unsigned &t, const Vector< double > &s, Vector< double > &values)=0 |
virtual Node * | interpolating_node_pt (const unsigned &n, const int &value_id) |
virtual double | local_one_d_fraction_of_interpolating_node (const unsigned &n1d, const unsigned &i, const int &value_id) |
virtual Node * | get_interpolating_node_at_local_coordinate (const Vector< double > &s, const int &value_id) |
virtual unsigned | ninterpolating_node (const int &value_id) |
virtual unsigned | ninterpolating_node_1d (const int &value_id) |
virtual void | interpolating_basis (const Vector< double > &s, Shape &psi, const int &value_id) const |
void | identify_field_data_for_interactions (std::set< std::pair< Data *, unsigned >> &paired_field_data) |
void | assign_nodal_local_eqn_numbers (const bool &store_local_dof_pt) |
virtual RefineableElement * | root_element_pt () |
virtual RefineableElement * | father_element_pt () const |
Return a pointer to the father element. More... | |
void | get_father_at_refinement_level (unsigned &refinement_level, RefineableElement *&father_at_reflevel_pt) |
virtual void | further_build () |
Further build: e.g. deal with interpolation of internal values. More... | |
void | get_dresidual_dnodal_coordinates (RankThreeTensor< double > &dresidual_dnodal_coordinates) |
unsigned | nshape_controlling_nodes () |
std::map< Node *, unsigned > | shape_controlling_node_lookup () |
![]() | |
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... | |
void | get_centre_of_gravity_and_max_radius_in_terms_of_zeta (Vector< double > &cog, double &max_radius) const |
MacroElement * | macro_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 | 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_at_knot (const unsigned &ipt, Shape &psi) const |
virtual void | dshape_local_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsids) 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 | describe_local_dofs (std::ostream &out, const std::string ¤t_string) const |
virtual void | describe_nodal_local_dofs (std::ostream &out, const std::string ¤t_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... | |
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 | 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 Node * | construct_node (const unsigned &n) |
virtual Node * | construct_node (const unsigned &n, TimeStepper *const &time_stepper_pt) |
virtual Node * | construct_boundary_node (const unsigned &n) |
virtual Node * | construct_boundary_node (const unsigned &n, TimeStepper *const &time_stepper_pt) |
int | get_node_number (Node *const &node_pt) 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 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 |
Data * | geom_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_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... | |
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 |
![]() | |
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 ¤t_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 ¶meter_pt, Vector< double > &dres_dparam) |
virtual void | get_djacobian_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam) |
virtual void | get_djacobian_and_dmass_matrix_dparameter (double *const ¶meter_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 |
![]() | |
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 () |
TimeStepper * | time_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 |
![]() | |
QuadElementBase () | |
Constructor. Empty. More... | |
virtual unsigned | nvertex_node () const =0 |
Number of vertex nodes in the element. More... | |
virtual Node * | vertex_node_pt (const unsigned &j) const =0 |
Pointer to the j-th vertex node in the element. More... | |
![]() | |
QElementBase () | |
Constructor: Initialise pointers to macro element reference coords. More... | |
QElementBase (const QElementBase &)=delete | |
Broken copy constructor. More... | |
virtual | ~QElementBase () |
Broken assignment operator. More... | |
bool | local_coord_is_valid (const Vector< double > &s) |
Check whether the local coordinate are valid or not. More... | |
void | move_local_coord_back_into_element (Vector< double > &s) const |
virtual void | set_macro_elem_pt (MacroElement *macro_elem_pt) |
double & | s_macro_ll (const unsigned &i) |
double & | s_macro_ur (const unsigned &i) |
double | s_macro_ll (const unsigned &i) const |
double | s_macro_ur (const unsigned &i) const |
void | get_x_from_macro_element (const Vector< double > &s, Vector< double > &x) const |
void | get_x_from_macro_element (const unsigned &t, const Vector< double > &s, Vector< double > &x) |
unsigned | nnode_on_face () const |
ElementGeometry::ElementGeometry | element_geometry () const |
It's a Q element! More... | |
![]() | |
QElementGeometricBase () | |
Empty default constructor. More... | |
QElementGeometricBase (const QElementGeometricBase &)=delete | |
Broken copy constructor. More... | |
![]() | |
PRefineableElement () | |
Constructor, calls the RefineableElement constructor. More... | |
virtual | ~PRefineableElement () |
Destructor, empty. More... | |
PRefineableElement (const PRefineableElement &)=delete | |
Broken copy constructor. More... | |
void | operator= (const PRefineableElement &)=delete |
Broken assignment operator. More... | |
bool | p_refinement_is_enabled () |
Flag to indicate suppression of any refinement. More... | |
void | disable_p_refinement () |
Suppress of any refinement for this element. More... | |
void | enable_p_refinement () |
Emnable refinement for this element. More... | |
unsigned & | p_order () |
Access function to P_order. More... | |
unsigned | p_order () const |
Access function to P_order (const version) More... | |
void | select_for_p_refinement () |
Select the element for p-refinement. More... | |
void | deselect_for_p_refinement () |
Deselect the element for p-refinement. More... | |
void | select_for_p_unrefinement () |
Select the element for p-unrefinement. More... | |
void | deselect_for_p_unrefinement () |
Deselect the element for p-unrefinement. More... | |
bool | to_be_p_refined () |
Has the element been selected for refinement? More... | |
bool | to_be_p_unrefined () |
Has the element been selected for p-unrefinement? More... | |
bool | nodes_built () |
Return true if all the nodes have been built, false if not. More... | |
Protected Member Functions | |
void | quad_hang_helper (const int &value_id, const int &my_edge, std::ofstream &output_hangfile) |
![]() | |
void | setup_father_bounds () |
void | get_edge_bcs (const int &edge, Vector< int > &bound_cons) const |
Determine Vector of boundary conditions along edge (N/S/W/E) More... | |
void | setup_hang_for_value (const int &value_id) |
![]() | |
void | assemble_local_to_eulerian_jacobian (const DShape &dpsids, DenseMatrix< double > &jacobian) const |
void | assemble_local_to_eulerian_jacobian2 (const DShape &d2psids, DenseMatrix< double > &jacobian2) const |
void | assemble_eulerian_base_vectors (const DShape &dpsids, DenseMatrix< double > &interpolated_G) const |
double | local_to_eulerian_mapping_diagonal (const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const |
void | assign_hanging_local_eqn_numbers (const bool &store_local_dof_pt) |
Assign the local equation numbers for hanging node variables. More... | |
virtual void | fill_in_jacobian_from_nodal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian) |
![]() | |
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 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 |
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 |
![]() | |
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 ¶meter_pt, Vector< double > &dres_dparam) |
virtual void | fill_in_contribution_to_djacobian_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam) |
virtual void | fill_in_contribution_to_djacobian_and_dmass_matrix_dparameter (double *const ¶meter_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) |
Additional Inherited Members | |
![]() | |
typedef void(RefineableQElement< 2 >::* | VoidMemberFctPt) () |
![]() | |
typedef void(* | SteadyExactSolutionFctPt) (const Vector< double > &, Vector< double > &) |
typedef void(* | UnsteadyExactSolutionFctPt) (const double &, const Vector< double > &, Vector< double > &) |
![]() | |
static double & | max_integrity_tolerance () |
Max. allowed discrepancy in element integrity check. More... | |
![]() | |
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 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 |
![]() | |
static void | check_value_id (const int &n_continuously_interpolated_values, const int &value_id) |
![]() | |
Tree * | Tree_pt |
A pointer to a general tree object. More... | |
unsigned | Refine_level |
Refinement level. More... | |
bool | To_be_refined |
Flag for refinement. More... | |
bool | Refinement_is_enabled |
Flag to indicate suppression of any refinement. More... | |
bool | Sons_to_be_unrefined |
Flag for unrefinement. More... | |
long | Number |
Global element number – for plotting/validation purposes. More... | |
![]() | |
MacroElement * | Macro_elem_pt |
Pointer to the element's macro element (NULL by default) More... | |
![]() | |
unsigned | NLagrangian |
Number of Lagrangian (intrinsic) coordinates. More... | |
unsigned | Ndim |
Number of Eulerian coordinates. More... | |
TimeStepper * | Geom_object_time_stepper_pt |
![]() | |
unsigned | P_order |
The polynomial expansion order of the elemental basis functions. More... | |
bool | To_be_p_refined |
Flag for p-refinement. More... | |
bool | P_refinement_is_enabled |
Flag to indicate suppression of any refinement. More... | |
bool | To_be_p_unrefined |
Flag for unrefinement. More... | |
![]() | |
static std::map< unsigned, DenseMatrix< int > > | Father_bound |
![]() | |
static double | Max_integrity_tolerance = 1.0e-8 |
Max. allowed discrepancy in element integrity check. More... | |
![]() | |
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 DenseMatrix< double > | Dummy_matrix |
static std::deque< double * > | Dof_pt_deque |
p-refineable version of RefineableQElement<2,INITIAL_NNODE_1D>.
|
inline |
Constructor.
|
inlinevirtual |
|
virtual |
Check the integrity of interpolated values across element boundaries. Note: with the mortar method, continuity is enforced weakly across non- conforming element boundaries, so it makes no sense to check the continuity of interpolated values across these boundaries.
Check inter-element continuity of
Implements oomph::RefineableElement.
References Global_Physical_Variables::E, e(), boost::multiprecision::fabs(), oomph::RefineableElement::get_interpolated_values(), oomph::QuadTree::gteq_edge_neighbour(), i, oomph::FiniteElement::interpolated_x(), oomph::FiniteElement::macro_elem_pt(), MeshRefinement::max_error, N, oomph::RefineableElement::ncont_interpolated_values(), oomph::RefineableElement::nodes_built(), oomph::Tree::nsons(), oomph::Tree::object_pt(), oomph::oomph_info, s, oomph::QuadTreeNames::S, plotPSD::t, oomph::QuadTreeNames::W, and oomph::Node::x().
|
virtual |
Second derivatives of shape functions for PRefineableQElement<DIM> d2psids(i,0) = \( d^2 \psi_j / d s^2 \)
Reimplemented from oomph::FiniteElement.
References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
virtual |
Derivatives of shape functions for PRefineableQElement<DIM>
Reimplemented from oomph::FiniteElement.
References oomph::OneDimensionalLegendreShape< NNODE_1D >::calculate_nodal_positions(), i, j, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and s.
|
inlinevirtual |
Perform additional hanging node procedures for variables that are not interpolated by all nodes (e.g. lower order interpolations for the pressure in Taylor Hood).
Implements oomph::RefineableQElement< 2 >.
|
virtual |
Return the node at the specified local coordinate.
Reimplemented from oomph::FiniteElement.
References boost::multiprecision::fabs(), oomph::Orthpoly::gll_nodes(), i, n, GlobalParameters::Nnode_1d, oomph::FiniteElement::Node_location_tolerance, and s.
Referenced by p_refine().
|
inlinevirtual |
Get the initial P_order.
Implements oomph::PRefineableElement.
|
virtual |
Initial setup of element (set the correct p-order and integration scheme) If an adopted father is specified, information from this is used instead of using the father found from the tree.
Set the correct p-order of the element based on that of its father. Then construct an integration scheme of the correct order. If an adopted father is specified, information from this is used instead of using the father found from the tree.
Reimplemented from oomph::RefineableElement.
References oomph::Tree::object_pt(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::PRefineableElement::p_order().
|
virtual |
Get local coordinates of node j in the element; vector sets its own size.
Reimplemented from oomph::FiniteElement.
References oomph::OneDimensionalLegendreShape< NNODE_1D >::calculate_nodal_positions(), n, GlobalParameters::Nnode_1d, oomph::OneDimensionalLegendreShape< NNODE_1D >::nodal_position(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and s.
|
virtual |
Get the local fractino of node j in the element.
Reimplemented from oomph::FiniteElement.
References n.
|
virtual |
The local one-d fraction is the same.
Reimplemented from oomph::FiniteElement.
References oomph::OneDimensionalLegendreShape< NNODE_1D >::calculate_nodal_positions(), oomph::OneDimensionalLegendreShape< NNODE_1D >::nodal_position(), OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
inlinevirtual |
Returns the number of nodes along each edge of the element. Overloaded to return the (variable) p-order rather than the template argument.
Reimplemented from oomph::FiniteElement.
|
virtual |
If a neighbouring element has already created a node at a position corresponding to the local fractional position within the present element, s_fraction, return a pointer to that node. If not, return NULL (0). If the node is periodic the flag is_periodic will be true
Reimplemented from oomph::RefineableQElement< 2 >.
References Global_Physical_Variables::E, oomph::FiniteElement::get_node_at_local_coordinate(), oomph::QuadTree::gteq_edge_neighbour(), i, j, N, oomph::Tree::object_pt(), OOMPH_EXCEPTION_LOCATION, s, oomph::QuadTreeNames::S, and oomph::QuadTreeNames::W.
|
virtual |
If a neighbouring element's son has already created a node at a position corresponding to the local fractional position within the present element, s_fraction, return a pointer to that node. If not, return NULL (0). If the node is periodic the flag is_periodic will be true
Reimplemented from oomph::RefineableQElement< 2 >.
References Global_Physical_Variables::E, oomph::FiniteElement::get_node_at_local_coordinate(), oomph::QuadTree::gteq_edge_neighbour(), i, j, N, oomph::QuadTreeNames::NE, oomph::Tree::nsons(), oomph::QuadTreeNames::NW, oomph::Tree::object_pt(), s, oomph::QuadTreeNames::S, oomph::QuadTreeNames::SE, oomph::Tree::son_pt(), oomph::QuadTreeNames::SW, and oomph::QuadTreeNames::W.
|
virtual |
p-refine the element (refine if inc>0, unrefine if inc<0).
p-refine the element inc times. (If inc<0 then p-unrefinement is performed.)
/ Now loop over nodes in element
/BENFLAG:
/stdcout << "this = " << this << std::endl;
Implements oomph::PRefineableElement.
References oomph::Mesh::add_boundary_node(), oomph::Mesh::add_node_pt(), oomph::Mesh::boundary_coordinate_exists(), oomph::QuadTreeNames::E, oomph::MacroElementNodeUpdateElementBase::geom_object_pt(), oomph::RefineableQElement< 2 >::get_bcs(), oomph::RefineableQElement< 2 >::get_boundaries(), oomph::RefineableElement::get_interpolated_values(), get_node_at_local_coordinate(), oomph::RefineableSolidQElement< 2 >::get_solid_bcs(), oomph::FiniteElement::get_x(), i, oomph::RefineableQElement< 2 >::interpolated_zeta_on_edge(), k, oomph::Node::make_periodic(), min, n, oomph::QuadTreeNames::N, oomph::Node::ndim(), oomph::FiniteElement::nnode(), oomph::FiniteElement::node_pt(), oomph::Node::nposition_type(), oomph::TimeStepper::ntstorage(), oomph::Data::nvalue(), oomph::Tree::OMEGA, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::PRefineableElement::p_order(), oomph::Data::pin(), oomph::SolidNode::pin_position(), s, oomph::QuadTreeNames::S, oomph::Node::set_coordinates_on_boundary(), oomph::MacroElementNodeUpdateElementBase::set_node_update_info(), oomph::Data::set_value(), oomph::AlgebraicElementBase::setup_algebraic_node_update(), oomph::Global_string_for_annotation::string(), plotPSD::t, oomph::QuadTreeNames::W, oomph::Node::x(), and Eigen::zeta().
|
virtual |
Pre-build (search father for required nodes which may already exist)
Check the father element for any required nodes which already exist
/ Build update info by passing vector of geometric objects: / This sets the current element to be the update element / for all of the element's nodes – this is reversed / if the element is ever un-refined in the father element's / rebuild_from_sons() function which overwrites this / assignment to avoid nasty segmentation faults that occur / when a node tries to update itself via an element that no / longer exists...
Reimplemented from oomph::RefineableElement.
References oomph::MacroElementNodeUpdateElementBase::geom_object_pt(), oomph::RefineableElement::get_interpolated_values(), oomph::FiniteElement::get_node_at_local_coordinate(), i, k, oomph::FiniteElement::macro_elem_pt(), oomph::QuadTreeNames::NE, oomph::FiniteElement::node_pt(), oomph::Data::nvalue(), oomph::QuadTreeNames::NW, oomph::Tree::object_pt(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, s, oomph::QElementBase::s_macro_ll(), oomph::QElementBase::s_macro_ur(), oomph::QuadTreeNames::SE, oomph::MacroElementNodeUpdateElementBase::set_node_update_info(), oomph::Data::set_value(), oomph::Tree::son_type(), oomph::Global_string_for_annotation::string(), oomph::QuadTreeNames::SW, plotPSD::t, oomph::Data::time_stepper_pt(), and plotDoE::x.
|
protectedvirtual |
Set up hanging node information. Overloaded to implement the mortar method rather than constrained approximation. This enforces continuity weakly via an integral matching condition at non-conforming element boundaries.
Internal function to set up the hanging nodes on a particular edge of the element. Implements the mortarting method to enforce continuity weakly across non-conforming element boundaries \(\Gamma\) using an integral matching condition
\[ \int_\Gamma (u_{\mbox{S}} - u_{\mbox{M}}) \psi \mbox{d} s = 0 \]
for all polynomials \(\psi\) on \(\Gamma\) of degree at most p-2 (where p is the spectral-order of the dependent element) and a vertex matching condition
\[ (u_{\mbox{S}} - u_{\mbox{M}})\big\vert_{\partial\Gamma} = 0.\]
The algorithm works as follows:
The positions of the dependent nodes are set to be consistent with their hanging schemes.
Reimplemented from oomph::RefineableQElement< 2 >.
References oomph::Orthpoly::ddlegendre(), oomph::Orthpoly::dlegendre(), Global_Physical_Variables::E, boost::multiprecision::fabs(), oomph::Orthpoly::gll_nodes(), oomph::QuadTree::gteq_edge_neighbour(), i, oomph::RefineableElement::interpolating_basis(), oomph::RefineableElement::interpolating_node_pt(), j, k, m, n, N, oomph::RefineableElement::ninterpolating_node(), oomph::RefineableElement::ninterpolating_node_1d(), oomph::Tree::nsons(), oomph::Tree::object_pt(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, Global_Physical_Variables::P, Eigen::bfloat16_impl::pow(), Eigen::numext::q, s, oomph::QuadTreeNames::S, oomph::HangInfo::set_master_node_pt(), v, and oomph::QuadTreeNames::W.
|
virtual |
Rebuild the element. This needs to find any nodes in the sons which are still required.
Rebuild the element from nodes found in its sons Adjusts its p-order to be the maximum of its sons' p-orders
Implements oomph::RefineableElement.
References oomph::Mesh::add_boundary_node(), oomph::Mesh::add_node_pt(), oomph::Mesh::boundary_coordinate_exists(), Global_Physical_Variables::E, oomph::MacroElementNodeUpdateElementBase::geom_object_pt(), oomph::RefineableQElement< 2 >::get_bcs(), oomph::RefineableQElement< 2 >::get_boundaries(), oomph::RefineableElement::get_interpolated_values(), oomph::RefineableSolidQElement< 2 >::get_solid_bcs(), oomph::FiniteElement::get_x(), i, oomph::RefineableQElement< 2 >::interpolated_zeta_on_edge(), j, k, n, N, oomph::Node::ndim(), oomph::QuadTreeNames::NE, oomph::TimeStepper::ntstorage(), oomph::Data::nvalue(), oomph::QuadTreeNames::NW, oomph::Tree::OMEGA, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::PRefineableElement::p_order(), oomph::Data::pin(), oomph::SolidNode::pin_position(), s, oomph::QuadTreeNames::S, oomph::QuadTreeNames::SE, oomph::Node::set_coordinates_on_boundary(), oomph::Data::set_value(), oomph::Global_string_for_annotation::string(), oomph::QuadTreeNames::SW, plotPSD::t, oomph::QuadTreeNames::W, oomph::Node::x(), and Eigen::zeta().
|
virtual |
Overload the shape functions.
Shape functions for PRefineableQElement<DIM>
Implements oomph::FiniteElement.
References oomph::OneDimensionalLegendreShape< NNODE_1D >::calculate_nodal_positions(), i, j, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and s.