部分填充管道系统仿真
工程师经常面临建模系统的挑战,其中管道没有完全充满液体。 这与供水系统、污水系统、燃料管路和其他液压系统相关。 在Engee中,使用*部分填充管道(IL)*块进行此类计算非常方便,它允许您模拟填充和排空管道和水库的过程。
让我们来看看这个块是如何工作的,并考虑两个模型:一个简单的和一个复杂的(Y形配置)。
模型描述
块*"部分填充管道"*是部分填充液体的管道。 它可用于建模复杂的分支系统,其中液体系统的每个组件中的液位都很重要,而不仅仅是在储罐,蓄水池和储液罐中。
一个简单的模型
最简单的配置包括一个"部分填充管道"单元连接到油箱。 该模型演示:
*排空水箱后管道内的液位如何变化,
*初始液位如何影响过程的动力学。
该模型可用于在集成到更复杂的系统之前检查管道参数(直径,长度,倾斜角度)。
让我们运行模型并查看罐内和管道内液位的动态。:
In [ ]:
initial_tank_liquid_level = 1; # м
pReservoir = 0.101325; # МПа
model = engee.open("$(@__DIR__)/PartiallyFilledPipe.engee")
data = engee.run("PartiallyFilledPipe")
plot(
plot(data["Цистерна"].time, data["Цистерна"].value, title="Уровень воды в цистерне", c=1),
plot(data["Труба"].time, data["Труба"].value, title="Уровень воды в трубе", c=2),
layout=(2,1), titlefont = font(11), lw=3, legend=false
)
Out[0]:
我们可以看到,初始水平(1m)的水在大约12.5秒内从水箱中流出,之后垂直管道中的水位迅速降至零。
Y型配置
一个更复杂的选择是三个"部分填充的管道"块以字母Y的形式连接的系统。 此配置允许您模拟:
*分支管道,
*具有多个液体来源或排水系统,
*液体在多个罐之间重新分配的情况。
让我们运行这个模型并研究动力学。:
In [ ]:
tank1_inlet_height = 0.1; # м
tank2_inlet_height = 0.1; # м
tank1_initial_liquid_level = 1; # м
tank2_initial_liquid_level = 1; # м
pReservoir = 0.101325; # МПа
model = engee.open("$(@__DIR__)/PartiallyFilledPipeY.engee")
data = engee.run("PartiallyFilledPipeY")
Цистерна_1 = collect(data["Цистерна_1"]); Цистерна_2 = collect(data["Цистерна_2"]);
Труба_1 = collect(data["Труба_1"]); Труба_2 = collect(data["Труба_2"]); Труба_3 = collect(data["Труба_3"]);
plot(
plot(Цистерна_1.time, [Цистерна_1.value Цистерна_2.value], title="Уровень воды в цистернах", c=[1 2]),
plot(Труба_1.time, [Труба_1.value Труба_2.value], title="Уровень воды в трубах 1 и 2", c=[3 4]),
plot(Труба_3.time, Труба_3.value, title="Уровень воды в выпускной трубе 3", c=5),
layout=(3,1), titlefont = font(11), lw=3, legend=false
)
Out[0]:
部分填充管道单元的AL端口负责其操作的性质:如果AL<=0,则系统将管道建模为水库,液体从中流过端口B。 如果AL>0,则方程用于计算填充管道,其接收来自端口A的液体。 因此,端口A应始终"高于"端口B。
结论
部分填充的管道块允许您测试简单的场景,分析复杂的分支系统并计算其吞吐量和动态。
尝试改变储罐液位或管道参数,并探索流体数量和网络容量的某些组合可能发生的非线性效应。