src/eigsolv/HierarchicalBasisPrec.h

Go to the documentation of this file.
00001 #ifndef HIERARCHICALBASISPREC_H
00002 #define HIERARCHICALBASISPREC_H
00003 
00004 #include "Epetra_Operator.h"
00005 
00006 class Epetra_LinearProblem;
00007 class Amesos_BaseSolver;
00008 class BlockPCGSolver;
00009 class AztecOO;
00010 namespace Teuchos {
00011     class ParameterList;
00012 }
00013 
00014 #include <ml_include.h>
00015 #include <ml_epetra_preconditioner.h>
00016 
00017 #include "Teuchos_ParameterList.hpp"
00018 
00023 class HierarchicalBasisPrec : public virtual Epetra_Operator {
00024 
00025 public:
00026 
00043     HierarchicalBasisPrec(Epetra_CrsMatrix* Block11,
00044                           Epetra_CrsMatrix* TMatrix,
00045                           Epetra_CrsMatrix* NodeMatrix,
00046                           Epetra_CrsMatrix* Block12,
00047                           Epetra_CrsMatrix* Block22,
00048                           const Epetra_Map& DMap,
00049                           const Epetra_Map& RMap,
00050                           Teuchos::ParameterList& params);
00051 
00053     ~HierarchicalBasisPrec();
00054   
00056 
00058 
00067     int SetUseTranspose(bool UseTranspose);
00069   
00071 
00073 
00081     int Apply(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const;
00082 
00084 
00095     int ApplyInverse(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const;
00096 
00098     /* Returns the quantity \f$ \| A \|_\infty\f$ such that
00099        \f[\| A \|_\infty = \max_{1\lei\lem} \sum_{j=1}^n |a_{ij}| \f].
00100 
00101        \warning This method must not be called unless HasNormInf() returns true.
00102     */ 
00103     double NormInf() const;
00105   
00107 
00109     const char * Label() const;
00110 
00112     bool UseTranspose() const;
00113 
00115     bool HasNormInf() const;
00116 
00118     const Epetra_Comm & Comm() const;
00119 
00121     const Epetra_Map & OperatorDomainMap() const;
00122 
00124     const Epetra_Map & OperatorRangeMap() const;
00126 
00127 
00128 protected:
00129 
00130     Epetra_CrsMatrix* K11;
00131     Epetra_CrsMatrix* TMatrix11;
00132     Epetra_CrsMatrix* NodeMatrix11;
00133     Epetra_CrsMatrix* K12;
00134     Epetra_CrsMatrix* K22; 
00135     const Epetra_Map& DomainMap;
00136     const Epetra_Map& RangeMap;
00137 
00138     Amesos_BaseSolver* Abase;
00139     Epetra_LinearProblem* ProblemL;
00140     Teuchos::ParameterList* ParamList;
00141 
00142     AztecOO* solver22_;
00145     Epetra_Operator *operator22_;
00148     Epetra_Operator *operator11_;
00149 
00150     const Epetra_Comm& _Comm;
00151 
00152     bool _useTranspose;
00153     mutable bool isFactorized;
00154 
00155 private:
00156     Teuchos::ParameterList& params_;
00157 
00158 };
00159 
00160 #endif /* HIERARCHICALBASISPREC_H */

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