50 #include "Teuchos_GlobalMPISession.hpp"
51 #include "Teuchos_Comm.hpp"
52 #include "Teuchos_DefaultComm.hpp"
53 #include "Teuchos_CommHelpers.hpp"
69 int main(
int argc,
char *argv[]) {
71 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
74 int iprint = argc - 1;
75 bool print = (iprint>0);
76 ROL::Ptr<std::ostream> outStream;
79 outStream = ROL::makePtrFromRef(std::cout);
81 outStream = ROL::makePtrFromRef(bhs);
95 ROL::Ptr<BurgersFEM<RealT> > fem
96 = ROL::makePtr<BurgersFEM<RealT>>(nx,nl,cH1,cL2);
97 fem->test_inverse_mass(*outStream);
98 fem->test_inverse_H1(*outStream);
103 ROL::Ptr<ROL::Constraint_SimOpt<RealT> > con
104 = ROL::makePtr<Constraint_BurgersControl<RealT>>(fem,hess);
109 ROL::Ptr<std::vector<RealT> > z_ptr
110 = ROL::makePtr<std::vector<RealT>>(nx+2, 0.0);
111 ROL::Ptr<ROL::Vector<RealT> > zp
112 = ROL::makePtr<PrimalControlVector>(z_ptr,fem);
114 ROL::Ptr<std::vector<RealT> > u_ptr
115 = ROL::makePtr<std::vector<RealT>>(nx, 1.0);
116 ROL::Ptr<ROL::Vector<RealT> > up
117 = ROL::makePtr<PrimalStateVector>(u_ptr,fem);
119 ROL::Ptr<std::vector<RealT> > c_ptr
120 = ROL::makePtr<std::vector<RealT>>(nx, 1.0);
121 ROL::Ptr<ROL::Vector<RealT> > cp
122 = ROL::makePtr<PrimalConstraintVector>(c_ptr,fem);
126 RealT rnorm(0), cnorm(0);
127 ROL::ParameterList list;
128 RealT tol = std::sqrt(ROL::ROL_EPSILON<RealT>());
129 list.sublist(
"SimOpt").sublist(
"Solve").set(
"Output Iteration History",print);
130 list.sublist(
"SimOpt").sublist(
"Solve").set(
"Step Tolerance",ROL::ROL_EPSILON<RealT>());
132 list.sublist(
"SimOpt").sublist(
"Solve").set(
"Absolute Residual Tolerance",tol);
133 list.sublist(
"SimOpt").sublist(
"Solve").set(
"Solver Type",0);
134 con->setSolveParameters(list);
135 u_ptr->assign(nx, 1.0);
136 con->solve(*cp,*up,*zp,tol);
138 con->value(*cp,*up,*zp,tol);
140 errorFlag += ((cnorm > tol) ? 1 : 0) + ((rnorm > tol) ? 1 : 0);
141 *outStream << std::scientific << std::setprecision(8);
142 *outStream << std::endl;
143 *outStream <<
"Test SimOpt solve at feasible (u,z):" << std::endl;
144 *outStream <<
" Solver Residual = " << rnorm << std::endl;
145 *outStream <<
" ||c(u,z)|| = " << cnorm;
146 *outStream << std::endl << std::endl;
148 list.sublist(
"SimOpt").sublist(
"Solve").set(
"Absolute Residual Tolerance",1e-4*tol);
149 list.sublist(
"SimOpt").sublist(
"Solve").set(
"Solver Type",1);
150 con->setSolveParameters(list);
151 u_ptr->assign(nx, 1.0);
152 con->solve(*cp,*up,*zp,tol);
154 con->value(*cp,*up,*zp,tol);
156 errorFlag += ((cnorm > tol) ? 1 : 0) + ((rnorm > tol) ? 1 : 0);
157 *outStream << std::scientific << std::setprecision(8);
158 *outStream << std::endl;
159 *outStream <<
"Test SimOpt solve at feasible (u,z):" << std::endl;
160 *outStream <<
" Solver Residual = " << rnorm << std::endl;
161 *outStream <<
" ||c(u,z)|| = " << cnorm;
162 *outStream << std::endl << std::endl;
164 list.sublist(
"SimOpt").sublist(
"Solve").set(
"Absolute Residual Tolerance",tol);
165 list.sublist(
"SimOpt").sublist(
"Solve").set(
"Solver Type",2);
166 con->setSolveParameters(list);
167 u_ptr->assign(nx, 1.0);
168 con->solve(*cp,*up,*zp,tol);
170 con->value(*cp,*up,*zp,tol);
173 errorFlag += ((cnorm > tol) ? 1 : 0) + ((rnorm > tol) ? 1 : 0);
174 *outStream << std::scientific << std::setprecision(8);
175 *outStream << std::endl;
176 *outStream <<
"Test SimOpt solve at feasible (u,z):" << std::endl;
177 *outStream <<
" Solver Residual = " << rnorm << std::endl;
178 *outStream <<
" ||c(u,z)|| = " << cnorm;
179 *outStream << std::endl << std::endl;
181 catch (std::logic_error& err) {
182 *outStream << err.what() <<
"\n";
187 std::cout <<
"End Result: TEST FAILED\n";
189 std::cout <<
"End Result: TEST PASSED\n";
L2VectorPrimal< RealT > PrimalControlVector
Defines a no-output stream class ROL::NullStream and a function makeStreamPtr which either wraps a re...
H1VectorDual< RealT > DualStateVector
L2VectorDual< RealT > DualControlVector
H1VectorDual< RealT > PrimalConstraintVector
basic_nullstream< char, char_traits< char >> nullstream
int main(int argc, char *argv[])
H1VectorPrimal< RealT > PrimalStateVector
H1VectorPrimal< RealT > DualConstraintVector