19 #ifndef AMG_OPERATOR_H
20 #define AMG_OPERATOR_H
22 #include "Epetra_ConfigDefs.h"
25 #include "ml_include.h"
26 #include "ml_epetra_operator.h"
27 #include "ml_epetra_utils.h"
28 #include "ml_agg_METIS.h"
30 #include "Epetra_BLAS.h"
31 #include "Epetra_Comm.h"
32 #include "Epetra_LAPACK.h"
33 #include "Epetra_Map.h"
34 #include "Epetra_MultiVector.h"
35 #include "Epetra_Operator.h"
36 #include "Epetra_RowMatrix.h"
39 #include "singularCoarse.h"
69 double *ZcoarseTZcoarse;
73 void preProcess(
int maxCoarseSize);
74 void setCoarseSolver_Cycle(
int coarseSolver,
int cycle);
77 AMGOperator(
const AMGOperator &ref);
78 AMGOperator& operator=(
const AMGOperator &ref);
83 int nLevel = 10,
int smoother = 1,
int param = 2,
84 int coarseSolver = -1,
int cycle = 0,
88 int nLevel = 10,
int smoother = 1,
int *param = 0,
89 int coarseSolver = -1,
int cycle = 0,
92 int SetUseLeftProjection(
bool proj) { leftProjection = proj;
return 0; }
93 int SetUseRightProjection(
bool proj) { rightProjection = proj;
return 0; }
97 char *
Label()
const {
return "Epetra_Operator for AMG preconditioner"; };
103 double NormInf()
const {
return (-1.0); };
113 int getAMG_NLevels()
const {
return AMG_NLevels; };
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