OMSimulatorPython

This is a shared library that provides a Python interface for the OMSimulatorLib library.

Examples

from OMSimulator import OMSimulator
oms.setTempDirectory("./temp/")
oms.newModel("model")
oms.addSystem("model.root", oms.system_sc)

# instantiate FMUs
oms.addSubModel("model.root.system1", "FMUs/System1.fmu")
oms.addSubModel("model.root.system2", "FMUs/System2.fmu")

# add connections
oms.addConnection("model.root.system1.y", "model.root.system2.u")
oms.addConnection("model.root.system2.y", "model.root.system1.u")

# simulation settings
oms.setResultFile("model", "results.mat")
oms.setStopTime("model", 0.1)
oms.setFixedStepSize("model.root", 1e-4)

oms.instantiate("model")
oms.setReal("model.root.system1.x_start", 2.5)

oms.initialize("model")
oms.simulate("model")
oms.terminate("model")
oms.delete("model")

Python Scripting Commands

addConnector

Adds a connector to a given component.

status = oms.addConnector(cref, causality, type)

getComponentType

Gets the type of the given component.

# not available

setFixedStepSize

Sets the fixed step size. Can be used for the communication step size of co-simulation systems and also for the integrator step size in model exchange systems.

status = oms.setFixedStepSize(cref, stepSize)

setSolver

Sets the solver method for the given system.

status = oms.setSolver(cref, solver)

simulate_asynchronous

Adds a TLM bus.

status = oms.addTLMBus(cref, domain, dimensions, interpolation)

getTLMBus

Gets the TLM bus objects of the given TLM bus cref.

# not available

setWorkingDirectory

Set a new working directory.

status = oms.setWorkingDirectory(newWorkingDir)

deleteConnection

Deletes the connection between connectors crefA and crefB.

status = oms.deleteConnection(crefA, crefB)

The two arguments crefA and crefB get swapped automatically if necessary.

getSystemType

Gets the type of the given system.

# not available

reset

Reset the composite model after a simulation run.

The FMUs go into the same state as after instantiation.

status = oms.reset(cref)

addSignalsToResults

Add all variables that match the given regex to the result file.

status = oms.addSignalsToResults(cref, regex)

The second argument, i.e. regex, is considered as a regular expression (C++11). “.*” and “(.)*” can be used to hit all variables.

getBus

Gets the bus object.

# not available

getConnector

Gets the connector object of the given connector cref.

# not available

listUnconnectedConnectors

Lists all unconnected connectors of a given system.

Memory is allocated for contents. The caller is responsible to free it using the C-API. The Lua and Python bindings take care of the memory and the caller doesn’t need to call free.

contents, status = oms.listUnconnectedConnectors(cref)

getTolerance

Gets the tolerance of a given system or component.

absoluteTolerance, relativeTolerance, status = oms.getTolerance(cref)

getBoolean

Get boolean value of given signal.

value, status = oms.getBoolean(cref)

getElement

Get element information of a given component reference.

# not available

simulate_asynchronous

Simulates a composite model in its own thread.

# not available

deleteConnectorFromTLMBus

Deletes a connector from a given TLM bus.

status = oms.deleteConnectorFromTLMBus(busCref, connectorCref)

setSignalFilter

status = oms.setSignalFilter(cref, regex)

exportDependencyGraphs

Export the dependency graphs of a given model to dot files.

status = oms.exportDependencyGraphs(cref, initialization, simulation)

getStartTime

Get the start time from the model.

startTime, status = oms.getStartTime(cref)

RunFile

Simulates a single FMU or SSP model.

# not available

addConnection

Adds a new connection between connectors A and B. The connectors need to be specified as fully qualified component references, e.g., “model.system.component.signal”.

status = oms.addConnection(crefA, crefB)

The two arguments crefA and crefB get swapped automatically if necessary.

copySystem

Copies a system.

status = oms.copySystem(source, target)

delete

Deletes a connector, component, system, or model object.

status = oms.delete(cref)

terminate

Terminates a given composite model.

status = oms.terminate(cref)

setConnectionGeometry

# not available

getModelState

Gets the model state of the given model cref.

# not available

getElements

Get list of all sub-components of a given component reference.

# not available

setLoggingLevel

Enables/Disables debug logging (logDebug and logTrace).

0 default, 1 default+debug, 2 default+debug+trace

oms.setLoggingLevel(logLevel)

getStopTime

Get the stop time from the model.

stopTime, status = oms.getStopTime(cref)

initialize

Initializes a composite model.

status = oms.initialize(cref)

setBoolean

Set boolean value of given signal.

status = oms.setBoolean(cref, value)

setCommandLineOption

Sets special flags.

status = oms.setCommandLineOption(cmd)

Available flags:

info:    Usage: OMSimulator [Options|Lua script]
info:    Options:
           <filename>                  FMU or SSP file
           --clearAllOptions           Reset all flags to default values
           --fetchAllVars=<arg>        
           --help [ -h ]               Displays the help text
           --ignoreInitialUnknowns=<arg>  Ignore the initial unknowns from the modelDesction.xml
           --intervals=<arg> [ -i ]    Specifies the number of communication points (arg > 1)
           --logFile=<arg> [ -l ]      Specifies the logfile (stdout is used if no log file is specified)
           --logLevel=<arg>            0 default, 1 default+debug, 2 default+debug+trace
           --mode=<arg> [ -m ]         Forces a certain FMI mode iff the FMU provides cs and me [arg: cs (default) or me]
           --progressBar=<arg>         
           --resultFile=<arg> [ -r ]   Specifies the name of the output result file
           --setInputDerivatives=<arg>  
           --solver                    Specifies the integration method (internal, euler, cvode)
           --startTime=<arg> [ -s ]    Specifies the start time
           --stopTime=<arg> [ -t ]     Specifies the stop time
           --suppressPath=<arg>        
           --tempDir=<arg>             Specifies the temp directory
           --timeout=<arg>             Specifies the maximum allowed time in seconds for running a simulation (0 disables)
           --tolerance=<arg>           Specifies the relative tolerance
           --version [ -v ]            Displays version information
           --wallTime=<arg>            Add wall time information for to the result file
           --workingDir=<arg>          Specifies the working directory

setInteger

Set integer value of given signal.

status = oms.setInteger(cref, value)

getReal

Get real value.

value, status = oms.getReal(cref)

addExternalModel

Adds an external model to a TLM system.

status = oms.addExternalModel(cref, path, startscript)

extractFMIKind

Extracts the FMI kind of a given FMU from the file system.

# not available

setElementGeometry

Set geometry information to a given component.

# not available

setTLMPositionAndOrientation

Sets initial position and orientation for a TLM 3D interface.

# not yet available

getVersion

Returns the library’s version string.

oms = OMSimulator()
oms.getVersion()

cancelSimulation_asynchronous

Cancels a running asynchronous simulation.

# not available

setMaxLogFileSize

Sets maximum log file size in MB. If the file exceeds this limit, the logging will continue on stdout.

oms.setMaxLogFileSize(size)

simulate

Simulates a composite model.

status = oms.simulate(cref)

getSubModelPath

Returns the path of a given component.

path, status = oms.getSubModelPath(cref)

addBus

Adds a bus to a given component.

status = oms.addBus(cref)

setTempDirectory

Set new temp directory.

status = oms.setTempDirectory(newTempDir)

compareSimulationResults

This function compares a given signal of two result files within absolute and relative tolerances.

oms.compareSimulationResults(filenameA, filenameB, var, relTol, absTol)

rename

Renames a model, system, or component.

status = oms.rename(cref, newCref)

stepUntil

Simulates a composite model until a given time value.

status = oms.stepUntil(cref, stopTime)

parseModelName

Parses the model name from a given SSD representation.

Memory is allocated for ident. The caller is responsible to free it using the C-API. The Lua and Python bindings take care of the memory and the caller doesn’t need to call free.

ident, status = oms.parseModelName(contents)

getTLMVariableTypes

Gets the type of an TLM variable.

# not available

setLoggingInterval

Set the logging interval of the simulation.

status = oms.setLoggingInterval(cref, loggingInterval)

setTLMBusGeometry

# not available

importString

Imports a composite model from a string.

cref, oms_status_enu_t oms.importString(contents)

addSystem

Adds a (sub-)system to a model or system.

status = oms.addSystem(cref, type)

getConnections

Get list of all connections from a given component.

# not available

instantiate

Instantiates a given composite model.

status = oms.instantiate(cref)

freeMemory

Free the memory allocated by some other API. Pass the object for which memory is allocated.

oms.freeMemory(obj)

addTLMConnection

Connects two TLM connectors.

status = oms.addTLMConnection(crefA, crefB, delay, alpha, linearimpedance, angularimpedance)

setStartTime

Set the start time of the simulation.

status = oms.setStartTime(cref, startTime)

simulate_realtime

Experimental feature for (soft) real-time simulation.

# not yet available

export

Exports a composite model to a SPP file.

status = oms.export(cref, filename)

setStopTime

Set the stop time of the simulation.

status = oms.setStopTime(cref, stopTime)

setLoggingCallback

Sets a callback function for the logging system.

# not available

getSolver

Gets the selected solver method of the given system.

solver, status = oms.getSolver(cref)

setResultFile

Set the result file of the simulation.

status = oms.setResultFile(cref, filename)
status = oms.setResultFile(cref, filename, bufferSize)

getInteger

Get integer value of given signal.

value, status = oms.getInteger(cref)

getVariableStepSize

Gets the step size parameters.

initialStepSize, minimumStepSize, maximumStepSize, status = oms.getVariableStepSize(cref)

deleteConnectorFromBus

Deletes a connector from a given bus.

status = oms.deleteConnectorFromBus(busCref, connectorCref)

setTolerance

Sets the tolerance for a given model, system, or component.

status = oms.setTolerance(const char* cref, double tolerance)
status = oms.setTolerance(const char* cref, double absoluteTolerance, double relativeTolerance)

setVariableStepSize

Sets the step size parameters for methods with stepsize control.

status = oms.getVariableStepSize(cref, initialStepSize, minimumStepSize, maximumStepSize)

setConnectorGeometry

Set geometry information to a given connector.

# not available

setTLMConnectionParameters

Simulates a composite model in its own thread.

# not available

addConnectorToTLMBus

Adds a connector to a TLM bus.

status = oms.addConnectorToTLMBus(busCref, connectorCref, type)

setReal

Set real value of given signal.

status = oms.setReal(cref, value)

getFixedStepSize

Gets the fixed step size. Can be used for the communication step size of co-simulation systems and also for the integrator step size in model exchange systems.

stepSize, status = oms.getFixedStepSize(cref)

addConnectorToBus

Adds a connector to a bus.

status = oms.addConnectorToBus(busCref, connectorCref)

setLogFile

Redirects logging output to file or std streams. The warning/error counters are reset.

filename=”” to redirect to std streams and proper filename to redirect to file.

status = oms.setLogFile(filename)

newModel

Creates a new and yet empty composite model.

status = oms.newModel(cref)

getFMUInfo

Returns FMU specific information.

# not available

importFile

Imports a composite model from a SSP file.

cref, status = oms.importFile(filename)

setActivationRatio

Experimental feature for setting the activation ratio of FMUs for experimenting with multi-rate master algorithms.

# not yet available

setBusGeometry

# not available

list

Lists the SSD representation of a given model, system, or component.

Memory is allocated for contents. The caller is responsible to free it using the C-API. The Lua and Python bindings take care of the memory and the caller doesn’t need to call free.

contents, status = oms.list(cref)

setTLMSocketData

Sets data for TLM socket communication.

# not yet available

removeSignalsFromResults

Removes all variables that match the given regex to the result file.

status = oms.removeSignalsFromResults(cref, regex)

The second argument, i.e. regex, is considered as a regular expression (C++11). “.*” and “(.)*” can be used to hit all variables.

addSubModel

Adds a component to a system.

status = oms.addSubModel(cref, fmuPath)