【OpenModelica】2 交互式使用OpenModelica-下篇

2 交互式使用OpenModelica-下篇


一、 Trying the system and cd Commands

也可以通过系统实用功能给出操作系统命令。命令提供为一个string参数。下面的示例显示了应用于UNIX命令cat的系统实用程序,在这里从命令行运行omc时,将文件bubblesort.mo的内容输出到输出流。
在这里插入图片描述

注意: 当运行基于CORBA的客户端,而不是进入可见的GUI窗口。因此,上述cat命令发出的文本将不会返回,这就是为什么它被重定向到另一个文件。
读取文件内容的更好方法是readFile命令:
在这里插入图片描述
系统命令只返回成功代码
在这里插入图片描述
另一个内置命令是cd,更改当前目录命令。返回生成的当前目录为一个字符串。

在这里插入图片描述

二、 Modelica Library and DCMotor Model

我们加载一个模型,这里是整个Modelica标准库,这也可以通过File-> load Mod-
elica库菜单项:
在这里插入图片描述

我们还加载一个包含dcmotor模型的文件:
在这里插入图片描述

注: dcmtor要求3.2.2版的Modelica软件包。使用Modelica 3.2.3代替,其中指出它是完全兼容的,无需转换脚本。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(一直到P12都是代码)
注:
通知: dcmtor请求了3.2.2版的软件包Modelica。使用Modelica 3.2.3代替,其中指出
它是完全兼容的,无需转换脚本。
我们绘制部分模拟结果如图:
在这里插入图片描述

三、The val() function

val(variableName,time) scription函数可用于检索仿真结果的内插值变量在模拟时间的某个点,请参阅下面的BouncingBall模拟中的usagc。
#四、 BouncingBall and Switch Models
我们加载并模拟包含何时方程和if表达式的弹跳球示例 (为了更好的可读性,Modelica关键字已经手动粗体处理):
在这里插入图片描述
我们不是仅仅给出一个模拟和绘图命令,而是执行一个runScript命令。mos (Modelica脚本)
包含这些命令的sim_BouncingBall.mos文件:
在这里插入图片描述

在这里插入图片描述
使用val(variableName,time) 函数检索时间 = 0时的itot值:
在这里插入图片描述
在这里插入图片描述
我们注意到,变量open从false (0) 切换到true (1),导致itot从1.0增加到2.0。

四、Clear All Models

现在,首先清除所有加载的库和模式
在这里插入图片描述
列出加载的模型:当前是没有的
在这里插入图片描述

五、VanDerPol Model and Parametric Plot

我们加载另一个模型,VanDerPol模型 (或通过菜单文件-> 加载模型):
在这里插入图片描述
仿真:
在这里插入图片描述
跑图:
在这里插入图片描述
将代码实例化为VanDerPol模型的平面形式:

在这里插入图片描述
在这里插入图片描述

六、Using Chinese or Japanese Characters

可以在引号 (单引号) 标识符中使用日语、中文和其他类型的UniCode字符,例如,下图中右侧的变量名称:在这里插入图片描述

七、Scripting with For-Loops, While-Loops, and If-Statements

一个简单的求和整数循环 (使用多行输入而不评估每一行到OMShell需要复制-从另一个文档粘贴为一个操作):
在这里插入图片描述
嵌套循环求和实数和整数:
在这里插入图片描述
通过将两个 (或更多) 变量或赋值语句以分号分隔,以变量结尾,可以观察多个变量值:

在这里插入图片描述
一个具有向量遍历和字符串元素连接的for循环:

在这里插入图片描述
正常的while循环与10个 “abc” 字符串的连接:
在这里插入图片描述
一个简单的if语句。通过将变量放在最后,在分号之后,其值在评估后返回:

在这里插入图片描述
在这里插入图片描述

八、 Variables, Functions, and Types of Variables

将向量分配给一个变量:
在这里插入图片描述
函数中的输入:
在这里插入图片描述
函数的引用:

在这里插入图片描述
查看变量a的值:
在这里插入图片描述
查看a的类型;
在这里插入图片描述
检索b的类型:
在这里插入图片描述
mySqr是什么类型呢?尚无法即时处理:
在这里插入图片描述
列出可获得的变量:
在这里插入图片描述
Clear again:
在这里插入图片描述

九、Getting Information about Error Cause

在模拟失败后,调用getErrorString()函数可以获取更多关于错误原因的信息。
在这里插入图片描述

十、Alternative Simulation Output Formats

有几种输出格式可供选择,mat是默认格式。plt和mat是唯一允许在模拟后使用val()或plot()函数的格式。与plt的速度相比,对于小文件来说,mat大约快5倍,并且由于它是一种二进制格式,对于大文件来说扩展性更好。csv格式在数据密集型模拟中的速度大约是plt的两倍。plt格式在模拟期间将所有输出数据分配到RAM中,这意味着在32位平台上,由于应用程序只能寻址4GB的内存,模拟可能会失败。Empty不输出任何内容,应该是最快的。csv和plt格式适用于使用外部脚本或工具(如gnuplot)生成图表或处理数据。mat格式可以在MATLAB或Octave中进行后处理。
在这里插入图片描述
还可以通过使用POSIX扩展正则表达式来指定结果文件中应该包含哪些变量。给定的表达式必须匹配完整的变量名(^和$符号会自动添加到给定的正则表达式中)。
• 默认情况下,匹配所有内容:simulate(…, variableFilter=“,")
在这里插入图片描述
• 仅匹配包含数字1至3的变量myVar的索引:simulate(…, variableFilter="myVar[1-3]
”)
在这里插入图片描述
• 匹配x、y或z:simulate(…, variableFilter=“x|y|z”)

在这里插入图片描述

十一、Using Parallel Simulation via OpenMP Multi-Core Support

可以通过使用OpenModelica的新特性在多核计算机上获得更快的模拟速度,该特性自动分区方程组,并使用基于共享内存的OpenMP执行调度不同部分。获得的加速取决于模型结构,以及方程组是否可以很好地分区。当前OpenModelica版本中的这个版本是一个没有负载平衡的实验版本。以下命令将在模型上运行并行模拟(目前还不能从OpenModelica GUI中使用):
在这里插入图片描述

十二、Loading Speciffc Library Version

存在许多不同版本的Modelica库,它们之间并不兼容。可以通过调用getModelicaPath()函数来保存同一个库的多个版本。通过调用loadModel(Modelica, “3.2”),OpenModelica会搜索名为"Modelica 3.2"的目录或名为"Modelica 3.2.mo"的文件。可以指定多个库版本以供搜索,并优先考虑已安装的库的预发布版本。如果搜索的版本是"default",优先级顺序为:没有版本名称(Modelica)、主要发布版本(Modelica 3.1)、预发布版本(Modelica 3.1Beta 1)和无序版本(Modelica Special Release)。
loadModel命令在加载后还会查看顶级类的uses注释。给定以下包,Complex 1.0和ModelicaServices 1.1也会自动加载到AST中。
在这里插入图片描述
如果模型有一个uses注释,包也会被加载:
在这里插入图片描述
注意:

通知:由于M中的uses注释,自动加载了包Modelica 3.2.1。
通知:由于Modelica中的uses注释,自动加载了包Complex 3.2.1。
通知:由于Modelica中的uses注释,自动加载了包ModelicaServices 3.2.1。
通过查看路径中的第一个标识符,包也会被加载:

在这里插入图片描述
注意:

通知:由于Modelica中的uses注释,自动加载了包Complex 4.0.0。
通知:由于Modelica中的uses注释,自动加载了包ModelicaServices 4.0.0。
通知:由于使用,自动加载了包Modelica default。

十三、Calling the Model Query and Manipulation API

在OpenModelica系统文档中,描述了一个外部API(应用程序编程接口),它返回有关模型的信息和/或允许操纵模型。这些函数的调用可以像下面这样交互式地完成,但更典型的是通过程序客户端对OpenModelica编译器(OMC)服务器进行调用。此类客户端的当前示例包括OpenModelica MDT Eclipse插件、OMNotebook、OMEdit图形模型编辑器等。出于性能原因,此API是未类型的,即在调用上不进行类型检查,且错误检查最小化。调用的结果以Modelica语法形式的文本字符串返回,客户端需要解析这些字符串。OMNotebook源代码中提供了一个C++的示例解析器,而MDT Eclipse插件中提供了一个Java的示例解析器。

下面我们展示了对之前模拟的BouncingBall模型进行的一些调用。关于这个API的完整文档可以在系统文档中找到。首先我们再次加载并列出模型,以展示其结构:
在这里插入图片描述
不同的调用和返回结果:
在这里插入图片描述
在这里插入图片描述

十四、Quit OpenModelica

在这里插入图片描述

十五、Dump XML Representation

命令dumpXMLDAE根据几个可选参数,将模型的XML表示形式转储出来。

dumpXMLDAE(modelname[,asInSimulationCode] [,filePrefix] [,storeInTemp] [,addMathMLCode])

这个命令使用XML表示形式转储模型的数学表示,带有可选参数。特别是,asInSimulationCode定义了在翻译过程中何时停止(在转储模型之前),其他选项与文件存储有关:filePrefix用于指定不同的名称,storeInTemp用于使用临时目录。可选参数addMathMLCode提供了不在xml文件中打印MathML代码的可能性,使其更易读。使用非常简单,只需:addMathMLCode=true/false(默认值是false)。

十六、Dump Matlab Representation

命令export根据几个可选参数,将模型的Matlab表示形式转储出来。
exportDAEtoMatlab(modelname):
这个命令使用Matlab表示形式转储模型的数学表示。示例:
在这里插入图片描述
在这里插入图片描述

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值