在 DYMOLA 的注释中显示参数
Displaying parameter in annotation in DYMOLA
我有一个使用不同组件的仿真模型。为了快速了解所用参数,我使用注释功能通过以下方式显示某些模型参数(例如 m_flow_nominal):
textString="Nominal Flow Rate = %m_flow_nominal"
在注释对话框中。
这会给出类似
Nominal Flow Rate = 5
这对于整数参数来说工作得很好。
我还有一个参数是根据其他值计算得出的。例如,假设 body 的音量。当我尝试通过以下方式显示此参数时:
textString="Volume = %volume"
我将得到用于计算体积的公式,而不是最终值。例如
Volume = a * b * c
在这种情况下如何显示体积的最终值,而不是公式?
这是实际问题:
parameter Modelica.SIunits.Length xBorFie = 10 "Borefield length";
parameter Modelica.SIunits.Length yBorFie = 30 "Borefield width";
parameter Modelica.SIunits.Length dBorHol = 5 "Distance between two boreholes";
parameter Integer nXBorHol = integer((xBorFie+dBorHol)/dBorHol) "Number of boreholes in x-direction";
parameter Integer nYBorHol = integer((yBorFie+dBorHol)/dBorHol) "Number of boreholes in y-direction";
final parameter Integer nBorHol = nXBorHol*nYBorHol "Number of boreholes";
使用时
textString="Number of boreholes = %nBorHol"
我明白了
Number of boreholes = nXBorHol*nYBorHol
我认为唯一的可能就是使用DynamicSelect()
功能。这可用于显示内部的变化值,例如一个图标。要使用它,您必须手动调整图标注释。它记录在 Modelica 语言规范 3.4 的第 18.6.6 节中。
如何使用此 DynamicSelect()
的一些很好的例子是:
Modelica.Blocks.Interaction.Show.RealValue
显示如何显示值
Modelica.Blocks.Interfaces.partialBooleanSO
显示如何更改图标的线条和填充颜色
Modelica.StateGraph.Examples.Utilities.Tank
展示了如何更改矩形的大小以显示罐内的液位
DynamicSelect()
的缺点是它有时需要 initialize/simulate 模型才能显示值(我想如果它不是从文字或参数计算的话)。优点是在查看模型时,它们会在仿真过程中更新。
对于您的情况,图标的实现可能如下所示:
annotation (Icon(graphics={Text(
extent={{-100,-20},{100,20}},
lineColor={0,0,0},
textString="NoB=" + DynamicSelect("?", String(nBorHol)))}));
这导致图标显示
NoB=21
对我来说,当更改其中一个参数时它也会立即适应。
我有一个使用不同组件的仿真模型。为了快速了解所用参数,我使用注释功能通过以下方式显示某些模型参数(例如 m_flow_nominal):
textString="Nominal Flow Rate = %m_flow_nominal"
在注释对话框中。 这会给出类似
Nominal Flow Rate = 5
这对于整数参数来说工作得很好。
我还有一个参数是根据其他值计算得出的。例如,假设 body 的音量。当我尝试通过以下方式显示此参数时:
textString="Volume = %volume"
我将得到用于计算体积的公式,而不是最终值。例如
Volume = a * b * c
在这种情况下如何显示体积的最终值,而不是公式?
这是实际问题:
parameter Modelica.SIunits.Length xBorFie = 10 "Borefield length";
parameter Modelica.SIunits.Length yBorFie = 30 "Borefield width";
parameter Modelica.SIunits.Length dBorHol = 5 "Distance between two boreholes";
parameter Integer nXBorHol = integer((xBorFie+dBorHol)/dBorHol) "Number of boreholes in x-direction";
parameter Integer nYBorHol = integer((yBorFie+dBorHol)/dBorHol) "Number of boreholes in y-direction";
final parameter Integer nBorHol = nXBorHol*nYBorHol "Number of boreholes";
使用时
textString="Number of boreholes = %nBorHol"
我明白了
Number of boreholes = nXBorHol*nYBorHol
我认为唯一的可能就是使用DynamicSelect()
功能。这可用于显示内部的变化值,例如一个图标。要使用它,您必须手动调整图标注释。它记录在 Modelica 语言规范 3.4 的第 18.6.6 节中。
如何使用此 DynamicSelect()
的一些很好的例子是:
Modelica.Blocks.Interaction.Show.RealValue
显示如何显示值Modelica.Blocks.Interfaces.partialBooleanSO
显示如何更改图标的线条和填充颜色Modelica.StateGraph.Examples.Utilities.Tank
展示了如何更改矩形的大小以显示罐内的液位
DynamicSelect()
的缺点是它有时需要 initialize/simulate 模型才能显示值(我想如果它不是从文字或参数计算的话)。优点是在查看模型时,它们会在仿真过程中更新。
对于您的情况,图标的实现可能如下所示:
annotation (Icon(graphics={Text(
extent={{-100,-20},{100,20}},
lineColor={0,0,0},
textString="NoB=" + DynamicSelect("?", String(nBorHol)))}));
这导致图标显示
NoB=21
对我来说,当更改其中一个参数时它也会立即适应。