是否可以根据时间相关的变量(而不是参数)的值声明(或重新声明)组件?这里已经多次讨论了条件声明(例如,#1,#2和#3),但在这些示例中,条件取决于参数。
我的情况是:我有两个模型,NaturalConvectionHeatTransfer
和ForcedConvectionHeatTransfer
,它们从同一个界面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;
如果Component blah if v==0;
不是参数,则v
之类的条件声明肯定不起作用。有没有办法实现我的目标?我的猜测是"没有",这意味着我将不得不重新思考整个概念。但是,也许有人看到了我遗漏的明显解决方案。任何建议如何解决这个问题将不胜感激。
答案 0 :(得分:3)
这是不可能的。但是,您可以通过添加heatTransfer组件并使用一些虚拟组件和方程式在它们之间切换来模拟它。
http://dx.doi.org/10.3384/ecp14096183有一些关于如何在Modelica中稍微低效地执行它的实现提示(以及工具如何优化其中的一些东西)。