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

A templated class that permits combination two different element types, for the solution of problems in deforming domains. The first template paremter BASIC is the standard element and the second SOLID solves the equations that are used to control the mesh deformation. More...

#include <pseudosolid_node_update_elements.h>

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

Public Member Functions

 PseudoSolidNodeUpdateElement ()
 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...
 
void compute_norm (double &el_norm)
 Compute norm of solution: use the version in the BASIC class if there's any ambiguity. More...
 
unsigned required_nvalue (const unsigned &n) const
 The required number of values is the sum of the two. 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 the residuals function. Contributions are added from both underlying element types. More...
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 Final override for jacobian function: Contributions are included from both 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 evaluate_shape_derivs_by_direct_fd ()
 Evaluate shape derivatives by direct finite differencing. More...
 
void evaluate_shape_derivs_by_chain_rule ()
 Evaluate shape derivatives by chain rule. More...
 
void fill_in_shape_derivatives (DenseMatrix< double > &jacobian)
 Fill in the shape derivatives of the BASIC equations w.r.t. the solid position dofs. More...
 
void fill_in_shape_derivatives_by_fd (DenseMatrix< double > &jacobian)
 Fill in the derivatives of the BASIC equations w.r.t. the solid position dofs. 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). More...
 
void output (std::ostream &outfile)
 Overload the output function: Call that of the basic element. More...
 
void output (std::ostream &outfile, const unsigned &n_p)
 Output function: Plot at n_p plot points using the basic element's output function. More...
 
void output (FILE *file_pt)
 Overload the output function: Call that of the basic element. More...
 
void output (FILE *file_pt, const unsigned &n_p)
 Output function is just the same as the basic equations. 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 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...
 
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...
 
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...
 
unsigned nrecovery_order ()
 Order of recovery shape functions for Z2 error estimation: Done for BASIC element since it determines the refinement. 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...
 

Private Attributes

bool Shape_derivs_by_direct_fd
 Boolean flag to indicate shape derivative method. More...
 

Detailed Description

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

A templated class that permits combination two different element types, for the solution of problems in deforming domains. The first template paremter BASIC is the standard element and the second SOLID solves the equations that are used to control the mesh deformation.

Definition at line 55 of file pseudosolid_node_update_elements.h.

Constructor & Destructor Documentation

◆ PseudoSolidNodeUpdateElement()

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

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

Definition at line 65 of file pseudosolid_node_update_elements.h.

References oomph::PseudoSolidHelper::Zero.

Member Function Documentation

◆ compute_exact_Z2_error()

template<class BASIC , class SOLID >
void oomph::PseudoSolidNodeUpdateElement< 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 463 of file pseudosolid_node_update_elements.h.

◆ compute_norm()

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

Compute norm of solution: use the version in the BASIC class if there's any ambiguity.

Definition at line 88 of file pseudosolid_node_update_elements.h.

◆ describe_local_dofs()

template<class BASIC , class SOLID >
void oomph::PseudoSolidNodeUpdateElement< 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 79 of file pseudosolid_node_update_elements.h.

◆ evaluate_shape_derivs_by_chain_rule()

template<class BASIC , class SOLID >
void oomph::PseudoSolidNodeUpdateElement< BASIC, SOLID >::evaluate_shape_derivs_by_chain_rule ( )
inline

Evaluate shape derivatives by chain rule.

Definition at line 167 of file pseudosolid_node_update_elements.h.

References oomph::PseudoSolidNodeUpdateElement< BASIC, SOLID >::Shape_derivs_by_direct_fd.

◆ evaluate_shape_derivs_by_direct_fd()

template<class BASIC , class SOLID >
void oomph::PseudoSolidNodeUpdateElement< BASIC, SOLID >::evaluate_shape_derivs_by_direct_fd ( )
inline

Evaluate shape derivatives by direct finite differencing.

Definition at line 161 of file pseudosolid_node_update_elements.h.

References oomph::PseudoSolidNodeUpdateElement< BASIC, SOLID >::Shape_derivs_by_direct_fd.

◆ fill_in_contribution_to_jacobian()

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

Final override for jacobian function: Contributions are included from both the underlying element types.

Definition at line 129 of file pseudosolid_node_update_elements.h.

References oomph::PseudoSolidNodeUpdateElement< BASIC, SOLID >::fill_in_shape_derivatives().

◆ fill_in_contribution_to_jacobian_and_mass_matrix()

template<class BASIC , class SOLID >
void oomph::PseudoSolidNodeUpdateElement< 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 143 of file pseudosolid_node_update_elements.h.

References oomph::PseudoSolidNodeUpdateElement< BASIC, SOLID >::fill_in_shape_derivatives().

◆ fill_in_contribution_to_residuals()

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

Final override for the residuals function. Contributions are added from both underlying element types.

Definition at line 119 of file pseudosolid_node_update_elements.h.

◆ fill_in_shape_derivatives()

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

◆ fill_in_shape_derivatives_by_fd()

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

Fill in the derivatives of the BASIC equations w.r.t. the solid position dofs.

Definition at line 246 of file pseudosolid_node_update_elements.h.

References i.

Referenced by oomph::PseudoSolidNodeUpdateElement< BASIC, SOLID >::fill_in_shape_derivatives().

◆ get_dof_numbers_for_unknowns()

template<class BASIC , class SOLID >
void oomph::PseudoSolidNodeUpdateElement< 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 528 of file pseudosolid_node_update_elements.h.

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

◆ get_Z2_flux()

template<class BASIC , class SOLID >
void oomph::PseudoSolidNodeUpdateElement< 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 474 of file pseudosolid_node_update_elements.h.

References s.

◆ identify_geometric_data()

template<class BASIC , class SOLID >
void oomph::PseudoSolidNodeUpdateElement< 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).

Definition at line 415 of file pseudosolid_node_update_elements.h.

◆ nbasic_dof_types()

template<class BASIC , class SOLID >
unsigned oomph::PseudoSolidNodeUpdateElement< 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 508 of file pseudosolid_node_update_elements.h.

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

◆ ndof_types()

template<class BASIC , class SOLID >
unsigned oomph::PseudoSolidNodeUpdateElement< 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 501 of file pseudosolid_node_update_elements.h.

◆ nrecovery_order()

template<class BASIC , class SOLID >
unsigned oomph::PseudoSolidNodeUpdateElement< 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 493 of file pseudosolid_node_update_elements.h.

◆ nsolid_dof_types()

template<class BASIC , class SOLID >
unsigned oomph::PseudoSolidNodeUpdateElement< 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 515 of file pseudosolid_node_update_elements.h.

◆ num_Z2_flux_terms()

template<class BASIC , class SOLID >
unsigned oomph::PseudoSolidNodeUpdateElement< 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 454 of file pseudosolid_node_update_elements.h.

◆ nvertex_node()

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

Number of vertex nodes in the element.

Definition at line 480 of file pseudosolid_node_update_elements.h.

◆ output() [1/4]

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

Overload the output function: Call that of the basic element.

Definition at line 441 of file pseudosolid_node_update_elements.h.

References oomph::CommandLineArgs::output().

◆ output() [2/4]

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

Output function is just the same as the basic equations.

Definition at line 447 of file pseudosolid_node_update_elements.h.

References oomph::CommandLineArgs::output().

◆ output() [3/4]

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

Overload the output function: Call that of the basic element.

Definition at line 428 of file pseudosolid_node_update_elements.h.

References oomph::CommandLineArgs::output().

◆ output() [4/4]

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

Output function: Plot at n_p plot points using the basic element's output function.

Definition at line 435 of file pseudosolid_node_update_elements.h.

References oomph::CommandLineArgs::output().

◆ required_nvalue()

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

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

Definition at line 94 of file pseudosolid_node_update_elements.h.

◆ solid_p_nodal_index()

template<class BASIC , class SOLID >
int oomph::PseudoSolidNodeUpdateElement< 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 102 of file pseudosolid_node_update_elements.h.

◆ vertex_node_pt()

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

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

Definition at line 486 of file pseudosolid_node_update_elements.h.

Member Data Documentation

◆ Shape_derivs_by_direct_fd

template<class BASIC , class SOLID >
bool oomph::PseudoSolidNodeUpdateElement< BASIC, SOLID >::Shape_derivs_by_direct_fd
private

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