Dymola中「kn」(节)单位识别异常及非SI单位使用疑问
关于Dymola中自定义「kn」(节)单位识别失败的问题
我原本以为切换到Dymola 2024x Refresh 1版本后,软件不再识别「kn」或「knot」(海里/小时)单位,此前2024x版本可正常识别。
我定义新单位的Modelica代码如下:
type Velocity_knots = Real (final unit="kn",final quantity="Velocity");
同时运行了包含如下代码的displayunit.mos脚本:
defineUnitConversion("m/s", "kn", 1/(1852/3600));
在2024x Refresh 1中检查时收到警告:
/!\ Could not decode the unit symbol "kn" appearing in the unit string "kn"
后来经进一步测试发现问题与版本无关,是我没注意到的代码变更导致的,在此致歉。
补充测试详情
测试代码如下:
package TestPackage model ATest type NewType = Real (final unit="kn", final quantity="Velocity"); parameter NewType v_nt=4; parameter TestPackage.NewType v_ntp=5; end ATest; type NewType = Real (final unit="kn", final quantity="Velocity"); end TestPackage;
经Dymola检查得到以下结果:
- 模型
ATest内定义的NewType可通过检查,但包TestPackage内直接定义的NewType会触发上述警告,原因不明。 - 参数声明
v_nt和v_ntp均触发警告Could not decode the unit symbol "kn" appearing in the unit string "kn",无论是否运行displayunit.mos脚本。
额外需求与最佳实践提问
我定义unit="kn"的原因是:模型方程均采用SI单位,但用户在表格(如MSL CombiTables模型中的z=f(x,y)映射表)输入数据时,找不到合适的非SI单位显示输入方式。因此让用户用常用非SI单位输入,再通过硬编码转换函数转回SI单位,通过定义带unit="kn"的新Type确保清晰性和质量。请问有没有替代的最佳实践?
内容的提问来源于stack exchange,提问作者AngeliqueR
相关产品推荐
相关产品推荐

