33 TEST_ASSERT(integrator->isInitialized() ==
false);
35 TEST_COMPARE(integrator->getIntegratorName(), ==,
"Integrator Basic");
36 TEST_COMPARE(integrator->getIntegratorType(), ==,
"Integrator Basic");
37 TEST_COMPARE(integrator->getStepper()->getStepperName(), ==,
"Forward Euler");
38 TEST_ASSERT(integrator->getStepper()->getModel() == Teuchos::null);
39 TEST_ASSERT(integrator->getSolutionHistory() != Teuchos::null);
40 TEST_COMPARE(integrator->getSolutionHistory()->getNumStates(), ==, 0);
41 TEST_ASSERT(integrator->getTimeStepControl() != Teuchos::null);
42 TEST_ASSERT(integrator->getTimeStepControl()->getStepType() ==
"Constant");
43 TEST_ASSERT(integrator->getObserver() != Teuchos::null);
47 integrator->setModel(model);
50 auto inArgsIC = model->getNominalValues();
52 rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
55 solutionHistory->addState(icState);
57 integrator->setSolutionHistory(solutionHistory);
58 integrator->initialize();
60 TEST_ASSERT(integrator->isInitialized() ==
true);
69 stepper->setModel(model);
72 auto inArgsIC = model->getNominalValues();
74 rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
77 solutionHistory->addState(icState);
85 std::vector<int> outputScreenIndices{10, 20, 30};
86 int outputScreenInterval = 72;
90 stepper, solutionHistory, timeStepControl, integratorObserver,
91 outputScreenIndices, outputScreenInterval));
93 TEST_ASSERT(integrator->isInitialized() ==
true);
95 TEST_COMPARE(integrator->getIntegratorName(), ==,
"Integrator Basic");
96 TEST_COMPARE(integrator->getIntegratorType(), ==,
"Integrator Basic");
97 TEST_COMPARE(integrator->getStepper()->getStepperName(), ==,
99 TEST_ASSERT(integrator->getStepper()->getModel() != Teuchos::null);
100 TEST_ASSERT(integrator->getSolutionHistory() != Teuchos::null);
101 TEST_COMPARE(integrator->getSolutionHistory()->getNumStates(), ==, 1);
102 TEST_ASSERT(integrator->getTimeStepControl() != Teuchos::null);
103 TEST_ASSERT(integrator->getTimeStepControl()->getStepType() ==
"Constant");
104 TEST_ASSERT(integrator->getObserver() != Teuchos::null);
105 TEST_ASSERT(integrator->getScreenOutputIndexList() == outputScreenIndices);
106 TEST_ASSERT(integrator->getScreenOutputIndexInterval() ==
107 outputScreenInterval);
115 RCP<ParameterList> pl =
116 Teuchos::getParametersFromXmlFile(
"Tempus_IntegratorBasic_default.xml");
122 RCP<ParameterList> tempusPL = sublist(pl,
"Tempus",
true);
123 RCP<Tempus::IntegratorBasic<double> > integrator =
124 Tempus::createIntegratorBasic<double>(tempusPL, model);
126 std::ostringstream ss;
127 Teuchos::RCP<Teuchos::FancyOStream> myOut =
128 Teuchos::fancyOStream(Teuchos::rcpFromRef(ss));
130 integrator->describe(*myOut, Teuchos::VERB_EXTREME);
132 auto testS = ss.str();
135 auto npos = std::string::npos;
136 TEST_ASSERT(npos != testS.find(
"--- Tempus::IntegratorBasic ---"));
137 TEST_ASSERT(npos != testS.find(
"--- Tempus::SolutionHistory"));
138 TEST_ASSERT(npos != testS.find(
"--- SolutionState (index = 0; time = "
139 " 0; dt = 1e+99) ---"));
140 TEST_ASSERT(npos != testS.find(
"--- Tempus::SolutionStateMetaData ---"));
141 TEST_ASSERT(npos != testS.find(
"--- Tempus::StepperState"));
142 TEST_ASSERT(npos != testS.find(
"--- Tempus::PhysicsState"));
143 TEST_ASSERT(npos != testS.find(
"--- Tempus::TimeStepControl ---"));
145 testS.find(
"--- Tempus::TimeStepControlStrategyConstant ---"));
146 TEST_ASSERT(npos != testS.find(
"--- Stepper ---"));
147 TEST_ASSERT(npos != testS.find(
"stepperType_ = Forward Euler"));
148 TEST_ASSERT(npos != testS.find(
"--- StepperExplicit ---"));
163 auto integrator = Tempus::createIntegratorBasic<double>(
164 model, std::string(
"Backward Euler"));
167 integrator->getNonConstSolutionHistory()->initWorkingState();
170 auto tsc = integrator->getNonConstTimeStepControl();
171 auto ws = integrator->getSolutionHistory()->getWorkingState();
176 ws->setNFailures(11);
177 integrator->checkTimeStep();
184 ws->setNConsecutiveFailures(6);
185 integrator->checkTimeStep();
188 ws->setNConsecutiveFailures(0);
192 ws->setTimeStep(1.0);
194 tsc->setMinTimeStep(1.0);
195 integrator->checkTimeStep();
199 tsc->setMinTimeStep(0.1);
204 integrator->checkTimeStep();
205 TEST_ASSERT(ws->getNFailures() == 1);
206 TEST_ASSERT(ws->getNRunningFailures() == 1);
207 TEST_ASSERT(ws->getNConsecutiveFailures() == 1);
211 ws->setNRunningFailures(0);
212 ws->setNConsecutiveFailures(0);
217 tsc->setTimeStepControlStrategy(tscs);
218 ws->setTimeStep(0.1);
219 tsc->setInitTimeStep(1.0);
220 integrator->checkTimeStep();
221 TEST_ASSERT(ws->getNFailures() == 1);
222 TEST_ASSERT(ws->getNRunningFailures() == 1);
223 TEST_ASSERT(ws->getNConsecutiveFailures() == 1);
234 RCP<Tempus::IntegratorBasic<double> > integrator =
235 Tempus::createIntegratorBasic<double>();
240 RCP<ParameterList> tempusPL =
241 Teuchos::rcp_const_cast<ParameterList>(integrator->getValidParameters());
243 tempusPL->sublist(
"Default Integrator").set(
"Stepper Name",
"Demo Stepper");
244 RCP<ParameterList> stepperPL = Teuchos::parameterList();
245 stepperPL->set(
"Stepper Type",
"Forward Euler");
246 tempusPL->set(
"Demo Stepper", *stepperPL);
250 integrator = Tempus::createIntegratorBasic<double>(tempusPL, model);
253 auto testPL = integrator->getValidParameters();
258 RCP<ParameterList> referencePL =
259 Teuchos::getParametersFromXmlFile(
"Tempus_IntegratorBasic_ref.xml");
261 bool pass = haveSameValuesSorted(*testPL, *referencePL,
true);
264 out <<
"testPL -------------- \n"
265 << *testPL << std::endl;
266 out <<
"referencePL -------------- \n"
267 << *referencePL << std::endl;
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
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.