Exemplo n.º 1
0
## status: correct
## teardown_command: rm -rf test01-py/
## linux: yes
## mingw: yes
## win: no
## mac: no

from OMSimulator import OMSimulator
oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./test01-py/")

def printStatus(status, expected):
  cmp = ""
  if status == expected:
    cmp = "correct"
  else:
    cmp = "wrong"

  if 0 == status:
    status = "ok"
  elif 1 == status:
    status = "warning"
  elif 3 == status:
    status = "error"
  print("status:  [%s] %s" % (cmp, status), flush=True)

status = oms.newModel("test")
printStatus(status, 0)
Exemplo n.º 2
0
## status: correct
## teardown_command: rm -rf test03-py/ test_res.mat
## linux: yes
## mingw: no
## win: no
## mac: no


from OMSimulator import OMSimulator
oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./test03-py/")

def printStatus(status, expected):
  cmp = ""
  if status == expected:
    cmp = "correct"
  else:
    cmp = "wrong"

  if 0 == status:
    status = "ok"
  elif 1 == status:
    status = "warning"
  elif 3 == status:
    status = "error"
  print("status:  [%s] %s" % (cmp, status), flush=True)


Exemplo n.º 3
0
## status: correct
## teardown_command: rm -rf simulation-py/ test_init.dot test_sim.dot test.mat
## linux: yes
## mingw: no
## win: no
## mac: no

from OMSimulator import OMSimulator
oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./simulation-py/")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print("status:  [%s] %s" % (cmp, status), flush=True)


status = oms.newModel("test")
Exemplo n.º 4
0
## status: correct
## teardown_command: rm -rf connections-py/
## linux: yes
## mingw: no
## win: no
## mac: no

from OMSimulator import OMSimulator

oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print("status:  [%s] %s" % (cmp, status), flush=True)


status = oms.setTempDirectory("./connections-py/")
Exemplo n.º 5
0
## status: correct
## teardown_command: rm HelloWorld_cs_Fit_py.log HelloWorld_cs_Fit_res.mat

from OMSimulator import OMSimulator
from OMSysIdent import OMSysIdent
import numpy as np

oms = OMSimulator()

oms.setLogFile("HelloWorld_cs_Fit_py.log")
oms.setTempDirectory("./HelloWorld_cs_Fit_py/")
oms.newModel("HelloWorld_cs_Fit")
oms.addSystem("HelloWorld_cs_Fit.root", oms.system_wc)
# oms.setTolerance("HelloWorld_cs_Fit.root", 1e-5)

# add FMU
oms.addSubModel("HelloWorld_cs_Fit.root.HelloWorld",
                "../resources/HelloWorld.fmu")

# create simodel for model
simodel = OMSysIdent("HelloWorld_cs_Fit")
# simodel.describe()

# Data generated from simulating HelloWorld.mo for 1.0s with Euler and 0.1s step size
kNumSeries = 1
kNumObservations = 11
data_time = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1])
inputvars = []
measurementvars = ["root.HelloWorld.x"]
data_x = np.array([
    1, 0.9, 0.8100000000000001, 0.7290000000000001, 0.6561, 0.5904900000000001,
## status: correct
## linux: yes
## mingw: yes
## win: no
## mac: no

from OMSimulator import OMSimulator
oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./exportssvtemplate_py/")


def readFile(filename):
  f = open(filename, "r")
  content = f.read()
  print(content)
  f:close()



oms.newModel("test")

oms.addSystem("test.Root", oms.system_wc)

oms.addSubModel("test.Root.Gain", "../resources/Modelica.Blocks.Math.Gain.fmu")
oms.addSubModel("test.Root.add", "../resources/Modelica.Blocks.Math.Add.fmu")

oms.exportSSVTemplate("test", "template.ssv")
readFile("template.ssv")
Exemplo n.º 7
0
## status: correct
## teardown_command: rm -rf test01-py/
## linux: yes
## mingw: yes
## win: no
## mac: no

from OMSimulator import OMSimulator
session = OMSimulator()

session.oms3_setCommandLineOption("--suppressPath=true")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print "status:  [%s] %s" % (cmp, status)


status = session.oms3_setTempDirectory("./test01-py/")
printStatus(status, 0)
Exemplo n.º 8
0
## status: correct

from OMSimulator import OMSimulator
session = OMSimulator()

session.setLogFile("omsllog.txt")

model = session.newModel()
session.setTempDirectory(".")

session.instantiateFMU(model, "../FMUs/cs.loop1.A.fmu", "A")
session.instantiateFMU(model, "../FMUs/cs.loop1.B.fmu", "B")
session.instantiateFMU(model, "../FMUs/cs.loop1.P.fmu", "P")

# add connections
session.addConnection(model, "A.y", "B.u")
session.addConnection(model, "B.y", "A.u")
session.addConnection(model, "P.y", "A.p")
session.addConnection(model, "P.y", "B.p")

session.setResultFile(model, "cs_loop1_res.mat")
session.setStopTime(model, 0.5)
session.setCommunicationInterval(model, 1e-2)
session.setTolerance(model, 1e-6)

session.describe(model)

session.initialize(model)
session.simulate(model)
session.terminate(model)
Exemplo n.º 9
0
## status: correct
## teardown_command: rm -rf setunits_03_py/
## linux: yes
## mingw32: yes
## mingw64: yes
## win: yes
## mac: no

from OMSimulator import OMSimulator

oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./setunits_03_py/")

oms.newModel("model")
oms.addSystem("model.root", oms.system_wc)
oms.addSubModel("model.root.sine",
                "../resources/Modelica.Blocks.Sources.Sine.fmu")

## add resources to submodule
oms.newResources("model.root.sine:sine.ssv")

oms.setReal("model.root.sine.phase", 27)
oms.setReal("model.root.sine.amplitude", -100)
oms.setReal("model.root.sine.freqHz", -300)

oms.setResultFile("model", "")

(src, status) = oms.exportSnapshot("model:resources/sine.ssv")
print(src)
Exemplo n.º 10
0
## status: correct
## teardown_command: rm -rf buses-py/
## linux: yes
## mingw: no
## win: no
## mac: no

from OMSimulator import OMSimulator

oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print("status:  [%s] %s" % (cmp, status), flush=True)


status = oms.setTempDirectory("./buses-py/")
Exemplo n.º 11
0
## status: correct

from OMSimulator import OMSimulator
session = OMSimulator()

session.setLogFile("omsllog.txt")

session.setTempDirectory(".")
model = session.loadModel('ConnectedFmu.xml')

session.initialize(model)
session.simulate(model)
tcur = session.getCurrentTime(model)
print "python test", tcur
print("adder1.y at  .. " + str(tcur) + ": " +
      str(session.getReal(model, "adder1.y")))
print("adder2.y at  .. " + str(tcur) + ": " +
      str(session.getReal(model, "adder2.y")))

session.terminate(model)
session.unload(model)

## Result:
## python test 2.1
## adder1.y at  .. 2.1: 0.541623791869
## adder2.y at  .. 2.1: 1.5649403643
## info:    Logging information has been saved to "omsllog.txt"
## endResult
Exemplo n.º 12
0
## status: correct
## teardown_command: rm HelloWorld_cs_Fit_py.log HelloWorld_cs_Fit_res.mat

from OMSimulator import OMSimulator
from OMSysIdent import OMSysIdent
import numpy as np

session = OMSimulator()

version = session.getVersion()

session.setLogFile("HelloWorld_cs_Fit_py.log")
session.setTempDirectory(".")
model = "HelloWorld_cs_Fit"
session.newFMIModel(model)
# session.setTolerance(model, 1e-5) # 2018-04-25 Not yet supported in oms2 API

# add FMU
session.addFMU(model, "../FMUs/HelloWorld_cs.fmu", "HelloWorld")

# create simodel for model
simodel = OMSysIdent(model)
# simodel.describe()

# Data generated from simulating HelloWorld.mo for 1.0s with Euler and 0.1s step size
kNumSeries = 1
kNumObservations = 11
data_time = np.array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1])
inputvars = []
measurementvars = ["HelloWorld:x"]
data_x = np.array([
Exemplo n.º 13
0
## status: correct
## teardown_command: rm -rf test02-py/
## linux: yes
## mingw: yes
## win: no
## mac: no

from OMSimulator import OMSimulator
session = OMSimulator()

session.oms3_setCommandLineOption("--suppressPath=true")
session.oms3_setTempDirectory("./test02-py/")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print "status:  [%s] %s" % (cmp, status)


def printType(t):
Exemplo n.º 14
0
## status: correct
## teardown_command: rm -rf HelloWorldWithInput_cs_Fit/ HelloWorldWithInput_cs_Fit.log HelloWorldWithInput_cs_Fit_res.csv
## linux: yes
## mingw: no
## win: no
## mac: no

from OMSimulator import OMSimulator
from OMSysIdent import OMSysIdent
import numpy as np

oms = OMSimulator()

oms.setLogFile("HelloWorldWithInput_cs_Fit.log")
oms.setTempDirectory("./HelloWorldWithInput_cs_Fit/")
oms.newModel("HelloWorldWithInput_cs_Fit")
oms.addSystem("HelloWorldWithInput_cs_Fit.root", oms.system_wc)
oms.setFixedStepSize("HelloWorldWithInput_cs_Fit.root", 1e-1)
oms.setTolerance("HelloWorldWithInput_cs_Fit.root", 1e-5, 1e-5)
oms.setResultFile("HelloWorldWithInput_cs_Fit", "");


# add FMU
status = oms.addSubModel("HelloWorldWithInput_cs_Fit.root.HelloWorldWithInput", "../resources/HelloWorldWithInput.fmu")

# create system identification model for model
simodel = OMSysIdent("HelloWorldWithInput_cs_Fit")
# simodel.describe()

# Data generated from simulating HelloWorldWithInput.mo for 1.0s with Euler and 0.1s step size
kNumSeries = 1;
Exemplo n.º 15
0
## status: correct
## teardown_command: rm -rf getDirectionalDerivative_ME_py/
## linux: no
## mingw32: no
## mingw64: yes
## win: yes
## mac: no


from OMSimulator import OMSimulator
oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./getDirectionalDerivative_ME_py/")

oms.newModel("model")

oms.addSystem("model.root", oms.system_sc)

oms.addSubModel("model.root.CauerLowPassAnalog", "../resources/Modelica.Electrical.Analog.Examples.CauerLowPassAnalog.fmu")

oms.setResultFile("model", "getDirectionalDerivatives_ME_Py.mat", 10)

oms.instantiate("model")

oms.initialize("model")
## error msg for wrong cref
oms.getDirectionalDerivative("model.root.CauerLowPassAnalog.der(C1.v2)")

print("info:    Partial Derivatives after Initialization")
print("info:      model.root.CauerLowPassAnalog.der(C1.v): " , oms.getDirectionalDerivative("model.root.CauerLowPassAnalog.der(C1.v)")[0])
Exemplo n.º 16
0
## status: correct
## teardown_command: rm -rf externalmodels-py
## linux: yes
## mingw: yes
## win: no
## mac: no

from OMSimulator import OMSimulator
session = OMSimulator()

session.oms3_setCommandLineOption("--suppressPath=true")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print "status:  [%s] %s" % (cmp, status)


status = session.oms3_setTempDirectory("./externalmodels-py/")
printStatus(status, 0)
Exemplo n.º 17
0
## status: correct
## teardown_command: rm -rf import_export-py/ test-py.ssp
## linux: yes
## mingw: yes
## win: no
## mac: no

from OMSimulator import OMSimulator

session = OMSimulator()

session.oms3_setCommandLineOption("--suppressPath=true")
session.oms3_setTempDirectory("./import_export-py/")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print "status:  [%s] %s" % (cmp, status)

Exemplo n.º 18
0
## status: correct
## teardown_command: rm -rf test02-py/
## linux: yes
## mingw: no
## win: no
## mac: no

from OMSimulator import OMSimulator

oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./test02-py/")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print("status:  [%s] %s" % (cmp, status), flush=True)

Exemplo n.º 19
0
## status: correct

from OMSimulator import OMSimulator
session = OMSimulator()

session.setLogFile("omsllog.txt")

model = session.newModel()
session.setTempDirectory(".")

session.instantiateFMU(model, "../FMUs/cs_test1.fmu", "test1")
session.describe(model)

session.setStopTime(model, 2.1)
session.setTolerance(model, 1e-5)
session.setResultFile(model, "cs_test1_res.mat")

session.initialize(model)
session.simulate(model)
session.terminate(model)

session.unload(model)

vars = ["test1.x"]
for var in vars:
    if (1 == session.compareSimulationResults(
            "cs_test1_res.mat", "../ReferenceFiles/cs_test1.mat", var, 1e-2,
            1e-4)):
        print(var + " is equal")
    else:
        print(var + " is not equal")
Exemplo n.º 20
0
## status: correct
## teardown_command: rm -rf import_export-py/ test-py.ssp
## linux: yes
## mingw: yes
## win: no
## mac: no

from OMSimulator import OMSimulator
oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./import_export-py/")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print "status:  [%s] %s" % (cmp, status)


status = oms.newModel("test")
Exemplo n.º 21
0
## status: correct
## teardown_command: rm -rf test_omsExport-py/
## linux: yes
## linux32: yes
## mingw: yes
## win: yes
## mac: no

from OMSimulator import OMSimulator
oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./test_omsExport-py/")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print "status:  [%s] %s" % (cmp, status)

Exemplo n.º 22
0
## status: correct
## teardown_command: rm -rf simulation-py/ test_init.dot test_sim.dot
## linux: yes
## mingw: no
## win: no
## mac: no

from OMSimulator import OMSimulator
session = OMSimulator()

session.oms3_setCommandLineOption("--suppressPath=true")
session.oms3_setTempDirectory("./simulation-py/")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print "status:  [%s] %s" % (cmp, status)


status = session.oms3_newModel("test")
Exemplo n.º 23
0
## status: correct
## teardown_command: rm -rf externalmodels-py
## linux: yes
## mingw: yes
## win: no
## mac: no

from OMSimulator import OMSimulator
oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print "status:  [%s] %s" % (cmp, status)


status = oms.setTempDirectory("./externalmodels-py/")
printStatus(status, 0)
## status: correct

from OMSimulator import OMSimulator
session = OMSimulator()

session.setLogFile("omsllog.txt")

model = session.newModel()
session.setTempDirectory(".")

# instantiate FMU
session.instantiateFMU(model, "../FMUs/cs_HelloWorld.fmu", "HelloWorld")

# set parameter
session.setReal(model, "HelloWorld.x_start", 1.0)
session.setReal(model, "HelloWorld.a", -1.0)
session.setStopTime(model, 1.0)
# initialize and simulate
session.initialize(model)
session.stepUntil(model, 1.0)
tcur = session.getCurrentTime(model)
print("Parametrization 1: HelloWorld.x at " + str(tcur) + ": " +
      str(session.getReal(model, "HelloWorld.x")))

# reset FMU
session.reset(model)
# set parameter
session.setReal(model, "HelloWorld.x_start", 0.5)
session.setReal(model, "HelloWorld.a", -2.0)
session.setStopTime(model, 1.0)
# initialize and simulate
Exemplo n.º 25
0
## status: correct
## teardown_command: rm PI_Controller.log  PI_Controller.mat PI_Controller*.dot

from OMSimulator import OMSimulator
session = OMSimulator()

session.setLogFile("PI_Controller.log")
session.setTempDirectory("./PI_Controller_tmp")

session.newFMIModel("PI_Controller")

# instantiate FMUs
session.addFMU("PI_Controller", "../FMUs/Modelica.Blocks.Math.Add.fmu", "addP")
session.addFMU("PI_Controller", "../FMUs/Modelica.Blocks.Math.Gain.fmu", "P")
session.addFMU("PI_Controller", "../FMUs/Modelica.Blocks.Math.Add3.fmu",
               "addI")
session.addFMU("PI_Controller",
               "../FMUs/Modelica.Blocks.Continuous.Integrator.fmu", "I")
session.addFMU("PI_Controller", "../FMUs/Modelica.Blocks.Math.Add.fmu",
               "addPI")
session.addFMU("PI_Controller", "../FMUs/Modelica.Blocks.Math.Gain.fmu",
               "gainPI")
session.addFMU("PI_Controller",
               "../FMUs/Modelica.Blocks.Nonlinear.Limiter.fmu", "limiter")
session.addFMU("PI_Controller", "../FMUs/Modelica.Blocks.Math.Add.fmu",
               "addSat")
session.addFMU("PI_Controller", "../FMUs/Modelica.Blocks.Math.Gain.fmu",
               "gainTrack")

# add connections
session.addConnection("PI_Controller", "addP:y", "P:u")
## status: correct

from OMSimulator import OMSimulator
session = OMSimulator()

session.setLogFile("omsllog.txt")

session.setTempDirectory(".")
model = session.newModel()

## instantiate FMUs
session.instantiateFMU(model, "../FMUs/me_source1.fmu", "sourceA")
session.instantiateFMU(model, "../FMUs/me_source1.fmu", "sourceB")
session.instantiateFMU(model, "../FMUs/me_adder1.fmu", "adder")

## add connections
session.addConnection(model, "sourceA.y", "adder.x1")
session.addConnection(model, "sourceB.y", "adder.x2")

## set parameter
session.setReal(model, "sourceA.A", 0.5)
session.setReal(model, "sourceA.omega", 2.0)

session.setStartTime(model, 0.0)
session.setStopTime(model, 10.0)
session.setTolerance(model, 1e-5)

session.exportXML(model, "ImportExport.xml")
session.unload(model)

model2 = session.loadModel("ImportExport.xml")
Exemplo n.º 27
0
## status: correct
## teardown_command: rm -rf tlmbuses-py/
## linux: yes
## mingw: yes
## win: no
## mac: no

from OMSimulator import OMSimulator
oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./tlmbuses-py/")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print "status:  [%s] %s" % (cmp, status)


oms.newModel("model")
Exemplo n.º 28
0
## status: correct
## teardown_command: rm -rf test_omsExport-py/
## linux: yes
## linux32: yes
## mingw: no
## win: no
## mac: no

from OMSimulator import OMSimulator

oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./test_omsExport-py/")


def printStatus(status, expected):
    cmp = ""
    if status == expected:
        cmp = "correct"
    else:
        cmp = "wrong"

    if 0 == status:
        status = "ok"
    elif 1 == status:
        status = "warning"
    elif 3 == status:
        status = "error"
    print("status:  [%s] %s" % (cmp, status), flush=True)
Exemplo n.º 29
0
## status: correct
## teardown_command: rm -rf snapshot_py/
## linux: yes
## mingw32: yes
## mingw64: yes
## win: yes
## mac: no

from OMSimulator import OMSimulator
oms = OMSimulator()

oms.setCommandLineOption("--suppressPath=true")
oms.setTempDirectory("./snapshot_py/")
oms.setWorkingDirectory("./snapshot_py/")

oms.newModel("snapshot")
oms.addSystem("snapshot.root", oms.system_wc)

oms.newResources("snapshot.root:snapshot.ssv")

oms.addConnector("snapshot.root.C1", oms.input, oms.signal_type_real)
oms.setReal("snapshot.root.C1", -10)

oms.addSubModel("snapshot.root.add",
                "../../resources/Modelica.Blocks.Math.Add.fmu")
oms.setReal("snapshot.root.add.u1", 10)
oms.setReal("snapshot.root.add.k1", 30)

snapshot, status = oms.exportSnapshot("snapshot")
##print(snapshot, flush=True)
oms.setReal("snapshot.root.add.u1", 3.5)
## status: correct
## teardown_command: rm DualMassOscillator_cs.log DualMassOscillator_cs.mat

from OMSimulator import OMSimulator
session = OMSimulator()

session.setLogFile("DualMassOscillator_cs.log")

session.newFMIModel("DualMassOscillator")
session.setTempDirectory("./DualMassOscillator_cs_tmp")

# instantiate FMUs
session.addFMU("DualMassOscillator", "../FMUs/DualMassOscillator.System1_cs.fmu", "System1")
session.addFMU("DualMassOscillator", "../FMUs/DualMassOscillator.System2_cs.fmu", "System2")

# add connections
session.addConnection("DualMassOscillator", "System1:F", "System2:F")
session.addConnection("DualMassOscillator", "System1:s", "System2:s")
session.addConnection("DualMassOscillator", "System1:v", "System2:v")
session.addConnection("DualMassOscillator", "System1:a", "System2:a")

session.setResultFile("DualMassOscillator", "DualMassOscillator_cs.mat")

session.setStopTime("DualMassOscillator", 0.1)
session.setCommunicationInterval("DualMassOscillator", 1e-5)

session.initialize("DualMassOscillator")
session.simulate("DualMassOscillator")

(_, tcur) = session.getCurrentTime("DualMassOscillator")
vars = ["DualMassOscillator.System1:mass1.s", "DualMassOscillator.System2:mass2.s"]