src/eigsolv/Projector.h

Go to the documentation of this file.
00001 #ifndef PROJECTOR_H
00002 #define PROJECTOR_H
00003 
00004 #include "Epetra_Operator.h"
00005 
00006 
00007 class Projector : public virtual Epetra_Operator {
00008 
00009 public:
00010 
00011     Projector(Epetra_Operator* Y, const Epetra_Operator* H, Epetra_Operator* C);
00012 
00014 
00015     ~Projector();
00017   
00019 
00021 
00030     int SetUseTranspose(bool UseTranspose);
00032   
00034 
00036 
00044     int Apply(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const;
00045 
00047 
00058     int ApplyInverse(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const;
00059 
00061     /* Returns the quantity \f$ \| A \|_\infty\f$ such that
00062        \f[\| A \|_\infty = \max_{1\lei\lem} \sum_{j=1}^n |a_{ij}| \f].
00063 
00064        \warning This method must not be called unless HasNormInf() returns true.
00065     */ 
00066     double NormInf() const;
00068   
00070 
00072     const char * Label() const;
00073 
00075     bool UseTranspose() const;
00076 
00078     bool HasNormInf() const;
00079 
00081     const Epetra_Comm & Comm() const;
00082 
00084     const Epetra_Map & OperatorDomainMap() const;
00085 
00087     const Epetra_Map & OperatorRangeMap() const;
00089 
00090 
00091 protected:
00092 
00093     Epetra_Operator* _Y;
00094     const Epetra_Operator* _H;
00095     Epetra_Operator* _C;
00096 
00097     bool _useTranspose;
00098 
00099     Epetra_Vector* _vector1;
00100     Epetra_Vector* _vector2;
00101     Epetra_Vector* _vector3;
00102     const Epetra_Comm& _Comm;
00103 
00104 private:
00105 
00106 };
00107 
00108 #endif /* PROJECTOR_H */

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