32 TEUCHOS_TEST_FOR_EXCEPT(
33 tscsc->isInitialized());
37 tscsc->addStrategy(tscsConstant);
39 TEUCHOS_TEST_FOR_EXCEPT(!tscsc->isInitialized());
41 TEST_COMPARE(tscsc->size(), ==, 1);
43 std::vector<Teuchos::RCP<Tempus::TimeStepControlStrategy<double>>>
44 strategies = tscsc->getStrategies();
46 auto strategyConstant =
47 rcp_dynamic_cast<Tempus::TimeStepControlStrategyConstant<double>>(
50 TEUCHOS_TEST_FOR_EXCEPT(strategyConstant->getStepType() !=
"Constant");
51 TEUCHOS_TEST_FOR_EXCEPT(strategyConstant->getConstantTimeStep() != 0.0);
59 TEUCHOS_TEST_FOR_EXCEPT(
60 tscsc->isInitialized());
63 tscsc->addStrategy(tscsBasicVS);
66 tscsc->addStrategy(tscsIntCtrl);
68 TEUCHOS_TEST_FOR_EXCEPT(!tscsc->isInitialized());
70 TEST_COMPARE(tscsc->size(), ==, 2);
72 std::vector<Teuchos::RCP<Tempus::TimeStepControlStrategy<double>>>
73 strategies = tscsc->getStrategies();
75 auto strategyBasicVS =
76 rcp_dynamic_cast<Tempus::TimeStepControlStrategyBasicVS<double>>(
78 TEUCHOS_TEST_FOR_EXCEPT(strategyBasicVS->getStrategyType() !=
"Basic VS");
80 auto strategyIntCtrl = rcp_dynamic_cast<
82 TEUCHOS_TEST_FOR_EXCEPT(strategyIntCtrl->getStrategyType() !=
83 "Integral Controller");
96 tscsc_temp->addStrategy(tscs_BasicVS);
97 tscsc_temp->addStrategy(tscs_IC);
98 tscsc_temp->initialize();
99 TEUCHOS_TEST_FOR_EXCEPT(!tscsc_temp->isInitialized());
102 rcp_const_cast<Teuchos::ParameterList>(tscsc_temp->getValidParameters());
104 auto tscsc = Tempus::createTimeStepControlStrategyComposite<double>(pl);
106 TEST_COMPARE(tscsc->size(), ==, 2);
108 std::vector<Teuchos::RCP<Tempus::TimeStepControlStrategy<double>>>
109 strategies = tscsc->getStrategies();
111 auto strategyBasicVS =
112 Teuchos::rcp_dynamic_cast<Tempus::TimeStepControlStrategyBasicVS<double>>(
115 TEUCHOS_TEST_FOR_EXCEPT(strategyBasicVS->getStepType() !=
"Variable");
116 TEUCHOS_TEST_FOR_EXCEPT(strategyBasicVS->getAmplFactor() != 1.75);
117 TEUCHOS_TEST_FOR_EXCEPT(strategyBasicVS->getReductFactor() != 0.5);
118 TEUCHOS_TEST_FOR_EXCEPT(strategyBasicVS->getMinEta() != 0.0);
119 TEUCHOS_TEST_FOR_EXCEPT(strategyBasicVS->getMaxEta() != 1.0e+16);
121 auto strategyIC = Teuchos::rcp_dynamic_cast<
124 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getStepType() !=
"Variable");
125 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getController() !=
"PID");
126 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getKI() != 0.58);
127 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getKP() != 0.21);
128 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getKD() != 0.10);
129 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getSafetyFactor() != 0.90);
130 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getSafetyFactorAfterReject() != 0.90);
131 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getFacMax() != 5.0);
132 TEUCHOS_TEST_FOR_EXCEPT(strategyIC->getFacMin() != 0.5);
145 tscsc_temp->addStrategy(tscs_BasicVS);
146 tscsc_temp->addStrategy(tscs_IC);
147 tscsc_temp->initialize();
148 TEUCHOS_TEST_FOR_EXCEPT(!tscsc_temp->isInitialized());
150 auto pl = tscsc_temp->getValidParameters();
152 TEST_COMPARE(pl->get<std::string>(
"Strategy Type"), ==,
"Composite");
153 TEST_COMPARE(pl->get<std::string>(
"Strategy List"), ==,
154 "Basic VS, Integral Controller");
155 TEST_COMPARE(pl->isSublist(
"Basic VS"), ==,
true);
156 TEST_COMPARE(pl->isSublist(
"Integral Controller"), ==,
true);
159 std::ostringstream unusedParameters;
160 pl->unused(unusedParameters);
162 unusedParameters.str(), ==,
163 "WARNING: Parameter \"Basic VS\" [unused] is unused\n"
164 "WARNING: Parameter \"Integral Controller\" [unused] is unused\n");
167 auto BasicVS_PL = pl->sublist(
"Basic VS");
168 TEST_COMPARE(BasicVS_PL.get<std::string>(
"Strategy Type"), ==,
"Basic VS");
169 TEST_FLOATING_EQUALITY(BasicVS_PL.get<
double>(
"Amplification Factor"), 1.75,
171 TEST_FLOATING_EQUALITY(BasicVS_PL.get<
double>(
"Reduction Factor"), 0.5,
173 TEST_FLOATING_EQUALITY(
174 BasicVS_PL.get<
double>(
"Minimum Value Monitoring Function"), 0.0,
176 TEST_FLOATING_EQUALITY(
177 BasicVS_PL.get<
double>(
"Maximum Value Monitoring Function"), 1.0e+16,
181 std::ostringstream unusedParameters;
182 BasicVS_PL.unused(unusedParameters);
183 TEST_COMPARE(unusedParameters.str(), ==,
"");
186 auto IntCtrl_PL = pl->sublist(
"Integral Controller");
187 TEST_COMPARE(IntCtrl_PL.get<std::string>(
"Strategy Type"), ==,
188 "Integral Controller");
189 TEST_COMPARE(IntCtrl_PL.get<std::string>(
"Controller Type"), ==,
"PID");
190 TEST_FLOATING_EQUALITY(IntCtrl_PL.get<
double>(
"KI"), 0.58, 1.0e-14);
191 TEST_FLOATING_EQUALITY(IntCtrl_PL.get<
double>(
"KP"), 0.21, 1.0e-14);
192 TEST_FLOATING_EQUALITY(IntCtrl_PL.get<
double>(
"KD"), 0.1, 1.0e-14);
193 TEST_FLOATING_EQUALITY(IntCtrl_PL.get<
double>(
"Safety Factor"), 0.9, 1.0e-14);
194 TEST_FLOATING_EQUALITY(
195 IntCtrl_PL.get<
double>(
"Safety Factor After Step Rejection"), 0.9,
197 TEST_FLOATING_EQUALITY(IntCtrl_PL.get<
double>(
"Maximum Safety Factor"), 5.0,
199 TEST_FLOATING_EQUALITY(IntCtrl_PL.get<
double>(
"Minimum Safety Factor"), 0.5,
203 std::ostringstream unusedParameters;
204 IntCtrl_PL.unused(unusedParameters);
205 TEST_COMPARE(unusedParameters.str(), ==,
"");
214 auto pl = Tempus::getTimeStepControlStrategyCompositePL<double>();
216 auto tscsc = Tempus::createTimeStepControlStrategyComposite<double>(pl);
217 TEUCHOS_TEST_FOR_EXCEPT(!tscsc->isInitialized());
219 std::vector<Teuchos::RCP<Tempus::TimeStepControlStrategy<double>>>
220 strategies = tscsc->getStrategies();
223 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStepType() ==
"Constant"));
224 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategyType() ==
"Composite"));
225 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategies().size() == 1));
226 TEUCHOS_TEST_FOR_EXCEPT(!(strategies[0]->getStepType() ==
"Constant"));
227 TEUCHOS_TEST_FOR_EXCEPT(!(strategies[0]->getStrategyType() ==
"Constant"));
231 auto pl = Tempus::getTimeStepControlStrategyCompositePL<double>();
232 pl->set(
"Strategy List",
"");
233 pl->remove(
"Constant");
235 auto tscsc = Tempus::createTimeStepControlStrategyComposite<double>(pl);
236 TEUCHOS_TEST_FOR_EXCEPT(
237 tscsc->isInitialized());
240 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStepType() ==
"Variable"));
241 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategyType() ==
"Composite"));
242 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategies().size() == 0));
246 auto pl = Tempus::getTimeStepControlStrategyCompositePL<double>();
247 pl->remove(
"Constant");
248 pl->set(
"Strategy List",
"Application Strategy");
250 auto nonTempusStrategyPL = Teuchos::parameterList(
"Application Strategy");
251 nonTempusStrategyPL->set<std::string>(
"Strategy Type",
252 "Application Strategy");
253 nonTempusStrategyPL->set<
double>(
"Secret Sauce", 1.2345);
254 pl->set(
"Application Strategy", *nonTempusStrategyPL);
256 auto tscsc = Tempus::createTimeStepControlStrategyComposite<double>(pl);
257 TEUCHOS_TEST_FOR_EXCEPT(
258 tscsc->isInitialized());
261 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStepType() ==
"Variable"));
262 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategyType() ==
"Composite"));
263 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategies().size() == 0));
272 temp->addStrategy(tscsBasicVS);
275 temp->addStrategy(tscsIntCtrl);
279 rcp_const_cast<Teuchos::ParameterList>(temp->getValidParameters());
280 auto sList = pl->get<std::string>(
"Strategy List");
281 pl->set(
"Strategy List", sList +
", Application Strategy");
283 auto nonTempusStrategyPL = Teuchos::parameterList(
"Application Strategy");
284 nonTempusStrategyPL->set<std::string>(
"Strategy Type",
285 "Application Strategy");
286 nonTempusStrategyPL->set<
double>(
"Secret Sauce", 1.2345);
287 pl->set(
"Application Strategy", *nonTempusStrategyPL);
289 auto tscsc = Tempus::createTimeStepControlStrategyComposite<double>(pl);
290 TEUCHOS_TEST_FOR_EXCEPT(!tscsc->isInitialized());
293 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStepType() ==
"Variable"));
294 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategyType() ==
"Composite"));
295 TEUCHOS_TEST_FOR_EXCEPT(!(tscsc->getStrategies().size() == 2));