Scripting API — OpenModelica User's Guide v1.28.0-dev-449-g67217b6ea02 documentation

# Scripting API

The following are short summaries of OpenModelica scripting commands. These commands are useful for loading and saving classes, reading and storing data, plotting of results, and various other tasks.

The arguments passed to a scripting function should follow syntactic and typing rules for Modelica and for the scripting function in question. In the following tables we briefly indicate the types or character of the formal parameters to the functions by the following notation:

- String typed argument, e.g. "hello", "myfile.mo".

- TypeName - class, package or function name, e.g. MyClass,

    Modelica.Math.

- VariableName - variable name, e.g. `v1`, `v2`, `vars1[2].x`, etc.

- Integer or Real typed argument, e.g. 35, 3.14, xintvariable.

- options - optional parameters with named formal parameter passing.

## OpenModelica Scripting Commands

The following are brief descriptions of the scripting commands available in the OpenModelica environment. See also https://build.openmodelica.org/Documentation/OpenModelica.Scripting.html. All commands are shown in alphabetical order:

### interactiveDumpAbsynToJL

Dumps the AST into a Julia representation.

    function interactiveDumpAbsynToJL
      output String res;
    end interactiveDumpAbsynToJL;

### relocateFunctions

Update symbols in the running program to ones defined in the given shared object.

    function relocateFunctions
      input String fileName;
      input String names[:, 2];
      output Boolean success;
    end relocateFunctions;

### toJulia

Translates Absyn to Julia.

    function toJulia
      output String res;
    end toJulia;

### GC_expand_hp

Forces the GC to expand the heap to accomodate more data.

    function GC_expand_hp
      input Integer size;
      output Boolean success;
    end GC_expand_hp;

### GC_gcollect_and_unmap

Forces the GC to collect and unmap memory.

### GC_get_prof_stats

Returns a record with the GC statistics.

    function GC_get_prof_stats
      output GC_PROFSTATS gcStats;
    end GC_get_prof_stats;

### GC_set_max_heap_size

Forces the GC to limit the maximum heap size.

    function GC_set_max_heap_size
      input Integer size;
      output Boolean success;
    end GC_set_max_heap_size;

### addClassAnnotation

Adds an annotation to a class.

    function addClassAnnotation
      input TypeName class_;
      input ExpressionOrModification annotate;
      output Boolean bool;
    end addClassAnnotation;

### addComponent

Adds a component to the given class.

    function addComponent
      input TypeName componentName;
      input TypeName typeName;
      input TypeName classPath;
      input Expression binding = $Code(());
      input ExpressionOrModification modification = $Code();
      input Expression comment = $Code(());
      input Expression annotate = $Code(());
      output Boolean success;
    end addComponent;

### addConnection

Adds a connection to the given class.

    function addConnection
      input VariableName connector1;
      input VariableName connector2;
      input TypeName className;
      input Expression comment = $Code(());
      input Expression annotate = $Code(());
      output Boolean success;
    end addConnection;

### addEquation

Adds an equation to a class.

    function addEquation
      input TypeName className "The name of the class to add the equation to";
      input String eq "The equation given as a string";
      input Boolean isInitial = false "Whether the equation should be added as an initial or normal equation";
      output Boolean success "true if the equation could be added, otherwise false";
    end addEquation;

### addInitialState

Adds an initial state to a class.

    function addInitialState
      input TypeName cl;
      input String state;
      input ExpressionOrModification annotate;
      output Boolean bool;
    end addInitialState;

### addTransition

Adds a transition to a class.

    function addTransition
      input TypeName cl;
      input String from;
      input String to;
      input String condition;
      input Boolean immediate = true;
      input Boolean reset = true;
      input Boolean synchronize = false;
      input Integer priority = 1;
      input ExpressionOrModification annotate;
      output Boolean bool;
    end addTransition;

### alarm

Schedules an alarm signal for the process.

    impure function alarm
      input Integer seconds;
      output Integer previousSeconds;
    end alarm;

### appendEnvironmentVar

Appends a variable to the environment variables list.

    function appendEnvironmentVar
      input String var;
      input String value;
      output String result "returns \"error\" if the variable could not be appended";
    end appendEnvironmentVar;

### basename

Returns the base name (file part) of a file path.

    function basename
      input String path;
      output String basename;
    end basename;

### buildEncryptedPackage

Builds an encrypted package for a class.

    function buildEncryptedPackage
      input TypeName className "the class that should encrypted";
      input Boolean encrypt = true;
      output Boolean success;
    end buildEncryptedPackage;

### buildLabel

Calls buildModel with the --generateLabeledSimCode flag enabled.

    function buildLabel
      input TypeName className "the class that should be built";
      input Real startTime = 0.0 "the start time of the simulation. <default> = 0.0";
      input Real stopTime = 1.0 "the stop time of the simulation. <default> = 1.0";
      input Integer numberOfIntervals = 500 "number of intervals in the result file. <default> = 500";
      input Real tolerance = 1e-6 "tolerance used by the integration method. <default> = 1e-6";
      input String method = "dassl" "integration method used for simulation. <default> = dassl";
      input String fileNamePrefix = "" "fileNamePrefix. <default> = \"\"";
      input String options = "" "options. <default> = \"\"";
      input String outputFormat = "mat" "Format for the result file. <default> = \"mat\"";
      input String variableFilter = ".*" "Only variables fully matching the regexp are stored in the result file. <default> = \".*\"";
      input String cflags = "" "cflags. <default> = \"\"";
      input String simflags = "" "simflags. <default> = \"\"";
      output String[2] buildModelResults;
    end buildLabel;

### buildModel

Translates a Modelica model into C code and builds a simulation executable.

    function buildModel
      input TypeName className "the class that should be built";
      input Real startTime = "<default>" "the start time of the simulation. <default> = 0.0";
      input Real stopTime = 1.0 "the stop time of the simulation. <default> = 1.0";
      input Integer numberOfIntervals = 500 "number of intervals in the result file. <default> = 500";
      input Real tolerance = 1e-6 "tolerance used by the integration method. <default> = 1e-6";
      input String method = "<default>" "integration method used for simulation. <default> = dassl";
      input String fileNamePrefix = "<default>" "fileNamePrefix. <default> = \"\"";
      input String options = "<default>" "options. <default> = \"\"";
      input String outputFormat = "mat" "Format for the result file. <default> = \"mat\"";
      input String variableFilter = ".*" "Only variables fully matching the regexp are stored in the result file. <default> = \".*\"";
      input String cflags = "<default>" "cflags. <default> = \"\"";
      input String simflags = "<default>" "simflags. <default> = \"\"";
      output String[2] buildModelResults;
    end buildModel;

### buildModelFMU

Translates a Modelica model into a Functional Mockup Unit.

    function buildModelFMU
      input TypeName className "the class that should translated";
      input String version = "2.0" "FMU version, 1.0 or 2.0.";
      input String fmuType = "me" "FMU type, me (model exchange), cs (co-simulation), me_cs (both model exchange and co-simulation)";
      input String fileNamePrefix = "<default>" "fileNamePrefix. <default> = \"className\"";
      input String platforms[:] = {"static"} "The list of platforms to generate code for.
                                                \"dynamic\"=current platform, dynamically link the runtime.
                                                \"static\"=current platform, statically link everything.
                                                \"<cpu>-<vendor>-<os>\", host tripple, e.g. \"x86_64-linux-gnu\" or \"x86_64-w64-mingw32\".
                                                \"<cpu>-<vendor>-<os> docker run ghcr.io/openmodelica/crossbuild:v1.27.0\" host triple with OpenModelica supplied Docker image, e.g. \"x86_64-linux-gnu docker run ghcr.io/openmodelica/crossbuild:v1.27.0\".
                                                \"<cpu>-<vendor>-<os> docker run <image>\" host triple with Docker image, e.g. \"x86_64-linux-gnu docker run --pull=never multiarch/crossbuild\"";
      input Boolean includeResources = false "Depreacted and no effect";
      input String method = "<default>" "integration method embedded in a Co-Simulation FMU. <default> = dassl";
      output String generatedFileName "Returns the full path of the generated FMU.";
    end buildModelFMU;

### cd

Changes the working directory.

    function cd
      input String newWorkingDirectory = "";
      output String workingDirectory;
    end cd;

### checkAllModelsRecursive

Checks all models recursively and returns number of variables and equations.

    function checkAllModelsRecursive
      input TypeName className;
      input Boolean checkProtected = false "Checks also protected classes if true";
      output String result;
    end checkAllModelsRecursive;

### checkCodeGraph

Checks if the given taskgraph has the same structure as the graph described in the codefile.

    function checkCodeGraph
      input String graphfile;
      input String codefile;
      output String[:] result;
    end checkCodeGraph;

### checkInterfaceOfPackages

Checks the interfaces of MetaModelica packages.

    function checkInterfaceOfPackages
      input TypeName cl;
      input String dependencyMatrix[:, :];
      output Boolean success;
    end checkInterfaceOfPackages;

### checkModel

Checks a model and returns the number of variables and equations.

    function checkModel
      input TypeName className;
      output String result;
    end checkModel;

### checkSettings

Display some diagnostics.

    function checkSettings
      output CheckSettingsResult result;
    end checkSettings;

### checkTaskGraph

Checks if the given taskgraph has the same structure as the reference taskgraph and if all attributes are set correctly.

    function checkTaskGraph
      input String filename;
      input String reffilename;
      output String[:] result;
    end checkTaskGraph;

### classAnnotationExists

Checks if an annotation exists in a class.

    function classAnnotationExists
      input TypeName className;
      input TypeName annotationName;
      output Boolean exists;
    end classAnnotationExists;

### clear

Clears loaded classes and user defined variables.

    function clear
      output Boolean success;
    end clear;

### clearCommandLineOptions

Resets all command line options to their default values.

    function clearCommandLineOptions
      output Boolean success;
    end clearCommandLineOptions;

### clearDebugFlags

Resets all debug flags to their default values.

    function clearDebugFlags
      output Boolean success;
    end clearDebugFlags;

### clearMessages

Clears the error buffer.

    function clearMessages
      output Boolean success;
    end clearMessages;

### clearProgram

Clears loaded classes.

    function clearProgram
      output Boolean success;
    end clearProgram;

### clearVariables

Clears all user defined variables.

    function clearVariables
      output Boolean success;
    end clearVariables;

### closeSimulationResultFile

Closes the current simulation results file.

    function closeSimulationResultFile
      output Boolean success;
    end closeSimulationResultFile;

### codeToString

Converts a $Code expression to a string.

    function codeToString
      input $Code className;
      output String string;
    end codeToString;

### compareFiles

Checks if two files are equal or not.

    impure function compareFiles
      input String file1;
      input String file2;
      output Boolean isEqual;
    end compareFiles;

### compareFilesAndMove

Overwrites a file with another if they differ.

    impure function compareFilesAndMove
      input String newFile;
      input String oldFile;
      output Boolean success;
    end compareFilesAndMove;

### convertPackageToLibrary

Runs the conversion script for a library on a selected package.

    function convertPackageToLibrary
      input TypeName packageToConvert;
      input TypeName library;
      input String libraryVersion;
      output Boolean success;
    end convertPackageToLibrary;

### convertUnits

Gets conversion factors for two units.

    function convertUnits
      input String s1;
      input String s2;
      output Boolean unitsCompatible;
      output Real scaleFactor;
      output Real offset;
    end convertUnits;

### copy

Copies a file.

    function copy
      input String source;
      input String destination;
      output Boolean success;
    end copy;

### copyClass

Copies a class within the same level.

    function copyClass
      input TypeName className "the class that should be copied";
      input String newClassName "the name for new class";
      input TypeName withIn = $Code(__OpenModelica_TopLevel) "the within path for new class";
      output Boolean result;
    end copyClass;

### countMessages

Returns the number of buffered messages.

    function countMessages
      output Integer numMessages;
      output Integer numErrors;
      output Integer numWarnings;
    end countMessages;

### createModel

Creates a new empty model.

    function createModel
      input TypeName className;
      output Boolean success;
    end createModel;

### deleteClass

Unloads a class.

    function deleteClass
      input TypeName className;
      output Boolean success;
    end deleteClass;

### deleteComponent

Deletes a component from the given class.

    function deleteComponent
      input TypeName componentName;
      input TypeName classPath;
      output Boolean success;
    end deleteComponent;

### deleteConnection

Deletes a connection in the given class.

    function deleteConnection
      input VariableName connector1;
      input VariableName connector2;
      input TypeName className;
      output Boolean success;
    end deleteConnection;

### deleteEquation

Deletes an equation in a class.

### deleteFile

Deletes a file with the given name.

    function deleteFile
      input String fileName;
      output Boolean success;
    end deleteFile;

### deleteInitialState

Deletes an initial state in a class.

    function deleteInitialState
      input TypeName cl;
      input String state;
      output Boolean bool;
    end deleteInitialState;

### deleteTransition

Deletes a transition from a class.

    function deleteTransition
      input TypeName cl;
      input String from;
      input String to;
      input String condition;
      input Boolean immediate;
      input Boolean reset;
      input Boolean synchronize;
      input Integer priority;
      output Boolean bool;
    end deleteTransition;

### deltaSimulationResults

Calculates the sum of absolute errors.

    function deltaSimulationResults
      input String filename;
      input String reffilename;
      input String method "method to compute then error. choose 1norm, 2norm, maxerr";
      input String[:] vars = fill("", 0);
      output Real result;
    end deltaSimulationResults;

### diffModelicaFileListings

Creates diffs of two strings corresponding to Modelica files

    function diffModelicaFileListings
      input String before;
      input String after;
      input DiffFormat diffFormat = DiffFormat.color;
      input Boolean failOnSemanticsChange = false "Defaults to returning after instead of hard fail";
      output String result;
    end diffModelicaFileListings;

### diffSimulationResults

Compares simulation results.

    function diffSimulationResults
      input String actualFile;
      input String expectedFile;
      input String diffPrefix;
      input Real relTol = 1e-3 "y tolerance";
      input Real relTolDiffMinMax = 1e-4 "y tolerance based on the difference between the maximum and minimum of the signal";
      input Real rangeDelta = 0.002 "x tolerance";
      input String[:] vars = fill("", 0);
      input Boolean keepEqualResults = false;
      output Boolean success;
      output String[:] failVars;
    end diffSimulationResults;

### diffSimulationResultsHtml

Compares simulation results and generates an HTML report.

    function diffSimulationResultsHtml
      input String var;
      input String actualFile;
      input String expectedFile;
      input Real relTol = 1e-3 "y tolerance";
      input Real relTolDiffMinMax = 1e-4 "y tolerance based on the difference between the maximum and minimum of the signal";
      input Real rangeDelta = 0.002 "x tolerance";
      output String html;
    end diffSimulationResultsHtml;

### directoryExists

Returns whether the given directory exists or not.

    function directoryExists
      input String dirName;
      output Boolean exists;
    end directoryExists;

### dirname

Returns the directory name of a file path.

    function dirname
      input String path;
      output String dirname;
    end dirname;

### disableNewInstantiation

Disables the new (default) instantiation.

    function disableNewInstantiation
      output Boolean success;
    end disableNewInstantiation;

### dumpXMLDAE

Outputs the DAE system corresponding to a specific model.

    function dumpXMLDAE
      input TypeName className;
      input String translationLevel = "flat" "flat, optimiser, backEnd, or stateSpace";
      input Boolean addOriginalAdjacencyMatrix = false;
      input Boolean addSolvingInfo = false;
      input Boolean addMathMLCode = false;
      input Boolean dumpResiduals = false;
      input String fileNamePrefix = "<default>" "this is the className in string form by default";
      input String rewriteRulesFile = "" "the file from where the rewiteRules are read, default is empty which means no rewrite rules";
      output Boolean success "if the function succeeded true/false";
      output String xmlfileName "the Xml file";
    end dumpXMLDAE;

### echo

Turns interactive output on or off.

    function echo
      input Boolean setEcho;
      output Boolean newEcho;
    end echo;

### enableNewInstantiation

Enables the new (default) instantiation.

    function enableNewInstantiation
      output Boolean success;
    end enableNewInstantiation;

### escapeXML

Replaces characters in a string with XML escape characters.

    function escapeXML
      input String inStr;
      output String outStr;
    end escapeXML;

### existClass

Returns whether the given class exists or not.

    function existClass
      input TypeName cl;
      output Boolean exists;
    end existClass;

### existModel

Returns whether the given model exists or not.

### existPackage

Returns whether the given package exists or not.

### exit

Forces omc to quit with the given exit status.

    function exit
      input Integer status;
    end exit;

### exportToFigaro

Exports a model to a Figaro database.

    function exportToFigaro
      input TypeName path;
      input String directory = cd();
      input String database;
      input String mode;
      input String options;
      input String processor;
      output Boolean success;
    end exportToFigaro;

### extendsFrom

Returns true if the given class extends from the given base class.

    function extendsFrom
      input TypeName className;
      input TypeName baseClassName;
      output Boolean res;
    end extendsFrom;

### filterSimulationResults

Creates a simulation results file with selected variables.

    function filterSimulationResults
      input String inFile;
      input String outFile;
      input String[:] vars;
      input Integer numberOfIntervals = 0 "0=Do not resample";
      input Boolean removeDescription = false;
      input Boolean hintReadAllVars = true;
      output Boolean success;
    end filterSimulationResults;

### generateCode

Generates code for a function.

    function generateCode
      input TypeName className;
      output Boolean success;
    end generateCode;

### generateEntryPoint

Generates an entry point for a MetaModelica program.

    function generateEntryPoint
      input String fileName;
      input TypeName entryPoint;
      input String url = "https://trac.openmodelica.org/OpenModelica/newticket";
    end generateEntryPoint;

### generateHeader

Generates header file for external MetaModelica functions.

    function generateHeader
      input String fileName;
      output Boolean success;
    end generateHeader;

### generateJuliaHeader

Generates a Julia header file for external MetaModelica functions.

    function generateJuliaHeader
      input String fileName;
      output Boolean success;
    end generateJuliaHeader;

### generateScriptingAPI

Generates the scripting API.

    function generateScriptingAPI
      input TypeName cl;
      input String name;
      output Boolean success;
      output String moFile;
      output String qtFile;
      output String qtHeader;
    end generateScriptingAPI;

### generateSeparateCode

Generates code for a MetaModelica package.

    function generateSeparateCode
      input TypeName className;
      input Boolean cleanCache = false "If true, the cache is reset between each generated package. This conserves memory at the cost of speed.";
      output Boolean success;
    end generateSeparateCode;

### generateSeparateCodeDependencies

Generates dependencies for a MetaModelica package.

    function generateSeparateCodeDependencies
      input String stampSuffix = ".c" "Suffix to add to dependencies (often .c.stamp)";
      output String[:] dependencies;
    end generateSeparateCodeDependencies;

### generateSeparateCodeDependenciesMakefile

Generates dependencies Makefile for a MetaModelica package.

    function generateSeparateCodeDependenciesMakefile
      input String filename "The file to write the makefile to";
      input String directory = "" "The relative path of the generated files";
      input String suffix = ".c" "Often .stamp since we do not update all the files";
      output Boolean success;
    end generateSeparateCodeDependenciesMakefile;

### generateVerificationScenarios

Generate scenarios for a verification model.

    function generateVerificationScenarios
      input TypeName path;
      output Boolean success;
    end generateVerificationScenarios;

### getAlgorithmCount

Counts the number of algorithm sections in a class.

    function getAlgorithmCount
      input TypeName class_;
      output Integer count;
    end getAlgorithmCount;

### getAlgorithmItemsCount

Counts the number of algorithm statements in a class.

    function getAlgorithmItemsCount
      input TypeName class_;
      output Integer count;
    end getAlgorithmItemsCount;

### getAllSubtypeOf

Returns the list of all classes that extend from className given a parentClass where the lookup for className should start

    function getAllSubtypeOf
      input TypeName className;
      input TypeName parentClass = $Code(AllLoadedClasses);
      input Boolean qualified = false "Not implemented";
      input Boolean includePartial = false;
      input Boolean sort = false;
      output TypeName classNames[:];
    end getAllSubtypeOf;

### getAnnotationCount

Counts the number of annotation sections in a class.

    function getAnnotationCount
      input TypeName class_;
      output Integer count;
    end getAnnotationCount;

### getAnnotationModifierValue

Returns the value for a modifier in the given annotation.

    function getAnnotationModifierValue
      input TypeName className;
      input String annotationName;
      input String modifierName;
      output String modifierValue;
    end getAnnotationModifierValue;

### getAnnotationNamedModifiers

Returns the names of the modifiers in the given annotation.

    function getAnnotationNamedModifiers
      input TypeName className;
      input String annotationName;
      output String[:] modifierNames;
    end getAnnotationNamedModifiers;

### getAnnotationVersion

Returns the current annotation version.

    function getAnnotationVersion
      output String annotationVersion;
    end getAnnotationVersion;

### getAstAsCorbaString

Returns the AST in CORBA format.

    function getAstAsCorbaString
      input String fileName = "<interactive>";
      output String result "returns the string if fileName is interactive; else it returns ok or error depending on if writing the file succeeded";
    end getAstAsCorbaString;

### getAvailableIndexReductionMethods

Returns the currently available index reduction methods.

    function getAvailableIndexReductionMethods
      output String[:] allChoices;
      output String[:] allComments;
    end getAvailableIndexReductionMethods;

### getAvailableLibraries

Returns a list of all available libraries.

    function getAvailableLibraries
      output String[:] libraries;
    end getAvailableLibraries;

### getAvailableLibraryVersions

Returns the installed versions of a library.

    function getAvailableLibraryVersions
      input TypeName libraryName;
      output String[:] librariesAndVersions;
    end getAvailableLibraryVersions;

### getAvailableMatchingAlgorithms

Returns the available matching algorithms.

    function getAvailableMatchingAlgorithms
      output String[:] allChoices;
      output String[:] allComments;
    end getAvailableMatchingAlgorithms;

### getAvailablePackageConversionsFrom

Returns the versions that provide conversion from the requested version of the library.

    function getAvailablePackageConversionsFrom
      input TypeName pkg;
      input String version;
      output String[:] convertsTo;
    end getAvailablePackageConversionsFrom;

### getAvailablePackageConversionsTo

Returns the versions that provide conversion to the requested version of the library.

    function getAvailablePackageConversionsTo
      input TypeName pkg;
      input String version;
      output String[:] convertsTo;
    end getAvailablePackageConversionsTo;

### getAvailablePackageVersions

Returns the versions that provide the requested version of the library.

    function getAvailablePackageVersions
      input TypeName pkg;
      input String version;
      output String[:] withoutConversion;
    end getAvailablePackageVersions;

### getAvailableTearingMethods

Returns the available tearing methods.

    function getAvailableTearingMethods
      output String[:] allChoices;
      output String[:] allComments;
    end getAvailableTearingMethods;

### getBooleanClassAnnotation

Checks if an annotation exists and returns its value

    function getBooleanClassAnnotation
      input TypeName className;
      input TypeName annotationName;
      output Boolean value;
    end getBooleanClassAnnotation;

### getBuiltinType

Returns the builtin type e.g Real, Integer, Boolean & String of the class.

    function getBuiltinType
      input TypeName cl;
      output String name;
    end getBuiltinType;

### getCFlags

Returns the C compiler flags (CFLAGS) used for simulation code.

    function getCFlags
      output String outString;
    end getCFlags;

### getCXXCompiler

Returns the C++ compiler (CXX) used for simulation code.

    function getCXXCompiler
      output String compiler;
    end getCXXCompiler;

### getClassComment

Returns a class's comment.

    function getClassComment
      input TypeName cl;
      output String comment;
    end getClassComment;

### getClassInformation

Returns information about a class.

    function getClassInformation
      input TypeName cl;
      output String restriction, comment;
      output Boolean partialPrefix, finalPrefix, encapsulatedPrefix;
      output String fileName;
      output Boolean fileReadOnly;
      output Integer lineNumberStart, columnNumberStart, lineNumberEnd, columnNumberEnd;
      output String dimensions[:];
      output Boolean isProtectedClass;
      output Boolean isDocumentationClass;
      output String version;
      output String preferredView;
      output Boolean state;
      output String access;
      output String versionDate;
      output String versionBuild;
      output String dateModified;
      output String revisionId;
    end getClassInformation;

### getClassNames

Returns the list of class names defined in the class.

    function getClassNames
      input TypeName class_ = $Code(AllLoadedClasses);
      input Boolean recursive = false;
      input Boolean qualified = false;
      input Boolean sort = false;
      input Boolean builtin = false "List also builtin classes if true";
      input Boolean showProtected = false "List also protected classes if true";
      input Boolean includeConstants = false "List also constants in the class if true";
      output TypeName classNames[:];
    end getClassNames;

### getClassRestriction

Returns the restriction of the given class.

    function getClassRestriction
      input TypeName cl;
      output String restriction;
    end getClassRestriction;

### getCommandLineOptions

Returns all command line options who have non-default values as a list of strings.

    function getCommandLineOptions
      output String[:] flags;
    end getCommandLineOptions;

### getCompiler

Returns the C compiler (CC) used for simulation code.

    function getCompiler
      output String compiler;
    end getCompiler;

### getComponentAnnotations

Returns the annotations of the components in the given class.

    function getComponentAnnotations
      input TypeName className;
      output Expression result;
    end getComponentAnnotations;

### getComponentComment

Returns the comment on a component.

    function getComponentComment
      input TypeName className;
      input TypeName componentName;
      output String comment;
    end getComponentComment;

### getComponentCount

Returns the number of components in a class.

    function getComponentCount
      input TypeName classPath;
      output Integer count;
    end getComponentCount;

### getComponentModifierNames

Returns the list of class component modifiers.

    function getComponentModifierNames
      input TypeName class_;
      input String componentName;
      output String[:] modifiers;
    end getComponentModifierNames;

### getComponentModifierValue

Returns the binding equation of a component.

    function getComponentModifierValue
      input TypeName class_;
      input TypeName modifier;
      output String value;
    end getComponentModifierValue;

### getComponentModifierValues

Returns the modifier for a component.

    function getComponentModifierValues
      input TypeName class_;
      input TypeName modifier;
      output String value;
    end getComponentModifierValues;

### getComponents

Returns information about the component in a given class.

    function getComponents
      input TypeName className;
      input Boolean useQuotes = false;
    end getComponents;

### getComponentsTest

Returns an array of records with information about the components of the given class.

    function getComponentsTest
      input TypeName name;
      output Component[:] components;
      record Component
        String className "the type of the component";
        String name "the name of the component";
        String comment "the comment of the component";
        Boolean isProtected "true if component is protected";
        Boolean isFinal "true if component is final";
        Boolean isFlow "true if component is flow";
        Boolean isStream "true if component is stream";
        Boolean isReplaceable "true if component is replaceable";
        String variability "'constant', 'parameter', 'discrete', ''";
        String innerOuter "'inner', 'outer', ''";
        String inputOutput "'input', 'output', ''";
        String dimensions[:] "array with the dimensions of the component";
      end Component;
    end getComponentsTest;

### getConfigFlagValidOptions

Returns the list of valid options for a string config flag, and the description strings for these options if available.

    function getConfigFlagValidOptions
      input String flag;
      output String validOptions[:];
      output String mainDescription;
      output String descriptions[:];
    end getConfigFlagValidOptions;

### getConnectionCount

Counts the number of connect equation in a class.

    function getConnectionCount
      input TypeName className;
      output Integer count;
    end getConnectionCount;

### getConnectionList

Returns an list of all connect equations including those within loops

    function getConnectionList
      input TypeName className;
      output String[:, :] result;
    end getConnectionList;

### getConnectorCount

Returns the number of public connectors in the given class.

    function getConnectorCount
      input TypeName className;
      output Integer count;
    end getConnectorCount;

### getConversionsFromVersions

Returns the versions this library can convert from with and without conversions.

    function getConversionsFromVersions
      input TypeName pack;
      output String[:] withoutConversion;
      output String[:] withConversion;
    end getConversionsFromVersions;

### getCrefInfo

Deprecated; use getClassInformation instead.

    function getCrefInfo
      input TypeName cl;
      output Expression[:] result;
    end getCrefInfo;

### getDefaultComponentName

Returns the default component name for a class.

    function getDefaultComponentName
      input TypeName cl;
      output String name;
    end getDefaultComponentName;

### getDefaultComponentPrefixes

Returns the default component prefixes for a class.

    function getDefaultComponentPrefixes
      input TypeName cl;
      output String prefixes;
    end getDefaultComponentPrefixes;

### getDefaultOpenCLDevice

Returns the id for the default OpenCL device to be used.

    function getDefaultOpenCLDevice
      output Integer defdevid;
    end getDefaultOpenCLDevice;

### getDefinitions

Dumps the defined packages, classes, and optionally functions to a string.

    function getDefinitions
      input Boolean addFunctions;
      output String result;
    end getDefinitions;

### getDerivedClassModifierNames

Returns a derived class's modifier names.

    function getDerivedClassModifierNames
      input TypeName className;
      output String[:] modifierNames;
    end getDerivedClassModifierNames;

### getDerivedClassModifierValue

Returns a derived class's modifier value.

    function getDerivedClassModifierValue
      input TypeName className;
      input TypeName modifierName;
      output String modifierValue;
    end getDerivedClassModifierValue;

### getDerivedUnits

Returns the list of derived units for the specified base unit.

    function getDerivedUnits
      input String baseUnit;
      output String[:] derivedUnits;
    end getDerivedUnits;

### getDiagramAnnotation

Returns the Diagram annotation for a given class.

    function getDiagramAnnotation
      input TypeName className;
      output Expression result;
    end getDiagramAnnotation;

### getDocumentationAnnotation

Returns the Documentation annotation defined in the class.

    function getDocumentationAnnotation
      input TypeName cl;
      output String out[3] "{info,revision,infoHeader}";
    end getDocumentationAnnotation;

### getElementAnnotation

Returns the annotation on a component or class element as a string.

    function getElementAnnotation
      input TypeName elementName;
      output String annotationString;
    end getElementAnnotation;

### getElementAnnotations

Returns the annotations of the components and short class definitions in the given class.

    function getElementAnnotations
      input TypeName className;
      output Expression result;
    end getElementAnnotations;

### getElementModifierNames

Returns the list of element (component or short class) modifiers in a class.

    function getElementModifierNames
      input TypeName className;
      input String elementName;
      output String[:] modifiers;
    end getElementModifierNames;

### getElementModifierValue

Returns the binding equation for an element.

    function getElementModifierValue
      input TypeName className;
      input TypeName modifier;
      output String value;
    end getElementModifierValue;

### getElementModifierValues

Returns the modifier for an element.

    function getElementModifierValues
      input TypeName className;
      input TypeName modifier;
      output String value;
    end getElementModifierValues;

### getElements

Returns information about the elements in a given class.

    function getElements
      input TypeName className;
      input Boolean useQuotes = false;
    end getElements;

### getElementsInfo

Returns information about the elements in a given class.

    function getElementsInfo
      input TypeName className;
      output Expression result;
    end getElementsInfo;

### getEnumerationLiterals

Returns the literals for a given enumeration type.

    function getEnumerationLiterals
      input TypeName className;
      output String[:] result;
    end getEnumerationLiterals;

### getEnvironmentVar

Returns the value of the given environment variable.

    function getEnvironmentVar
      input String var;
      output String value "returns empty string on failure";
    end getEnvironmentVar;

### getEquationCount

Counts the number of equation sections in a class.

    function getEquationCount
      input TypeName class_;
      output Integer count;
    end getEquationCount;

### getEquationItemsCount

Counts the number of equations in a class.

    function getEquationItemsCount
      input TypeName class_;
      output Integer count;
    end getEquationItemsCount;

### getErrorString

Returns current error messages.

    impure function getErrorString
      input Boolean warningsAsErrors = false;
      output String errorString;
    end getErrorString;

### getExtendsModifierNames

Returns the names of the modifiers on an extends clause.

    function getExtendsModifierNames
      input TypeName className;
      input TypeName extendsName;
      input Boolean useQuotes = false;
      output String modifiers;
    end getExtendsModifierNames;

### getExtendsModifierValue

Returns the modifier value for a modifier on an extends clause.

    function getExtendsModifierValue
      input TypeName className;
      input TypeName extendsName;
      input TypeName modifierName;
      output Expression result;
    end getExtendsModifierValue;

### getExternalFunctionSpecification

Returns information about a function's external specification.

    function getExternalFunctionSpecification
      input TypeName functionName;
      output Expression result;
    end getExternalFunctionSpecification;

### getHomeDirectoryPath

Returns the path to the current user's HOME directory.

    function getHomeDirectoryPath
      output String homeDirectoryPath;
    end getHomeDirectoryPath;

### getIconAnnotation

Returns the Icon annotation for a given class.

    function getIconAnnotation
      input TypeName className;
      output Expression result;
    end getIconAnnotation;

### getImportCount

Counts the number of import-clauses in a class.

    function getImportCount
      input TypeName class_;
      output Integer count;
    end getImportCount;

### getImportedNames

Returns the definition names of all import-clauses in a class.

    function getImportedNames
      input TypeName class_;
      output String[:] out_public;
      output String[:] out_protected;
    end getImportedNames;

### getIndexReductionMethod

Returns the currently used index reduction method.

    function getIndexReductionMethod
      output String selected;
    end getIndexReductionMethod;

### getInheritanceCount

Returns the numbers of extends clauses in the given class.

    function getInheritanceCount
      input TypeName className;
      output Integer count;
    end getInheritanceCount;

### getInheritedClasses

Returns the list of inherited classes in a class.

    function getInheritedClasses
      input TypeName name;
      output TypeName inheritedClasses[:];
    end getInheritedClasses;

### getInitialAlgorithmCount

Counts the number of initial algorithm sections in a class.

    function getInitialAlgorithmCount
      input TypeName class_;
      output Integer count;
    end getInitialAlgorithmCount;

### getInitialAlgorithmItemsCount

Counts the number of initial algorithm statements in a class.

    function getInitialAlgorithmItemsCount
      input TypeName class_;
      output Integer count;
    end getInitialAlgorithmItemsCount;

### getInitialEquationCount

Counts the number of initial equation sections in a class.

    function getInitialEquationCount
      input TypeName class_;
      output Integer count;
    end getInitialEquationCount;

### getInitialEquationItemsCount

Counts the number of initial equations in a class.

    function getInitialEquationItemsCount
      input TypeName class_;
      output Integer count;
    end getInitialEquationItemsCount;

### getInitialStates

Returns a list of initial states in a class.

    function getInitialStates
      input TypeName cl;
      output String[:, :] initialStates;
    end getInitialStates;

### getInstallationDirectoryPath

Returns the installation directory path.

    function getInstallationDirectoryPath
      output String installationDirectoryPath;
    end getInstallationDirectoryPath;

### getInstantiatedParametersAndValues

Returns the top-level parameter names and values from the DAE.

    function getInstantiatedParametersAndValues
      input TypeName cls;
      output String[:] values;
    end getInstantiatedParametersAndValues;

### getLanguageStandard

Returns the current Modelica Language Standard in use.

    function getLanguageStandard
      output String outVersion;
    end getLanguageStandard;

### getLinker

Returns the linker (LINK) used for simulation code.

    function getLinker
      output String linker;
    end getLinker;

### getLinkerFlags

Returns the linker flags (LDFLAGS) used for simulation code.

    function getLinkerFlags
      output String linkerFlags;
    end getLinkerFlags;

### getLoadedLibraries

Returns the loaded libraries.

    function getLoadedLibraries
      output String[:, 2] libraries;
    end getLoadedLibraries;

### getMMfileTotalDependencies

Returns imports for a MetaModelica package.

    function getMMfileTotalDependencies
      input String in_package_name;
      input String public_imports_dir;
      output String[:] total_pub_imports;
    end getMMfileTotalDependencies;

### getMatchingAlgorithm

Returns the currently used matching algorithm.

    function getMatchingAlgorithm
      output String selected;
    end getMatchingAlgorithm;

### getMemorySize

Returns the amount of system memory.

    function getMemorySize
      output Real memory(unit = "MiB");
    end getMemorySize;

### getModelFigures

Returns the figures defined in the class' figures sub-annotation of Documentation.

    function getModelFigures
      input TypeName name;
      output Figure[:] figures;
    end getModelFigures;

### getModelInstance

Dumps a model instance as a JSON string.

    function getModelInstance
      input TypeName className;
      input TypeName context = $Code(__NoContext);
      input String modifier = "";
      input Boolean prettyPrint = false;
      output String result;
    end getModelInstance;

### getModelInstanceAnnotation

Dumps the annotation of a model using the same JSON format as getModelInstance.

    function getModelInstanceAnnotation
      input TypeName className;
      input String[:] filter = fill("", 0);
      input Boolean prettyPrint = false;
      output String result;
    end getModelInstanceAnnotation;

### getModelInstanceAnnotationReference

Like getModelInstanceAnnotation, but returns an integer handle to an in-memory structure instead of a JSON string (see getModelInstanceReference).

    function getModelInstanceAnnotationReference
      input TypeName className;
      input String[:] filter = fill("", 0);
      output Integer handle;
    end getModelInstanceAnnotationReference;

### getModelInstanceReference

Like getModelInstance, but returns an integer handle to an in-memory model instance structure instead of a JSON string (see issue #15219). The handle is intended to be read directly by an in-process client such as OMEdit and must be released with releaseModelInstanceReference. Returns 0 on failure.

    function getModelInstanceReference
      input TypeName className;
      input TypeName context = $Code(__NoContext);
      input String modifier = "";
      output Integer handle;
    end getModelInstanceReference;

### getModelicaPath

Returns the Modelica library path.

    function getModelicaPath
      output String modelicaPath;
    end getModelicaPath;

### getNamedAnnotation

Returns the value of the annotation with the given name in the given class.

    function getNamedAnnotation
      input TypeName className;
      input TypeName annotationName;
      output Expression result;
    end getNamedAnnotation;

### getNoSimplify

Returns true if noSimplify flag is set.

    function getNoSimplify
      output Boolean noSimplify;
    end getNoSimplify;

### getNthAlgorithm

Returns the n:th algorithm section in a class.

    function getNthAlgorithm
      input TypeName class_;
      input Integer index;
      output String result;
    end getNthAlgorithm;

### getNthAlgorithmItem

Returns the n:th algorithm statement in a class.

    function getNthAlgorithmItem
      input TypeName class_;
      input Integer index;
      output String result;
    end getNthAlgorithmItem;

### getNthAnnotationString

Returns the n:th annotation section as string.

    function getNthAnnotationString
      input TypeName class_;
      input Integer index;
      output String result;
    end getNthAnnotationString;

### getNthComponent

Returns the type, name, and description string of the n:th component in the given class.

    function getNthComponent
      input TypeName className;
      input Integer n;
      output Expression result;
    end getNthComponent;

### getNthComponentAnnotation

Returns the annotation for the n:th component in the given class.

    function getNthComponentAnnotation
      input TypeName className;
      input Integer n;
      output Expression result;
    end getNthComponentAnnotation;

### getNthComponentCondition

Returns the condition for the n:th component in the given class as a string.

    function getNthComponentCondition
      input TypeName className;
      input Integer n;
      output String result;
    end getNthComponentCondition;

### getNthComponentModification

Returns the modification for the n:th component in the given class.

    function getNthComponentModification
      input TypeName className;
      input Integer n;
      output ExpressionOrModification result[:];
    end getNthComponentModification;

### getNthConnection

Returns the n:th connection.

    function getNthConnection
      input TypeName className;
      input Integer index;
      output String[:] result;
    end getNthConnection;

### getNthConnectionAnnotation

Returns the annotation of the n:th connect clause in the class.

    function getNthConnectionAnnotation
      input TypeName className;
      input Integer index;
      output Expression result;
    end getNthConnectionAnnotation;

### getNthConnector

Returns the name and type of the n:th public connector in the given class.

    function getNthConnector
      input TypeName className;
      input Integer n;
      output Expression result;
    end getNthConnector;

### getNthConnectorIconAnnotation

Returns the Icon annotation from the type of the n:th public connector in the given class.

    function getNthConnectorIconAnnotation
      input TypeName className;
      input Integer n;
      output Expression result;
    end getNthConnectorIconAnnotation;

### getNthEquation

Returns the n:th equation section in a class.

    function getNthEquation
      input TypeName class_;
      input Integer index;
      output String result;
    end getNthEquation;

### getNthEquationItem

Returns the n:th equation in a class.

    function getNthEquationItem
      input TypeName class_;
      input Integer index;
      output String result;
    end getNthEquationItem;

### getNthImport

Returns the n:th import-clause.

    function getNthImport
      input TypeName class_;
      input Integer index;
      output String out[3] "{\"Path\",\"Id\",\"Kind\"}";
    end getNthImport;

### getNthInheritedClass

Returns the name of the n:th inherited class in the given class.

    function getNthInheritedClass
      input TypeName className;
      input Integer n;
      output TypeName baseClass;
    end getNthInheritedClass;

### getNthInheritedClassDiagramMapAnnotation

Returns the IconMap annotation for the n:th inherited class in the given class.

    function getNthInheritedClassDiagramMapAnnotation
      input TypeName className;
      input Integer n;
      output Expression result;
    end getNthInheritedClassDiagramMapAnnotation;

### getNthInheritedClassIconMapAnnotation

Returns the IconMap annotation for the n:th inherited class in the given class.

    function getNthInheritedClassIconMapAnnotation
      input TypeName className;
      input Integer n;
      output Expression result;
    end getNthInheritedClassIconMapAnnotation;

### getNthInitialAlgorithm

Returns the n:th initial algorithm section in a class.

    function getNthInitialAlgorithm
      input TypeName class_;
      input Integer index;
      output String result;
    end getNthInitialAlgorithm;

### getNthInitialAlgorithmItem

Returns the n:th initial algorithm statement in a class.

    function getNthInitialAlgorithmItem
      input TypeName class_;
      input Integer index;
      output String result;
    end getNthInitialAlgorithmItem;

### getNthInitialEquation

Returns the n:th initial equation section in a class.

    function getNthInitialEquation
      input TypeName class_;
      input Integer index;
      output String result;
    end getNthInitialEquation;

### getNthInitialEquationItem

Returns the n:th initial equation in a class.

    function getNthInitialEquationItem
      input TypeName class_;
      input Integer index;
      output String result;
    end getNthInitialEquationItem;

### getOrderConnections

Returns true if orderConnections flag is set.

    function getOrderConnections
      output Boolean orderConnections;
    end getOrderConnections;

### getPackages

Returns the list of packages defined in the class.

    function getPackages
      input TypeName class_ = $Code(AllLoadedClasses);
      output TypeName classNames[:];
    end getPackages;

### getParameterNames

Returns the names of all parameters in a given class.

    function getParameterNames
      input TypeName class_;
      output String[:] parameters;
    end getParameterNames;

### getParameterValue

Returns the value of a parameter of the class.

    function getParameterValue
      input TypeName class_;
      input String parameterName;
      output String parameterValue;
    end getParameterValue;

### getReplaceableChoices

Returns all replaceable choices for a class with choicesAllMatching.

    function getReplaceableChoices
      input TypeName baseClass;
      input TypeName parentClass;
      input Boolean includePartial = false;
      input Boolean sort = false;
      output String choices[:, :];
    end getReplaceableChoices;

### getSettings

Returns some settings.

    function getSettings
      output String settings;
    end getSettings;

### getShortDefinitionBaseClassInformation

Returns information about a short class definition.

    function getShortDefinitionBaseClassInformation
      input TypeName className;
      output Expression result;
    end getShortDefinitionBaseClassInformation;

### getShowAnnotations

Returns the value of the --showAnnotations flag.

    function getShowAnnotations
      output Boolean show;
    end getShowAnnotations;

### getSimulationOptions

Returns the startTime, stopTime, tolerance, and interval based on the experiment annotation.

    function getSimulationOptions
      input TypeName name;
      input Real defaultStartTime = 0.0;
      input Real defaultStopTime = 1.0;
      input Real defaultTolerance = 1e-6;
      input Integer defaultNumberOfIntervals = 500 "May be overridden by defining defaultInterval instead";
      input Real defaultInterval = 0.0 "If = 0.0, then numberOfIntervals is used to calculate the step size";
      output Real startTime;
      output Real stopTime;
      output Real tolerance;
      output Integer numberOfIntervals;
      output Real interval;
    end getSimulationOptions;

### getSourceFile

Returns the filename of the class.

    function getSourceFile
      input TypeName class_;
      output String filename "empty on failure";
    end getSourceFile;

### getTearingMethod

Returns the currently used tearing method.

    function getTearingMethod
      output String selected;
    end getTearingMethod;

### getTempDirectoryPath

Returns the current user temporary directory location.

    function getTempDirectoryPath
      output String tempDirectoryPath;
    end getTempDirectoryPath;

### getTimeStamp

Returns the timestamp for a class.

    function getTimeStamp
      input TypeName cl;
      output Real timeStamp;
      output String timeStampAsString;
    end getTimeStamp;

### getTotalModel

Saves a model and dependencies to a single string.

    function getTotalModel
      input TypeName className;
      input Boolean stripAnnotations = false;
      input Boolean stripComments = false;
      input Boolean obfuscate = false;
      output String result;
    end getTotalModel;

### getTransitions

Returns list of transitions for the given class.

    function getTransitions
      input TypeName cl;
      output String[:, :] transitions;
    end getTransitions;

### getUsedClassNames

Returns the list of class names used in the total program defined by the class.

    function getUsedClassNames
      input TypeName className;
      output TypeName classNames[:];
    end getUsedClassNames;

### getUses

Returns the libraries used by a package.

    function getUses
      input TypeName pack;
      output String[:, :] uses;
    end getUses;

### getVectorizationLimit

Returns the vectorization limit used by the old frontend.

    function getVectorizationLimit
      output Integer vectorizationLimit;
    end getVectorizationLimit;

### getVersion

Returns the version of the compiler or a Modelica library.

    function getVersion
      input TypeName cl = $Code(OpenModelica);
      output String version;
    end getVersion;

### help

Display the OpenModelica help text.

    function help
      input String topic = "topics";
      output String helpText;
    end help;

### iconv

Converts a string from one character encoding to another.

    function iconv
      input String string;
      input String from;
      input String to = "UTF-8";
      output String result;
    end iconv;

### importFMU

Imports a Functional Mockup Unit.

    function importFMU
      input String filename "the fmu file name";
      input String workdir = "<default>" "The output directory for imported FMU files. <default> will put the files to current working directory.";
      input Integer loglevel = 3 "loglevel_nothing=0;loglevel_fatal=1;loglevel_error=2;loglevel_warning=3;loglevel_info=4;loglevel_verbose=5;loglevel_debug=6";
      input Boolean fullPath = false "When true the full output path is returned otherwise only the file name.";
      input Boolean debugLogging = false "When true the FMU's debug output is printed.";
      input Boolean generateInputConnectors = true "When true creates the input connector pins.";
      input Boolean generateOutputConnectors = true "When true creates the output connector pins.";
      input TypeName modelName = $Code(Default) "Name of the generated model. If default then the name is auto generated using FMU information.";
      output String generatedFileName "Returns the full path of the generated file.";
    end importFMU;

### importFMUModelDescription

Imports modelDescription.xml

    function importFMUModelDescription
      input String filename "the fmu file name";
      input String workdir = "<default>" "The output directory for imported FMU files. <default> will put the files to current working directory.";
      input Integer loglevel = 3 "loglevel_nothing=0;loglevel_fatal=1;loglevel_error=2;loglevel_warning=3;loglevel_info=4;loglevel_verbose=5;loglevel_debug=6";
      input Boolean fullPath = false "When true the full output path is returned otherwise only the file name.";
      input Boolean debugLogging = false "When true the FMU's debug output is printed.";
      input Boolean generateInputConnectors = true "When true creates the input connector pins.";
      input Boolean generateOutputConnectors = true "When true creates the output connector pins.";
      output String generatedFileName "Returns the full path of the generated file.";
    end importFMUModelDescription;

### inferBindings

Update bindings for a verification model.

    function inferBindings
      input TypeName path;
      output Boolean success;
    end inferBindings;

### installPackage

Installs a package.

    function installPackage
      input TypeName pkg;
      input String version = "";
      input Boolean exactMatch = false;
      output Boolean result;
    end installPackage;

### instantiateModel

Instantiates a model and returns the flattened model.

    function instantiateModel
      input TypeName className;
      output String result;
    end instantiateModel;

### isBlock

Checks if a given class is a block.

    function isBlock
      input TypeName cl;
      output Boolean b;
    end isBlock;

### isClass

Checks if a given class is a class.

    function isClass
      input TypeName cl;
      output Boolean b;
    end isClass;

### isConnector

Checks if a given class is a connector or expandable connector.

    function isConnector
      input TypeName cl;
      output Boolean b;
    end isConnector;

### isConstant

Checks if a component in a class is a constant.

    function isConstant
      input TypeName componentName;
      input TypeName className;
      output Boolean result;
    end isConstant;

### isEnumeration

Checks if a given class is an enumeration.

    function isEnumeration
      input TypeName cl;
      output Boolean b;
    end isEnumeration;

### isExperiment

Checks if a class is an experiment.

    function isExperiment
      input TypeName name;
      output Boolean res;
    end isExperiment;

### isExtendsModifierFinal

Returns whether a modifier on an extends clause is final or not.

    function isExtendsModifierFinal
      input TypeName className;
      input TypeName extendsName;
      input TypeName modifierName;
      output Boolean isFinal;
    end isExtendsModifierFinal;

### isFunction

Checks if a given class is a function.

    function isFunction
      input TypeName cl;
      output Boolean b;
    end isFunction;

### isModel

Checks if a given class is a model.

    function isModel
      input TypeName cl;
      output Boolean b;
    end isModel;

### isOperator

Checks if a given class is an operator.

    function isOperator
      input TypeName cl;
      output Boolean b;
    end isOperator;

### isOperatorFunction

Checks if a given class is an operator function.

    function isOperatorFunction
      input TypeName cl;
      output Boolean b;
    end isOperatorFunction;

### isOperatorRecord

Checks if a given class is an operator record.

    function isOperatorRecord
      input TypeName cl;
      output Boolean b;
    end isOperatorRecord;

### isOptimization

Checks if a given class is an optimization.

    function isOptimization
      input TypeName cl;
      output Boolean b;
    end isOptimization;

### isPackage

Checks if a given class is a package.

    function isPackage
      input TypeName cl;
      output Boolean b;
    end isPackage;

### isParameter

Checks whether a component in a class is a parameter.

    function isParameter
      input TypeName componentName;
      input TypeName className;
      output Boolean result;
    end isParameter;

### isPartial

Checks if a given class is partial.

    function isPartial
      input TypeName cl;
      output Boolean b;
    end isPartial;

### isPrimitive

Checks if a type is primitive.

    function isPrimitive
      input TypeName className;
      output Boolean result;
    end isPrimitive;

### isProtected

Checks if a component in a class is protected.

    function isProtected
      input TypeName componentName;
      input TypeName className;
      output Boolean result;
    end isProtected;

### isProtectedClass

Returns true if the given class c1 has class c2 as one of its protected class.

    function isProtectedClass
      input TypeName cl;
      input String c2;
      output Boolean b;
    end isProtectedClass;

### isRecord

Checks if a given class is a record.

    function isRecord
      input TypeName cl;
      output Boolean b;
    end isRecord;

### isRedeclare

Checks if a given element is a redeclare element.

    function isRedeclare
      input TypeName element;
      output Boolean b;
    end isRedeclare;

### isReplaceable

Checks if a given element is replaceable.

    function isReplaceable
      input TypeName element;
      output Boolean b;
    end isReplaceable;

### isShortDefinition

Returns true if the given class is defined as a short class.

    function isShortDefinition
      input TypeName class_;
      output Boolean isShortCls;
    end isShortDefinition;

### isType

Checks if a given class is a type.

    function isType
      input TypeName cl;
      output Boolean b;
    end isType;

### linearize

Creates a model with symbolic linearization matrices.

    function linearize
      input TypeName className "the class that should simulated";
      input Real startTime = "<default>" "the start time of the simulation. <default> = 0.0";
      input Real stopTime = 1.0 "the stop time of the simulation. <default> = 1.0";
      input Integer numberOfIntervals = 500 "number of intervals in the result file. <default> = 500";
      input Real stepSize = 0.002 "step size that is used for the result file. <default> = 0.002";
      input Real tolerance = 1e-6 "tolerance used by the integration method. <default> = 1e-6";
      input String method = "<default>" "integration method used for simulation. <default> = dassl";
      input String fileNamePrefix = "<default>" "fileNamePrefix. <default> = \"\"";
      input Boolean storeInTemp = false "storeInTemp. <default> = false";
      input Boolean noClean = false "noClean. <default> = false";
      input String options = "<default>" "options. <default> = \"\"";
      input String outputFormat = "mat" "Format for the result file. <default> = \"mat\"";
      input String variableFilter = ".*" "Only variables fully matching the regexp are stored in the result file. <default> = \".*\"";
      input String cflags = "<default>" "cflags. <default> = \"\"";
      input String simflags = "<default>" "simflags. <default> = \"\"";
      output String linearizationResult;
    end linearize;

### list

Lists the contents of the given class, or all loaded classes.

    function list
      input TypeName class_ = $Code(AllLoadedClasses);
      input Boolean interfaceOnly = false;
      input Boolean shortOnly = false "only short class definitions";
      input ExportKind exportKind = ExportKind.Absyn;
      output String contents;
    end list;

### listFile

Lists the contents of the file given by the class.

    function listFile
      input TypeName class_;
      input Boolean nestedClasses = true;
      output String contents;
    end listFile;

### listVariables

Lists the names of the active variables in the scripting environment.

    function listVariables
      output TypeName variables[:];
    end listVariables;

### loadClassContentString

Loads class elements from a string and inserts them into the given loaded class.

    function loadClassContentString
      input String data;
      input TypeName className;
      input Integer offsetX = 0;
      input Integer offsetY = 0;
      output Boolean success;
    end loadClassContentString;

### loadEncryptedPackage

Loads an encrypted package.

    function loadEncryptedPackage
      input String fileName;
      input String workdir = "<default>" "The output directory for imported encrypted files. <default> will put the files to current working directory.";
      input Boolean skipUnzip = false "Skips the unzip of .mol if true. In that case we expect the files are already extracted e.g., because of parseEncryptedPackage() call.";
      input Boolean uses = true;
      input Boolean notify = true "Give a notification of the libraries and versions that were loaded";
      input Boolean requireExactVersion = false "If the version is required to be exact, if there is a uses Modelica(version=\"3.2\"), Modelica 3.2.1 will not match it.";
      output Boolean success;
    end loadEncryptedPackage;

### loadFile

Loads a Modelica file (*.mo).

    function loadFile
      input String fileName;
      input String encoding = "UTF-8";
      input Boolean uses = true;
      input Boolean notify = true "Give a notification of the libraries and versions that were loaded";
      input Boolean requireExactVersion = false "If the version is required to be exact, if there is a uses Modelica(version=\"3.2\"), Modelica 3.2.1 will not match it.";
      input Boolean allowWithin = true "Whether to allow the file to have a within-clause other than 'within;'.";
      output Boolean success;
    end loadFile;

### loadFileInteractive

Loads a Modelica file and returns a list of all loaded top-level classes.

    function loadFileInteractive
      input String filename;
      input String encoding = "UTF-8";
      input Boolean uses = true;
      input Boolean notify = true "Give a notification of the libraries and versions that were loaded";
      input Boolean requireExactVersion = false "If the version is required to be exact, if there is a uses Modelica(version=\"3.2\"), Modelica 3.2.1 will not match it.";
      output TypeName names[:];
    end loadFileInteractive;

### loadFileInteractiveQualified

Loads a Modelica file and returns a list of the top-level classes that were loaded.

    function loadFileInteractiveQualified
      input String filename;
      input String encoding = "UTF-8";
      output TypeName names[:];
    end loadFileInteractiveQualified;

### loadFiles

Loads Modelica files (*.mo).

    function loadFiles
      input String[:] fileNames;
      input String encoding = "UTF-8";
      input Integer numThreads = OpenModelica.Scripting.numProcessors();
      input Boolean uses = true;
      input Boolean notify = true "Give a notification of the libraries and versions that were loaded";
      input Boolean requireExactVersion = false "If the version is required to be exact, if there is a uses Modelica(version=\"3.2\"), Modelica 3.2.1 will not match it.";
      input Boolean allowWithin = true "Whether to allow the files to have a within-clause other than 'within;'.";
      output Boolean success;
    end loadFiles;

### loadModel

Loads a Modelica library.

    function loadModel
      input TypeName className;
      input String[:] priorityVersion = {"default"};
      input Boolean notify = false "Give a notification of the libraries and versions that were loaded";
      input String languageStandard = "" "Override the set language standard. Parse with the given setting, but do not change it permanently.";
      input Boolean requireExactVersion = false "If the version is required to be exact, if there is a uses Modelica(version=\"3.2\"), Modelica 3.2.1 will not match it.";
      output Boolean success;
    end loadModel;

### loadModelica3D

Loads Modelica3D.

    function loadModelica3D
      input String version = "3.2.1";
      output Boolean status;
    end loadModelica3D;

### loadOMSimulator

Loads the OMSimulator DLL from the default path.

    function loadOMSimulator
      output Integer status;
    end loadOMSimulator;

### loadString

Loads Modelica definitions from a string.

    function loadString
      input String data;
      input String filename = "<interactive>";
      input String encoding = "UTF-8" "Deprecated as *ALL* strings are now UTF-8 encoded";
      input Boolean merge = false "if merge is true the parsed AST is merged with the existing AST,
                                     default to false which means that is replaced, not merged";
      input Boolean uses = true;
      input Boolean notify = true "Give a notification of the libraries and versions that were loaded";
      input Boolean requireExactVersion = false "If the version is required to be exact,
                                                   if there is a uses Modelica(version=\"3.2\"),
                                                   Modelica 3.2.1 will not match it.";
      output Boolean success;
    end loadString;

### mkdir

Creates a directory.

    function mkdir
      input String newDirectory;
      output Boolean success;
    end mkdir;

### modifierToJSON

Parses a modifier given as a string and dumps it as JSON.

    function modifierToJSON
      input String modifier;
      input Boolean prettyPrint = false;
      output String json;
    end modifierToJSON;

### moveClass

Moves a class up or down in a package.

    function moveClass
      input TypeName className "the class that should be moved";
      input Integer offset "Offset in the class list.";
      output Boolean result;
    end moveClass;

### moveClassToBottom

Moves a class to the bottom of its enclosing class.

    function moveClassToBottom
      input TypeName className;
      output Boolean result;
    end moveClassToBottom;

### moveClassToTop

Moves a class to the top of its enclosing class.

    function moveClassToTop
      input TypeName className;
      output Boolean result;
    end moveClassToTop;

### newModel

Creates a new empty model in the given package.

    function newModel
      input TypeName className;
      input TypeName withinPath;
      output Boolean success;
    end newModel;

### ngspicetoModelica

Converts ngspice netlist to Modelica code.

    function ngspicetoModelica
      input String netlistfileName;
      output Boolean success = false;
    end ngspicetoModelica;

### numProcessors

Returns the number of available processors or threads.

    function numProcessors
      output Integer result;
    end numProcessors;

### oms_RunFile

Simulates a single FMU or SSP model.

    function oms_RunFile
      input String filename;
      output Integer status;
    end oms_RunFile;

### oms_addBus

OMSimulator: Adds a bus to a given component.

    function oms_addBus
      input String cref;
      output Integer status;
    end oms_addBus;

### oms_addConnection

Adds a new connection between connectors A and B.

    function oms_addConnection
      input String crefA;
      input String crefB;
      output Integer status;
    end oms_addConnection;

### oms_addConnector

Adds a connector to a given component.

    function oms_addConnector
      input String cref;
      input oms_causality causality;
      input oms_signal_type type_;
      output Integer status;
    end oms_addConnector;

### oms_addConnectorToBus

Adds a connector to a bus.

    function oms_addConnectorToBus
      input String busCref;
      input String connectorCref;
      output Integer status;
    end oms_addConnectorToBus;

### oms_addConnectorToTLMBus

Adds a connector to a TLM bus.

    function oms_addConnectorToTLMBus
      input String busCref;
      input String connectorCref;
      input String type_;
      output Integer status;
    end oms_addConnectorToTLMBus;

### oms_addDynamicValueIndicator

Adds a dynamic value indicator.

    function oms_addDynamicValueIndicator
      input String signal;
      input String lower;
      input String upper;
      input Real stepSize;
      output Integer status;
    end oms_addDynamicValueIndicator;

### oms_addEventIndicator

Adds an event indicator.

    function oms_addEventIndicator
      input String signal;
      output Integer status;
    end oms_addEventIndicator;

### oms_addExternalModel

Adds an external model to a TLM system.

    function oms_addExternalModel
      input String cref;
      input String path;
      input String startscript;
      output Integer status;
    end oms_addExternalModel;

### oms_addSignalsToResults

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

    function oms_addSignalsToResults
      input String cref;
      input String regex;
      output Integer status;
    end oms_addSignalsToResults;

### oms_addStaticValueIndicator

Adds a static value indicator.

    function oms_addStaticValueIndicator
      input String signal;
      input Real lower;
      input Real upper;
      input Real stepSize;
      output Integer status;
    end oms_addStaticValueIndicator;

### oms_addSubModel

Adds a component to a system.

    function oms_addSubModel
      input String cref;
      input String fmuPath;
      output Integer status;
    end oms_addSubModel;

### oms_addSystem

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

    function oms_addSystem
      input String cref;
      input oms_system type_;
      output Integer status;
    end oms_addSystem;

### oms_addTLMBus

Adds a TLM bus.

    function oms_addTLMBus
      input String cref;
      input oms_tlm_domain domain;
      input Integer dimensions;
      input oms_tlm_interpolation interpolation;
      output Integer status;
    end oms_addTLMBus;

### oms_addTLMConnection

Connects two TLM connectors.

    function oms_addTLMConnection
      input String crefA;
      input String crefB;
      input Real delay;
      input Real alpha;
      input Real linearimpedance;
      input Real angularimpedance;
      output Integer status;
    end oms_addTLMConnection;

### oms_addTimeIndicator

Adds a time indicator.

    function oms_addTimeIndicator
      input String signal;
      output Integer status;
    end oms_addTimeIndicator;

### oms_compareSimulationResults

Compares a given signal in two result files.

    function oms_compareSimulationResults
      input String filenameA;
      input String filenameB;
      input String var;
      input Real relTol;
      input Real absTol;
      output Integer status;
    end oms_compareSimulationResults;

### oms_copySystem

Copies a system.

    function oms_copySystem
      input String source;
      input String target;
      output Integer status;
    end oms_copySystem;

### oms_delete

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

    function oms_delete
      input String cref;
      output Integer status;
    end oms_delete;

### oms_deleteConnection

Deletes the connection between two connectors.

    function oms_deleteConnection
      input String crefA;
      input String crefB;
      output Integer status;
    end oms_deleteConnection;

### oms_deleteConnectorFromBus

Deletes a connector from a given bus.

    function oms_deleteConnectorFromBus
      input String busCref;
      input String connectorCref;
      output Integer status;
    end oms_deleteConnectorFromBus;

### oms_deleteConnectorFromTLMBus

Deletes a connector from a given TLM bus.

    function oms_deleteConnectorFromTLMBus
      input String busCref;
      input String connectorCref;
      output Integer status;
    end oms_deleteConnectorFromTLMBus;

### oms_export

Exports a composite model to a SPP file.

    function oms_export
      input String cref;
      input String filename;
      output Integer status;
    end oms_export;

### oms_exportDependencyGraphs

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

    function oms_exportDependencyGraphs
      input String cref;
      input String initialization;
      input String event;
      input String simulation;
      output Integer status;
    end oms_exportDependencyGraphs;

### oms_exportSnapshot

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

    function oms_exportSnapshot
      input String cref;
      output String contents;
      output Integer status;
    end oms_exportSnapshot;

### oms_extractFMIKind

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

    function oms_extractFMIKind
      input String filename;
      output Integer kind;
      output Integer status;
    end oms_extractFMIKind;

### oms_faultInjection

Defines a new fault injection block.

    function oms_faultInjection
      input String signal;
      input oms_fault_type faultType;
      input Real faultValue;
      output Integer status;
    end oms_faultInjection;

### oms_getBoolean

Get boolean value of a given signal.

    function oms_getBoolean
      input String cref;
      output Boolean value;
      output Integer status;
    end oms_getBoolean;

### oms_getFixedStepSize

Gets the fixed step size.

    function oms_getFixedStepSize
      input String cref;
      output Real stepSize;
      output Integer status;
    end oms_getFixedStepSize;

### oms_getInteger

Get integer value of a given signal.

    function oms_getInteger
      input String cref;
      input Integer value;
      output Integer status;
    end oms_getInteger;

### oms_getModelState

Gets the model state of the given model cref.

    function oms_getModelState
      input String cref;
      output Integer modelState;
      output Integer status;
    end oms_getModelState;

### oms_getReal

Get real value.

    function oms_getReal
      input String cref;
      output Real value;
      output Integer status;
    end oms_getReal;

### oms_getSolver

Gets the selected solver method of the given system.

    function oms_getSolver
      input String cref;
      output Integer solver;
      output Integer status;
    end oms_getSolver;

### oms_getStartTime

Gets the start time from the model.

    function oms_getStartTime
      input String cref;
      output Real startTime;
      output Integer status;
    end oms_getStartTime;

### oms_getStopTime

Gets the stop time from the model.

    function oms_getStopTime
      input String cref;
      output Real stopTime;
      output Integer status;
    end oms_getStopTime;

### oms_getSubModelPath

Returns the path of a given component.

    function oms_getSubModelPath
      input String cref;
      output String path;
      output Integer status;
    end oms_getSubModelPath;

### oms_getSystemType

Gets the type of a given system.

    function oms_getSystemType
      input String cref;
      output Integer type_;
      output Integer status;
    end oms_getSystemType;

### oms_getTolerance

Gets the tolerance of a given system or component.

    function oms_getTolerance
      input String cref;
      output Real absoluteTolerance;
      output Real relativeTolerance;
      output Integer status;
    end oms_getTolerance;

### oms_getVariableStepSize

Gets the step size parameters.

    function oms_getVariableStepSize
      input String cref;
      output Real initialStepSize;
      output Real minimumStepSize;
      output Real maximumStepSize;
      output Integer status;
    end oms_getVariableStepSize;

### oms_getVersion

Returns the version of the OMSimulator.

    function oms_getVersion
      output String version;
    end oms_getVersion;

### oms_importFile

Imports a composite model from a SSP file.

    function oms_importFile
      input String filename;
      output String cref;
      output Integer status;
    end oms_importFile;

### oms_importSnapshot

Loads a snapshot to restore a previous model state.

    function oms_importSnapshot
      input String cref;
      input String snapshot;
      output Integer status;
    end oms_importSnapshot;

### oms_initialize

Initializes a composite model.

    function oms_initialize
      input String cref;
      output Integer status;
    end oms_initialize;

### oms_instantiate

Instantiates a given composite model.

    function oms_instantiate
      input String cref;
      output Integer status;
    end oms_instantiate;

### oms_list

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

    function oms_list
      input String cref;
      output String contents;
      output Integer status;
    end oms_list;

### oms_listUnconnectedConnectors

Lists all unconnected connectors of a given system.

    function oms_listUnconnectedConnectors
      input String cref;
      output String contents;
      output Integer status;
    end oms_listUnconnectedConnectors;

### oms_loadSnapshot

Loads a snapshot to restore a previous model state.

    function oms_loadSnapshot
      input String cref;
      input String snapshot;
      output String newCref;
      output Integer status;
    end oms_loadSnapshot;

### oms_newModel

Creates a new composite model.

    function oms_newModel
      input String cref;
      output Integer status;
    end oms_newModel;

### oms_removeSignalsFromResults

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

    function oms_removeSignalsFromResults
      input String cref;
      input String regex;
      output Integer status;
    end oms_removeSignalsFromResults;

### oms_rename

Renames a model, system, or component.

    function oms_rename
      input String cref;
      input String newCref;
      output Integer status;
    end oms_rename;

### oms_reset

Reset the composite model after a simulation run.

    function oms_reset
      input String cref;
      output Integer status;
    end oms_reset;

### oms_setBoolean

Sets the value of a given boolean signal.

    function oms_setBoolean
      input String cref;
      input Boolean value;
      output Integer status;
    end oms_setBoolean;

### oms_setCommandLineOption

Sets special flags.

    function oms_setCommandLineOption
      input String cmd;
      output Integer status;
    end oms_setCommandLineOption;

### oms_setFixedStepSize

Sets the fixed step size.

    function oms_setFixedStepSize
      input String cref;
      input Real stepSize;
      output Integer status;
    end oms_setFixedStepSize;

### oms_setInteger

Sets the value of a given integer signal.

    function oms_setInteger
      input String cref;
      input Integer value;
      output Integer status;
    end oms_setInteger;

### oms_setLogFile

Redirects logging output to file or std streams.

    function oms_setLogFile
      input String filename;
      output Integer status;
    end oms_setLogFile;

### oms_setLoggingInterval

Sets the logging interval of the simulation.

    function oms_setLoggingInterval
      input String cref;
      input Real loggingInterval;
      output Integer status;
    end oms_setLoggingInterval;

### oms_setLoggingLevel

Enables/disables debug logging.

    function oms_setLoggingLevel
      input Integer logLevel;
      output Integer status;
    end oms_setLoggingLevel;

### oms_setReal

Sets the value of a given real signal.

    function oms_setReal
      input String cref;
      input Real value;
      output Integer status;
    end oms_setReal;

### oms_setRealInputDerivative

Sets the first order derivative of a real input signal.

    function oms_setRealInputDerivative
      input String cref;
      input Real value;
      output Integer status;
    end oms_setRealInputDerivative;

### oms_setResultFile

Sets the result file of the simulation.

    function oms_setResultFile
      input String cref;
      input String filename;
      input Integer bufferSize;
      output Integer status;
    end oms_setResultFile;

### oms_setSignalFilter

Sets a signal filter.

    function oms_setSignalFilter
      input String cref;
      input String regex;
      output Integer status;
    end oms_setSignalFilter;

### oms_setSolver

Sets the solver method for the given system.

    function oms_setSolver
      input String cref;
      input oms_solver solver;
      output Integer status;
    end oms_setSolver;

### oms_setStartTime

Sets the start time of the simulation.

    function oms_setStartTime
      input String cref;
      input Real startTime;
      output Integer status;
    end oms_setStartTime;

### oms_setStopTime

Sets the stop time of the simulation.

    function oms_setStopTime
      input String cref;
      input Real stopTime;
      output Integer status;
    end oms_setStopTime;

### oms_setTLMPositionAndOrientation

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

    function oms_setTLMPositionAndOrientation
      input String cref;
      input Real x1;
      input Real x2;
      input Real x3;
      input Real A11;
      input Real A12;
      input Real A13;
      input Real A21;
      input Real A22;
      input Real A23;
      input Real A31;
      input Real A32;
      input Real A33;
      output Integer status;
    end oms_setTLMPositionAndOrientation;

### oms_setTLMSocketData

Sets data for TLM socket communication.

    function oms_setTLMSocketData
      input String cref;
      input String address;
      input Integer managerPort;
      input Integer monitorPort;
      output Integer status;
    end oms_setTLMSocketData;

### oms_setTempDirectory

Sets new temp directory.

    function oms_setTempDirectory
      input String newTempDir;
      output Integer status;
    end oms_setTempDirectory;

### oms_setTolerance

Sets the tolerance for a given model or system.

    function oms_setTolerance
      input String cref;
      input Real absoluteTolerance;
      input Real relativeTolerance;
      output Integer status;
    end oms_setTolerance;

### oms_setVariableStepSize

Sets the step size parameters for methods with stepsize control.

    function oms_setVariableStepSize
      input String cref;
      input Real initialStepSize;
      input Real minimumStepSize;
      input Real maximumStepSize;
      output Integer status;
    end oms_setVariableStepSize;

### oms_setWorkingDirectory

Sets a new working directory.

    function oms_setWorkingDirectory
      input String newWorkingDir;
      output Integer status;
    end oms_setWorkingDirectory;

### oms_simulate

Simulates a composite model.

    function oms_simulate
      input String cref;
      output Integer status;
    end oms_simulate;

### oms_stepUntil

Simulates a composite model until a given time value.

    function oms_stepUntil
      input String cref;
      input Real stopTime;
      output Integer status;
    end oms_stepUntil;

### oms_terminate

Terminates a given composite model.

    function oms_terminate
      input String cref;
      output Integer status;
    end oms_terminate;

### optimize

Generates an optimization executable for a Modelica/Optimica model and runs it.

    function optimize
      input TypeName className "the class that should simulated";
      input Real startTime = "<default>" "the start time of the simulation. <default> = 0.0";
      input Real stopTime = 1.0 "the stop time of the simulation. <default> = 1.0";
      input Integer numberOfIntervals = 500 "number of intervals in the result file. <default> = 500";
      input Real stepSize = 0.002 "step size that is used for the result file. <default> = 0.002";
      input Real tolerance = 1e-6 "tolerance used by the integration method. <default> = 1e-6";
      input String method = DAE.SCONST("optimization") "optimize a modelica/optimica model.";
      input String fileNamePrefix = "<default>" "fileNamePrefix. <default> = \"\"";
      input Boolean storeInTemp = false "storeInTemp. <default> = false";
      input Boolean noClean = false "noClean. <default> = false";
      input String options = "<default>" "options. <default> = \"\"";
      input String outputFormat = "mat" "Format for the result file. <default> = \"mat\"";
      input String variableFilter = ".*" "Only variables fully matching the regexp are stored in the result file. <default> = \".*\"";
      input String cflags = "<default>" "cflags. <default> = \"\"";
      input String simflags = "<default>" "simflags. <default> = \"\"";
      output String optimizationResults;
    end optimize;

### parseEncryptedPackage

Parses an encrypted package and returns the names of the parsed classes.

    function parseEncryptedPackage
      input String fileName;
      input String workdir = "<default>" "The output directory for imported encrypted files. <default> will put the files to current working directory.";
      output TypeName names[:];
    end parseEncryptedPackage;

### parseFile

Parses a Modelica file and returns the parsed classes.

    function parseFile
      input String filename;
      input String encoding = "UTF-8";
      output TypeName names[:];
    end parseFile;

### parseString

Parses a string containing Modelica definitions and returns the parsed classes.

    function parseString
      input String data;
      input String filename = "<interactive>";
      output TypeName names[:];
    end parseString;

### plot

Displays a plot with selected variables using OMPlot.

    function plot
      input VariableNames vars "The variables you want to plot";
      input Boolean externalWindow = false "Opens the plot in a new plot window";
      input String fileName = "<default>" "The filename containing the variables. <default> will read the last simulation result";
      input String title = "" "This text will be used as the diagram title.";
      input String grid = "simple" "Sets the grid for the plot i.e simple, detailed, none.";
      input Boolean logX = false "Determines whether or not the horizontal axis is logarithmically scaled.";
      input Boolean logY = false "Determines whether or not the vertical axis is logarithmically scaled.";
      input String xLabel = "time" "This text will be used as the horizontal label in the diagram.";
      input String yLabel = "" "This text will be used as the left vertical label in the diagram.";
      input Real xRange[2] = {0.0, 0.0} "Determines the horizontal interval that is visible in the diagram. {0,0} will select a suitable range.";
      input Real yRange[2] = {0.0, 0.0} "Determines the left vertical interval that is visible in the diagram. {0,0} will select a suitable range.";
      input Real curveWidth = 1.0 "Sets the width of the curve.";
      input Integer curveStyle = 1 "Sets the style of the curve. SolidLine=1, DashLine=2, DotLine=3, DashDotLine=4, DashDotDotLine=5, Sticks=6, Steps=7.";
      input String legendPosition = "top" "Sets the POSITION of the legend i.e left, right, top, bottom, none.";
      input String footer = "" "This text will be used as the diagram footer.";
      input Boolean autoScale = true "Use auto scale while plotting.";
      input Boolean forceOMPlot = false "if true launches OMPlot and doesn't call callback function even if it is defined.";
      input String yAxis = "L" "Sets the variable to be plotted on the left (L) or right (R) y-axis.";
      input String yLabelRight = "" "This text will be used as the right vertical label in the diagram.";
      input Real yRangeRight[2] = {0.0, 0.0} "Determines the right vertical interval that is visible in the diagram. {0,0} will select a suitable range.";
      output Boolean success "Returns true on success";
    end plot;

### plotAll

Displays a plot with all variables using OMPlot.

    function plotAll
      input Boolean externalWindow = false "Opens the plot in a new plot window";
      input String fileName = "<default>" "The filename containing the variables. <default> will read the last simulation result";
      input String title = "" "This text will be used as the diagram title.";
      input String grid = "simple" "Sets the grid for the plot i.e simple, detailed, none.";
      input Boolean logX = false "Determines whether or not the horizontal axis is logarithmically scaled.";
      input Boolean logY = false "Determines whether or not the vertical axis is logarithmically scaled.";
      input String xLabel = "time" "This text will be used as the horizontal label in the diagram.";
      input String yLabel = "" "This text will be used as the left vertical label in the diagram.";
      input Real xRange[2] = {0.0, 0.0} "Determines the horizontal interval that is visible in the diagram. {0,0} will select a suitable range.";
      input Real yRange[2] = {0.0, 0.0} "Determines the left vertical interval that is visible in the diagram. {0,0} will select a suitable range.";
      input Real curveWidth = 1.0 "Sets the width of the curve.";
      input Integer curveStyle = 1 "Sets the style of the curve. SolidLine=1, DashLine=2, DotLine=3, DashDotLine=4, DashDotDotLine=5, Sticks=6, Steps=7.";
      input String legendPosition = "top" "Sets the POSITION of the legend i.e left, right, top, bottom, none.";
      input String footer = "" "This text will be used as the diagram footer.";
      input Boolean autoScale = true "Use auto scale while plotting.";
      input Boolean forceOMPlot = false "if true launches OMPlot and doesn't call callback function even if it is defined.";
      input String yAxis = "L" "Sets the variable to be plotted on the left (L) or right (R) y-axis.";
      input String yLabelRight = "" "This text will be used as the right vertical label in the diagram.";
      input Real yRangeRight[2] = {0.0, 0.0} "Determines the right vertical interval that is visible in the diagram. {0,0} will select a suitable range.";
      output Boolean success "Returns true on success";
    end plotAll;

### plotParametric

Displays a parametric plot with two variables using OMPlot.

    function plotParametric
      input VariableName xVariable;
      input VariableName yVariable;
      input Boolean externalWindow = false "Opens the plot in a new plot window";
      input String fileName = "<default>" "The filename containing the variables. <default> will read the last simulation result";
      input String title = "" "This text will be used as the diagram title.";
      input String grid = "simple" "Sets the grid for the plot i.e simple, detailed, none.";
      input Boolean logX = false "Determines whether or not the horizontal axis is logarithmically scaled.";
      input Boolean logY = false "Determines whether or not the vertical axis is logarithmically scaled.";
      input String xLabel = "" "This text will be used as the horizontal label in the diagram.";
      input String yLabel = "" "This text will be used as the left vertical label in the diagram.";
      input Real xRange[2] = {0.0, 0.0} "Determines the horizontal interval that is visible in the diagram. {0,0} will select a suitable range.";
      input Real yRange[2] = {0.0, 0.0} "Determines the left vertical interval that is visible in the diagram. {0,0} will select a suitable range.";
      input Real curveWidth = 1.0 "Sets the width of the curve.";
      input Integer curveStyle = 1 "Sets the style of the curve. SolidLine=1, DashLine=2, DotLine=3, DashDotLine=4, DashDotDotLine=5, Sticks=6, Steps=7.";
      input String legendPosition = "top" "Sets the POSITION of the legend i.e left, right, top, bottom, none.";
      input String footer = "" "This text will be used as the diagram footer.";
      input Boolean autoScale = true "Use auto scale while plotting.";
      input Boolean forceOMPlot = false "if true launches OMPlot and doesn't call callback function even if it is defined.";
      input String yAxis = "L" "Sets the variable to be plotted on the left (L) or right (R) y-axis.";
      input String yLabelRight = "" "This text will be used as the right vertical label in the diagram.";
      input Real yRangeRight[2] = {0.0, 0.0} "Determines the right vertical interval that is visible in the diagram. {0,0} will select a suitable range.";
      output Boolean success "Returns true on success";
    end plotParametric;

### qualifyPath

Returns the fully qualified path for the given path in a class.

    function qualifyPath
      input TypeName classPath;
      input TypeName path;
      output TypeName qualifiedPath;
    end qualifyPath;

### readFile

Returns the contents of a file.

    impure function readFile
      input String fileName;
      output String contents;
    end readFile;

### readSimulationResult

Reads a result file, returning a matrix corresponding to the variables and size given.

    function readSimulationResult
      input String filename;
      input VariableNames variables "e.g. {a.b, a[1].b[3].c}, or a single VariableName";
      input Integer size = 0 "0=read any size... If the size is not the same as the result-file, this function fails";
      output Real result[:, :];
    end readSimulationResult;

### readSimulationResultSize

Returns the number of intervals that are present in the output file.

    function readSimulationResultSize
      input String fileName;
      output Integer sz;
    end readSimulationResultSize;

### readSimulationResultVars

Returns the variables in a simulation results file.

    function readSimulationResultVars
      input String fileName;
      input Boolean readParameters = true;
      input Boolean openmodelicaStyle = false;
      output String[:] vars;
    end readSimulationResultVars;

### realpath

Get full path name of file or directory name

    function realpath
      input String name "Absolute or relative file or directory name";
      output String fullName "Full path of 'name'";
    end realpath;

### reduceTerms

Calls buildModel with the --reduceTerms flag enabled.

    function reduceTerms
      input TypeName className "the class that should be built";
      input Real startTime = 0.0 "the start time of the simulation. <default> = 0.0";
      input Real stopTime = 1.0 "the stop time of the simulation. <default> = 1.0";
      input Integer numberOfIntervals = 500 "number of intervals in the result file. <default> = 500";
      input Real tolerance = 1e-6 "tolerance used by the integration method. <default> = 1e-6";
      input String method = "dassl" "integration method used for simulation. <default> = dassl";
      input String fileNamePrefix = "" "fileNamePrefix. <default> = \"\"";
      input String options = "" "options. <default> = \"\"";
      input String outputFormat = "mat" "Format for the result file. <default> = \"mat\"";
      input String variableFilter = ".*" "Only variables fully matching the regexp are stored in the result file. <default> = \".*\"";
      input String cflags = "" "cflags. <default> = \"\"";
      input String simflags = "" "simflags. <default> = \"\"";
      input String labelstoCancel = "";
      output String[2] buildModelResults;
    end reduceTerms;

### refactorClass

Updates old graphical annotations to Modelica standard ones in a class.

    function refactorClass
      input TypeName className;
      output String result;
    end refactorClass;

### refactorDiagramAnnotation

Updates an old Diagram annotation to a Modelica standard one in the given class.

    function refactorDiagramAnnotation
      input TypeName className;
      output Expression result;
    end refactorDiagramAnnotation;

### refactorIconAnnotation

Updates an old Icon annotation to a Modelica standard one in the given class.

    function refactorIconAnnotation
      input TypeName className;
      output Expression result;
    end refactorIconAnnotation;

### regex

Matches a string with a regular expression and returns the result.

    function regex
      input String str;
      input String re;
      input Integer maxMatches = 1 "The maximum number of matches that will be returned";
      input Boolean extended = true "Use POSIX extended or regular syntax";
      input Boolean caseInsensitive = false;
      output Integer numMatches "-1 is an error, 0 means no match, else returns a number 1..maxMatches";
      output String matchedSubstrings[maxMatches] "unmatched strings are returned as empty";
    end regex;

### regexBool

Returns true if the string matches the regular expression.

    function regexBool
      input String str;
      input String re;
      input Boolean extended = true "Use POSIX extended or regular syntax";
      input Boolean caseInsensitive = false;
      output Boolean matches;
    end regexBool;

### regularFileExists

Returns whether the given file exists or not.

    function regularFileExists
      input String fileName;
      output Boolean exists;
    end regularFileExists;

### releaseModelInstanceReference

Releases a handle returned by getModelInstanceReference or getModelInstanceAnnotationReference. Returns true on success.

    function releaseModelInstanceReference
      input Integer handle;
      output Boolean success;
    end releaseModelInstanceReference;

### reloadClass

Reloads the file associated with the given loaded class.

    function reloadClass
      input TypeName name;
      input String encoding = "UTF-8";
      output Boolean success;
    end reloadClass;

### remove

Removes a file or directory.

    function remove
      input String path;
      output Boolean success "Returns true on success.";
    end remove;

### removeComponentModifiers

Removes the component modifiers.

    function removeComponentModifiers
      input TypeName class_;
      input String componentName;
      input Boolean keepRedeclares = false;
      output Boolean success;
    end removeComponentModifiers;

### removeElementModifiers

Removes the element (component or short class) modifiers.

    function removeElementModifiers
      input TypeName className;
      input String componentName;
      input Boolean keepRedeclares = false;
      output Boolean success;
    end removeElementModifiers;

### removeExtendsModifiers

Removes the extends modifiers of a class.

    function removeExtendsModifiers
      input TypeName className;
      input TypeName baseClassName;
      input Boolean keepRedeclares = false;
      output Boolean success;
    end removeExtendsModifiers;

### renameClass

Renames a class and updates references to it.

    function renameClass
      input TypeName oldName "The path of the class to rename.";
      input TypeName newName "The new non-qualified name of the class.";
      output TypeName[:] result;
    end renameClass;

### renameComponent

Renames a component and updates references to it.

    function renameComponent
      input TypeName classPath;
      input VariableName oldName;
      input VariableName newName;
      output TypeName[:] result;
    end renameComponent;

### renameComponentInClass

Renames a component in a class.

    function renameComponentInClass
      input TypeName classPath;
      input VariableName oldName;
      input VariableName newName;
      output TypeName[:] result;
    end renameComponentInClass;

### reopenStandardStream

Changes which file is associated with a standard stream.

    function reopenStandardStream
      input StandardStream _stream;
      input String filename;
      output Boolean success;
    end reopenStandardStream;

### restoreAST

Restores an AST that was previously stored with storeAST.

    function restoreAST
      input Integer id;
      output Boolean success;
    end restoreAST;

### reverseLookup

    function reverseLookup
      input TypeName name;
      input TypeName scope = $Code(AllLoadedClasses);
      input Boolean exactMatch = true;
      input Boolean prettyPrint = false;
      output String matches;
    end reverseLookup;

### rewriteBlockCall

Function for property modeling, transforms block calls into instantiations for a loaded model

    function rewriteBlockCall
      input TypeName className;
      input TypeName inDefs;
      output Boolean success;
    end rewriteBlockCall;

### runConversionScript

Runs a conversion script on a selected package.

    function runConversionScript
      input TypeName packageToConvert;
      input String scriptFile;
      output Boolean success;
    end runConversionScript;

### runScript

Runs the mos-script specified by the filename.

    impure function runScript
      input String fileName "*.mos";
      output String result;
    end runScript;

### runScriptParallel

Runs multiple scripts in parallel.

    function runScriptParallel
      input String scripts[:];
      input Integer numThreads = numProcessors();
      input Boolean useThreads = false;
      output Boolean results[:];
    end runScriptParallel;

### save

Saves a class to the file(s) it's defined in.

    function save
      input TypeName className;
      output Boolean success;
    end save;

### saveAll

Saves the entire loaded AST to file.

    function saveAll
      input String fileName;
      output Boolean success;
    end saveAll;

### saveModel

Saves a loaded model to the given file.

    function saveModel
      input String fileName;
      input TypeName className;
      output Boolean success;
    end saveModel;

### saveTotalModel

Saves a model and dependencies to a single file.

    function saveTotalModel
      input String fileName;
      input TypeName className;
      input Boolean stripAnnotations = false;
      input Boolean stripComments = false;
      input Boolean obfuscate = false;
      output Boolean success;
    end saveTotalModel;

### saveTotalModelDebug

Saves a model and dependencies to a single file using a heuristic.

    function saveTotalModelDebug
      input String filename;
      input TypeName className;
      input Boolean stripAnnotations = false;
      input Boolean stripComments = false;
      input Boolean obfuscate = false;
      output Boolean success;
    end saveTotalModelDebug;

### saveTotalSCode

Alias for saveTotalModel

### searchClassNames

Searches for a string in the loaded classes.

    function searchClassNames
      input String searchText;
      input Boolean findInText = false;
      output TypeName classNames[:];
    end searchClassNames;

### setAnnotationVersion

Sets the annotation version.

    function setAnnotationVersion
      input String annotationVersion;
      output Boolean success;
    end setAnnotationVersion;

### setCFlags

Sets the C compiler flags (CFLAGS) used for simulation code.

    function setCFlags
      input String inString;
      output Boolean success;
    end setCFlags;

### setCXXCompiler

Sets the C++ compiler (CXX) used for simulation code.

    function setCXXCompiler
      input String compiler;
      output Boolean success;
    end setCXXCompiler;

### setCheapMatchingAlgorithm

Sets the cheap matching algorithm.

    function setCheapMatchingAlgorithm
      input Integer matchingAlgorithm;
      output Boolean success;
    end setCheapMatchingAlgorithm;

### setClassComment

Sets a class comment.

    function setClassComment
      input TypeName class_;
      input String filename;
      output Boolean success;
    end setClassComment;

### setCommandLineOptions

Sets command line options for the compiler.

    function setCommandLineOptions
      input String options;
      output Boolean success;
    end setCommandLineOptions;

### setCompiler

Sets the C compiler (CC) used for simulation code.

    function setCompiler
      input String compiler;
      output Boolean success;
    end setCompiler;

### setCompilerFlags

Same as setCFlags.

    function setCompilerFlags
      input String compilerFlags;
      output Boolean success;
    end setCompilerFlags;

### setComponentComment

Sets the comment on a component.

    function setComponentComment
      input TypeName className;
      input TypeName componentName;
      input String comment;
      output Boolean success;
    end setComponentComment;

### setComponentDimensions

Sets the array dimensions of a component.

    function setComponentDimensions
      input TypeName className;
      input TypeName componentName;
      input Expression dimensions;
      output Boolean success;
    end setComponentDimensions;

### setComponentModifierValue

Deprecated; alias for setElementModifierValue.

### setComponentProperties

Sets the properties of a component in a class.

    function setComponentProperties
      input TypeName className;
      input TypeName componentName;
      input Boolean[:] prefixArray;
      input String[1] variability;
      input Boolean[2] innerOuter;
      input String[1] direction;
      output Boolean success;
    end setComponentProperties;

### setConnectionComment

Sets the description string on a connect equation in the given class.

    function setConnectionComment
      input TypeName className;
      input VariableName connector1;
      input VariableName connector2;
      input String comment;
      output Boolean success;
    end setConnectionComment;

### setDebugFlags

Sets compiler debug flags.

    function setDebugFlags
      input String debugFlags;
      output Boolean success;
    end setDebugFlags;

### setDefaultOpenCLDevice

Sets the default OpenCL device to be used.

    function setDefaultOpenCLDevice
      input Integer defdevid;
      output Boolean success;
    end setDefaultOpenCLDevice;

### setDocumentationAnnotation

Sets the Documentation annotation in a class.

    function setDocumentationAnnotation
      input TypeName class_;
      input String info = "";
      input String revisions = "";
      output Boolean bool;
    end setDocumentationAnnotation;

### setElementAnnotation

Sets the annotation on a component or class element.

    function setElementAnnotation
      input TypeName elementName;
      input ExpressionOrModification annotationMod;
      output Boolean success;
    end setElementAnnotation;

### setElementModifierValue

Sets a modifier on an element in a class definition.

    function setElementModifierValue
      input TypeName className;
      input TypeName elementName;
      input ExpressionOrModification modifier;
      output Boolean success;
    end setElementModifierValue;

### setElementType

Changes the type of a component or short class element.

    function setElementType
      input TypeName elementName;
      input VariableName typeName;
      output Boolean success;
    end setElementType;

### setEnvironmentVar

Sets the value of the given environment variable.

    function setEnvironmentVar
      input String var;
      input String value;
      output Boolean success;
    end setEnvironmentVar;

### setExtendsModifier

Sets a modifier on an extends clause in a class definition.

    function setExtendsModifier
      input TypeName className;
      input TypeName extendsName;
      input ExpressionOrModification modifier;
      output Boolean success;
    end setExtendsModifier;

### setExtendsModifierValue

Sets a modifier on an element in an extends clause in a class.

    function setExtendsModifierValue
      input TypeName className;
      input TypeName extendsName;
      input TypeName elementName;
      input ExpressionOrModification modifier;
      output Boolean success;
    end setExtendsModifierValue;

### setIndexReductionMethod

Sets the index reduction method.

    function setIndexReductionMethod
      input String method;
      output Boolean success;
    end setIndexReductionMethod;

### setInitXmlStartValue

Sets the start value for a variable in an initialization file.

    function setInitXmlStartValue
      input String fileName;
      input String variableName;
      input String startValue;
      input String outputFile;
      output Boolean success = false;
    end setInitXmlStartValue;

### setInstallationDirectoryPath

Sets the OPENMODELICAHOME environment variable.

    function setInstallationDirectoryPath
      input String installationDirectoryPath;
      output Boolean success;
    end setInstallationDirectoryPath;

### setLanguageStandard

Sets the Modelica Language Standard.

    function setLanguageStandard
      input String inVersion;
      output Boolean success;
    end setLanguageStandard;

### setLinker

Sets the linker (LINK) used for simulation code.

    function setLinker
      input String linker;
      output Boolean success;
    end setLinker;

### setLinkerFlags

Sets the linker flags (LDFLAGS) used for simulation code.

    function setLinkerFlags
      input String linkerFlags;
      output Boolean success;
    end setLinkerFlags;

### setMatchingAlgorithm

Sets the matching algorithm.

    function setMatchingAlgorithm
      input String matchingAlgorithm;
      output Boolean success;
    end setMatchingAlgorithm;

### setModelicaPath

Sets the Modelica library path.

    function setModelicaPath
      input String modelicaPath;
      output Boolean success;
    end setModelicaPath;

### setNoSimplify

Sets the noSimplify flag.

    function setNoSimplify
      input Boolean noSimplify;
      output Boolean success;
    end setNoSimplify;

### setOrderConnections

Sets the orderConnection flag.

    function setOrderConnections
      input Boolean orderConnections;
      output Boolean success;
    end setOrderConnections;

### setParameterValue

Sets the binding equation of a component.

    function setParameterValue
      input TypeName className;
      input TypeName variableName;
      input Expression value;
      output Boolean success;
    end setParameterValue;

### setPostOptModules

Sets post optimization modules for the backend.

    function setPostOptModules
      input String modules;
      output Boolean success;
    end setPostOptModules;

### setPreOptModules

Sets pre optimization modules for the backend.

    function setPreOptModules
      input String modules;
      output Boolean success;
    end setPreOptModules;

### setShowAnnotations

Sets the value of the --showAnnotations flag.

    function setShowAnnotations
      input Boolean show;
      output Boolean success;
    end setShowAnnotations;

### setSourceFile

Sets the filename for a class.

    function setSourceFile
      input TypeName class_;
      input String filename;
      output Boolean success;
    end setSourceFile;

### setTearingMethod

Sets the tearing method used by the backend.

    function setTearingMethod
      input String tearingMethod;
      output Boolean success;
    end setTearingMethod;

### setTempDirectoryPath

Sets the current user temporary directory location.

    function setTempDirectoryPath
      input String tempDirectoryPath;
      output Boolean success;
    end setTempDirectoryPath;

### setVectorizationLimit

Sets the vectorization limit used by the old frontend.

    function setVectorizationLimit
      input Integer vectorizationLimit;
      output Boolean success;
    end setVectorizationLimit;

### simulate

Simulates a model.

    function simulate
      input TypeName className "the class that should simulated";
      input Real startTime = "<default>" "the start time of the simulation. <default> = 0.0";
      input Real stopTime = 1.0 "the stop time of the simulation. <default> = 1.0";
      input Integer numberOfIntervals = 500 "number of intervals in the result file. <default> = 500";
      input Real tolerance = 1e-6 "tolerance used by the integration method. <default> = 1e-6";
      input String method = "<default>" "integration method used for simulation. <default> = dassl";
      input String fileNamePrefix = "<default>" "fileNamePrefix. <default> = \"\"";
      input String options = "<default>" "options. <default> = \"\"";
      input String outputFormat = "mat" "Format for the result file. <default> = \"mat\"";
      input String variableFilter = ".*" "Only variables fully matching the regexp are stored in the result file. <default> = \".*\"";
      input String cflags = "<default>" "cflags. <default> = \"\"";
      input String simflags = "<default>" "simflags. <default> = \"\"";
      input String resimulateExecutable = "" "If non-empty, skip translation and build and simulate this already-built executable directly.";
      output SimulationResult simulationResults;
      record SimulationResult
        String resultFile;
        String simulationOptions;
        String messages;
        Real timeFrontend;
        Real timeBackend;
        Real timeSimCode;
        Real timeTemplates;
        Real timeCompile;
        Real timeSimulation;
        Real timeTotal;
      end SimulationResult;
    end simulate;

### solveLinearSystem

Solve A*X = B using dgesv.

    function solveLinearSystem
      input Real[size(B, 1), size(B, 1)] A;
      input Real[:] B;
      output Real[size(B, 1)] X;
      output Integer info;
    end solveLinearSystem;

### sortStrings

Sorts a string array in ascending order.

    function sortStrings
      input String arr[:];
      output String sorted[:];
    end sortStrings;

### stat

Returns status for a file.

    impure function stat
      input String fileName;
      output Boolean success;
      output Real fileSize;
      output Real mtime;
    end stat;

### storeAST

Stores the AST and returns an id that can be used to restore it with restoreAST.

    function storeAST
      output Integer id;
    end storeAST;

### stringReplace

Replaces all occurrences of a token with another token in a string.

    function stringReplace
      input String str;
      input String source;
      input String target;
      output String res;
    end stringReplace;

### stringSplit

Splits a string at the places given by the character

    function stringSplit
      input String string;
      input String token "single character only";
      output String[:] strings;
    end stringSplit;

### stringTypeName

Constructs a TypeName from a string.

    function stringTypeName
      input String str;
      output TypeName cl;
    end stringTypeName;

### stringVariableName

Constructs a VariableName from a string.

    function stringVariableName
      input String str;
      output VariableName cl;
    end stringVariableName;

### strtok

Splits a string at the places given by the token.

    function strtok
      input String string;
      input String token;
      output String[:] strings;
    end strtok;

### system

Similar to system(3). Executes the given command in the system shell.

    impure function system
      input String callStr "String to call: sh -c $callStr";
      input String outputFile = "" "The output is redirected to this file (unless already done by callStr)";
      output Integer retval "Return value of the system call; usually 0 on success";
    end system;

### system_parallel

Similar to system(3). Executes the given commands in the system shell, in parallel if omc was compiled using OpenMP.

    impure function system_parallel
      input String callStr[:] "String to call: sh -c $callStr";
      input Integer numThreads = numProcessors();
      output Integer retval[:] "Return value of the system call; usually 0 on success";
    end system_parallel;

### testsuiteFriendlyName

Converts a filename to a testsuite friendly one.

    function testsuiteFriendlyName
      input String path;
      output String fixed;
    end testsuiteFriendlyName;

### threadWorkFailed

Exits the current thread with a failure.

### translateGraphics

Translates old graphical annotations to Modelica standard annotations.

    function translateGraphics
      input TypeName className;
      output String result;
    end translateGraphics;

### translateModel

Translates a modelica model into C code without building it.

    function translateModel
      input TypeName className "the class that should be built";
      input Real startTime = "<default>" "the start time of the simulation. <default> = 0.0";
      input Real stopTime = 1.0 "the stop time of the simulation. <default> = 1.0";
      input Integer numberOfIntervals = 500 "number of intervals in the result file. <default> = 500";
      input Real tolerance = 1e-6 "tolerance used by the integration method. <default> = 1e-6";
      input String method = "<default>" "integration method used for simulation. <default> = dassl";
      input String fileNamePrefix = "<default>" "fileNamePrefix. <default> = \"\"";
      input String options = "<default>" "options. <default> = \"\"";
      input String outputFormat = "mat" "Format for the result file. <default> = \"mat\"";
      input String variableFilter = ".*" "Only variables fully matching the regexp are stored in the result file. <default> = \".*\"";
      input String cflags = "<default>" "cflags. <default> = \"\"";
      input String simflags = "<default>" "simflags. <default> = \"\"";
      output Boolean success;
    end translateModel;

### translateModelFMU

Translates a model into C code for a FMU without building it.

    function translateModelFMU
      input TypeName className "the class that should translated";
      input String version = "2.0" "FMU version, 1.0 or 2.0.";
      input String fmuType = "me" "FMU type, me (model exchange), cs (co-simulation), me_cs (both model exchange and co-simulation)";
      input String fileNamePrefix = "<default>" "fileNamePrefix. <default> = \"className\"";
      input String platforms[:] = {"static"} "The list of platforms to generate code for.
                                                \"dynamic\"=current platform, dynamically link the runtime.
                                                \"static\"=current platform, statically link everything.
                                                \"<cpu>-<vendor>-<os>\", host tripple, e.g. \"x86_64-linux-gnu\" or \"x86_64-w64-mingw32\".
                                                \"<cpu>-<vendor>-<os> docker run ghcr.io/openmodelica/crossbuild:v1.27.0\" host triple with OpenModelica supplied Docker image, e.g. \"x86_64-linux-gnu docker run ghcr.io/openmodelica/crossbuild:v1.27.0\".
                                                \"<cpu>-<vendor>-<os> docker run <image>\" host triple with Docker image, e.g. \"x86_64-linux-gnu docker run --pull=never multiarch/crossbuild\"";
      input Boolean includeResources = false "include Modelica based resources via loadResource or not";
      output Boolean success;
    end translateModelFMU;

### translateResidualsDAE

    function translateResidualsDAE
      input TypeName className;
      input String fileNamePrefix = "<default>";
      output Boolean success;
    end translateResidualsDAE;

### typeNameString

Converts a TypeName to a string.

    function typeNameString
      input TypeName cl;
      output String out;
    end typeNameString;

### typeNameStrings

Converts a TypeName to a list of strings.

    function typeNameStrings
      input TypeName cl;
      output String out[:];
    end typeNameStrings;

### typeOf

Returns the type of an interactive variable.

    function typeOf
      input VariableName variableName;
      output String result;
    end typeOf;

### unloadOMSimulator

Frees the OMSimulator instances.

    function unloadOMSimulator
      output Integer status;
    end unloadOMSimulator;

### updateComponent

Updates an existing component.

    function updateComponent
      input TypeName componentName;
      input TypeName typeName;
      input TypeName classPath;
      input Expression binding = $Code(());
      input ExpressionOrModification modification = $Code();
      input Expression comment = $Code(());
      input Expression annotate = $Code(());
      output Boolean success;
    end updateComponent;

### updateConnection

Updates the connection annotation in the class.

    function updateConnection
      input TypeName className;
      input String from;
      input String to;
      input ExpressionOrModification annotate;
      output Boolean result;
    end updateConnection;

### updateConnectionAnnotation

Updates the connection annotation in the class.

    function updateConnectionAnnotation
      input TypeName className;
      input String from;
      input String to;
      input String annotate;
      output Boolean result;
    end updateConnectionAnnotation;

### updateConnectionNames

Updates the connection connector names in the class.

    function updateConnectionNames
      input TypeName className;
      input String from;
      input String to;
      input String fromNew;
      input String toNew;
      output Boolean result;
    end updateConnectionNames;

### updateEquation

Replaces an equation with another equation in a class.

    function updateEquation
      input TypeName className "The name of the class";
      input String oldEq "The equation to replace";
      input String newEq "The equation to replace with";
      input Boolean matchAll = false "Update all matching equations if true, otherwise only the first matching";
      input Boolean matchShallow = true "Ignore nested equations if true, otherwise match the equations recursively";
      input Boolean matchDescription = false "Match description strings/annotations if true, otherwise ignore them";
      input Boolean mergeDescription = false "Keep description string/annotations from the old equation if true";
      output Boolean success "true if any equation was updated, otherwise false";
    end updateEquation;

### updateInitialState

Updates an initial state in a class.

    function updateInitialState
      input TypeName cl;
      input String state;
      input ExpressionOrModification annotate;
      output Boolean bool;
    end updateInitialState;

### updatePackageIndex

Updates the package index.

    function updatePackageIndex
      output Boolean result;
    end updatePackageIndex;

### updateTransition

Updates a transition in a class.

    function updateTransition
      input TypeName cl;
      input String from;
      input String to;
      input String oldCondition;
      input Boolean oldImmediate;
      input Boolean oldReset;
      input Boolean oldSynchronize;
      input Integer oldPriority;
      input String newCondition;
      input Boolean newImmediate;
      input Boolean newReset;
      input Boolean newSynchronize;
      input Integer newPriority;
      input ExpressionOrModification annotate;
      output Boolean bool;
    end updateTransition;

### upgradeInstalledPackages

Upgrades installed packages.

    function upgradeInstalledPackages
      input Boolean installNewestVersions = true;
      output Boolean result;
    end upgradeInstalledPackages;

### uriToFilename

Converts a URI to a filename.

    function uriToFilename
      input String uri;
      output String filename = "";
    end uriToFilename;

### val

Return the value of a variable at a given time in the simulation results

    function val
      input VariableName var;
      input Real timePoint = 0.0;
      input String fileName = "<default>" "The contents of the currentSimulationResult variable";
      output Real valAtTime;
    end val;

### writeFile

Writes data to a file.

    impure function writeFile
      input String fileName;
      input String data;
      input Boolean append = false;
      output Boolean success;
    end writeFile;

## Simulation Parameter Sweep

Following example shows how to update the parameters and re-run the simulation without compiling the model.

    loadFile("BouncingBall.mo");
    getErrorString();
    // build the model once
    buildModel(BouncingBall);
    getErrorString();
    for i in 1:3 loop
      // We update the parameter e start value from 0.7 to "0.7 + i".
      value := 0.7 + i;
      // call the generated simulation code to produce a result file BouncingBall%i%_res.mat
      system("./BouncingBall -override=e="+String(value)+" -r=BouncingBall" + String(i) + "_res.mat");
      getErrorString();
    end for;

We used the BouncingBall.mo in the example above. The above example produces three result files each containing different start value for e i.e., 1.7, 2.7, 3.7.

## Examples

The following is an interactive session with the OpenModelica environment including some of the abovementioned commands and examples. Run the examples below using OMShell or OMNotebook.

We type in a very small model in the command window:

    model Test "Testing OpenModelica Scripts"
      Real x, y;
    equation
      x = 5.0+time; y = 6.0;
    end Test;

We give the command to flatten a model:

    >>> instantiateModel(Test)
    class Test "Testing OpenModelica Scripts"
      Real x;
      Real y;
    equation
      x = 5.0 + time;
      y = 6.0;
    end Test;

A range expression is typed in:

    >>> a:=1:10
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

It is multiplied by 2:

    >>> a*2
    {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}

The variables are cleared:

    >>> clearVariables()
    true

We print the loaded class test from its internal representation:

    >>> list(Test)
    model Test "Testing OpenModelica Scripts"
      Real x, y;
    equation
      x = 5.0 + time;
      y = 6.0;
    end Test;

We get the name and other properties of a class:

    >>> getClassNames()
    {Test, ProfilingTest}
    >>> getClassComment(Test)
    "Testing OpenModelica Scripts"
    >>> isPartial(Test)
    false
    >>> isPackage(Test)
    false
    >>> isModel(Test)
    true
    >>> checkModel(Test)
    "Check of Test completed successfully.
    Class Test has 2 equation(s) and 2 variable(s).
    2 of these are trivial equation(s)."

The common combination of a simulation followed by getting a value and doing a plot:

    >>> simulate(Test, stopTime=3.0)
    record SimulationResult
        resultFile = "«DOCHOME»/Test_res.mat",
        simulationOptions = "startTime = 0.0, stopTime = 3.0, numberOfIntervals = 500, tolerance = 1e-6, method = 'dassl', fileNamePrefix = 'Test', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''",
        messages = "LOG_SUCCESS       | info    | The initialization finished successfully without homotopy method.
    LOG_SUCCESS       | info    | The simulation finished successfully.
    LOG_STDOUT        | info    | Time measurements are stored in Test_prof.html (human-readable) and Test_prof.xml (for XSL transforms or more details)
    ",
        timeFrontend = 0.001726454,
        timeBackend = 0.002095599,
        timeSimCode = 6.831410000000001e-4,
        timeTemplates = 0.0035285980000000004,
        timeCompile = 0.72620663,
        timeSimulation = 0.042590801000000005,
        timeTotal = 0.776977478
    end SimulationResult;
    >>> val(x , 2.0)
    7.0

Figure 129 Plot generated by OpenModelica+gnuplot

    >>> plotAll()

Figure 130 Plot generated by OpenModelica+gnuplot

### Interactive Function Calls, Reading, and Writing

We enter an assignment of a vector expression, created by the range construction expression 1:12, to be stored in the variable x. The type and the value of the expression is returned.

    >>> x := 1:12
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

The function bubblesort is called to sort this vector in descending order. The sorted result is returned together with its type. Note that the result vector is of type Real[:], instantiated as Real[12], since this is the declared type of the function result. The input Integer vector was automatically converted to a Real vector according to the Modelica type coercion rules.

    >>> loadFile(getInstallationDirectoryPath() + "/share/doc/omc/testmodels/bubblesort.mo")
    true
    >>> bubblesort(x)
    {12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0}

Now we want to try another small application, a simplex algorithm for optimization. First read in a small matrix containing coefficients that define a simplex problem to be solved:

    >>> a := {
      {-1,-1,-1, 0, 0, 0, 0, 0, 0},
      {-1, 1, 0, 1, 0, 0, 0, 0, 5},
      { 1, 4, 0, 0, 1, 0, 0, 0, 45},
      { 2, 1, 0, 0, 0, 1, 0, 0, 27},
      { 3,-4, 0, 0, 0, 0, 1, 0, 24},
      { 0, 0, 1, 0, 0, 0, 0, 1, 4}
    }
    {{-1, -1, -1, 0, 0, 0, 0, 0, 0}, {-1, 1, 0, 1, 0, 0, 0, 0, 5}, {1, 4, 0, 0, 1, 0, 0, 0, 45}, {2, 1, 0, 0, 0, 1, 0, 0, 27}, {3, -4, 0, 0, 0, 0, 1, 0, 24}, {0, 0, 1, 0, 0, 0, 0, 1, 4}}

    function pivot1
      input Real b[:,:];
      input Integer p;
      input Integer q;
      output Real a[size(b,1),size(b,2)];
    protected
      Integer M;
      Integer N;
    algorithm
      a := b;
      N := size(a,1)-1;
      M := size(a,2)-1;
      for j in 1:N loop
        for k in 1:M loop
          if j<>p and k<>q then
           a[j,k] := a[j,k]-0.3*j;
          end if;
        end for;
      end for;
      a[p,q] := 0.05;
    end pivot1;

    function misc_simplex1
      input Real matr[:,:];
      output Real x[size(matr,2)-1];
      output Real z;
      output  Integer q;
      output  Integer p;
    protected
      Real a[size(matr,1),size(matr,2)];
      Integer M;
      Integer N;
    algorithm
      N := size(a,1)-1;
      M := size(a,2)-1;
      a := matr;
      p:=0;q:=0;
      a := pivot1(a,p+1,q+1);
      while not (q==(M) or p==(N)) loop
        q := 0;
        while not (q == (M) or a[0+1,q+1]>1) loop
          q:=q+1;
        end while;
        p := 0;
        while not (p == (N) or a[p+1,q+1]>0.1) loop
          p:=p+1;
        end while;
        if (q < M) and (p < N) and(p>0) and (q>0) then
          a := pivot1(a,p,q);
        end if;
      if(p<=0) and (q<=0) then
         a := pivot1(a,p+1,q+1);
      end if;
      if(p<=0) and (q>0) then
         a := pivot1(a,p+1,q);
      end if;
      if(p>0) and (q<=0) then
         a := pivot1(a,p,q+1);
      end if;
      end while;
      z := a[1,M];
      x := {a[1,i] for i in 1:size(x,1)};
      for i in 1:10 loop
       for j in 1:M loop
        x[j] := x[j]+x[j]*0.01;
       end for;
      end for;
    end misc_simplex1;

Then call the simplex algorithm implemented as the Modelica function simplex1. This function returns four results, which are represented as a tuple of four return values:

    >>> misc_simplex1(a)
    ({0.05523110627056022, -1.1046221254112045, -1.1046221254112045, 0.0, 0.0, 0.0, 0.0, 0.0}, 0.0, 8, 1)