Modelica - 如何在方程式中使用单位

Modelica - How to use units in equations

如何在 Modelica 的方程式中直接使用单位?这可能吗? 一个简单的例子,一个参数,应该依赖于(作为默认值)不同单元的另一个参数。在下面的示例中,它会(自然地)给出一个单元警告。我怎么说我只想要变量的标称值而不是值+单位?

model customspringdamper
  import SI = Modelica.SIunits;
  parameter SI.TranslationalSpringConstant c =100;
  parameter SI.TranslationalDampingConstant d= 0.01*c;
  ... < rest of stuff > ...
end customspringdamper;

当然我可以用单位和值 1 定义另一个参数,但这感觉比必要的更费力?

我可以看到三种方式:

  1. 将参数声明为没有单位的实数:parameter Real c =100;你失去了单位检查,但你似乎没有使用它。
  2. 使用常量将值转换为不同的单位:

import SI = Modelica.SIunits; parameter SI.TranslationalSpringConstant c= 100; parameter SI.TranslationalDampingConstant d= 0.01*(c/unitSpring)*unitDamping; constant SI.TranslationalSpringConstant unitSpring=1; constant SI.TranslationalDampingConstant unitDamping=1;

工具应该能够简化代码以删除那些常量。但是,您绕过了单元检查,这使您的代码更容易出错。

在某些情况下,以这种方式删除单元是合法的 - 但在这种情况下不合法。

  1. 和2基本一样,只不过你把单位放在了0.01;并赋予它实际的物理意义:

    import SI = Modelica.SIunits; parameter SI.TranslationalSpringConstant c= 100; parameter SI.Time SpringTime=0.01; parameter SI.TranslationalDampingConstant d= SpringTime*c;