32 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
35 auto model = rcp(
new Tempus_Test::SinCosModel<double>());
36 auto inArgsIC = model->getNominalValues();
37 auto icSolution = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
38 auto icState = Tempus::createSolutionStateX<double>(icSolution);
39 sh->addState(icState);
41 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
44 TEST_COMPARE ( sh->getNumStates(), ==, 1);
45 TEST_COMPARE ( sh->getInterpolator()->order(), ==, 0);
47 TEST_COMPARE ( sh->getStorageLimit(), ==, 2);
50 sh->setName (
"Testing"); TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
52 sh->setStorageTypeString (
"Static"); sh->initialize(); TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
53 sh->setStorageLimit(99); sh->initialize(); TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
55 TEST_COMPARE( sh->getName () , ==,
"Testing");
57 TEST_COMPARE( sh->getStorageTypeString(), ==,
"Static");
58 TEST_COMPARE( sh->getStorageLimit() , ==, 99);
60 TEST_FLOATING_EQUALITY( sh->minTime(), 0.0, 1.0e-14);
61 TEST_FLOATING_EQUALITY( sh->maxTime(), 0.0, 1.0e-14);
129 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
132 auto model = rcp(
new Tempus_Test::DahlquistTestModel<double>(-1.0,
false));
133 auto inArgsIC = model->getNominalValues();
134 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
135 auto state0 = Tempus::createSolutionStateX<double>(icSoln);
136 state0->setTime (0.0);
139 sh->setStorageTypeString (
"Keep Newest");
140 sh->addState(state0);
142 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
144 TEST_COMPARE ( sh->getNumStates(), ==, 1);
145 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 0.0, 1.0e-14);
146 TEST_COMPARE ( sh->getCurrentIndex(), ==, 0);
147 TEST_FLOATING_EQUALITY( sh->minTime(), 0.0, 1.0e-14);
148 TEST_FLOATING_EQUALITY( sh->maxTime(), 0.0, 1.0e-14);
150 TEUCHOS_ASSERT(sh->getCurrentState () != Teuchos::null);
151 TEUCHOS_ASSERT(sh->getStateTimeIndexN (
false) != Teuchos::null);
152 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1(
false) == Teuchos::null);
153 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2(
false) == Teuchos::null);
154 TEUCHOS_ASSERT(sh->getStateTimeIndex (0,
false) != Teuchos::null);
156 TEST_COMPARE( sh->getStateTimeIndexN ()->getIndex(), ==, 0);
157 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexN ()->getTime(), 0.0, 1.0e-14);
162 auto state1 = Tempus::createSolutionStateX<double>(icSoln);
163 state1->setTime (1.0);
165 sh->addState(state1);
167 TEST_COMPARE ( sh->getNumStates(), ==, 1);
168 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 1.0, 1.0e-14);
169 TEST_COMPARE ( sh->getCurrentIndex(), ==, 1);
170 TEST_FLOATING_EQUALITY( sh->minTime(), 1.0, 1.0e-14);
171 TEST_FLOATING_EQUALITY( sh->maxTime(), 1.0, 1.0e-14);
173 TEUCHOS_ASSERT(sh->getCurrentState () != Teuchos::null);
174 TEUCHOS_ASSERT(sh->getStateTimeIndexN (
false) != Teuchos::null);
175 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1(
false) == Teuchos::null);
176 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2(
false) == Teuchos::null);
177 TEUCHOS_ASSERT(sh->getStateTimeIndex (0,
false) == Teuchos::null);
178 TEUCHOS_ASSERT(sh->getStateTimeIndex (1,
false) != Teuchos::null);
180 TEST_COMPARE( sh->getStateTimeIndexN ()->getIndex(), ==, 1);
181 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexN ()->getTime(), 1.0, 1.0e-14);
186 auto state2 = Tempus::createSolutionStateX<double>(icSoln);
187 state2->setTime (-1.0);
188 state2->setIndex(-1);
189 sh->addState(state2);
192 TEST_COMPARE ( sh->getNumStates(), ==, 1);
193 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 1.0, 1.0e-14);
194 TEST_COMPARE ( sh->getCurrentIndex(), ==, 1);
195 TEST_FLOATING_EQUALITY( sh->minTime(), 1.0, 1.0e-14);
196 TEST_FLOATING_EQUALITY( sh->maxTime(), 1.0, 1.0e-14);
198 TEUCHOS_ASSERT(sh->getCurrentState () != Teuchos::null);
199 TEUCHOS_ASSERT(sh->getStateTimeIndexN (
false) != Teuchos::null);
200 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1(
false) == Teuchos::null);
201 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2(
false) == Teuchos::null);
202 TEUCHOS_ASSERT(sh->getStateTimeIndex (0,
false) == Teuchos::null);
203 TEUCHOS_ASSERT(sh->getStateTimeIndex (1,
false) != Teuchos::null);
205 TEST_COMPARE( sh->getStateTimeIndexN ()->getIndex(), ==, 1);
206 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexN ()->getTime(), 1.0, 1.0e-14);
219 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
222 auto model = rcp(
new Tempus_Test::DahlquistTestModel<double>(-1.0,
false));
223 auto inArgsIC = model->getNominalValues();
224 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
225 auto state0 = Tempus::createSolutionStateX<double>(icSoln);
226 state0->setTime (0.0);
228 sh->addState(state0);
230 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
232 TEST_COMPARE ( sh->getNumStates(), ==, 1);
233 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 0.0, 1.0e-14);
234 TEST_COMPARE ( sh->getCurrentIndex(), ==, 0);
235 TEST_FLOATING_EQUALITY( sh->minTime(), 0.0, 1.0e-14);
236 TEST_FLOATING_EQUALITY( sh->maxTime(), 0.0, 1.0e-14);
238 TEUCHOS_ASSERT(sh->getCurrentState () != Teuchos::null);
239 TEUCHOS_ASSERT(sh->getStateTimeIndexN (
false) != Teuchos::null);
240 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1(
false) == Teuchos::null);
241 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2(
false) == Teuchos::null);
242 TEUCHOS_ASSERT(sh->getStateTimeIndex (0,
false) != Teuchos::null);
244 TEST_COMPARE( sh->getStateTimeIndexN ()->getIndex(), ==, 0);
245 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexN ()->getTime(), 0.0, 1.0e-14);
250 auto state1 = Tempus::createSolutionStateX<double>(icSoln);
251 state1->setTime (1.0);
253 sh->addState(state1);
255 TEST_COMPARE ( sh->getNumStates(), ==, 2);
256 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 1.0, 1.0e-14);
257 TEST_COMPARE ( sh->getCurrentIndex(), ==, 1);
258 TEST_FLOATING_EQUALITY( sh->minTime(), 0.0, 1.0e-14);
259 TEST_FLOATING_EQUALITY( sh->maxTime(), 1.0, 1.0e-14);
261 TEUCHOS_ASSERT(sh->getCurrentState () != Teuchos::null);
262 TEUCHOS_ASSERT(sh->getStateTimeIndexN (
false) != Teuchos::null);
263 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1(
false) != Teuchos::null);
264 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2(
false) == Teuchos::null);
265 TEUCHOS_ASSERT(sh->getStateTimeIndex (0,
false) != Teuchos::null);
266 TEUCHOS_ASSERT(sh->getStateTimeIndex (1,
false) != Teuchos::null);
268 TEST_COMPARE( sh->getStateTimeIndexN ()->getIndex(), ==, 1);
269 TEST_COMPARE( sh->getStateTimeIndexNM1()->getIndex(), ==, 0);
270 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexN ()->getTime(), 1.0, 1.0e-14);
271 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexNM1()->getTime(), 0.0, 1.0e-14);
276 auto state2 = Tempus::createSolutionStateX<double>(icSoln);
277 state2->setTime (2.0);
279 sh->addState(state2);
281 TEST_COMPARE ( sh->getNumStates(), ==, 2);
282 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 2.0, 1.0e-14);
283 TEST_COMPARE ( sh->getCurrentIndex(), ==, 2);
284 TEST_FLOATING_EQUALITY( sh->minTime(), 1.0, 1.0e-14);
285 TEST_FLOATING_EQUALITY( sh->maxTime(), 2.0, 1.0e-14);
287 TEUCHOS_ASSERT(sh->getCurrentState () != Teuchos::null);
288 TEUCHOS_ASSERT(sh->getStateTimeIndexN (
false) != Teuchos::null);
289 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1(
false) != Teuchos::null);
290 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2(
false) == Teuchos::null);
291 TEUCHOS_ASSERT(sh->getStateTimeIndex (1,
false) != Teuchos::null);
292 TEUCHOS_ASSERT(sh->getStateTimeIndex (2,
false) != Teuchos::null);
294 TEST_COMPARE( sh->getStateTimeIndexN ()->getIndex(), ==, 2);
295 TEST_COMPARE( sh->getStateTimeIndexNM1()->getIndex(), ==, 1);
296 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexN ()->getTime(), 2.0, 1.0e-14);
297 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexNM1()->getTime(), 1.0, 1.0e-14);
302 sh->addState(state0);
305 TEST_COMPARE ( sh->getNumStates(), ==, 2);
306 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 2.0, 1.0e-14);
307 TEST_COMPARE ( sh->getCurrentIndex(), ==, 2);
308 TEST_FLOATING_EQUALITY( sh->minTime(), 1.0, 1.0e-14);
309 TEST_FLOATING_EQUALITY( sh->maxTime(), 2.0, 1.0e-14);
311 TEUCHOS_ASSERT(sh->getCurrentState () != Teuchos::null);
312 TEUCHOS_ASSERT(sh->getStateTimeIndexN (
false) != Teuchos::null);
313 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1(
false) != Teuchos::null);
314 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2(
false) == Teuchos::null);
315 TEUCHOS_ASSERT(sh->getStateTimeIndex (1,
false) != Teuchos::null);
316 TEUCHOS_ASSERT(sh->getStateTimeIndex (2,
false) != Teuchos::null);
318 TEST_COMPARE( sh->getStateTimeIndexN ()->getIndex(), ==, 2);
319 TEST_COMPARE( sh->getStateTimeIndexNM1()->getIndex(), ==, 1);
320 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexN ()->getTime(), 2.0, 1.0e-14);
321 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexNM1()->getTime(), 1.0, 1.0e-14);
334 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
336 sh->setStorageTypeString (
"Static");
337 sh->setStorageLimit(7);
339 auto model = rcp(
new Tempus_Test::DahlquistTestModel<double>(-1.0,
false));
340 auto inArgsIC = model->getNominalValues();
344 for (
size_t i=0; i < 13; ++i) {
345 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
346 auto stateI = Tempus::createSolutionStateX<double>(icSoln);
347 stateI->setTime (i*0.9);
348 stateI->setTimeStep(0.9);
350 sh->addState(stateI);
353 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
355 sh->describe(out, Teuchos::VERB_MEDIUM);
357 TEST_COMPARE ( sh->getNumStates(), ==, 7);
358 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 10.8, 1.0e-14);
359 TEST_COMPARE ( sh->getCurrentIndex(), ==, 12);
360 TEST_FLOATING_EQUALITY( sh->minTime(), 5.4, 1.0e-14);
361 TEST_FLOATING_EQUALITY( sh->maxTime(), 10.8, 1.0e-14);
363 TEUCHOS_ASSERT(sh->getCurrentState () != Teuchos::null);
364 TEUCHOS_ASSERT(sh->getStateTimeIndexN () != Teuchos::null);
365 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1() != Teuchos::null);
366 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2() != Teuchos::null);
367 TEUCHOS_ASSERT(sh->getStateTimeIndex (7)!= Teuchos::null);
369 TEST_COMPARE( sh->getStateTimeIndexN ()->getIndex(), ==, 12);
370 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexN ()->getTime(), 10.8, 1.0e-14);
372 TEST_COMPARE( sh->getStateTimeIndexNM1()->getIndex(), ==, 11);
373 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexNM1()->getTime(), 9.9, 1.0e-14);
375 TEST_COMPARE( sh->getStateTimeIndexNM2()->getIndex(), ==, 10);
376 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexNM2()->getTime(), 9.0, 1.0e-14);
378 TEST_COMPARE( sh->getStateTimeIndex (7)->getIndex(), ==, 7);
379 TEST_FLOATING_EQUALITY( sh->getStateTimeIndex (7)->getTime(), 6.3, 1.0e-14);
386 for (
size_t i=0; i < 3; ++i) {
387 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
388 auto stateI = Tempus::createSolutionStateX<double>(icSoln);
389 stateI->setTime (2*i*0.9+6.3);
390 stateI->setTimeStep(0.9);
391 stateI->setIndex(2*i+7);
392 sh->addState(stateI);
394 for (
size_t i=0; i < 4; ++i) {
395 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
396 auto stateI = Tempus::createSolutionStateX<double>(icSoln);
397 stateI->setTime (2*i*0.9+5.4);
398 stateI->setTimeStep(0.9);
399 stateI->setIndex(2*i+6);
400 sh->addState(stateI);
403 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
405 sh->describe(out, Teuchos::VERB_MEDIUM);
407 TEST_COMPARE ( sh->getNumStates(), ==, 7);
408 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 10.8, 1.0e-14);
409 TEST_COMPARE ( sh->getCurrentIndex(), ==, 12);
410 TEST_FLOATING_EQUALITY( sh->minTime(), 5.4, 1.0e-14);
411 TEST_FLOATING_EQUALITY( sh->maxTime(), 10.8, 1.0e-14);
413 TEUCHOS_ASSERT(sh->getCurrentState () != Teuchos::null);
414 TEUCHOS_ASSERT(sh->getStateTimeIndexN () != Teuchos::null);
415 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1() != Teuchos::null);
416 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2() != Teuchos::null);
417 TEUCHOS_ASSERT(sh->getStateTimeIndex (7)!= Teuchos::null);
419 TEST_COMPARE( sh->getStateTimeIndexN ()->getIndex(), ==, 12);
420 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexN ()->getTime(), 10.8, 1.0e-14);
422 TEST_COMPARE( sh->getStateTimeIndexNM1()->getIndex(), ==, 11);
423 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexNM1()->getTime(), 9.9, 1.0e-14);
425 TEST_COMPARE( sh->getStateTimeIndexNM2()->getIndex(), ==, 10);
426 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexNM2()->getTime(), 9.0, 1.0e-14);
428 TEST_COMPARE( sh->getStateTimeIndex (7)->getIndex(), ==, 7);
429 TEST_FLOATING_EQUALITY( sh->getStateTimeIndex (7)->getTime(), 6.3, 1.0e-14);
442 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
444 sh->setStorageTypeString (
"Static");
445 sh->setStorageLimit(7);
447 auto model = rcp(
new Tempus_Test::DahlquistTestModel<double>(-1.0,
false));
448 auto inArgsIC = model->getNominalValues();
451 for (
size_t i=0; i < 13; ++i) {
452 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
453 auto stateI = Tempus::createSolutionStateX<double>(icSoln);
454 stateI->setTime (i*0.9);
455 stateI->setTimeStep(0.9);
457 sh->addState(stateI);
460 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
462 sh->describe(out, Teuchos::VERB_MEDIUM);
464 sh->removeState(sh->getStateTimeIndex(6));
465 sh->removeState( 7.2);
466 sh->removeState(sh->getStateTimeIndex(10));
467 sh->removeState(10.8);
469 sh->describe(out, Teuchos::VERB_MEDIUM);
471 TEST_COMPARE ( sh->getNumStates(), ==, 3);
472 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 9.9, 1.0e-14);
473 TEST_COMPARE ( sh->getCurrentIndex(), ==, 11);
474 TEST_FLOATING_EQUALITY( sh->minTime(), 6.3, 1.0e-14);
475 TEST_FLOATING_EQUALITY( sh->maxTime(), 9.9, 1.0e-14);
477 TEUCHOS_ASSERT(sh->getCurrentState () != Teuchos::null);
478 TEUCHOS_ASSERT(sh->getStateTimeIndexN () != Teuchos::null);
479 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1() == Teuchos::null);
480 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2() != Teuchos::null);
481 TEUCHOS_ASSERT(sh->getStateTimeIndex (7)!= Teuchos::null);
483 TEST_COMPARE( sh->getStateTimeIndexN ()->getIndex(), ==, 11);
484 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexN ()->getTime(), 9.9, 1.0e-14);
486 TEST_COMPARE( sh->getStateTimeIndexNM2()->getIndex(), ==, 9);
487 TEST_FLOATING_EQUALITY( sh->getStateTimeIndexNM2()->getTime(), 8.1, 1.0e-14);
500 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
503 auto model = rcp(
new Tempus_Test::DahlquistTestModel<double>(-1.0,
false));
504 auto inArgsIC = model->getNominalValues();
505 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
506 auto state0 = Tempus::createSolutionStateX<double>(icSoln);
507 state0->setTime (0.0);
508 state0->setTimeStep(1.0);
510 sh->addState(state0);
512 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
517 TEST_COMPARE ( sh->getNumStates(), ==, 1);
518 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
519 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexN());
520 TEUCHOS_ASSERT(sh->getWorkingState() == Teuchos::null);
522 sh->initWorkingState();
525 TEST_COMPARE ( sh->getNumStates(), ==, 2);
526 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 0.0, 1.0e-14);
527 TEST_COMPARE ( sh->getCurrentIndex(), ==, 0);
528 TEST_FLOATING_EQUALITY( sh->minTime(), 0.0, 1.0e-14);
529 TEST_FLOATING_EQUALITY( sh->maxTime(), 1.0, 1.0e-14);
531 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
532 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
533 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
534 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
536 TEST_COMPARE ( sh->getCurrentState()->getIndex(), ==, 0);
537 TEST_FLOATING_EQUALITY( sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
539 TEST_COMPARE ( sh->getWorkingState()->getIndex(), ==, 1);
540 TEST_FLOATING_EQUALITY( sh->getWorkingState()->getTime(), 1.0, 1.0e-14);
553 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
556 auto model = rcp(
new Tempus_Test::DahlquistTestModel<double>(-1.0,
false));
557 auto inArgsIC = model->getNominalValues();
558 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
559 auto state0 = Tempus::createSolutionStateX<double>(icSoln);
560 state0->setTime (0.0);
561 state0->setTimeStep(1.0);
563 sh->addState(state0);
565 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
567 auto state1 = Tempus::createSolutionStateX<double>(icSoln);
568 state1->setTime (1.0);
569 state1->setTimeStep(1.0);
571 sh->addWorkingState(state1);
577 TEST_COMPARE ( sh->getNumStates(), ==, 2);
578 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 0.0, 1.0e-14);
579 TEST_COMPARE ( sh->getCurrentIndex(), ==, 0);
580 TEST_FLOATING_EQUALITY( sh->minTime(), 0.0, 1.0e-14);
581 TEST_FLOATING_EQUALITY( sh->maxTime(), 1.0, 1.0e-14);
583 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
584 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
585 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
586 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
588 TEST_COMPARE ( sh->getCurrentState()->getIndex(), ==, 0);
589 TEST_FLOATING_EQUALITY( sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
591 TEST_COMPARE ( sh->getWorkingState()->getIndex(), ==, 1);
592 TEST_FLOATING_EQUALITY( sh->getWorkingState()->getTime(), 1.0, 1.0e-14);
594 sh->initWorkingState();
598 TEST_COMPARE ( sh->getNumStates(), ==, 2);
599 TEST_FLOATING_EQUALITY( sh->getCurrentTime(), 0.0, 1.0e-14);
600 TEST_COMPARE ( sh->getCurrentIndex(), ==, 0);
601 TEST_FLOATING_EQUALITY( sh->minTime(), 0.0, 1.0e-14);
602 TEST_FLOATING_EQUALITY( sh->maxTime(), 1.0, 1.0e-14);
604 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
605 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
606 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
607 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
609 TEST_COMPARE ( sh->getCurrentState()->getIndex(), ==, 0);
610 TEST_FLOATING_EQUALITY( sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
612 TEST_COMPARE ( sh->getWorkingState()->getIndex(), ==, 1);
613 TEST_FLOATING_EQUALITY( sh->getWorkingState()->getTime(), 1.0, 1.0e-14);
626 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
629 auto model = rcp(
new Tempus_Test::DahlquistTestModel<double>(-1.0,
false));
630 auto inArgsIC = model->getNominalValues();
631 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
632 auto state0 = Tempus::createSolutionStateX<double>(icSoln);
633 state0->setTime (0.0);
634 state0->setTimeStep(1.0);
636 sh->addState(state0);
638 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
639 sh->initWorkingState();
644 TEST_COMPARE ( sh->getNumStates(), ==, 2);
645 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
646 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
647 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
648 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
650 TEST_COMPARE ( sh->getCurrentState()->getIndex(), ==, 0);
651 TEST_FLOATING_EQUALITY( sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
653 TEST_COMPARE ( sh->getWorkingState()->getIndex(), ==, 1);
654 TEST_FLOATING_EQUALITY( sh->getWorkingState()->getTime(), 1.0, 1.0e-14);
656 sh->promoteWorkingState();
659 TEST_COMPARE ( sh->getNumStates(), ==, 2);
660 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
661 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexN());
662 TEUCHOS_ASSERT(sh->getWorkingState() == Teuchos::null);
665 TEST_COMPARE ( sh->getCurrentState()->getIndex(), ==, 1);
666 TEST_FLOATING_EQUALITY( sh->getCurrentState()->getTime(), 1.0, 1.0e-14);
679 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
682 auto model = rcp(
new Tempus_Test::DahlquistTestModel<double>(-1.0,
false));
683 auto inArgsIC = model->getNominalValues();
684 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
685 auto state0 = Tempus::createSolutionStateX<double>(icSoln);
686 state0->setTime (0.0);
687 state0->setTimeStep(1.0);
689 sh->addState(state0);
691 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
692 sh->initWorkingState();
697 TEST_COMPARE ( sh->getNumStates(), ==, 2);
698 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
699 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
700 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
701 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
703 TEST_COMPARE ( sh->getCurrentState()->getIndex(), ==, 0);
704 TEST_FLOATING_EQUALITY( sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
706 TEST_COMPARE ( sh->getWorkingState()->getIndex(), ==, 1);
707 TEST_FLOATING_EQUALITY( sh->getWorkingState()->getTime(), 1.0, 1.0e-14);
709 sh->promoteWorkingState();
713 TEST_COMPARE ( sh->getNumStates(), ==, 2);
714 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
715 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
716 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
717 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
720 TEST_COMPARE ( sh->getCurrentState()->getIndex(), ==, 0);
721 TEST_FLOATING_EQUALITY( sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
724 TEST_COMPARE ( sh->getWorkingState()->getIndex(), ==, 1);
725 TEST_FLOATING_EQUALITY( sh->getWorkingState()->getTime(), 1.0, 1.0e-14);