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

news2024/12/23 9:29:01

2 交互式使用OpenModelica-下篇

文章目录

  • 2 交互式使用OpenModelica-下篇
  • 一、 Trying the system and cd Commands
  • 二、 Modelica Library and DCMotor Model
  • 三、The val() function
  • 四、Clear All Models
  • 五、VanDerPol Model and Parametric Plot
  • 六、Using Chinese or Japanese Characters
  • 七、Scripting with For-Loops, While-Loops, and If-Statements
  • 八、 Variables, Functions, and Types of Variables
  • 九、Getting Information about Error Cause
  • 十、Alternative Simulation Output Formats
  • 十一、Using Parallel Simulation via OpenMP Multi-Core Support
  • 十二、Loading Speciffc Library Version
  • 十三、Calling the Model Query and Manipulation API
  • 十四、Quit OpenModelica
  • 十五、Dump XML Representation
  • 十六、Dump Matlab Representation


一、 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表示形式转储模型的数学表示。示例:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1543718.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

序列化文件与反序列化文件回顾

对要序列化的文件需要实现Serializable接口,这个接口是一个标签,虽然没有任何抽象方法。 常量serialVersionUID 设置为一个任意值,保证在Student类改变时,原先存在的student可读 实现序列化和反序列化的Test类中代码 package co…

磁钢如何空运?

航空运输具有一定的特殊性,为了保证安全,无论是人还是货物在乘机前都需要做安全检查。如果你乘机时携带了磁性材料,比如钕铁硼强磁,或者客户着急要货希望厂家发货走空运,这时候我们能不能将磁体带上飞机呢?…

JVM(二)——垃圾回收

三、垃圾回收 1、如何判断对象可以回收 1)引用计数法 定义: 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是…

UFS DMA介绍

一. Linux DMA简介 我们知道DMA是Direct Memory Access, 不需要CPU的参与,也可以直接访问内存中的数据。 CPU 虚拟地址:内核空间由于有MMU内存管理,正常使用的是虚拟地址 CPU物理地址:virtual memory system (TLB, page tables,…

vscode中导入#include “opencv2/opencv.hpp“

鼠标放到上面 点击快速修复 1.img.cpp // 图片的读取和显示 // 导入opencv头文件 #include "opencv2/opencv.hpp" #include <iostream>int main(int argc, char** argv) {// 读取图片&#xff0c;mat是matrix的缩写&#xff0c;是一个矩阵&#xff0c;类似与n…

代码随想录算法训练营三刷 day34 | 贪心之1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

三刷day34 1005.K次取反后最大化的数组和134. 加油站135. 分发糖果 1005.K次取反后最大化的数组和 题目链接 解题思路&#xff1a; 两次贪心 如何可以让数组和最大呢&#xff1f; 局部最优&#xff1a;让绝对值大的负数变为正数&#xff0c;当前数值达到最大&#xff0c;整体最…

C++:引用的简单理解

前言&#xff1a;引用是C一个很重要的特性&#xff0c;最近看了很多有关引用的资料和博客&#xff0c;故在此对引用的相关知识进行总结 一、什么是引用 引用&#xff0c;顾名思义是某一个变量或对象的别名&#xff0c;对引用的操作与对其所绑定的变量或对象的操作完全等价 语…

MATLAB:优化与规划问题

一、线性规划 % 线性规划&#xff08;Linear programming, 简称LP&#xff09; fcoff -[75 120 90 105]; % 目标函数系数向量 A [9 4 7 54 5 6 105 10 8 53 8 9 77 6 4 8]; % 约束不等式系数矩阵 b [3600 2900 3000 2800 2200]; % 约束不等式右端向量 Aeq []; % 约束等式系…

短剧直播项目,一个信息赚3600+,小白也能轻松上手!

一位陌生朋友的一句话&#xff0c;我让他赚了3600&#xff0c;你敢相信吗&#xff1f; 事情是在上个礼拜六&#xff0c;一位朋友通过知乎添加我&#xff0c;问我短剧怎么授权直播。我说现在只能授权剪辑&#xff0c;没有授权直播的权限。于是他又问我&#xff0c;你们有教短剧…

Excel·VBA数组平均分组问题

看到一个帖子《excel吧-数据分组问题》&#xff0c;对一组数据分成4组&#xff0c;使每组的和值相近 上一篇文章《ExcelVBA数组分组问题》&#xff0c;解决了这个帖子问题的第1步&#xff0c;即获取所有数组分组形式的问题 接下来要获取分组和值最相近的一组&#xff0c;只需计…

2024年洗地机综合实力排行榜:谁才是真正的洗地神器?

近年来&#xff0c;洗地机在行业里&#xff0c;它集合了扫地和拖地以及自动清洁和除菌的功能&#xff0c;备受人们的喜爱&#xff0c;尤其是平时忙于工作并没有多少时间清洁家务的用户&#xff0c;但是对于第一次接触洗地机的用户来说&#xff0c;怎么选购洗地机也是个问题&…

2024新版本知识付费微信小程序源码_亲测可用(附下载链接)

介绍&#xff1a; 主要功能 会员系统&#xff0c;用户登录/注册购买记录 收藏记录 基本设置 后台控制导航颜色 字体颜色 标题等设置 流量主广告开关小程序广告显示隐藏 广告主审核过审核 资源管理 后台可以添加5种类型资源灵活设置 激励广告解锁资源 vip专享资源 免费资源…

代码随想录算法训练营第三十四天 | 1005.K次取反后最大化的数组和,134. 加油站 , 135. 分发糖果

贪心&#xff0c;每次选择最小的数来取反 用了一个优先级队列来做处理&#xff0c;维护一个顺序的数组 class Solution { public:typedef struct comp{bool operator()(const int & a,const int & b){return a > b;}}comp;int largestSumAfterKNegations(vector<…

JavaEE初阶——关于进程

此篇文章和大家一起分享关于操作系统对进程的调度 目录 1.操作系统 操作系统的构成 2.进程 2.1进程的概念 2.2管理 2.3pcb (1)pid (2)内存指针 ​编辑 (3)文件描述符 (4)进程调度信息 并行执行 并发执行 pcb中支持进程调度的属性 谢谢您的访问!!期待您的关注!! …

【概念验证(POC):技术项目开发的关键一步】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

redis开启aof持久化失败,无法生成.aof文件

大概率是因为redis-server服务没有关&#xff0c;关掉之后先删除.rdb文件&#xff0c;然后重启server&#xff0c;再去使用cli&#xff0c;然后退出应该就有.aof文件了 1、改配置文件 在redis.conf文件中搜索appendonly&#xff0c;然后将no修改为yes&#xff0c;保存并退出。…

程序员必会技能—股权之舟引领创业者驶向成功之岸【文末送书-44】

文章目录 程序员必会技能—股权之舟引领创业者驶向成功之岸股权进阶&#xff1a;让股权助创业成功的核心3问【文末送书-44】 程序员必会技能—股权之舟引领创业者驶向成功之岸 在创业过程中&#xff0c;股权管理是至关重要的一环。正确处理股权关系可以促进公司的发展&#xf…

RuoYi-Vue-Plus(登录流程-验证码生成)

一、登录流程 1- 进入登录页面&#xff0c;调用 com.ruoyi.web.controller.common.CaptchaController 类中的 captchaImage 方法&#xff0c;生成base64的图片 以及 UUID 2- 提交 登录信息 验证码 uuid 比对 错误&#xff1a;返回错误信息&#xff0c;删除缓存的验证码 成功…

vivado Modifying Logic

修改逻辑 在中实现后&#xff0c;可以修改非只读逻辑对象的属性Vivado IDE以及Tcl。 注意&#xff1a;有关Tcl命令的更多信息&#xff0c;请参阅Vivado Design Suite Tcl命令参考指南&#xff08;UG835&#xff09;&#xff0c;或键入&#xff1c;command&#xff1e;-help。…

SEO 谷歌浏览器模拟baodu蜘蛛 模拟UA 设置UA

目录 前言baidu UA操作设置百度UA 前言 要在谷歌浏览器中设置用户代理&#xff08;User Agent&#xff09;来模拟百度蜘蛛&#xff0c;您可以按照以下步骤进行操作 baidu UA Mozilla/5.0 (compatible; Baiduspider-render/2.0; http://www.baidu.com/search/spider.html)操作…