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

Preconditioner for FSI problems with pseudo-elastic fluid node updates. Note: NavierStokesSchurComplementPreconditioner is applied to the Navier Stokes subsidiary system. Default solid preconditioner is SuperLUPreconditioner. Enumeration of Elastic DOF types in the Pseudo-Elastic Elements The method get_dof_types_for_unknowns() must be implemented such that DOFs subject be Lagrange multiplier and DOFs NOT subject to Lagrange multiplier have different labels. For example in a 3D problem there are 6 DOF types and the following labelling must be implemented: 0 - x displacement (without lagr mult traction) 1 - y displacement (without lagr mult traction) 2 - z displacement (without lagr mult traction) 3 - x displacement (with lagr mult traction) 4 - y displacement (with lagr mult traction) 5 - z displacement (with lagr mult traction) More...

#include <pseudo_elastic_fsi_preconditioner.h>

Inheritance diagram for oomph::PseudoElasticFSIPreconditioner:

Public Member Functions

 PseudoElasticFSIPreconditioner (const unsigned &dim, Problem *problem_pt)
 constructor - just set defaults. Specify the spatial dimension of the fluid and a (non-const) problem pointer needed for the underlying NavierStokesSchurComplementPreconditioner. More...
 
virtual ~PseudoElasticFSIPreconditioner ()
 
 PseudoElasticFSIPreconditioner (const PseudoElasticFSIPreconditioner &)=delete
 Broken copy constructor. More...
 
void clean_up_memory ()
 Broken assignment operator. More...
 
void setup ()
 Setup the precoonditioner. More...
 
void preconditioner_solve (const DoubleVector &r, DoubleVector &z)
 Apply the preconditioner. More...
 
void set_fluid_and_pseudo_elastic_mesh_pt (Mesh *mesh_pt)
 specify the mesh containing the combined fluid/pseudo solid elements More...
 
void set_solid_mesh_pt (Mesh *mesh_pt)
 specify the mesh containing the solid elements More...
 
void set_lagrange_multiplier_mesh_pt (Mesh *mesh_pt)
 specify the mesh containing the lagrange multiplier elements More...
 
void set_solid_preconditioner (Preconditioner *prec_pt)
 speicify a non default solid preconditioner. This preconditioner will not delete it More...
 
PseudoElasticPreconditioner *const pseudo_elastic_preconditioner_pt ()
 Access function to the pseudo elastic subsidiary preconditioner. More...
 
NavierStokesSchurComplementPreconditioner *const navier_stokes_schur_complement_preconditioner_pt ()
 Access function to the Navier Stokes Schur complement preconditioner. More...
 
void enable_navier_stokes_schur_complement_preconditioner ()
 Call to use the Navier Stokes Schur complement preconditioner. More...
 
void disable_navier_stokes_schur_complement_preconditioner ()
 Call to use the SuperLUPreconditioner is used for the Navier Stokes subsidiary system. More...
 

Private Attributes

PseudoElasticPreconditionerPseudo_elastic_preconditioner_pt
 pointer to the pseudo solid preconditioner More...
 
Preconditioner * Navier_stokes_preconditioner_pt
 pointer to the navier stokes precondtioner More...
 
NavierStokesSchurComplementPreconditioner * Navier_stokes_schur_complement_preconditioner_pt
 Navier Stokes Schur complement preconditioner. More...
 
Preconditioner * Solid_preconditioner_pt
 pointer to the solid preconditioner More...
 
bool Using_default_solid_preconditioner
 boolean flag to indicate whether default Solid preconditioner is used More...
 
bool Solid_preconditioner_is_block_preconditioner
 boolean flag to indicate whether the Solid preconditioner is a block preconditioner More...
 
MatrixVectorProduct * Fluid_pseudo_elastic_matvec_pt
 fluid onto pseudosolid matrix vector operator More...
 
MatrixVectorProduct * Solid_fluid_matvec_pt
 solid onto fluid matrix vector operatio More...
 
MatrixVectorProduct * Solid_pseudo_elastic_matvec_pt
 solid onto pseudo solid matrix vector operatio More...
 
MatrixVectorProduct * Lagrange_solid_matvec_pt
 
Mesh * Fluid_and_pseudo_elastic_mesh_pt
 Mesh containing the combined fluid and pseudo solid element. More...
 
Mesh * Solid_mesh_pt
 Mesh containing the solid elements. More...
 
Mesh * Lagrange_multiplier_mesh_pt
 Mesh containing the lagrange multiplier elements. More...
 
unsigned Dim
 the dimension of the fluid More...
 
bool Use_navier_stokes_schur_complement_preconditioner
 If true the Navier Stokes Schur complement preconditioner is used. Otherwise SuperLUPreconditioner is used for the Navier Stokes subsidiary system. More...
 

Detailed Description

Preconditioner for FSI problems with pseudo-elastic fluid node updates. Note: NavierStokesSchurComplementPreconditioner is applied to the Navier Stokes subsidiary system. Default solid preconditioner is SuperLUPreconditioner. Enumeration of Elastic DOF types in the Pseudo-Elastic Elements The method get_dof_types_for_unknowns() must be implemented such that DOFs subject be Lagrange multiplier and DOFs NOT subject to Lagrange multiplier have different labels. For example in a 3D problem there are 6 DOF types and the following labelling must be implemented: 0 - x displacement (without lagr mult traction) 1 - y displacement (without lagr mult traction) 2 - z displacement (without lagr mult traction) 3 - x displacement (with lagr mult traction) 4 - y displacement (with lagr mult traction) 5 - z displacement (with lagr mult traction)

Definition at line 60 of file pseudo_elastic_fsi_preconditioner.h.

Constructor & Destructor Documentation

◆ PseudoElasticFSIPreconditioner() [1/2]

oomph::PseudoElasticFSIPreconditioner::PseudoElasticFSIPreconditioner ( const unsigned &  dim,
Problem *  problem_pt 
)
inline

◆ ~PseudoElasticFSIPreconditioner()

virtual oomph::PseudoElasticFSIPreconditioner::~PseudoElasticFSIPreconditioner ( )
inlinevirtual

◆ PseudoElasticFSIPreconditioner() [2/2]

oomph::PseudoElasticFSIPreconditioner::PseudoElasticFSIPreconditioner ( const PseudoElasticFSIPreconditioner )
delete

Broken copy constructor.

Member Function Documentation

◆ clean_up_memory()

void oomph::PseudoElasticFSIPreconditioner::clean_up_memory ( )

◆ disable_navier_stokes_schur_complement_preconditioner()

void oomph::PseudoElasticFSIPreconditioner::disable_navier_stokes_schur_complement_preconditioner ( )
inline

Call to use the SuperLUPreconditioner is used for the Navier Stokes subsidiary system.

Definition at line 200 of file pseudo_elastic_fsi_preconditioner.h.

References Use_navier_stokes_schur_complement_preconditioner.

◆ enable_navier_stokes_schur_complement_preconditioner()

void oomph::PseudoElasticFSIPreconditioner::enable_navier_stokes_schur_complement_preconditioner ( )
inline

Call to use the Navier Stokes Schur complement preconditioner.

Definition at line 193 of file pseudo_elastic_fsi_preconditioner.h.

References Use_navier_stokes_schur_complement_preconditioner.

◆ navier_stokes_schur_complement_preconditioner_pt()

NavierStokesSchurComplementPreconditioner* const oomph::PseudoElasticFSIPreconditioner::navier_stokes_schur_complement_preconditioner_pt ( )
inline

Access function to the Navier Stokes Schur complement preconditioner.

Definition at line 186 of file pseudo_elastic_fsi_preconditioner.h.

References Navier_stokes_schur_complement_preconditioner_pt.

◆ preconditioner_solve()

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

◆ pseudo_elastic_preconditioner_pt()

PseudoElasticPreconditioner* const oomph::PseudoElasticFSIPreconditioner::pseudo_elastic_preconditioner_pt ( )
inline

Access function to the pseudo elastic subsidiary preconditioner.

Definition at line 180 of file pseudo_elastic_fsi_preconditioner.h.

References Pseudo_elastic_preconditioner_pt.

◆ set_fluid_and_pseudo_elastic_mesh_pt()

void oomph::PseudoElasticFSIPreconditioner::set_fluid_and_pseudo_elastic_mesh_pt ( Mesh *  mesh_pt)
inline

specify the mesh containing the combined fluid/pseudo solid elements

Definition at line 150 of file pseudo_elastic_fsi_preconditioner.h.

References Fluid_and_pseudo_elastic_mesh_pt.

◆ set_lagrange_multiplier_mesh_pt()

void oomph::PseudoElasticFSIPreconditioner::set_lagrange_multiplier_mesh_pt ( Mesh *  mesh_pt)
inline

specify the mesh containing the lagrange multiplier elements

Definition at line 162 of file pseudo_elastic_fsi_preconditioner.h.

References Lagrange_multiplier_mesh_pt.

◆ set_solid_mesh_pt()

void oomph::PseudoElasticFSIPreconditioner::set_solid_mesh_pt ( Mesh *  mesh_pt)
inline

specify the mesh containing the solid elements

Definition at line 156 of file pseudo_elastic_fsi_preconditioner.h.

References Solid_mesh_pt.

◆ set_solid_preconditioner()

void oomph::PseudoElasticFSIPreconditioner::set_solid_preconditioner ( Preconditioner *  prec_pt)
inline

speicify a non default solid preconditioner. This preconditioner will not delete it

Definition at line 169 of file pseudo_elastic_fsi_preconditioner.h.

References Solid_preconditioner_pt, and Using_default_solid_preconditioner.

◆ setup()

void oomph::PseudoElasticFSIPreconditioner::setup ( )

Member Data Documentation

◆ Dim

unsigned oomph::PseudoElasticFSIPreconditioner::Dim
private

the dimension of the fluid

Definition at line 249 of file pseudo_elastic_fsi_preconditioner.h.

Referenced by setup().

◆ Fluid_and_pseudo_elastic_mesh_pt

Mesh* oomph::PseudoElasticFSIPreconditioner::Fluid_and_pseudo_elastic_mesh_pt
private

Mesh containing the combined fluid and pseudo solid element.

Definition at line 240 of file pseudo_elastic_fsi_preconditioner.h.

Referenced by PseudoElasticFSIPreconditioner(), set_fluid_and_pseudo_elastic_mesh_pt(), and setup().

◆ Fluid_pseudo_elastic_matvec_pt

MatrixVectorProduct* oomph::PseudoElasticFSIPreconditioner::Fluid_pseudo_elastic_matvec_pt
private

fluid onto pseudosolid matrix vector operator

Definition at line 228 of file pseudo_elastic_fsi_preconditioner.h.

Referenced by clean_up_memory(), preconditioner_solve(), PseudoElasticFSIPreconditioner(), setup(), and ~PseudoElasticFSIPreconditioner().

◆ Lagrange_multiplier_mesh_pt

Mesh* oomph::PseudoElasticFSIPreconditioner::Lagrange_multiplier_mesh_pt
private

Mesh containing the lagrange multiplier elements.

Definition at line 246 of file pseudo_elastic_fsi_preconditioner.h.

Referenced by PseudoElasticFSIPreconditioner(), set_lagrange_multiplier_mesh_pt(), and setup().

◆ Lagrange_solid_matvec_pt

MatrixVectorProduct* oomph::PseudoElasticFSIPreconditioner::Lagrange_solid_matvec_pt
private

◆ Navier_stokes_preconditioner_pt

Preconditioner* oomph::PseudoElasticFSIPreconditioner::Navier_stokes_preconditioner_pt
private

pointer to the navier stokes precondtioner

Definition at line 210 of file pseudo_elastic_fsi_preconditioner.h.

Referenced by clean_up_memory(), preconditioner_solve(), PseudoElasticFSIPreconditioner(), setup(), and ~PseudoElasticFSIPreconditioner().

◆ Navier_stokes_schur_complement_preconditioner_pt

NavierStokesSchurComplementPreconditioner* oomph::PseudoElasticFSIPreconditioner::Navier_stokes_schur_complement_preconditioner_pt
private

◆ Pseudo_elastic_preconditioner_pt

PseudoElasticPreconditioner* oomph::PseudoElasticFSIPreconditioner::Pseudo_elastic_preconditioner_pt
private

◆ Solid_fluid_matvec_pt

MatrixVectorProduct* oomph::PseudoElasticFSIPreconditioner::Solid_fluid_matvec_pt
private

◆ Solid_mesh_pt

Mesh* oomph::PseudoElasticFSIPreconditioner::Solid_mesh_pt
private

Mesh containing the solid elements.

Definition at line 243 of file pseudo_elastic_fsi_preconditioner.h.

Referenced by PseudoElasticFSIPreconditioner(), set_solid_mesh_pt(), and setup().

◆ Solid_preconditioner_is_block_preconditioner

bool oomph::PseudoElasticFSIPreconditioner::Solid_preconditioner_is_block_preconditioner
private

boolean flag to indicate whether the Solid preconditioner is a block preconditioner

Definition at line 225 of file pseudo_elastic_fsi_preconditioner.h.

Referenced by preconditioner_solve(), and setup().

◆ Solid_preconditioner_pt

Preconditioner* oomph::PseudoElasticFSIPreconditioner::Solid_preconditioner_pt
private

◆ Solid_pseudo_elastic_matvec_pt

MatrixVectorProduct* oomph::PseudoElasticFSIPreconditioner::Solid_pseudo_elastic_matvec_pt
private

solid onto pseudo solid matrix vector operatio

Definition at line 234 of file pseudo_elastic_fsi_preconditioner.h.

Referenced by clean_up_memory(), preconditioner_solve(), PseudoElasticFSIPreconditioner(), setup(), and ~PseudoElasticFSIPreconditioner().

◆ Use_navier_stokes_schur_complement_preconditioner

bool oomph::PseudoElasticFSIPreconditioner::Use_navier_stokes_schur_complement_preconditioner
private

If true the Navier Stokes Schur complement preconditioner is used. Otherwise SuperLUPreconditioner is used for the Navier Stokes subsidiary system.

Definition at line 254 of file pseudo_elastic_fsi_preconditioner.h.

Referenced by disable_navier_stokes_schur_complement_preconditioner(), enable_navier_stokes_schur_complement_preconditioner(), preconditioner_solve(), PseudoElasticFSIPreconditioner(), and setup().

◆ Using_default_solid_preconditioner

bool oomph::PseudoElasticFSIPreconditioner::Using_default_solid_preconditioner
private

boolean flag to indicate whether default Solid preconditioner is used

Definition at line 221 of file pseudo_elastic_fsi_preconditioner.h.

Referenced by PseudoElasticFSIPreconditioner(), set_solid_preconditioner(), and ~PseudoElasticFSIPreconditioner().


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