26 #ifndef OOMPH_SOLID_PRECONDITIONERS_HEADER
27 #define OOMPH_SOLID_PRECONDITIONERS_HEADER
32 #include <oomph-lib-config.h>
37 #include "../generic/matrices.h"
38 #include "../generic/assembly_handler.h"
39 #include "../generic/problem.h"
40 #include "../generic/block_preconditioner.h"
41 #include "../generic/preconditioner.h"
42 #include "../generic/SuperLU_preconditioner.h"
43 #include "../generic/matrix_vector_product.h"
377 template<
typename MATRIX>
Block Preconditioner base class. The block structure of the overall problem is determined from the Me...
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...
void set_nmesh(const unsigned &n)
Specify the number of meshes required by this block preconditioner. Note: elements in different meshe...
A class for compressed row matrices. This is a distributable object.
A vector in the mathematical sense, initially developed for linear algebra type applications....
Matrix vector product helper class - primarily a wrapper to Trilinos's Epetra matrix vector product m...
Preconditioner base class. Gives an interface to call all other preconditioners through and stores th...
//////////////////////////////////////////////////////////////////////////// ////////////////////////...
PressureBasedSolidExactPreconditioner()
Constructor - do nothing.
~PressureBasedSolidExactPreconditioner()
Destructor - do nothing.
MATRIX P_matrix
Preconditioner matrix.
PressureBasedSolidExactPreconditioner(const PressureBasedSolidExactPreconditioner &)=delete
Broken copy constructor.
void setup()
Broken assignment operator.
void preconditioner_solve(const Vector< double > &r, Vector< double > &z)
Apply preconditioner to r.
The least-squares commutator (LSC; formerly BFBT) preconditioner. It uses blocks corresponding to the...
MatrixVectorProduct * QBt_mat_vec_pt
MatrixVectorProduct operator for QBt if BFBt is not to be formed.
void enable_doc_time()
Enable documentation of time.
bool Form_BFBt_product
indicates whether BFBt should be formed or the component matrices should be retained....
CRDoubleMatrix * assemble_mass_matrix_diagonal()
Helper function to assemble the diagonal of the mass matrix from the elemental contributions defined ...
~PressureBasedSolidLSCPreconditioner()
Destructor.
void enable_form_BFBt_product()
If this function is called then: in setup(...) : BFBt is computed. in preconditioner_solve(....
PressureBasedSolidLSCPreconditioner()
Constructor - sets defaults for control flags.
bool Preconditioner_has_been_setup
Control flag is true if the preconditioner has been setup (used so we can wipe the data when the prec...
Preconditioner * F_preconditioner_pt
Pointer to the 'preconditioner' for the F matrix.
MatrixVectorProduct * E_mat_vec_pt
MatrixVectorProduct operator for E (BFBt) if BFBt is to be formed.
void disable_doc_time()
Disable documentation of time.
bool Doc_time
Set Doc_time to true for outputting results of timings.
PressureBasedSolidLSCPreconditioner(const PressureBasedSolidLSCPreconditioner &)=delete
Broken copy constructor.
void set_p_preconditioner(Preconditioner *new_p_preconditioner_pt)
Function to set a new pressure matrix preconditioner (inexact solver)
Mesh * Solid_mesh_pt
the pointer to the mesh of block preconditionable solid elements.
void disable_p_matrix_scaling()
Enable mass matrix diagonal scaling in the Schur complement approximation.
bool F_preconditioner_is_block_preconditioner
Boolean indicating whether the momentum system preconditioner is a block preconditioner.
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply preconditioner to Vector r.
void setup()
Broken assignment operator.
bool is_p_matrix_using_scaling() const
Return whether the mass matrix is using diagonal scaling or not.
void set_f_preconditioner(Preconditioner *new_f_preconditioner_pt)
Function to set a new momentum matrix preconditioner (inexact solver)
MatrixVectorProduct * Bt_mat_vec_pt
MatrixVectorProduct operator for Bt;.
bool Using_default_p_preconditioner
flag indicating whether the default P preconditioner is used
MatrixVectorProduct * F_mat_vec_pt
MatrixVectorProduct operator for F if BFBt is not to be formed.
void set_solid_mesh(Mesh *mesh_pt)
specify the mesh containing the mesh containing the block-preconditionable solid elements....
void clean_up_memory()
Helper function to delete preconditioner data.
bool Using_default_f_preconditioner
flag indicating whether the default F preconditioner is used
void set_p_superlu_preconditioner()
Function to (re-)set pressure matrix preconditioner (inexact solver) to SuperLU.
void disable_form_BFBt_product()
if this function is called then: in setup(...) : the matrices B, F are assembled and stored (the defa...
void enable_p_matrix_scaling()
Enable mass matrix diagonal scaling in the Schur complement approximation.
Preconditioner * P_preconditioner_pt
Pointer to the 'preconditioner' for the pressure matrix.
bool P_matrix_using_scaling
Control flag is true if mass matrix diagonal scaling is used in the Schur complement approximation.
void set_f_superlu_preconditioner()
Function to (re-)set momentum matrix preconditioner (inexact solver) to SuperLU.
An interface to allow SuperLU to be used as an (exact) Preconditioner.
//////////////////////////////////////////////////////////////////// ////////////////////////////////...