Public Member Functions | Private Member Functions | Private Attributes | List of all members
oomph::SimpleFSIPreconditioner< MATRIX > Class Template Reference

//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// More...

#include <fsi_preconditioners.h>

Inheritance diagram for oomph::SimpleFSIPreconditioner< MATRIX >:

Public Member Functions

 SimpleFSIPreconditioner ()
 Constructor. More...
 
 ~SimpleFSIPreconditioner ()
 Destructor: Clean up. More...
 
 SimpleFSIPreconditioner (const SimpleFSIPreconditioner &)=delete
 Broken copy constructor. More...
 
void set_navier_stokes_mesh (Mesh *mesh_pt, const bool &allow_multiple_element_type_in_navier_stokes_mesh=false)
 Broken assignment operator. More...
 
void set_wall_mesh (Mesh *mesh_pt, const bool &allow_multiple_element_type_in_wall_mesh=false)
 Setter function for the mesh containing the block-preconditionable FSI solid elements. More...
 
void setup ()
 Setup the preconditioner. More...
 
void preconditioner_solve (const DoubleVector &r, DoubleVector &z)
 Apply preconditioner to r. More...
 
void use_block_diagonal_version ()
 Switch to block-diagonal preconditioner. More...
 
void use_block_triangular_version_with_fluid_on_solid ()
 Switch to block-triangular preconditioner in which action of fluid dofs onto solid equations is retained. More...
 
void use_block_triangular_version_with_solid_on_fluid ()
 Switch to block-triangular preconditioner in which action of solid dofs onto fluid equations is retained. More...
 

Private Member Functions

virtual void identify_required_blocks (DenseMatrix< bool > &required_blocks)
 Identify the required blocks: Here we only need the momentum, gradient and divergence blocks of the 2x2 block-structured fluid matrix, the 1x1 solid block and the selected FSI-off diagonals. More...
 

Private Attributes

Preconditioner * Preconditioner_pt
 Preconditioner (inexact solver) More...
 
bool Retain_solid_onto_fluid_terms
 Boolean flag used to indicate that the solid onto fluid interaction terms are to be retained. More...
 
bool Retain_fluid_onto_solid_terms
 Boolean flag used to indicate that the fluid onto solid interaction terms are to be retained. More...
 
Mesh * Navier_stokes_mesh_pt
 Pointer to the navier stokes mesh. More...
 
Mesh * Wall_mesh_pt
 pointer to the solid mesh More...
 
bool Allow_multiple_element_type_in_navier_stokes_mesh
 Flag for multiple element types in the Navier-Stokes mesh. More...
 
bool Allow_multiple_element_type_in_wall_mesh
 Flag for multiple element types in the Wall mesh. More...
 

Detailed Description

template<typename MATRIX>
class oomph::SimpleFSIPreconditioner< MATRIX >

//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////

FSI preconditioner. This extracts upper/lower triangular blocks in the 3x3 overall block matrix structure arising from the monolithic discretisation of FSI problems with algebraic node updates. Dofs are decomposed into fluid velocity, pressure and solid unknowns. Blocks are then re-assembled into one global matrix and solved with a direct solver (SuperLU in its incarnation as an exact preconditioner). By default we retain the fluid on solid off diagonal blocks.

Definition at line 484 of file fsi_preconditioners.h.

Constructor & Destructor Documentation

◆ SimpleFSIPreconditioner() [1/2]

template<typename MATRIX >
oomph::SimpleFSIPreconditioner< MATRIX >::SimpleFSIPreconditioner ( )
inline

◆ ~SimpleFSIPreconditioner()

template<typename MATRIX >
oomph::SimpleFSIPreconditioner< MATRIX >::~SimpleFSIPreconditioner ( )
inline

Destructor: Clean up.

Definition at line 510 of file fsi_preconditioners.h.

References oomph::SimpleFSIPreconditioner< MATRIX >::Preconditioner_pt.

◆ SimpleFSIPreconditioner() [2/2]

template<typename MATRIX >
oomph::SimpleFSIPreconditioner< MATRIX >::SimpleFSIPreconditioner ( const SimpleFSIPreconditioner< MATRIX > &  )
delete

Broken copy constructor.

Member Function Documentation

◆ identify_required_blocks()

template<typename MATRIX >
void oomph::SimpleFSIPreconditioner< MATRIX >::identify_required_blocks ( DenseMatrix< bool > &  required_blocks)
privatevirtual

Identify the required blocks: Here we only need the momentum, gradient and divergence blocks of the 2x2 block-structured fluid matrix, the 1x1 solid block and the selected FSI-off diagonals.

/////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////// Identify the required blocks: Here we only need the momentum, gradient and divergence blocks of the 2x2 block-structured fluid matrix, the 1x1 solid block and the selected FSI-off diagonals.

Definition at line 632 of file fsi_preconditioners.h.

◆ preconditioner_solve()

template<typename MATRIX >
void oomph::SimpleFSIPreconditioner< MATRIX >::preconditioner_solve ( const DoubleVector &  r,
DoubleVector &  z 
)

Apply preconditioner to r.

Apply preconditioner to Vector r.

Definition at line 765 of file fsi_preconditioners.h.

◆ set_navier_stokes_mesh()

template<typename MATRIX >
void oomph::SimpleFSIPreconditioner< MATRIX >::set_navier_stokes_mesh ( Mesh *  mesh_pt,
const bool &  allow_multiple_element_type_in_navier_stokes_mesh = false 
)
inline

Broken assignment operator.

Setter function for the mesh containing the block-preconditionable Navier-Stokes elements.

Definition at line 531 of file fsi_preconditioners.h.

References oomph::SimpleFSIPreconditioner< MATRIX >::Allow_multiple_element_type_in_navier_stokes_mesh, and oomph::SimpleFSIPreconditioner< MATRIX >::Navier_stokes_mesh_pt.

◆ set_wall_mesh()

template<typename MATRIX >
void oomph::SimpleFSIPreconditioner< MATRIX >::set_wall_mesh ( Mesh *  mesh_pt,
const bool &  allow_multiple_element_type_in_wall_mesh = false 
)
inline

Setter function for the mesh containing the block-preconditionable FSI solid elements.

Definition at line 545 of file fsi_preconditioners.h.

References oomph::SimpleFSIPreconditioner< MATRIX >::Allow_multiple_element_type_in_wall_mesh, and oomph::SimpleFSIPreconditioner< MATRIX >::Wall_mesh_pt.

◆ setup()

template<typename MATRIX >
void oomph::SimpleFSIPreconditioner< MATRIX >::setup

Setup the preconditioner.

Setup the preconditioner: Copy the upper/lower triangular block matrices back into a big matrix (with the entries re-ordered relative to the original Jacobian matrix).

Definition at line 683 of file fsi_preconditioners.h.

◆ use_block_diagonal_version()

template<typename MATRIX >
void oomph::SimpleFSIPreconditioner< MATRIX >::use_block_diagonal_version ( )
inline

◆ use_block_triangular_version_with_fluid_on_solid()

template<typename MATRIX >
void oomph::SimpleFSIPreconditioner< MATRIX >::use_block_triangular_version_with_fluid_on_solid ( )
inline

Switch to block-triangular preconditioner in which action of fluid dofs onto solid equations is retained.

Definition at line 572 of file fsi_preconditioners.h.

References oomph::SimpleFSIPreconditioner< MATRIX >::Retain_fluid_onto_solid_terms, and oomph::SimpleFSIPreconditioner< MATRIX >::Retain_solid_onto_fluid_terms.

◆ use_block_triangular_version_with_solid_on_fluid()

template<typename MATRIX >
void oomph::SimpleFSIPreconditioner< MATRIX >::use_block_triangular_version_with_solid_on_fluid ( )
inline

Switch to block-triangular preconditioner in which action of solid dofs onto fluid equations is retained.

Definition at line 580 of file fsi_preconditioners.h.

References oomph::SimpleFSIPreconditioner< MATRIX >::Retain_fluid_onto_solid_terms, and oomph::SimpleFSIPreconditioner< MATRIX >::Retain_solid_onto_fluid_terms.

Member Data Documentation

◆ Allow_multiple_element_type_in_navier_stokes_mesh

template<typename MATRIX >
bool oomph::SimpleFSIPreconditioner< MATRIX >::Allow_multiple_element_type_in_navier_stokes_mesh
private

Flag for multiple element types in the Navier-Stokes mesh.

Definition at line 611 of file fsi_preconditioners.h.

Referenced by oomph::SimpleFSIPreconditioner< MATRIX >::set_navier_stokes_mesh(), and oomph::SimpleFSIPreconditioner< MATRIX >::SimpleFSIPreconditioner().

◆ Allow_multiple_element_type_in_wall_mesh

template<typename MATRIX >
bool oomph::SimpleFSIPreconditioner< MATRIX >::Allow_multiple_element_type_in_wall_mesh
private

Flag for multiple element types in the Wall mesh.

Definition at line 614 of file fsi_preconditioners.h.

Referenced by oomph::SimpleFSIPreconditioner< MATRIX >::set_wall_mesh(), and oomph::SimpleFSIPreconditioner< MATRIX >::SimpleFSIPreconditioner().

◆ Navier_stokes_mesh_pt

template<typename MATRIX >
Mesh* oomph::SimpleFSIPreconditioner< MATRIX >::Navier_stokes_mesh_pt
private

◆ Preconditioner_pt

template<typename MATRIX >
Preconditioner* oomph::SimpleFSIPreconditioner< MATRIX >::Preconditioner_pt
private

◆ Retain_fluid_onto_solid_terms

template<typename MATRIX >
bool oomph::SimpleFSIPreconditioner< MATRIX >::Retain_fluid_onto_solid_terms
private

◆ Retain_solid_onto_fluid_terms

template<typename MATRIX >
bool oomph::SimpleFSIPreconditioner< MATRIX >::Retain_solid_onto_fluid_terms
private

◆ Wall_mesh_pt

template<typename MATRIX >
Mesh* oomph::SimpleFSIPreconditioner< MATRIX >::Wall_mesh_pt
private

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