#include <BlockPCGSolver.h>
Collaboration diagram for BlockPCGSolver:
Public Member Functions | |
BlockPCGSolver (const Epetra_Comm &_Com, const Epetra_Operator *KK, double _tol=0.0, int _iMax=0, int _verb=0) | |
BlockPCGSolver (const Epetra_Comm &_Com, const Epetra_Operator *KK, Epetra_Operator *PP, double _tol=0.0, int _iMax=0, int _verb=0) | |
~BlockPCGSolver () | |
const char * | Label () const |
bool | UseTranspose () const |
int | SetUseTranspose (bool UseTranspose) |
bool | HasNormInf () const |
double | NormInf () const |
int | Apply (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const |
int | ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const |
const Epetra_Comm & | Comm () const |
const Epetra_Map & | OperatorDomainMap () const |
const Epetra_Map & | OperatorRangeMap () const |
int | Solve (const Epetra_MultiVector &X, Epetra_MultiVector &Y, int blkSize) const |
const Epetra_Operator * | getPreconditioner () const |
void | setPreconditioner (Epetra_Operator *PP) |
void | setAMGPreconditioner (int smoother=1, int degree=2, int numDofs=1, const Epetra_MultiVector *Z=0) |
int | getAMG_NLevels () const |
void | setIterMax (int _iMax) |
int | getMaxIter () const |
double | getAvgIter () const |
int | getMinIter () const |
Private Member Functions | |
BlockPCGSolver (const BlockPCGSolver &ref) | |
BlockPCGSolver & | operator= (const BlockPCGSolver &ref) |
Private Attributes | |
const Epetra_Comm & | MyComm |
const Epetra_BLAS | callBLAS |
const Epetra_LAPACK | callLAPACK |
const FortranRoutines | callFortran |
const Epetra_Operator * | K |
Epetra_Operator * | Prec |
bool | mlPrec |
ML * | ml_handle |
ML_Aggregate * | ml_agg |
AztecOO * | vectorPCG |
double | tolCG |
int | iterMax |
int | verbose |
int | AMG_NLevels |
double * | workSpace |
int | numSolve |
int | maxIter |
int | sumIter |
int | minIter |
Definition at line 51 of file BlockPCGSolver.h.
BlockPCGSolver::BlockPCGSolver | ( | const BlockPCGSolver & | ref | ) | [private] |
BlockPCGSolver::BlockPCGSolver | ( | const Epetra_Comm & | _Com, | |
const Epetra_Operator * | KK, | |||
double | _tol = 0.0 , |
|||
int | _iMax = 0 , |
|||
int | _verb = 0 | |||
) |
Definition at line 32 of file BlockPCGSolver.cpp.
BlockPCGSolver::BlockPCGSolver | ( | const Epetra_Comm & | _Com, | |
const Epetra_Operator * | KK, | |||
Epetra_Operator * | PP, | |||
double | _tol = 0.0 , |
|||
int | _iMax = 0 , |
|||
int | _verb = 0 | |||
) |
Definition at line 58 of file BlockPCGSolver.cpp.
BlockPCGSolver::~BlockPCGSolver | ( | ) |
int BlockPCGSolver::Apply | ( | const Epetra_MultiVector & | X, | |
Epetra_MultiVector & | Y | |||
) | const |
int BlockPCGSolver::ApplyInverse | ( | const Epetra_MultiVector & | X, | |
Epetra_MultiVector & | Y | |||
) | const |
const Epetra_Comm& BlockPCGSolver::Comm | ( | ) | const [inline] |
int BlockPCGSolver::getAMG_NLevels | ( | ) | const [inline] |
double BlockPCGSolver::getAvgIter | ( | ) | const [inline] |
int BlockPCGSolver::getMaxIter | ( | ) | const [inline] |
int BlockPCGSolver::getMinIter | ( | ) | const [inline] |
const Epetra_Operator* BlockPCGSolver::getPreconditioner | ( | ) | const [inline] |
bool BlockPCGSolver::HasNormInf | ( | ) | const [inline] |
Definition at line 103 of file BlockPCGSolver.h.
const char* BlockPCGSolver::Label | ( | ) | const [inline] |
Definition at line 98 of file BlockPCGSolver.h.
double BlockPCGSolver::NormInf | ( | ) | const [inline] |
Definition at line 104 of file BlockPCGSolver.h.
BlockPCGSolver& BlockPCGSolver::operator= | ( | const BlockPCGSolver & | ref | ) | [private] |
const Epetra_Map& BlockPCGSolver::OperatorDomainMap | ( | ) | const [inline] |
const Epetra_Map& BlockPCGSolver::OperatorRangeMap | ( | ) | const [inline] |
void BlockPCGSolver::setAMGPreconditioner | ( | int | smoother = 1 , |
|
int | degree = 2 , |
|||
int | numDofs = 1 , |
|||
const Epetra_MultiVector * | Z = 0 | |||
) |
Definition at line 108 of file BlockPCGSolver.cpp.
References AMG_NLevels, K, ml_agg, ml_handle, mlPrec, MyComm, Prec, and verbose.
void BlockPCGSolver::setIterMax | ( | int | _iMax | ) | [inline] |
void BlockPCGSolver::setPreconditioner | ( | Epetra_Operator * | PP | ) |
Definition at line 175 of file BlockPCGSolver.cpp.
Referenced by QuadraticEigsolvOperators::getHSolver(), and LinearEigsolvOperators::getHSolver().
int BlockPCGSolver::SetUseTranspose | ( | bool | UseTranspose | ) | [inline] |
Definition at line 101 of file BlockPCGSolver.h.
int BlockPCGSolver::Solve | ( | const Epetra_MultiVector & | X, | |
Epetra_MultiVector & | Y, | |||
int | blkSize | |||
) | const |
Definition at line 275 of file BlockPCGSolver.cpp.
References callBLAS, callFortran, callLAPACK, iterMax, K, FortranRoutines::LAENV(), maxIter, minIter, MyComm, numSolve, Prec, FortranRoutines::SCAL_INCX(), sumIter, FortranRoutines::SYEV(), tolCG, verbose, and workSpace.
Referenced by ApplyInverse().
Here is the call graph for this function:
bool BlockPCGSolver::UseTranspose | ( | ) | const [inline] |
Definition at line 100 of file BlockPCGSolver.h.
int BlockPCGSolver::AMG_NLevels [private] |
Definition at line 74 of file BlockPCGSolver.h.
Referenced by getAMG_NLevels(), and setAMGPreconditioner().
const Epetra_BLAS BlockPCGSolver::callBLAS [private] |
const FortranRoutines BlockPCGSolver::callFortran [private] |
const Epetra_LAPACK BlockPCGSolver::callLAPACK [private] |
int BlockPCGSolver::iterMax [private] |
Definition at line 70 of file BlockPCGSolver.h.
Referenced by ApplyInverse(), setIterMax(), and Solve().
const Epetra_Operator* BlockPCGSolver::K [private] |
Definition at line 60 of file BlockPCGSolver.h.
Referenced by Apply(), ApplyInverse(), OperatorDomainMap(), OperatorRangeMap(), setAMGPreconditioner(), and Solve().
int BlockPCGSolver::maxIter [mutable, private] |
Definition at line 79 of file BlockPCGSolver.h.
Referenced by ApplyInverse(), getMaxIter(), and Solve().
int BlockPCGSolver::minIter [mutable, private] |
Definition at line 81 of file BlockPCGSolver.h.
Referenced by ApplyInverse(), getMinIter(), and Solve().
ML_Aggregate* BlockPCGSolver::ml_agg [private] |
Definition at line 65 of file BlockPCGSolver.h.
Referenced by setAMGPreconditioner(), and ~BlockPCGSolver().
ML* BlockPCGSolver::ml_handle [private] |
Definition at line 64 of file BlockPCGSolver.h.
Referenced by setAMGPreconditioner(), and ~BlockPCGSolver().
bool BlockPCGSolver::mlPrec [private] |
Definition at line 63 of file BlockPCGSolver.h.
Referenced by setAMGPreconditioner(), setPreconditioner(), and ~BlockPCGSolver().
const Epetra_Comm& BlockPCGSolver::MyComm [private] |
Definition at line 55 of file BlockPCGSolver.h.
Referenced by Comm(), setAMGPreconditioner(), and Solve().
int BlockPCGSolver::numSolve [mutable, private] |
Definition at line 78 of file BlockPCGSolver.h.
Referenced by ApplyInverse(), getAvgIter(), and Solve().
Epetra_Operator* BlockPCGSolver::Prec [private] |
Definition at line 61 of file BlockPCGSolver.h.
Referenced by ApplyInverse(), getPreconditioner(), setAMGPreconditioner(), setPreconditioner(), Solve(), and ~BlockPCGSolver().
int BlockPCGSolver::sumIter [mutable, private] |
Definition at line 80 of file BlockPCGSolver.h.
Referenced by ApplyInverse(), getAvgIter(), and Solve().
double BlockPCGSolver::tolCG [private] |
AztecOO* BlockPCGSolver::vectorPCG [mutable, private] |
Definition at line 67 of file BlockPCGSolver.h.
Referenced by ApplyInverse(), and ~BlockPCGSolver().
int BlockPCGSolver::verbose [private] |
Definition at line 72 of file BlockPCGSolver.h.
Referenced by ApplyInverse(), setAMGPreconditioner(), and Solve().
double* BlockPCGSolver::workSpace [mutable, private] |