【发布时间】:2020-04-11 16:46:10
【问题描述】:
我有一个 python 脚本,它使用 FMPy 库中的 read_model_description 函数从 fmu 过滤和列出参数、它们的单位和默认值,并写入 Excel 表 (related discussion)。然后使用simulate_fmu 函数,脚本模拟 fmu 并将结果与单位写回 excel 表中。
在过滤参数和输出变量时,我使用这一行来获取它们的单位。unit = variable.declaredType.unit if hasattr(variable.declaredType,'unit') else '-'
与 fmu 交互时,参数和变量值采用默认 SI 单位。我想这是根据 FMI 标准。但是,在<UnitDefinitions> 下的modelDescription.xml 中,我看到有关于默认SI 单位到displayUnit 转换的信息。例如:
<Unit
name="Pa">
<BaseUnit kg="1"
m="-1"
s="-2"/>
<DisplayUnit
name="bar"
factor="1E-05"/>
<DisplayUnit
name="ftH2O"
factor="0.0003345525633129686"/>
</Unit>
如果modelDescription.xml中已经有转换因子,有没有办法可以获取displayUnits中的参数值和输出变量?
或者有没有更简单的解决方案,使用像 pint 这样的 python 库,可以作为 fmu 的包装器,在与 fmu 交互时将单位转换为所需的单位系统(即 SI 到 IP)?
【问题讨论】:
-
在FMPy 0.2.24 中添加了对单位和显示单位的支持。有关示例,请参见 issue 177。
标签: python modelica fmi unit-conversion pyfmi