【问题标题】:Conditional component declaration depending on time-dependent variable取决于时间相关变量的条件组件声明
【发布时间】:2014-06-24 15:34:42
【问题描述】:

是否可以根据与时间相关的变量(而不是参数)的值来声明(或重新声明)组件?条件声明已在此处多次讨论(例如,#1#2#3),但在这些示例中,条件取决于参数。

我的情况是这样的:我有两个模型,NaturalConvectionHeatTransferForcedConvectionHeatTransfer,它们从同一接口 PartialHeatTransfer 扩展而来。在第三种模型中,我想做这样的事情:

model MyProblem
  // stripped other declarations
  input v "Velocity of fluid flow";
  replaceable PartialHeatTransfer heatTransfer;
equation 
  if v == 0 then
    // redeclare heatTransfer to be of type NaturalConvectionHeatTransfer
  else
    // redeclare heatTransfer to be of type ForcedConvectionHeatTransfer
  end if;
end MyProblem;

如果v 不是参数,像Component blah if v==0; 这样的条件声明肯定不起作用。有什么方法可以实现我的目标吗?我的猜测是“不”,这意味着我将不得不重新考虑整个概念。但是,也许有人看到了我缺少的明显解决方案。任何关于如何解决此问题的建议将不胜感激。

【问题讨论】:

    标签: modelica


    【解决方案1】:

    这是不可能的。但是,您可以通过添加两个 heatTransfer 组件并使用一些虚拟组件和方程式在它们之间切换来围绕它进行建模。

    http://dx.doi.org/10.3384/ecp14096183 提供了一些实现提示,说明如何在 Modelica 中稍微低效地执行此操作(以及工具如何优化其中的一些内容)。

    【讨论】:

    • 再次非常感谢!这篇论文给出了一些有趣的见解。现在,我已经按照你的建议做了 - 声明两个组件并在它们之间切换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多