Modelica モデルで医療関連の非 SI 単位を使用したいと考えています。Dymola で Modelica を使用しています。エンジニアとして、私は SI 単位の方が好きです。しかし、私のモデル パラメータは医学出版物から入手したものであり、変換ミスを避けたいと考えています。医療ユニットは、医師とのコミュニケーションも簡素化します。
たとえば、圧力には「Pa」の代わりに「mmHg」(水銀柱ミリメートル)という単位が使用されます。圧力変数は、モデルで次のように定義されます。
type Pressure_mmHg = Real (final quantity="Pressure", final unit="mmHg")
シミュレーション用にモデルを変換すると、モデル内の非 SI 変数ごとに次の警告が表示されます (合計で約 300 の警告)。
Could not decode the unit symbol "mmHg" appearing in the unit string "mmHg"
モデルの変更によって新しい警告が発生した場合、それを検出することはほぼ不可能です。したがって、Modelica に単位「mmHg」を教える必要があります。
トピックに関する私の現在の知識:
- Modelica 言語仕様 3.3、第 19 章単位式: 「ユーザー定義の単位記号をサポートすることは可能です。」ただし、ドキュメントはこれについて詳しく説明していません。
- ユーザーは、Dymola ディレクトリの「displayunit.mos」ファイルで次のように変換係数が定義されている限り、シミュレーション GUI で使用する表示単位 (Real 属性「displayUnit」) を定義できます。
defineUnitConversion("Pa", "mmHg", 760/101325);
モデルの移植性が低下するため、これはオプションではありません。モデルを実行するすべてのコンピューターで手動で実行する必要があり、管理者権限が必要です (私は持っていません)。
よろしくお願いいたします。
編集(将来これに遭遇する人に役立つかもしれません):
投稿時のバージョン: Modelica Standard Library 3.2, Dymola Version 2014 (64-bit) 2013-03-25
このトピックに関する現在の知識に次のことを追加するのを忘れていました: Physilibrary 2.1.1 は、GUI の displayUnits を定義します。コーディングのために、著者は次のトリックを使用します。
type Pressure = Modelica.SIunits.Pressure(displayUnit="mmHg", nominal=133.322387415);
このように、Modelica は圧力タイプの変数を単位がパスカル (N/m2) であるとして処理しますが、コードに入力されたすべての値を所定の公称値で除算します。
訂正:
このセクションでは、物理ライブラリーが単位変換に公称実数属性を使用することを以前に述べました。これはそうではありません。私を訂正してくれた Marek Matejak (Physilibrary の著者) に感謝します。属性名義の唯一の目的は、安定性の理由から数値問題をスケーリングすることです。