gpt4 book ai didi

modelica - 处理 Modelica 中的跳跃/不连续性

转载 作者:行者123 更新时间:2023-12-02 21:48:50 24 4
gpt4 key购买 nike

我想知道是否有人在处理 Modelica 中的跳跃/不连续性方面有任何提示或技巧。我正在使用 OpenModelica,下面显示了我的问题的简化示例代码。

model PowerGenerator
Modelica.SIunits.Power P(start=0);
output Modelica.SIunits.Energy E;
equation
if (5 < time) and (time < 15) then P = 3;
else P = 0;
end if;
der(E) = P;
end PowerGenerator;

如何使 5 秒和 15 秒处的跳跃变为连续过渡,其中斜率的导数是有限的?我尝试过 noEventsmooth 函数,但我无法让它们执行我需要的操作。

编辑:我的主模型中的问题是这些事件会引起抖动,因此我还需要它实时工作。同样在我的完整模型中,事件是状态事件,因此时间未知。

最佳答案

也许您正在寻找像下面的代码这样的行为?

model PowerGenerator
Modelica.SIunits.Power Plow;
Modelica.SIunits.Power Phigh;
Modelica.SIunits.Power P(start=0);
output Modelica.SIunits.Energy E;

Modelica.SIunits.Power Pold(start=0);
output Modelica.SIunits.Energy Eold;

equation
if (5 < time) and (time < 15) then
Pold = 3;
else
Pold = 0;
end if;
der(Eold) = Pold;

Plow = Modelica.Media.Air.MoistAir.Utilities.spliceFunction(3,0,time-5,1);
Phigh = Modelica.Media.Air.MoistAir.Utilities.spliceFunction(0,3,time-15,1);
P = Modelica.Media.Air.MoistAir.Utilities.spliceFunction(Phigh,Plow,time-10,1);
der(E) = P;
end Power Generator;

下面是输出图: Spine Output

关于modelica - 处理 Modelica 中的跳跃/不连续性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44408594/

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