00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef IFPACK_OVERLAPFACTOROBJECT_H
00031 #define IFPACK_OVERLAPFACTOROBJECT_H
00032
00034
00035 class Ifpack_OverlapFactorObject {
00036
00037 public:
00039
00040
00044 Ifpack_OverlapFactorObject(const Ifpack_OverlapGraph * OverlapGraph);
00045
00047
00052 Ifpack_OverlapFactorObject(const Epetra_RowMatrix * UserMatrix);
00053
00055 Ifpack_OverlapFactorObject(const Ifpack_OverlapFactorObject & Source);
00056
00058 virtual ~Ifpack_OverlapFactorObject();
00060
00062
00064
00070 virtual int InitValues(const Epetra_RowMatrix * UserMatrix);
00071
00073
00077 virtual int Factor();
00079
00081
00082
00084 bool Allocated() const {return(Allocated_);};
00085
00087 bool ValuesInitialized() const {return(ValuesInitialized_);};
00088
00090 bool Factored() const {return(Factored_);};
00092
00093 protected:
00094
00096
00097
00101 virtual int ProcessOverlapMatrix(const Epetra_RowMatrix &A)=0;
00102
00104
00106 virtual int DerivedFactor()=0;
00108
00109 void SetAllocated(bool Flag) {Allocated_ = Flag;};
00110 void SetFactored(bool Flag) {Factored_ = Flag;};
00111 void SetValuesInitialized(bool Flag) {ValuesInitialized_ = Flag;};
00112
00113 bool Factored_;
00114 bool Allocated_;
00115 bool ValuesInitialized_;
00116 Ifpack_OverlapGraph * OverlapGraph_;
00117 Epetra_RowMatrix * UserMatrix_;
00118 };
00119 #endif // IFPACK_OVERLAPFACTOROBJECT_H