2

FMPy ライブラリの関数を使用して fmu からパラメータ、その単位、およびデフォルト値をフィルタリングして一覧表示read_model_descriptionし、Excel シートに書き込む Python スクリプトがあります (関連するディスカッション)。次に、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 でパラメーター値と出力変数を取得できる方法はありますか?

または、fmu のラッパーとして機能し、操作中に目的の単位系 (つまり SI から IP) の単位を変換できる pint のような Python ライブラリを使用する簡単なソリューションはありますか?

4

1 に答える 1