47 #include "Epetra_Vector.h" 48 #include "Epetra_LinearProblem.h" 49 #include "Epetra_Map.h" 50 #include "Epetra_RowMatrix.h" 51 #ifdef HAVE_IFPACK_AZTECOO 59 Epetra_RowMatrix* Matrix)
61 double ConditionNumberEstimate = -1.0;
66 Epetra_Vector Ones(IFP.OperatorDomainMap());
69 Epetra_Vector OnesResult(IFP.OperatorRangeMap());
80 #ifdef HAVE_IFPACK_AZTECOO 82 Matrix = (Epetra_RowMatrix*)&(IFP.
Matrix());
84 Epetra_Vector LHS(IFP.OperatorDomainMap());
86 Epetra_Vector
RHS(IFP.OperatorRangeMap());
88 Epetra_LinearProblem Problem;
89 Problem.SetOperator(Matrix);
94 Solver.SetAztecOption(AZ_output,AZ_none);
95 Solver.SetAztecOption(AZ_solver,AZ_cg_condnum);
96 Solver.Iterate(MaxIters,Tol);
98 const double* status =
Solver.GetAztecStatus();
99 ConditionNumberEstimate = status[AZ_condnum];
104 #ifdef HAVE_IFPACK_AZTECOO 106 Matrix = (Epetra_RowMatrix*)&(IFP.
Matrix());
108 Epetra_Vector LHS(IFP.OperatorDomainMap());
110 Epetra_Vector
RHS(IFP.OperatorRangeMap());
112 Epetra_LinearProblem Problem;
113 Problem.SetOperator(Matrix);
114 Problem.SetLHS(&LHS);
115 Problem.SetRHS(&
RHS);
118 Solver.SetAztecOption(AZ_solver,AZ_gmres_condnum);
119 Solver.SetAztecOption(AZ_output,AZ_none);
123 Solver.SetAztecOption(AZ_kspace,MaxIters);
124 Solver.Iterate(MaxIters,Tol);
126 const double* status =
Solver.GetAztecStatus();
127 ConditionNumberEstimate = status[AZ_condnum];
131 return(ConditionNumberEstimate);
virtual const Epetra_RowMatrix & Matrix() const =0
Returns a pointer to the matrix to be preconditioned.
Ifpack_CondestType
Ifpack_CondestType: enum to define the type of condition number estimate.
Uses AztecOO's GMRES.
Ifpack_Preconditioner: basic class for preconditioning in Ifpack.
virtual int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const =0
Applies the preconditioner to vector X, returns the result in Y.
double Ifpack_Condest(const Ifpack_Preconditioner &IFP, const Ifpack_CondestType CT, const int MaxIters, const double Tol, Epetra_RowMatrix *Matrix)
#define IFPACK_CHK_ERR(ifpack_err)