11 #include "Tempus_TimeStepControl.hpp"
18 namespace Tempus_Unit_Test {
22 using Teuchos::rcp_const_cast;
23 using Teuchos::rcp_dynamic_cast;
25 using Teuchos::sublist;
36 tscsc->addStrategy(tscsConstant);
42 std::vector<Teuchos::RCP<Tempus::TimeStepControlStrategy<double>>>
43 strategies = tscsc->getStrategies();
60 tscsc->addStrategy(tscsBasicVS);
62 tscsc->addStrategy(tscsIntCtrl);
68 std::vector<Teuchos::RCP<Tempus::TimeStepControlStrategy<double>>>
69 strategies = tscsc->getStrategies();
90 tscsc_temp->addStrategy(tscs_BasicVS);
91 tscsc_temp->addStrategy(tscs_IC);
92 tscsc_temp->initialize();
97 auto tscsc = Tempus::createTimeStepControlStrategyComposite<double>(pl);
101 std::vector<Teuchos::RCP<Tempus::TimeStepControlStrategy<double>>>
102 strategies = tscsc->getStrategies();
108 TEUCHOS_TEST_FOR_EXCEPT(strategyBasicVS->getReductFactor() != 0.5);
109 TEUCHOS_TEST_FOR_EXCEPT(strategyBasicVS->getMinEta() != 0.0);
110 TEUCHOS_TEST_FOR_EXCEPT(strategyBasicVS->getMaxEta() != 1.0e+16);
114 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getStepType() !=
"Variable");
115 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getController() !=
"PID");
116 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getKI() != 0.58);
117 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getKP() != 0.21);
118 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getKD() != 0.10);
119 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getSafetyFactor() != 0.90);
120 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getSafetyFactorAfterReject() != 0.90);
121 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getFacMax() != 5.0);
122 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getFacMin() != 0.5);
135 tscsc_temp->addStrategy(tscs_BasicVS);
136 tscsc_temp->addStrategy(tscs_IC);
137 tscsc_temp->initialize();
140 auto pl = tscsc_temp->getValidParameters();
142 TEST_COMPARE ( pl->get<std::string>(
"Strategy Type"), ==,
"Composite");
143 TEST_COMPARE ( pl->get<std::string>(
"Strategy List"), ==,
"Basic VS, Integral Controller");
145 TEST_COMPARE ( pl->isSublist(
"Integral Controller") , ==,
true);
148 std::ostringstream unusedParameters;
149 pl->unused(unusedParameters);
151 "WARNING: Parameter \"Basic VS\" [unused] is unused\n"
152 "WARNING: Parameter \"Integral Controller\" [unused] is unused\n");
155 auto BasicVS_PL = pl->sublist(
"Basic VS");
156 TEST_COMPARE ( BasicVS_PL.get<std::string>(
"Strategy Type") , ==,
"Basic VS");
163 std::ostringstream unusedParameters;
164 BasicVS_PL.unused(unusedParameters);
168 auto IntCtrl_PL = pl->sublist(
"Integral Controller");
169 TEST_COMPARE ( IntCtrl_PL.get<std::string>(
"Strategy Type") , ==,
"Integral Controller");
170 TEST_COMPARE ( IntCtrl_PL.get<std::string>(
"Controller Type") , ==,
"PID");
180 std::ostringstream unusedParameters;
181 IntCtrl_PL.unused(unusedParameters);
193 auto pl = Tempus::getTimeStepControlStrategyCompositePL<double>();
195 auto tscsc = Tempus::createTimeStepControlStrategyComposite<double>(pl);
198 std::vector<Teuchos::RCP<Tempus::TimeStepControlStrategy<double>>>
199 strategies = tscsc->getStrategies();
210 auto pl = Tempus::getTimeStepControlStrategyCompositePL<double>();
211 pl->set(
"Strategy List",
"");
212 pl->remove(
"Constant");
214 auto tscsc = Tempus::createTimeStepControlStrategyComposite<double>(pl);
219 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategyType() ==
"Composite"));
220 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategies().size() == 0));
224 auto pl = Tempus::getTimeStepControlStrategyCompositePL<double>();
225 pl->remove(
"Constant");
226 pl->set(
"Strategy List",
"Application Strategy");
228 auto nonTempusStrategyPL =
229 Teuchos::parameterList(
"Application Strategy");
230 nonTempusStrategyPL->set<std::string>(
"Strategy Type",
"Application Strategy");
231 nonTempusStrategyPL->set<
double>(
"Secret Sauce", 1.2345);
232 pl->set(
"Application Strategy", *nonTempusStrategyPL);
234 auto tscsc = Tempus::createTimeStepControlStrategyComposite<double>(pl);
239 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategyType() ==
"Composite"));
240 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategies().size() == 0));
248 temp->addStrategy(tscsBasicVS);
250 temp->addStrategy(tscsIntCtrl);
254 auto sList = pl->
get<std::string>(
"Strategy List");
255 pl->set(
"Strategy List", sList+
", Application Strategy");
257 auto nonTempusStrategyPL =
258 Teuchos::parameterList(
"Application Strategy");
259 nonTempusStrategyPL->set<std::string>(
"Strategy Type",
"Application Strategy");
260 nonTempusStrategyPL->set<
double>(
"Secret Sauce", 1.2345);
261 pl->set(
"Application Strategy", *nonTempusStrategyPL);
263 auto tscsc = Tempus::createTimeStepControlStrategyComposite<double>(pl);
268 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategyType() ==
"Composite"));
269 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategies().size() == 2));
T & get(const std::string &name, T def_value)
StepControlStrategy class for TimeStepControl.
#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)
TEUCHOS_UNIT_TEST(BackwardEuler, Default_Construction)
StepControlStrategy class for TimeStepControl.
TimeStepControlStrategyComposite loops over a vector of TimeStepControlStrategies.
StepControlStrategy class for TimeStepControl.
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)