11 #include "Tempus_StepperFactory.hpp"
12 #include "Tempus_TimeStepControl.hpp"
15 #include "../TestModels/DahlquistTestModel.hpp"
17 namespace Tempus_Unit_Test {
22 using Teuchos::rcp_const_cast;
23 using Teuchos::rcp_dynamic_cast;
24 using Teuchos::sublist;
37 TEUCHOS_TEST_FOR_EXCEPT(tscs->getReductFactor() != 0.5);
38 TEUCHOS_TEST_FOR_EXCEPT(tscs->getMinEta() != 0.0);
39 TEUCHOS_TEST_FOR_EXCEPT(tscs->getMaxEta() != 1.0e+16);
42 tscs->setAmplFactor(1.33);
44 TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
45 tscs->setReductFactor(0.75);
47 TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
48 tscs->setMinEta(0.01);
50 TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
51 tscs->setMaxEta(0.05);
53 TEUCHOS_TEST_FOR_EXCEPT(!tscs->isInitialized());
55 TEUCHOS_TEST_FOR_EXCEPT(tscs->getAmplFactor() != 1.33);
56 TEUCHOS_TEST_FOR_EXCEPT(tscs->getReductFactor() != 0.75);
57 TEUCHOS_TEST_FOR_EXCEPT(tscs->getMinEta() != 0.01);
58 TEUCHOS_TEST_FOR_EXCEPT(tscs->getMaxEta() != 0.05);
66 1.33, 0.75, 0.01, 0.05));
72 TEUCHOS_TEST_FOR_EXCEPT(tscs->getReductFactor() != 0.75);
73 TEUCHOS_TEST_FOR_EXCEPT(tscs->getMinEta() != 0.01);
74 TEUCHOS_TEST_FOR_EXCEPT(tscs->getMaxEta() != 0.05);
81 auto pl = Tempus::getTimeStepControlStrategyBasicVS_PL<double>();
83 pl->set<
double>(
"Amplification Factor", 1.33);
84 pl->set<
double>(
"Reduction Factor", 0.75);
85 pl->set<
double>(
"Minimum Value Monitoring Function", 0.01);
86 pl->set<
double>(
"Maximum Value Monitoring Function", 0.05);
88 auto tscs = Tempus::createTimeStepControlStrategyBasicVS<double>(pl);
93 TEUCHOS_TEST_FOR_EXCEPT(tscs->getReductFactor() != 0.75);
94 TEUCHOS_TEST_FOR_EXCEPT(tscs->getMinEta() != 0.01);
95 TEUCHOS_TEST_FOR_EXCEPT(tscs->getMaxEta() != 0.05);
103 tscs->setAmplFactor(1.1);
104 tscs->setReductFactor(0.5);
105 tscs->setMinEta(0.01);
106 tscs->setMaxEta(0.05);
112 tsc->setTimeStepControlStrategy(tscs);
113 tsc->setInitTime(0.0);
114 tsc->setFinalTime(10.0);
115 tsc->setMinTimeStep(0.01);
116 tsc->setInitTimeStep(0.1);
117 tsc->setMaxTimeStep(1.0);
118 tsc->setFinalIndex(100);
125 auto inArgsIC = model->getNominalValues();
128 auto icState = Tempus::createSolutionStateX<double>(icSolution);
133 solutionHistory->addState(icState);
134 solutionHistory->getCurrentState()->setTimeStep(0.5);
135 solutionHistory->getCurrentState()->setTime(0.0);
136 solutionHistory->getCurrentState()->setIndex(0);
139 for (
int i = 0; i < 2; i++) {
140 solutionHistory->initWorkingState();
142 tsc->setNextTimeStep(solutionHistory, status);
145 auto currentState = solutionHistory->getCurrentState();
146 auto workingState = solutionHistory->getWorkingState();
147 auto xN = workingState->getX();
148 Thyra::Vp_S(xN.ptr(), 1.0);
150 workingState->computeNorms(currentState);
153 solutionHistory->promoteWorkingState();
157 auto currentState = solutionHistory->getCurrentState();
164 solutionHistory->clear();
165 solutionHistory->addState(icState);
166 solutionHistory->getCurrentState()->setTimeStep(0.5);
167 solutionHistory->getCurrentState()->setTime(0.0);
168 solutionHistory->getCurrentState()->setIndex(0);
171 for (
int i = 0; i < 2; i++) {
172 solutionHistory->initWorkingState();
174 tsc->setNextTimeStep(solutionHistory, status);
177 auto currentState = solutionHistory->getCurrentState();
178 auto workingState = solutionHistory->getWorkingState();
179 auto xN = workingState->getX();
180 Thyra::Vp_S(xN.ptr(), 0.0);
182 workingState->computeNorms(currentState);
185 solutionHistory->promoteWorkingState();
190 auto currentState = solutionHistory->getCurrentState();
202 auto pl = tscs->getValidParameters();
204 TEST_COMPARE(pl->get<std::string>(
"Strategy Type"), ==,
"Basic VS");
214 std::ostringstream unusedParameters;
215 pl->unused(unusedParameters);
StepControlStrategy class for TimeStepControl.
The classic Dahlquist Test Problem.
#define TEST_COMPARE(v1, comp, v2)
#define TEST_FLOATING_EQUALITY(v1, v2, tol)
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Status
Status for the Integrator, the Stepper and the SolutionState.
TEUCHOS_UNIT_TEST(BackwardEuler, Default_Construction)
TimeStepControl manages the time step size. There several mechanisms that effect the time step size a...
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)