教授Modelica医疗非SI单位

Jay*_*lay 6 modelica dymola

我想在医学背景下使用Modelica模型中的非SI单位.我在Dymola使用Modelica.作为工程师,我更喜欢SI单位.但我的模型参数来自医学出版物,我想避免转换错误.医疗单位还简化了与医生的沟通.

例如,使用单位"mmHg"(毫米汞柱)代替"Pa"作为压力.压力变量在模型中定义如下:

type Pressure_mmHg = Real (final quantity="Pressure", final unit="mmHg")
Run Code Online (Sandbox Code Playgroud)

翻译模型进行模拟会为模型中的每个非SI变量产生以下警告(总共约300个警告):

Could not decode the unit symbol "mmHg" appearing in the unit string "mmHg"
Run Code Online (Sandbox Code Playgroud)

如果对模型的更改导致出现新警告,则几乎无法检测到.因此我需要教Modelica单位"mmHg".

我目前对该主题的了解:
- Modelica语言规范3.3,第19章单元表达式:"可以支持用户定义的单元符号." 但是该文件没有详细说明.
- 用户可以定义显示单位(Real属性"displayUnit")以在模拟GUI中使用,只要在Dymola目录的"displayunit.mos"文件中定义转换因子,如下所示:

defineUnitConversion("Pa", "mmHg", 760/101325);
Run Code Online (Sandbox Code Playgroud)

这不是一个选项,因为它会降低模型的可移植性.它必须在运行模型的每台计算机上手动执行,并且需要管理员权限(我没有).

在此先感谢您的帮助,非常感谢!

编辑(可能对将来遇到此人有帮助):
发布时的版本:Modelica标准库3.2,Dymola版本2014(64位)2013-03-25

我忘了将以下内容添加到我目前关于该主题的知识中:Physiolibrary 2.1.1定义了GUI的displayUnits.对于编码,作者使用以下技巧:

type Pressure =  Modelica.SIunits.Pressure(displayUnit="mmHg", nominal=133.322387415);
Run Code Online (Sandbox Code Playgroud)

这样,Modelica将Pressure类型的变量处理为具有单位Pascal(N/m2),但是将代码中输入的每个值除以给定的标称值.

更正:
在本节中,我之前曾说过,Physiolibrary使用Real属性名义进行单位转换.不是这种情况.感谢Marek Matejak(Physiolibrary的作者)纠正我.标称属性的唯一目的是出于稳定性原因缩放数值问题.

kda*_*es4 4

@Jay_At_Play,您可能想再看看@MichaelTiller 共享的Modelica Trac 网站。我刚刚讨论了一种可能有帮助的方法。但是,作为警告,它是非标准的,并且不直接与 Modelica 标准库兼容。

(我想将其添加到原始问题下的评论中,但我没有声誉点。)