|
| 1 | +## status: correct |
| 2 | +## teardown_command: rm -rf SimpleSimulation15_res.mat |
| 3 | +## linux: yes |
| 4 | +## ucrt64: yes |
| 5 | +## win: yes |
| 6 | +## mac: yes |
| 7 | + |
| 8 | +from OMSimulator import SSP, CRef, Connector, Causality, SignalType |
| 9 | + |
| 10 | +model = SSP() |
| 11 | +model.addResource('../resources/Modelica.Blocks.Math.Add.fmu', new_name='resources/Add.fmu') |
| 12 | +model.addComponent(CRef("default", "Add1"), "resources/Add.fmu") |
| 13 | +model.addComponent(CRef("default", "Add3"), "resources/Add.fmu") |
| 14 | + |
| 15 | +model.activeVariant.system.addConnector(Connector('input1', Causality.input, SignalType.Real)) |
| 16 | + |
| 17 | + |
| 18 | +model.addSystem(CRef("default", "sub-system")) |
| 19 | +subsystem = model.activeVariant.system.elements[CRef("sub-system")] |
| 20 | + |
| 21 | +model.addComponent(CRef("default", "sub-system", "Add2"), "resources/Add.fmu") |
| 22 | + |
| 23 | + |
| 24 | +subsystem.addConnector(Connector(CRef("u"), Causality.input, SignalType.Real)) |
| 25 | +subsystem.addConnector(Connector(CRef("y"), Causality.output, SignalType.Real)) |
| 26 | + |
| 27 | +subsystem.addConnection("", "u", "Add2", "u1") |
| 28 | +subsystem.addConnection("", "u", "Add2", "u2") |
| 29 | +subsystem.addConnection("", "y", "Add2", "y") |
| 30 | + |
| 31 | + |
| 32 | +model.addConnection(CRef("default", "Add1", "y"), CRef("default", "sub-system", "u")) |
| 33 | +model.addConnection(CRef("default", "sub-system", "y"), CRef("default", "Add3", "u1")) |
| 34 | +model.addConnection(CRef("default", "sub-system", "y"), CRef("default", "Add3", "u2")) |
| 35 | + |
| 36 | +## check failing connection and fix it |
| 37 | +## model.addConnection(CRef("default", "input1"), CRef("default", "Add1", "y")) |
| 38 | + |
| 39 | +model.list() |
| 40 | +instantiated_model = model.instantiate() |
| 41 | +#print(instantiated_model.dumpApiCalls()) |
| 42 | + |
| 43 | +instantiated_model.setResultFile("SimpleSimulation15_res.mat") |
| 44 | +instantiated_model.setValue(CRef('default', 'sub-system', 'u'), 400.0) |
| 45 | + |
| 46 | +instantiated_model.initialize() |
| 47 | +instantiated_model.simulate() |
| 48 | +print(f"info: default.sub-system.u: {instantiated_model.getValue(CRef('default', 'sub-system', 'u'))}", flush=True) |
| 49 | +print(f"info: default.sub-system.Add2.u1: {instantiated_model.getValue(CRef('default', 'sub-system', 'Add2', 'u1'))}", flush=True) |
| 50 | +print(f"info: default.sub-system.Add2.u2: {instantiated_model.getValue(CRef('default', 'sub-system', 'Add2', 'u2'))}", flush=True) |
| 51 | +print(f"info: default.sub-system.Add2.y : {instantiated_model.getValue(CRef('default', 'sub-system', 'Add2', 'y'))}", flush=True) |
| 52 | + |
| 53 | +instantiated_model.terminate() |
| 54 | +instantiated_model.delete() |
| 55 | + |
| 56 | +## Result: |
| 57 | +## info: Result file: SimpleSimulation15_res.mat (bufferSize=1) |
| 58 | +## <class 'OMSimulator.ssp.SSP'> |
| 59 | +## |-- Resources: |
| 60 | +## |-- resources/Add.fmu |
| 61 | +## |-- Active Variant: default |
| 62 | +## |-- <class 'OMSimulator.ssd.SSD'> |
| 63 | +## |-- Variant "default": None |
| 64 | +## |-- |-- System: default 'None' |
| 65 | +## |-- |-- |-- Connectors: |
| 66 | +## |-- |-- |-- |-- (input1, Causality.input, SignalType.Real, None, 'None') |
| 67 | +## |-- |-- |-- Elements: |
| 68 | +## |-- |-- |-- |-- FMU: Add1 'None' |
| 69 | +## |-- |-- |-- |-- |-- path: resources/Add.fmu |
| 70 | +## |-- |-- |-- |-- |-- Connectors: |
| 71 | +## |-- |-- |-- |-- |-- |-- (u1, Causality.input, SignalType.Real, None, 'Connector of Real input signal 1') |
| 72 | +## |-- |-- |-- |-- |-- |-- (u2, Causality.input, SignalType.Real, None, 'Connector of Real input signal 2') |
| 73 | +## |-- |-- |-- |-- |-- |-- (y, Causality.output, SignalType.Real, None, 'Connector of Real output signal') |
| 74 | +## |-- |-- |-- |-- |-- |-- (k1, Causality.parameter, SignalType.Real, None, 'Gain of input signal 1') |
| 75 | +## |-- |-- |-- |-- |-- |-- (k2, Causality.parameter, SignalType.Real, None, 'Gain of input signal 2') |
| 76 | +## |-- |-- |-- |-- FMU: Add3 'None' |
| 77 | +## |-- |-- |-- |-- |-- path: resources/Add.fmu |
| 78 | +## |-- |-- |-- |-- |-- Connectors: |
| 79 | +## |-- |-- |-- |-- |-- |-- (u1, Causality.input, SignalType.Real, None, 'Connector of Real input signal 1') |
| 80 | +## |-- |-- |-- |-- |-- |-- (u2, Causality.input, SignalType.Real, None, 'Connector of Real input signal 2') |
| 81 | +## |-- |-- |-- |-- |-- |-- (y, Causality.output, SignalType.Real, None, 'Connector of Real output signal') |
| 82 | +## |-- |-- |-- |-- |-- |-- (k1, Causality.parameter, SignalType.Real, None, 'Gain of input signal 1') |
| 83 | +## |-- |-- |-- |-- |-- |-- (k2, Causality.parameter, SignalType.Real, None, 'Gain of input signal 2') |
| 84 | +## |-- |-- |-- |-- System: sub-system 'None' |
| 85 | +## |-- |-- |-- |-- |-- Connectors: |
| 86 | +## |-- |-- |-- |-- |-- |-- (u, Causality.input, SignalType.Real, None, 'None') |
| 87 | +## |-- |-- |-- |-- |-- |-- (y, Causality.output, SignalType.Real, None, 'None') |
| 88 | +## |-- |-- |-- |-- |-- Elements: |
| 89 | +## |-- |-- |-- |-- |-- |-- FMU: Add2 'None' |
| 90 | +## |-- |-- |-- |-- |-- |-- |-- path: resources/Add.fmu |
| 91 | +## |-- |-- |-- |-- |-- |-- |-- Connectors: |
| 92 | +## |-- |-- |-- |-- |-- |-- |-- |-- (u1, Causality.input, SignalType.Real, None, 'Connector of Real input signal 1') |
| 93 | +## |-- |-- |-- |-- |-- |-- |-- |-- (u2, Causality.input, SignalType.Real, None, 'Connector of Real input signal 2') |
| 94 | +## |-- |-- |-- |-- |-- |-- |-- |-- (y, Causality.output, SignalType.Real, None, 'Connector of Real output signal') |
| 95 | +## |-- |-- |-- |-- |-- |-- |-- |-- (k1, Causality.parameter, SignalType.Real, None, 'Gain of input signal 1') |
| 96 | +## |-- |-- |-- |-- |-- |-- |-- |-- (k2, Causality.parameter, SignalType.Real, None, 'Gain of input signal 2') |
| 97 | +## |-- |-- |-- |-- |-- Connections: |
| 98 | +## |-- |-- |-- |-- |-- |-- .u -> Add2.u1 |
| 99 | +## |-- |-- |-- |-- |-- |-- .u -> Add2.u2 |
| 100 | +## |-- |-- |-- |-- |-- |-- .y -> Add2.y |
| 101 | +## |-- |-- |-- Connections: |
| 102 | +## |-- |-- |-- |-- Add1.y -> sub-system.u |
| 103 | +## |-- |-- |-- |-- sub-system.y -> Add3.u1 |
| 104 | +## |-- |-- |-- |-- sub-system.y -> Add3.u2 |
| 105 | +## |-- DefaultExperiment |
| 106 | +## |-- |-- startTime: 0.0 |
| 107 | +## |-- |-- stopTime: 1.0 |
| 108 | +## info: default.sub-system.u: 400.0 |
| 109 | +## info: default.sub-system.Add2.u1: 400.0 |
| 110 | +## info: default.sub-system.Add2.u2: 400.0 |
| 111 | +## info: default.sub-system.Add2.y : 800.0 |
| 112 | +## endResult |
0 commit comments