Anylogic阀门,当您设置开阀率时,Anylogic如何确定单位?

问题描述 投票:0回答:1

这是一个非常令人沮丧的重复出现的问题。在整个模型中,我仅使用每小时立方米的流量。使用各种功能可动态设置所有阀门的流量。因此,我们使用valve.set_openRate(flowm3h / 3.6)以升/秒为单位,valve.set_openRate(flowm3h / 3600)以立方米/秒为单位。

但是Anylogic似乎随机决定set_openRate()函数使用升/秒还是立方米/秒的单位。例如,我下降了一个阀Rate_when_open = openRate/3.6 liter/s and Initially closed(使用参数openRate)。我设置参数openRate =1200。从这里开始,进行两个流体拆分,将流体拆分为三种方式。每个分支都通过阀门控制-(outvalve_0 .. 2)没有限制。运行模型,打开outvalve_1,关闭它,打开outvalve_0 ...一切正常;流量为0.333(m3 / s,即333.33升/ s,没有问题)。保存模型。关闭Anylogic。重新打开Anylogic并加载模型。现在修改模型,添加一个按钮,并使用功能outvalve_0.set_openRate(1200*0.2/3.6); outvalve_1.set_openRate(1200*0.3/3.6); outvalve_2.set_openRate(1200*0.5/3.6); outvalve_0.open();outvalve_1.open();outvalve_2.open();运行通过三个阀分配流量0.2、0.3和0.5。流量限制为0.333立方米/秒,所有流量都通过outvalve_0流出。在调试模式下运行模型,它显示outvalve_0的openRate设置为66.667 m3 / s; outvalve_1至100 m3 / s,outvalve_2至166.67 m3 / s。由于新月形阀的极限流量为(1200 / 3.6)= 0.333立方米/秒,因此三个阀的流速过高(因此Anylogic将最初的(1200 / 3.6)解释为0.333 m3 / s,随后将(1200 * 0.2)解释为/3.6)为66.67 m3 / s,而不是升/ s(0.067m3 / s)。您必须将代码更改为outvalve_0.set_openRate(1200*0.2/3600)..etc.,它才能起作用

问题是不是必然的。对于下一个模型,设置略有不同,如果您使用(1200 * 0.2 / 3600),则现在将其解释为0.000067 m3 / s,您必须将代码更改回(1200 * 0.2 / 3.6)。

因此问题:当您通过valve.set_openRate()函数传递流量时,您如何知道Anylogic将要使用的单位?它根据什么来决定单位是什么?或...有办法强迫部队吗?

fluid anylogic
1个回答
0
投票

我不认为AnyLogic在使用的单位上是不一致的...不过,根据您的描述,我建议这样做:

1)每次更改速率或需要单位的任何内容时,请始终使用单位,对于set_openRate而言,您可以这样做

valve.set_openRate(4, CUBIC_METER_PER_SECOND);

检查帮助文档中的可用单位:https://help.anylogic.com/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Ffunctions%2FConstants_Time_Units.html

2)您在每个流体库块旁边看到的输出总是以立方米/秒为单位,而且我敢肯定您不能更改它(除非它们最近进行了一些更新)。有时以升/秒为单位定义所有内容,并以立方米/秒为单位查看模拟运行时的输出,有时会令人困惑,但这就是事实。

3)修改一下您是否实际在块中使用了正确的单位...您必须在块中定义单位,有时在这里容易出错。

© www.soinside.com 2019 - 2024. All rights reserved.