29 TEST_COMPARE(te->getName(), ==,
"TimeEventRange (0; 0; 0)");
30 te->setName(
"TestName");
31 TEST_COMPARE(te->getName(), ==,
"TestName");
33 TEST_FLOATING_EQUALITY(te->getTimeStart (), 0.0, 1.0e-14);
34 TEST_FLOATING_EQUALITY(te->getTimeStop (), 0.0, 1.0e-14);
35 TEST_FLOATING_EQUALITY(te->getTimeStride(), 0.0, 1.0e-14);
36 TEST_COMPARE(te->getNumEvents (), ==, 1);
38 TEST_FLOATING_EQUALITY(te->getRelTol(), std::numeric_limits<double>::epsilon()*100.0, 1.0e-14);
39 TEST_FLOATING_EQUALITY(te->getAbsTol(), std::numeric_limits<double>::epsilon()*100.0, 1.0e-14);
41 TEST_COMPARE(te->getLandOnExactly(), ==,
true);
94 TEST_FLOATING_EQUALITY(te->getRelTol(), 0.1, 1.0e-14);
95 te->setRelTol(1.0e-14);
96 te->setLandOnExactly(
false);
97 TEST_COMPARE(te->getLandOnExactly(), ==,
false);
98 te->setLandOnExactly(
true);
101 te->setTimeStart(1.0);
102 TEST_FLOATING_EQUALITY(te->getTimeStart (), 1.0, 1.0e-14);
103 TEST_FLOATING_EQUALITY(te->getTimeStop (), 1.0, 1.0e-14);
104 TEST_FLOATING_EQUALITY(te->getTimeStride(), 0.0, 1.0e-14);
105 TEST_COMPARE(te->getNumEvents (), ==, 1);
108 te->setTimeStop(4.0);
109 TEST_FLOATING_EQUALITY(te->getTimeStart (), 1.0, 1.0e-14);
110 TEST_FLOATING_EQUALITY(te->getTimeStop (), 4.0, 1.0e-14);
111 TEST_FLOATING_EQUALITY(te->getTimeStride(), 3.0, 1.0e-14);
112 TEST_COMPARE(te->getNumEvents (), ==, 2);
115 te->setTimeStride(0.5);
116 TEST_FLOATING_EQUALITY(te->getTimeStart (), 1.0, 1.0e-14);
117 TEST_FLOATING_EQUALITY(te->getTimeStop (), 4.0, 1.0e-14);
118 TEST_FLOATING_EQUALITY(te->getTimeStride(), 0.5, 1.0e-14);
119 TEST_COMPARE(te->getNumEvents (), ==, 7);
128 te->setTimeStart(1.0);
129 te->setTimeStop(4.0);
130 te->setTimeStride(0.5);
133 te->setTimeStride(-0.5);
134 TEST_FLOATING_EQUALITY(te->getTimeStart (), 1.0, 1.0e-14);
135 TEST_FLOATING_EQUALITY(te->getTimeStop (), 4.0, 1.0e-14);
136 TEST_FLOATING_EQUALITY(te->getTimeStride(), 0.5, 1.0e-14);
137 TEST_COMPARE(te->getNumEvents (), ==, 7);
140 te->setTimeStride(5.0);
141 TEST_FLOATING_EQUALITY(te->getTimeStart (), 1.0, 1.0e-14);
142 TEST_FLOATING_EQUALITY(te->getTimeStop (), 4.0, 1.0e-14);
143 TEST_FLOATING_EQUALITY(te->getTimeStride(), 3.0, 1.0e-14);
144 TEST_COMPARE(te->getNumEvents (), ==, 2);
147 te->setTimeStride(1.0e-14);
148 TEST_FLOATING_EQUALITY(te->getTimeStart (), 1.0, 1.0e-14);
149 TEST_FLOATING_EQUALITY(te->getTimeStop (), 4.0, 1.0e-14);
150 TEST_FLOATING_EQUALITY(te->getTimeStride(), 3.0, 1.0e-14);
151 TEST_COMPARE(te->getNumEvents (), ==, 2);
175 te->setTimeRange(0.0,
PI, 1.0);
176 te->setRelTol(1.0e-14);
179 TEST_COMPARE(te->isTime(-1.0 + -10.0e-14), ==,
false);
180 TEST_COMPARE(te->isTime(-1.0 + -0.1e-14), ==,
false);
181 TEST_COMPARE(te->isTime(-1.0 + 0.0 ), ==,
false);
182 TEST_COMPARE(te->isTime(-1.0 + 0.1e-14), ==,
false);
183 TEST_COMPARE(te->isTime(-1.0 + 10.0e-14), ==,
false);
186 TEST_COMPARE(te->isTime(-10.0e-14), ==,
false);
187 TEST_COMPARE(te->isTime( -0.1e-14), ==,
true );
188 TEST_COMPARE(te->isTime( 0.0 ), ==,
true );
189 TEST_COMPARE(te->isTime( 0.1e-14), ==,
true );
190 TEST_COMPARE(te->isTime( 10.0e-14), ==,
false);
193 TEST_COMPARE(te->isTime(1.0 + -10.0e-14), ==,
false);
194 TEST_COMPARE(te->isTime(1.0 + -0.1e-14), ==,
true );
195 TEST_COMPARE(te->isTime(1.0 + 0.0 ), ==,
true );
196 TEST_COMPARE(te->isTime(1.0 + 0.1e-14), ==,
true );
197 TEST_COMPARE(te->isTime(1.0 + 10.0e-14), ==,
false);
200 TEST_COMPARE(te->isTime(3.0 + -10.0e-14), ==,
false);
201 TEST_COMPARE(te->isTime(3.0 + -0.1e-14), ==,
true );
202 TEST_COMPARE(te->isTime(3.0 + 0.0 ), ==,
true );
203 TEST_COMPARE(te->isTime(3.0 + 0.1e-14), ==,
true );
204 TEST_COMPARE(te->isTime(3.0 + 10.0e-14), ==,
false);
207 TEST_COMPARE(te->isTime(4.0 + -10.0e-14), ==,
false);
208 TEST_COMPARE(te->isTime(4.0 + -0.1e-14), ==,
false);
209 TEST_COMPARE(te->isTime(4.0 + 0.0 ), ==,
false);
210 TEST_COMPARE(te->isTime(4.0 + 0.1e-14), ==,
false);
211 TEST_COMPARE(te->isTime(4.0 + 10.0e-14), ==,
false);
221 te->setTimeRange(0.0,
PI, 1.0);
222 te->setRelTol(1.0e-14);
226 TEST_FLOATING_EQUALITY(te->timeToNextEvent( -10.0e-14), 10.0e-14, 1.0e-14);
227 TEST_FLOATING_EQUALITY(te->timeToNextEvent( -0.1e-14), 1.0+ 0.1e-14, 1.0e-14);
228 TEST_FLOATING_EQUALITY(te->timeToNextEvent( 0.0 ), 1.0+ 0.0 , 1.0e-14);
229 TEST_FLOATING_EQUALITY(te->timeToNextEvent( 0.1e-14), 1.0- 0.1e-14, 1.0e-14);
230 TEST_FLOATING_EQUALITY(te->timeToNextEvent( 10.0e-14), 1.0-10.0e-14, 1.0e-14);
233 TEST_FLOATING_EQUALITY(te->timeToNextEvent(1.0+ -10.0e-14), 10.0e-14, 1.0e-02);
234 TEST_FLOATING_EQUALITY(te->timeToNextEvent(1.0+ -0.1e-14), 1.0+ 0.1e-14, 1.0e-01);
235 TEST_FLOATING_EQUALITY(te->timeToNextEvent(1.0+ 0.0 ), 1.0+ 0.0 , 1.0e-02);
236 TEST_FLOATING_EQUALITY(te->timeToNextEvent(1.0+ 0.1e-14), 1.0- 0.1e-14, 1.0e-01);
237 TEST_FLOATING_EQUALITY(te->timeToNextEvent(1.0+ 10.0e-14), 1.0-10.0e-14, 1.0e-14);
240 TEST_FLOATING_EQUALITY(te->timeToNextEvent(3.0+ -10.0e-14), 10.0e-14, 1.0e-02);
241 TEST_FLOATING_EQUALITY(te->timeToNextEvent(3.0+ -0.1e-14), te->getDefaultTime(), 1.0e-01);
242 TEST_FLOATING_EQUALITY(te->timeToNextEvent(3.0+ 0.0 ), te->getDefaultTime(), 1.0e-02);
243 TEST_FLOATING_EQUALITY(te->timeToNextEvent(3.0+ 0.1e-14), te->getDefaultTime(), 1.0e-01);
244 TEST_FLOATING_EQUALITY(te->timeToNextEvent(3.0+ 10.0e-14), te->getDefaultTime(), 1.0e-02);
253 te->setTimeRange(0.0,
PI, 1.0);
254 te->setRelTol(1.0e-14);
258 TEST_FLOATING_EQUALITY(te->timeOfNextEvent( -10.0e-14), 0.0, 1.0e-14);
259 TEST_FLOATING_EQUALITY(te->timeOfNextEvent( -0.1e-14), 1.0, 1.0e-14);
260 TEST_FLOATING_EQUALITY(te->timeOfNextEvent( 0.0 ), 1.0, 1.0e-14);
261 TEST_FLOATING_EQUALITY(te->timeOfNextEvent( 0.1e-14), 1.0, 1.0e-14);
262 TEST_FLOATING_EQUALITY(te->timeOfNextEvent( 10.0e-14), 1.0, 1.0e-14);
265 TEST_FLOATING_EQUALITY(te->timeOfNextEvent(1.0+ -10.0e-14), 1.0, 1.0e-14);
266 TEST_FLOATING_EQUALITY(te->timeOfNextEvent(1.0+ -0.1e-14), 2.0, 1.0e-14);
267 TEST_FLOATING_EQUALITY(te->timeOfNextEvent(1.0+ 0.0 ), 2.0, 1.0e-14);
268 TEST_FLOATING_EQUALITY(te->timeOfNextEvent(1.0+ 0.1e-14), 2.0, 1.0e-14);
269 TEST_FLOATING_EQUALITY(te->timeOfNextEvent(1.0+ 10.0e-14), 2.0, 1.0e-14);
272 TEST_FLOATING_EQUALITY(te->timeOfNextEvent(3.0+ -10.0e-14), 3.0, 1.0e-14);
273 TEST_FLOATING_EQUALITY(te->timeOfNextEvent(3.0+ -0.1e-14), te->getDefaultTime(), 1.0e-14);
274 TEST_FLOATING_EQUALITY(te->timeOfNextEvent(3.0+ 0.0 ), te->getDefaultTime(), 1.0e-14);
275 TEST_FLOATING_EQUALITY(te->timeOfNextEvent(3.0+ 0.1e-14), te->getDefaultTime(), 1.0e-14);
276 TEST_FLOATING_EQUALITY(te->timeOfNextEvent(3.0+ 10.0e-14), te->getDefaultTime(), 1.0e-14);
285 te->setTimeRange(0.0,
PI, 1.0);
286 te->setRelTol(1.0e-14);
291 TEST_COMPARE(te->eventInRange(-1.0, -10.0e-14), ==,
false);
292 TEST_COMPARE(te->eventInRange(-1.0, -0.1e-14), ==,
true );
293 TEST_COMPARE(te->eventInRange(-1.0, 0.0 ), ==,
true );
294 TEST_COMPARE(te->eventInRange(-1.0, 0.1e-14), ==,
true );
295 TEST_COMPARE(te->eventInRange(-1.0, 10.0e-14), ==,
true );
298 TEST_COMPARE(te->eventInRange(0.5, 1.0 + -10.0e-14), ==,
false);
299 TEST_COMPARE(te->eventInRange(0.5, 1.0 + -0.1e-14), ==,
true );
300 TEST_COMPARE(te->eventInRange(0.5, 1.0 + 0.0 ), ==,
true );
301 TEST_COMPARE(te->eventInRange(0.5, 1.0 + 0.1e-14), ==,
true );
302 TEST_COMPARE(te->eventInRange(0.5, 1.0 + 10.0e-14), ==,
true );
305 TEST_COMPARE(te->eventInRange(2.5, 3.0 + -10.0e-14), ==,
false);
306 TEST_COMPARE(te->eventInRange(2.5, 3.0 + -0.1e-14), ==,
true );
307 TEST_COMPARE(te->eventInRange(2.5, 3.0 + 0.0 ), ==,
true );
308 TEST_COMPARE(te->eventInRange(2.5, 3.0 + 0.1e-14), ==,
true );
309 TEST_COMPARE(te->eventInRange(2.5, 3.0 + 10.0e-14), ==,
true );
313 TEST_COMPARE(te->eventInRange(-10.0e-14, 0.5), ==,
true );
314 TEST_COMPARE(te->eventInRange( -0.1e-14, 0.5), ==,
false);
315 TEST_COMPARE(te->eventInRange( 0.0 , 0.5), ==,
false);
316 TEST_COMPARE(te->eventInRange( 0.1e-14, 0.5), ==,
false);
317 TEST_COMPARE(te->eventInRange( 10.0e-14, 0.5), ==,
false);
320 TEST_COMPARE(te->eventInRange(1.0 + -10.0e-14, 1.5), ==,
true );
321 TEST_COMPARE(te->eventInRange(1.0 + -0.1e-14, 1.5), ==,
false);
322 TEST_COMPARE(te->eventInRange(1.0 + 0.0 , 1.5), ==,
false);
323 TEST_COMPARE(te->eventInRange(1.0 + 0.1e-14, 1.5), ==,
false);
324 TEST_COMPARE(te->eventInRange(1.0 + 10.0e-14, 1.5), ==,
false);
327 TEST_COMPARE(te->eventInRange(3.0 + -10.0e-14, 4.0), ==,
true );
328 TEST_COMPARE(te->eventInRange(3.0 + -0.1e-14, 4.0), ==,
false);
329 TEST_COMPARE(te->eventInRange(3.0 + 0.0 , 4.0), ==,
false);
330 TEST_COMPARE(te->eventInRange(3.0 + 0.1e-14, 4.0), ==,
false);
331 TEST_COMPARE(te->eventInRange(3.0 + 10.0e-14, 4.0), ==,
false);
341 auto pl = ter->getValidParameters();
343 TEST_COMPARE (pl->get<std::string>(
"Type"), ==,
"Range");
344 TEST_COMPARE (pl->get<std::string>(
"Name"), ==,
"TimeEventRange (0; 0; 0)");
345 TEST_FLOATING_EQUALITY(pl->get<
double>(
"Start Time"), 0.0, 1.0e-14);
346 TEST_FLOATING_EQUALITY(pl->get<
double>(
"Stop Time") , 0.0, 1.0e-14);
347 TEST_FLOATING_EQUALITY(pl->get<
double>(
"Stride Time") , 0.0, 1.0e-14);
348 TEST_COMPARE (pl->get<
int>(
"Number of Events"), ==, 1);
349 TEST_FLOATING_EQUALITY(pl->get<
double>(
"Relative Tolerance"),
350 std::numeric_limits<double>::epsilon()*100.0, 1.0e-14);
351 TEST_COMPARE (pl->get<
bool>(
"Land On Exactly"), ==,
true);
354 std::ostringstream unusedParameters;
355 pl->unused(unusedParameters);
356 TEST_COMPARE ( unusedParameters.str(), ==,
"");
366 Teuchos::RCP<Teuchos::ParameterList> pl = Teuchos::parameterList(
"Time Event Range");
368 pl->set(
"Name",
"Unit Test Time Event Range");
369 pl->set(
"Type",
"Range");
370 pl->set(
"Start Time", -0.1);
371 pl->set(
"Stop Time", 1.1);
372 pl->set(
"Stride Time", 0.1);
373 pl->set(
"Relative Tolerance", 1.0e-10);
374 pl->set(
"Land On Exactly",
false);
377 auto ter = Tempus::createTimeEventRange<double>(pl);
381 TEST_COMPARE ( ter->getName() , ==,
"Unit Test Time Event Range");
382 TEST_COMPARE ( ter->getType() , ==,
"Range" );
383 TEST_FLOATING_EQUALITY( ter->getTimeStart() , -0.1, 1.0e-14);
384 TEST_FLOATING_EQUALITY( ter->getTimeStop() , 1.1, 1.0e-14);
385 TEST_FLOATING_EQUALITY( ter->getTimeStride() , 0.1, 1.0e-14);
386 TEST_COMPARE ( ter->getNumEvents() , ==, 13 );
387 TEST_FLOATING_EQUALITY( ter->getRelTol() , 1.0e-10, 1.0e-14);
388 TEST_COMPARE ( ter->getLandOnExactly(), ==,
false );
397 0.0, 0.0, 0.0,
"SingleEventAtZero",
true));
398 ter->describe(out, Teuchos::VERB_EXTREME);
400 TEST_COMPARE(ter->getNumEvents (), ==, 1);
402 TEST_COMPARE(ter->isTime(0.0), ==,
true);
403 TEST_FLOATING_EQUALITY(ter->timeToNextEvent(-1.0), 1.0, 1.0e-14);
404 TEST_FLOATING_EQUALITY(ter->timeOfNextEvent(-1.0), 0.0, 1.0e-14);
405 TEST_FLOATING_EQUALITY(ter->timeToNextEvent( 0.0), ter->getDefaultTime(), 1.0e-14);
406 TEST_FLOATING_EQUALITY(ter->timeOfNextEvent( 0.0), ter->getDefaultTime(), 1.0e-14);
407 TEST_COMPARE(ter->eventInRange(-1.0, 1.0), ==,
true);
408 TEST_COMPARE(ter->eventInRange( 0.0, 1.0), ==,
false);
409 TEST_COMPARE(ter->eventInRange( 0.0, 0.0), ==,
false);