19 #ifndef BLOCK_PCG_SOLVER_H
20 #define BLOCK_PCG_SOLVER_H
22 #include "Epetra_ConfigDefs.h"
26 #include "Epetra_BLAS.h"
27 #include "Epetra_Comm.h"
28 #include "Epetra_LAPACK.h"
29 #include "Epetra_Map.h"
30 #include "Epetra_MultiVector.h"
31 #include "Epetra_Operator.h"
32 #include "Epetra_RowMatrix.h"
34 #include "FortranRoutines.h"
44 const FortranRoutines callFortran;
49 mutable AztecOO *vectorPCG;
56 mutable double *workSpace;
57 mutable int lWorkSpace;
65 BlockPCGSolver(
const BlockPCGSolver &ref);
66 BlockPCGSolver& operator=(
const BlockPCGSolver &ref);
71 double _tol = 0.0,
int _iMax = 0,
int _verb = 0);
75 double _tol = 0.0,
int _iMax = 0,
int _verb = 0);
79 char *
Label()
const {
return "Epetra_Operator for Block PCG solver"; };
85 double NormInf()
const {
return (-1.0); };
101 void setIterMax(
int _iMax) { iterMax = (_iMax > 0) ? _iMax : 0; };
103 int getMaxIter()
const {
return maxIter; };
104 double getAvgIter()
const {
return sumIter/((double) numSolve); };
105 int getMinIter()
const {
return minIter; };
virtual int SetUseTranspose(bool UseTranspose)=0
virtual int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const =0
virtual const Epetra_Map & OperatorDomainMap() const =0
virtual const char * Label() const =0
virtual int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const =0
virtual const Epetra_Map & OperatorRangeMap() const =0
virtual const Epetra_Comm & Comm() const =0
virtual bool UseTranspose() const =0
virtual bool HasNormInf() const =0
virtual double NormInf() const =0