|
IBAMR
IBAMR version 0.20.
|
Class FACPreconditionerStrategy provides an interface for specifying the problem-specific operations needed to implement a specific FAC preconditioner. More...
#include <ibtk/FACPreconditionerStrategy.h>

Public Member Functions | |
| FACPreconditionerStrategy (std::string object_name) | |
| Constructor. More... | |
| virtual | ~FACPreconditionerStrategy ()=default |
| Empty virtual desctructor. More... | |
| const std::string & | getName () const |
| Return the object name. More... | |
| virtual bool | getIsInitialized () const |
| Return whether the operator is initialized. More... | |
| virtual void | setFACPreconditioner (SAMRAI::tbox::ConstPointer< FACPreconditioner > preconditioner) |
| Method to allow the FACPreconditioner object to register itself with the concrete FACPreconditionerStrategy. More... | |
| virtual void | setSolutionTime (double solution_time) |
| Set the time at which the solution is to be evaluated. More... | |
| virtual double | getSolutionTime () const |
| Get the time at which the solution is being evaluated. More... | |
| virtual void | setTimeInterval (double current_time, double new_time) |
| Set the current time interval. More... | |
| virtual std::pair< double, double > | getTimeInterval () const |
| Get the current time interval. More... | |
| virtual double | getDt () const |
| Get the current time step size. More... | |
| virtual void | setToZero (SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &error, int level_num)=0 |
| Zero-out the provided vector on the specified level of the patch hierarchy. More... | |
| virtual void | restrictResidual (const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &source, SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &dest, int dest_level_num)=0 |
| Restrict the residual from the source vector to the destination vector on the specified level of the patch hierarchy. More... | |
| virtual void | prolongError (const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &source, SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &dest, int dest_level_num)=0 |
| Prolong the error from the source vector to the destination vector on the specified level of the patch hierarchy. More... | |
| virtual void | prolongErrorAndCorrect (const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &source, SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &dest, int dest_level_num)=0 |
| Prolong the error from the source vector to the destination vector on the specified level of the patch hierarchy and correct the fine-grid error. More... | |
| virtual void | smoothError (SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &error, const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &residual, int level_num, int num_sweeps, bool performing_pre_sweeps, bool performing_post_sweeps)=0 |
| Smooth the error by the specified number of sweeps on the specified level of the patch hierarchy. More... | |
| virtual bool | solveCoarsestLevel (SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &error, const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &residual, int coarsest_level_num)=0 |
| Solve the system of equations on the coarsest level of the patch hierarchy. More... | |
| virtual void | computeResidual (SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &residual, const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &solution, const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &rhs, int coarsest_level_num, int finest_level_num)=0 |
| Compute the composite-grid residual on the specified range of levels of the patch hierarchy. More... | |
| virtual void | initializeOperatorState (const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &solution, const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &rhs) |
| Initialize any hierarchy-dependent data. More... | |
| virtual void | deallocateOperatorState () |
| Deallocate any hierarchy-dependent data initialized by initializeOperatorState(). More... | |
| virtual void | allocateScratchData () |
| Allocate scratch data. More... | |
| virtual void | deallocateScratchData () |
| Deallocate scratch data. More... | |
Static Public Attributes | |
| static constexpr bool | ALWAYS_HOMOGENEOUS_BC = true |
| Every concrete FACPreconditionerStrategy implements the FAC correction scheme: it solves the error equation \( A e = r \) for a Krylov (or standalone FACPreconditioner) linear preconditioner application, and the boundary conditions satisfied by an error/ correction are always the homogeneous form of the original problem's boundary conditions. This is a mathematical consequence of what a correction equation is, not a configurable option, so unlike SAMRAI::solv::RobinBcCoefStrategy-facing classes elsewhere in IBTK, FACPreconditionerStrategy does not expose a settable homogeneous-BC toggle; see FACPreconditioner::setHomogeneousBc(), which enforces this invariant on the one place a caller can attempt to configure it. More... | |
Logging functions. | |
| SAMRAI::tbox::ConstPointer< IBTK::FACPreconditioner > | d_preconditioner |
| const std::string | d_object_name |
| bool | d_is_initialized = false |
| double | d_solution_time = std::numeric_limits<double>::quiet_NaN() |
| double | d_current_time = std::numeric_limits<double>::quiet_NaN() |
| double | d_new_time = std::numeric_limits<double>::quiet_NaN() |
| virtual void | printClassData (std::ostream &stream) |
| Print class data to stream. More... | |
| virtual SAMRAI::tbox::Pointer< SAMRAI::solv::SAMRAIVectorReal< NDIM, double > > | getLevelSAMRAIVectorReal (const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &vec, int level_num) const |
| Return a SAMRAIVectorReal object that corresponds to the given object but restricted to a single level of the patch hierarchy. More... | |
| FACPreconditionerStrategy ()=delete | |
| Default constructor. More... | |
| FACPreconditionerStrategy (const FACPreconditionerStrategy &from)=delete | |
| Copy constructor. More... | |
| FACPreconditionerStrategy & | operator= (const FACPreconditionerStrategy &that)=delete |
| Assignment operator. More... | |
This class is similar to the SAMRAI class SAMRAI::solv::FACOperatorStrategy, except that certain methods required by the SAMRAI::solv::FACOperatorStrategy interface have been modified (specifically, smoothError()) or removed (specifically, restrictSolution() and postprocessOneCycle()). This interface also requires the implementation of a method, prolongError(), that is optimized for the case in which the FAC preconditioner algorithm is configured not to use pre-smoothing sweeps.
| IBTK::FACPreconditionerStrategy::FACPreconditionerStrategy | ( | std::string | object_name | ) |
|
virtualdefault |
|
privatedelete |
|
privatedelete |
| from | The value to copy to this object. |
| const std::string& IBTK::FACPreconditionerStrategy::getName | ( | ) | const |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
pure virtual |
Implemented in IBAMR::StaggeredStokesFACPreconditionerStrategy, and IBTK::PoissonFACPreconditionerStrategy.
|
pure virtual |
Implemented in IBAMR::StaggeredStokesFACPreconditionerStrategy, IBTK::VCSCViscousOpPointRelaxationFACOperator, and IBTK::PoissonFACPreconditionerStrategy.
|
pure virtual |
Implemented in IBAMR::StaggeredStokesFACPreconditionerStrategy, and IBTK::PoissonFACPreconditionerStrategy.
|
pure virtual |
Implemented in IBAMR::StaggeredStokesFACPreconditionerStrategy, and IBTK::PoissonFACPreconditionerStrategy.
|
pure virtual |
Implemented in IBAMR::StaggeredStokesLevelRelaxationFACOperator, IBAMR::StaggeredStokesIBLevelRelaxationFACOperator, IBAMR::StaggeredStokesBoxRelaxationFACOperator, IBTK::VCSCViscousOpPointRelaxationFACOperator, IBTK::SCPoissonPointRelaxationFACOperator, IBTK::CCPoissonPointRelaxationFACOperator, IBTK::CCPoissonLevelRelaxationFACOperator, and IBTK::CCPoissonBoxRelaxationFACOperator.
|
pure virtual |
Implemented in IBAMR::StaggeredStokesFACPreconditionerStrategy, IBTK::SCPoissonPointRelaxationFACOperator, IBTK::CCPoissonPointRelaxationFACOperator, IBTK::CCPoissonLevelRelaxationFACOperator, and IBTK::CCPoissonBoxRelaxationFACOperator.
|
pure virtual |
Implemented in IBAMR::StaggeredStokesIBLevelRelaxationFACOperator, IBAMR::StaggeredStokesFACPreconditionerStrategy, IBTK::VCSCViscousOpPointRelaxationFACOperator, IBTK::SCPoissonPointRelaxationFACOperator, IBTK::CCPoissonPointRelaxationFACOperator, IBTK::CCPoissonLevelRelaxationFACOperator, and IBTK::CCPoissonBoxRelaxationFACOperator.
|
virtual |
Reimplemented in IBAMR::StaggeredStokesFACPreconditionerStrategy, and IBTK::PoissonFACPreconditionerStrategy.
|
virtual |
Reimplemented in IBAMR::StaggeredStokesFACPreconditionerStrategy, and IBTK::PoissonFACPreconditionerStrategy.
|
virtual |
|
virtual |
|
virtual |
|
protectedvirtual |
|
privatedelete |
| that | The value to assign to this object. |
|
staticconstexpr |
This constant is named, rather than left as a bare true at each of the many call sites in concrete implementations that configure a ghost-cell-filling or level-solver object's own homogeneous-BC setting, so that a future extension supporting a standalone (as opposed to preconditioner-only) FAC or FAS solver – which would need real, inhomogeneous boundary conditions – has exactly one symbol to find and repurpose.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |