386int main(
int argc,
char *argv[]) {
387 using RealT = double;
389 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
392 int iprint = argc - 1;
393 ROL::Ptr<std::ostream> outStream;
396 outStream = ROL::makePtrFromRef(std::cout);
398 outStream = ROL::makePtrFromRef(bhs);
401 ROL::nullstream oldFormatState;
402 oldFormatState.copyfmt(std::cout);
417 auto c1 = ROL::makePtr<ROL::StdVector<RealT>>(c1_dim);
418 auto c2 = ROL::makePtr<ROL::StdVector<RealT>>(c2_dim);
419 auto u = ROL::makePtr<ROL::StdVector<RealT>>(u_dim);
420 auto z = ROL::makePtr<ROL::StdVector<RealT>>(z_dim);
421 auto vc1 = ROL::makePtr<ROL::StdVector<RealT>>(c1_dim);
422 auto vc2 = ROL::makePtr<ROL::StdVector<RealT>>(c2_dim);
423 auto vu = ROL::makePtr<ROL::StdVector<RealT>>(u_dim);
424 auto vz = ROL::makePtr<ROL::StdVector<RealT>>(z_dim);
425 auto du = ROL::makePtr<ROL::StdVector<RealT>>(u_dim);
426 auto dz = ROL::makePtr<ROL::StdVector<RealT>>(z_dim);
427 c1->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
428 c2->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
429 u->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
430 z->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
431 vc1->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
432 vc2->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
433 vu->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
434 vz->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
435 du->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
436 dz->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
438 auto con1 = ROL::makePtr<constraint1<RealT>>();
439 auto con2 = ROL::makePtr<constraint2<RealT>>();
440 auto stateStore = ROL::makePtr<ROL::VectorController<RealT>>();
441 auto rcon = ROL::makePtr<ROL::Reduced_Constraint_SimOpt<RealT>>(con2,con1,stateStore,u,z,vc1,c2,
true,
false);
443 con1->checkSolve(*u,*z,*c1,
true,*outStream);
444 con1->checkAdjointConsistencyJacobian_1(*vc1,*vu,*u,*z,
true,*outStream);
445 con1->checkAdjointConsistencyJacobian_2(*vc1,*vz,*u,*z,
true,*outStream);
446 con1->checkInverseJacobian_1(*c1,*vu,*u,*z,
true,*outStream);
447 con1->checkInverseAdjointJacobian_1(*c1,*vu,*u,*z,
true,*outStream);
448 con1->checkApplyJacobian_1(*u,*z,*vu,*vc1,
true,*outStream);
449 con1->checkApplyJacobian_2(*u,*z,*vz,*vc1,
true,*outStream);
450 con1->checkApplyAdjointHessian_11(*u,*z,*vc1,*vu,*du,
true,*outStream);
451 con1->checkApplyAdjointHessian_12(*u,*z,*vc1,*vu,*dz,
true,*outStream);
452 con1->checkApplyAdjointHessian_21(*u,*z,*vc1,*vz,*du,
true,*outStream);
453 con1->checkApplyAdjointHessian_22(*u,*z,*vc1,*vz,*dz,
true,*outStream);
455 con2->checkAdjointConsistencyJacobian_1(*vc2,*vu,*u,*z,
true,*outStream);
456 con2->checkAdjointConsistencyJacobian_2(*vc2,*vz,*u,*z,
true,*outStream);
457 con2->checkApplyJacobian_1(*u,*z,*vu,*vc2,
true,*outStream);
458 con2->checkApplyJacobian_2(*u,*z,*vz,*vc2,
true,*outStream);
459 con2->checkApplyAdjointHessian_11(*u,*z,*vc2,*vu,*du,
true,*outStream);
460 con2->checkApplyAdjointHessian_12(*u,*z,*vc2,*vu,*dz,
true,*outStream);
461 con2->checkApplyAdjointHessian_21(*u,*z,*vc2,*vz,*du,
true,*outStream);
462 con2->checkApplyAdjointHessian_22(*u,*z,*vc2,*vz,*dz,
true,*outStream);
464 rcon->checkAdjointConsistencyJacobian(*vc2,*vz,*z,
true,*outStream);
465 rcon->checkApplyJacobian(*z,*vz,*vc2,
true,*outStream);
466 rcon->checkApplyAdjointHessian(*z,*vc2,*vz,*dz,
true,*outStream);
468 catch (std::logic_error& err) {
469 *outStream << err.what() <<
"\n";
474 std::cout <<
"End Result: TEST FAILED\n";
476 std::cout <<
"End Result: TEST PASSED\n";