26 #ifndef OOMPH_SuperLU_Preconditioner_HEADER
27 #define OOMPH_SuperLU_Preconditioner_HEADER
65 oomph_info <<
"Setting up SuperLU (exact) preconditioner" << std::endl;
76 std::ostringstream error_message_stream;
78 <<
"SuperLUPreconditioner can only be applied to matrices derived \n"
79 <<
"DistributableLinearAlgebraObject.\n"
80 <<
"You are most likely to be here because you are using the\n "
81 <<
"soon to be obsolete CCDoubleMatrix\n";
83 OOMPH_CURRENT_FUNCTION,
84 OOMPH_EXCEPTION_LOCATION);
Base class for any linear algebra object that is distributable. Just contains storage for the LinearA...
LinearAlgebraDistribution * distribution_pt() const
access to the LinearAlgebraDistribution
void build_distribution(const LinearAlgebraDistribution *const dist_pt)
setup the distribution of this distributable linear algebra object
A vector in the mathematical sense, initially developed for linear algebra type applications....
Describes the distribution of a distributable linear algebra type object. Typically this is a contain...
void disable_doc_time()
Disable documentation of solve times.
An OomphLibError object which should be thrown when an run-time error is encountered....
Preconditioner base class. Gives an interface to call all other preconditioners through and stores th...
virtual DoubleMatrixBase * matrix_pt() const
Get function for matrix pointer.
An interface to allow SuperLU to be used as an (exact) Preconditioner.
double get_total_memory_needed_for_superlu()
Get the total memory needed by SuperLU to store AND calculate the LU factors.
SuperLUSolver Solver
the SuperLU solver emplyed by this preconditioner
SuperLUPreconditioner()
Constructor.
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Function applies SuperLU to vector r for (exact) preconditioning, this requires a call to setup(....
void preconditioner_solve_transpose(const DoubleVector &r, DoubleVector &z)
Function applies SuperLU to vector r for (exact) preconditioning (of the transposed matrix system) th...
void enable_doc_stats()
Enable documentation of solver statistics.
double get_memory_usage_for_lu_factors()
Get the amount of memory used to store the LU factors inside SuperLU.
void setup()
Function to set up a preconditioner for the linear system defined by matrix_pt. This function must be...
~SuperLUPreconditioner()
Destructor.
SuperLUPreconditioner(const SuperLUPreconditioner &)=delete
Broken copy constructor.
virtual void clean_up_memory()
Clean up memory – forward the call to the version in SuperLU in its LinearSolver incarnation.
void operator=(const SuperLUPreconditioner &)=delete
Broken assignment operator.
void disable_doc_stats()
Enable documentation of solver statistics.
Vector< double > get_memory_usage_for_superlu()
Get the amount of memory taken up by SuperLU. The first entry of the returned result contains the mem...
//////////////////////////////////////////////////////////////////////////// ////////////////////////...
void enable_doc_stats()
Enable documentation of solver statistics.
void factorise(DoubleMatrixBase *const &matrix_pt)
Do the factorisation stage Note: if Delete_matrix_data is true the function matrix_pt->clean_up_memor...
void resolve_transpose(const DoubleVector &rhs, DoubleVector &result)
Resolve the (transposed) system defined by the last assembled Jacobian and the specified rhs vector i...
double get_memory_usage_for_lu_factors()
How much memory do the LU factors take up? In bytes.
double get_total_needed_memory()
How much memory was allocated by SuperLU? In bytes.
void resolve(const DoubleVector &rhs, DoubleVector &result)
Resolve the system defined by the last assembled jacobian and the specified rhs vector if resolve has...
void disable_doc_stats()
Disable documentation of solver statistics.
void clean_up_memory()
Clean up the memory allocated by the solver.
//////////////////////////////////////////////////////////////////// ////////////////////////////////...
OomphInfo oomph_info
Single (global) instantiation of the OomphInfo object – this is used throughout the library as a "rep...