我有一个 python 脚本,它使用read_model_description
FMPy 库中的函数过滤和列出来自 fmu 的参数、它们的单位和默认值,并在 Excel 表中写入(相关讨论)。然后使用该simulate_fmu
函数,脚本模拟 fmu 并将结果与单位写回 excel 表中。
在过滤参数和输出变量时,我使用这一行来获取它们的单位。
unit = variable.declaredType.unit if hasattr(variable.declaredType,'unit') else '-'
与 fmu 交互时,参数和变量值采用默认 SI 单位。我想这是根据 FMI 标准。但是,在modelDescription.xml
下面<UnitDefinitions>
我看到有关于默认 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 的包装器,在与它交互时转换所需单位系统中的单位(即 SI 到 IP)?