10 #include "Tempus_TimeEventList.hpp"
13 static double PI = M_PI;
15 namespace Tempus_Unit_Test {
19 using Teuchos::rcp_const_cast;
20 using Teuchos::rcp_dynamic_cast;
39 TEST_COMPARE(te->indexToNextEvent(1), ==, te->getDefaultIndex());
40 TEST_COMPARE(te->indexOfNextEvent(1), ==, te->getDefaultIndex());
49 std::vector<double> testVector;
50 testVector.push_back(-1.0);
51 testVector.push_back( 0.0);
52 testVector.push_back( 5.0);
53 testVector.push_back( 2.0);
54 testVector.push_back(
PI);
57 testVector,
"TestName",
true, 1.0e-14));
63 auto testList = te->getTimeList();
66 TEST_FLOATING_EQUALITY(testList[1], 0.0, 1.0e-14);
67 TEST_FLOATING_EQUALITY(testList[2], 2.0, 1.0e-14);
68 TEST_FLOATING_EQUALITY(testList[3],
PI, 1.0e-14);
69 TEST_FLOATING_EQUALITY(testList[4], 5.0, 1.0e-14);
79 te->setName(
"TestName");
83 te->setRelTol(1.0e-14);
84 te->setLandOnExactly(
false);
98 auto testList = te->getTimeList();
101 TEST_FLOATING_EQUALITY(testList[1], 0.0, 1.0e-14);
102 TEST_FLOATING_EQUALITY(testList[2], 2.0, 1.0e-14);
103 TEST_FLOATING_EQUALITY(testList[3],
PI, 1.0e-14);
104 TEST_FLOATING_EQUALITY(testList[4], 5.0, 1.0e-14);
107 te->addTime( 2.0 + 1.0e-14);
109 te->addTime( 2.0 + 1.0e-13);
114 te->setTimeList(testList);
116 TEST_FLOATING_EQUALITY(testList[0], -1.0, 1.0e-14);
117 TEST_FLOATING_EQUALITY(testList[1], 0.0, 1.0e-14);
118 TEST_FLOATING_EQUALITY(testList[2], 2.0, 1.0e-14);
119 TEST_FLOATING_EQUALITY(testList[3],
PI, 1.0e-14);
120 TEST_FLOATING_EQUALITY(testList[4], 5.0, 1.0e-14);
134 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);
172 testList,
"testList",
true, 1.0e-14));
202 std::vector<double> testList;
203 testList.push_back( 0.0);
204 testList.push_back(
PI);
205 testList.push_back(-1.0);
206 testList.push_back( 2.0);
207 testList.push_back( 5.0);
210 testList,
"testList",
true, 1.0e-14));
240 std::vector<double> testList;
241 testList.push_back( 0.0);
242 testList.push_back(
PI);
243 testList.push_back(-1.0);
244 testList.push_back( 2.0);
245 testList.push_back( 5.0);
248 testList,
"testList",
true, 1.0e-14));
252 TEST_COMPARE(te->eventInRange(-2.0, -1.0 + -10.0e-14), ==,
false);
253 TEST_COMPARE(te->eventInRange(-2.0, -1.0 + -0.1e-14), ==, true );
254 TEST_COMPARE(te->eventInRange(-2.0, -1.0 + 0.0 ), ==, true );
255 TEST_COMPARE(te->eventInRange(-2.0, -1.0 + 0.1e-14), ==, true );
256 TEST_COMPARE(te->eventInRange(-2.0, -1.0 + 10.0e-14), ==, true );
264 TEST_COMPARE(te->eventInRange(4.5, 5.0 + -10.0e-14), ==,
false);
265 TEST_COMPARE(te->eventInRange(4.5, 5.0 + -0.1e-14), ==, true );
266 TEST_COMPARE(te->eventInRange(4.5, 5.0 + 0.0 ), ==, true );
267 TEST_COMPARE(te->eventInRange(4.5, 5.0 + 0.1e-14), ==, true );
268 TEST_COMPARE(te->eventInRange(4.5, 5.0 + 10.0e-14), ==, true );
271 TEST_COMPARE(te->eventInRange(-1.0 + -10.0e-14, -0.5), ==, true );
272 TEST_COMPARE(te->eventInRange(-1.0 + -0.1e-14, -0.5), ==,
false);
273 TEST_COMPARE(te->eventInRange(-1.0 + 0.0 , -0.5), ==,
false);
274 TEST_COMPARE(te->eventInRange(-1.0 + 0.1e-14, -0.5), ==,
false);
275 TEST_COMPARE(te->eventInRange(-1.0 + 10.0e-14, -0.5), ==,
false);
283 TEST_COMPARE(te->eventInRange(5.0 + -10.0e-14, 6.0), ==, true );
284 TEST_COMPARE(te->eventInRange(5.0 + -0.1e-14, 6.0), ==,
false);
285 TEST_COMPARE(te->eventInRange(5.0 + 0.0 , 6.0), ==,
false);
286 TEST_COMPARE(te->eventInRange(5.0 + 0.1e-14, 6.0), ==,
false);
287 TEST_COMPARE(te->eventInRange(5.0 + 10.0e-14, 6.0), ==,
false);
297 auto pl = tel->getValidParameters();
299 TEST_COMPARE (pl->get<std::string>(
"Type"), ==,
"List");
300 TEST_COMPARE (pl->get<std::string>(
"Name"), ==,
"TimeEventList");
302 std::numeric_limits<double>::epsilon()*100.0, 1.0e-14);
303 TEST_COMPARE (pl->get<
bool>(
"Land On Exactly"), ==,
true);
304 TEST_COMPARE (pl->get<std::string>(
"Time List"), ==,
"");
307 std::ostringstream unusedParameters;
308 pl->unused(unusedParameters);
321 pl->
set(
"Name",
"Unit Test Time Event List");
322 pl->
set(
"Type",
"List");
323 pl->
set(
"Relative Tolerance", 1.0e-10);
324 pl->
set(
"Land On Exactly",
false);
326 std::vector<double> times;
327 times.push_back(-0.1);
328 times.push_back( 0.1);
329 times.push_back( 0.5);
330 times.push_back( 1.1);
331 std::ostringstream list;
332 for(std::size_t i = 0; i < times.size()-1; ++i) list << times[i] <<
", ";
333 list << times[times.size()-1];
334 pl->
set<std::string>(
"Time List", list.str());
337 auto tel = Tempus::createTimeEventList<double>(pl);
341 TEST_COMPARE ( tel->getName() , ==,
"Unit Test Time Event List");
345 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.