74 #ifndef STOKHOS_MLPRECOP_HPP 75 #define STOKHOS_MLPRECOP_HPP 79 #ifdef HAVE_STOKHOS_ML 81 #include "Epetra_ConfigDefs.h" 84 #include "Epetra_MpiComm.h" 86 #include "Epetra_SerialComm.h" 88 #include "Epetra_Map.h" 89 #include "Epetra_Vector.h" 90 #include "Epetra_CrsMatrix.h" 91 #include "Epetra_SerialDenseMatrix.h" 92 #include "Epetra_MultiVector.h" 93 #include "ml_include.h" 94 #include "ml_MultiLevelPreconditioner.h" 98 #include "Teuchos_Array.hpp" 109 class MLPrecOp:
public virtual Epetra_Operator {
114 MLPrecOp(
const Epetra_CrsMatrix& mean_op,
const Teuchos::Array<double>& norms,
const Epetra_Comm& Comm,
const Epetra_Map& DMap,
const Epetra_Map& RMap);
133 int SetUseTranspose (
bool ) {
return -1; }
144 int Apply(
const Epetra_MultiVector& X, Epetra_MultiVector& Y)
const {
return -1;};
156 int ApplyInverse(
const Epetra_MultiVector& X, Epetra_MultiVector& Y)
const;
166 double NormInf()
const {
return(0.0);};
172 const char * Label()
const{
return(Label_);};
175 bool UseTranspose()
const {
return(
false);};
178 bool HasNormInf()
const{
return(
false);};
181 const Epetra_Comm & Comm()
const{
return(Comm_);};
184 const Epetra_Map & OperatorDomainMap()
const {
return(DomainMap_);};
186 const Epetra_Map & OperatorRangeMap()
const {
return(RangeMap_);};
198 MLPrecOp& operator=(
const MLPrecOp&)
204 const Epetra_Comm& Comm_;
207 const Epetra_Map& DomainMap_;
209 const Epetra_Map& RangeMap_;
211 const Teuchos::Array<double>& norms_;
213 ML_Epetra::MultiLevelPreconditioner* MLPrec;
218 #endif // HAVE_STOKHOS_ML Top-level namespace for Stokhos classes and functions.