gpt4 book ai didi

modelica - 理解 dymola 错误消息的问题

转载 作者:行者123 更新时间:2023-12-04 03:08:42 26 4
gpt4 key购买 nike

谁能告诉我“代数环”是什么意思——以及我应该如何通过添加“预”运算符来应对这种情况?我真的不明白...

Error: Failed to generate code for an algebraic loop
involving when equations or algorithms with when parts.
Unknowns:
pump.Hb_flow
pump.medium.d
pump.medium.h
pump.medium.state.melting
pump.medium.state.T
pump.V_flow
pump.V_flow_single
pump.W_single

Equations:
algorithm
when Modelica.SIunits.Conversions.to_degC(pump.medium.state.T) < 13.9 then
pump.medium.state.melting := true;
elsewhen Modelica.SIunits.Conversions.to_degC(pump.medium.state.T) > 32.8 then
pump.medium.state.melting := false;
end when;
// [removed set of equations that contained no "when"]

You may be able to cut the loop
by putting 'pre' around some of the references to
unknown continuous time variables in when parts or when conditions.

提前致谢,最好的问候

蒂莫。

最佳答案

一般来说,这个问题是因为 when 子句中的等式会影响触发它们的条件语句。

您需要了解 Modelica 的一点是,求解器将使用“候选解”作为仿真过程的一部分来计算方程。这些不一定是它最终会选择的解决方案,但它仍然需要在接近最终解决方案时对其进行评估。

这有什么关系?那么在您的情况下,我看到您正在更改“熔化”变量的值。但如果该值随后影响介质温度(触发“熔化”值的变化),则该工具将检测到方程组中的不一致。一个工具可能能够迭代以找到一致的候选解决方案,但 Dymola 只是“打赌”并表示它不支持这种情况。

现在,这里要理解的重要一点是,基本上这通常都是不相关。为什么?因为在这种情况下,大多数用户真的不想要 when 子句的默认语义。大多数用户想要的是将 when 子句中的条件视为“原因”,将 when 子句中的等式视为“结果”。从这个意义上说,它们是连续的,结果不应该反过来影响原因(尽管 White Stripes 写了一首关于这种情况的好歌 ;-))。

这里的一般模式是隔离条件,然后在 when 子句中围绕它添加一个“pre”运算符。如果原始模型看起来像这样:

model Test
...
equation
when x>12.5 then
// equations involving y
end when;
// equations coupling x to y
end Test;

您只需要将模型重构为如下所示:

model Test2
...
Boolean cond;
equation
cond = x>12.5;
when pre(cond) then
// equations involving y
end when;
// equations coupling x to y
end Test;

这里的本质是涉及 y 的方程只在条件为真之后出现。这种情况下的“pre”基本上是说,如果在当前时间减去一些 epsilon,条件的值为真,那么(作为响应)when 子句中的方程式开始。

这种情况会导致称为“抖动”的情况,其中条件值会随着时间的每个“epsilon”而翻转,但这意味着问题没有很好地解决。

我希望这是有道理的。我承认,在复杂的情况下,很难准确检测代数环存在的位置(尽管 Dymola 试图为您提供一些诊断)。此外,在某些情况下,您确实需要 Modelica 的默认行为,因此您并不总是希望添加无偿的“预”限定符。

如果您对此解释有任何疑问,请告诉我。

关于modelica - 理解 dymola 错误消息的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8026294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com