155int main(
int argc,
char *argv[]) {
157 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
160 int iprint = argc - 1;
161 ROL::Ptr<std::ostream> outStream;
164 outStream = ROL::makePtrFromRef(std::cout);
166 outStream = ROL::makePtrFromRef(bhs);
169 ROL::nullstream oldFormatState;
170 oldFormatState.copyfmt(std::cout);
181 int ci_dim = x_dim + 1;
182 int co_dim = x_dim - 1;
184 auto inner_con = ROL::makePtr<InnerConstraint>(x_dim);
185 auto outer_con = ROL::makePtr<OuterConstraint>(ci_dim);
187 auto x = ROL::makePtr<ROL::StdVector<RealT>>(x_dim);
188 auto v = ROL::makePtr<ROL::StdVector<RealT>>(x_dim);
189 auto y = ROL::makePtr<ROL::StdVector<RealT>>(ci_dim);
190 auto w = ROL::makePtr<ROL::StdVector<RealT>>(ci_dim);
191 auto ci = ROL::makePtr<ROL::StdVector<RealT>>(ci_dim);
192 auto co = ROL::makePtr<ROL::StdVector<RealT>>(co_dim);
194 auto cr_con = ROL::makePtr<ROL::ChainRuleConstraint<RealT>>(outer_con,inner_con,*x,*ci);
203 *outStream <<
"\n\nInner Constraint Check:\n\n";
205 inner_con->checkApplyJacobian(*x,*v,*ci,
true,*outStream,7,4);
206 inner_con->checkAdjointConsistencyJacobian(*ci,*v,*x,
true,*outStream);
207 inner_con->checkApplyAdjointHessian(*x,*ci,*v,*x,
true,*outStream,7,4);
209 *outStream <<
"\n\nOuter Constraint Check:\n\n";
210 outer_con->checkApplyJacobian(*y,*w,*co,
true,*outStream,7,4);
211 outer_con->checkAdjointConsistencyJacobian(*co,*w,*y,
true,*outStream);
212 outer_con->checkApplyAdjointHessian(*y,*co,*w,*y,
true,*outStream,7,4);
214 *outStream <<
"\n\nChain Rule Constraint Check:\n\n";
215 cr_con->checkApplyJacobian(*x,*v,*co,
true,*outStream,7,4);
216 cr_con->checkAdjointConsistencyJacobian(*co,*v,*x,
true,*outStream);
217 cr_con->checkApplyAdjointHessian(*x,*co,*v,*x,
true,*outStream,7,4);
220 catch (std::logic_error& err) {
221 *outStream << err.what() <<
"\n";
226 std::cout <<
"End Result: TEST FAILED\n";
228 std::cout <<
"End Result: TEST PASSED\n";
void RandomizeVector(Vector< Real > &x, const Real &lower=0.0, const Real &upper=1.0)
Fill a ROL::Vector with uniformly-distributed random numbers in the interval [lower,...