python中mopn,是否可以使用python创建dymola模型(.mo)?
正如matth所指出的,最干净的方法可能是使用模板引擎。
但首先,简单的python字符串格式也可以。在
但是,问题或多或少是复杂的,这取决于您是要更新现有模型的一部分,还是只是从头开始创建新模型。在
创建新模型
下面是一个简单的Modelica模型的示例,如果参数、变量和方程已经在Python中可用,那么可以如何从这些参数、变量和方程中创建它们:name = 'myModel'
parameters = ['Real x=3', 'Boolean a=false']
variables = ['Real y', 'Boolean b']
equations = ['der(y) = x*time', 'b=not a']
template = """
model {name}
{parameters}
{variables}
equation
{equations}
end {name};"""
model = template.format(name=name,
parameters='parameter '+';\n parameter '.join(parameters)+';' if parameters else '',
variables=';\n '.join(variables)+';' if variables else '',
equations=';\n '.join(equations)+';' if equations else '')
如果需要,可以用与参数相同的方式处理常量。在
更新现有模型
如果要更新现有模型的某些部分,则会变得更复杂,因为您必须解析Modelica代码并确保正确识别参数、变量、方程等
如果你只想用某些模型来做这件事,比如更新方程,它会变得更简单。您可以标记方程式部分的开始和结束,以便轻松识别它们并插入新的方程式。例如,你会有一个这样的模型:
^{pr2}$
然后使用正则表达式替换标记之间的内容。在
您还必须以某种方式读写模型,因此下面有一些提示。在
阅读Python中的模型
您可以读取.mo文件的内容,也可以使用python接口从Dymola获取加载的Modelica类的代码getClassText(fullName, includeAnnotations=True, formatted=False)
其中fullName是Dymolas包浏览器中Modelica类的完整路径。在
编写模型
Dymola不提供任何更新部分模型的功能,但是有一个命令可以创建新类,或者在类已经存在的情况下覆盖整个类文本:setClassText(parentName, fullText)
parentName是父类的路径,它通常是一个包(如果类在顶层,则为空字符串),新类文本为fullText。在
至于阅读,您也可以基于文件进行操作,只需创建一个.mo文件并将其加载到Dymola中。在
非python开发人员注意事项
函数setClassText和{}也可用于java接口和DymolaCommands库中的Dymola。在
python中mopn,是否可以使用python创建dymola模型(.mo)?相关推荐
- python如何创建一个列表_使用python中的format()创建一个列表(make a list using format() in python)...
使用python中的format()创建一个列表(make a list using format() in python) 我是python和编码的新手. 因此,如果已经讨论过这件事,我很抱歉,我无 ...
- 站长在线Python精讲:在Python中函数的定义与创建详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中函数的定义与创建详解>.本文的主要内容有:函数的定义.函数的定义规则.函数的创建. 目录 1.函数的定义 2 ...
- python中采用字典建立统,Python中使用Counter进行字典创建以及key数量统计的方法...
这里的Counter是指collections中的Counter,通过Counter可以实现字典的创建以及字典key出现频次的统计.然而,使用的时候还是有一点需要注意的小事项. 使用Counter创建 ...
- python读取枚举_在python中枚举(enumerate in python)
在python中枚举(enumerate in python) 说, term='asdf'; InvertedIndex = {}; InvertedIndex[term] = [1,2,2,2,4 ...
- python 中^是什么意思,python 中%是什么意思
python中^是什么意思 在Python" // "表示整数除法.Python其它表达式:Python的表达式写法与C/C++类似.只是在某些写法有所差别.主要的算术运算符与C/ ...
- 是否有可能从python中的句子语料库重新训练word2vec模型(例如GoogleNews-vectors-negative300.bin)?
是否有可能从python中的句子语料库重新训练word2vec模型(例如GoogleNews-vectors-negative300.bin)? http://www.voidcn.com/artic ...
- python中八进制_在Python中以八进制格式输入数字
python中八进制 Syntax to convert octal value to an integer (decimal format), 将八进制值转换为整数(十进制格式)的语法, int(o ...
- python中readlines函数用法,python中read() readline()以及readlines()用法
我们谈到"文本处理"时,我们通常是指处理的内容.Python 将文本文件的内容读入可以操作的字符串变量非常容易.文件对象提供了三个"读"方法: .read(). ...
- python中创建对象后可以使用运算符来调用其成员_《守株待兔》这则寓言告诉我们(...
[简答题]简述质谱技术的原理及组成. (10.0分) [简答题]语句: >>>f=open('myfile.txt','a+') >>> f.write('hehe ...
最新文章
- 主机入侵防御系统(HIPS)分析
- 北大数学天才许晨阳,回国效力6年后,为什么又去了美国任教?
- python培训比较好的机构-上海有哪些可以系统学习python的培训机构?
- shell实例第19讲:一个脚本中调用另一个脚本的3种方法
- extundelete安装_Linux数据安全工具:数据恢复软件extundelete概述
- 使用maven整合SSH框架详细步骤
- 泰国能源部携手本土企业打造智慧城市
- ASP.NET基础教程-C#与JAVA的比较
- linux命令:linux集群系列之一---LVS类型解析
- LeetCode - 231. Power of Two - 判断一个数是否2的n次幂 - 位运算应用实例 - ( C++ )
- C++Builder 解决绘图闪动问题
- 使用mptt在easyui中显示树形结构
- 知识图谱 - TransE算法
- html5手机详情页,H5网页打开app内部详情页
- 扫描仪服务器正在运行中,针对使用 Acrobat 时出现的扫描仪问题的故障排除提示...
- 【学习笔记】【MAC】sdk自带uiautomatorviewer启动报错问题解决
- 高通8953启动流程
- scanf与空白字符
- 【C++ Primer Plus】第6章 分支语句和逻辑运算符
- wifi爆破学习记录