31 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
35 auto inArgsIC = model->getNominalValues();
37 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");
51 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
54 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
55 sh->setStorageTypeString(
"Static");
57 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
58 sh->setStorageLimit(99);
60 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
62 TEST_COMPARE(sh->getName(), ==,
"Testing");
64 TEST_COMPARE(sh->getStorageTypeString(), ==,
"Static");
65 TEST_COMPARE(sh->getStorageLimit(), ==, 99);
67 TEST_FLOATING_EQUALITY(sh->minTime(), 0.0, 1.0e-14);
68 TEST_FLOATING_EQUALITY(sh->maxTime(), 0.0, 1.0e-14);
131 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
135 auto inArgsIC = model->getNominalValues();
136 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
137 auto state0 = Tempus::createSolutionStateX<double>(icSoln);
138 state0->setTime(0.0);
141 sh->setStorageTypeString(
"Keep Newest");
142 sh->addState(state0);
144 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
146 TEST_COMPARE(sh->getNumStates(), ==, 1);
147 TEST_FLOATING_EQUALITY(sh->getCurrentTime(), 0.0, 1.0e-14);
148 TEST_COMPARE(sh->getCurrentIndex(), ==, 0);
149 TEST_FLOATING_EQUALITY(sh->minTime(), 0.0, 1.0e-14);
150 TEST_FLOATING_EQUALITY(sh->maxTime(), 0.0, 1.0e-14);
152 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
153 TEUCHOS_ASSERT(sh->getStateTimeIndexN(
false) != Teuchos::null);
154 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1(
false) == Teuchos::null);
155 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2(
false) == Teuchos::null);
156 TEUCHOS_ASSERT(sh->getStateTimeIndex(0,
false) != Teuchos::null);
158 TEST_COMPARE(sh->getStateTimeIndexN()->getIndex(), ==, 0);
159 TEST_FLOATING_EQUALITY(sh->getStateTimeIndexN()->getTime(), 0.0, 1.0e-14);
164 auto state1 = Tempus::createSolutionStateX<double>(icSoln);
165 state1->setTime(1.0);
167 sh->addState(state1);
169 TEST_COMPARE(sh->getNumStates(), ==, 1);
170 TEST_FLOATING_EQUALITY(sh->getCurrentTime(), 1.0, 1.0e-14);
171 TEST_COMPARE(sh->getCurrentIndex(), ==, 1);
172 TEST_FLOATING_EQUALITY(sh->minTime(), 1.0, 1.0e-14);
173 TEST_FLOATING_EQUALITY(sh->maxTime(), 1.0, 1.0e-14);
175 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
176 TEUCHOS_ASSERT(sh->getStateTimeIndexN(
false) != Teuchos::null);
177 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1(
false) == Teuchos::null);
178 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2(
false) == Teuchos::null);
179 TEUCHOS_ASSERT(sh->getStateTimeIndex(0,
false) == Teuchos::null);
180 TEUCHOS_ASSERT(sh->getStateTimeIndex(1,
false) != Teuchos::null);
182 TEST_COMPARE(sh->getStateTimeIndexN()->getIndex(), ==, 1);
183 TEST_FLOATING_EQUALITY(sh->getStateTimeIndexN()->getTime(), 1.0, 1.0e-14);
188 auto state2 = Tempus::createSolutionStateX<double>(icSoln);
189 state2->setTime(-1.0);
190 state2->setIndex(-1);
191 sh->addState(state2);
194 TEST_COMPARE(sh->getNumStates(), ==, 1);
195 TEST_FLOATING_EQUALITY(sh->getCurrentTime(), 1.0, 1.0e-14);
196 TEST_COMPARE(sh->getCurrentIndex(), ==, 1);
197 TEST_FLOATING_EQUALITY(sh->minTime(), 1.0, 1.0e-14);
198 TEST_FLOATING_EQUALITY(sh->maxTime(), 1.0, 1.0e-14);
200 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
201 TEUCHOS_ASSERT(sh->getStateTimeIndexN(
false) != Teuchos::null);
202 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1(
false) == Teuchos::null);
203 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2(
false) == Teuchos::null);
204 TEUCHOS_ASSERT(sh->getStateTimeIndex(0,
false) == Teuchos::null);
205 TEUCHOS_ASSERT(sh->getStateTimeIndex(1,
false) != Teuchos::null);
207 TEST_COMPARE(sh->getStateTimeIndexN()->getIndex(), ==, 1);
208 TEST_FLOATING_EQUALITY(sh->getStateTimeIndexN()->getTime(), 1.0, 1.0e-14);
219 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
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);
332 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
334 sh->setStorageTypeString(
"Static");
335 sh->setStorageLimit(7);
338 auto inArgsIC = model->getNominalValues();
342 for (
size_t i = 0; i < 13; ++i) {
343 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
344 auto stateI = Tempus::createSolutionStateX<double>(icSoln);
345 stateI->setTime(i * 0.9);
346 stateI->setTimeStep(0.9);
348 sh->addState(stateI);
351 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
353 sh->describe(out, Teuchos::VERB_MEDIUM);
355 TEST_COMPARE(sh->getNumStates(), ==, 7);
356 TEST_FLOATING_EQUALITY(sh->getCurrentTime(), 10.8, 1.0e-14);
357 TEST_COMPARE(sh->getCurrentIndex(), ==, 12);
358 TEST_FLOATING_EQUALITY(sh->minTime(), 5.4, 1.0e-14);
359 TEST_FLOATING_EQUALITY(sh->maxTime(), 10.8, 1.0e-14);
361 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
362 TEUCHOS_ASSERT(sh->getStateTimeIndexN() != Teuchos::null);
363 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1() != Teuchos::null);
364 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2() != Teuchos::null);
365 TEUCHOS_ASSERT(sh->getStateTimeIndex(7) != Teuchos::null);
367 TEST_COMPARE(sh->getStateTimeIndexN()->getIndex(), ==, 12);
368 TEST_FLOATING_EQUALITY(sh->getStateTimeIndexN()->getTime(), 10.8, 1.0e-14);
370 TEST_COMPARE(sh->getStateTimeIndexNM1()->getIndex(), ==, 11);
371 TEST_FLOATING_EQUALITY(sh->getStateTimeIndexNM1()->getTime(), 9.9, 1.0e-14);
373 TEST_COMPARE(sh->getStateTimeIndexNM2()->getIndex(), ==, 10);
374 TEST_FLOATING_EQUALITY(sh->getStateTimeIndexNM2()->getTime(), 9.0, 1.0e-14);
376 TEST_COMPARE(sh->getStateTimeIndex(7)->getIndex(), ==, 7);
377 TEST_FLOATING_EQUALITY(sh->getStateTimeIndex(7)->getTime(), 6.3, 1.0e-14);
384 for (
size_t i = 0; i < 3; ++i) {
385 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
386 auto stateI = Tempus::createSolutionStateX<double>(icSoln);
387 stateI->setTime(2 * i * 0.9 + 6.3);
388 stateI->setTimeStep(0.9);
389 stateI->setIndex(2 * i + 7);
390 sh->addState(stateI);
392 for (
size_t i = 0; i < 4; ++i) {
393 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
394 auto stateI = Tempus::createSolutionStateX<double>(icSoln);
395 stateI->setTime(2 * i * 0.9 + 5.4);
396 stateI->setTimeStep(0.9);
397 stateI->setIndex(2 * i + 6);
398 sh->addState(stateI);
401 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
403 sh->describe(out, Teuchos::VERB_MEDIUM);
405 TEST_COMPARE(sh->getNumStates(), ==, 7);
406 TEST_FLOATING_EQUALITY(sh->getCurrentTime(), 10.8, 1.0e-14);
407 TEST_COMPARE(sh->getCurrentIndex(), ==, 12);
408 TEST_FLOATING_EQUALITY(sh->minTime(), 5.4, 1.0e-14);
409 TEST_FLOATING_EQUALITY(sh->maxTime(), 10.8, 1.0e-14);
411 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
412 TEUCHOS_ASSERT(sh->getStateTimeIndexN() != Teuchos::null);
413 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1() != Teuchos::null);
414 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2() != Teuchos::null);
415 TEUCHOS_ASSERT(sh->getStateTimeIndex(7) != Teuchos::null);
417 TEST_COMPARE(sh->getStateTimeIndexN()->getIndex(), ==, 12);
418 TEST_FLOATING_EQUALITY(sh->getStateTimeIndexN()->getTime(), 10.8, 1.0e-14);
420 TEST_COMPARE(sh->getStateTimeIndexNM1()->getIndex(), ==, 11);
421 TEST_FLOATING_EQUALITY(sh->getStateTimeIndexNM1()->getTime(), 9.9, 1.0e-14);
423 TEST_COMPARE(sh->getStateTimeIndexNM2()->getIndex(), ==, 10);
424 TEST_FLOATING_EQUALITY(sh->getStateTimeIndexNM2()->getTime(), 9.0, 1.0e-14);
426 TEST_COMPARE(sh->getStateTimeIndex(7)->getIndex(), ==, 7);
427 TEST_FLOATING_EQUALITY(sh->getStateTimeIndex(7)->getTime(), 6.3, 1.0e-14);
438 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
440 sh->setStorageTypeString(
"Static");
441 sh->setStorageLimit(7);
444 auto inArgsIC = model->getNominalValues();
447 for (
size_t i = 0; i < 13; ++i) {
448 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
449 auto stateI = Tempus::createSolutionStateX<double>(icSoln);
450 stateI->setTime(i * 0.9);
451 stateI->setTimeStep(0.9);
453 sh->addState(stateI);
456 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
458 sh->describe(out, Teuchos::VERB_MEDIUM);
460 sh->removeState(sh->getStateTimeIndex(6));
461 sh->removeState(7.2);
462 sh->removeState(sh->getStateTimeIndex(10));
463 sh->removeState(10.8);
465 sh->describe(out, Teuchos::VERB_MEDIUM);
467 TEST_COMPARE(sh->getNumStates(), ==, 3);
468 TEST_FLOATING_EQUALITY(sh->getCurrentTime(), 9.9, 1.0e-14);
469 TEST_COMPARE(sh->getCurrentIndex(), ==, 11);
470 TEST_FLOATING_EQUALITY(sh->minTime(), 6.3, 1.0e-14);
471 TEST_FLOATING_EQUALITY(sh->maxTime(), 9.9, 1.0e-14);
473 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
474 TEUCHOS_ASSERT(sh->getStateTimeIndexN() != Teuchos::null);
475 TEUCHOS_ASSERT(sh->getStateTimeIndexNM1() == Teuchos::null);
476 TEUCHOS_ASSERT(sh->getStateTimeIndexNM2() != Teuchos::null);
477 TEUCHOS_ASSERT(sh->getStateTimeIndex(7) != Teuchos::null);
479 TEST_COMPARE(sh->getStateTimeIndexN()->getIndex(), ==, 11);
480 TEST_FLOATING_EQUALITY(sh->getStateTimeIndexN()->getTime(), 9.9, 1.0e-14);
482 TEST_COMPARE(sh->getStateTimeIndexNM2()->getIndex(), ==, 9);
483 TEST_FLOATING_EQUALITY(sh->getStateTimeIndexNM2()->getTime(), 8.1, 1.0e-14);
494 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
498 auto inArgsIC = model->getNominalValues();
499 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
500 auto state0 = Tempus::createSolutionStateX<double>(icSoln);
501 state0->setTime(0.0);
502 state0->setTimeStep(1.0);
504 sh->addState(state0);
506 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
511 TEST_COMPARE(sh->getNumStates(), ==, 1);
512 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
513 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexN());
514 TEUCHOS_ASSERT(sh->getWorkingState() == Teuchos::null);
516 sh->initWorkingState();
519 TEST_COMPARE(sh->getNumStates(), ==, 2);
520 TEST_FLOATING_EQUALITY(sh->getCurrentTime(), 0.0, 1.0e-14);
521 TEST_COMPARE(sh->getCurrentIndex(), ==, 0);
522 TEST_FLOATING_EQUALITY(sh->minTime(), 0.0, 1.0e-14);
523 TEST_FLOATING_EQUALITY(sh->maxTime(), 1.0, 1.0e-14);
525 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
526 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
527 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
528 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
530 TEST_COMPARE(sh->getCurrentState()->getIndex(), ==, 0);
531 TEST_FLOATING_EQUALITY(sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
533 TEST_COMPARE(sh->getWorkingState()->getIndex(), ==, 1);
534 TEST_FLOATING_EQUALITY(sh->getWorkingState()->getTime(), 1.0, 1.0e-14);
545 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
549 auto inArgsIC = model->getNominalValues();
550 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
551 auto state0 = Tempus::createSolutionStateX<double>(icSoln);
552 state0->setTime(0.0);
553 state0->setTimeStep(1.0);
555 sh->addState(state0);
557 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
559 auto currentSoln = icSoln->clone_v();
560 Thyra::V_S(currentSoln.ptr(), std::numeric_limits<double>::quiet_NaN());
561 auto state1 = Tempus::createSolutionStateX<double>(currentSoln);
562 state1->setTime(1.0);
563 state1->setTimeStep(1.0);
565 sh->addWorkingState(state1);
571 TEST_COMPARE(sh->getNumStates(), ==, 2);
572 TEST_FLOATING_EQUALITY(sh->getCurrentTime(), 0.0, 1.0e-14);
573 TEST_COMPARE(sh->getCurrentIndex(), ==, 0);
574 TEST_FLOATING_EQUALITY(sh->minTime(), 0.0, 1.0e-14);
575 TEST_FLOATING_EQUALITY(sh->maxTime(), 1.0, 1.0e-14);
577 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
578 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
579 TEUCHOS_ASSERT(get_ele(*(sh->getCurrentState()->getX()), 0) == 1.0);
581 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
582 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
583 TEUCHOS_ASSERT(std::isnan(get_ele(*(sh->getWorkingState()->getX()), 0)));
585 TEST_COMPARE(sh->getCurrentState()->getIndex(), ==, 0);
586 TEST_FLOATING_EQUALITY(sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
588 TEST_COMPARE(sh->getWorkingState()->getIndex(), ==, 1);
589 TEST_FLOATING_EQUALITY(sh->getWorkingState()->getTime(), 1.0, 1.0e-14);
591 sh->initWorkingState();
596 TEST_COMPARE(sh->getNumStates(), ==, 2);
597 TEST_FLOATING_EQUALITY(sh->getCurrentTime(), 0.0, 1.0e-14);
598 TEST_COMPARE(sh->getCurrentIndex(), ==, 0);
599 TEST_FLOATING_EQUALITY(sh->minTime(), 0.0, 1.0e-14);
600 TEST_FLOATING_EQUALITY(sh->maxTime(), 1.0, 1.0e-14);
602 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
603 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
604 TEUCHOS_ASSERT(get_ele(*(sh->getCurrentState()->getX()), 0) == 1.0);
606 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
607 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
608 TEUCHOS_ASSERT(get_ele(*(sh->getWorkingState()->getX()), 0) == 1.0);
610 TEST_COMPARE(sh->getCurrentState()->getIndex(), ==, 0);
611 TEST_FLOATING_EQUALITY(sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
613 TEST_COMPARE(sh->getWorkingState()->getIndex(), ==, 1);
614 TEST_FLOATING_EQUALITY(sh->getWorkingState()->getTime(), 1.0, 1.0e-14);
625 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
629 auto inArgsIC = model->getNominalValues();
630 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
631 auto state0 = Tempus::createSolutionStateX<double>(icSoln);
632 state0->setTime(0.0);
633 state0->setTimeStep(1.0);
635 sh->addState(state0);
637 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
638 sh->initWorkingState();
643 TEST_COMPARE(sh->getNumStates(), ==, 2);
644 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
645 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
646 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
647 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
649 TEST_COMPARE(sh->getCurrentState()->getIndex(), ==, 0);
650 TEST_FLOATING_EQUALITY(sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
652 TEST_COMPARE(sh->getWorkingState()->getIndex(), ==, 1);
653 TEST_FLOATING_EQUALITY(sh->getWorkingState()->getTime(), 1.0, 1.0e-14);
655 sh->promoteWorkingState();
658 TEST_COMPARE(sh->getNumStates(), ==, 2);
659 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
660 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexN());
661 TEUCHOS_ASSERT(sh->getWorkingState() == Teuchos::null);
664 TEST_COMPARE(sh->getCurrentState()->getIndex(), ==, 1);
665 TEST_FLOATING_EQUALITY(sh->getCurrentState()->getTime(), 1.0, 1.0e-14);
676 TEUCHOS_TEST_FOR_EXCEPT(sh->isInitialized());
680 auto inArgsIC = model->getNominalValues();
681 auto icSoln = rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
682 auto state0 = Tempus::createSolutionStateX<double>(icSoln);
683 state0->setTime(0.0);
684 state0->setTimeStep(1.0);
686 sh->addState(state0);
688 TEUCHOS_TEST_FOR_EXCEPT(!sh->isInitialized());
689 sh->initWorkingState();
694 TEST_COMPARE(sh->getNumStates(), ==, 2);
695 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
696 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
697 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
698 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
700 TEST_COMPARE(sh->getCurrentState()->getIndex(), ==, 0);
701 TEST_FLOATING_EQUALITY(sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
703 TEST_COMPARE(sh->getWorkingState()->getIndex(), ==, 1);
704 TEST_FLOATING_EQUALITY(sh->getWorkingState()->getTime(), 1.0, 1.0e-14);
706 sh->promoteWorkingState();
710 TEST_COMPARE(sh->getNumStates(), ==, 2);
711 TEUCHOS_ASSERT(sh->getCurrentState() != Teuchos::null);
712 TEUCHOS_ASSERT(sh->getCurrentState() == sh->getStateTimeIndexNM1());
713 TEUCHOS_ASSERT(sh->getWorkingState() != Teuchos::null);
714 TEUCHOS_ASSERT(sh->getWorkingState() == sh->getStateTimeIndexN());
717 TEST_COMPARE(sh->getCurrentState()->getIndex(), ==, 0);
718 TEST_FLOATING_EQUALITY(sh->getCurrentState()->getTime(), 0.0, 1.0e-14);
721 TEST_COMPARE(sh->getWorkingState()->getIndex(), ==, 1);
722 TEST_FLOATING_EQUALITY(sh->getWorkingState()->getTime(), 1.0, 1.0e-14);