src/eigsolv/BlockDiagOperator.h

Go to the documentation of this file.
00001 #ifndef BLOCKDIAGOPERATOR_H
00002 #define BLOCKDIAGOPERATOR_H
00003 
00004 #include "Epetra_Operator.h"
00005 #include "Epetra_CrsMatrix.h"
00006 #include "Epetra_MultiVector.h"
00007 
00008 
00009 class BlockDiagOperator : public virtual Epetra_Operator {
00010 
00011 public:
00012 
00013     BlockDiagOperator::BlockDiagOperator(Epetra_CrsMatrix* A);
00014 
00016 
00017     ~BlockDiagOperator();
00019   
00021 
00023 
00032     int SetUseTranspose(bool UseTranspose);
00034   
00036 
00038 
00046     int Apply(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const;
00047 
00049 
00060     int ApplyInverse(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const;
00061 
00063     /* Returns the quantity \f$ \| A \|_\infty\f$ such that
00064        \f[\| A \|_\infty = \max_{1\lei\lem} \sum_{j=1}^n |a_{ij}| \f].
00065 
00066        \warning This method must not be called unless HasNormInf() returns true.
00067     */ 
00068     double NormInf() const;
00070   
00072 
00074     const char * Label() const;
00075 
00077     bool UseTranspose() const;
00078 
00080     bool HasNormInf() const;
00081 
00083     const Epetra_Comm & Comm() const;
00084 
00086     const Epetra_Map & OperatorDomainMap() const;
00087 
00089     const Epetra_Map & OperatorRangeMap() const;
00091 
00092 
00093 protected:
00094 
00095     Epetra_CrsMatrix* A;
00096     int _NumMyRows;
00097     int* _diag;
00098     double* _temp;
00099     bool _useTranspose;
00100 
00101 };
00102 
00103 #endif /* BLOCKDIAGOPERATOR_H */

Generated on Fri Oct 26 13:35:11 2007 for FEMAXX (Finite Element Maxwell Eigensolver) by  doxygen 1.4.7