首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Modelica中对div by 0保护使用if-语句

在Modelica中对div by 0保护使用if-语句
EN

Stack Overflow用户
提问于 2018-11-26 10:55:46
回答 2查看 139关注 0票数 1

我建立了一个简单的热泵模型,它使用传感器数据来计算它的COP。

而COP =热能/电力

有时,没有电源,所以系统做一个(不能除以零)。我希望这些值只是零。所以我尝试了一个IF语句如果-陈述。如果幂(U)= 0,则COP(y) =0。不知何故,这不起作用(参见时间8)COP输出+数据。有人注意到这个问题了吗?

编辑( 8.1时仍有问题)

编辑(热和功率)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-26 12:10:41

为了使计算更加通用(例如,权力的符号可以改变),请看下面的代码。从它构建一个函数也是一个好主意(对于noEvent()-statements可以省略).

代码语言:javascript
复制
model DivNoZeroExample
      parameter Real eps = 1e-6 "Smallest number to be used as divisor";
      Real power = 0.5-time "Some artificial value for power";
      Real heat = 1 "Some artificial value for heat";
      Real COP "To be computed";

equation 
    if noEvent(abs(power) < abs(eps)) then
        COP =  if noEvent(power>= 0) then heat/eps else heat/(-eps);
    else
        COP =  heat/power;
    end if;
end DivNoZeroExample;
票数 2
EN

Stack Overflow用户

发布于 2018-11-26 11:12:27

在Modelica中,关系操作的工作方式有点不同。

如果您将if u>0替换为if noEvent(u>0),那么它应该会像您预期的那样工作。

有关详细信息,请参阅Modelica规范https://modelica.org/documents/ModelicaSpec34.pdf中的8.5节事件和同步

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53479601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档