45#include "Teuchos_ScalarTraits.hpp"
57inline double sqr(
const double& s ) {
return s*s; }
72 :xt0_(xt0),xt1_(xt1),pt0_(pt0),pt1_(pt1),d_(d),
73 isInitialized_(false),supportDerivs_(true)
79 const int nx = 2, np = 2, ng = 1;
86 const double inf = 1e+50;
100 int indices[nx] = { 0, 1 };
101 for(
int i = 0; i < nx; ++i )
102 W_graph_->InsertGlobalIndices(i,nx,indices);
118 double pL0,
double pL1,
double pU0,
double pU1
128 double xL0,
double xL1,
double xU0,
double xU1
139Teuchos::RCP<const Epetra_Map>
145Teuchos::RCP<const Epetra_Map>
151Teuchos::RCP<const Epetra_Map>
154 TEUCHOS_TEST_FOR_EXCEPT(l!=0);
158Teuchos::RCP<const Epetra_Map>
161 TEUCHOS_TEST_FOR_EXCEPT(j!=0);
165Teuchos::RCP<const Epetra_Vector>
171Teuchos::RCP<const Epetra_Vector>
174 TEUCHOS_TEST_FOR_EXCEPT(l!=0);
178Teuchos::RCP<const Epetra_Vector>
184Teuchos::RCP<const Epetra_Vector>
190Teuchos::RCP<const Epetra_Vector>
193 TEUCHOS_TEST_FOR_EXCEPT(l!=0);
197Teuchos::RCP<const Epetra_Vector>
200 TEUCHOS_TEST_FOR_EXCEPT(l!=0);
204Teuchos::RCP<Epetra_Operator>
225 outArgs.set_Np_Ng(1,1);
228 outArgs.set_W_properties(
237 outArgs.set_DfDp_properties(
245 outArgs.set_DgDx_properties(
253 outArgs.set_DgDp_properties(
269 using Teuchos::dyn_cast;
270 using Teuchos::rcp_dynamic_cast;
274 Teuchos::RCP<const Epetra_Vector> p_in = inArgs.get_p(0);
292 f[0] = x[0] + x[1]*x[1] - p[0];
293 f[1] =
d_ * ( x[0]*x[0] - x[1] - p[1] );
297 g[0] = 0.5 * ( sqr(x[0]-
xt0_) + sqr(x[1]-
xt1_) + sqr(p[0]-
pt0_) + sqr(p[1]-
pt1_) );
311 values[0] = 1.0; indexes[0] = 0;
312 values[1] = 2.0*x[1]; indexes[1] = 1;
313 DfDx.SumIntoGlobalValues( 0, 2, values, indexes );
315 values[0] = 2.0*
d_*x[0]; indexes[0] = 0;
316 values[1] = -
d_; indexes[1] = 1;
317 DfDx.SumIntoGlobalValues( 1, 2, values, indexes );
327 DgDx_trans[0] = x[0]-
xt0_;
328 DgDx_trans[1] = x[1]-
xt1_;
332 DgDp_trans[0] = p[0]-
pt0_;
333 DgDp_trans[1] = p[1]-
pt1_;
void setModelEvalDescription(const std::string &modelEvalDescription)
void setModelEvalDescription(const std::string &modelEvalDescription)
@ DERIV_LINEARITY_NONCONST
Teuchos::RCP< Epetra_Vector > gL_
Teuchos::RCP< Epetra_Vector > pL_
Teuchos::RCP< const Epetra_Vector > get_p_upper_bounds(int l) const
Teuchos::RCP< const Epetra_Comm > epetra_comm_
void evalModel(const InArgs &inArgs, const OutArgs &outArgs) const
Teuchos::RCP< const Epetra_Map > map_x_
Teuchos::RCP< const Epetra_Map > get_f_map() const
void set_x_bounds(double xL0, double xL1, double xU0, double xU1)
Teuchos::RCP< const Epetra_Vector > get_x_lower_bounds() const
Teuchos::RCP< const Epetra_Map > map_p_
Teuchos::RCP< Epetra_Vector > xL_
void set_p_bounds(double pL0, double pL1, double pU0, double pU1)
Teuchos::RCP< const Epetra_Map > get_g_map(int j) const
\breif .
Teuchos::RCP< Epetra_Vector > pU_
OutArgs createOutArgs() const
Teuchos::RCP< const Epetra_Vector > get_x_upper_bounds() const
Teuchos::RCP< Epetra_Operator > create_W() const
Teuchos::RCP< Epetra_Vector > xU_
Teuchos::RCP< Epetra_Vector > x0_
Teuchos::RCP< const Epetra_Vector > get_p_init(int l) const
InArgs createInArgs() const
void setSupportDerivs(bool supportDerivs)
Teuchos::RCP< const Epetra_Map > map_g_
Teuchos::RCP< Epetra_Vector > p0_
Teuchos::RCP< const Epetra_Vector > get_p_lower_bounds(int l) const
Teuchos::RCP< const Epetra_Map > get_p_map(int l) const
\breif .
Teuchos::RCP< Epetra_CrsGraph > W_graph_
Teuchos::RCP< const Epetra_Vector > get_x_init() const
Teuchos::RCP< const Epetra_Map > get_x_map() const
Teuchos::RCP< Epetra_Vector > gU_
int PutScalar(double ScalarConstant)