oomph::Preconditioner Class Referenceabstract

#include <preconditioner.h>

+ Inheritance diagram for oomph::Preconditioner:

Public Member Functions

 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 (const DoubleVector &r, DoubleVector &z)=0
 
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 void setup ()=0
 
virtual void clean_up_memory ()
 Clean up memory (empty). Generic interface function. 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)
 

Protected Attributes

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...
 

Private Attributes

DoubleMatrixBaseMatrix_pt
 Storage for a pointer to the matrix. More...
 
const OomphCommunicatorComm_pt
 
double Setup_time
 The time it takes to set up this preconditioner. More...
 

Additional Inherited Members

- Protected Member Functions inherited from oomph::DistributableLinearAlgebraObject
void clear_distribution ()
 

Detailed Description

Preconditioner base class. Gives an interface to call all other preconditioners through and stores the matrix and communicator pointers. All preconditioners should be derived from this class.

Constructor & Destructor Documentation

◆ Preconditioner() [1/2]

oomph::Preconditioner::Preconditioner ( )
inline

Constructor.

59  Stream_pt(0),
60  Matrix_pt(0),
61  Comm_pt(0),
62  Setup_time(0){};
double Setup_time
The time it takes to set up this preconditioner.
Definition: preconditioner.h:243
DoubleMatrixBase * Matrix_pt
Storage for a pointer to the matrix.
Definition: preconditioner.h:236
std::ostream * Stream_pt
Pointer to the output stream – defaults to std::cout.
Definition: preconditioner.h:232
const OomphCommunicator * Comm_pt
Definition: preconditioner.h:240
bool Silent_preconditioner_setup
Boolean to indicate whether or not the build should be done silently.
Definition: preconditioner.h:229

◆ Preconditioner() [2/2]

oomph::Preconditioner::Preconditioner ( const Preconditioner )
delete

Broken copy constructor.

◆ ~Preconditioner()

virtual oomph::Preconditioner::~Preconditioner ( )
inlinevirtual

Destructor (empty)

71 {}

Member Function Documentation

◆ clean_up_memory()

virtual void oomph::Preconditioner::clean_up_memory ( )
inlinevirtual

Clean up memory (empty). Generic interface function.

Reimplemented in oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::BandedBlockTriangularPreconditioner< MATRIX >, oomph::ExactDGPBlockPreconditioner< MATRIX >, oomph::PressureBasedSolidLSCPreconditioner, oomph::HelmholtzMGPreconditioner< DIM >, oomph::HelmholtzGMRESMG< MATRIX >, oomph::NavierStokesSchurComplementPreconditioner, oomph::LagrangeEnforcedFlowPreconditioner, oomph::PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld, oomph::PseudoElasticPreconditionerSubsidiaryPreconditionerOld, oomph::PseudoElasticPreconditionerOld, oomph::PseudoElasticPreconditioner, oomph::PseudoElasticFSIPreconditioner, oomph::TrilinosPreconditionerBase, oomph::SuperLUPreconditioner, oomph::NewMumpsPreconditioner, oomph::HyprePreconditioner, oomph::MGPreconditioner< DIM >, oomph::InnerIterationPreconditioner< SOLVER, PRECONDITIONER >, oomph::MatrixBasedLumpedPreconditioner< MATRIX >, oomph::MatrixBasedLumpedPreconditioner< oomph::CRDoubleMatrix >, oomph::BlockTriangularPreconditioner< MATRIX >, oomph::BlockDiagonalPreconditioner< MATRIX >, oomph::GeneralPurposeBlockPreconditioner< MATRIX >, oomph::InexactSubBiharmonicPreconditioner, oomph::ExactSubBiharmonicPreconditioner, oomph::BiharmonicPreconditioner, BoussinesqPreconditioner, and SimpleLSCPreconditioner.

147 {}

Referenced by oomph::TrilinosAztecOOSolver::clean_up_memory(), and oomph::PseudoElasticFSIPreconditioner::clean_up_memory().

◆ comm_pt()

virtual const OomphCommunicator* oomph::Preconditioner::comm_pt ( ) const
inlinevirtual

Get function for comm pointer.

172  {
173  // If we are using MPI then the comm pointer should not be null.
174 #ifdef OOMPH_HAS_MPI
175 #ifdef PARANOID
176  if (Comm_pt == 0)
177  {
178  std::ostringstream error_msg;
179  error_msg << "Tried to access a null communicator pointer. This might "
180  "mean you are\n"
181  << "trying to use it in a non-parallel case. Or it might "
182  "mean you haven't\n"
183  << "set it properly.";
184  throw OomphLibError(
186  }
187 #endif
188 #endif
189  return Comm_pt;
190  }
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References Comm_pt, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

Referenced by oomph::NavierStokesSchurComplementPreconditioner::assemble_inv_press_and_veloc_mass_matrix_diagonal(), oomph::PressureBasedSolidLSCPreconditioner::assemble_mass_matrix_diagonal(), oomph::NavierStokesSchurComplementPreconditioner::get_pressure_advection_diffusion_matrix(), oomph::BlockPreconditioner< MATRIX >::internal_dof_number(), set_comm_pt(), oomph::ILUZeroPreconditioner< CCDoubleMatrix >::setup(), oomph::InnerIterationPreconditioner< SOLVER, PRECONDITIONER >::setup(), oomph::IdentityPreconditioner::setup(), and oomph::PseudoElasticPreconditionerOld::setup().

◆ disable_silent_preconditioner_setup()

void oomph::Preconditioner::disable_silent_preconditioner_setup ( )
inline

Be verbose in the block preconditioner setup.

136  {
137  // Set the appropriate (silencing) boolean to false
139  } // End of disable_silent_preconditioner_setup

References Silent_preconditioner_setup.

◆ enable_silent_preconditioner_setup()

void oomph::Preconditioner::enable_silent_preconditioner_setup ( )
inline

Set up the block preconditioner quietly!

128  {
129  // Set the appropriate (silencing) boolean to true
131  } // End of enable_silent_preconditioner_setup

References Silent_preconditioner_setup.

Referenced by NavierStokesProblem< ELEMENT >::set_up_spacetime_solver(), and UnsteadyHeatProblem< ELEMENT >::set_up_spacetime_solver().

◆ matrix_pt()

◆ operator=()

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

Broken assignment operator.

◆ preconditioner_solve()

virtual void oomph::Preconditioner::preconditioner_solve ( const DoubleVector r,
DoubleVector z 
)
pure virtual

Apply the preconditioner. Pure virtual generic interface function. This method should apply the preconditioner operator to the vector r and return the vector z.

Implemented in oomph::MGPreconditioner< DIM >, oomph::PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld, oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::BandedBlockTriangularPreconditioner< MATRIX >, oomph::ExactDGPBlockPreconditioner< MATRIX >, oomph::PressureBasedSolidLSCPreconditioner, oomph::HelmholtzMGPreconditioner< DIM >, oomph::HelmholtzGMRESMG< MATRIX >, oomph::NavierStokesSchurComplementPreconditioner, oomph::LagrangeEnforcedFlowPreconditioner, oomph::PseudoElasticPreconditionerScalingHelperOld, oomph::PseudoElasticPreconditionerSubsidiaryPreconditionerOld, oomph::PseudoElasticPreconditionerOld, oomph::PseudoElasticPreconditioner, oomph::PseudoElasticFSIPreconditioner, oomph::SimpleFSIPreconditioner< MATRIX >, oomph::FSIPreconditioner, oomph::TrilinosPreconditionerBase, oomph::SuperLUPreconditioner, oomph::IdentityPreconditioner, oomph::NewMumpsPreconditioner, oomph::HyprePreconditioner, oomph::InnerIterationPreconditioner< SOLVER, PRECONDITIONER >, oomph::ILUZeroPreconditioner< CRDoubleMatrix >, oomph::ILUZeroPreconditioner< CCDoubleMatrix >, oomph::MatrixBasedLumpedPreconditioner< MATRIX >, oomph::MatrixBasedLumpedPreconditioner< oomph::CRDoubleMatrix >, oomph::MatrixBasedDiagPreconditioner, oomph::DummyBlockPreconditioner< MATRIX >, oomph::ExactBlockPreconditioner< MATRIX >, oomph::BlockTriangularPreconditioner< MATRIX >, oomph::BlockDiagonalPreconditioner< MATRIX >, oomph::InexactSubBiharmonicPreconditioner, oomph::ExactSubBiharmonicPreconditioner, oomph::BiharmonicPreconditioner, BoussinesqPreconditioner, SimpleFSIPreconditioner< MATRIX >, oomph::SimpleBlockDiagonalPreconditioner< MATRIX >, oomph::SimpleBlockDiagonalPreconditioner< CRDoubleMatrix >, oomph::OnePlusFourWithTwoCoarse< MATRIX >, oomph::CoarseTwoPlusTwoPlusOne< MATRIX >, oomph::TwoPlusThreeUpperTriangularWithReplace< MATRIX >, oomph::TwoPlusThreeUpperTriangularWithTwoLevelSubsidiary< MATRIX >, oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >, oomph::TwoPlusThreeUpperTriangularWithOneLevelSubsidiary< MATRIX >, oomph::TwoPlusThreeUpperTriangular< MATRIX >, oomph::TwoPlusThree< MATRIX >, oomph::UpperTriangular< MATRIX >, oomph::CoarseTwoIntoOne< MATRIX >, oomph::SimpleOneDofOnly< MATRIX >, oomph::SimpleTwoDofOnly< MATRIX >, oomph::Diagonal< MATRIX >, and SimpleLSCPreconditioner.

Referenced by oomph::AugmentedProblemGMRES::apply_schur_complement_preconditioner(), oomph::OomphLibPreconditionerEpetraOperator::ApplyInverse(), oomph::PseudoElasticPreconditioner::elastic_preconditioner_solve(), oomph::PseudoElasticPreconditionerOld::elastic_preconditioner_solve(), oomph::BiharmonicPreconditioner::preconditioner_solve(), oomph::ExactSubBiharmonicPreconditioner::preconditioner_solve(), oomph::InexactSubBiharmonicPreconditioner::preconditioner_solve(), oomph::FSIPreconditioner::preconditioner_solve(), oomph::PseudoElasticFSIPreconditioner::preconditioner_solve(), oomph::PseudoElasticPreconditionerSubsidiaryPreconditionerOld::preconditioner_solve(), oomph::LagrangeEnforcedFlowPreconditioner::preconditioner_solve(), oomph::PressureBasedSolidLSCPreconditioner::preconditioner_solve(), oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner::preconditioner_solve(), oomph::AugmentedProblemGMRES::solve_helper(), oomph::GMRES< MATRIX >::update(), and oomph::HelmholtzGMRESMG< MATRIX >::update().

◆ preconditioner_solve_transpose()

virtual void oomph::Preconditioner::preconditioner_solve_transpose ( const DoubleVector r,
DoubleVector z 
)
inlinevirtual

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)

Reimplemented in oomph::SuperLUPreconditioner, and oomph::IdentityPreconditioner.

84  {
85  // Throw an error
86  throw OomphLibError("This function hasn't been implemented yet!",
89  }

References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ set_comm_pt()

virtual void oomph::Preconditioner::set_comm_pt ( const OomphCommunicator *const  comm_pt)
inlinevirtual

Set the communicator pointer.

194  {
195  Comm_pt = comm_pt;
196  }
virtual const OomphCommunicator * comm_pt() const
Get function for comm pointer.
Definition: preconditioner.h:171

References comm_pt(), and Comm_pt.

Referenced by oomph::PseudoElasticPreconditionerScalingHelperOld::PseudoElasticPreconditionerScalingHelperOld(), setup(), oomph::HelmholtzGMRESMG< MATRIX >::solve(), and oomph::HelmholtzFGMRESMG< MATRIX >::solve().

◆ set_matrix_pt()

virtual void oomph::Preconditioner::set_matrix_pt ( DoubleMatrixBase matrix_pt)
inlinevirtual

◆ setup() [1/3]

virtual void oomph::Preconditioner::setup ( )
pure virtual

Setup the preconditioner. Pure virtual generic interface function.

Implemented in oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::HelmholtzMGPreconditioner< DIM >, oomph::NavierStokesSchurComplementPreconditioner, oomph::MatrixBasedLumpedPreconditioner< MATRIX >, oomph::MatrixBasedLumpedPreconditioner< oomph::CRDoubleMatrix >, oomph::TwoPlusThreeUpperTriangularWithTwoLevelSubsidiary< MATRIX >, oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >, oomph::TwoPlusThreeUpperTriangularWithOneLevelSubsidiary< MATRIX >, oomph::TwoPlusThreeUpperTriangular< MATRIX >, oomph::UpperTriangular< MATRIX >, oomph::CoarseTwoIntoOne< MATRIX >, oomph::SimpleOneDofOnly< MATRIX >, oomph::SimpleTwoDofOnly< MATRIX >, oomph::Diagonal< MATRIX >, oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::HelmholtzMGPreconditioner< DIM >, oomph::NavierStokesSchurComplementPreconditioner, oomph::MatrixBasedLumpedPreconditioner< MATRIX >, oomph::MatrixBasedLumpedPreconditioner< oomph::CRDoubleMatrix >, oomph::TwoPlusThreeUpperTriangularWithTwoLevelSubsidiary< MATRIX >, oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >, oomph::TwoPlusThreeUpperTriangularWithOneLevelSubsidiary< MATRIX >, oomph::TwoPlusThreeUpperTriangular< MATRIX >, oomph::UpperTriangular< MATRIX >, oomph::CoarseTwoIntoOne< MATRIX >, oomph::SimpleOneDofOnly< MATRIX >, oomph::SimpleTwoDofOnly< MATRIX >, oomph::Diagonal< MATRIX >, oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::HelmholtzMGPreconditioner< DIM >, oomph::NavierStokesSchurComplementPreconditioner, oomph::MatrixBasedLumpedPreconditioner< MATRIX >, oomph::MatrixBasedLumpedPreconditioner< oomph::CRDoubleMatrix >, oomph::TwoPlusThreeUpperTriangularWithTwoLevelSubsidiary< MATRIX >, oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >, oomph::TwoPlusThreeUpperTriangularWithOneLevelSubsidiary< MATRIX >, oomph::TwoPlusThreeUpperTriangular< MATRIX >, oomph::UpperTriangular< MATRIX >, oomph::CoarseTwoIntoOne< MATRIX >, oomph::SimpleOneDofOnly< MATRIX >, oomph::SimpleTwoDofOnly< MATRIX >, oomph::Diagonal< MATRIX >, oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::GMRESBlockPreconditioner, oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner, oomph::BandedBlockTriangularPreconditioner< MATRIX >, oomph::ExactDGPBlockPreconditioner< MATRIX >, oomph::PressureBasedSolidExactPreconditioner< MATRIX >, oomph::PressureBasedSolidLSCPreconditioner, oomph::HelmholtzMGPreconditioner< DIM >, oomph::HelmholtzGMRESMG< MATRIX >, oomph::NavierStokesExactPreconditioner< MATRIX >, oomph::NavierStokesSchurComplementPreconditioner, oomph::LagrangeEnforcedFlowPreconditioner, oomph::PseudoElasticPreconditionerScalingHelperOld, oomph::PseudoElasticPreconditionerSubsidiaryBlockPreconditionerOld, oomph::PseudoElasticPreconditionerSubsidiaryPreconditionerOld, oomph::PseudoElasticPreconditionerOld, oomph::PseudoElasticPreconditioner, oomph::PseudoElasticFSIPreconditioner, oomph::SimpleFSIPreconditioner< MATRIX >, oomph::FSIPreconditioner, oomph::TrilinosPreconditionerBase, oomph::SuperLUPreconditioner, oomph::IdentityPreconditioner, oomph::NewMumpsPreconditioner, oomph::HyprePreconditioner, oomph::MGPreconditioner< DIM >, oomph::InnerIterationPreconditioner< SOLVER, PRECONDITIONER >, oomph::ILUZeroPreconditioner< CRDoubleMatrix >, oomph::ILUZeroPreconditioner< CCDoubleMatrix >, oomph::MatrixBasedLumpedPreconditioner< MATRIX >, oomph::MatrixBasedLumpedPreconditioner< oomph::CRDoubleMatrix >, oomph::MatrixBasedDiagPreconditioner, oomph::MatrixBasedLumpedPreconditioner< MATRIX >, oomph::MatrixBasedLumpedPreconditioner< oomph::CRDoubleMatrix >, oomph::MatrixBasedLumpedPreconditioner< MATRIX >, oomph::MatrixBasedLumpedPreconditioner< oomph::CRDoubleMatrix >, oomph::DummyBlockPreconditioner< MATRIX >, oomph::ExactBlockPreconditioner< MATRIX >, oomph::BlockTriangularPreconditioner< MATRIX >, oomph::BlockDiagonalPreconditioner< MATRIX >, oomph::InexactSubBiharmonicPreconditioner, oomph::ExactSubBiharmonicPreconditioner, oomph::BiharmonicPreconditioner, BoussinesqPreconditioner, SimpleFSIPreconditioner< MATRIX >, oomph::SimpleBlockDiagonalPreconditioner< MATRIX >, oomph::SimpleBlockDiagonalPreconditioner< CRDoubleMatrix >, oomph::OnePlusFourWithTwoCoarse< MATRIX >, oomph::CoarseTwoPlusTwoPlusOne< MATRIX >, oomph::TwoPlusThreeUpperTriangularWithReplace< MATRIX >, oomph::TwoPlusThreeUpperTriangularWithTwoLevelSubsidiary< MATRIX >, oomph::TwoPlusOneUpperTriangularPreconditioner< MATRIX >, oomph::TwoPlusThreeUpperTriangularWithOneLevelSubsidiary< MATRIX >, oomph::TwoPlusThreeUpperTriangular< MATRIX >, oomph::TwoPlusThree< MATRIX >, oomph::UpperTriangular< MATRIX >, oomph::CoarseTwoIntoOne< MATRIX >, oomph::SimpleOneDofOnly< MATRIX >, oomph::SimpleTwoDofOnly< MATRIX >, oomph::Diagonal< MATRIX >, and SimpleLSCPreconditioner.

Referenced by setup().

◆ setup() [2/3]

void oomph::Preconditioner::setup ( const Problem problem_pt,
DoubleMatrixBase matrix_pt 
)
inline

Compatability layer for old preconditioners where problem pointers were needed. The problem pointer is only used to get a communicator pointer.

121  {
123  setup(matrix_pt);
124  }
virtual void setup()=0
void obsolete()
Output warning message.
Definition: oomph_utilities.cc:1102

References matrix_pt(), oomph::ObsoleteCode::obsolete(), and setup().

◆ setup() [3/3]

void oomph::Preconditioner::setup ( DoubleMatrixBase matrix_pt)
inline

Setup the preconditioner: store the matrix pointer and the communicator pointer then call preconditioner specific setup() function.

95  {
96  // Store matrix pointer
98 
99  // Extract and store communicator pointer
100  DistributableLinearAlgebraObject* dist_obj_pt =
102  if (dist_obj_pt != 0)
103  {
104  set_comm_pt(dist_obj_pt->distribution_pt()->communicator_pt());
105  }
106  else
107  {
108  set_comm_pt(0);
109  }
110 
111  double setup_time_start = TimingHelpers::timer();
112  setup();
113  double setup_time_finish = TimingHelpers::timer();
114  Setup_time = setup_time_finish - setup_time_start;
115  }
DistributableLinearAlgebraObject()
Default constructor - create a distribution.
Definition: linear_algebra_distribution.h:438
virtual void set_comm_pt(const OomphCommunicator *const comm_pt)
Set the communicator pointer.
Definition: preconditioner.h:193
virtual void set_matrix_pt(DoubleMatrixBase *matrix_pt)
Set the matrix pointer.
Definition: preconditioner.h:165
double timer()
returns the time in seconds after some point in past
Definition: oomph_utilities.cc:1295

References oomph::LinearAlgebraDistribution::communicator_pt(), oomph::DistributableLinearAlgebraObject::distribution_pt(), matrix_pt(), set_comm_pt(), set_matrix_pt(), setup(), Setup_time, and oomph::TimingHelpers::timer().

Referenced by oomph::BiharmonicPreconditioner::setup(), oomph::ExactSubBiharmonicPreconditioner::setup(), oomph::InexactSubBiharmonicPreconditioner::setup(), oomph::FSIPreconditioner::setup(), oomph::PseudoElasticFSIPreconditioner::setup(), oomph::PseudoElasticPreconditionerSubsidiaryPreconditionerOld::setup(), oomph::LagrangeEnforcedFlowPreconditioner::setup(), oomph::PressureBasedSolidLSCPreconditioner::setup(), oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner::setup(), oomph::AugmentedProblemGMRES::solve_helper(), and oomph::TrilinosAztecOOSolver::solver_setup().

◆ setup_time()

double oomph::Preconditioner::setup_time ( ) const
inline

Returns the time to setup the preconditioner.

200  {
201  return Setup_time;
202  }

References Setup_time.

Referenced by oomph::FSIPreconditioner::setup().

◆ turn_into_subsidiary_block_preconditioner() [1/2]

virtual void oomph::Preconditioner::turn_into_subsidiary_block_preconditioner ( BlockPreconditioner< CRDoubleMatrix > *  master_block_prec_pt,
const Vector< unsigned > &  doftype_in_master_preconditioner_coarse 
)
inlinevirtual

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.

213  {
214  }

◆ turn_into_subsidiary_block_preconditioner() [2/2]

virtual void oomph::Preconditioner::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 
)
inlinevirtual

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.

224  {
225  }

Member Data Documentation

◆ Comm_pt

const OomphCommunicator* oomph::Preconditioner::Comm_pt
private

Storage for a pointer to the communicator. Null if the preconditioner should not be distributed.

Referenced by comm_pt(), and set_comm_pt().

◆ Matrix_pt

DoubleMatrixBase* oomph::Preconditioner::Matrix_pt
private

Storage for a pointer to the matrix.

Referenced by matrix_pt(), and set_matrix_pt().

◆ Setup_time

double oomph::Preconditioner::Setup_time
private

The time it takes to set up this preconditioner.

Referenced by setup(), and setup_time().

◆ Silent_preconditioner_setup

bool oomph::Preconditioner::Silent_preconditioner_setup
protected

◆ Stream_pt

std::ostream* oomph::Preconditioner::Stream_pt
protected

Pointer to the output stream – defaults to std::cout.

Referenced by oomph::SpaceTimeNavierStokesSubsidiaryPreconditioner::setup(), and oomph::GMRESBlockPreconditioner::setup().


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