356int main(
int argc,
char *argv[]) {
358 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
361 int iprint = argc - 1;
362 ROL::Ptr<std::ostream> outStream;
365 outStream = ROL::makePtrFromRef(std::cout);
367 outStream = ROL::makePtrFromRef(bhs);
377 ROL::Ptr<std::vector<RealT> > ustd = ROL::makePtr<std::vector<RealT>>(
dim);
378 ROL::Ptr<std::vector<RealT> > dustd = ROL::makePtr<std::vector<RealT>>(
dim);
379 ROL::Ptr<std::vector<RealT> > zstd = ROL::makePtr<std::vector<RealT>>(dimz);
380 ROL::Ptr<std::vector<RealT> > dzstd = ROL::makePtr<std::vector<RealT>>(dimz);
381 ROL::Ptr<std::vector<RealT> > cstd = ROL::makePtr<std::vector<RealT>>(
dim);
382 ROL::Ptr<std::vector<RealT> > czstd = ROL::makePtr<std::vector<RealT>>(dimz);
383 ROL::Ptr<std::vector<RealT> > sstd = ROL::makePtr<std::vector<RealT>>(dimz);
384 ROL::Ptr<std::vector<RealT> > dsstd = ROL::makePtr<std::vector<RealT>>(dimz);
386 (*ustd)[0] =
static_cast<RealT>(rand())/
static_cast<RealT>(RAND_MAX);
387 (*ustd)[1] =
static_cast<RealT>(rand())/
static_cast<RealT>(RAND_MAX);
388 (*dustd)[0] =
static_cast<RealT>(rand())/
static_cast<RealT>(RAND_MAX);
389 (*dustd)[1] =
static_cast<RealT>(rand())/
static_cast<RealT>(RAND_MAX);
390 (*zstd)[0] =
static_cast<RealT>(rand())/
static_cast<RealT>(RAND_MAX);
391 (*dzstd)[0] =
static_cast<RealT>(rand())/
static_cast<RealT>(RAND_MAX);
392 (*cstd)[0] =
static_cast<RealT>(rand())/
static_cast<RealT>(RAND_MAX);
393 (*cstd)[1] =
static_cast<RealT>(rand())/
static_cast<RealT>(RAND_MAX);
394 (*czstd)[0] =
static_cast<RealT>(rand())/
static_cast<RealT>(RAND_MAX);
395 (*sstd)[0] =
static_cast<RealT>(rand())/
static_cast<RealT>(RAND_MAX);
396 (*dsstd)[0] =
static_cast<RealT>(rand())/
static_cast<RealT>(RAND_MAX);
398 ROL::Ptr<ROL::Vector<RealT> > u = ROL::makePtr<ROL::StdVector<RealT>>(ustd);
399 ROL::Ptr<ROL::Vector<RealT> > du = ROL::makePtr<ROL::StdVector<RealT>>(dustd);
400 ROL::Ptr<ROL::Vector<RealT> > z = ROL::makePtr<ROL::StdVector<RealT>>(zstd);
401 ROL::Ptr<ROL::Vector<RealT> > dz = ROL::makePtr<ROL::StdVector<RealT>>(dzstd);
402 ROL::Ptr<ROL::Vector<RealT> > c = ROL::makePtr<ROL::StdVector<RealT>>(cstd);
403 ROL::Ptr<ROL::Vector<RealT> > cz = ROL::makePtr<ROL::StdVector<RealT>>(czstd);
404 ROL::Ptr<ROL::Vector<RealT> > s = ROL::makePtr<ROL::StdVector<RealT>>(sstd);
405 ROL::Ptr<ROL::Vector<RealT> > ds = ROL::makePtr<ROL::StdVector<RealT>>(dsstd);
414 ROL::Ptr<ROL::Constraint_SimOpt<RealT> > valCon = ROL::makePtr<valConstraint<RealT>>();
415 valCon->checkAdjointConsistencyJacobian_1(*c,*du,*u,*s,
true,*outStream);
416 valCon->checkAdjointConsistencyJacobian_2(*c,*dz,*u,*s,
true,*outStream);
417 valCon->checkApplyJacobian_1(*u,*s,*du,*c,
true,*outStream);
418 valCon->checkApplyJacobian_2(*u,*s,*ds,*c,
true,*outStream);
419 valCon->checkApplyJacobian(x,dx,*c,
true,*outStream);
420 valCon->checkApplyAdjointHessian_11(*u,*s,*c,*du,*u,
true,*outStream);
421 valCon->checkApplyAdjointHessian_12(*u,*s,*c,*du,*s,
true,*outStream);
422 valCon->checkApplyAdjointHessian_21(*u,*s,*c,*ds,*u,
true,*outStream);
423 valCon->checkApplyAdjointHessian_22(*u,*s,*c,*ds,*s,
true,*outStream);
424 valCon->checkApplyAdjointHessian(x,*c,dx,x,
true,*outStream);
426 ROL::Ptr<ROL::Constraint_SimOpt<RealT> > redCon = ROL::makePtr<redConstraint<RealT>>();
427 redCon->checkAdjointConsistencyJacobian_1(*cz,*ds,*s,*z,
true,*outStream);
428 redCon->checkAdjointConsistencyJacobian_2(*cz,*dz,*s,*z,
true,*outStream);
429 redCon->checkInverseJacobian_1(*cz,*ds,*s,*z,
true,*outStream);
430 redCon->checkInverseAdjointJacobian_1(*ds,*cz,*s,*z,
true,*outStream);
431 redCon->checkApplyJacobian_1(*s,*z,*ds,*cz,
true,*outStream);
432 redCon->checkApplyJacobian_2(*s,*z,*dz,*cz,
true,*outStream);
433 redCon->checkApplyJacobian(y,dy,*cz,
true,*outStream);
434 redCon->checkApplyAdjointHessian_11(*s,*z,*cz,*ds,*s,
true,*outStream);
435 redCon->checkApplyAdjointHessian_12(*s,*z,*cz,*ds,*z,
true,*outStream);
436 redCon->checkApplyAdjointHessian_21(*s,*z,*cz,*dz,*s,
true,*outStream);
437 redCon->checkApplyAdjointHessian_22(*s,*z,*cz,*dz,*z,
true,*outStream);
438 redCon->checkApplyAdjointHessian(y,*cz,dy,y,
true,*outStream);
441 con.checkAdjointConsistencyJacobian_1(*c,*du,*u,*z,
true,*outStream);
442 con.checkAdjointConsistencyJacobian_2(*c,*dz,*u,*z,
true,*outStream);
443 con.checkApplyJacobian_1(*u,*z,*du,*c,
true,*outStream);
444 con.checkApplyJacobian_2(*u,*z,*dz,*c,
true,*outStream);
445 con.checkApplyJacobian(w,dw,*c,
true,*outStream);
446 con.checkApplyAdjointHessian_11(*u,*z,*c,*du,*u,
true,*outStream);
447 con.checkApplyAdjointHessian_12(*u,*z,*c,*du,*z,
true,*outStream);
448 con.checkApplyAdjointHessian_21(*u,*z,*c,*dz,*u,
true,*outStream);
449 con.checkApplyAdjointHessian_22(*u,*z,*c,*dz,*z,
true,*outStream);
450 con.checkApplyAdjointHessian(w,*c,dw,w,
true,*outStream);
452 catch (std::logic_error& err) {
453 *outStream << err.what() <<
"\n";
458 std::cout <<
"End Result: TEST FAILED\n";
460 std::cout <<
"End Result: TEST PASSED\n";