|
@@ -85,8 +85,9 @@ class CosimRunner:
|
|
|
end_connection = scenario.stop_condition
|
|
end_connection = scenario.stop_condition
|
|
|
if end_connection is None:
|
|
if end_connection is None:
|
|
|
assert scenario.stop_time > 0.0
|
|
assert scenario.stop_time > 0.0
|
|
|
- return (time < scenario.stop_time) or \
|
|
|
|
|
- np.isclose(time, scenario.stop_time, rtol=scenario.step_size * 1e-03, atol=scenario.step_size * 1e-03)
|
|
|
|
|
|
|
+ return (time + scenario.step_size <= scenario.stop_time) or \
|
|
|
|
|
+ np.isclose(time + scenario.step_size, scenario.stop_time, rtol=scenario.step_size * 1e-03, atol=scenario.step_size * 1e-03)
|
|
|
|
|
+
|
|
|
last_value = end_connection.source_fmu.getReal(end_connection.source_vr)[0]
|
|
last_value = end_connection.source_fmu.getReal(end_connection.source_vr)[0]
|
|
|
return last_value > 0.0 and not \
|
|
return last_value > 0.0 and not \
|
|
|
np.isclose(last_value, 0.0, rtol=scenario.step_size*1e-3, atol=scenario.step_size*1e-3)
|
|
np.isclose(last_value, 0.0, rtol=scenario.step_size*1e-3, atol=scenario.step_size*1e-3)
|
|
@@ -106,9 +107,12 @@ class CosimRunner:
|
|
|
results = self.init_results(scenario)
|
|
results = self.init_results(scenario)
|
|
|
|
|
|
|
|
for f in scenario.fmus:
|
|
for f in scenario.fmus:
|
|
|
- f.setupExperiment()
|
|
|
|
|
|
|
+ f.setupExperiment(None, 0.0, scenario.stop_time if scenario.stop_time>0.0 else 0.0)
|
|
|
f.enterInitializationMode()
|
|
f.enterInitializationMode()
|
|
|
|
|
|
|
|
|
|
+ for f, (vrs, vals) in scenario.real_parameters.items():
|
|
|
|
|
+ f.setReal(vrs, vals)
|
|
|
|
|
+
|
|
|
# TODO Support fixed point iteration initialization
|
|
# TODO Support fixed point iteration initialization
|
|
|
self.propagate_initial_outputs(scenario)
|
|
self.propagate_initial_outputs(scenario)
|
|
|
|
|
|