43#ifndef IFPACK_EUCLID_H
44#define IFPACK_EUCLID_H
46#if defined(Ifpack_SHOW_DEPRECATED_WARNINGS)
48#warning "The Ifpack package is deprecated"
52#include "Ifpack_ConfigDefs.h"
55#include "Ifpack_Condest.h"
57#include "Epetra_CompObject.h"
58#include "Epetra_MultiVector.h"
59#include "Epetra_Vector.h"
60#include "Epetra_CrsGraph.h"
61#include "Epetra_CrsMatrix.h"
62#include "Epetra_BlockMap.h"
63#include "Epetra_Map.h"
64#include "Epetra_Object.h"
65#include "Epetra_Comm.h"
66#include "Epetra_CrsMatrix.h"
67#include "Epetra_Time.h"
68#include "Teuchos_RefCountPtr.hpp"
69#include "Teuchos_ParameterList.hpp"
70#include "Epetra_MpiComm.h"
74#include "TimeLog_dh.h"
92 friend std::ostream& operator << (std::ostream& os,
const Ifpack_Euclid& A);
100 ~Ifpack_Euclid(){ Destroy();}
109 bool IsInitialized()
const{
return(IsInitialized_);}
117 bool IsComputed()
const{
return(IsComputed_);}
133 int SetParameters(Teuchos::ParameterList& parameterlist);
142 int SetParameter(std::string name,
int Value);
151 int SetParameter(std::string name,
double Value);
154 int SetUseTranspose(
bool UseTranspose_in) {UseTranspose_ = UseTranspose_in;
return(0);};
192 double Condest(
const Ifpack_CondestType CT = Ifpack_Cheap,
const int MaxIters = 1550,
196 double Condest()
const{
return(Condest_);}
202 const char* Label()
const {
return(Label_);}
205 void SetLabel(
const char* Label_in){ strcpy(Label_,Label_in);}
208 const Epetra_Map &OperatorDomainMap()
const{
return A_->DomainMap();}
211 const Epetra_Map &OperatorRangeMap()
const{
return A_->RangeMap();}
214 double NormInf()
const {
return(0.0);};
217 bool HasNormInf()
const {
return(
false);};
220 bool UseTranspose()
const {
return(UseTranspose_);};
223 const Epetra_Comm & Comm()
const{
return(A_->Comm());};
229 virtual int NumInitialize()
const{
return(NumInitialize_);}
232 virtual int NumCompute()
const{
return(NumCompute_);}
235 virtual int NumApplyInverse()
const{
return(NumApplyInverse_);}
238 virtual double InitializeTime()
const{
return(InitializeTime_);}
241 virtual double ComputeTime()
const{
return(ComputeTime_);}
244 virtual double ApplyInverseTime()
const{
return(ApplyInverseTime_);}
247 virtual double InitializeFlops()
const{
return(0.0);}
250 virtual double ComputeFlops()
const{
return(ComputeFlops_);}
253 virtual double ApplyInverseFlops()
const{
return(ApplyInverseFlops_);}
261 Ifpack_Euclid(
const Ifpack_Euclid& RHS) : Time_(RHS.Comm()){}
264 Ifpack_Euclid& operator=(
const Ifpack_Euclid& RHS){
return(*
this);}
270 MPI_Comm GetMpiComm()
const{
return (
dynamic_cast<const Epetra_MpiComm*
>(&A_->Comm()))->GetMpiComm();}
273 int CallEuclid(
double *x,
double *y)
const;
289 int NumGlobalRows()
const {
return(A_->NumGlobalRows());};
292 int NumGlobalCols()
const {
return(A_->NumGlobalCols());};
295 int NumMyRows()
const {
return(A_->NumMyRows());};
298 int NumMyCols()
const {
return(A_->NumMyCols());};
304 Teuchos::RefCountPtr<Epetra_CrsMatrix> A_;
306 Teuchos::ParameterList List_;
322 mutable int NumApplyInverse_;
324 double InitializeTime_;
328 mutable double ApplyInverseTime_;
330 double ComputeFlops_;
332 mutable double ApplyInverseFlops_;
354std::ostream& operator << (std::ostream& os,
const Ifpack_Euclid& A);
Ifpack_ScalingType enumerable type.