src/directsolveroperator.h

Go to the documentation of this file.
00001 //
00002 // C++ Interface: directsolveroperator
00003 //
00004 // Description: Epetra_Operator wrapper for direct solvers (e.g. Amesos solvers)
00005 //
00006 //
00007 // Author: Roman Geus <roman.geus@psi.ch>, (C) 2004
00008 //
00009 // Copyright: See COPYING file that comes with this distribution
00010 //
00011 //
00012 
00013 #ifndef DIRECTSOLVEROPERATOR_H
00014 #define DIRECTSOLVEROPERATOR_H
00015 
00016 #include <Epetra_MultiVector.h>
00017 #include <Epetra_LinearProblem.h>
00018 #include <Teuchos_ParameterList.hpp>
00019 #include <Amesos.h>
00020 
00021 class Epetra_MultiVector;
00022 class Epetra_Map;
00023 class Epetra_Comm;
00024 
00027 class DirectSolverOperator : public Epetra_Operator {
00028     public:
00034         DirectSolverOperator(Epetra_RowMatrix& A, Teuchos::ParameterList& params);
00035 
00036         ~DirectSolverOperator();
00037 
00038         int SetUseTranspose(bool use_transpose);
00039 
00041         int Apply(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const;
00042 
00044         int ApplyInverse(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const;
00045 
00046         double NormInf() const;
00047 
00048         const char * Label() const;
00049 
00050         bool UseTranspose() const;
00051 
00052         bool HasNormInf() const;
00053 
00054         const Epetra_Comm& Comm() const;
00055 
00056         const Epetra_Map & OperatorDomainMap() const;
00057 
00058         const Epetra_Map & OperatorRangeMap() const;
00059 
00060     private:
00061         const Epetra_Map& domain_map_;
00062         const Epetra_Map& range_map_;
00063         const Epetra_Comm& comm_;
00064         bool use_transpose_;
00065         Epetra_LinearProblem* linear_problem_;
00066         Amesos_BaseSolver* amesos_solver_;
00067 };
00068 
00069 #endif

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