Public Member Functions | Private Attributes | List of all members
oomph::FSIPreconditioner Class Reference

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

#include <fsi_preconditioners.h>

Inheritance diagram for oomph::FSIPreconditioner:

Public Member Functions

 FSIPreconditioner (Problem *problem_pt)
 Constructor: By default use block triangular form with retained fluid on solid terms. A problem pointer is required for the underlying NavierStokesSchurComplementPreconditioner. More...
 
 ~FSIPreconditioner ()
 Destructor: Clean up. More...
 
 FSIPreconditioner (const FSIPreconditioner &)=delete
 Broken copy constructor. More...
 
void set_solid_preconditioner_pt (Preconditioner *solid_preconditioner_pt)
 Broken assignment operator. More...
 
Preconditioner * solid_preconditioner_pt () const
 Read-only access to solid preconditoner (use set_... to set it) 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...
 
void set_navier_stokes_mesh (Mesh *mesh_pt, const bool &allow_multiple_element_type_in_navier_stokes_mesh=false)
 Setter function for the mesh containing the block-preconditionable Navier-Stokes elements. The optional argument indicates if there are more than one type of elements in same mesh. 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. The optional argument indicates if there are more than one type of elements in the same mesh. More...
 
void setup ()
 Setup the preconditioner. More...
 
void preconditioner_solve (const DoubleVector &r, DoubleVector &z)
 Apply preconditioner to r. More...
 
NavierStokesSchurComplementPreconditioner * navier_stokes_preconditioner_pt () const
 Access function to the Navier Stokes preconditioner (inexact solver) More...
 
void enable_doc_time ()
 Enable documentation of time. More...
 
void disable_doc_time ()
 Disable documentation of time. More...
 

Private Attributes

NavierStokesSchurComplementPreconditioner * Navier_stokes_preconditioner_pt
 Pointer the Navier Stokes preconditioner (inexact solver) More...
 
Preconditioner * Solid_preconditioner_pt
 Pointer to the solid preconditioner (inexact solver) More...
 
MatrixVectorProduct * Matrix_vector_product_0_1_pt
 Pointer to fluid/solid interaction matrix. More...
 
MatrixVectorProduct * Matrix_vector_product_1_0_pt
 Pointer to solid/fluid solid interaction matrix. More...
 
bool Preconditioner_has_been_setup
 Boolean indicating the preconditioner has been set up. 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...
 
bool Doc_time
 Set Doc_time to true for outputting results of timings. 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 to indicate if there are multiple element types in the Navier-Stokes mesh. More...
 
bool Allow_multiple_element_type_in_wall_mesh
 

Detailed Description

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

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. NavierStokesSchurComplementPreconditioner is used as the inexact solver for the fluid block; SuperLU (in its incarnation as an "exact" preconditioner) is used for the solid block. By default we retain the fluid on solid off diagonal blocks.

Definition at line 50 of file fsi_preconditioners.h.

Constructor & Destructor Documentation

◆ FSIPreconditioner() [1/2]

oomph::FSIPreconditioner::FSIPreconditioner ( Problem *  problem_pt)
inline

Constructor: By default use block triangular form with retained fluid on solid terms. A problem pointer is required for the underlying NavierStokesSchurComplementPreconditioner.

Definition at line 56 of file fsi_preconditioners.h.

References Allow_multiple_element_type_in_navier_stokes_mesh, Allow_multiple_element_type_in_wall_mesh, Doc_time, Matrix_vector_product_0_1_pt, Matrix_vector_product_1_0_pt, Navier_stokes_mesh_pt, Navier_stokes_preconditioner_pt, Preconditioner_has_been_setup, Retain_fluid_onto_solid_terms, Retain_solid_onto_fluid_terms, Solid_preconditioner_pt, and Wall_mesh_pt.

◆ ~FSIPreconditioner()

oomph::FSIPreconditioner::~FSIPreconditioner ( )
inline

◆ FSIPreconditioner() [2/2]

oomph::FSIPreconditioner::FSIPreconditioner ( const FSIPreconditioner )
delete

Broken copy constructor.

Member Function Documentation

◆ disable_doc_time()

void oomph::FSIPreconditioner::disable_doc_time ( )
inline

Disable documentation of time.

Definition at line 211 of file fsi_preconditioners.h.

References Doc_time.

◆ enable_doc_time()

void oomph::FSIPreconditioner::enable_doc_time ( )
inline

Enable documentation of time.

Definition at line 205 of file fsi_preconditioners.h.

References Doc_time.

◆ navier_stokes_preconditioner_pt()

NavierStokesSchurComplementPreconditioner* oomph::FSIPreconditioner::navier_stokes_preconditioner_pt ( ) const
inline

Access function to the Navier Stokes preconditioner (inexact solver)

Definition at line 198 of file fsi_preconditioners.h.

References Navier_stokes_preconditioner_pt.

◆ preconditioner_solve()

void oomph::FSIPreconditioner::preconditioner_solve ( const DoubleVector &  r,
DoubleVector &  z 
)

◆ set_navier_stokes_mesh()

void oomph::FSIPreconditioner::set_navier_stokes_mesh ( Mesh *  mesh_pt,
const bool &  allow_multiple_element_type_in_navier_stokes_mesh = false 
)
inline

Setter function for the mesh containing the block-preconditionable Navier-Stokes elements. The optional argument indicates if there are more than one type of elements in same mesh.

Definition at line 164 of file fsi_preconditioners.h.

References Allow_multiple_element_type_in_navier_stokes_mesh, and Navier_stokes_mesh_pt.

◆ set_solid_preconditioner_pt()

void oomph::FSIPreconditioner::set_solid_preconditioner_pt ( Preconditioner *  solid_preconditioner_pt)
inline

Broken assignment operator.

Set solid preconditioner (deletes existing one)

Definition at line 121 of file fsi_preconditioners.h.

References solid_preconditioner_pt(), and Solid_preconditioner_pt.

◆ set_wall_mesh()

void oomph::FSIPreconditioner::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. The optional argument indicates if there are more than one type of elements in the same mesh.

Definition at line 179 of file fsi_preconditioners.h.

References Allow_multiple_element_type_in_wall_mesh, and Wall_mesh_pt.

◆ setup()

void oomph::FSIPreconditioner::setup ( )

Setup the preconditioner.

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

/////////////////////////////////////////////////////////////////////////// Setup the preconditioner. Note: Matrix must be a CRDoubleMatrix.

Definition at line 269 of file fsi_preconditioners.h.

References Allow_multiple_element_type_in_navier_stokes_mesh, Allow_multiple_element_type_in_wall_mesh, Doc_time, Matrix_vector_product_0_1_pt, Matrix_vector_product_1_0_pt, Navier_stokes_mesh_pt, Navier_stokes_preconditioner_pt, Preconditioner_has_been_setup, Retain_fluid_onto_solid_terms, Retain_solid_onto_fluid_terms, Solid_preconditioner_pt, and Wall_mesh_pt.

◆ solid_preconditioner_pt()

Preconditioner* oomph::FSIPreconditioner::solid_preconditioner_pt ( ) const
inline

Read-only access to solid preconditoner (use set_... to set it)

Definition at line 132 of file fsi_preconditioners.h.

References Solid_preconditioner_pt.

Referenced by set_solid_preconditioner_pt().

◆ use_block_diagonal_version()

void oomph::FSIPreconditioner::use_block_diagonal_version ( )
inline

Switch to block-diagonal preconditioner.

Definition at line 139 of file fsi_preconditioners.h.

References Retain_fluid_onto_solid_terms, and Retain_solid_onto_fluid_terms.

◆ use_block_triangular_version_with_fluid_on_solid()

void oomph::FSIPreconditioner::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 147 of file fsi_preconditioners.h.

References Retain_fluid_onto_solid_terms, and Retain_solid_onto_fluid_terms.

◆ use_block_triangular_version_with_solid_on_fluid()

void oomph::FSIPreconditioner::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 155 of file fsi_preconditioners.h.

References Retain_fluid_onto_solid_terms, and Retain_solid_onto_fluid_terms.

Member Data Documentation

◆ Allow_multiple_element_type_in_navier_stokes_mesh

bool oomph::FSIPreconditioner::Allow_multiple_element_type_in_navier_stokes_mesh
private

Flag to indicate if there are multiple element types in the Navier-Stokes mesh.

Definition at line 252 of file fsi_preconditioners.h.

Referenced by FSIPreconditioner(), set_navier_stokes_mesh(), and setup().

◆ Allow_multiple_element_type_in_wall_mesh

bool oomph::FSIPreconditioner::Allow_multiple_element_type_in_wall_mesh
private

Definition at line 255 of file fsi_preconditioners.h.

Referenced by FSIPreconditioner(), set_wall_mesh(), and setup().

◆ Doc_time

bool oomph::FSIPreconditioner::Doc_time
private

Set Doc_time to true for outputting results of timings.

Definition at line 242 of file fsi_preconditioners.h.

Referenced by disable_doc_time(), enable_doc_time(), FSIPreconditioner(), and setup().

◆ Matrix_vector_product_0_1_pt

MatrixVectorProduct* oomph::FSIPreconditioner::Matrix_vector_product_0_1_pt
private

Pointer to fluid/solid interaction matrix.

Definition at line 225 of file fsi_preconditioners.h.

Referenced by FSIPreconditioner(), preconditioner_solve(), setup(), and ~FSIPreconditioner().

◆ Matrix_vector_product_1_0_pt

MatrixVectorProduct* oomph::FSIPreconditioner::Matrix_vector_product_1_0_pt
private

Pointer to solid/fluid solid interaction matrix.

Definition at line 228 of file fsi_preconditioners.h.

Referenced by FSIPreconditioner(), preconditioner_solve(), setup(), and ~FSIPreconditioner().

◆ Navier_stokes_mesh_pt

Mesh* oomph::FSIPreconditioner::Navier_stokes_mesh_pt
private

Pointer to the navier stokes mesh.

Definition at line 245 of file fsi_preconditioners.h.

Referenced by FSIPreconditioner(), set_navier_stokes_mesh(), and setup().

◆ Navier_stokes_preconditioner_pt

NavierStokesSchurComplementPreconditioner* oomph::FSIPreconditioner::Navier_stokes_preconditioner_pt
private

Pointer the Navier Stokes preconditioner (inexact solver)

Definition at line 219 of file fsi_preconditioners.h.

Referenced by FSIPreconditioner(), navier_stokes_preconditioner_pt(), preconditioner_solve(), setup(), and ~FSIPreconditioner().

◆ Preconditioner_has_been_setup

bool oomph::FSIPreconditioner::Preconditioner_has_been_setup
private

Boolean indicating the preconditioner has been set up.

Definition at line 231 of file fsi_preconditioners.h.

Referenced by FSIPreconditioner(), and setup().

◆ Retain_fluid_onto_solid_terms

bool oomph::FSIPreconditioner::Retain_fluid_onto_solid_terms
private

Boolean flag used to indicate that the fluid onto solid interaction terms are to be retained.

Definition at line 239 of file fsi_preconditioners.h.

Referenced by FSIPreconditioner(), preconditioner_solve(), setup(), use_block_diagonal_version(), use_block_triangular_version_with_fluid_on_solid(), and use_block_triangular_version_with_solid_on_fluid().

◆ Retain_solid_onto_fluid_terms

bool oomph::FSIPreconditioner::Retain_solid_onto_fluid_terms
private

Boolean flag used to indicate that the solid onto fluid interaction terms are to be retained.

Definition at line 235 of file fsi_preconditioners.h.

Referenced by FSIPreconditioner(), preconditioner_solve(), setup(), use_block_diagonal_version(), use_block_triangular_version_with_fluid_on_solid(), and use_block_triangular_version_with_solid_on_fluid().

◆ Solid_preconditioner_pt

Preconditioner* oomph::FSIPreconditioner::Solid_preconditioner_pt
private

Pointer to the solid preconditioner (inexact solver)

Definition at line 222 of file fsi_preconditioners.h.

Referenced by FSIPreconditioner(), preconditioner_solve(), set_solid_preconditioner_pt(), setup(), solid_preconditioner_pt(), and ~FSIPreconditioner().

◆ Wall_mesh_pt

Mesh* oomph::FSIPreconditioner::Wall_mesh_pt
private

pointer to the solid mesh

Definition at line 248 of file fsi_preconditioners.h.

Referenced by FSIPreconditioner(), set_wall_mesh(), and setup().


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