Class StaggeredStokesBlockFactorizationPreconditioner is a concrete StaggeredStokesBlockPreconditioner that implements a staggered grid (MAC) block factorization (approximate Schur complement) preconditioner for the incompressible Stokes equations.
More...
#include <ibamr/StaggeredStokesBlockFactorizationPreconditioner.h>
|
| | StaggeredStokesBlockFactorizationPreconditioner (const std::string &object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db, const std::string &default_options_prefix) |
| | Class constructor. More...
|
| |
| | ~StaggeredStokesBlockFactorizationPreconditioner () |
| | Destructor. More...
|
| |
| void | setFactorizationType (FactorizationType factorization_type) |
| |
| virtual bool | needsVelocitySubdomainSolver () const |
| | Indicate whether the preconditioner needs a velocity subdomain solver. More...
|
| |
| virtual void | setVelocitySubdomainSolver (SAMRAI::tbox::Pointer< IBTK::PoissonSolver > velocity_solver) |
| | Provide a velocity subdomain solver. More...
|
| |
| void | setVelocityPoissonSpecifications (const SAMRAI::solv::PoissonSpecifications &U_problem_coefs) override |
| | Set the PoissonSpecifications object used to specify the coefficients for the momentum equation in the incompressible Stokes operator. More...
|
| |
| virtual bool | needsPressureSubdomainSolver () const |
| | Indicate whether the preconditioner needs a pressure subdomain solver. More...
|
| |
| virtual void | setPressureSubdomainSolver (SAMRAI::tbox::Pointer< IBTK::PoissonSolver > pressure_solver) |
| | Provide a pressure subdomain solver. More...
|
| |
| virtual void | setPressurePoissonSpecifications (const SAMRAI::solv::PoissonSpecifications &P_problem_coefs) |
| | Set the PoissonSpecifications object used to specify the coefficients for the pressure-Poisson problem. More...
|
| |
| virtual void | setPhysicalBcCoefs (const std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > &U_bc_coefs, SAMRAI::solv::RobinBcCoefStrategy< NDIM > *P_bc_coef) override |
| | Set the SAMRAI::solv::RobinBcCoefStrategy objects used to specify physical boundary conditions. More...
|
| |
| virtual void | setComponentsHaveNullSpace (const bool has_velocity_nullspace, const bool has_pressure_nullspace) |
| | Set if velocity and pressure have nullspace. More...
|
| |
| virtual void | setPhysicalBoundaryHelper (SAMRAI::tbox::Pointer< StaggeredStokesPhysicalBoundaryHelper > bc_helper) |
| | Set the StokesSpecifications object and timestep size used to specify the coefficients for the time-dependent incompressible Stokes operator. More...
|
| |
|
| bool | solveSystem (SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &x, SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &b) override |
| | Compute the action of the preconditioner. More...
|
| |
| void | initializeSolverState (const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &x, const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &b) override |
| | Compute hierarchy dependent data required for solving \(Ax=b\). More...
|
| |
| void | deallocateSolverState () override |
| | Remove all hierarchy dependent data allocated by initializeSolverState(). More...
|
| |
|
| FactorizationType | d_factorization_type = LOWER_TRIANGULAR |
| |
| SAMRAI::tbox::Pointer< IBTK::HierarchyGhostCellInterpolation > | d_P_bdry_fill_op |
| |
| SAMRAI::tbox::Pointer< IBTK::HierarchyGhostCellInterpolation > | d_no_fill_op |
| |
| SAMRAI::tbox::Pointer< SAMRAI::pdat::SideVariable< NDIM, double > > | d_U_var |
| |
| int | d_F_U_mod_idx = IBTK::invalid_index |
| |
| SAMRAI::tbox::Pointer< SAMRAI::pdat::CellVariable< NDIM, double > > | d_P_var |
| |
| int | d_P_scratch_idx = IBTK::invalid_index |
| |
| int | d_F_P_mod_idx = IBTK::invalid_index |
| |
| void | setInitialGuessNonzero (bool initial_guess_nonzero=true) override |
| | Set whether the initial guess is non-zero. More...
|
| |
| void | setMaxIterations (int max_iterations) override |
| | Set the maximum number of iterations to use per solve. More...
|
| |
| | StaggeredStokesBlockFactorizationPreconditioner ()=delete |
| | Default constructor. More...
|
| |
| | StaggeredStokesBlockFactorizationPreconditioner (const StaggeredStokesBlockFactorizationPreconditioner &from)=delete |
| | Copy constructor. More...
|
| |
| StaggeredStokesBlockFactorizationPreconditioner & | operator= (const StaggeredStokesBlockFactorizationPreconditioner &that)=delete |
| | Assignment operator. More...
|
| |
| void | solvePressureSubsystem (SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &x, SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &b, bool initial_guess_nonzero) |
| | Solve the pressure subsystem. More...
|
| |
| void | solveVelocitySubsystem (SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &x, SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &b, bool initial_guess_nonzero) |
| | Solve the velocity subsystem. More...
|
| |
◆ FactorizationType
| Enumerator |
|---|
| LOWER_TRIANGULAR | |
| UPPER_TRIANGULAR | |
| SYMMETRIC | |
| DIAGONAL | |
◆ StaggeredStokesBlockFactorizationPreconditioner() [1/3]
| IBAMR::StaggeredStokesBlockFactorizationPreconditioner::StaggeredStokesBlockFactorizationPreconditioner |
( |
const std::string & |
object_name, |
|
|
SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > |
input_db, |
|
|
const std::string & |
default_options_prefix |
|
) |
| |
◆ ~StaggeredStokesBlockFactorizationPreconditioner()
| IBAMR::StaggeredStokesBlockFactorizationPreconditioner::~StaggeredStokesBlockFactorizationPreconditioner |
( |
| ) |
|
◆ StaggeredStokesBlockFactorizationPreconditioner() [2/3]
| IBAMR::StaggeredStokesBlockFactorizationPreconditioner::StaggeredStokesBlockFactorizationPreconditioner |
( |
| ) |
|
|
privatedelete |
- Note
- This constructor is not implemented and should not be used.
◆ StaggeredStokesBlockFactorizationPreconditioner() [3/3]
- Note
- This constructor is not implemented and should not be used.
- Parameters
-
| from | The value to copy to this object. |
◆ allocate_solver()
◆ setFactorizationType()
| void IBAMR::StaggeredStokesBlockFactorizationPreconditioner::setFactorizationType |
( |
FactorizationType |
factorization_type | ) |
|
Set the factorization type.
◆ solveSystem()
◆ initializeSolverState()
- Parameters
-
| x | solution vector |
| b | right-hand-side vector |
Conditions on Parameters:
- vectors x and b must have same patch hierarchy
- vectors x and b must have same structure, depth, etc.
- Note
- It is safe to call initializeSolverState() when the solver state is already initialized.
- See also
- deallocateSolverState
- Note
- A default implementation is provided which does nothing.
Reimplemented from IBTK::GeneralSolver.
◆ deallocateSolverState()
| void IBAMR::StaggeredStokesBlockFactorizationPreconditioner::deallocateSolverState |
( |
| ) |
|
|
overridevirtual |
◆ setInitialGuessNonzero()
| void IBAMR::StaggeredStokesBlockFactorizationPreconditioner::setInitialGuessNonzero |
( |
bool |
initial_guess_nonzero = true | ) |
|
|
overridevirtual |
◆ setMaxIterations()
| void IBAMR::StaggeredStokesBlockFactorizationPreconditioner::setMaxIterations |
( |
int |
max_iterations | ) |
|
|
overridevirtual |
◆ operator=()
- Note
- This operator is not implemented and should not be used.
- Parameters
-
| that | The value to assign to this object. |
- Returns
- A reference to this object.
◆ solvePressureSubsystem()
◆ solveVelocitySubsystem()
◆ needsVelocitySubdomainSolver()
| virtual bool IBAMR::StaggeredStokesBlockPreconditioner::needsVelocitySubdomainSolver |
( |
| ) |
const |
|
virtualinherited |
◆ setVelocitySubdomainSolver()
◆ setVelocityPoissonSpecifications()
◆ needsPressureSubdomainSolver()
| virtual bool IBAMR::StaggeredStokesBlockPreconditioner::needsPressureSubdomainSolver |
( |
| ) |
const |
|
virtualinherited |
◆ setPressureSubdomainSolver()
◆ setPressurePoissonSpecifications()
◆ setPhysicalBcCoefs()
- Note
- Any of the elements of U_bc_coefs may be nullptr. In this case, homogeneous Dirichlet boundary conditions are employed for that data depth. P_bc_coef may also be nullptr; in that case, homogeneous Neumann boundary conditions are employed for the pressure.
- Parameters
-
| U_bc_coefs | vector of pointers to objects that can set the Robin boundary condition coefficients for the velocity |
| P_bc_coef | Pointer to object that can set the Robin boundary condition coefficients for the pressure |
Reimplemented from IBAMR::StaggeredStokesSolver.
◆ correctNullSpace()
◆ setNullSpace()
Implementations can require the nullspace basis vectors to be orthogonal but should not assume the basis vectors to be orthonormal. If the basis vectors are not orthonormal, the solver may normalize them in place.
Reimplemented in IBTK::PETScKrylovLinearSolver, and IBTK::PETScLevelSolver.
◆ getNullSpaceContainsConstantVector()
| virtual bool IBTK::LinearSolver::getNullSpaceContainsConstantVector |
( |
| ) |
const |
|
virtualinherited |
◆ getNullSpaceBasisVectors()
◆ getInitialGuessNonzero()
| virtual bool IBTK::LinearSolver::getInitialGuessNonzero |
( |
| ) |
const |
|
virtualinherited |
◆ printClassData()
| virtual void IBTK::LinearSolver::printClassData |
( |
std::ostream & |
stream | ) |
|
|
overridevirtualinherited |
◆ getName()
| const std::string& IBTK::GeneralSolver::getName |
( |
| ) |
const |
|
inherited |
◆ getIsInitialized()
| virtual bool IBTK::GeneralSolver::getIsInitialized |
( |
| ) |
const |
|
virtualinherited |
◆ setHomogeneousBc()
| virtual void IBTK::GeneralSolver::setHomogeneousBc |
( |
bool |
homogeneous_bc | ) |
|
|
virtualinherited |
◆ getHomogeneousBc()
| virtual bool IBTK::GeneralSolver::getHomogeneousBc |
( |
| ) |
const |
|
virtualinherited |
◆ setSolutionTime()
| virtual void IBTK::GeneralSolver::setSolutionTime |
( |
double |
solution_time | ) |
|
|
virtualinherited |
◆ getSolutionTime()
| virtual double IBTK::GeneralSolver::getSolutionTime |
( |
| ) |
const |
|
virtualinherited |
◆ setTimeInterval()
| virtual void IBTK::GeneralSolver::setTimeInterval |
( |
double |
current_time, |
|
|
double |
new_time |
|
) |
| |
|
virtualinherited |
◆ getTimeInterval()
| virtual std::pair<double, double> IBTK::GeneralSolver::getTimeInterval |
( |
| ) |
const |
|
virtualinherited |
◆ getDt()
| virtual double IBTK::GeneralSolver::getDt |
( |
| ) |
const |
|
virtualinherited |
◆ setHierarchyMathOps()
◆ getHierarchyMathOps()
◆ getMaxIterations()
| virtual int IBTK::GeneralSolver::getMaxIterations |
( |
| ) |
const |
|
virtualinherited |
◆ setAbsoluteTolerance()
| virtual void IBTK::GeneralSolver::setAbsoluteTolerance |
( |
double |
abs_residual_tol | ) |
|
|
virtualinherited |
◆ getAbsoluteTolerance()
| virtual double IBTK::GeneralSolver::getAbsoluteTolerance |
( |
| ) |
const |
|
virtualinherited |
◆ setRelativeTolerance()
| virtual void IBTK::GeneralSolver::setRelativeTolerance |
( |
double |
rel_residual_tol | ) |
|
|
virtualinherited |
◆ getRelativeTolerance()
| virtual double IBTK::GeneralSolver::getRelativeTolerance |
( |
| ) |
const |
|
virtualinherited |
◆ getNumIterations()
| virtual int IBTK::GeneralSolver::getNumIterations |
( |
| ) |
const |
|
virtualinherited |
◆ getResidualNorm()
| virtual double IBTK::GeneralSolver::getResidualNorm |
( |
| ) |
const |
|
virtualinherited |
◆ setLoggingEnabled()
| virtual void IBTK::GeneralSolver::setLoggingEnabled |
( |
bool |
enable_logging = true | ) |
|
|
virtualinherited |
◆ getLoggingEnabled()
| virtual bool IBTK::GeneralSolver::getLoggingEnabled |
( |
| ) |
const |
|
virtualinherited |
◆ init()
| void IBTK::GeneralSolver::init |
( |
const std::string & |
object_name, |
|
|
bool |
homogeneous_bc |
|
) |
| |
|
protectedinherited |
◆ initSpecialized()
| virtual void IBTK::GeneralSolver::initSpecialized |
( |
const std::string & |
object_name, |
|
|
bool |
homogeneous_bc |
|
) |
| |
|
protectedvirtualinherited |
◆ setComponentsHaveNullSpace()
| virtual void IBAMR::StaggeredStokesSolver::setComponentsHaveNullSpace |
( |
const bool |
has_velocity_nullspace, |
|
|
const bool |
has_pressure_nullspace |
|
) |
| |
|
virtualinherited |
◆ setPhysicalBoundaryHelper()
◆ d_factorization_type
◆ d_P_bdry_fill_op
◆ d_no_fill_op
◆ d_U_var
◆ d_F_U_mod_idx
◆ d_P_var
◆ d_P_scratch_idx
◆ d_F_P_mod_idx
◆ d_needs_velocity_solver
| const bool IBAMR::StaggeredStokesBlockPreconditioner::d_needs_velocity_solver |
|
protectedinherited |
◆ d_velocity_solver
◆ d_P_problem_coefs
◆ d_needs_pressure_solver
| const bool IBAMR::StaggeredStokesBlockPreconditioner::d_needs_pressure_solver |
|
protectedinherited |
◆ d_pressure_solver
◆ d_hierarchy
◆ d_coarsest_ln
◆ d_finest_ln
◆ d_velocity_data_ops
◆ d_pressure_data_ops
◆ d_velocity_wgt_idx
◆ d_pressure_wgt_idx
◆ d_hier_math_ops
◆ d_initial_guess_nonzero
| bool IBTK::LinearSolver::d_initial_guess_nonzero = true |
|
protectedinherited |
◆ d_nullspace_contains_constant_vec
| bool IBTK::LinearSolver::d_nullspace_contains_constant_vec = false |
|
protectedinherited |
◆ d_nullspace_basis_vecs
◆ d_object_name
| std::string IBTK::GeneralSolver::d_object_name = "unitialized" |
|
protectedinherited |
◆ d_is_initialized
| bool IBTK::GeneralSolver::d_is_initialized = false |
|
protectedinherited |
◆ d_homogeneous_bc
| bool IBTK::GeneralSolver::d_homogeneous_bc = false |
|
protectedinherited |
◆ d_solution_time
| double IBTK::GeneralSolver::d_solution_time = std::numeric_limits<double>::quiet_NaN() |
|
protectedinherited |
◆ d_current_time
| double IBTK::GeneralSolver::d_current_time = std::numeric_limits<double>::quiet_NaN() |
|
protectedinherited |
◆ d_new_time
| double IBTK::GeneralSolver::d_new_time = std::numeric_limits<double>::quiet_NaN() |
|
protectedinherited |
◆ d_rel_residual_tol
| double IBTK::GeneralSolver::d_rel_residual_tol = 0.0 |
|
protectedinherited |
◆ d_abs_residual_tol
| double IBTK::GeneralSolver::d_abs_residual_tol = 0.0 |
|
protectedinherited |
◆ d_max_iterations
| int IBTK::GeneralSolver::d_max_iterations = 100 |
|
protectedinherited |
◆ d_current_iterations
| int IBTK::GeneralSolver::d_current_iterations = 0 |
|
protectedinherited |
◆ d_current_residual_norm
| double IBTK::GeneralSolver::d_current_residual_norm = std::numeric_limits<double>::quiet_NaN() |
|
protectedinherited |
◆ d_hier_math_ops_external
| bool IBTK::GeneralSolver::d_hier_math_ops_external = false |
|
protectedinherited |
◆ d_enable_logging
| bool IBTK::GeneralSolver::d_enable_logging = false |
|
protectedinherited |
◆ d_U_problem_coefs
◆ d_default_U_bc_coef
◆ d_U_bc_coefs
◆ d_default_P_bc_coef
◆ d_P_bc_coef
◆ d_bc_helper
◆ d_has_velocity_nullspace
| bool IBAMR::StaggeredStokesSolver::d_has_velocity_nullspace = false |
|
protectedinherited |
◆ d_has_pressure_nullspace
| bool IBAMR::StaggeredStokesSolver::d_has_pressure_nullspace = false |
|
protectedinherited |
The documentation for this class was generated from the following file: