352int main(
int argc,
char *argv[]) {
353 using RealT = double;
355 ROL::GlobalMPISession mpiSession(&argc, &argv);
358 int iprint = argc - 1;
359 ROL::Ptr<std::ostream> outStream;
362 outStream = ROL::makePtrFromRef(std::cout);
364 outStream = ROL::makePtrFromRef(bhs);
367 ROL::nullstream oldFormatState;
368 oldFormatState.copyfmt(std::cout);
383 auto c1 = ROL::makePtr<ROL::StdVector<RealT>>(c1_dim);
384 auto c2 = ROL::makePtr<ROL::StdVector<RealT>>(c2_dim);
385 auto u = ROL::makePtr<ROL::StdVector<RealT>>(u_dim);
386 auto z = ROL::makePtr<ROL::StdVector<RealT>>(z_dim);
387 auto vc1 = ROL::makePtr<ROL::StdVector<RealT>>(c1_dim);
388 auto vc2 = ROL::makePtr<ROL::StdVector<RealT>>(c2_dim);
389 auto vu = ROL::makePtr<ROL::StdVector<RealT>>(u_dim);
390 auto vz = ROL::makePtr<ROL::StdVector<RealT>>(z_dim);
391 auto du = ROL::makePtr<ROL::StdVector<RealT>>(u_dim);
392 auto dz = ROL::makePtr<ROL::StdVector<RealT>>(z_dim);
393 c1->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
394 c2->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
395 u->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
396 z->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
397 vc1->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
398 vc2->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
399 vu->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
400 vz->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
401 du->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
402 dz->randomize(
static_cast<RealT>(-1),
static_cast<RealT>(1));
404 auto con1 = ROL::makePtr<constraint1<RealT>>();
405 auto con2 = ROL::makePtr<constraint2<RealT>>();
406 auto stateStore = ROL::makePtr<ROL::VectorController<RealT>>();
407 auto rcon = ROL::makePtr<ROL::Reduced_Constraint_SimOpt<RealT>>(con2,con1,stateStore,u,z,vc1,c2,
true,
false);
409 con1->checkSolve(*u,*z,*c1,
true,*outStream);
410 con1->checkAdjointConsistencyJacobian_1(*vc1,*vu,*u,*z,
true,*outStream);
411 con1->checkAdjointConsistencyJacobian_2(*vc1,*vz,*u,*z,
true,*outStream);
412 con1->checkInverseJacobian_1(*c1,*vu,*u,*z,
true,*outStream);
413 con1->checkInverseAdjointJacobian_1(*c1,*vu,*u,*z,
true,*outStream);
414 con1->checkApplyJacobian_1(*u,*z,*vu,*vc1,
true,*outStream);
415 con1->checkApplyJacobian_2(*u,*z,*vz,*vc1,
true,*outStream);
416 con1->checkApplyAdjointHessian_11(*u,*z,*vc1,*vu,*du,
true,*outStream);
417 con1->checkApplyAdjointHessian_12(*u,*z,*vc1,*vu,*dz,
true,*outStream);
418 con1->checkApplyAdjointHessian_21(*u,*z,*vc1,*vz,*du,
true,*outStream);
419 con1->checkApplyAdjointHessian_22(*u,*z,*vc1,*vz,*dz,
true,*outStream);
421 con2->checkAdjointConsistencyJacobian_1(*vc2,*vu,*u,*z,
true,*outStream);
422 con2->checkAdjointConsistencyJacobian_2(*vc2,*vz,*u,*z,
true,*outStream);
423 con2->checkApplyJacobian_1(*u,*z,*vu,*vc2,
true,*outStream);
424 con2->checkApplyJacobian_2(*u,*z,*vz,*vc2,
true,*outStream);
425 con2->checkApplyAdjointHessian_11(*u,*z,*vc2,*vu,*du,
true,*outStream);
426 con2->checkApplyAdjointHessian_12(*u,*z,*vc2,*vu,*dz,
true,*outStream);
427 con2->checkApplyAdjointHessian_21(*u,*z,*vc2,*vz,*du,
true,*outStream);
428 con2->checkApplyAdjointHessian_22(*u,*z,*vc2,*vz,*dz,
true,*outStream);
430 rcon->checkAdjointConsistencyJacobian(*vc2,*vz,*z,
true,*outStream);
431 rcon->checkApplyJacobian(*z,*vz,*vc2,
true,*outStream);
432 rcon->checkApplyAdjointHessian(*z,*vc2,*vz,*dz,
true,*outStream);
434 catch (std::logic_error& err) {
435 *outStream << err.what() <<
"\n";
440 std::cout <<
"End Result: TEST FAILED\n";
442 std::cout <<
"End Result: TEST PASSED\n";