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.