Ifpack_DropFilter.h

Go to the documentation of this file.
00001 #ifndef IFPACK_DROPFILTER_H
00002 #define IFPACK_DROPFILTER_H
00003 
00004 #include "Ifpack_ConfigDefs.h"
00005 #include "Epetra_RowMatrix.h"
00006 class Epetra_Comm;
00007 class Epetra_Map;
00008 class Epetra_MultiVector;
00009 class Epetra_Import;
00010 class Epetra_BlockMap;
00011 
00013 
00037 class Ifpack_DropFilter : public virtual Epetra_RowMatrix {
00038 
00039 public:
00041   Ifpack_DropFilter(Epetra_RowMatrix* Matrix,
00042         double DropTop);
00043 
00045   virtual ~Ifpack_DropFilter();
00046 
00048   virtual inline int NumMyRowEntries(int MyRow, int & NumEntries) const
00049   {
00050     NumEntries = NumEntries_[MyRow];
00051     return(0);
00052   }
00053 
00055   virtual int MaxNumEntries() const
00056   {
00057     return(MaxNumEntries_);
00058   }
00059 
00060   virtual int ExtractMyRowCopy(int MyRow, int Length, int & NumEntries, double *Values, int * Indices) const;
00061 
00062   virtual int ExtractDiagonalCopy(Epetra_Vector & Diagonal) const;
00063 
00064   virtual int Multiply(bool TransA, const Epetra_MultiVector& X, 
00065            Epetra_MultiVector& Y) const;
00066 
00067   virtual int Solve(bool Upper, bool Trans, bool UnitDiagonal, 
00068         const Epetra_MultiVector& X,
00069         Epetra_MultiVector& Y) const;
00070 
00071   virtual int Apply(const Epetra_MultiVector& X,
00072         Epetra_MultiVector& Y) const;
00073 
00074   virtual int ApplyInverse(const Epetra_MultiVector& X,
00075          Epetra_MultiVector& Y) const;
00076 
00077   virtual int InvRowSums(Epetra_Vector& x) const;
00078 
00079   virtual int LeftScale(const Epetra_Vector& x)
00080   {
00081     return(A_.LeftScale(x));
00082   }
00083 
00084   virtual int InvColSums(Epetra_Vector& x) const;
00085 
00086   virtual int RightScale(const Epetra_Vector& x) 
00087   {
00088     return(A_.RightScale(x));
00089   }
00090 
00091   virtual bool Filled() const
00092   {
00093     return(A_.Filled());
00094   }
00095 
00096   virtual double NormInf() const
00097   {
00098     return(-1.0);
00099   }
00100 
00101   virtual double NormOne() const
00102   {
00103     return(-1.0);
00104   }
00105 
00106   virtual int NumGlobalNonzeros() const
00107   {
00108     return(NumNonzeros_);
00109   }
00110 
00111   virtual int NumGlobalRows() const
00112   {
00113     return(NumRows_);
00114   }
00115 
00116   virtual int NumGlobalCols() const
00117   {
00118     return(NumRows_);
00119   }
00120 
00121   virtual int NumGlobalDiagonals() const
00122   {
00123     return(NumRows_);
00124   }
00125 
00126   virtual int NumMyNonzeros() const
00127   {
00128     return(NumNonzeros_);
00129   }
00130 
00131   virtual int NumMyRows() const
00132   {
00133     return(NumRows_);
00134   }
00135 
00136   virtual int NumMyCols() const
00137   {
00138     return(NumRows_);
00139   }
00140 
00141   virtual int NumMyDiagonals() const
00142   {
00143     return(NumRows_);
00144   }
00145 
00146   virtual bool LowerTriangular() const
00147   {
00148     return(false);
00149   }
00150 
00151   virtual bool UpperTriangular() const
00152   {
00153     return(false);
00154   }
00155 
00156   virtual const Epetra_Map & RowMatrixRowMap() const
00157   {
00158     return(A_.RowMatrixRowMap());
00159   }
00160 
00161   virtual const Epetra_Map & RowMatrixColMap() const
00162   {
00163     return(A_.RowMatrixColMap());
00164   }
00165 
00166   virtual const Epetra_Import * RowMatrixImporter() const
00167   {
00168     return(A_.RowMatrixImporter());
00169   }
00170 
00171   int SetUseTranspose(bool UseTranspose)
00172   {
00173     return(A_.SetUseTranspose(UseTranspose));
00174   }
00175 
00176   bool UseTranspose() const 
00177   {
00178     return(A_.UseTranspose());
00179   }
00180 
00181   bool HasNormInf() const
00182   {
00183     return(false);
00184   }
00185 
00186   const Epetra_Comm & Comm() const
00187   {
00188     return(A_.Comm());
00189   }
00190 
00191   const Epetra_Map & OperatorDomainMap() const 
00192   {
00193     return(A_.OperatorDomainMap());
00194   }
00195 
00196   const Epetra_Map & OperatorRangeMap() const 
00197   {
00198     return(A_.OperatorRangeMap());
00199   }
00200 
00201   const Epetra_BlockMap& Map() const 
00202   {
00203     return(A_.Map());
00204   }
00205 
00206   const char* Label() const{
00207     return(Label_);
00208   }
00209 
00210 private:
00211 
00213   Epetra_RowMatrix& A_;
00215   double DropTol_;
00217   int MaxNumEntries_;
00218   int MaxNumEntriesA_;
00219   int NumRows_;
00220   
00222   int NumNonzeros_;
00223 
00225   mutable vector<int> Indices_;
00227   mutable vector<double> Values_;
00229   char Label_[80];
00230   vector<int> NumEntries_;
00231 
00232 };
00233 
00234 
00235 #endif /* IFPACK_DROPFILTER_H */

Generated on Thu Sep 18 12:37:21 2008 for Ifpack Package Browser (Single Doxygen Collection) by doxygen 1.3.9.1