Block-Structured AMR Software Framework
amrex::MLCGSolver Class Reference

#include <AMReX_MLCGSolver.H>

Public Types

enum class  Type { BiCGStab , CG }
 

Public Member Functions

 MLCGSolver (MLMG *a_mlmg, MLLinOp &_lp, Type _typ=Type::BiCGStab)
 
 ~MLCGSolver ()
 
 MLCGSolver (const MLCGSolver &rhs)=delete
 
MLCGSolveroperator= (const MLCGSolver &rhs)=delete
 
void setSolver (Type _typ) noexcept
 
int solve (MultiFab &solnL, const MultiFab &rhsL, Real eps_rel, Real eps_abs)
 
int solve (Any &solnL, const Any &rhsL, Real eps_rel, Real eps_abs)
 
void setVerbose (int _verbose)
 
int getVerbose () const
 
void setMaxIter (int _maxiter)
 
int getMaxIter () const
 
void setNGhost (int _nghost)
 
int getNGhost ()
 
Real dotxy (const MultiFab &r, const MultiFab &z, bool local=false)
 
Real norm_inf (const MultiFab &res, bool local=false)
 
int solve_bicgstab (MultiFab &solnL, const MultiFab &rhsL, Real eps_rel, Real eps_abs)
 
int solve_cg (MultiFab &solnL, const MultiFab &rhsL, Real eps_rel, Real eps_abs)
 
int getNumIters () const noexcept
 

Private Attributes

MLMGmlmg
 
MLLinOpLp
 
Type solver_type
 
const int amrlev
 
const int mglev
 
int verbose = 0
 
int maxiter = 100
 
int nghost = 0
 
int iter = -1
 

Member Enumeration Documentation

◆ Type

Enumerator
BiCGStab 
CG 

Constructor & Destructor Documentation

◆ MLCGSolver() [1/2]

amrex::MLCGSolver::MLCGSolver ( MLMG a_mlmg,
MLLinOp _lp,
Type  _typ = Type::BiCGStab 
)

◆ ~MLCGSolver()

amrex::MLCGSolver::~MLCGSolver ( )

◆ MLCGSolver() [2/2]

amrex::MLCGSolver::MLCGSolver ( const MLCGSolver rhs)
delete

Member Function Documentation

◆ dotxy()

Real amrex::MLCGSolver::dotxy ( const MultiFab r,
const MultiFab z,
bool  local = false 
)

◆ getMaxIter()

int amrex::MLCGSolver::getMaxIter ( ) const
inline

◆ getNGhost()

int amrex::MLCGSolver::getNGhost ( )
inline

◆ getNumIters()

int amrex::MLCGSolver::getNumIters ( ) const
inlinenoexcept

◆ getVerbose()

int amrex::MLCGSolver::getVerbose ( ) const
inline

◆ norm_inf()

Real amrex::MLCGSolver::norm_inf ( const MultiFab res,
bool  local = false 
)

◆ operator=()

MLCGSolver& amrex::MLCGSolver::operator= ( const MLCGSolver rhs)
delete

◆ setMaxIter()

void amrex::MLCGSolver::setMaxIter ( int  _maxiter)
inline

◆ setNGhost()

void amrex::MLCGSolver::setNGhost ( int  _nghost)
inline

◆ setSolver()

void amrex::MLCGSolver::setSolver ( Type  _typ)
inlinenoexcept

◆ setVerbose()

void amrex::MLCGSolver::setVerbose ( int  _verbose)
inline

◆ solve() [1/2]

int amrex::MLCGSolver::solve ( Any solnL,
const Any rhsL,
Real  eps_rel,
Real  eps_abs 
)

◆ solve() [2/2]

int amrex::MLCGSolver::solve ( MultiFab solnL,
const MultiFab rhsL,
Real  eps_rel,
Real  eps_abs 
)

solve the system, Lp(solnL)=rhsL to relative err, tolerance RETURNS AN INT!!!! indicating success or failure. 0 means success 1 means failed for loss of precision 2 means iterations exceeded

◆ solve_bicgstab()

int amrex::MLCGSolver::solve_bicgstab ( MultiFab solnL,
const MultiFab rhsL,
Real  eps_rel,
Real  eps_abs 
)

◆ solve_cg()

int amrex::MLCGSolver::solve_cg ( MultiFab solnL,
const MultiFab rhsL,
Real  eps_rel,
Real  eps_abs 
)

Member Data Documentation

◆ amrlev

const int amrex::MLCGSolver::amrlev
private

◆ iter

int amrex::MLCGSolver::iter = -1
private

◆ Lp

MLLinOp& amrex::MLCGSolver::Lp
private

◆ maxiter

int amrex::MLCGSolver::maxiter = 100
private

◆ mglev

const int amrex::MLCGSolver::mglev
private

◆ mlmg

MLMG* amrex::MLCGSolver::mlmg
private

◆ nghost

int amrex::MLCGSolver::nghost = 0
private

◆ solver_type

Type amrex::MLCGSolver::solver_type
private

◆ verbose

int amrex::MLCGSolver::verbose = 0
private

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