00001 #ifndef EPETRA_MULTI_POINT_MODEL_EVAL_4D_OPT_HPP
00002 #define EPETRA_MULTI_POINT_MODEL_EVAL_4D_OPT_HPP
00003
00004 #include "EpetraExt_ModelEvaluator.h"
00005 #include "Epetra_Map.h"
00006 #include "Epetra_Vector.h"
00007 #include "Epetra_Comm.h"
00008 #include "Epetra_CrsGraph.h"
00009
00030 class EpetraMultiPointModelEval4DOpt : public EpetraExt::ModelEvaluator {
00031 public:
00032
00034 EpetraMultiPointModelEval4DOpt(
00035 Teuchos::RefCountPtr<Epetra_Comm> epetra_comm
00036 ,const double xt0 = 1.0
00037 ,const double xt1 = 1.0
00038 ,const double pt0 = 2.0
00039 ,const double pt1 = 0.0
00040 ,const double d = 10.0
00041 ,const double x00 = 1.0
00042 ,const double x01 = 1.0
00043 ,const double p00 = 2.0
00044 ,const double p01 = 0.0
00045 ,const double q0 = 0.0
00046 );
00047
00049 void set_p_bounds( double pL0, double pL1, double pU0, double pU1 );
00050
00052 void set_x_bounds( double xL0, double xL1, double xU0, double xU1 );
00053
00056
00058 Teuchos::RefCountPtr<const Epetra_Map> get_x_map() const;
00060 Teuchos::RefCountPtr<const Epetra_Map> get_f_map() const;
00062 Teuchos::RefCountPtr<const Epetra_Map> get_p_map(int l) const;
00064 Teuchos::RefCountPtr<const Epetra_Map> get_g_map(int j) const;
00066 Teuchos::RefCountPtr<const Epetra_Vector> get_x_init() const;
00068 Teuchos::RefCountPtr<const Epetra_Vector> get_p_init(int l) const;
00070 Teuchos::RefCountPtr<const Epetra_Vector> get_x_lower_bounds() const;
00072 Teuchos::RefCountPtr<const Epetra_Vector> get_x_upper_bounds() const;
00074 Teuchos::RefCountPtr<const Epetra_Vector> get_p_lower_bounds(int l) const;
00076 Teuchos::RefCountPtr<const Epetra_Vector> get_p_upper_bounds(int l) const;
00078 Teuchos::RefCountPtr<Epetra_Operator> create_W() const;
00080 InArgs createInArgs() const;
00082 OutArgs createOutArgs() const;
00084 void evalModel( const InArgs& inArgs, const OutArgs& outArgs ) const;
00085
00087
00088 private:
00089
00090
00091
00092
00093 bool isInitialized_;
00094
00095 Teuchos::RefCountPtr<const Epetra_Comm> epetra_comm_;
00096
00097 double xt0_;
00098 double xt1_;
00099 double pt0_;
00100 double pt1_;
00101 double d_;
00102 Teuchos::RefCountPtr<const Epetra_Map> map_x_;
00103 Teuchos::RefCountPtr<const Epetra_Map> map_p_;
00104 Teuchos::RefCountPtr<const Epetra_Map> map_q_;
00105 Teuchos::RefCountPtr<const Epetra_Map> map_g_;
00106
00107 Teuchos::RefCountPtr<Epetra_Vector> xL_;
00108 Teuchos::RefCountPtr<Epetra_Vector> xU_;
00109 Teuchos::RefCountPtr<Epetra_Vector> pL_;
00110 Teuchos::RefCountPtr<Epetra_Vector> pU_;
00111 Teuchos::RefCountPtr<Epetra_Vector> gL_;
00112 Teuchos::RefCountPtr<Epetra_Vector> gU_;
00113 Teuchos::RefCountPtr<Epetra_Vector> x0_;
00114 Teuchos::RefCountPtr<Epetra_Vector> p0_;
00115 Teuchos::RefCountPtr<Epetra_Vector> q_;
00116 Teuchos::RefCountPtr<Epetra_Vector> qL_;
00117 Teuchos::RefCountPtr<Epetra_Vector> qU_;
00118
00119 Teuchos::RefCountPtr<Epetra_CrsGraph> W_graph_;
00120
00121 };
00122
00123 #endif // EPETRA_MULTI_POINT_MODEL_EVAL_4D_OPT_HPP