89 Teuchos::RCP<const Thyra::ModelEvaluator<double> >
94 model->getNominalValues().get_x()->clone_v());
95 solState->setIndex (0);
96 solState->setTime (0.0);
97 solState->setTimeStep(0.0);
99 RCP<Thyra::VectorBase<double> > xDot_n =
100 model->getNominalValues().get_x_dot()->clone_v();
104 double finalTime = 2.0;
105 int nTimeSteps = 2000;
106 const double constDT = finalTime/nTimeSteps;
110 cout << std::setw(8) <<
"index"
111 << std::setw(10) <<
"time"
112 << std::setw(12) <<
"x_0"
113 << std::setw(12) <<
"x_1" << endl;
115 cout << std::setw(8) << solState->getIndex()
116 << std::setw(10) << std::setprecision(3) << solState->getTime()
117 << std::setw(12) << std::setprecision(4) << get_ele(*(solState->getX()), 0)
118 << std::setw(12) << std::setprecision(4) << get_ele(*(solState->getX()), 1)
123 solState->getTime() < finalTime &&
124 solState->getIndex() < nTimeSteps) {
127 RCP<Thyra::VectorBase<double> > x_n = solState->getX();
128 RCP<Thyra::VectorBase<double> > x_np1 = solState->getX()->clone_v();
132 int index = solState->getIndex()+1;
134 double time = index*dt;
138 auto inArgs = model->createInArgs();
139 auto outArgs = model->createOutArgs();
142 inArgs.set_x_dot(Teuchos::null);
143 outArgs.set_f(xDot_n);
146 model->evalModel(inArgs, outArgs);
149 Thyra::V_VpStV(x_np1.ptr(), *x_n, dt, *xDot_n);
152 if ( std::isnan(Thyra::norm(*x_np1)) ) {
156 Thyra::V_V(x_n.ptr(), *x_np1);
157 solState->setIndex (index);
158 solState->setTime (time);
159 solState->setTimeStep(constDT);
164 if (solState->getIndex() % 100 == 0)
165 cout << std::setw(8) << solState->getIndex()
166 << std::setw(10) << std::setprecision(3) << solState->getTime()
167 << std::setw(12) << std::setprecision(4) << get_ele(*(solState->getX()), 0)
168 << std::setw(12) << std::setprecision(4) << get_ele(*(solState->getX()), 1)
176 if (passed && regressionPassed) success =
true;
178 TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success);
181 cout <<
"\nEnd Result: Test Passed!" << std::endl;
183 return ( success ? EXIT_SUCCESS : EXIT_FAILURE );
bool tutorialRegressionTest(const Teuchos::RCP< Thyra::VectorBase< double > > &x_n, std::ostream &out=std::cout, const double relTol=Teuchos::as< double >(1.0e-8))
Regression check for the Tempus tutorial van der Pol examples.
Teuchos::RCP< SolutionState< Scalar > > createSolutionStateX(const Teuchos::RCP< Thyra::VectorBase< Scalar > > &x, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &xdot=Teuchos::null, const Teuchos::RCP< Thyra::VectorBase< Scalar > > &xdotdot=Teuchos::null)
Nonmember constructor from non-const solution vectors, x.