EpetraExt_MultiPointModelEvaluator.h

Go to the documentation of this file.
00001 #ifndef EPETRAEXT_MULTIPOINTMODELEVALUATOR_H
00002 #define EPETRAEXT_MULTIPOINTMODELEVALUATOR_H
00003 
00004 #include "EpetraExt_ModelEvaluator.h"
00005 #include "EpetraExt_BlockCrsMatrix.h"
00006 #include "EpetraExt_BlockVector.h"
00007 #include "EpetraExt_BlockMultiVector.h"
00008 #include "EpetraExt_MultiMpiComm.h"
00009 
00019 namespace EpetraExt {
00020   class MultiPointModelEvaluator
00021     : public ModelEvaluator
00022   {
00023   public:
00024 
00027 
00029   MultiPointModelEvaluator(
00030     Teuchos::RefCountPtr<EpetraExt::ModelEvaluator> underlyingME_,
00031     const Teuchos::RefCountPtr<EpetraExt::MultiMpiComm> &globalComm_,
00032     const std::vector<Epetra_Vector*> initGuessVec,
00033     Teuchos::RefCountPtr<std::vector< Teuchos::RefCountPtr<Epetra_Vector> > >  q_vec,
00034     Teuchos::RefCountPtr<std::vector< Teuchos::RefCountPtr<Epetra_Vector> > >  matching_vec = Teuchos::null
00035     );
00036 
00038 
00039   ~MultiPointModelEvaluator();
00040 
00041 
00044 
00046   Teuchos::RefCountPtr<const Epetra_Map> get_x_map() const;
00048   Teuchos::RefCountPtr<const Epetra_Map> get_f_map() const;
00050   Teuchos::RefCountPtr<const Epetra_Map> get_p_map(int l) const;
00052   Teuchos::RefCountPtr<const Epetra_Map> get_g_map(int j) const;
00054   Teuchos::RefCountPtr<const Epetra_Vector> get_x_init() const;
00056   Teuchos::RefCountPtr<const Epetra_Vector> get_p_init(int l) const;
00058   Teuchos::RefCountPtr<Epetra_Operator> create_W() const;
00060   InArgs createInArgs() const;
00062   OutArgs createOutArgs() const;
00064   void evalModel( const InArgs& inArgs, const OutArgs& outArgs ) const;
00065 
00067 
00068   private:
00069 
00070    Teuchos::RefCountPtr<EpetraExt::ModelEvaluator> underlyingME;
00071 
00073    Teuchos::RefCountPtr<EpetraExt::MultiMpiComm> globalComm;
00074 
00076    Teuchos::RefCountPtr<std::vector< Teuchos::RefCountPtr<Epetra_Vector> > > q_vec;
00077 
00079    Teuchos::RefCountPtr<Epetra_RowMatrix> split_W;
00080 
00082    Teuchos::RefCountPtr<Epetra_Vector> split_x;
00083 
00085    Teuchos::RefCountPtr<Epetra_Vector> split_f;
00086 
00088    Teuchos::RefCountPtr<Epetra_Vector> split_g;
00089 
00091    Teuchos::RefCountPtr<Epetra_MultiVector> split_DfDp;
00092 
00094    Teuchos::RefCountPtr<Epetra_MultiVector> split_DgDx;
00095    Teuchos::RefCountPtr<Epetra_MultiVector> split_DgDp;
00096 
00097    EpetraExt::ModelEvaluator::DerivativeMultiVector* derivMV_DfDp;
00098    EpetraExt::ModelEvaluator::Derivative* deriv_DfDp;
00099    EpetraExt::ModelEvaluator::DerivativeMultiVector* derivMV_DgDx;
00100    EpetraExt::ModelEvaluator::Derivative* deriv_DgDx;
00101    EpetraExt::ModelEvaluator::DerivativeMultiVector* derivMV_DgDp;
00102    EpetraExt::ModelEvaluator::Derivative* deriv_DgDp;
00103 
00105    Teuchos::RefCountPtr<EpetraExt::BlockCrsMatrix> block_W;
00106 
00108    EpetraExt::BlockVector* block_x;
00109 
00111    EpetraExt::BlockVector* block_f;
00112 
00114    EpetraExt::BlockMultiVector* block_DfDp;
00115 
00117    EpetraExt::BlockMultiVector* block_DgDx;
00118 
00120    Teuchos::RefCountPtr<EpetraExt::BlockVector> solution_init;
00121 
00123    int underlyingNg;
00124 
00126    int timeStepsOnTimeDomain;
00127 
00129    int numTimeDomains;
00130 
00132    int timeDomain;
00133 
00140    std::vector< std::vector<int> >* rowStencil;
00141 
00143    std::vector<int>* rowIndex;
00144 
00146    EDerivativeMultiVectorOrientation orientation_DgDp;
00147    int num_dg0dp0;
00148    int num_g0;
00149    int num_p0;
00150 
00152    Teuchos::RefCountPtr<std::vector< Teuchos::RefCountPtr<Epetra_Vector> > > matching_vec;
00153    bool matchingProblem;
00154 
00155   };
00156 }
00157 #endif

Generated on Tue Oct 20 12:45:30 2009 for EpetraExt by doxygen 1.4.7