Matrix-based lumped preconditioner. More...
#include <general_purpose_preconditioners.h>
Public Member Functions | |
MatrixBasedLumpedPreconditioner () | |
Constructor. More... | |
~MatrixBasedLumpedPreconditioner () | |
Destructor. More... | |
MatrixBasedLumpedPreconditioner (const MatrixBasedDiagPreconditioner &)=delete | |
Broken copy constructor. More... | |
void | operator= (const MatrixBasedLumpedPreconditioner &)=delete |
Broken assignment operator. More... | |
void | preconditioner_solve (const DoubleVector &r, DoubleVector &z) |
Apply preconditioner to z, i.e. z=D^-1. More... | |
void | setup () |
Setup the preconditioner (store diagonal) from the fully assembled matrix. Problem pointer is ignored. More... | |
bool | positive_matrix () const |
Access function to the Positive_matrix which indicates whether lumped matrix was positive. More... | |
double * | inverse_lumped_vector_pt () |
Access function to the inverse of the lumped vector assembled in the preconditioner setup routine. More... | |
unsigned & | nrow () |
Access function to number of rows for this preconditioner. More... | |
void | clean_up_memory () |
clean up memory - just delete the inverse lumped vector More... | |
void | setup () |
Setup the lumped preconditioner. Specialisation for CCDoubleMatrix. More... | |
void | setup () |
Setup the lumped preconditioner. Specialisation for CRDoubleMatrix. More... | |
void | setup (DoubleMatrixBase *matrix_pt) |
For some reason we need to remind the compiler that there is also a function named setup in the base class. More... | |
void | setup (const Problem *problem_pt, DoubleMatrixBase *matrix_pt) |
For some reason we need to remind the compiler that there is also a function named setup in the base class. More... | |
virtual void | setup ()=0 |
For some reason we need to remind the compiler that there is also a function named setup in the base class. More... | |
Public Member Functions inherited from oomph::Preconditioner | |
Preconditioner () | |
Constructor. More... | |
Preconditioner (const Preconditioner &)=delete | |
Broken copy constructor. More... | |
void | operator= (const Preconditioner &)=delete |
Broken assignment operator. More... | |
virtual | ~Preconditioner () |
Destructor (empty) More... | |
virtual void | preconditioner_solve_transpose (const DoubleVector &r, DoubleVector &z) |
Apply the preconditioner. Pure virtual generic interface function. This method should apply the preconditioner operator to the vector r and return the vector z. (broken virtual) More... | |
void | setup (DoubleMatrixBase *matrix_pt) |
Setup the preconditioner: store the matrix pointer and the communicator pointer then call preconditioner specific setup() function. More... | |
void | setup (const Problem *problem_pt, DoubleMatrixBase *matrix_pt) |
Compatability layer for old preconditioners where problem pointers were needed. The problem pointer is only used to get a communicator pointer. More... | |
void | enable_silent_preconditioner_setup () |
Set up the block preconditioner quietly! More... | |
void | disable_silent_preconditioner_setup () |
Be verbose in the block preconditioner setup. More... | |
virtual DoubleMatrixBase * | matrix_pt () const |
Get function for matrix pointer. More... | |
virtual void | set_matrix_pt (DoubleMatrixBase *matrix_pt) |
Set the matrix pointer. More... | |
virtual const OomphCommunicator * | comm_pt () const |
Get function for comm pointer. More... | |
virtual void | set_comm_pt (const OomphCommunicator *const comm_pt) |
Set the communicator pointer. More... | |
double | setup_time () const |
Returns the time to setup the preconditioner. More... | |
virtual void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse) |
Virtual interface function for making a preconditioner a subsidiary of a block preconditioner. By default nothing is needed, but if this preconditioner is also a block preconditioner then things need to happen. There's an assumption here that the block preconditioner will be in CR form but since that assumption is hard coded all over BlockPreconditioner we're safe. More... | |
virtual void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse, const Vector< Vector< unsigned >> &doftype_coarsen_map_coarse) |
Virtual interface function for making a preconditioner a subsidiary of a block preconditioner. By default nothing is needed, but if this preconditioner is also a block preconditioner then things need to happen. Version for coarsening dof-types. More... | |
Public Member Functions inherited from oomph::DistributableLinearAlgebraObject | |
DistributableLinearAlgebraObject () | |
Default constructor - create a distribution. More... | |
DistributableLinearAlgebraObject (const DistributableLinearAlgebraObject &matrix)=delete | |
Broken copy constructor. More... | |
void | operator= (const DistributableLinearAlgebraObject &)=delete |
Broken assignment operator. More... | |
virtual | ~DistributableLinearAlgebraObject () |
Destructor. More... | |
LinearAlgebraDistribution * | distribution_pt () const |
access to the LinearAlgebraDistribution More... | |
unsigned | nrow () const |
access function to the number of global rows. More... | |
unsigned | nrow_local () const |
access function for the num of local rows on this processor. More... | |
unsigned | nrow_local (const unsigned &p) const |
access function for the num of local rows on this processor. More... | |
unsigned | first_row () const |
access function for the first row on this processor More... | |
unsigned | first_row (const unsigned &p) const |
access function for the first row on this processor More... | |
bool | distributed () const |
distribution is serial or distributed More... | |
bool | distribution_built () const |
if the communicator_pt is null then the distribution is not setup then false is returned, otherwise return true More... | |
void | build_distribution (const LinearAlgebraDistribution *const dist_pt) |
setup the distribution of this distributable linear algebra object More... | |
void | build_distribution (const LinearAlgebraDistribution &dist) |
setup the distribution of this distributable linear algebra object More... | |
Private Attributes | |
double * | Inv_lumped_diag_pt |
Vector of inverse diagonal entries. More... | |
bool | Positive_matrix |
unsigned | Nrow |
Additional Inherited Members | |
Protected Member Functions inherited from oomph::DistributableLinearAlgebraObject | |
void | clear_distribution () |
clear the distribution of this distributable linear algebra object More... | |
Protected Attributes inherited from oomph::Preconditioner | |
bool | Silent_preconditioner_setup |
Boolean to indicate whether or not the build should be done silently. More... | |
std::ostream * | Stream_pt |
Pointer to the output stream – defaults to std::cout. More... | |
Matrix-based lumped preconditioner.
Definition at line 80 of file general_purpose_preconditioners.h.
|
inline |
Constructor.
Definition at line 84 of file general_purpose_preconditioners.h.
References oomph::MatrixBasedLumpedPreconditioner< MATRIX >::Inv_lumped_diag_pt, and oomph::MatrixBasedLumpedPreconditioner< MATRIX >::Positive_matrix.
|
inline |
Destructor.
Definition at line 94 of file general_purpose_preconditioners.h.
References oomph::MatrixBasedLumpedPreconditioner< MATRIX >::clean_up_memory().
|
delete |
Broken copy constructor.
|
inlinevirtual |
clean up memory - just delete the inverse lumped vector
Reimplemented from oomph::Preconditioner.
Definition at line 159 of file general_purpose_preconditioners.h.
References oomph::MatrixBasedLumpedPreconditioner< MATRIX >::Inv_lumped_diag_pt.
Referenced by oomph::MatrixBasedLumpedPreconditioner< MATRIX >::~MatrixBasedLumpedPreconditioner().
|
inline |
Access function to the inverse of the lumped vector assembled in the preconditioner setup routine.
paranoid check that vector has been created
Definition at line 136 of file general_purpose_preconditioners.h.
References oomph::MatrixBasedLumpedPreconditioner< MATRIX >::Inv_lumped_diag_pt.
|
inline |
Access function to number of rows for this preconditioner.
Definition at line 153 of file general_purpose_preconditioners.h.
References oomph::MatrixBasedLumpedPreconditioner< MATRIX >::Nrow.
|
delete |
Broken assignment operator.
|
inline |
Access function to the Positive_matrix which indicates whether lumped matrix was positive.
paranoid check that preconditioner has been setup
Definition at line 119 of file general_purpose_preconditioners.h.
References oomph::MatrixBasedLumpedPreconditioner< MATRIX >::Inv_lumped_diag_pt, and oomph::MatrixBasedLumpedPreconditioner< MATRIX >::Positive_matrix.
|
virtual |
Apply preconditioner to z, i.e. z=D^-1.
Apply preconditioner: Multiply r by the inverse of the lumped matrix.
Implements oomph::Preconditioner.
Definition at line 280 of file general_purpose_preconditioners.cc.
References oomph::DoubleVector::build(), oomph::DoubleVector::built(), oomph::DistributableLinearAlgebraObject::distribution_pt(), and i.
|
virtual |
Setup the lumped preconditioner. Specialisation for CCDoubleMatrix.
Implements oomph::Preconditioner.
Definition at line 167 of file general_purpose_preconditioners.cc.
References i, oomph::SparseMatrix< T, MATRIX_TYPE >::nnz(), oomph::CCMatrix< T >::row_index(), and oomph::SparseMatrix< T, MATRIX_TYPE >::value().
|
virtual |
Setup the lumped preconditioner. Specialisation for CRDoubleMatrix.
Implements oomph::Preconditioner.
Definition at line 224 of file general_purpose_preconditioners.cc.
References oomph::DistributableLinearAlgebraObject::distribution_pt(), i, oomph::DistributableLinearAlgebraObject::nrow_local(), oomph::CRDoubleMatrix::row_start(), and oomph::CRDoubleMatrix::value().
|
virtual |
Setup the preconditioner (store diagonal) from the fully assembled matrix. Problem pointer is ignored.
Implements oomph::Preconditioner.
|
virtual |
For some reason we need to remind the compiler that there is also a function named setup in the base class.
Implements oomph::Preconditioner.
|
inlinevirtual |
For some reason we need to remind the compiler that there is also a function named setup in the base class.
Implements oomph::Preconditioner.
Definition at line 120 of file preconditioner.h.
|
inlinevirtual |
For some reason we need to remind the compiler that there is also a function named setup in the base class.
Implements oomph::Preconditioner.
Definition at line 94 of file preconditioner.h.
|
private |
Vector of inverse diagonal entries.
Definition at line 166 of file general_purpose_preconditioners.h.
Referenced by oomph::MatrixBasedLumpedPreconditioner< MATRIX >::clean_up_memory(), oomph::MatrixBasedLumpedPreconditioner< MATRIX >::inverse_lumped_vector_pt(), oomph::MatrixBasedLumpedPreconditioner< MATRIX >::MatrixBasedLumpedPreconditioner(), and oomph::MatrixBasedLumpedPreconditioner< MATRIX >::positive_matrix().
|
private |
Definition at line 172 of file general_purpose_preconditioners.h.
Referenced by oomph::MatrixBasedLumpedPreconditioner< MATRIX >::nrow().
|
private |
Definition at line 169 of file general_purpose_preconditioners.h.
Referenced by oomph::MatrixBasedLumpedPreconditioner< MATRIX >::MatrixBasedLumpedPreconditioner(), and oomph::MatrixBasedLumpedPreconditioner< MATRIX >::positive_matrix().