PoissonFACPreconditioner (const std::string &object_name , SAMRAI::tbox::Pointer < PoissonFACPreconditionerStrategy > fac_strategy , SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > input_db , std::string default_options_prefix )
~PoissonFACPreconditioner ()=default
void setPoissonSpecifications (const SAMRAI::solv::PoissonSpecifications &poisson_spec ) override
Set the SAMRAI::solv::PoissonSpecifications object used to specify the coefficients for the scalar-valued or vector-valued Laplace operator.
void setPhysicalBcCoef (SAMRAI::solv::RobinBcCoefStrategy < NDIM > *bc_coef ) override
Set the SAMRAI::solv::RobinBcCoefStrategy object used to specify physical boundary conditions.
void setPhysicalBcCoefs (const std::vector < SAMRAI::solv::RobinBcCoefStrategy < NDIM > * > &bc_coefs ) override
Set the SAMRAI::solv::RobinBcCoefStrategy objects used to specify physical boundary conditions.
FACPreconditioner (std::string object_name, SAMRAI::tbox::Pointer < FACPreconditionerStrategy > fac_strategy, SAMRAI::tbox::Pointer < SAMRAI::tbox::Database > input_db, const std::string &default_options_prefix)
~FACPreconditioner ()
void setHomogeneousBc (bool homogeneous_bc ) override
Set whether the solver should use homogeneous boundary conditions.
void setSolutionTime (double solution_time ) override
Set the time at which the solution is to be evaluated.
void setTimeInterval (double current_time , double new_time ) override
Set the current time interval.
bool solveSystem (SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &x , SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &b ) override
Solve the linear system of equations for .
void initializeSolverState (const SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &x , const SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &b ) override
Compute hierarchy dependent data required for solving .
void deallocateSolverState () override
Remove all hierarchy dependent data allocated by initializeSolverState() .
void setInitialGuessNonzero (bool initial_guess_nonzero =true ) override
Set whether the initial guess is non-zero.
void setMaxIterations (int max_iterations ) override
Set the maximum number of iterations to use per solve.
void setMGCycleType (MGCycleType cycle_type )
Set the multigrid algorithm cycle type.
MGCycleType getMGCycleType () const
Get the multigrid algorithm cycle type.
void setNumPreSmoothingSweeps (int num_pre_sweeps )
Set the number of pre-smoothing sweeps to employ.
int getNumPreSmoothingSweeps () const
Get the number of pre-smoothing sweeps employed by the preconditioner.
void setNumPostSmoothingSweeps (int num_post_sweeps )
Set the number of post-smoothing sweeps to employ.
int getNumPostSmoothingSweeps () const
Get the number of post-smoothing sweeps employed by the preconditioner.
SAMRAI::tbox::Pointer < FACPreconditionerStrategy > getFACPreconditionerStrategy () const
Get the FAC preconditioner strategy objects employed by the preconditioner.
LinearSolver ()
Constructor.
virtual ~LinearSolver ()
Empty virtual destructor.
virtual void setNullSpace (bool nullspace_contains_constant_vec , const std::vector < SAMRAI::tbox::Pointer < SAMRAI::solv::SAMRAIVectorReal < NDIM , double > > > &nullspace_basis_vecs =std::vector < SAMRAI::tbox::Pointer < SAMRAI::solv::SAMRAIVectorReal < NDIM , double > > >())
Set the nullspace of the linear system.
virtual bool getNullSpaceContainsConstantVector () const
Get whether the nullspace of the linear system contains th constant vector.
virtual const std::vector < SAMRAI::tbox::Pointer < SAMRAI::solv::SAMRAIVectorReal < NDIM , double > > > & getNullSpaceBasisVectors () const
Get the basis vectors for the nullspace of the linear system.
virtual bool getInitialGuessNonzero () const
Get whether the initial guess is non-zero.
virtual void printClassData (std::ostream &stream ) override
Print class data to stream.
GeneralSolver ()=default
Constructor.
virtual ~GeneralSolver ()=default
Empty virtual destructor.
const std::string & getName () const
Return the object name.
virtual bool getIsInitialized () const
Return whether the operator is initialized.
virtual bool getHomogeneousBc () const
Return whether the solver is using homogeneous boundary conditions.
virtual double getSolutionTime () const
Get the time at which the solution is being evaluated.
virtual std::pair < double , double > getTimeInterval () const
Get the current time interval.
virtual double getDt () const
Get the current time step size.
virtual void setHierarchyMathOps (SAMRAI::tbox::Pointer < HierarchyMathOps > hier_math_ops )
Set the HierarchyMathOps object used by the solver.
virtual SAMRAI::tbox::Pointer < HierarchyMathOps > getHierarchyMathOps () const
Get the HierarchyMathOps object used by the solver.
virtual int getMaxIterations () const
Get the maximum number of nonlinear iterations to use per solve.
virtual void setAbsoluteTolerance (double abs_residual_tol )
Set the absolute residual tolerance for convergence.
virtual double getAbsoluteTolerance () const
Get the absolute residual tolerance for convergence.
virtual void setRelativeTolerance (double rel_residual_tol )
Set the relative residual tolerance for convergence.
virtual double getRelativeTolerance () const
Get the relative residual tolerance for convergence.
virtual int getNumIterations () const
Return the iteration count from the most recent solve.
virtual double getResidualNorm () const
Return the residual norm from the most recent iteration.
virtual void setLoggingEnabled (bool enable_logging =true )
Enable or disable logging.
virtual bool getLoggingEnabled () const
Determine whether logging is enabled or disabled.
PoissonSolver ()=default
Default constructor.
~PoissonSolver ()=default
Default destructor.
void FACVCycleNoPreSmoothing (SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &u , SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &f , int level_num )
void muCycle (SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &u , SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &f , SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &r , int level_num , int mu )
void FCycle (SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &u , SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &f , SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &r , int level_num )
void FMGCycle (SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &u , SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &f , SAMRAI::solv::SAMRAIVectorReal < NDIM , double > &r , int level_num , int mu )
void init (const std::string &object_name , bool homogeneous_bc )
void initSpecialized (const std::string &object_name , bool homogeneous_bc ) override
SAMRAI::tbox::Pointer < FACPreconditionerStrategy > d_fac_strategy
SAMRAI::tbox::Pointer < SAMRAI::hier::PatchHierarchy < NDIM > > d_hierarchy
int d_coarsest_ln = 0
int d_finest_ln = 0
MGCycleType d_cycle_type = V_CYCLE
int d_num_pre_sweeps = 0
int d_num_post_sweeps = 2
bool d_initial_guess_nonzero = true
bool d_nullspace_contains_constant_vec = false
std::vector < SAMRAI::tbox::Pointer < SAMRAI::solv::SAMRAIVectorReal < NDIM, double > > > d_nullspace_basis_vecs
std::string d_object_name = "unitialized"
bool d_is_initialized = false
bool d_homogeneous_bc = 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()
double d_rel_residual_tol = 0.0
double d_abs_residual_tol = 0.0
int d_max_iterations = 100
int d_current_iterations = 0
double d_current_residual_norm = std::numeric_limits <double>::quiet_NaN()
SAMRAI::tbox::Pointer < HierarchyMathOps > d_hier_math_ops
bool d_hier_math_ops_external = false
bool d_enable_logging = false
SAMRAI::solv::PoissonSpecifications d_poisson_spec = SAMRAI::solv::PoissonSpecifications ("")
std::unique_ptr < SAMRAI::solv::RobinBcCoefStrategy < NDIM > > d_default_bc_coef
std::vector < SAMRAI::solv::RobinBcCoefStrategy < NDIM > * > d_bc_coefs
Class PoissonFACPreconditioner is a FACPreconditioner that has been specialized for Poisson problems.