43 #ifndef IFPACK_SPARSKIT_H 44 #define IFPACK_SPARSKIT_H 46 #include "Ifpack_ConfigDefs.h" 47 #ifdef HAVE_IFPACK_SPARSKIT 48 #include "Ifpack_CondestType.h" 50 #include "Ifpack_Preconditioner.h" 51 #include "Epetra_Vector.h" 52 #include "Epetra_RowMatrix.h" 55 class Epetra_MultiVector;
66 Ifpack_SPARSKIT(Epetra_RowMatrix* A);
69 virtual ~Ifpack_SPARSKIT();
79 int SetParameters(Teuchos::ParameterList& parameterlis);
81 int SetParameter(
const std::string Name,
const int Value)
85 int SetParameter(
const std::string Name,
const double Value)
90 const Epetra_RowMatrix& Matrix()
const 95 Epetra_RowMatrix& Matrix()
100 bool IsInitialized()
const 102 return(IsInitialized_);
112 bool IsComputed()
const 130 int ApplyInverse(
const Epetra_MultiVector& X, Epetra_MultiVector& Y)
const;
132 int Apply(
const Epetra_MultiVector& X, Epetra_MultiVector& Y)
const 146 double Condest(
const Ifpack_CondestType CT = Ifpack_Cheap,
147 const int MaxIters = 1550,
148 const double Tol = 1e-9,
149 Epetra_RowMatrix* Matrix = 0);
151 double Condest()
const 170 int SetUseTranspose(
bool UseTranspose) {UseTranspose_ = UseTranspose;
return(0);};
173 double NormInf()
const {
return(0.0);};
176 bool HasNormInf()
const {
return(
false);};
179 bool UseTranspose()
const {
return(UseTranspose_);};
182 const Epetra_Map & OperatorDomainMap()
const {
return(A_.OperatorDomainMap());};
185 const Epetra_Map & OperatorRangeMap()
const{
return(A_.OperatorRangeMap());};
188 const Epetra_Comm & Comm()
const{
return(Comm_);};
191 const char* Label()
const 193 return(Label_.c_str());
196 int SetLabel(
const char* Label)
203 virtual std::ostream& Print(std::ostream& os)
const;
206 virtual int NumInitialize()
const 208 return(NumInitialize_);
212 virtual int NumCompute()
const 218 virtual int NumApplyInverse()
const 220 return(NumApplyInverse_);
224 virtual double InitializeTime()
const 226 return(InitializeTime_);
230 virtual double ComputeTime()
const 232 return(ComputeTime_);
236 virtual double ApplyInverseTime()
const 238 return(ApplyInverseTime_);
242 virtual double InitializeFlops()
const 247 virtual double ComputeFlops()
const 252 virtual double ApplyInverseFlops()
const 258 Epetra_RowMatrix& A_;
259 const Epetra_Comm& Comm_;
270 std::vector<double> alu_;
271 std::vector<int> jlu_;
272 std::vector<int> ju_;
276 std::vector<int> iperm_;
288 mutable int NumApplyInverse_;
291 double InitializeTime_;
295 mutable double ApplyInverseTime_;
298 double ComputeFlops_;
300 mutable double ApplyInverseFlops_;
304 #endif // HAVE_IFPACK_SPARSKIT Ifpack_ScalingType enumerable type.
Ifpack_Preconditioner: basic class for preconditioning in Ifpack.