Class StaggeredStokesBoxRelaxationFACOperator is a concrete StaggeredStokesFACPreconditionerStrategy implementing a box relaxation (Vanka-type) smoother for use as a multigrid preconditioner.
#include <ibamr/StaggeredStokesBoxRelaxationFACOperator.h>
|
| std::vector< Mat > | d_box_op |
| |
| std::vector< Vec > | d_box_e |
| |
| std::vector< Vec > | d_box_r |
| |
| std::vector< KSP > | d_box_ksp |
| |
| std::vector< std::vector< std::array< SAMRAI::hier::BoxList< NDIM >, NDIM > > > | d_patch_side_bc_box_overlap |
| |
| std::vector< std::vector< SAMRAI::hier::BoxList< NDIM > > > | d_patch_cell_bc_box_overlap |
| |
| 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) override |
| | Perform a given number of relaxations on the error. More...
|
| |
| void | initializeOperatorStateSpecialized (const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &solution, const SAMRAI::solv::SAMRAIVectorReal< NDIM, double > &rhs, int coarsest_reset_ln, int finest_reset_ln) override |
| | Compute implementation-specific hierarchy-dependent data. More...
|
| |
| void | deallocateOperatorStateSpecialized (int coarsest_reset_ln, int finest_reset_ln) override |
| | Remove implementation-specific hierarchy-dependent data. More...
|
| |
| | StaggeredStokesBoxRelaxationFACOperator () |
| | Default constructor. More...
|
| |
| | StaggeredStokesBoxRelaxationFACOperator (const StaggeredStokesBoxRelaxationFACOperator &from)=delete |
| | Copy constructor. More...
|
| |
| StaggeredStokesBoxRelaxationFACOperator & | operator= (const StaggeredStokesBoxRelaxationFACOperator &that)=delete |
| | Assignment operator. More...
|
| |
|
schedules.
|
| void | xeqScheduleProlongation (const std::pair< int, int > &dst_idxs, const std::pair< int, int > &src_idxs, int dst_ln) |
| | Execute a refinement schedule for prolonging data. More...
|
| |
| void | xeqScheduleRestriction (const std::pair< int, int > &dst_idxs, const std::pair< int, int > &src_idxs, int dst_ln) |
| | Execute schedule for restricting solution or residual to the specified level. More...
|
| |
| void | xeqScheduleGhostFillNoCoarse (const std::pair< int, int > &dst_idxs, int dst_ln) |
| | Execute schedule for filling ghosts on the specified level. More...
|
| |
| void | xeqScheduleDataSynch (int dst_idx, int dst_ln) |
| | Execute schedule for synchronizing data on the specified level. More...
|
| |
| SAMRAI::solv::PoissonSpecifications | d_U_problem_coefs |
| |
| SAMRAI::solv::RobinBcCoefStrategy< NDIM > * | d_default_U_bc_coef |
| |
| std::vector< SAMRAI::solv::RobinBcCoefStrategy< NDIM > * > | d_U_bc_coefs |
| |
| SAMRAI::solv::RobinBcCoefStrategy< NDIM > * | d_default_P_bc_coef |
| |
| SAMRAI::solv::RobinBcCoefStrategy< NDIM > * | d_P_bc_coef |
| |
| SAMRAI::tbox::Pointer< StaggeredStokesPhysicalBoundaryHelper > | d_bc_helper |
| |
| const int | d_gcw |
| |
◆ StaggeredStokesBoxRelaxationFACOperator() [1/3]
| IBAMR::StaggeredStokesBoxRelaxationFACOperator::StaggeredStokesBoxRelaxationFACOperator |
( |
const std::string & |
object_name, |
|
|
SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > |
input_db, |
|
|
const std::string & |
default_options_prefix |
|
) |
| |
◆ ~StaggeredStokesBoxRelaxationFACOperator()
| IBAMR::StaggeredStokesBoxRelaxationFACOperator::~StaggeredStokesBoxRelaxationFACOperator |
( |
| ) |
|
◆ StaggeredStokesBoxRelaxationFACOperator() [2/3]
| IBAMR::StaggeredStokesBoxRelaxationFACOperator::StaggeredStokesBoxRelaxationFACOperator |
( |
| ) |
|
|
private |
- Note
- This constructor is not implemented and should not be used.
◆ StaggeredStokesBoxRelaxationFACOperator() [3/3]
- Note
- This constructor is not implemented and should not be used.
- Parameters
-
| from | The value to copy to this object. |
◆ smoothError()
- Parameters
-
| error | error vector |
| residual | residual vector |
| level_num | level number |
| num_sweeps | number of sweeps to perform |
| performing_pre_sweeps | boolean value that is true when pre-smoothing sweeps are being performed |
| performing_post_sweeps | boolean value that is true when post-smoothing sweeps are being performed |
Implements IBTK::FACPreconditionerStrategy.
◆ initializeOperatorStateSpecialized()
◆ deallocateOperatorStateSpecialized()
| void IBAMR::StaggeredStokesBoxRelaxationFACOperator::deallocateOperatorStateSpecialized |
( |
int |
coarsest_reset_ln, |
|
|
int |
finest_reset_ln |
|
) |
| |
|
overrideprotectedvirtual |
◆ 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.
◆ setVelocityPoissonSpecifications()
◆ setComponentsHaveNullSpace()
| virtual void IBAMR::StaggeredStokesFACPreconditionerStrategy::setComponentsHaveNullSpace |
( |
const bool |
has_velocity_nullspace, |
|
|
const bool |
has_pressure_nullspace |
|
) |
| |
|
virtualinherited |
◆ 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 | IBTK::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 |
◆ setPhysicalBoundaryHelper()
◆ setResetLevels()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::setResetLevels |
( |
int |
coarsest_ln, |
|
|
int |
finest_ln |
|
) |
| |
|
inherited |
When the operator is initialized, then only the specified range of levels are reset in the operator state the next time that the operator is initialized. If the operator is not initialized, this method has no effect.
To ensure the range of levels that is reset includes all levels in the patch hierarchy, use coarsest_ln = finest_ln = -1.
- Note
- This function is used to save some unnecessary computations when the hierarchy is regridded. The range of levels specified must include all levels which need to be reset by SAMRAI::mesh::StandardTagAndInitStrategy::resetHierarchyConfiguration(). Any data residing outside of this range of levels will not be reset. This is not what you want to have happen if, for instance, the Poisson specifications changes.
◆ setSmootherType()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::setSmootherType |
( |
const std::string & |
smoother_type | ) |
|
|
inherited |
◆ setCoarseSolverType()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::setCoarseSolverType |
( |
const std::string & |
coarse_solver_type | ) |
|
|
inherited |
◆ setCoarseSolverMaxIterations()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::setCoarseSolverMaxIterations |
( |
int |
coarse_solver_max_iterations | ) |
|
|
inherited |
If the coarse level solver uses a maximum number of iterations parameter, the specified value is used. If the coarse level solver does not use such a stopping parameter, implementations are free to ignore this value.
◆ setCoarseSolverAbsoluteTolerance()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::setCoarseSolverAbsoluteTolerance |
( |
double |
coarse_solver_abs_residual_tol | ) |
|
|
inherited |
If the coarse level solver uses a absolute convergence tolerance parameter, the specified value is used. If the coarse level solver does not use such a stopping parameter, implementations are free to ignore this value.
◆ setCoarseSolverRelativeTolerance()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::setCoarseSolverRelativeTolerance |
( |
double |
coarse_solver_rel_residual_tol | ) |
|
|
inherited |
If the coarse level solver uses a relative convergence tolerance parameter, the specified value is used. If the coarse level solver does not use such a stopping parameter, implementations are free to ignore this value.
◆ setProlongationMethods()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::setProlongationMethods |
( |
const std::string & |
U_prolongation_method, |
|
|
const std::string & |
P_prolongation_method |
|
) |
| |
|
inherited |
◆ setRestrictionMethods()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::setRestrictionMethods |
( |
const std::string & |
U_restriction_method, |
|
|
const std::string & |
P_restriction_method |
|
) |
| |
|
inherited |
◆ setToZero()
◆ restrictResidual()
◆ prolongError()
◆ prolongErrorAndCorrect()
◆ solveCoarsestLevel()
◆ computeResidual()
◆ initializeOperatorState()
Note that although the vector arguments given to other methods in this class may not necessarily be the same as those given to this method, there will be similarities, including:
- hierarchy configuration (hierarchy pointer and level range)
- number, type and alignment of vector component data
- ghost cell width of data in the solution (or solution-like) vector
- Parameters
-
| solution | solution vector u |
| rhs | right hand side vector f |
Reimplemented from IBTK::FACPreconditionerStrategy.
◆ deallocateOperatorState()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::deallocateOperatorState |
( |
| ) |
|
|
overridevirtualinherited |
◆ xeqScheduleProlongation()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::xeqScheduleProlongation |
( |
const std::pair< int, int > & |
dst_idxs, |
|
|
const std::pair< int, int > & |
src_idxs, |
|
|
int |
dst_ln |
|
) |
| |
|
protectedinherited |
◆ xeqScheduleRestriction()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::xeqScheduleRestriction |
( |
const std::pair< int, int > & |
dst_idxs, |
|
|
const std::pair< int, int > & |
src_idxs, |
|
|
int |
dst_ln |
|
) |
| |
|
protectedinherited |
◆ xeqScheduleGhostFillNoCoarse()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::xeqScheduleGhostFillNoCoarse |
( |
const std::pair< int, int > & |
dst_idxs, |
|
|
int |
dst_ln |
|
) |
| |
|
protectedinherited |
◆ xeqScheduleDataSynch()
| void IBAMR::StaggeredStokesFACPreconditionerStrategy::xeqScheduleDataSynch |
( |
int |
dst_idx, |
|
|
int |
dst_ln |
|
) |
| |
|
protectedinherited |
◆ getName()
| const std::string& IBTK::FACPreconditionerStrategy::getName |
( |
| ) |
const |
|
inherited |
◆ getIsInitialized()
| virtual bool IBTK::FACPreconditionerStrategy::getIsInitialized |
( |
| ) |
const |
|
virtualinherited |
◆ setFACPreconditioner()
◆ setHomogeneousBc()
| virtual void IBTK::FACPreconditionerStrategy::setHomogeneousBc |
( |
bool |
homogeneous_bc | ) |
|
|
virtualinherited |
◆ getHomogeneousBc()
| virtual bool IBTK::FACPreconditionerStrategy::getHomogeneousBc |
( |
| ) |
const |
|
virtualinherited |
◆ setSolutionTime()
| virtual void IBTK::FACPreconditionerStrategy::setSolutionTime |
( |
double |
solution_time | ) |
|
|
virtualinherited |
◆ getSolutionTime()
| virtual double IBTK::FACPreconditionerStrategy::getSolutionTime |
( |
| ) |
const |
|
virtualinherited |
◆ setTimeInterval()
| virtual void IBTK::FACPreconditionerStrategy::setTimeInterval |
( |
double |
current_time, |
|
|
double |
new_time |
|
) |
| |
|
virtualinherited |
◆ getTimeInterval()
| virtual std::pair<double, double> IBTK::FACPreconditionerStrategy::getTimeInterval |
( |
| ) |
const |
|
virtualinherited |
◆ getDt()
| virtual double IBTK::FACPreconditionerStrategy::getDt |
( |
| ) |
const |
|
virtualinherited |
◆ allocateScratchData()
| virtual void IBTK::FACPreconditionerStrategy::allocateScratchData |
( |
| ) |
|
|
virtualinherited |
◆ deallocateScratchData()
| virtual void IBTK::FACPreconditionerStrategy::deallocateScratchData |
( |
| ) |
|
|
virtualinherited |
◆ printClassData()
| virtual void IBTK::FACPreconditionerStrategy::printClassData |
( |
std::ostream & |
stream | ) |
|
|
virtualinherited |
◆ getLevelSAMRAIVectorReal()
|
|
protectedvirtualinherited |
◆ d_box_op
| std::vector<Mat> IBAMR::StaggeredStokesBoxRelaxationFACOperator::d_box_op |
|
private |
◆ d_box_e
| std::vector<Vec> IBAMR::StaggeredStokesBoxRelaxationFACOperator::d_box_e |
|
private |
◆ d_box_r
| std::vector<Vec> IBAMR::StaggeredStokesBoxRelaxationFACOperator::d_box_r |
|
private |
◆ d_box_ksp
| std::vector<KSP> IBAMR::StaggeredStokesBoxRelaxationFACOperator::d_box_ksp |
|
private |
◆ d_patch_side_bc_box_overlap
| std::vector<std::vector<std::array<SAMRAI::hier::BoxList<NDIM>, NDIM> > > IBAMR::StaggeredStokesBoxRelaxationFACOperator::d_patch_side_bc_box_overlap |
|
private |
◆ d_patch_cell_bc_box_overlap
| std::vector<std::vector<SAMRAI::hier::BoxList<NDIM> > > IBAMR::StaggeredStokesBoxRelaxationFACOperator::d_patch_cell_bc_box_overlap |
|
private |
◆ 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_gcw
| const int IBAMR::StaggeredStokesFACPreconditionerStrategy::d_gcw |
|
protectedinherited |
◆ d_solution
◆ d_rhs
◆ d_hierarchy
◆ d_coarsest_ln
◆ d_finest_ln
◆ d_level_bdry_fill_ops
◆ d_level_math_ops
◆ d_in_initialize_operator_state
| bool IBAMR::StaggeredStokesFACPreconditionerStrategy::d_in_initialize_operator_state = false |
|
protectedinherited |
◆ d_coarsest_reset_ln
◆ d_finest_reset_ln
◆ d_smoother_type
| std::string IBAMR::StaggeredStokesFACPreconditionerStrategy::d_smoother_type = "ADDITIVE" |
|
protectedinherited |
◆ d_U_prolongation_method
| std::string IBAMR::StaggeredStokesFACPreconditionerStrategy::d_U_prolongation_method = "CONSTANT_REFINE" |
|
protectedinherited |
◆ d_P_prolongation_method
| std::string IBAMR::StaggeredStokesFACPreconditionerStrategy::d_P_prolongation_method = "LINEAR_REFINE" |
|
protectedinherited |
◆ d_U_restriction_method
| std::string IBAMR::StaggeredStokesFACPreconditionerStrategy::d_U_restriction_method = "CONSERVATIVE_COARSEN" |
|
protectedinherited |
◆ d_P_restriction_method
| std::string IBAMR::StaggeredStokesFACPreconditionerStrategy::d_P_restriction_method = "CONSERVATIVE_COARSEN" |
|
protectedinherited |
◆ d_coarse_solver_init_subclass
| bool IBAMR::StaggeredStokesFACPreconditionerStrategy::d_coarse_solver_init_subclass = false |
|
protectedinherited |
◆ d_coarse_solver_type
| std::string IBAMR::StaggeredStokesFACPreconditionerStrategy::d_coarse_solver_type = "LEVEL_SMOOTHER" |
|
protectedinherited |
◆ d_coarse_solver_default_options_prefix
| std::string IBAMR::StaggeredStokesFACPreconditionerStrategy::d_coarse_solver_default_options_prefix |
|
protectedinherited |
◆ d_coarse_solver_rel_residual_tol
| double IBAMR::StaggeredStokesFACPreconditionerStrategy::d_coarse_solver_rel_residual_tol = 1.0e-5 |
|
protectedinherited |
◆ d_coarse_solver_abs_residual_tol
| double IBAMR::StaggeredStokesFACPreconditionerStrategy::d_coarse_solver_abs_residual_tol = 1.0e-50 |
|
protectedinherited |
◆ d_coarse_solver_max_iterations
| int IBAMR::StaggeredStokesFACPreconditionerStrategy::d_coarse_solver_max_iterations = 10 |
|
protectedinherited |
◆ d_coarse_solver
◆ d_coarse_solver_db
◆ d_has_velocity_nullspace
| bool IBAMR::StaggeredStokesFACPreconditionerStrategy::d_has_velocity_nullspace = false |
|
protectedinherited |
◆ d_has_pressure_nullspace
| bool IBAMR::StaggeredStokesFACPreconditionerStrategy::d_has_pressure_nullspace = false |
|
protectedinherited |
◆ d_context
◆ d_side_scratch_idx
◆ d_cell_scratch_idx
◆ d_U_bc_op
◆ d_P_bc_op
◆ d_U_cf_bdry_op
◆ d_P_cf_bdry_op
◆ d_U_op_stencil_fill_pattern
◆ d_P_op_stencil_fill_pattern
◆ d_U_synch_fill_pattern
◆ d_U_P_bc_op
◆ d_U_prolongation_refine_operator
◆ d_P_prolongation_refine_operator
◆ d_prolongation_refine_patch_strategy
◆ d_prolongation_refine_algorithm
◆ d_prolongation_refine_schedules
◆ d_U_restriction_coarsen_operator
◆ d_P_restriction_coarsen_operator
◆ d_restriction_coarsen_algorithm
◆ d_restriction_coarsen_schedules
◆ d_ghostfill_nocoarse_refine_algorithm
◆ d_ghostfill_nocoarse_refine_schedules
◆ d_synch_refine_algorithm
◆ d_synch_refine_schedules
◆ d_preconditioner
◆ d_object_name
| const std::string IBTK::FACPreconditionerStrategy::d_object_name |
|
protectedinherited |
◆ d_is_initialized
| bool IBTK::FACPreconditionerStrategy::d_is_initialized = false |
|
protectedinherited |
◆ d_homogeneous_bc
| bool IBTK::FACPreconditionerStrategy::d_homogeneous_bc |
|
protectedinherited |
◆ d_solution_time
| double IBTK::FACPreconditionerStrategy::d_solution_time = std::numeric_limits<double>::quiet_NaN() |
|
protectedinherited |
◆ d_current_time
| double IBTK::FACPreconditionerStrategy::d_current_time = std::numeric_limits<double>::quiet_NaN() |
|
protectedinherited |
◆ d_new_time
| double IBTK::FACPreconditionerStrategy::d_new_time = std::numeric_limits<double>::quiet_NaN() |
|
protectedinherited |
The documentation for this class was generated from the following file: