![]() |
|
An interface to allow SuperLU to be used as an (exact) Preconditioner. More...
#include <SuperLU_preconditioner.h>
Inheritance diagram for oomph::SuperLUPreconditioner:Public Member Functions | |
| SuperLUPreconditioner () | |
| Constructor. More... | |
| ~SuperLUPreconditioner () | |
| Destructor. More... | |
| SuperLUPreconditioner (const SuperLUPreconditioner &)=delete | |
| Broken copy constructor. More... | |
| void | operator= (const SuperLUPreconditioner &)=delete |
| Broken assignment operator. More... | |
| void | setup () |
| void | preconditioner_solve (const DoubleVector &r, DoubleVector &z) |
| void | preconditioner_solve_transpose (const DoubleVector &r, DoubleVector &z) |
| virtual void | clean_up_memory () |
| double | get_memory_usage_for_lu_factors () |
| Get the amount of memory used to store the LU factors inside SuperLU. More... | |
| double | get_total_memory_needed_for_superlu () |
| Vector< double > | get_memory_usage_for_superlu () |
| void | enable_doc_stats () |
| Enable documentation of solver statistics. More... | |
| void | disable_doc_stats () |
| Enable documentation of solver statistics. 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... | |
| void | setup (DoubleMatrixBase *matrix_pt) |
| void | setup (const Problem *problem_pt, DoubleMatrixBase *matrix_pt) |
| 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 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) |
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 |
| void | build_distribution (const LinearAlgebraDistribution *const dist_pt) |
| void | build_distribution (const LinearAlgebraDistribution &dist) |
Private Attributes | |
| SuperLUSolver | Solver |
| the SuperLU solver emplyed by this preconditioner More... | |
Additional Inherited Members | |
Protected Member Functions inherited from oomph::DistributableLinearAlgebraObject | |
| void | clear_distribution () |
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... | |
An interface to allow SuperLU to be used as an (exact) Preconditioner.
|
inline |
Constructor.
References oomph::SuperLUSolver::disable_doc_stats(), oomph::LinearSolver::disable_doc_time(), and Solver.
|
delete |
Broken copy constructor.
|
inlinevirtual |
Clean up memory – forward the call to the version in SuperLU in its LinearSolver incarnation.
Reimplemented from oomph::Preconditioner.
References oomph::SuperLUSolver::clean_up_memory(), and Solver.
|
inline |
Enable documentation of solver statistics.
References oomph::SuperLUSolver::disable_doc_stats(), and Solver.
|
inline |
Enable documentation of solver statistics.
References oomph::SuperLUSolver::enable_doc_stats(), and Solver.
|
inline |
Get the amount of memory used to store the LU factors inside SuperLU.
References oomph::SuperLUSolver::get_memory_usage_for_lu_factors(), and Solver.
Get the amount of memory taken up by SuperLU. The first entry of the returned result contains the memory used to store the LU factors and the second entry contains the total memory used to store AND calculate the LU factors
References oomph::SuperLUSolver::get_memory_usage_for_lu_factors(), oomph::SuperLUSolver::get_total_needed_memory(), and Solver.
|
inline |
Get the total memory needed by SuperLU to store AND calculate the LU factors
References oomph::SuperLUSolver::get_total_needed_memory(), and Solver.
|
delete |
Broken assignment operator.
|
inlinevirtual |
Function applies SuperLU to vector r for (exact) preconditioning, this requires a call to setup(...) first.
Implements oomph::Preconditioner.
References UniformPSDSelfTest::r, oomph::SuperLUSolver::resolve(), and Solver.
|
inlinevirtual |
Function applies SuperLU to vector r for (exact) preconditioning (of the transposed matrix system) this requires a call to setup(...) first.
Reimplemented from oomph::Preconditioner.
References UniformPSDSelfTest::r, oomph::SuperLUSolver::resolve_transpose(), and Solver.
|
inlinevirtual |
Function to set up a preconditioner for the linear system defined by matrix_pt. This function must be called before using preconditioner_solve. Note: matrix_pt must point to an object of class CRDoubleMatrix or CCDoubleMatrix
Implements oomph::Preconditioner.
References oomph::DistributableLinearAlgebraObject::build_distribution(), oomph::DistributableLinearAlgebraObject::distribution_pt(), oomph::SuperLUSolver::factorise(), oomph::Preconditioner::matrix_pt(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and Solver.
Referenced by oomph::NavierStokesSchurComplementPreconditioner::setup().
|
private |
the SuperLU solver emplyed by this preconditioner
Referenced by clean_up_memory(), disable_doc_stats(), enable_doc_stats(), get_memory_usage_for_lu_factors(), get_memory_usage_for_superlu(), get_total_memory_needed_for_superlu(), preconditioner_solve(), preconditioner_solve_transpose(), setup(), and SuperLUPreconditioner().