Optimica¶
Class that translates and simulates a Modelica model with OPTIMICA.
For a similar class that uses Dymola, see buildingspy.simulate.Dymola()
.
- class buildingspy.simulate.Optimica.Simulator(modelName, outputDirectory='.', packagePath=None)¶
Bases:
buildingspy.simulate.base_simulator._BaseSimulator
Class to simulate a Modelica model with OPTIMICA.
- Parameters
modelName – The name of the Modelica model.
outputDirectory – An optional output directory.
packagePath – An optional path where the Modelica
package.mo
file is located.
If the parameter
outputDirectory
is specified, then the output files and log files will be moved to this directory when the simulation is completed. Outputs from the python functions will be written tooutputDirectory/BuildingsPy.log
.If the parameter
packagePath
is specified, then this directory and all its subdirectories will be copied to a temporary directory when running the simulations.- addModelModifier(modelModifier)¶
Adds a model modifier.
- Parameters
modelModifier – A model modifier.
- Usage: Type
>>> from buildingspy.simulate.Optimica import Simulator >>> s=Simulator("myPackage.myModel", packagePath="buildingspy/tests/MyModelicaLibrary") >>> s.addModelModifier('redeclare package MediumA = Buildings.Media.IdealGases.SimpleAir')
This method adds a model modifier. The modifier is added to the list of model parameters. For example, the above statement would yield the command
simulateModel(myPackage.myModel(redeclare package MediumA = Buildings.Media.IdealGases.SimpleAir), startTime=...
- addParameters(dictionary)¶
Adds parameter declarations to the simulator.
- Parameters
dictionary – A dictionary with the parameter values
- Usage: Type
>>> from buildingspy.simulate.Optimica import Simulator >>> s=Simulator("myPackage.myModel", packagePath="buildingspy/tests/MyModelicaLibrary") >>> s.addParameters({'PID.k': 1.0, 'valve.m_flow_nominal' : 0.1}) >>> s.addParameters({'PID.t': 10.0})
This will add the three parameters
PID.k
,valve.m_flow_nominal
andPID.t
to the list of model parameters.- For parameters that are arrays, use a syntax such as
>>> from buildingspy.simulate.Optimica import Simulator >>> s = Simulator("MyModelicaLibrary.Examples.Constants", packagePath="buildingspy/tests/MyModelicaLibrary") >>> s.addParameters({'const1.k' : [2, 3]}) >>> s.addParameters({'const2.k' : [[1.1, 1.2], [2.1, 2.2], [3.1, 3.2]]})
Do not use curly brackets for the values of parameters, such as
s.addParameters({'const1.k' : {2, 3}})
as Python converts this entry to{'const1.k': set([2, 3])}
.
- deleteOutputFiles()¶
Deletes the output files of the simulator.
- generateHtmlDiagnostics(generate=True)¶
If set to true, html diagnostics will be generated.
The html diagnostics will be generated in a directory whose name is equal to the model name, with
.
replaced by_
, and the string_html_diagnostics
appended.Note
For large models, this can generate huge files and increase translation time.
- getOutputDirectory()¶
Returns the name of the output directory.
- Returns
The name of the output directory.
- getPackagePath()¶
Returns the path of the directory containing the Modelica package.
- Returns
The path of the Modelica package directory.
- getParameters()¶
Returns a list of parameters as (key, value)-tuples.
- Returns
A list of parameters as (key, value)-tuples.
- Usage: Type
>>> from buildingspy.simulate.Optimica import Simulator >>> s=Simulator("myPackage.myModel", packagePath="buildingspy/tests/MyModelicaLibrary") >>> s.addParameters({'PID.k': 1.0, 'valve.m_flow_nominal' : 0.1}) >>> s.getParameters() [('PID.k', 1.0), ('valve.m_flow_nominal', 0.1)]
- setNumberOfIntervals(n=500)¶
Sets the number of output intervals.
- Parameters
n – The number of output intervals.
The default is unspecified, which defaults to 500.
- setOutputDirectory(outputDirectory)¶
Sets the name of the output directory.
- Parameters
outputDirectory – The name of the output directory.
- Returns
The name of the output directory.
- setPackagePath(packagePath)¶
Set the path specified by
packagePath
.- Parameters
packagePath – The path where the Modelica
package.mo
file is located.
It checks whether the file
package.mo
exists in the directorypackagePath
, and then sets the package path. Otherwise, aValueError
is raised.
- setResultFile(resultFile)¶
Sets the name of the result file (without extension).
- Parameters
resultFile – The name of the result file (without extension).
- setResultFilter(filter)¶
Specifies a list of variables that should be stored in the result file.
- Parameters
filter – A list of variables that should be stored in the result file.
Usage: To list only the variables of the instance myStep.source, type
>>> from buildingspy.simulate.Optimica import Simulator >>> s=Simulator("myPackage.myModel", packagePath="buildingspy/tests/MyModelicaLibrary") >>> s.setResultFilter(["myStep.source.*"])
To list all variables whose name ends in
y
, type>>> from buildingspy.simulate.Optimica import Simulator >>> s=Simulator("myPackage.myModel", packagePath="buildingspy/tests/MyModelicaLibrary") >>> s.setResultFilter(["*y"])
- setSolver(solver)¶
Sets the solver.
- Parameters
solver – The name of the solver.
The default solver is CVode.
- setStartTime(t0)¶
Sets the start time.
- Parameters
t0 – The start time of the simulation in seconds.
The default start time is 0.
- setStopTime(t1)¶
Sets the start time.
- Parameters
t1 – The stop time of the simulation in seconds.
The default stop time is 1.
- setTimeOut(sec)¶
Sets the time out after which the simulation will be killed.
- Parameters
sec – The time out after which the simulation will be killed.
The default value is -1, which means that the simulation will never be killed.
- setTolerance(eps)¶
Sets the solver tolerance.
- Parameters
eps – The solver tolerance.
The default solver tolerance is 1E-6.
- simulate()¶
Translates and simulates the model.
- Usage: Type
>>> from buildingspy.simulate.Optimica import Simulator >>> s=Simulator("MyModelicaLibrary.Examples.Constants", packagePath="buildingspy/tests/MyModelicaLibrary") >>> s.simulate()
- This method
Deletes output files
Writes a script to simulate the model.
Starts the Modelica simulation environment.
Translates and simulates the model.
Closes the Modelica simulation environment.
This method requires that the directory that contains the executable
jm_ipython.sh
is on the systemPATH
variable. If it is not found, the function raises an exception.
- translate()¶
Translates the model to generate a Functional Mockup Unit.
- Usage: Type
>>> from buildingspy.simulate.Optimica import Simulator >>> s=Simulator("MyModelicaLibrary.Examples.Constants", packagePath="buildingspy/tests/MyModelicaLibrary") >>> s.translate()
- This method
Deletes output files
Writes a script to simulate the model.
Starts the Modelica simulation environment.
Translates the model.
Closes the Modelica simulation environment.
This method requires that the directory that contains the executable
jm_ipython.sh
is on the systemPATH
variable. If it is not found, the function raises an exception.