def test_event_iteration(self): """ This tests FMUs with event iteration (JModelica.org). """ fmu_name = compile_fmu('EventIter.EventMiddleIter', os.path.join(path_to_mos,'EventIter.mo')) model = load_fmu(fmu_name) sim_res = model.simulate(final_time=10) nose.tools.assert_almost_equal(sim_res.initial('x'), 2.00000, 4) nose.tools.assert_almost_equal(sim_res.final('x'), 10.000000, 4) nose.tools.assert_almost_equal(sim_res.final('y'), 3.0000000, 4) nose.tools.assert_almost_equal(sim_res.final('z'), 2.0000000, 4) fmu_name = compile_fmu('EventIter.EventStartIter', os.path.join(path_to_mos,'EventIter.mo')) model = FMUModel(fmu_name) sim_res = model.simulate(final_time=10) nose.tools.assert_almost_equal(sim_res.initial('x'), 1.00000, 4) nose.tools.assert_almost_equal(sim_res.initial('y'), -1.00000, 4) nose.tools.assert_almost_equal(sim_res.initial('z'), 1.00000, 4) nose.tools.assert_almost_equal(sim_res.final('x'), -2.000000, 4) nose.tools.assert_almost_equal(sim_res.final('y'), -1.0000000, 4) nose.tools.assert_almost_equal(sim_res.final('z'), 4.0000000, 4)
def test_event_iteration(self): """ This tests FMUs with event iteration (JModelica.org). """ fmu_name = compile_fmu('EventIter.EventMiddleIter', os.path.join(path_to_mos, 'EventIter.mo')) model = load_fmu(fmu_name) sim_res = model.simulate(final_time=10) nose.tools.assert_almost_equal(sim_res.initial('x'), 2.00000, 4) nose.tools.assert_almost_equal(sim_res.final('x'), 10.000000, 4) nose.tools.assert_almost_equal(sim_res.final('y'), 3.0000000, 4) nose.tools.assert_almost_equal(sim_res.final('z'), 2.0000000, 4) fmu_name = compile_fmu('EventIter.EventStartIter', os.path.join(path_to_mos, 'EventIter.mo')) model = FMUModel(fmu_name) sim_res = model.simulate(final_time=10) nose.tools.assert_almost_equal(sim_res.initial('x'), 1.00000, 4) nose.tools.assert_almost_equal(sim_res.initial('y'), -1.00000, 4) nose.tools.assert_almost_equal(sim_res.initial('z'), 1.00000, 4) nose.tools.assert_almost_equal(sim_res.final('x'), -2.000000, 4) nose.tools.assert_almost_equal(sim_res.final('y'), -1.0000000, 4) nose.tools.assert_almost_equal(sim_res.final('z'), 4.0000000, 4)
def test_changed_starttime(self): """ This tests a simulation with different start time. """ bounce = FMUModel('bouncingBall.fmu', path_to_fmus_me1) #bounce.initialize() opts = bounce.simulate_options() opts["CVode_options"]["rtol"] = 1e-4 opts["CVode_options"]["atol"] = 1e-6 res = bounce.simulate(start_time=2., final_time=5., options=opts) nose.tools.assert_almost_equal(res.initial('h'), 1.000000, 5) nose.tools.assert_almost_equal(res.final('h'), -0.98048862, 4) nose.tools.assert_almost_equal(res.final('time'), 5.000000, 5)
def test_changed_starttime(self): """ This tests a simulation with different start time. """ bounce = FMUModel('bouncingBall.fmu', path_to_fmus_me1) #bounce.initialize() opts = bounce.simulate_options() opts["CVode_options"]["rtol"] = 1e-4 opts["CVode_options"]["atol"] = 1e-6 res = bounce.simulate(start_time=2.,final_time=5.,options=opts) nose.tools.assert_almost_equal(res.initial('h'),1.000000,5) nose.tools.assert_almost_equal(res.final('h'),-0.98048862,4) nose.tools.assert_almost_equal(res.final('time'),5.000000,5)
def test_simulation_completed_step_lsodar(self): model = load_fmu('Pendulum_0Dynamic.fmu', path_to_fmus_me1) opts = model.simulate_options() opts["solver"] = "LSODAR" res = model.simulate(final_time=10, options=opts) assert N.abs(res.final('y') + 0.956993467) < 1e-1 assert N.abs(res.final('x') - 0.290109468) < 1e-1 model = FMUModel('Pendulum_0Dynamic.fmu', path_to_fmus_me1) opts["ncp"] = 1000 res = model.simulate(final_time=10, options=opts) assert N.abs(res.final('y') + 0.956993467) < 1e-1 assert N.abs(res.final('x') - 0.290109468) < 1e-1
def test_simulation_completed_step_lsodar(self): model = load_fmu('Pendulum_0Dynamic.fmu', path_to_fmus_me1) opts = model.simulate_options() opts["solver"] = "LSODAR" res = model.simulate(final_time=10, options=opts) assert N.abs(res.final('y')+0.956993467) < 1e-1 assert N.abs(res.final('x')-0.290109468) < 1e-1 model = FMUModel('Pendulum_0Dynamic.fmu', path_to_fmus_me1) opts["ncp"] = 1000 res = model.simulate(final_time=10, options=opts) assert N.abs(res.final('y')+0.956993467) < 1e-1 assert N.abs(res.final('x')-0.290109468) < 1e-1
def test_simulation_completed_step_cvode(self): """ This tests a simulation of a Pendulum with dynamic state selection. """ model = load_fmu('Pendulum_0Dynamic.fmu', path_to_fmus_me1) res = model.simulate(final_time=10) nose.tools.assert_almost_equal(res.initial('x'), 1.000000, 4) nose.tools.assert_almost_equal(res.initial('y'), 0.000000, 4) nose.tools.assert_almost_equal(res.final('x'), 0.290109468, 4) nose.tools.assert_almost_equal(res.final('y'), -0.956993467, 4) model = FMUModel('Pendulum_0Dynamic.fmu', path_to_fmus_me1) res = model.simulate(final_time=10, options={'ncp': 1000}) nose.tools.assert_almost_equal(res.initial('x'), 1.000000, 4) nose.tools.assert_almost_equal(res.initial('y'), 0.000000, 4)
def test_simulation_completed_step_cvode(self): """ This tests a simulation of a Pendulum with dynamic state selection. """ model = load_fmu('Pendulum_0Dynamic.fmu', path_to_fmus_me1) res = model.simulate(final_time=10) nose.tools.assert_almost_equal(res.initial('x'), 1.000000, 4) nose.tools.assert_almost_equal(res.initial('y'), 0.000000, 4) nose.tools.assert_almost_equal(res.final('x'), 0.290109468, 4) nose.tools.assert_almost_equal(res.final('y'), -0.956993467, 4) model = FMUModel('Pendulum_0Dynamic.fmu', path_to_fmus_me1) res = model.simulate(final_time=10, options={'ncp':1000}) nose.tools.assert_almost_equal(res.initial('x'), 1.000000, 4) nose.tools.assert_almost_equal(res.initial('y'), 0.000000, 4)