正如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)?相关推荐

  1. python如何创建一个列表_使用python中的format()创建一个列表(make a list using format() in python)...

    使用python中的format()创建一个列表(make a list using format() in python) 我是python和编码的新手. 因此,如果已经讨论过这件事,我很抱歉,我无 ...

  2. 站长在线Python精讲:在Python中函数的定义与创建详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中函数的定义与创建详解>.本文的主要内容有:函数的定义.函数的定义规则.函数的创建. 目录 1.函数的定义 2 ...

  3. python中采用字典建立统,Python中使用Counter进行字典创建以及key数量统计的方法...

    这里的Counter是指collections中的Counter,通过Counter可以实现字典的创建以及字典key出现频次的统计.然而,使用的时候还是有一点需要注意的小事项. 使用Counter创建 ...

  4. python读取枚举_在python中枚举(enumerate in python)

    在python中枚举(enumerate in python) 说, term='asdf'; InvertedIndex = {}; InvertedIndex[term] = [1,2,2,2,4 ...

  5. python 中^是什么意思,python 中%是什么意思

    python中^是什么意思 在Python" // "表示整数除法.Python其它表达式:Python的表达式写法与C/C++类似.只是在某些写法有所差别.主要的算术运算符与C/ ...

  6. 是否有可能从python中的句子语料库重新训练word2vec模型(例如GoogleNews-vectors-negative300.bin)?

    是否有可能从python中的句子语料库重新训练word2vec模型(例如GoogleNews-vectors-negative300.bin)? http://www.voidcn.com/artic ...

  7. python中八进制_在Python中以八进制格式输入数字

    python中八进制 Syntax to convert octal value to an integer (decimal format), 将八进制值转换为整数(十进制格式)的语法, int(o ...

  8. python中readlines函数用法,python中read() readline()以及readlines()用法

    我们谈到"文本处理"时,我们通常是指处理的内容.Python 将文本文件的内容读入可以操作的字符串变量非常容易.文件对象提供了三个"读"方法: .read(). ...

  9. python中创建对象后可以使用运算符来调用其成员_《守株待兔》这则寓言告诉我们(...

    [简答题]简述质谱技术的原理及组成. (10.0分) [简答题]语句: >>>f=open('myfile.txt','a+') >>> f.write('hehe ...

最新文章

  1. 主机入侵防御系统(HIPS)分析
  2. 北大数学天才许晨阳,回国效力6年后,为什么又去了美国任教?
  3. python培训比较好的机构-上海有哪些可以系统学习python的培训机构?
  4. shell实例第19讲:一个脚本中调用另一个脚本的3种方法
  5. extundelete安装_Linux数据安全工具:数据恢复软件extundelete概述
  6. 使用maven整合SSH框架详细步骤
  7. 泰国能源部携手本土企业打造智慧城市
  8. ASP.NET基础教程-C#与JAVA的比较
  9. linux命令:linux集群系列之一---LVS类型解析
  10. LeetCode - 231. Power of Two - 判断一个数是否2的n次幂 - 位运算应用实例 - ( C++ )
  11. C++Builder 解决绘图闪动问题
  12. 使用mptt在easyui中显示树形结构
  13. 知识图谱 - TransE算法
  14. html5手机详情页,H5网页打开app内部详情页
  15. 扫描仪服务器正在运行中,针对使用 Acrobat 时出现的扫描仪问题的故障排除提示...
  16. 【学习笔记】【MAC】sdk自带uiautomatorviewer启动报错问题解决
  17. 高通8953启动流程
  18. scanf与空白字符
  19. 【C++ Primer Plus】第6章 分支语句和逻辑运算符
  20. wifi爆破学习记录

热门文章

  1. 【java】微信退款结果通知解密
  2. WWDC20 发布会你看了吗?看完 WWDC20 后的感受
  3. ios如何设计图标_50 iOS图标设计,第1卷
  4. 使用MDT部署Windows Server 2003 R2
  5. F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)
  6. 从0到10000小时,从外包到字节跳动
  7. 2023北京智能电网展览会
  8. PXIe背板 全混合8槽开发设计资料,PXIe背板原理图
  9. 在WIN2008上,office2003精简版导致vs2008sp1崩溃
  10. 京东竞店竞品数据一键监控,快速查看——慢慢买「市场洞察」升级