Open adrpo opened 3 months ago
Example of such failure:
python3 -m fmpy simulate --output-file Buildings_10_Buildings.Fluid.BaseClasses.FlowModels.Validation.BasicFlowFunction_m_flow_DerivativeCheck_res.csv --start-time -2 --stop-time 2 --timeout 50 --relative-tolerance 1e-08 --interface-type ModelExchange --solver CVode --output-interval 0.0016 Buildings_10_Buildings_Fluid_BaseClasses_FlowModels_Validation_BasicFlowFunction_m_flow_DerivativeCheck.fmu
LOG_ASSERT | error | [/home/hudson/saved_omc/libraries/.openmodelica/libraries/Buildings 10.1.1-maint.10.0.x/Fluid/BaseClasses/FlowModels/Validation/BasicFlowFunction_m_flow_DerivativeCheck.mo:25:3-25:54:writable]
| | | | The following assertion has been violated at time -1.998400
| | | | ((abs(err) < 0.001)) --> "Error in implementation."
Traceback (most recent call last):
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.10/dist-packages/fmpy/__main__.py", line 4, in <module>
main()
File "/usr/local/lib/python3.10/dist-packages/fmpy/command_line.py", line 167, in main
result = simulate_fmu(args.fmu_filename,
File "/usr/local/lib/python3.10/dist-packages/fmpy/simulation.py", line 759, in simulate_fmu
result = simulateME(model_description, fmu, start_time, stop_time, solver, step_size, relative_tolerance, start_values, apply_default_start_values, input, output, output_interval, record_events, timeout, step_finished, validate, set_stop_time)
File "/usr/local/lib/python3.10/dist-packages/fmpy/simulation.py", line 1076, in simulateME
step_event, _ = fmu.completedIntegratorStep()
File "/usr/local/lib/python3.10/dist-packages/fmpy/fmi2.py", line 491, in completedIntegratorStep
self.fmi2CompletedIntegratorStep(self.component, noSetFMUStatePriorToCurrentPoint, byref(enterEventMode), byref(terminateSimulation))
File "/usr/local/lib/python3.10/dist-packages/fmpy/fmi2.py", line 215, in w
raise FMICallException(function=fname, status=res)
fmpy.fmi1.FMICallException: fmi2CompletedIntegratorStep failed with status 3 (error).
When used from command line to simulate an FMU on Linux, the created temp directory /tmp/tmpNNNNNNN is not removed on exit if an exception is thrown. I looked at the code here: https://github.com/CATIA-Systems/FMPy/blob/main/fmpy/simulation.py#L757 and you should put that in a try/else block otherwise the cleanup will be skipped!