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" 65 public BlockPreconditioner<CRDoubleMatrix>
93 =
new NavierStokesSchurComplementPreconditioner(problem_pt);
137 BrokenCopy::broken_copy(
"PseudoElasticFSIPreconditioner");
198 NavierStokesSchurComplementPreconditioner*
const 224 NavierStokesSchurComplementPreconditioner*
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply the preconditioner.
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.
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.
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_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
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...
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.
void set_solid_preconditioner(Preconditioner *prec_pt)
speicify a non default solid preconditioner. This preconditioner will not delete it ...
PseudoElasticPreconditioner *const pseudo_elastic_preconditioner_pt()
Access function to the pseudo elastic subsidiary preconditioner.
PseudoElasticFSIPreconditioner(const PseudoElasticFSIPreconditioner &)
Broken copy constructor.