mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Fix date for long simulation times
This commit is contained in:
parent
14cedcf434
commit
e350c04871
@ -114,7 +114,9 @@ namespace Opm
|
|||||||
|
|
||||||
boost::posix_time::ptime SimulatorTimer::currentDateTime() const
|
boost::posix_time::ptime SimulatorTimer::currentDateTime() const
|
||||||
{
|
{
|
||||||
return startDateTime() + boost::posix_time::seconds( (int) simulationTimeElapsed());
|
// boost uses only 32 bit long for seconds. But 64 bit for milliseconds
|
||||||
|
// as a work around for very large timess we just use milliseconds
|
||||||
|
return startDateTime() + boost::posix_time::milliseconds( simulationTimeElapsed() / Opm::prefix::milli);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Total time.
|
/// Total time.
|
||||||
|
@ -46,4 +46,7 @@ TSTEP
|
|||||||
TSTEP
|
TSTEP
|
||||||
21*5.0 /
|
21*5.0 /
|
||||||
|
|
||||||
|
TSTEP
|
||||||
|
5*365000 /
|
||||||
|
|
||||||
END ==
|
END ==
|
||||||
|
@ -59,8 +59,9 @@ BOOST_AUTO_TEST_CASE(CreateTimer)
|
|||||||
|
|
||||||
BOOST_CHECK_EQUAL( 0, simtimer.currentStepNum() );
|
BOOST_CHECK_EQUAL( 0, simtimer.currentStepNum() );
|
||||||
BOOST_CHECK_EQUAL( 0., simtimer.simulationTimeElapsed() );
|
BOOST_CHECK_EQUAL( 0., simtimer.simulationTimeElapsed() );
|
||||||
BOOST_CHECK_EQUAL( 120, simtimer.numSteps() );
|
BOOST_CHECK_EQUAL( 125, simtimer.numSteps() );
|
||||||
BOOST_CHECK_EQUAL( 1200., Opm::unit::convert::to(simtimer.totalTime(), Opm::unit::day) );
|
// 1200 + 1000 * 365 * 5
|
||||||
|
BOOST_CHECK_EQUAL( 1826200, Opm::unit::convert::to(simtimer.totalTime(), Opm::unit::day) );
|
||||||
BOOST_CHECK_EQUAL( 0., Opm::unit::convert::to(simtimer.simulationTimeElapsed(), Opm::unit::day) );
|
BOOST_CHECK_EQUAL( 0., Opm::unit::convert::to(simtimer.simulationTimeElapsed(), Opm::unit::day) );
|
||||||
|
|
||||||
double testCurrentTime = 0.;
|
double testCurrentTime = 0.;
|
||||||
@ -85,10 +86,13 @@ BOOST_AUTO_TEST_CASE(CreateTimer)
|
|||||||
BOOST_CHECK_EQUAL( false, simtimer.done() );
|
BOOST_CHECK_EQUAL( false, simtimer.done() );
|
||||||
BOOST_CHECK_EQUAL( 0., Opm::unit::convert::to(simtimer.simulationTimeElapsed(), Opm::unit::day) );
|
BOOST_CHECK_EQUAL( 0., Opm::unit::convert::to(simtimer.simulationTimeElapsed(), Opm::unit::day) );
|
||||||
|
|
||||||
simtimer.setCurrentStepNum(120);
|
simtimer.setCurrentStepNum(125);
|
||||||
BOOST_CHECK_EQUAL( Opm::unit::convert::to(simtimer.simulationTimeElapsed(), Opm::unit::day),
|
BOOST_CHECK_EQUAL( Opm::unit::convert::to(simtimer.simulationTimeElapsed(), Opm::unit::day),
|
||||||
Opm::unit::convert::to(simtimer.totalTime(), Opm::unit::day) );
|
Opm::unit::convert::to(simtimer.totalTime(), Opm::unit::day) );
|
||||||
|
|
||||||
|
boost::gregorian::date endDate( 7014, 3, 14);
|
||||||
|
BOOST_CHECK_EQUAL ( simtimer.currentDateTime(), boost::posix_time::ptime(endDate));
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
double testCurrentTime1 = 0.;
|
double testCurrentTime1 = 0.;
|
||||||
double testCurrentTime2 = 0.;
|
double testCurrentTime2 = 0.;
|
||||||
@ -112,4 +116,6 @@ BOOST_AUTO_TEST_CASE(CreateTimer)
|
|||||||
BOOST_CHECK_EQUAL( Opm::unit::convert::to(testCurrentTime2, Opm::unit::minute),
|
BOOST_CHECK_EQUAL( Opm::unit::convert::to(testCurrentTime2, Opm::unit::minute),
|
||||||
Opm::unit::convert::to(simtimer.totalTime(), Opm::unit::minute) );
|
Opm::unit::convert::to(simtimer.totalTime(), Opm::unit::minute) );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user