30 #ifndef OOMPH_SuperLU_Preconditioner_HEADER 31 #define OOMPH_SuperLU_Preconditioner_HEADER 79 oomph_info <<
"Setting up SuperLU (exact) preconditioner" 81 if (dynamic_cast<DistributableLinearAlgebraObject*>(
matrix_pt()) != 0)
84 ((dynamic_cast<DistributableLinearAlgebraObject*>
91 std::ostringstream error_message_stream;
93 <<
"SuperLUPreconditioner can only be applied to matrices derived \n" 94 <<
"DistributableLinearAlgebraObject.\n" 95 <<
"You are most likely to be here because you are using the\n " 96 <<
"soon to be obsolete CCDoubleMatrix\n";
98 OOMPH_CURRENT_FUNCTION,
99 OOMPH_EXCEPTION_LOCATION);
virtual DoubleMatrixBase * matrix_pt() const
Get function for matrix pointer.
virtual void clean_up_memory()
Clean up memory – forward the call to the version in SuperLU in its LinearSolver incarnation...
void clean_up_memory()
Clean up the memory allocated by the solver.
void broken_copy(const std::string &class_name)
Issue error message and terminate execution.
. SuperLU Project Solver class. This is a combined wrapper for both SuperLU and SuperLU Dist...
void preconditioner_solve(const DoubleVector &r, DoubleVector &z)
Function applies SuperLU to vector r for (exact) preconditioning, this requires a call to setup(...
void setup()
Function to set up a preconditioner for the linear system defined by matrix_pt. This function must be...
~SuperLUPreconditioner()
Destructor.
Describes the distribution of a distributable linear algebra type object. Typically this is a contain...
SuperLUPreconditioner(const SuperLUPreconditioner &)
Broken copy constructor.
void disable_doc_time()
Disable documentation of solve times.
void resolve(const DoubleVector &rhs, DoubleVector &result)
Resolve the system defined by the last assembled jacobian and the specified rhs vector if resolve has...
SuperLUSolver Solver
the SuperLU solver emplyed by this preconditioner
An interface to allow SuperLU to be used as an (exact) Preconditioner.
void disable_doc_stats()
Disable documentation of solver statistics.
Preconditioner base class. Gives an interface to call all other preconditioners through and stores th...
void broken_assign(const std::string &class_name)
Issue error message and terminate execution.
void build_distribution(const LinearAlgebraDistribution *const dist_pt)
setup the distribution of this distributable linear algebra object
void factorise(DoubleMatrixBase *const &matrix_pt)
Do the factorisation stage Note: if Delete_matrix_data is true the function matrix_pt->clean_up_memor...
A vector in the mathematical sense, initially developed for linear algebra type applications. If MPI then this vector can be distributed - its distribution is described by the LinearAlgebraDistribution object at Distribution_pt. Data is stored in a C-style pointer vector (double*)
LinearAlgebraDistribution * distribution_pt() const
access to the LinearAlgebraDistribution
SuperLUPreconditioner()
Constructor.
void operator=(const SuperLUPreconditioner &)
Broken assignment operator.