4. Classes FMUCoSimulationV1 and FMUCoSimulationV2ΒΆ
Classes FMUCoSimulationV1 (FMI 1.0) and FMUCoSimulationV2 (FMI 2.0) offer a set of convenient functionalities for accessing and manipulating FMUs for Co-Simulation.
The following example demonstrates the basic usage of class FMUCoSimulationV2
(usage of class FMUCoSimulationV1
is analogous):
logging_on = False
time_diff_resolution = 1e-9
fmu = fmipp.FMUCoSimulationV2( uri_to_extracted_fmu, model_name, logging_on, time_diff_resolution )
start_time = 0.
stop_time = 10.
instance_name = "sine_standalone1"
visible = False
interactive = False
status = fmu.instantiate( instance_name, start_time, visible, interactive )
assert status == fmipp.statusOK
status = fmu.setRealValue( 'omega', 6.28318531 )
assert status == fmipp.statusOK
stop_time_defined = True
status = fmu.initialize( start_time, stop_time_defined, stop_time )
assert status == fmipp.statusOK
time = 0.
step_size = 1.
while ( ( time + step_size ) - stop_time < time_diff_resolution ):
# Make co-simulation step.
new_step = True
status = fmu.doStep( time, step_size, new_step )
assert status == fmipp.statusOK
# Advance time.
time += step_size
# Retrieve result.
x = fmu.getRealValue( 'x' )
assert fmu.getLastStatus() == fmipp.statusOK