Public Member Functions | List of all members
oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID > Class Template Reference

Refineable version of the PseudoSolidNodeUpdateELement. More...

#include <pseudosolid_node_update_elements.h>

+ Inheritance diagram for oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >:

Public Member Functions

 RefineablePseudoSolidNodeUpdateElement ()
 Constructor, call the BASIC and SOLID elements' constructors and set the "density" parameter for solid element to zero. More...
 
void describe_local_dofs (std::ostream &out, const std::string &current_string) const
 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(...) More...
 
unsigned required_nvalue (const unsigned &n) const
 The required number of values is the sum of the two. More...
 
unsigned ncont_interpolated_values () const
 The number of continuously interpolated values is the sum of the SOLID and BASIC values. More...
 
int solid_p_nodal_index () const
 We assume that the solid stuff is stored at the end of the nodes, i.e. its index is the number of continuously interplated values in the BASIC equations. More...
 
void fill_in_contribution_to_residuals (Vector< double > &residuals)
 Final override for residuals function: adds contributions from both underlying element types. More...
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 Final override for jacobian function: Calls get_jacobian() for both of the underlying element types. More...
 
void fill_in_contribution_to_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 Final override for mass matrix function: contributions are included from both the underlying element types. More...
 
void fill_in_shape_derivatives_by_fd (DenseMatrix< double > &jacobian)
 Fill in the derivatives of the BASIC equations w.r.t. to the solid position dofs, taking hanging nodes into account. More...
 
void identify_geometric_data (std::set< Data * > &geometric_data_pt)
 Specify Data that affects the geometry of the element by adding the position Data to the set that's passed in. (This functionality is required in FSI problems; set is used to avoid double counting). Refineable version includes hanging nodes. More...
 
void assign_additional_local_eqn_numbers ()
 Final override for the assign__additional_local_eqn_numbers(): Call the version for the BASIC element. More...
 
void rebuild_from_sons (Mesh *&mesh_pt)
 Call rebuild_from_sons() for both of the underlying element types. More...
 
void get_interpolated_values (const unsigned &t, const Vector< double > &s, Vector< double > &values)
 Call get_interpolated_values(...) for both of the underlying element types. More...
 
void get_interpolated_values (const Vector< double > &s, Vector< double > &values)
 Call get_interpolated_values(...) for both of the underlying element types. More...
 
Nodeinterpolating_node_pt (const unsigned &n, const int &value_id)
 We must compose the underlying interpolating nodes from the BASIC and SOLID equations, the BASIC ones are first. More...
 
double local_one_d_fraction_of_interpolating_node (const unsigned &n1d, const unsigned &i, const int &value_id)
 The pressure nodes are the corner nodes, so when value_id==0, the fraction is the same as the 1d node number, 0 or 1. More...
 
Nodeget_interpolating_node_at_local_coordinate (const Vector< double > &s, const int &value_id)
 The velocity nodes are the same as the geometric nodes. The pressure nodes must be calculated by using the same methods as the geometric nodes, but by recalling that there are only two pressure nodes per edge. More...
 
unsigned ninterpolating_node_1d (const int &value_id)
 The number of 1d pressure nodes is 2, otherwise we have the positional nodes. More...
 
unsigned ninterpolating_node (const int &value_id)
 The number of pressure nodes is 2^DIM. The number of velocity nodes is the same as the number of geometric nodes. More...
 
void interpolating_basis (const Vector< double > &s, Shape &psi, const int &value_id) const
 The basis interpolating the pressure is given by pshape(). / The basis interpolating the velocity is shape(). More...
 
unsigned num_Z2_flux_terms ()
 Number of 'flux' terms for Z2 error estimation: Error estimation is based on error in BASIC element. More...
 
void get_Z2_flux (const Vector< double > &s, Vector< double > &flux)
 'Flux' vector for Z2 error estimation: Error estimation is based on error in BASIC element More...
 
void further_setup_hanging_nodes ()
 Perform additional hanging node procedures for variables that are not interpolated by all nodes. Done for both of the underlying element types. More...
 
void build (Mesh *&mesh_pt, Vector< Node * > &new_node_pt, bool &was_already_built, std::ofstream &new_nodes_file)
 Build function: Call the one for the SOLID element since it calls the one basic build function automatically. More...
 
void build (Mesh *&mesh_pt, Vector< Node * > &new_node_pt, bool &was_already_built)
 Build function: Call the one for the SOLID element since it calls the one basic build function automatically. More...
 
void further_build ()
 Further build: Done for both of the underlying element types. More...
 
unsigned nvertex_node () const
 Number of vertex nodes in the element. More...
 
Nodevertex_node_pt (const unsigned &j) const
 Pointer to the j-th vertex node in the element. More...
 
void compute_norm (double &norm)
 Compute norm of solution. Use version in BASIC element. More...
 
void compute_exact_Z2_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_flux_pt, double &error, double &norm)
 Plot the error when compared against a given exact flux. Also calculates the norm of the error and that of the exact flux. Use version in BASIC element. More...
 
unsigned nrecovery_order ()
 Order of recovery shape functions for Z2 error estimation: Done for BASIC element since it determines the refinement. More...
 
void output (std::ostream &outfile)
 Overload the output function: Use that of the BASIC element. More...
 
void output (std::ostream &outfile, const unsigned &n_p)
 Output function, plotting at n_p points: Use that of the BASIC element. More...
 
void output (FILE *file_pt)
 Overload the output function: Use that of the BASIC element. More...
 
void output (FILE *file_pt, const unsigned &n_p)
 Output function: Use that of the BASIC element. More...
 
unsigned ndof_types () const
 The number of "DOF types" that degrees of freedom in this element are sub-divided into. More...
 
unsigned nbasic_dof_types () const
 return the number of DOF types associated with the BASIC elements in this combined element More...
 
unsigned nsolid_dof_types () const
 return the number of DOF types associated with the SOLID elements in this combined element More...
 
void get_dof_numbers_for_unknowns (std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
 Create a list of pairs for all unknowns in this element, so that the first entry in each pair contains the global equation number of the unknown, while the second one contains the number of the "DOF type" that this unknown is associated with. This method combines the get_dof_numbers_for_unknowns(...) method for the BASIC and SOLID elements. The basic elements retain their DOF type numbering and the SOLID elements DOF type numbers are incremented by nbasic_dof_types(). More...
 

Detailed Description

template<class BASIC, class SOLID>
class oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >

Refineable version of the PseudoSolidNodeUpdateELement.

Definition at line 583 of file pseudosolid_node_update_elements.h.

Constructor & Destructor Documentation

◆ RefineablePseudoSolidNodeUpdateElement()

template<class BASIC , class SOLID >
oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::RefineablePseudoSolidNodeUpdateElement ( )
inline

Constructor, call the BASIC and SOLID elements' constructors and set the "density" parameter for solid element to zero.

Definition at line 589 of file pseudosolid_node_update_elements.h.

References oomph::PseudoSolidHelper::Zero.

Member Function Documentation

◆ assign_additional_local_eqn_numbers()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::assign_additional_local_eqn_numbers ( )
inline

Final override for the assign__additional_local_eqn_numbers(): Call the version for the BASIC element.

Definition at line 1093 of file pseudosolid_node_update_elements.h.

◆ build() [1/2]

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::build ( Mesh *&  mesh_pt,
Vector< Node * > &  new_node_pt,
bool &  was_already_built 
)
inline

Build function: Call the one for the SOLID element since it calls the one basic build function automatically.

Definition at line 1323 of file pseudosolid_node_update_elements.h.

◆ build() [2/2]

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::build ( Mesh *&  mesh_pt,
Vector< Node * > &  new_node_pt,
bool &  was_already_built,
std::ofstream &  new_nodes_file 
)
inline

Build function: Call the one for the SOLID element since it calls the one basic build function automatically.

Definition at line 1312 of file pseudosolid_node_update_elements.h.

◆ compute_exact_Z2_error()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::compute_exact_Z2_error ( std::ostream &  outfile,
FiniteElement::SteadyExactSolutionFctPt  exact_flux_pt,
double &  error,
double &  norm 
)
inline

Plot the error when compared against a given exact flux. Also calculates the norm of the error and that of the exact flux. Use version in BASIC element.

Definition at line 1360 of file pseudosolid_node_update_elements.h.

◆ compute_norm()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::compute_norm ( double &  norm)
inline

Compute norm of solution. Use version in BASIC element.

Definition at line 1352 of file pseudosolid_node_update_elements.h.

◆ describe_local_dofs()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::describe_local_dofs ( std::ostream &  out,
const std::string &  current_string 
) const
inline

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

Definition at line 603 of file pseudosolid_node_update_elements.h.

◆ fill_in_contribution_to_jacobian()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::fill_in_contribution_to_jacobian ( Vector< double > &  residuals,
DenseMatrix< double > &  jacobian 
)
inline

Final override for jacobian function: Calls get_jacobian() for both of the underlying element types.

Definition at line 656 of file pseudosolid_node_update_elements.h.

References oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::fill_in_shape_derivatives_by_fd().

◆ fill_in_contribution_to_jacobian_and_mass_matrix()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::fill_in_contribution_to_jacobian_and_mass_matrix ( Vector< double > &  residuals,
DenseMatrix< double > &  jacobian,
DenseMatrix< double > &  mass_matrix 
)
inline

Final override for mass matrix function: contributions are included from both the underlying element types.

Definition at line 671 of file pseudosolid_node_update_elements.h.

References oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::fill_in_shape_derivatives_by_fd().

◆ fill_in_contribution_to_residuals()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::fill_in_contribution_to_residuals ( Vector< double > &  residuals)
inline

Final override for residuals function: adds contributions from both underlying element types.

Definition at line 646 of file pseudosolid_node_update_elements.h.

◆ fill_in_shape_derivatives_by_fd()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::fill_in_shape_derivatives_by_fd ( DenseMatrix< double > &  jacobian)
inline

◆ further_build()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::further_build ( )
inline

Further build: Done for both of the underlying element types.

Definition at line 1332 of file pseudosolid_node_update_elements.h.

◆ further_setup_hanging_nodes()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::further_setup_hanging_nodes ( )
inline

Perform additional hanging node procedures for variables that are not interpolated by all nodes. Done for both of the underlying element types.

Definition at line 1303 of file pseudosolid_node_update_elements.h.

◆ get_dof_numbers_for_unknowns()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::get_dof_numbers_for_unknowns ( std::list< std::pair< unsigned long, unsigned >> &  dof_lookup_list) const
inline

Create a list of pairs for all unknowns in this element, so that the first entry in each pair contains the global equation number of the unknown, while the second one contains the number of the "DOF type" that this unknown is associated with. This method combines the get_dof_numbers_for_unknowns(...) method for the BASIC and SOLID elements. The basic elements retain their DOF type numbering and the SOLID elements DOF type numbers are incremented by nbasic_dof_types().

Definition at line 1429 of file pseudosolid_node_update_elements.h.

References oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::nbasic_dof_types().

◆ get_interpolated_values() [1/2]

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::get_interpolated_values ( const unsigned &  t,
const Vector< double > &  s,
Vector< double > &  values 
)
inline

Call get_interpolated_values(...) for both of the underlying element types.

Definition at line 1108 of file pseudosolid_node_update_elements.h.

References s, and t.

◆ get_interpolated_values() [2/2]

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::get_interpolated_values ( const Vector< double > &  s,
Vector< double > &  values 
)
inline

Call get_interpolated_values(...) for both of the underlying element types.

Definition at line 1136 of file pseudosolid_node_update_elements.h.

References s.

◆ get_interpolating_node_at_local_coordinate()

template<class BASIC , class SOLID >
Node* oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::get_interpolating_node_at_local_coordinate ( const Vector< double > &  s,
const int &  value_id 
)
inline

The velocity nodes are the same as the geometric nodes. The pressure nodes must be calculated by using the same methods as the geometric nodes, but by recalling that there are only two pressure nodes per edge.

Definition at line 1207 of file pseudosolid_node_update_elements.h.

References s.

◆ get_Z2_flux()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::get_Z2_flux ( const Vector< double > &  s,
Vector< double > &  flux 
)
inline

'Flux' vector for Z2 error estimation: Error estimation is based on error in BASIC element

Definition at line 1295 of file pseudosolid_node_update_elements.h.

References s.

◆ identify_geometric_data()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::identify_geometric_data ( std::set< Data * > &  geometric_data_pt)
inline

Specify Data that affects the geometry of the element by adding the position Data to the set that's passed in. (This functionality is required in FSI problems; set is used to avoid double counting). Refineable version includes hanging nodes.

Definition at line 1054 of file pseudosolid_node_update_elements.h.

References oomph::HangInfo::master_node_pt(), and oomph::HangInfo::nmaster().

◆ interpolating_basis()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::interpolating_basis ( const Vector< double > &  s,
Shape psi,
const int &  value_id 
) const
inline

The basis interpolating the pressure is given by pshape(). / The basis interpolating the velocity is shape().

Definition at line 1266 of file pseudosolid_node_update_elements.h.

References s.

◆ interpolating_node_pt()

template<class BASIC , class SOLID >
Node* oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::interpolating_node_pt ( const unsigned &  n,
const int &  value_id 
)
inline

We must compose the underlying interpolating nodes from the BASIC and SOLID equations, the BASIC ones are first.

Definition at line 1162 of file pseudosolid_node_update_elements.h.

◆ local_one_d_fraction_of_interpolating_node()

template<class BASIC , class SOLID >
double oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::local_one_d_fraction_of_interpolating_node ( const unsigned &  n1d,
const unsigned &  i,
const int &  value_id 
)
inline

The pressure nodes are the corner nodes, so when value_id==0, the fraction is the same as the 1d node number, 0 or 1.

Definition at line 1181 of file pseudosolid_node_update_elements.h.

References i.

◆ nbasic_dof_types()

template<class BASIC , class SOLID >
unsigned oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::nbasic_dof_types ( ) const
inline

return the number of DOF types associated with the BASIC elements in this combined element

Definition at line 1409 of file pseudosolid_node_update_elements.h.

Referenced by oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::get_dof_numbers_for_unknowns().

◆ ncont_interpolated_values()

template<class BASIC , class SOLID >
unsigned oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::ncont_interpolated_values ( ) const
inline

The number of continuously interpolated values is the sum of the SOLID and BASIC values.

Definition at line 618 of file pseudosolid_node_update_elements.h.

◆ ndof_types()

template<class BASIC , class SOLID >
unsigned oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::ndof_types ( ) const
inline

The number of "DOF types" that degrees of freedom in this element are sub-divided into.

Definition at line 1402 of file pseudosolid_node_update_elements.h.

◆ ninterpolating_node()

template<class BASIC , class SOLID >
unsigned oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::ninterpolating_node ( const int &  value_id)
inline

The number of pressure nodes is 2^DIM. The number of velocity nodes is the same as the number of geometric nodes.

Definition at line 1247 of file pseudosolid_node_update_elements.h.

◆ ninterpolating_node_1d()

template<class BASIC , class SOLID >
unsigned oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::ninterpolating_node_1d ( const int &  value_id)
inline

The number of 1d pressure nodes is 2, otherwise we have the positional nodes.

Definition at line 1228 of file pseudosolid_node_update_elements.h.

◆ nrecovery_order()

template<class BASIC , class SOLID >
unsigned oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::nrecovery_order ( )
inline

Order of recovery shape functions for Z2 error estimation: Done for BASIC element since it determines the refinement.

Definition at line 1371 of file pseudosolid_node_update_elements.h.

◆ nsolid_dof_types()

template<class BASIC , class SOLID >
unsigned oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::nsolid_dof_types ( ) const
inline

return the number of DOF types associated with the SOLID elements in this combined element

Definition at line 1416 of file pseudosolid_node_update_elements.h.

◆ num_Z2_flux_terms()

template<class BASIC , class SOLID >
unsigned oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::num_Z2_flux_terms ( )
inline

Number of 'flux' terms for Z2 error estimation: Error estimation is based on error in BASIC element.

Definition at line 1288 of file pseudosolid_node_update_elements.h.

◆ nvertex_node()

template<class BASIC , class SOLID >
unsigned oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::nvertex_node ( ) const
inline

Number of vertex nodes in the element.

Definition at line 1340 of file pseudosolid_node_update_elements.h.

◆ output() [1/4]

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::output ( FILE *  file_pt)
inline

Overload the output function: Use that of the BASIC element.

Definition at line 1389 of file pseudosolid_node_update_elements.h.

References oomph::CommandLineArgs::output().

◆ output() [2/4]

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::output ( FILE *  file_pt,
const unsigned &  n_p 
)
inline

Output function: Use that of the BASIC element.

Definition at line 1395 of file pseudosolid_node_update_elements.h.

References oomph::CommandLineArgs::output().

◆ output() [3/4]

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::output ( std::ostream &  outfile)
inline

Overload the output function: Use that of the BASIC element.

Definition at line 1377 of file pseudosolid_node_update_elements.h.

References oomph::CommandLineArgs::output().

◆ output() [4/4]

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::output ( std::ostream &  outfile,
const unsigned &  n_p 
)
inline

Output function, plotting at n_p points: Use that of the BASIC element.

Definition at line 1383 of file pseudosolid_node_update_elements.h.

References oomph::CommandLineArgs::output().

◆ rebuild_from_sons()

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::rebuild_from_sons ( Mesh *&  mesh_pt)
inline

Call rebuild_from_sons() for both of the underlying element types.

Definition at line 1100 of file pseudosolid_node_update_elements.h.

◆ required_nvalue()

template<class BASIC , class SOLID >
unsigned oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::required_nvalue ( const unsigned &  n) const
inline

The required number of values is the sum of the two.

Definition at line 611 of file pseudosolid_node_update_elements.h.

◆ solid_p_nodal_index()

template<class BASIC , class SOLID >
int oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::solid_p_nodal_index ( ) const
inline

We assume that the solid stuff is stored at the end of the nodes, i.e. its index is the number of continuously interplated values in the BASIC equations.

Definition at line 627 of file pseudosolid_node_update_elements.h.

Referenced by oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::fill_in_shape_derivatives_by_fd().

◆ vertex_node_pt()

template<class BASIC , class SOLID >
Node* oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::vertex_node_pt ( const unsigned &  j) const
inline

Pointer to the j-th vertex node in the element.

Definition at line 1346 of file pseudosolid_node_update_elements.h.


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