【问题标题】:How to set a start value for a modelica parameter that is returned as part of an array from a function如何为作为数组的一部分从函数返回的 modelica 参数设置起始值
【发布时间】:2018-03-14 08:20:51
【问题描述】:

在模拟一个相当复杂的稳态模型以模拟多回路制冷剂系统时,我收到了来自 Dymola 的以下警告消息。

以下变量是初始化问题的迭代变量: initChillerCircuit2.InitCycleArray[20]

但它们没有被赋予任何明确的起始值。将使用零。

我正在寻求正确语法方面的帮助来设置此变量的起始值,因为该值是从函数 (Init_ChillerCircuit) 返回到参数数组 (InitCycleArray) 中的。

  final parameter Real InitCycleArray[:]=Init_ChillerCircuit(
  vleInitRecord,
  liquidSelector,
  specifiedLiquidTIn,
  specifiedLiquidTOut,
  specifiedLiquidVdot,
  liquidTInIsSpecified,
  liquidTOutIsSpecified,
  liquidVdotIsSpecified,
  specifiedGasTIn,
  estimatedGasVdot,
  liquidHXEffectiveness,
  gasHXEffectiveness,
  subcoolerEffectiveness,
  suctionPressureLoss,
  suctionSuperheat,
  dischargePressureLoss,
  isentropicEfficiency,
  specifiedCapacity,
  isCooling);

如果可能的话,我不清楚如何设置数组中单个元素的起始值。我希望类似下面的行,但语法不正确。

final parameter Real InitCycleArray[:](start[20] = 1) = Init_ChillerCircuit(...);

我能想到的最好方法是为所有输出结果分配起始值,但这在我的场景中是有问题的。

final parameter Real InitCycleArray[:](start = {if i==20 then 1 else 0 for i in 1:33})=Init_ChillerCircuit(...);

上面的语法分配了所有的起始值,编译正常,但是为输出数组中的每个元素分配适当的起始值是困难的。

欢迎提出任何建议!

【问题讨论】:

  • 如果 InitCycleArray[20] 的初始值可以在不过度约束您的方程系统的情况下固定,您可以使用“InitCycleArray[20] = initial_value”添加代码的“初始方程”部分/跨度>
  • 不幸的是它无法修复。该值是迭代计算的结果,因此不能直接先验地知道,并用作时间 t=0 时非线性解的起始值。
  • 你不能使用final parameter Real InitCycleArray(start = Init_ChillerCircuit(…)); 我想这应该给你最好的起始值,因为它似乎是为此创建的函数。我仍然有点困惑,参数的起始值是迭代的一部分。

标签: modelica dymola openmodelica


【解决方案1】:

我会添加带有起始值的新参数

final parameter Real InitCycleArray[:](start = InitCycleArray_start) = Init_ChillerCircuit(...);

protected
constant Real[size(InitCycleArray)] InitCycleArray_start(each fixed=false);

initial equation
  for i in 1:19 loop
   InitCycleArray_start[i] = 0.0;
  end for;

   InitCycleArray_start[20] = 1.0;

  for 21:size(InitCycleArray) loop
   InitCycleArray_start[i] = 0.0;
  end for;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多