27 #ifndef OOMPH_GENERAL_PRECONDITION_HEADER
28 #define OOMPH_GENERAL_PRECONDITION_HEADER
33 #include <oomph-lib-config.h>
79 template<
typename MATRIX>
125 throw OomphLibError(
"The preconditioner has not been setup.",
142 throw OomphLibError(
"The inverse lumped vector has not been created. "
143 "Created in setup(...)",
258 template<
typename MATRIX>
360 template<
class SOLVER,
class PRECONDITIONER>
379 "The template argument SOLVER must be of type IterativeLinearSolver",
386 "The template argument PRECONDITIONER must be of type Preconditioner",
393 Solver_pt->disable_setup_preconditioner_before_solve();
A class for compressed column matrices that store doubles.
Definition: matrices.h:2791
Definition: matrices.h:888
Definition: general_purpose_preconditioners.h:185
~CompressedMatrixCoefficient()
Destructor (does nothing)
Definition: general_purpose_preconditioners.h:199
unsigned & index()
access function for the coefficient's (row or column) index
Definition: general_purpose_preconditioners.h:222
bool operator<(const CompressedMatrixCoefficient &a) const
Less Than Operator (for the STL sort function)
Definition: general_purpose_preconditioners.h:216
CompressedMatrixCoefficient()
Constructor (no arguments)
Definition: general_purpose_preconditioners.h:188
CompressedMatrixCoefficient(const unsigned &index, const double &value)
Constructor (takes the index and value as arguments)
Definition: general_purpose_preconditioners.h:191
double value() const
access function for the coefficient's value (const version)
Definition: general_purpose_preconditioners.h:241
double Value
the value of the compressed-matrix coefficient
Definition: general_purpose_preconditioners.h:251
CompressedMatrixCoefficient(const CompressedMatrixCoefficient &a)
Copy Constructor. Not Broken. Required for STL sort function.
Definition: general_purpose_preconditioners.h:202
void operator=(const CompressedMatrixCoefficient &a)
Assignment Operator. Not Broken. Required for STL sort function.
Definition: general_purpose_preconditioners.h:209
unsigned Index
the row or column index of the compressed-matrix coefficient
Definition: general_purpose_preconditioners.h:248
unsigned index() const
Definition: general_purpose_preconditioners.h:235
double & value()
access function for the coefficient value
Definition: general_purpose_preconditioners.h:228
Definition: linear_algebra_distribution.h:435
LinearAlgebraDistribution * distribution_pt() const
access to the LinearAlgebraDistribution
Definition: linear_algebra_distribution.h:457
unsigned nrow() const
access function to the number of global rows.
Definition: linear_algebra_distribution.h:463
void build_distribution(const LinearAlgebraDistribution *const dist_pt)
Definition: linear_algebra_distribution.h:507
Definition: double_vector.h:58
Vector< unsigned > L_column_start
Column start for lower triangular matrix.
Definition: general_purpose_preconditioners.h:300
Vector< CompressedMatrixCoefficient > U_row_entry
Definition: general_purpose_preconditioners.h:297
void operator=(const ILUZeroPreconditioner &)=delete
Broken assignment operator.
Vector< CompressedMatrixCoefficient > L_row_entry
Definition: general_purpose_preconditioners.h:304
~ILUZeroPreconditioner()
Destructor (empty)
Definition: general_purpose_preconditioners.h:275
Vector< unsigned > U_column_start
Column start for upper triangular matrix.
Definition: general_purpose_preconditioners.h:293
ILUZeroPreconditioner(const ILUZeroPreconditioner &)=delete
Broken copy constructor.
ILUZeroPreconditioner()
Constructor (empty)
Definition: general_purpose_preconditioners.h:272
~ILUZeroPreconditioner()
Destructor (empty)
Definition: general_purpose_preconditioners.h:326
ILUZeroPreconditioner(const ILUZeroPreconditioner &)=delete
Broken copy constructor.
ILUZeroPreconditioner()
Constructor (empty)
Definition: general_purpose_preconditioners.h:316
Vector< CompressedMatrixCoefficient > U_row_entry
Definition: general_purpose_preconditioners.h:342
Vector< unsigned > U_row_start
Row start for upper triangular matrix.
Definition: general_purpose_preconditioners.h:338
Vector< unsigned > L_row_start
Row start for lower triangular matrix.
Definition: general_purpose_preconditioners.h:345
void operator=(const ILUZeroPreconditioner &)=delete
Broken assignment operator.
Vector< CompressedMatrixCoefficient > L_row_entry
Definition: general_purpose_preconditioners.h:349
ILU(0) Preconditioner.
Definition: general_purpose_preconditioners.h:260
Definition: general_purpose_preconditioners.h:362
void setup()
Definition: general_purpose_preconditioners.h:415
void clean_up_memory()
Clean up memory (empty). Generic interface function.
Definition: general_purpose_preconditioners.h:407
InnerIterationPreconditioner()
Constructor.
Definition: general_purpose_preconditioners.h:365
double & tolerance()
Access to convergence tolerance of the inner iteration solver.
Definition: general_purpose_preconditioners.h:453
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Definition: general_purpose_preconditioners.h:447
~InnerIterationPreconditioner()
Definition: general_purpose_preconditioners.h:400
unsigned & max_iter()
Access to max. number of iterations of the inner iteration solver.
Definition: general_purpose_preconditioners.h:459
SOLVER * solver_pt()
Definition: general_purpose_preconditioners.h:465
SOLVER * Solver_pt
pointer to the underlying solver
Definition: general_purpose_preconditioners.h:478
PRECONDITIONER * preconditioner_pt()
Definition: general_purpose_preconditioners.h:471
PRECONDITIONER * Preconditioner_pt
pointer to the underlying preconditioner
Definition: general_purpose_preconditioners.h:481
Definition: iterative_linear_solver.h:54
Definition: linear_algebra_distribution.h:64
Matrix-based diagonal preconditioner.
Definition: general_purpose_preconditioners.h:49
void operator=(const MatrixBasedDiagPreconditioner &)=delete
Broken assignment operator.
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply preconditioner to z, i.e. z=D^-1.
Definition: general_purpose_preconditioners.cc:117
Vector< double > Inv_diag
Vector of inverse diagonal entries.
Definition: general_purpose_preconditioners.h:73
MatrixBasedDiagPreconditioner(const MatrixBasedDiagPreconditioner &)=delete
Broken copy constructor.
MatrixBasedDiagPreconditioner()
Constructor (empty)
Definition: general_purpose_preconditioners.h:52
void setup()
Definition: general_purpose_preconditioners.cc:43
~MatrixBasedDiagPreconditioner()
Destructor (empty)
Definition: general_purpose_preconditioners.h:55
Matrix-based lumped preconditioner.
Definition: general_purpose_preconditioners.h:81
void clean_up_memory()
clean up memory - just delete the inverse lumped vector
Definition: general_purpose_preconditioners.h:159
~MatrixBasedLumpedPreconditioner()
Destructor.
Definition: general_purpose_preconditioners.h:94
MatrixBasedLumpedPreconditioner(const MatrixBasedDiagPreconditioner &)=delete
Broken copy constructor.
bool positive_matrix() const
Definition: general_purpose_preconditioners.h:119
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Apply preconditioner to z, i.e. z=D^-1.
Definition: general_purpose_preconditioners.cc:280
double * Inv_lumped_diag_pt
Vector of inverse diagonal entries.
Definition: general_purpose_preconditioners.h:166
unsigned Nrow
Definition: general_purpose_preconditioners.h:172
void operator=(const MatrixBasedLumpedPreconditioner &)=delete
Broken assignment operator.
double * inverse_lumped_vector_pt()
Definition: general_purpose_preconditioners.h:136
MatrixBasedLumpedPreconditioner()
Constructor.
Definition: general_purpose_preconditioners.h:84
unsigned & nrow()
Access function to number of rows for this preconditioner.
Definition: general_purpose_preconditioners.h:153
bool Positive_matrix
Definition: general_purpose_preconditioners.h:169
Definition: oomph_definitions.h:222
Definition: preconditioner.h:54
virtual DoubleMatrixBase * matrix_pt() const
Get function for matrix pointer.
Definition: preconditioner.h:150
virtual void preconditioner_solve(const DoubleVector &r, DoubleVector &z)=0
virtual const OomphCommunicator * comm_pt() const
Get function for comm pointer.
Definition: preconditioner.h:171
Scalar * y
Definition: level1_cplx_impl.h:128
const Scalar * a
Definition: level2_cplx_impl.h:32
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
list x
Definition: plotDoE.py:28
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86