43 #include "Ifpack_ConfigDefs.h" 44 #include "Ifpack_DiagPreconditioner.h" 45 #include "Epetra_BlockMap.h" 46 #include "Epetra_Map.h" 47 #include "Epetra_MultiVector.h" 48 #include "Epetra_Vector.h" 49 #include "Epetra_Comm.h" 54 const Epetra_Map& RangeMap,
55 const Epetra_Vector& diag) :
57 DomainMap_(DomainMap),
68 int Ifpack_DiagPreconditioner::Apply(
const Epetra_MultiVector& X, Epetra_MultiVector& Y)
const 76 if (X.NumVectors() != Y.NumVectors())
79 for (
int v = 0; v < X.NumVectors(); ++v)
80 for (
int i = 0; i < X.MyLength(); ++i)
81 Y[v][i] = diag_[i] * X[v][i];
Ifpack_DiagPreconditioner(const Epetra_Map &DomainMap, const Epetra_Map &RangeMap, const Epetra_Vector &diag)
ctor
~Ifpack_DiagPreconditioner()
dtor
int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const