57 #include "Teuchos_oblackholestream.hpp" 58 #include "Teuchos_XMLParameterListHelpers.hpp" 59 #include "Teuchos_GlobalMPISession.hpp" 60 #include "Teuchos_Comm.hpp" 61 #include "Teuchos_DefaultComm.hpp" 62 #include "Teuchos_CommHelpers.hpp" 77 int main(
int argc,
char *argv[]) {
79 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
80 Teuchos::RCP<const Teuchos::Comm<int> > comm
81 = Teuchos::DefaultComm<int>::getComm();
84 int iprint = argc - 1;
85 bool print = (iprint>0) && !(comm->getRank());
86 Teuchos::RCP<std::ostream> outStream;
87 Teuchos::oblackholestream bhs;
89 outStream = Teuchos::rcp(&std::cout,
false);
91 outStream = Teuchos::rcp(&bhs,
false);
106 Teuchos::RCP<BurgersFEM<RealT> > fem
108 fem->test_inverse_mass(*outStream);
109 fem->test_inverse_H1(*outStream);
113 Teuchos::RCP<std::vector<RealT> > ud_rcp
114 = Teuchos::rcp(
new std::vector<RealT> (nx, 1.0) );
115 Teuchos::RCP<ROL::Vector<RealT> > ud
117 Teuchos::RCP<ROL::ParametrizedObjective_SimOpt<RealT> > pobj
123 Teuchos::RCP<ROL::ParametrizedEqualityConstraint_SimOpt<RealT> > pcon
129 Teuchos::RCP<std::vector<RealT> > z_rcp
130 = Teuchos::rcp(
new std::vector<RealT> (nx+2, 1.0) );
131 Teuchos::RCP<std::vector<RealT> > gz_rcp
132 = Teuchos::rcp(
new std::vector<RealT> (nx+2, 1.0) );
133 Teuchos::RCP<std::vector<RealT> > yz_rcp
134 = Teuchos::rcp(
new std::vector<RealT> (nx+2, 1.0) );
135 for (
int i=0; i<nx+2; i++) {
136 (*z_rcp)[i] = 2.0*random<RealT>(comm)-1.0;
137 (*yz_rcp)[i] = 2.0*random<RealT>(comm)-1.0;
139 Teuchos::RCP<ROL::Vector<RealT> > zp
141 Teuchos::RCP<ROL::Vector<RealT> > gzp
143 Teuchos::RCP<ROL::Vector<RealT> > yzp
145 RealT zvar = 0.0*random<RealT>(comm);
146 RealT gvar = random<RealT>(comm);
147 RealT yvar = random<RealT>(comm);
150 Teuchos::RCP<std::vector<RealT> > u_rcp
151 = Teuchos::rcp(
new std::vector<RealT> (nx, 1.0) );
152 Teuchos::RCP<std::vector<RealT> > gu_rcp
153 = Teuchos::rcp(
new std::vector<RealT> (nx, 1.0) );
154 for (
int i=0; i<nx; i++) {
155 (*u_rcp)[i] = 2.0*random<RealT>(comm)-1.0;
157 Teuchos::RCP<ROL::Vector<RealT> > up
159 Teuchos::RCP<ROL::Vector<RealT> > gup
162 Teuchos::RCP<std::vector<RealT> > c_rcp
163 = Teuchos::rcp(
new std::vector<RealT> (nx, 1.0) );
164 Teuchos::RCP<std::vector<RealT> > l_rcp
165 = Teuchos::rcp(
new std::vector<RealT> (nx, 1.0) );
166 for (
int i=0; i<nx; i++) {
167 (*l_rcp)[i] = random<RealT>(comm);
169 Teuchos::RCP<ROL::Vector<RealT> > cp
171 Teuchos::RCP<ROL::Vector<RealT> > lp
176 int dim = 4, nSamp = 10000;
177 std::vector<RealT> tmp(2,0.0); tmp[0] = -1.0; tmp[1] = 1.0;
178 std::vector<std::vector<RealT> > bounds(dim,tmp);
179 Teuchos::RCP<ROL::BatchManager<RealT> > bman
181 Teuchos::RCP<ROL::SampleGenerator<RealT> > sampler
183 nSamp,bounds,bman,
false,
false,100));
187 bool storage =
true, fdhess =
false;
188 Teuchos::RCP<ROL::ParametrizedObjective<RealT> > robj
190 pobj,pcon,up,lp,gup,cp,storage,fdhess));
191 RealT order = 2.0, prob = 0.95;
192 Teuchos::RCP<ROL::Objective<RealT> > obj
194 robj,order,prob,sampler,storage));
199 bool derivcheck =
false;
201 for (
int i = sampler->start(); i < sampler->numMySamples(); i++) {
202 *outStream <<
"Sample " << i <<
" Rank " << sampler->batchID() <<
"\n";
203 *outStream <<
"(" << sampler->getMyPoint(i)[0] <<
", " 204 << sampler->getMyPoint(i)[1] <<
", " 205 << sampler->getMyPoint(i)[2] <<
", " 206 << sampler->getMyPoint(i)[3] <<
")\n";
207 pcon->setParameter(sampler->getMyPoint(i));
208 pcon->checkSolve(*up,*zp,*cp,print,*outStream);
209 robj->setParameter(sampler->getMyPoint(i));
210 robj->checkGradient(*zp,*gzp,*yzp,print,*outStream);
211 robj->checkHessVec(*zp,*gzp,*yzp,print,*outStream);
214 obj->checkGradient(z,g,y,print,*outStream);
215 obj->checkHessVec(z,g,y,print,*outStream);
220 std::string filename =
"input.xml";
221 Teuchos::RCP<Teuchos::ParameterList> parlist
222 = Teuchos::rcp(
new Teuchos::ParameterList() );
223 Teuchos::updateParametersFromXmlFile( filename, parlist.ptr() );
228 algo.run(z, g, *obj, print, *outStream);
233 for (
int i = 0; i < nx+2; i++ ) {
234 *outStream << std::scientific << std::setprecision(10);
235 *outStream << std::setw(20) << std::left << (
RealT)i/((
RealT)nx+1.0);
236 *outStream << std::setw(20) << std::left << (*z_rcp)[i];
240 *outStream <<
"Scalar Parameter: " << z.getVaR() <<
"\n";
242 catch (std::logic_error err) {
243 *outStream << err.what() <<
"\n";
249 std::cout <<
"End Result: TEST FAILED\n";
251 std::cout <<
"End Result: TEST PASSED\n";
H1VectorDual< RealT > PrimalConstraintVector
int main(int argc, char *argv[])
H1VectorPrimal< RealT > DualConstraintVector
L2VectorDual< RealT > DualControlVector
Provides an interface to run optimization algorithms.
H1VectorDual< RealT > DualStateVector
L2VectorPrimal< RealT > PrimalControlVector
H1VectorPrimal< RealT > PrimalStateVector