Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parameters Modelica-如何在方程式中使用单位_Parameters_Equation_Modelica - Fatal编程技术网

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

Parameters Modelica-如何在方程式中使用单位,parameters,equation,modelica,Parameters,Equation,Modelica,如何在Modelica的方程式中直接使用单位?那有可能吗? 一个简单的例子,一个参数,它应该依赖于不同单位的另一个参数(作为默认值)。在下面的示例中,它会发出单元警告(自然)。我怎么说我只想要变量的标称值,而不是值+单位 model customspringdamper import SI = Modelica.SIunits; parameter SI.TranslationalSpringConstant c =100; parameter SI.TranslationalDam

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

model customspringdamper
  import SI = Modelica.SIunits;
  parameter SI.TranslationalSpringConstant c =100;
  parameter SI.TranslationalDampingConstant d= 0.01*c;
  ... < rest of stuff > ...
end customspringdamper;
型号定制减震器
导入SI=Modelica.SIunits;
参数SI.translationalSpring常数c=100;
参数SI.平动阻尼常数d=0.01*c;
... < 其他内容>。。。
端阻尼;
当然,我可以用一个单位和值1定义另一个参数,但这感觉比必要的更费力

我可以看到三种方式:

  • 将参数声明为不带单位的实数:
    参数实数c=100您丢失了单元检查,但似乎没有使用它
  • 使用常量将值转换为不同的单位:
  • import SI=Modelica.SIunits;
    参数SI.translationalSpring常数c=100;
    参数SI.平移阻尼常数d=0.01*(c/单位弹簧)*单位阻尼;
    常数SI.translationalSpring常数unitSpring=1;
    常数SI.平移阻尼常数单位阻尼=1

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

    在某些情况下,以这种方式拆除单元是合法的,但在这种情况下则不然

  • 与2基本相同,但将单位设置为
    0.01
    ;并赋予它实际的物理意义:

    import SI=Modelica.SIunits;
    参数SI.translationalSpring常数c=100;
    参数SI.Time-SpringTime=0.01;
    参数SI.TranslationalDampingConstant d=弹簧时间*c


  • 参数可以有值0.01和单位,那么你至少不再需要0.01了。我想使用单位检查-但是像这样的情况会引发很多警告,因此我一直在寻找解决方案。谢谢你的选择——我必须承认,我希望能直接使用这些装置。例如“d=0.01*c*SI.Time”。对于参数,我想没问题,但是对于图形原理图视图(例如Realexpressions或增益块),可用的选项似乎不方便,感觉更像是一种解决方法,而不是一种合适的解决方案。例如,如果我有一个传感器信号,我想将该信号转换为不同的装置。