30 #ifndef OOMPH_PSEUDO_ELASTIC_FSI_PRECONDITIONER 31 #define OOMPH_PSEUDO_ELASTIC_FSI_PRECONDITIONER 34 #include "../generic/problem.h" 35 #include "../generic/block_preconditioner.h" 36 #include "../generic/preconditioner.h" 37 #include "../generic/SuperLU_preconditioner.h" 38 #include "../generic/matrix_vector_product.h" 39 #include "../navier_stokes/navier_stokes_preconditioners.h" 40 #include "../generic/general_purpose_block_preconditioners.h" void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply the preconditioner.
void broken_copy(const std::string &class_name)
Issue error message and terminate execution.
MatrixVectorProduct * Solid_fluid_matvec_pt
solid onto fluid matrix vector operatio
void set_fluid_and_pseudo_elastic_mesh_pt(Mesh *mesh_pt)
specify the mesh containing the combined fluid/pseudo solid elements
void clean_up_memory()
Broken assignment operator.
PseudoElasticFSIPreconditioner(const unsigned &dim, Problem *problem_pt)
constructor - just set defaults. Specify the spatial dimension of the fluid and a (non-const) problem...
virtual ~PseudoElasticFSIPreconditioner()
Preconditioner for FSI problems with pseudo-elastic fluid node updates. Note: NavierStokesSchurComple...
A subsidiary preconditioner for the pseudo-elastic FSI preconditioner. Also a stand-alone preconditio...
void disable_navier_stokes_schur_complement_preconditioner()
Call to use the SuperLUPreconditioner is used for the Navier Stokes subsidiary system.
const Mesh * mesh_pt(const unsigned &i) const
Access to i-th mesh (of the various meshes that contain block preconditionable elements of the same n...
Preconditioner * Navier_stokes_preconditioner_pt
pointer to the navier stokes precondtioner
NavierStokesSchurComplementPreconditioner * Navier_stokes_schur_complement_preconditioner_pt
Navier Stokes Schur complement preconditioner.
void set_solid_mesh_pt(Mesh *mesh_pt)
specify the mesh containing the solid elements
void enable_navier_stokes_schur_complement_preconditioner()
Call to use the Navier Stokes Schur complement preconditioner.
The least-squares commutator (LSC; formerly BFBT) Navier Stokes preconditioner. It uses blocks corres...
void setup()
Setup the precoonditioner.
Mesh * Lagrange_multiplier_mesh_pt
Mesh containing the lagrange multiplier elements.
unsigned Dim
the dimension of the fluid
MatrixVectorProduct * Fluid_pseudo_elastic_matvec_pt
fluid onto pseudosolid matrix vector operator
MatrixVectorProduct * Lagrange_solid_matvec_pt
NavierStokesSchurComplementPreconditioner *const navier_stokes_schur_complement_preconditioner_pt()
Access function to the Navier Stokes Schur complement preconditioner.
bool Solid_preconditioner_is_block_preconditioner
boolean flag to indicate whether the Solid preconditioner is a block preconditioner ...
void set_nmesh(const unsigned &n)
Specify the number of meshes required by this block preconditioner. Note: elements in different meshe...
void set_lagrange_multiplier_mesh_pt(Mesh *mesh_pt)
specify the mesh containing the lagrange multiplier elements
Mesh * Solid_mesh_pt
Mesh containing the solid elements.
MatrixVectorProduct * Solid_pseudo_elastic_matvec_pt
solid onto pseudo solid matrix vector operatio
An interface to allow SuperLU to be used as an (exact) Preconditioner.
Preconditioner * Solid_preconditioner_pt
pointer to the solid preconditioner
bool Use_navier_stokes_schur_complement_preconditioner
If true the Navier Stokes Schur complement preconditioner is used. Otherwise SuperLUPreconditioner is...
Preconditioner base class. Gives an interface to call all other preconditioners through and stores th...
bool Using_default_solid_preconditioner
boolean flag to indicate whether default Solid preconditioner is used
PseudoElasticPreconditioner * Pseudo_elastic_preconditioner_pt
pointer to the pseudo solid preconditioner
Mesh * Fluid_and_pseudo_elastic_mesh_pt
Mesh containing the combined fluid and pseudo solid element.
Matrix vector product helper class - primarily a wrapper to Trilinos's Epetra matrix vector product m...
void set_solid_preconditioner(Preconditioner *prec_pt)
speicify a non default solid preconditioner. This preconditioner will not delete it ...
A vector in the mathematical sense, initially developed for linear algebra type applications. If MPI then this vector can be distributed - its distribution is described by the LinearAlgebraDistribution object at Distribution_pt. Data is stored in a C-style pointer vector (double*)
PseudoElasticPreconditioner *const pseudo_elastic_preconditioner_pt()
Access function to the pseudo elastic subsidiary preconditioner.
PseudoElasticFSIPreconditioner(const PseudoElasticFSIPreconditioner &)
Broken copy constructor.