33  TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
 
   36  TEUCHOS_TEST_FOR_EXCEPT(tscs->getStepType() != 
"Variable");
 
   37  TEUCHOS_TEST_FOR_EXCEPT(tscs->getController() != 
"PID");
 
   38  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKI() != 0.58);
 
   39  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKP() != 0.21);
 
   40  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKD() != 0.10);
 
   41  TEUCHOS_TEST_FOR_EXCEPT(tscs->getSafetyFactor() != 0.90);
 
   42  TEUCHOS_TEST_FOR_EXCEPT(tscs->getSafetyFactorAfterReject() != 0.90);
 
   43  TEUCHOS_TEST_FOR_EXCEPT(tscs->getFacMax() != 5.0);
 
   44  TEUCHOS_TEST_FOR_EXCEPT(tscs->getFacMin() != 0.5);
 
   47  tscs->setController(
"I");
 
   49  TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
 
   52  TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
 
   55  TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
 
   58  TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
 
   59  tscs->setSafetyFactor(0.8);
 
   61  TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
 
   62  tscs->setSafetyFactorAfterReject(0.8);
 
   64  TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
 
   67  TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
 
   70  TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
 
   72  TEUCHOS_TEST_FOR_EXCEPT(tscs->getStepType() != 
"Variable");
 
   73  TEUCHOS_TEST_FOR_EXCEPT(tscs->getController() != 
"I");
 
   74  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKI() != 0.6);
 
   75  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKP() != 0.0);
 
   76  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKD() != 0.0);
 
   77  TEUCHOS_TEST_FOR_EXCEPT(tscs->getSafetyFactor() != 0.8);
 
   78  TEUCHOS_TEST_FOR_EXCEPT(tscs->getSafetyFactorAfterReject() != 0.8);
 
   79  TEUCHOS_TEST_FOR_EXCEPT(tscs->getFacMax() != 4.0);
 
   80  TEUCHOS_TEST_FOR_EXCEPT(tscs->getFacMin() != 0.4);
 
 
   88      "I", 0.6, 0.0, 0.0, 0.8, 0.8, 4.0, 0.4));
 
   89  TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
 
   91  TEUCHOS_TEST_FOR_EXCEPT(tscs->getStepType() != 
"Variable");
 
   92  TEUCHOS_TEST_FOR_EXCEPT(tscs->getController() != 
"I");
 
   93  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKI() != 0.6);
 
   94  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKP() != 0.0);
 
   95  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKD() != 0.0);
 
   96  TEUCHOS_TEST_FOR_EXCEPT(tscs->getSafetyFactor() != 0.8);
 
   97  TEUCHOS_TEST_FOR_EXCEPT(tscs->getSafetyFactorAfterReject() != 0.8);
 
   98  TEUCHOS_TEST_FOR_EXCEPT(tscs->getFacMax() != 4.0);
 
   99  TEUCHOS_TEST_FOR_EXCEPT(tscs->getFacMin() != 0.4);
 
 
  107  auto pl = Tempus::getTimeStepControlStrategyIntegralControllerPL<double>();
 
  109  pl->set<std::string>(
"Controller Type", 
"I");
 
  110  pl->set<
double>(
"KI", 0.6);
 
  111  pl->set<
double>(
"KP", 0.0);
 
  112  pl->set<
double>(
"KD", 0.0);
 
  113  pl->set<
double>(
"Safety Factor", 0.8);
 
  114  pl->set<
double>(
"Safety Factor After Step Rejection", 0.8);
 
  115  pl->set<
double>(
"Maximum Safety Factor", 4.0);
 
  116  pl->set<
double>(
"Minimum Safety Factor", 0.4);
 
  119      Tempus::createTimeStepControlStrategyIntegralController<double>(pl);
 
  121  TEUCHOS_TEST_FOR_EXCEPT(tscs->getStepType() != 
"Variable");
 
  122  TEUCHOS_TEST_FOR_EXCEPT(tscs->getController() != 
"I");
 
  123  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKI() != 0.6);
 
  124  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKP() != 0.0);
 
  125  TEUCHOS_TEST_FOR_EXCEPT(tscs->getKD() != 0.0);
 
  126  TEUCHOS_TEST_FOR_EXCEPT(tscs->getSafetyFactor() != 0.8);
 
  127  TEUCHOS_TEST_FOR_EXCEPT(tscs->getSafetyFactorAfterReject() != 0.8);
 
  128  TEUCHOS_TEST_FOR_EXCEPT(tscs->getFacMax() != 4.0);
 
  129  TEUCHOS_TEST_FOR_EXCEPT(tscs->getFacMin() != 0.4);
 
 
  139  double safetyFactor            = 0.9;
 
  140  double safetyFactorAfterReject = 0.9;
 
  145      "PID", KI, KP, KD, safetyFactor, safetyFactorAfterReject, facMax,
 
  150  tsc->setTimeStepControlStrategy(tscs);
 
  151  tsc->setInitTime(0.0);
 
  152  tsc->setFinalTime(10.0);
 
  153  tsc->setMinTimeStep(0.01);
 
  154  tsc->setInitTimeStep(1.0);
 
  155  tsc->setMaxTimeStep(10.0);
 
  156  tsc->setFinalIndex(100);
 
  158  TEUCHOS_TEST_FOR_EXCEPT(!tsc->isInitialized());
 
  163  auto inArgsIC = model->getNominalValues();
 
  165      rcp_const_cast<Thyra::VectorBase<double> >(inArgsIC.get_x());
 
  166  auto icState         = Tempus::createSolutionStateX<double>(icSolution);
 
  170  solutionHistory->addState(icState);
 
  171  solutionHistory->getCurrentState()->setTimeStep(1.0);
 
  172  solutionHistory->getCurrentState()->setTime(0.0);
 
  173  solutionHistory->getCurrentState()->setIndex(0);
 
  174  solutionHistory->getCurrentState()->setOrder(order);
 
  179  solutionHistory->initWorkingState();
 
  180  auto currentState = solutionHistory->getCurrentState();
 
  181  auto workingState = solutionHistory->getWorkingState();
 
  183  TEST_FLOATING_EQUALITY(workingState->getErrorRel(), 0.0, 1.0e-14);
 
  184  TEST_FLOATING_EQUALITY(workingState->getErrorRelNm1(), 0.0, 1.0e-14);
 
  185  TEST_FLOATING_EQUALITY(workingState->getErrorRelNm2(), 0.0, 1.0e-14);
 
  187  tsc->setNextTimeStep(solutionHistory, status);
 
  191  TEST_FLOATING_EQUALITY(workingState->getTimeStep(), 1.0, 1.0e-14);
 
  195  workingState->setErrorRel(errN);
 
  199  solutionHistory->initWorkingState();
 
  200  currentState = solutionHistory->getCurrentState();
 
  201  workingState = solutionHistory->getWorkingState();
 
  202  double dt    = workingState->getTimeStep();
 
  204  TEST_FLOATING_EQUALITY(workingState->getErrorRel(), 0.1, 1.0e-14);
 
  205  TEST_FLOATING_EQUALITY(workingState->getErrorRelNm1(), 0.0, 1.0e-14);
 
  206  TEST_FLOATING_EQUALITY(workingState->getErrorRelNm2(), 0.0, 1.0e-14);
 
  208  tsc->setNextTimeStep(solutionHistory, status);
 
  210  double p     = order - 1.0;
 
  211  double dtNew = dt * safetyFactor * std::pow(errN, -KI / p);
 
  212  TEST_FLOATING_EQUALITY(workingState->getTimeStep(), dtNew, 1.0e-14);
 
  217  workingState->setErrorRel(errN);
 
  221  solutionHistory->initWorkingState();
 
  222  currentState = solutionHistory->getCurrentState();
 
  223  workingState = solutionHistory->getWorkingState();
 
  224  dt           = workingState->getTimeStep();
 
  226  TEST_FLOATING_EQUALITY(workingState->getErrorRel(), 0.2, 1.0e-14);
 
  227  TEST_FLOATING_EQUALITY(workingState->getErrorRelNm1(), 0.1, 1.0e-14);
 
  228  TEST_FLOATING_EQUALITY(workingState->getErrorRelNm2(), 0.0, 1.0e-14);
 
  230  tsc->setNextTimeStep(solutionHistory, status);
 
  233      dt * safetyFactor * std::pow(errN, -KI / p) * std::pow(errNm1, KP / p);
 
  234  TEST_FLOATING_EQUALITY(workingState->getTimeStep(), dtNew, 1.0e-14);
 
  240  workingState->setErrorRel(errN);
 
  244  solutionHistory->initWorkingState();
 
  245  currentState = solutionHistory->getCurrentState();
 
  246  workingState = solutionHistory->getWorkingState();
 
  247  dt           = workingState->getTimeStep();
 
  249  TEST_FLOATING_EQUALITY(workingState->getErrorRel(), 0.3, 1.0e-14);
 
  250  TEST_FLOATING_EQUALITY(workingState->getErrorRelNm1(), 0.2, 1.0e-14);
 
  251  TEST_FLOATING_EQUALITY(workingState->getErrorRelNm2(), 0.1, 1.0e-14);
 
  253  tsc->setNextTimeStep(solutionHistory, status);
 
  255  dtNew = dt * safetyFactor * std::pow(errN, -KI / p) *
 
  256          std::pow(errNm1, KP / p) * std::pow(errNm2, -KD / p);
 
  257  TEST_FLOATING_EQUALITY(workingState->getTimeStep(), dtNew, 1.0e-14);
 
 
  267  auto pl = tscs->getValidParameters();
 
  269  TEST_COMPARE(pl->get<std::string>(
"Strategy Type"), ==,
 
  270               "Integral Controller");
 
  271  TEST_COMPARE(pl->get<std::string>(
"Controller Type"), ==, 
"PID");
 
  272  TEST_FLOATING_EQUALITY(pl->get<
double>(
"KI"), 0.58, 1.0e-14);
 
  273  TEST_FLOATING_EQUALITY(pl->get<
double>(
"KP"), 0.21, 1.0e-14);
 
  274  TEST_FLOATING_EQUALITY(pl->get<
double>(
"KD"), 0.10, 1.0e-14);
 
  275  TEST_FLOATING_EQUALITY(pl->get<
double>(
"Safety Factor"), 0.9, 1.0e-14);
 
  276  TEST_FLOATING_EQUALITY(pl->get<
double>(
"Safety Factor After Step Rejection"),
 
  278  TEST_FLOATING_EQUALITY(pl->get<
double>(
"Maximum Safety Factor"), 5.0,
 
  280  TEST_FLOATING_EQUALITY(pl->get<
double>(
"Minimum Safety Factor"), 0.5,
 
  284    std::ostringstream unusedParameters;
 
  285    pl->unused(unusedParameters);
 
  286    TEST_COMPARE(unusedParameters.str(), ==, 
"");
 
 
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...