44 #ifndef SHYLU_PROBING_OPERATOR_H 45 #define SHYLU_PROBING_OPERATOR_H 47 #include <Epetra_Operator.h> 48 #include <Epetra_CrsMatrix.h> 49 #include <Epetra_LinearProblem.h> 50 #include <Amesos_BaseSolver.h> 51 #include <Epetra_MultiVector.h> 52 #include <Epetra_Map.h> 53 #include <Epetra_Comm.h> 54 #include <Teuchos_Time.hpp> 55 #include <Teuchos_RCP.hpp> 56 #include "shylu_symbolic.h" 58 #include "shylu_config.h" 69 Epetra_CrsMatrix *G, Epetra_CrsMatrix *R,
70 Epetra_LinearProblem *LP, Amesos_BaseSolver *solver,
71 Ifpack_Preconditioner *ifSolver, Epetra_CrsMatrix *C,
72 Epetra_Map *LocalDRowMap,
int nvectors);
74 int SetUseTranspose(
bool useTranspose);
76 int Apply(
const Epetra_MultiVector &X, Epetra_MultiVector &Y)
const;
78 int ApplyInverse(
const Epetra_MultiVector &X, Epetra_MultiVector &Y)
const;
80 double NormInf()
const;
82 const char *Label()
const;
84 bool UseTranspose()
const;
86 bool HasNormInf()
const;
88 const Epetra_Comm& Comm()
const;
90 const Epetra_Map& OperatorDomainMap()
const;
92 const Epetra_Map& OperatorRangeMap()
const;
94 void PrintTimingInfo();
96 void ResetTempVectors(
int nvectors);
100 Epetra_CrsMatrix *G_;
101 Epetra_CrsMatrix *R_;
102 Epetra_LinearProblem *LP_;
103 Amesos_BaseSolver *solver_;
104 Ifpack_Preconditioner *ifSolver_;
105 Epetra_CrsMatrix *C_;
106 Epetra_Map *localDRowMap_;
109 Teuchos::RCP<Epetra_MultiVector> temp;
110 Teuchos::RCP<Epetra_MultiVector> temp2;
111 Teuchos::RCP<Epetra_MultiVector> ltemp;
112 Teuchos::RCP<Epetra_MultiVector> localX;
117 Teuchos::RCP<Teuchos::Time> matvec_time_;
118 Teuchos::RCP<Teuchos::Time> localize_time_;
119 Teuchos::RCP<Teuchos::Time> trisolve_time_;
120 Teuchos::RCP<Teuchos::Time> dist_time_;
121 Teuchos::RCP<Teuchos::Time> matvec2_time_;
122 Teuchos::RCP<Teuchos::Time> apply_time_;
123 Teuchos::RCP<Teuchos::Time> update_time_;
127 #endif // SHYLU_PROBING_OPERATOR_H