Package org.ptolemy.fmi.driver
Class FMUDriver
- java.lang.Object
-
- org.ptolemy.fmi.driver.FMUDriver
-
- Direct Known Subclasses:
FMUCoSimulation,FMUModelExchange
public abstract class FMUDriver extends java.lang.ObjectBase class to invoke a Functional Mock-up Unit (.fmu) file as either co-simulation or model exchange.Derived classes should implement the simulate(...) method and create a static main(String args) method that invokes _processArgs(args) and them simulate(...).
- Since:
- Ptolemy II 10.0
- Version:
- $Id$
- Author:
- Christopher Brooks
- Pt.AcceptedRating:
- Red (cxh)
- Pt.ProposedRating:
- Red (cxh)
-
-
Constructor Summary
Constructors Constructor Description FMUDriver()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected void_processArgs(java.lang.String[] args)Process command line arguments for co-simulation or model exchange of Functional Mock-up Unit (.fmu) files.protected void_setEnableLogging(boolean enableLogging)Set the _enableLogging field.com.sun.jna.FunctiongetFunction(java.lang.String name)Deprecated.Call FMIModelDescription.getFmiFunction() instead.voidinvoke(com.sun.jna.Function function, java.lang.Object[] arguments, java.lang.String message)Invoke a function that returns an integer representing the FMIStatus return value.voidinvoke(java.lang.String name, java.lang.Object[] arguments, java.lang.String message)Invoke a function that returns an integer representing the FMIStatus return value.voidinvoke(FMIModelDescription fmiModelDescription, java.lang.String name, java.lang.Object[] arguments, java.lang.String message)Invoke a function that returns an integer representing the FMIStatus return value.abstract voidsimulate(java.lang.String fmuFileName, double endTime, double stepSize, boolean enableLogging, char csvSeparator, java.lang.String outputFileName)Perform co-simulation or model exchange using the named Functional Mock-up Unit (FMU) file.
-
-
-
Method Detail
-
getFunction
@Deprecated public com.sun.jna.Function getFunction(java.lang.String name)
Deprecated.Call FMIModelDescription.getFmiFunction() instead.Return a function by name.- Parameters:
name- The name of the function. The value of the modelIdentifier is prepended to the value of this parameter to yield the function name.- Returns:
- the function.
-
invoke
public void invoke(FMIModelDescription fmiModelDescription, java.lang.String name, java.lang.Object[] arguments, java.lang.String message) throws java.lang.UnsatisfiedLinkError, java.io.IOException
Invoke a function that returns an integer representing the FMIStatus return value.- Parameters:
fmiModelDescription- The FMIModelDescription used to look up the function by name.name- The name of the function.arguments- The arguments to be passed to the function.message- The error message to be used if there is a problem. The message should end with ": " because the return value of the function will be printed after the error message.- Throws:
java.lang.UnsatisfiedLinkError- If the function is not found using either format.java.io.IOException- If the native library cannot be found.
-
invoke
public void invoke(java.lang.String name, java.lang.Object[] arguments, java.lang.String message)Invoke a function that returns an integer representing the FMIStatus return value.- Parameters:
name- The name of the function.arguments- The arguments to be passed to the function.message- The error message to be used if there is a problem. The message should end with ": " because the return value of the function will be printed after the error message.
-
invoke
public void invoke(com.sun.jna.Function function, java.lang.Object[] arguments, java.lang.String message)Invoke a function that returns an integer representing the FMIStatus return value.- Parameters:
function- The function to be invoked.arguments- The arguments to be passed to the function.message- The error message to be used if there is a problem. The message should end with ": " because the return value of the function will be printed after the error message.
-
simulate
public abstract void simulate(java.lang.String fmuFileName, double endTime, double stepSize, boolean enableLogging, char csvSeparator, java.lang.String outputFileName) throws java.lang.ExceptionPerform co-simulation or model exchange using the named Functional Mock-up Unit (FMU) file.Derived classes should implement this method.
- Parameters:
fmuFileName- The pathname of the co-simulation .fmu fileendTime- The ending time in seconds.stepSize- The step size in seconds.enableLogging- True if logging is enabled.csvSeparator- The character used for separating fields. Note that sometimes the decimal point in floats is converted to ','.outputFileName- The output file.- Throws:
java.lang.Exception- If there is a problem parsing the .fmu file or invoking the methods in the shared library.
-
_processArgs
protected void _processArgs(java.lang.String[] args) throws java.lang.ExceptionProcess command line arguments for co-simulation or model exchange of Functional Mock-up Unit (.fmu) files.The command line arguments have the following meaning:
- file.fmu
- The co-simulation or model exchange Functional Mock-up Unit (FMU) file. In FMI-1.0, co-simulation fmu files contain a modelDescription.xml file that has an <Implementation> element. Model exchange fmu files do not have this element.
- endTime
- The endTime in seconds, defaults to 1.0.
- stepTime
- The time between steps in seconds, defaults to 0.1.
- enableLogging
- If "true", then enable logging. The default is false.
- outputFile
- The name of the output file. The default is results.csv
The format of the arguments is based on the fmusim command from the fmusdk by QTronic Gmbh.
- Parameters:
args- The arguments: file.fmu [endTime] [stepTime] [loggingOn] [csvSeparator] [outputFile]- Throws:
java.lang.Exception- If there is a problem parsing the .fmu file or invoking the methods in the shared library.
-
_setEnableLogging
protected void _setEnableLogging(boolean enableLogging)
Set the _enableLogging field.- Parameters:
enableLogging- the value of the enable logging field.
-
-