- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为示例开发了一个基于 MSL 流体库的简单 Modelica 模型。我将 MassFlowSource 与管道和 Boundary_PT 连接起来作为接收器功能,如下图所示:
http://www.casimages.com/img.php?i=14061806120359130.png
我使用 OpenModelica(在模型交换模式下)生成一个 FMU 包。我使用 python 使用以下代码管理这个 FMU 包:
import pyfmi, os
from pyfmi import load_fmu
myModel = load_fmu('PathToFolder\\test3.fmu')
res1 = myModel.simulate() # First simulation with m_flow in source set to [1] Kg/s
x = myModel.get('boundary1.m_flow') # Mass flow rate of the source
y = myModel.get('pipe.port_a.m_flow') # Mass flow rate in pipe
print x, y
myModel.set('boundary1.m_flow', 2)
option = myModel.simulate_options()
option['initialize'] = False # Need to initialize the simulation
res2 = myModel.simulate(options = option) # Second simulation with m_flow in source set to [2] Kg/s
x = myModel.get('boundary1.m_flow') # Mass flow rate of the source
y = myModel.get('pipe.port_a.m_flow') # Mass flow rate in pipe
print x, y
os.system('pause')
目标是在您更改模型中的参数时显示问题,这里是源组件中的“m_flow”变量。这个新设置为“2”应该会改变管道中的“m_flow”,但它不会。结果:在第一次模拟中,两个“m_flow”都变为“1”,这是正常的,因为模型是这样设置的。在第二次模拟中,我在源代码中将参数设置为“2”,但管道“m_flow”保持为“1”(应该是“2”)。 http://www.casimages.com/img.php?i=140618060905759619.png
Modelica中流体源的模型是这个(只是我们感兴趣的部分):
equation
if not use_m_flow_in then
m_flow_in_internal = m_flow;
end if;
connect(m_flow_in, m_flow_in_internal);
我认为 FMU 在 if 条件下不考虑参数。对我来说这是一个问题,因为我需要管理 FMU 并确保如果我设置了一个参数,模拟将使用这个新设置。如何确定 FMU/FMI 运行良好?我们无法在 FMU 中管理的参数类型的详尽列表在哪里?
我已经知道在 FMU 管理中不能考虑改变方程数量的参数(改变 DAE 指数的变量同上)。
最佳答案
请注意,OpenModelica 具有结构参数的概念和 Evaluate=true
注释。例如,如果参数用作数组维度,则它可能被计算为整数值。该参数的所有使用都将使用评估值,就好像它是一个常量一样。
与其包含图表图片,还不如查看 Modelica 源代码,以便了解 OpenModelica 对系统做了什么。
我怀疑评估了一个参数。如果您生成非 FMU 代码,您可以检查 OpenModelica 生成的 modelName_init.xml 并找到参数条目并查找属性 isValueChangeable
。
您还可以使用 OMEdit 调试系统并查看初始方程式(生成包含调试信息的可执行文件)。 File->Open Transformations File,然后选择 modelName_info.xml 文件。搜索您尝试更改的变量并转到定义它的初始方程式。很可能忽略了起始值(由 PyFMI 设置),因为生成解决方案不需要它。
关于python - FMU FMI仿真,设置某类参数时不修改结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24290308/
我是一名优秀的程序员,十分优秀!