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>
 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 | |
| PseudoElasticPreconditioner * | Pseudo_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... | |
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.
      
  | 
  inline | 
constructor - just set defaults. Specify the spatial dimension of the fluid and a (non-const) problem pointer needed for the underlying NavierStokesSchurComplementPreconditioner.
Definition at line 67 of file pseudo_elastic_fsi_preconditioner.h.
References Fluid_and_pseudo_elastic_mesh_pt, Fluid_pseudo_elastic_matvec_pt, Lagrange_multiplier_mesh_pt, Lagrange_solid_matvec_pt, Navier_stokes_preconditioner_pt, Navier_stokes_schur_complement_preconditioner_pt, Pseudo_elastic_preconditioner_pt, Solid_fluid_matvec_pt, Solid_mesh_pt, Solid_preconditioner_pt, Solid_pseudo_elastic_matvec_pt, Use_navier_stokes_schur_complement_preconditioner, and Using_default_solid_preconditioner.
      
  | 
  inlinevirtual | 
Definition at line 102 of file pseudo_elastic_fsi_preconditioner.h.
References clean_up_memory(), Fluid_pseudo_elastic_matvec_pt, Lagrange_solid_matvec_pt, Navier_stokes_preconditioner_pt, Navier_stokes_schur_complement_preconditioner_pt, Pseudo_elastic_preconditioner_pt, Solid_fluid_matvec_pt, Solid_preconditioner_pt, Solid_pseudo_elastic_matvec_pt, and Using_default_solid_preconditioner.
      
  | 
  delete | 
Broken copy constructor.
| void oomph::PseudoElasticFSIPreconditioner::clean_up_memory | ( | ) | 
Broken assignment operator.
clean up memory method
Definition at line 34 of file pseudo_elastic_fsi_preconditioner.cc.
References oomph::PseudoElasticPreconditioner::clean_up_memory(), Fluid_pseudo_elastic_matvec_pt, Lagrange_solid_matvec_pt, Navier_stokes_preconditioner_pt, Navier_stokes_schur_complement_preconditioner_pt, Pseudo_elastic_preconditioner_pt, Solid_fluid_matvec_pt, Solid_preconditioner_pt, and Solid_pseudo_elastic_matvec_pt.
Referenced by setup(), and ~PseudoElasticFSIPreconditioner().
      
  | 
  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.
      
  | 
  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.
      
  | 
  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.
| void oomph::PseudoElasticFSIPreconditioner::preconditioner_solve | ( | const DoubleVector & | r, | 
| DoubleVector & | z | ||
| ) | 
Apply the preconditioner.
Definition at line 280 of file pseudo_elastic_fsi_preconditioner.cc.
References oomph::PseudoElasticPreconditioner::elastic_preconditioner_solve(), Fluid_pseudo_elastic_matvec_pt, oomph::PseudoElasticPreconditioner::lagrange_multiplier_preconditioner_solve(), Lagrange_solid_matvec_pt, Navier_stokes_preconditioner_pt, Navier_stokes_schur_complement_preconditioner_pt, Pseudo_elastic_preconditioner_pt, Solid_fluid_matvec_pt, Solid_preconditioner_is_block_preconditioner, Solid_preconditioner_pt, Solid_pseudo_elastic_matvec_pt, and Use_navier_stokes_schur_complement_preconditioner.
      
  | 
  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.
      
  | 
  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.
      
  | 
  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.
      
  | 
  inline | 
specify the mesh containing the solid elements
Definition at line 156 of file pseudo_elastic_fsi_preconditioner.h.
References Solid_mesh_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.
| void oomph::PseudoElasticFSIPreconditioner::setup | ( | ) | 
Setup the precoonditioner.
Definition at line 52 of file pseudo_elastic_fsi_preconditioner.cc.
References clean_up_memory(), Dim, Fluid_and_pseudo_elastic_mesh_pt, Fluid_pseudo_elastic_matvec_pt, Lagrange_multiplier_mesh_pt, Lagrange_solid_matvec_pt, Navier_stokes_preconditioner_pt, Navier_stokes_schur_complement_preconditioner_pt, Pseudo_elastic_preconditioner_pt, oomph::PseudoElasticPreconditioner::set_elastic_mesh(), oomph::PseudoElasticPreconditioner::set_lagrange_multiplier_mesh(), Solid_fluid_matvec_pt, Solid_mesh_pt, Solid_preconditioner_is_block_preconditioner, Solid_preconditioner_pt, Solid_pseudo_elastic_matvec_pt, and Use_navier_stokes_schur_complement_preconditioner.
      
  | 
  private | 
the dimension of the fluid
Definition at line 249 of file pseudo_elastic_fsi_preconditioner.h.
Referenced by setup().
      
  | 
  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().
      
  | 
  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().
      
  | 
  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().
      
  | 
  private | 
Definition at line 237 of file pseudo_elastic_fsi_preconditioner.h.
Referenced by clean_up_memory(), preconditioner_solve(), PseudoElasticFSIPreconditioner(), setup(), and ~PseudoElasticFSIPreconditioner().
      
  | 
  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().
      
  | 
  private | 
Navier Stokes Schur complement preconditioner.
Definition at line 214 of file pseudo_elastic_fsi_preconditioner.h.
Referenced by clean_up_memory(), navier_stokes_schur_complement_preconditioner_pt(), preconditioner_solve(), PseudoElasticFSIPreconditioner(), setup(), and ~PseudoElasticFSIPreconditioner().
      
  | 
  private | 
pointer to the pseudo solid preconditioner
Definition at line 207 of file pseudo_elastic_fsi_preconditioner.h.
Referenced by clean_up_memory(), preconditioner_solve(), pseudo_elastic_preconditioner_pt(), PseudoElasticFSIPreconditioner(), setup(), and ~PseudoElasticFSIPreconditioner().
      
  | 
  private | 
solid onto fluid matrix vector operatio
Definition at line 231 of file pseudo_elastic_fsi_preconditioner.h.
Referenced by clean_up_memory(), preconditioner_solve(), PseudoElasticFSIPreconditioner(), setup(), and ~PseudoElasticFSIPreconditioner().
      
  | 
  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().
      
  | 
  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().
      
  | 
  private | 
pointer to the solid preconditioner
Definition at line 217 of file pseudo_elastic_fsi_preconditioner.h.
Referenced by clean_up_memory(), preconditioner_solve(), PseudoElasticFSIPreconditioner(), set_solid_preconditioner(), setup(), and ~PseudoElasticFSIPreconditioner().
      
  | 
  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().
      
  | 
  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().
      
  | 
  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().