73#include "Teuchos_GlobalMPISession.hpp"
75#include "ROL_ParameterList.hpp"
93 typedef typename vector::size_type
uint;
108 ROL::Ptr<const vector>
Vp_;
127 using namespace Teuchos;
130 ROL::Ptr<const vector> vp =
getVector(v);
137 (*kvp)[0] = (2.0*(*vp)[0]-(*vp)[1])/dx2;
140 (*kvp)[i] = (2.0*(*vp)[i]-(*vp)[i-1]-(*vp)[i+1])/dx2;
143 (*kvp)[
nx_-1] = (2.0*(*vp)[
nx_-1]-(*vp)[
nx_-2])/dx2;
164 ROL::Ptr<const vector> psip =
getVector(psi);
167 ROL::Ptr<V> kpsi = psi.
clone();
168 ROL::Ptr<vector> kpsip =
getVector(*kpsi);
175 J += (*psip)[i]*(*kpsip)[i] + (*Vp_)[i]*pow((*psip)[i],2) +
g_*pow((*psip)[i],4);
191 ROL::Ptr<const vector> psip =
getVector(psi);
197 ROL::Ptr<V> kpsi = psi.
clone();
198 ROL::Ptr<vector> kpsip =
getVector(*kpsi);
203 (*gp)[i] = ((*kpsip)[i] + (*Vp_)[i]*(*psip)[i] + 2.0*
g_*pow((*psip)[i],3))*
dx_;
217 ROL::Ptr<const vector> psip =
getVector(psi);
220 ROL::Ptr<const vector> vp =
getVector(v);
229 (*hvp)[i] += ( (*Vp_)[i] + 6.0*
g_*pow((*psip)[i],2) )*(*vp)[i]*
dx_;
243 typedef typename vector::size_type
uint;
276 ROL::Ptr<const vector> psip =
getVector(psi);
280 (*cp)[0] +=
dx_*pow((*psip)[i],2);
295 ROL::Ptr<const vector> vp =
getVector(v);
298 ROL::Ptr<const vector> psip =
getVector(psi);
302 (*jvp)[0] += 2.0*
dx_*(*psip)[i]*(*vp)[i];
317 ROL::Ptr<const vector> vp =
getVector(v);
320 ROL::Ptr<const vector> psip =
getVector(psi);
323 (*ajvp)[i] = 2.0*
dx_*(*psip)[i]*(*vp)[0];
337 ROL::Ptr<vector> ahuvp =
getVector(ahuv);
340 ROL::Ptr<const vector> up =
getVector(u);
343 ROL::Ptr<const vector> vp =
getVector(v);
346 ROL::Ptr<const vector> psip =
getVector(psi);
349 (*ahuvp)[i] = 2.0*
dx_*(*vp)[i]*(*up)[0];
Defines a no-output stream class ROL::NullStream and a function makeStreamPtr which either wraps a re...
void applyJacobian(Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &psi, Real &tol)
Evaluate .
Normalization_Constraint(int n, Real dx)
void value(Vector< Real > &c, const Vector< Real > &psi, Real &tol)
Evaluate .
ROL::Ptr< vector > getVector(V &x)
void applyAdjointHessian(Vector< Real > &ahuv, const Vector< Real > &u, const Vector< Real > &v, const Vector< Real > &psi, Real &tol)
Evaluate .
std::vector< Real > vector
ROL::Ptr< const vector > getVector(const V &x)
void applyAdjointJacobian(Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &psi, Real &tol)
Evaluate .
void hessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &psi, Real &tol)
Evaluate .
ROL::Ptr< vector > getVector(V &x)
Objective_GrossPitaevskii(const Real &g, const Vector< Real > &V)
ROL::Ptr< const vector > Vp_
ROL::Ptr< const vector > getVector(const V &x)
void applyK(const Vector< Real > &v, Vector< Real > &kv)
Apply finite difference operator.
void gradient(Vector< Real > &g, const Vector< Real > &psi, Real &tol)
Evaluate .
Real value(const Vector< Real > &psi, Real &tol)
Evaluate .
std::vector< Real > vector
Defines the general constraint operator interface.
Provides the interface to evaluate objective functions.
Provides the ROL::Vector interface for scalar values, to be used, for example, with scalar constraint...
Defines the linear algebra or vector space interface.
virtual ROL::Ptr< Vector > clone() const =0
Clone to make a new (uninitialized) vector.