Документация Engee

Расчёт температурного поля плоского радиационного теплообменника

Определение параметров теплообменника, расчётной схемы, начальных и граничных условий

В данном примере будет продемонстрировано решение уравнения теплопроводности методом Эйлера.

Задача: рассчитать поле температур для плоского радиационного теплообменника.

Дано:

плоский радиационный теплообменник длиной 20 см, толщиной 1,25 см.

Начальные условия:

вакуум,

интегральная поглощательная способность тела ,

спектральная поглощательная способность тела ,

температура в каждой точке теплообменника в начальный момент времени .

Граничные условия:

температура теплоносителя ж .

Допущения:

теплоперенос вдоль течения жидкости не учитывается, в связи с чем ширина теплообменника принята за 1 см,

учитывается излучение только одной стороны теплообменника, так как вторая сторона поглощает переотражённое от охлаждаемого космического аппарата тепло.

Общий вид теплообменника представлен на рисунке:

heatex1.png

Класическое уравнение теплопроводности было модифицировано с учётом лучистого теплообмена с окружающей средой, который описывается законом Стефана-Больцмана.

Применив метод Эйлера к данному уравнению, получили:

где:

(Дж/кг*К) - теплоёмкость алюминия,

кг - масса рассчитываемого участка теплообменника,

Вт/(м*К) - коэффициент теплопроводности,

м2 - площадь рассчитываемого участка,

м - длина рассчитываемого участка теплообменника,

- интегральная поглощательная способность тела,

Вт/(м2*К4);

- площадь миделя рассчитываемого участка (проекция площади участка на перпендикуляр к направлению солнечного излучения)

- спектральная поглощательная способность тела,

Вт/м2 - интенсивность солнечного излучения,

с - шаг расчёта.

Расположение расчётных отрезков представлено на рисунке:

heatex2.png

Расчёт температурного поля

Определение массивов для рассчитываемых параметров:

T = fill(293.0, (1080,20)); #определение массива для температуры
Q3 = fill(0.094, (1080,20)); #определение массива для теплового потока, излучаемого теплообменником
Q4 = fill(0.0451047, (1080,20)); #определение массива для теплового потока, излучаемого Солнцем

Определение параметров теплообменника и окружающей среды:

c = 903.7
m = 0.003375
A = 235.9
F = 0.00025
d = 0.01
E = 0.90
S = 0.000000056704
Fm = F*sin(67*pi/180)
L = 0.14
q = 1400
h = 0.1;

Расчёт температур и тепловых потоков в каждый момент времени для всех отрезков теплообменника:

for i in 1:1079 #цикл для расчёта по времени
    T[i,1] = 293 #определение граничного условия для "левого" отрезка теплообменника
    T[i,20] = 293 #определение граничного условия для "правого" отрезка теплообменника
        for j in 2:19 #цикл для расчёта по координате
            T[1,j] = 293 #определение начального условия
            T[i+1,j] = T[i,j] + h*(
                (1/(c*m))*
                (A*F*(T[i,j-1]-T[i,j])/d #тепловой поток, передаваемый от левого отрезка к текущему с помощью теплопроводности
                 + A*F*(T[i,j+1]-T[i,j])/d #тепловой поток, передаваемый от правого отрезка к текущему с помощью теплопроводности
                 - E*S*T[i,j]*T[i,j]*T[i,j]*T[i,j]*F #тепловой поток, излучаемый текущим отрезком теплообменника
                 + L*q*Fm) #тепловой поток от Солнца, поглощаемый текущим отрезком теплообменника
                 )
            Q3[i,j] = E*S*T[i,j]*T[i,j]*T[i,j]*T[i,j]*F #заполнение массива для излучаемого теплового потока
            Q4[i,j] = L*q*Fm #заполнение массива для поглощаемого теплового потока
        end
end

Расчёт отношения излучаемого к поглощаемому тепловому потоку:

Q3./Q4
1080×20 Matrix{Float64}:
 2.08404  2.0847   2.0847   2.0847   …  2.0847   2.0847   2.0847   2.08404
 2.08404  2.08466  2.08466  2.08466     2.08466  2.08466  2.08466  2.08404
 2.08404  2.08462  2.08461  2.08461     2.08461  2.08461  2.08462  2.08404
 2.08404  2.08459  2.08457  2.08457     2.08457  2.08457  2.08459  2.08404
 2.08404  2.08456  2.08453  2.08452     2.08452  2.08453  2.08456  2.08404
 2.08404  2.08454  2.08449  2.08448  …  2.08448  2.08449  2.08454  2.08404
 2.08404  2.08451  2.08445  2.08443     2.08443  2.08445  2.08451  2.08404
 2.08404  2.08449  2.08441  2.08439     2.08439  2.08441  2.08449  2.08404
 2.08404  2.08447  2.08438  2.08435     2.08435  2.08438  2.08447  2.08404
 2.08404  2.08445  2.08435  2.08431     2.08431  2.08435  2.08445  2.08404
 2.08404  2.08444  2.08431  2.08427  …  2.08427  2.08431  2.08444  2.08404
 2.08404  2.08442  2.08428  2.08423     2.08423  2.08428  2.08442  2.08404
 2.08404  2.0844   2.08425  2.08419     2.08419  2.08425  2.0844   2.08404
 ⋮                                   ⋱
 2.08404  2.0826   2.08073  2.0791      2.0791   2.08073  2.0826   2.08404
 2.08404  2.0826   2.08073  2.0791      2.0791   2.08073  2.0826   2.08404
 2.08404  2.0826   2.08073  2.0791   …  2.0791   2.08073  2.0826   2.08404
 2.08404  2.0826   2.08073  2.0791      2.0791   2.08073  2.0826   2.08404
 2.08404  2.0826   2.08073  2.0791      2.0791   2.08073  2.0826   2.08404
 2.08404  2.0826   2.08073  2.0791      2.0791   2.08073  2.0826   2.08404
 2.08404  2.0826   2.08073  2.0791      2.0791   2.08073  2.0826   2.08404
 2.08404  2.0826   2.08073  2.0791   …  2.0791   2.08073  2.0826   2.08404
 2.08404  2.0826   2.08073  2.0791      2.0791   2.08073  2.0826   2.08404
 2.08404  2.0826   2.08073  2.0791      2.0791   2.08073  2.0826   2.08404
 2.08404  2.0826   2.08073  2.0791      2.0791   2.08073  2.0826   2.08404
 2.08404  2.08404  2.08404  2.08404     2.08404  2.08404  2.08404  2.08404

Визуализация данных, полученных в ходе расчёта

Вызов графической библиотеки:

using Plots

Подключение бэкэнда - метода отображения графики:

plotlyjs()
Plots.PlotlyJSBackend()

Формирование легенды для отображения на графике:

Legend = ["1 отрезок" "2 отрезок" "3 отрезок" "4 отрезок" "5 отрезок" "6 отрезок" "7 отрезок" "8 отрезок" "9 отрезок" "10 отрезок"]
# построение графиков для отрезков с 11 по 20 не имеет смысла, так как они геометрически симметричны с отрезками с 1 по 10
1×10 Matrix{String}:
 "1 отрезок"  "2 отрезок"  "3 отрезок"  …  "9 отрезок"  "10 отрезок"

Построение графика решения по времени для отрезков с 1 по 10 (с левого края до середины теплообменника):

Plots.plot(T[:,1:10], xlabel="Время", ylabel="Температура", ylims=(292.5,293.1), label=Legend)

interactive-scripts/images/math_and_optimization_heat_exchanger/cc1df0c9b15a99d94cd5f767b1b585f0f0c86cf3

Построение графика решения по координате, кривыми показаны величины температуры для каждого отрезка в заданные моменты времени:

Plots.plot(T[10,1:20], xlabel="Время", ylabel="Температура", ylims=(292.5,293.1), label="1 секунда")
Plots.plot!(T[50,1:20], label="5 секунда")
Plots.plot!(T[100,1:20], label="10 секунда")
Plots.plot!(T[200,1:20], label="20 секунда")
Plots.plot!(T[300,1:20], label="50 секунда")
Plots.plot!(T[1080,1:20], label="108 секунда")

interactive-scripts/images/math_and_optimization_heat_exchanger/5af40a49790aa764316bd11c3db45bdd4b68417c

Выводы

В данном примере был продемонстрирован расчёт температурного поля плоского теплообменника. Из расчёта отношения излучаемого и поглощаемого тепловых потоков можно увидеть, что теплообменник действительно поглощает тепло, приносимое теплоносителем, и излучает его в окружающую среду. В свою очередь, в зависимости от координаты, были получены значения температуры в каждый момент времени. Таким образом, была решена задача по расчёту поля температур в плоском теплообменнике.