## 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)
## 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)
## 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")
## 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/")
## 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")
## 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)
## 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)
## 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)
## 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/")
## 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
## 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([
## 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):
## 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;
## 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])
## 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)
## 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)
## 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)
## 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")
## 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")
## 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)
## 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")
## 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
## 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")
## 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")
## 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)
## 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"]