Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef QCAD_GENEIGENSOLVER_H
00008 #define QCAD_GENEIGENSOLVER_H
00009
00010 #include <iostream>
00011
00012
00013
00014 #include "Epetra_Map.h"
00015 #include "Epetra_Vector.h"
00016
00017 #include "EpetraExt_ModelEvaluator.h"
00018 #include "Teuchos_RCP.hpp"
00019 #include "Teuchos_ParameterList.hpp"
00020
00021 #include "Albany_StateManager.hpp"
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 namespace QCAD {
00032
00037 class GenEigensolver : public EpetraExt::ModelEvaluator {
00038 public:
00039
00042
00043 GenEigensolver(const Teuchos::RCP<Teuchos::ParameterList>& appParams,
00044 const Teuchos::RCP<EpetraExt::ModelEvaluator>& model,
00045 const Teuchos::RCP<Albany::StateManager>& observer,
00046 Teuchos::RCP<const Epetra_Comm> comm);
00048
00049 ~GenEigensolver();
00050
00051 Teuchos::RCP<const Epetra_Map> get_x_map() const;
00052 Teuchos::RCP<const Epetra_Map> get_f_map() const;
00053 Teuchos::RCP<const Epetra_Map> get_p_map(int l) const;
00054 Teuchos::RCP<const Epetra_Map> get_g_map(int j) const;
00055
00056 Teuchos::RCP<const Epetra_Vector> get_x_init() const;
00057 Teuchos::RCP<const Epetra_Vector> get_x_dot_init() const;
00058 Teuchos::RCP<const Epetra_Vector> get_p_init(int l) const;
00059
00060 EpetraExt::ModelEvaluator::InArgs createInArgs() const;
00061 EpetraExt::ModelEvaluator::OutArgs createOutArgs() const;
00062
00063 void evalModel( const InArgs& inArgs, const OutArgs& outArgs ) const;
00064
00065 private:
00066 Teuchos::RCP<EpetraExt::ModelEvaluator> model;
00067 Teuchos::RCP<Albany::StateManager> observer;
00068 int model_num_p, model_num_g;
00069
00070 Teuchos::RCP<const Epetra_Comm> myComm;
00071
00072
00073 bool bHermitian;
00074 std::string which;
00075 int nev, blockSize, maxIters;
00076 double conv_tol;
00077 };
00078 }
00079 #endif