oomph::NewMumpsPreconditioner Class Reference

An interface to allow Mumps to be used as an (exact) Preconditioner. More...

#include <mumps_solver.h>

+ Inheritance diagram for oomph::NewMumpsPreconditioner:

Public Member Functions

 NewMumpsPreconditioner ()
 Constructor. More...
 
 ~NewMumpsPreconditioner ()
 Destructor. More...
 
 NewMumpsPreconditioner (const NewMumpsPreconditioner &)=delete
 Broken copy constructor. More...
 
void operator= (const NewMumpsPreconditioner &)=delete
 Broken assignment operator. More...
 
void setup ()
 
void preconditioner_solve (const DoubleVector &r, DoubleVector &z)
 
void clean_up_memory ()
 
void enable_doc_time ()
 Enable documentation of timings. More...
 
void disable_doc_time ()
 Disable the documentation of timings. 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)
 
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 DoubleMatrixBasematrix_pt () const
 Get function for matrix pointer. More...
 
virtual void set_matrix_pt (DoubleMatrixBase *matrix_pt)
 Set the matrix pointer. More...
 
virtual const OomphCommunicatorcomm_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...
 
LinearAlgebraDistributiondistribution_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

MumpsSolver Solver
 the Mumps 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...
 

Detailed Description

An interface to allow Mumps to be used as an (exact) Preconditioner.

//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////

Constructor & Destructor Documentation

◆ NewMumpsPreconditioner() [1/2]

oomph::NewMumpsPreconditioner::NewMumpsPreconditioner ( )
inline

Constructor.

341 {}

◆ ~NewMumpsPreconditioner()

oomph::NewMumpsPreconditioner::~NewMumpsPreconditioner ( )
inline

Destructor.

344 {}

◆ NewMumpsPreconditioner() [2/2]

oomph::NewMumpsPreconditioner::NewMumpsPreconditioner ( const NewMumpsPreconditioner )
delete

Broken copy constructor.

Member Function Documentation

◆ clean_up_memory()

void oomph::NewMumpsPreconditioner::clean_up_memory ( )
inlinevirtual

Clean up memory – forward the call to the version in Mumps in its LinearSolver incarnation.

Reimplemented from oomph::Preconditioner.

392  {
394  }
void clean_up_memory()
Clean up the memory allocated by the mumps solver.
Definition: mumps_solver.cc:710
MumpsSolver Solver
the Mumps solver emplyed by this preconditioner
Definition: mumps_solver.h:411

References oomph::MumpsSolver::clean_up_memory(), and Solver.

◆ disable_doc_time()

void oomph::NewMumpsPreconditioner::disable_doc_time ( )
inline

Disable the documentation of timings.

405  {
407  }
void disable_doc_time()
Disable documentation of solve times.
Definition: linear_solver.h:116

References oomph::LinearSolver::disable_doc_time(), and Solver.

◆ enable_doc_time()

void oomph::NewMumpsPreconditioner::enable_doc_time ( )
inline

Enable documentation of timings.

399  {
401  }
void enable_doc_time()
Enable documentation of solve times.
Definition: linear_solver.h:110

References oomph::LinearSolver::enable_doc_time(), and Solver.

◆ operator=()

void oomph::NewMumpsPreconditioner::operator= ( const NewMumpsPreconditioner )
delete

Broken assignment operator.

◆ preconditioner_solve()

void oomph::NewMumpsPreconditioner::preconditioner_solve ( const DoubleVector r,
DoubleVector z 
)
inlinevirtual

Function applies Mumps to vector r for (exact) preconditioning, this requires a call to setup(...) first.

Implements oomph::Preconditioner.

384  {
385  Solver.resolve(r, z);
386  }
void resolve(const DoubleVector &rhs, DoubleVector &result)
Definition: mumps_solver.cc:1005
r
Definition: UniformPSDSelfTest.py:20

References UniformPSDSelfTest::r, oomph::MumpsSolver::resolve(), and Solver.

◆ setup()

void oomph::NewMumpsPreconditioner::setup ( )
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.

358  {
359  oomph_info << "Setting up Mumps (exact) preconditioner" << std::endl;
360 
361  DistributableLinearAlgebraObject* dist_matrix_pt =
363  if (dist_matrix_pt != 0)
364  {
365  LinearAlgebraDistribution dist(dist_matrix_pt->distribution_pt());
366  this->build_distribution(dist);
368  }
369  else
370  {
371  std::ostringstream error_message_stream;
372  error_message_stream
373  << "NewMumpsPreconditioner can only be applied to matrices derived \n"
374  << "DistributableLinearAlgebraObject.\n";
375  throw OomphLibError(error_message_stream.str(),
378  }
379  }
void build_distribution(const LinearAlgebraDistribution *const dist_pt)
Definition: linear_algebra_distribution.h:507
DistributableLinearAlgebraObject()
Default constructor - create a distribution.
Definition: linear_algebra_distribution.h:438
void factorise(DoubleMatrixBase *const &matrix_pt)
Definition: mumps_solver.cc:180
virtual DoubleMatrixBase * matrix_pt() const
Get function for matrix pointer.
Definition: preconditioner.h:150
OomphInfo oomph_info
Definition: oomph_definitions.cc:319
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References oomph::DistributableLinearAlgebraObject::build_distribution(), oomph::DistributableLinearAlgebraObject::distribution_pt(), oomph::MumpsSolver::factorise(), oomph::Preconditioner::matrix_pt(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and Solver.

Member Data Documentation

◆ Solver

MumpsSolver oomph::NewMumpsPreconditioner::Solver
private

the Mumps solver emplyed by this preconditioner

Referenced by clean_up_memory(), disable_doc_time(), enable_doc_time(), preconditioner_solve(), and setup().


The documentation for this class was generated from the following file: