26#ifndef OOMPH_SOLID_PRECONDITIONERS_HEADER
27#define OOMPH_SOLID_PRECONDITIONERS_HEADER
32#include <oomph-lib-config.h>
379 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...
The exact solid preconditioner. This extracts 2x2 blocks (corresponding to the displacement/position ...
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 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.
void set_p_exact_preconditioner()
Function to (re-)set pressure matrix preconditioner (inexact solver) to exact preconditioner.
Preconditioner * P_preconditioner_pt
Pointer to the 'preconditioner' for the pressure matrix.
void set_f_exact_preconditioner()
Function to (re-)set momentum matrix preconditioner (inexact solver) to exact preconditioner.
bool P_matrix_using_scaling
Control flag is true if mass matrix diagonal scaling is used in the Schur complement approximation.
TAdvectionDiffusionReactionElement<NREAGENT,DIM,NNODE_1D> elements are isoparametric triangular DIM-d...
Preconditioner * create_exact_preconditioner()
Factory function to create suitable exact preconditioner.
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).