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);