Engee 文档
Notebook

平面辐射热交换器温度场的物理模型

本例将使用热物理库的模块,对平面辐射热交换器进行建模,类似于/user/start/examples/math_and_optimization/heat_exchanger/heat_exchanger.ngscript中的例子。

热交换器计算示意图,并将其划分为若干单元:

heatex2.png

在 Engee 中实施这一计算方案时,使用了物理建模热库中的元素。

模型中使用的关键模块包括

  • 温度源$-$ 块实现了热交换器极端段(1 和 20)温度的边界条件。
  • 受控热流速率源$-$ 热源,表征来自太阳的热流
  • 根据计算方案,该模型中的热质被用作热交换器的一个元素,同时也是$-$ 空间的一个元素,热交换器的热量被辐射到空间中。
  • 辐射传热$-$ 描述了热交换器元件向外部空间辐射传热的特点。
  • 热阻$-$ 元件之间的热阻

Engee 模型:

heat_exchanger_physmod_1711717088198_3.png

边界条件

在热交换器的第一段和最后一段,温度恒定为 293.15 K:

$T_{i,1} = 293.15 K$,

$T_{i,20} = 293.15 K$.

初始条件

初始时刻热交换器各点的温度为 293.15 K:

${T_{0,j}} = 293.15K$.

确定热交换器元件和环境参数:

In [ ]:
init_T = 293.15 # начальная температура каждого участка теплообменника
res = 0.167 # тепловое сопротивление между участками теплообменника
mass = 0.003375 # масса элемента теплообменника
c = 903.7 # теплоёмкость материала (алюминий)
F = 0.00025 # площадь поверхности элемента для расчёта теплового излучения
cosm_tepl = 10000000.0 # теплоёмкость космического пространства (условно бесконечная)
sigma = 5.6e-8; # постоянная Стефана-Больцмана
soln_teplo = 0.0400047; # тепловой поток от Солнца, поглащаемый участком теплообменника

定义加载和运行模型的功能:

In [ ]:
function start_model_engee()
    try
        engee.close("heat_exchanger_physmod", force=true) # закрытие модели 
        catch err # в случае, если нет модели, которую нужно закрыть и engee.close() не выполняется, то будет выполнена её загрузка после catch
            m = engee.load("/user/start/examples/physmod/heat_exchanger_physmod/heat_exchanger_physmod.engee") # загрузка модели
        end;

    try
        engee.run(m) # запуск модели
        catch err # в случае, если модель не загружена и engee.run() не выполняется, то будут выполнены две нижние строки после catch
            m = engee.load("/user/start/examples/physmod/heat_exchanger_physmod/heat_exchanger_physmod.engee") # загрузка модели
            engee.run(m) # запуск модели
        end
end
Out[0]:
start_model_engee (generic function with 1 method)

运行模拟

In [ ]:
try
    start_model_engee() # запуск симуляции с помощью специальной функции, реализованной выше
    catch err
    end;

从 simout 变量中选择绘图的温度数据并将其写入变量:

In [ ]:
sleep(5)
T1 = simout["heat_exchanger_physmod/Левый край.T"].value[:] # вывод данных о температуре первого участка
T2 = simout["heat_exchanger_physmod/2.T"].value[:] # вывод данных о температуре второго участка
T3 = simout["heat_exchanger_physmod/3.T"].value[:]
T4 = simout["heat_exchanger_physmod/4.T"].value[:]
T5 = simout["heat_exchanger_physmod/5.T"].value[:]
T6 = simout["heat_exchanger_physmod/6.T"].value[:]
T7 = simout["heat_exchanger_physmod/7.T"].value[:]
T8 = simout["heat_exchanger_physmod/8.T"].value[:]
T9 = simout["heat_exchanger_physmod/9.T"].value[:]
T10 = simout["heat_exchanger_physmod/10.T"].value[:]
Out[0]:
10001-element Vector{Any}:
 293.15
 293.1497921718863
 293.1495843447339
 293.1493765185428
 293.14916869331296
 293.1489608690444
 293.14875304573707
 293.14854522339107
 293.14833740200635
 293.1481295815829
 293.1479217621207
 293.14771394361975
 293.1475061260801
   ⋮
 292.68003535201126
 292.6800341586253
 292.6800329658837
 292.6800317737862
 292.68003058233245
 292.68002939152205
 292.6800282013547
 292.6800270118301
 292.6800258229477
 292.68002463470737
 292.6800234471086
 292.6800222601512

模拟结果的可视化

调用图形库

In [ ]:
using Plots

连接后端 - 显示图形的方法:

In [ ]:
plotlyjs()
Out[0]:
Plots.PlotlyJSBackend()

绘制第 1 段至第 10 段(从热交换器左边缘到中间)随时间变化的溶液图:

In [ ]:
plot()
plot(collect(0:0.01:100.0), T1, label="1 отрезок")
plot!(collect(0:0.01:100.0), T2, label="2 отрезок")
plot!(collect(0:0.01:100.0), T3, label="3 отрезок")
plot!(collect(0:0.01:100.0), T4, label="4 отрезок")
plot!(collect(0:0.01:100.0), T5, label="5 отрезок")
plot!(collect(0:0.01:100.0), T6, label="6 отрезок")
plot!(collect(0:0.01:100.0), T7, label="7 отрезок")
plot!(collect(0:0.01:100.0), T8, label="8 отрезок")
plot!(collect(0:0.01:100.0), T9, label="9 отрезок")
plot!(collect(0:0.01:100.0), T10, label="10 отрезок")
Out[0]:

结论:

本示例演示了由热库模块创建的平面热交换器的模拟。模拟结果在数值上接近于通过数值求解微分热传导方程得到的结果,由此可以得出结论,将各部分表示为独立热质的方法是正确的。