gpt4 book ai didi

modelica - 教授 Modelica 医学非 SI 单位

转载 作者:行者123 更新时间:2023-12-04 14:12:50 29 4
gpt4 key购买 nike

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

例如,单位“mmHg”(毫米 Mercurial 柱)用于代替“Pa”表示压力。压力变量在模型中定义如下:

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 章单元表达式:
“可以支持用户定义的单位符号。”
然而,该文件并没有详细说明这一点。
- 用户可以定义用于模拟 GUI 的显示单位(Real 属性“displayUnit”),只要在 Dymola 目录下的“displayunit.mos”文件中定义一个转换系数,如下所示:
defineUnitConversion("Pa", "mmHg", 760/101325);

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

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

编辑 (可能对将来遇到此问题的任何人都有帮助):
发布时的版本:Modelica Standard Library 3.2,Dymola 版本 2014(64 位)2013-03-25

我忘了将以下内容添加到我目前对该主题的了解中:
Physiolibrary 2.1.1 定义了 GUI 的显示单元。对于编码,作者使用以下技巧:
type Pressure =  Modelica.SIunits.Pressure(displayUnit="mmHg", nominal=133.322387415);

通过这种方式,Modelica 将压力类型的变量处理为具有单位帕斯卡 (N/m2),但将代码中输入的每个值除以给定的标称值。

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

最佳答案

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

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

关于modelica - 教授 Modelica 医学非 SI 单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24776407/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com