У меня есть сценарий python, который фильтрует и перечисляет параметры, их единицы и значения по умолчанию из fmu, используя функцию read_model_description
из библиотеки FMPy, и записывает в лист Excel ( соответствующее обсуждение ) , Затем с помощью функции simulate_fmu
скрипт имитирует fmu и записывает результаты с единицами измерения в таблицу Excel.
При фильтрации параметров и выходной переменной я использую эту строку для получения их единиц измерения.
unit = variable.declaredType.unit if hasattr(variable.declaredType,'unit') else '-'
При взаимодействии с fmu параметры и значения переменных по умолчанию SI единицы. Я думаю, что это в соответствии со стандартом FMI. Тем не менее, в modelDescription.xml
под <UnitDefinitions>
я вижу, что есть информация, касающаяся единицы измерения по умолчанию для преобразования displayUnit. Например:
<Unit
name="Pa">
<BaseUnit kg="1"
m="-1"
s="-2"/>
<DisplayUnit
name="bar"
factor="1E-05"/>
<DisplayUnit
name="ftH2O"
factor="0.0003345525633129686"/>
</Unit>
Можно ли получить значения параметров и выходные переменные в displayUnits, если коэффициенты преобразования уже доступны в modelDescription. xml?
Или есть более простое решение, использующее python библиотеки, такие как pint, которые могут выступать в качестве оболочки вокруг fmu для преобразования единиц измерения в желаемую систему единиц (то есть, SI в IP) при взаимодействии с ней?