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)
 
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 ()
 
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_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 558 of file pseudosolid_node_update_elements.h.

Constructor & Destructor Documentation

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 566 of file pseudosolid_node_update_elements.h.

References oomph::PseudoSolidHelper::Zero.

Member Function Documentation

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 1046 of file pseudosolid_node_update_elements.h.

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 1252 of file pseudosolid_node_update_elements.h.

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 1263 of file pseudosolid_node_update_elements.h.

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 1289 of file pseudosolid_node_update_elements.h.

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 581 of file pseudosolid_node_update_elements.h.

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 625 of file pseudosolid_node_update_elements.h.

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

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 640 of file pseudosolid_node_update_elements.h.

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

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 615 of file pseudosolid_node_update_elements.h.

References oomph::fill_in_contribution_to_residuals().

template<class BASIC , class SOLID >
void oomph::RefineablePseudoSolidNodeUpdateElement< BASIC, SOLID >::fill_in_shape_derivatives_by_fd ( DenseMatrix< double > &  jacobian)
inline
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 1271 of file pseudosolid_node_update_elements.h.

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 1243 of file pseudosolid_node_update_elements.h.

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 1345 of file pseudosolid_node_update_elements.h.

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

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 1060 of file pseudosolid_node_update_elements.h.

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 1084 of file pseudosolid_node_update_elements.h.

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 1149 of file pseudosolid_node_update_elements.h.

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 1235 of file pseudosolid_node_update_elements.h.

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 1005 of file pseudosolid_node_update_elements.h.

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

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 1209 of file pseudosolid_node_update_elements.h.

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 1107 of file pseudosolid_node_update_elements.h.

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 1123 of file pseudosolid_node_update_elements.h.

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 1325 of file pseudosolid_node_update_elements.h.

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

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 594 of file pseudosolid_node_update_elements.h.

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 1318 of file pseudosolid_node_update_elements.h.

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 1190 of file pseudosolid_node_update_elements.h.

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 1171 of file pseudosolid_node_update_elements.h.

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 1300 of file pseudosolid_node_update_elements.h.

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 1332 of file pseudosolid_node_update_elements.h.

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 1231 of file pseudosolid_node_update_elements.h.

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

Number of vertex nodes in the element.

Definition at line 1279 of file pseudosolid_node_update_elements.h.

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 1303 of file pseudosolid_node_update_elements.h.

References oomph::output().

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 1306 of file pseudosolid_node_update_elements.h.

References oomph::output().

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 1310 of file pseudosolid_node_update_elements.h.

References oomph::output().

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 1313 of file pseudosolid_node_update_elements.h.

References oomph::output().

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 1053 of file pseudosolid_node_update_elements.h.

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 589 of file pseudosolid_node_update_elements.h.

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 601 of file pseudosolid_node_update_elements.h.

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

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 1283 of file pseudosolid_node_update_elements.h.


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