10 #include "Tempus_TimeEventList.hpp"
12 static double PI = M_PI;
14 namespace Tempus_Unit_Test {
18 using Teuchos::rcp_const_cast;
19 using Teuchos::rcp_dynamic_cast;
31 te->getRelTol(), std::numeric_limits<double>::epsilon() * 100.0, 1.0e-14);
33 te->getAbsTol(), std::numeric_limits<double>::epsilon() * 100.0, 1.0e-14);
39 TEST_COMPARE(te->indexToNextEvent(1), ==, te->getDefaultIndex());
40 TEST_COMPARE(te->indexOfNextEvent(1), ==, te->getDefaultIndex());
48 std::vector<double> testVector;
49 testVector.push_back(-1.0);
50 testVector.push_back(0.0);
51 testVector.push_back(5.0);
52 testVector.push_back(2.0);
53 testVector.push_back(
PI);
62 auto testList = te->getTimeList();
65 TEST_FLOATING_EQUALITY(testList[1], 0.0, 1.0e-14);
66 TEST_FLOATING_EQUALITY(testList[2], 2.0, 1.0e-14);
67 TEST_FLOATING_EQUALITY(testList[3],
PI, 1.0e-14);
68 TEST_FLOATING_EQUALITY(testList[4], 5.0, 1.0e-14);
77 te->setName(
"TestName");
81 te->setRelTol(1.0e-14);
82 te->setLandOnExactly(
false);
96 auto testList = te->getTimeList();
99 TEST_FLOATING_EQUALITY(testList[1], 0.0, 1.0e-14);
100 TEST_FLOATING_EQUALITY(testList[2], 2.0, 1.0e-14);
101 TEST_FLOATING_EQUALITY(testList[3],
PI, 1.0e-14);
102 TEST_FLOATING_EQUALITY(testList[4], 5.0, 1.0e-14);
105 te->addTime(2.0 + 1.0e-14);
107 te->addTime(2.0 + 1.0e-13);
112 te->setTimeList(testList);
114 TEST_FLOATING_EQUALITY(testList[0], -1.0, 1.0e-14);
115 TEST_FLOATING_EQUALITY(testList[1], 0.0, 1.0e-14);
116 TEST_FLOATING_EQUALITY(testList[2], 2.0, 1.0e-14);
117 TEST_FLOATING_EQUALITY(testList[3],
PI, 1.0e-14);
118 TEST_FLOATING_EQUALITY(testList[4], 5.0, 1.0e-14);
131 te->setRelTol(1.0e-14);
164 std::vector<double> testList;
165 testList.push_back(0.0);
166 testList.push_back(
PI);
167 testList.push_back(-1.0);
168 testList.push_back(2.0);
169 testList.push_back(5.0);
201 te->getDefaultTime(), 1.0e-01);
205 te->getDefaultTime(), 1.0e-01);
207 te->getDefaultTime(), 1.0e-02);
214 std::vector<double> testList;
215 testList.push_back(0.0);
216 testList.push_back(
PI);
217 testList.push_back(-1.0);
218 testList.push_back(2.0);
219 testList.push_back(5.0);
242 te->getDefaultTime(), 1.0e-14);
246 te->getDefaultTime(), 1.0e-14);
248 te->getDefaultTime(), 1.0e-14);
255 std::vector<double> testList;
256 testList.push_back(0.0);
257 testList.push_back(
PI);
258 testList.push_back(-1.0);
259 testList.push_back(2.0);
260 testList.push_back(5.0);
267 TEST_COMPARE(te->eventInRange(-2.0, -1.0 + -10.0e-14), ==,
269 TEST_COMPARE(te->eventInRange(-2.0, -1.0 + -0.1e-14), ==,
true);
270 TEST_COMPARE(te->eventInRange(-2.0, -1.0 + 0.0), ==,
true);
271 TEST_COMPARE(te->eventInRange(-2.0, -1.0 + 0.1e-14), ==,
true);
272 TEST_COMPARE(te->eventInRange(-2.0, -1.0 + 10.0e-14), ==,
true);
281 TEST_COMPARE(te->eventInRange(4.5, 5.0 + -10.0e-14), ==,
283 TEST_COMPARE(te->eventInRange(4.5, 5.0 + -0.1e-14), ==,
true);
284 TEST_COMPARE(te->eventInRange(4.5, 5.0 + 0.0), ==,
true);
285 TEST_COMPARE(te->eventInRange(4.5, 5.0 + 0.1e-14), ==,
true);
286 TEST_COMPARE(te->eventInRange(4.5, 5.0 + 10.0e-14), ==,
true);
289 TEST_COMPARE(te->eventInRange(-1.0 + -10.0e-14, -0.5), ==,
291 TEST_COMPARE(te->eventInRange(-1.0 + -0.1e-14, -0.5), ==,
false);
292 TEST_COMPARE(te->eventInRange(-1.0 + 0.0, -0.5), ==,
false);
293 TEST_COMPARE(te->eventInRange(-1.0 + 0.1e-14, -0.5), ==,
false);
294 TEST_COMPARE(te->eventInRange(-1.0 + 10.0e-14, -0.5), ==,
false);
303 TEST_COMPARE(te->eventInRange(5.0 + -10.0e-14, 6.0), ==,
305 TEST_COMPARE(te->eventInRange(5.0 + -0.1e-14, 6.0), ==,
false);
306 TEST_COMPARE(te->eventInRange(5.0 + 0.0, 6.0), ==,
false);
307 TEST_COMPARE(te->eventInRange(5.0 + 0.1e-14, 6.0), ==,
false);
308 TEST_COMPARE(te->eventInRange(5.0 + 10.0e-14, 6.0), ==,
false);
317 auto pl = tel->getValidParameters();
320 TEST_COMPARE(pl->get<std::string>(
"Name"), ==,
"TimeEventList");
322 std::numeric_limits<double>::epsilon() * 100.0,
324 TEST_COMPARE(pl->get<
bool>(
"Land On Exactly"), ==,
true);
325 TEST_COMPARE(pl->get<std::string>(
"Time List"), ==,
"");
328 std::ostringstream unusedParameters;
329 pl->unused(unusedParameters);
340 Teuchos::parameterList(
"Time Event List");
342 pl->
set(
"Name",
"Unit Test Time Event List");
343 pl->
set(
"Type",
"List");
344 pl->
set(
"Relative Tolerance", 1.0e-10);
345 pl->
set(
"Land On Exactly",
false);
347 std::vector<double> times;
348 times.push_back(-0.1);
349 times.push_back(0.1);
350 times.push_back(0.5);
351 times.push_back(1.1);
352 std::ostringstream list;
353 for (std::size_t i = 0; i < times.size() - 1; ++i) list << times[i] <<
", ";
354 list << times[times.size() - 1];
355 pl->
set<std::string>(
"Time List", list.str());
358 auto tel = Tempus::createTimeEventList<double>(pl);
362 TEST_COMPARE(tel->getName(), ==,
"Unit Test Time Event List");
366 auto teList = tel->getTimeList();
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
#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)
TimeEventList specifies a list of time events.
Teuchos::RCP< TimeEventList< Scalar > > createTimeEventList(Teuchos::RCP< Teuchos::ParameterList > pList)
Nonmember Constructor via ParameterList.