//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// More...
#include <fsi_preconditioners.h>
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... | |
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
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.
|
inline |
Constructor.
Definition at line 488 of file fsi_preconditioners.h.
References oomph::SimpleFSIPreconditioner< MATRIX >::Allow_multiple_element_type_in_navier_stokes_mesh, oomph::SimpleFSIPreconditioner< MATRIX >::Allow_multiple_element_type_in_wall_mesh, oomph::SimpleFSIPreconditioner< MATRIX >::Navier_stokes_mesh_pt, oomph::SimpleFSIPreconditioner< MATRIX >::Preconditioner_pt, oomph::SimpleFSIPreconditioner< MATRIX >::Retain_fluid_onto_solid_terms, oomph::SimpleFSIPreconditioner< MATRIX >::Retain_solid_onto_fluid_terms, and oomph::SimpleFSIPreconditioner< MATRIX >::Wall_mesh_pt.
|
inline |
Destructor: Clean up.
Definition at line 510 of file fsi_preconditioners.h.
References oomph::SimpleFSIPreconditioner< MATRIX >::Preconditioner_pt.
|
delete |
Broken copy constructor.
|
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.
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.
|
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.
|
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.
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.
|
inline |
Switch to block-diagonal preconditioner.
Definition at line 564 of file fsi_preconditioners.h.
References oomph::SimpleFSIPreconditioner< MATRIX >::Retain_fluid_onto_solid_terms, and oomph::SimpleFSIPreconditioner< MATRIX >::Retain_solid_onto_fluid_terms.
|
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.
|
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.
|
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().
|
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().
|
private |
Pointer to the navier stokes mesh.
Definition at line 605 of file fsi_preconditioners.h.
Referenced by oomph::SimpleFSIPreconditioner< MATRIX >::set_navier_stokes_mesh(), and oomph::SimpleFSIPreconditioner< MATRIX >::SimpleFSIPreconditioner().
|
private |
Preconditioner (inexact solver)
Definition at line 588 of file fsi_preconditioners.h.
Referenced by oomph::SimpleFSIPreconditioner< MATRIX >::SimpleFSIPreconditioner(), and oomph::SimpleFSIPreconditioner< MATRIX >::~SimpleFSIPreconditioner().
|
private |
Boolean flag used to indicate that the fluid onto solid interaction terms are to be retained.
Definition at line 596 of file fsi_preconditioners.h.
Referenced by oomph::SimpleFSIPreconditioner< MATRIX >::SimpleFSIPreconditioner(), oomph::SimpleFSIPreconditioner< MATRIX >::use_block_diagonal_version(), oomph::SimpleFSIPreconditioner< MATRIX >::use_block_triangular_version_with_fluid_on_solid(), and oomph::SimpleFSIPreconditioner< MATRIX >::use_block_triangular_version_with_solid_on_fluid().
|
private |
Boolean flag used to indicate that the solid onto fluid interaction terms are to be retained.
Definition at line 592 of file fsi_preconditioners.h.
Referenced by oomph::SimpleFSIPreconditioner< MATRIX >::SimpleFSIPreconditioner(), oomph::SimpleFSIPreconditioner< MATRIX >::use_block_diagonal_version(), oomph::SimpleFSIPreconditioner< MATRIX >::use_block_triangular_version_with_fluid_on_solid(), and oomph::SimpleFSIPreconditioner< MATRIX >::use_block_triangular_version_with_solid_on_fluid().
|
private |
pointer to the solid mesh
Definition at line 608 of file fsi_preconditioners.h.
Referenced by oomph::SimpleFSIPreconditioner< MATRIX >::set_wall_mesh(), and oomph::SimpleFSIPreconditioner< MATRIX >::SimpleFSIPreconditioner().