Пример решения олимпиадных задач по ПАХТ
Задача 6
Определить необходимую поверхность рекуперативного теплообменника, в котором вода при давлении кПа нагревается горячими газами. Расход воды , начальная температура газа 370 ℃, конечная температура газа 160 ℃, начальная температура воды 30 ℃, конечная температура воды 120 ℃, средний коэффициент передачи принять равным 45 . Расчет выполнить для прямоточной и противоточной схемы движения теплоносителей. Привести графики изменения температур рассчитанных схем.
Решение
Подключаем пакеты
using CoolProp
using Plots
using Roots
Исходные данные:
p = 101.3 * 10^3 #перевод давления в Па
Gᵥ = 3500 / 3600 #перевод в кг/с
t_gasₙ = 370 + 273.15 #перевод в К
t_gasₖ = 160 + 273.15 #перевод в K
t_vₙ = 30 + 273.15 #перевод в K
t_vₖ = 120 + 273.15 #перевод в K
K = 45
Для решения необходимы знать тепловизические свойства топочного газа. В данном случае будем считать, что не происходит конденсации компонентов топочного газа и топочный газ имеет теплоемкость, на зависящую от температуры.
Также для решения задачи необходимо задаться моделью для описания струкруты потоков. В даннм случае никакой информации о струткуре потоков нет, поэтому для теплоообменных аппартов можно принять модель идеального вытеснения.
Свойства и расход газа мы не знам, но из теплового баланса можно определить произведение данных величин.
Составляем тепловой баланс с учетом постоянства теплоемкости газовой фазы:
откуда
hₙ = PropsSI("H", "T", t_vₙ, "P", p, "water") #удельная энтальпия воды на входе
hₖ = PropsSI("H", "T", t_vₖ, "P", p, "water") #удельная энтальпия на выходе
Gcp = Gᵥ * (hₖ - hₙ) / (t_gasₙ - t_gasₖ) # найдем величину G * cp
Прямоток
Запишем систему уравнений для модели МИВ:
Для воды (уравнение 1) записано относительно энтальпии, потому что в данном случае можно одной системой уравнений учесть фазовый переход. Для газа уравнение записано относительно температуры.
using DifferentialEquations #подключаем пакет для решение дифференциальных уравнений
function miv_pryamo!(du, u, P, t) #функиця для задания ДУ
#u[1] - hw
#u[2] - Tg
du[1] = K * (u[2] - PropsSI("T", "H", u[1], "P", p, "water")) / Gᵥ
du[2] = K * (PropsSI("T", "H", u[1], "P", p, "water") - u[2]) / Gcp
end
u0 = [PropsSI("H", "T", t_vₙ, "P", p, "water"), t_gasₙ] #начальные условия, для воды определяется энтальпия на входе
Fspan = (0.0, 450.0) #диапазон решения уравнения, точной поверхности мы не знаем, поэтому берем поверхность с избытком
prob = ODEProblem(miv_pryamo!, u0, Fspan) #задаем
pryamo = solve(prob, Tsit5(), reltol = 1e-8, abstol = 1e-8) #решаем ДУ
Tg = collect(pryamo.u[i][2] for i in 1:length(pryamo.t)) #температура газа из решения
Tw = collect(PropsSI("T", "H", pryamo.u[i][1], "P", p, "water") for i in 1:length(pryamo.t)) #температура воды из решения
plot(pryamo.t, Tg, label = "T газ")
plot!(pryamo.t, Tw, label = "T вода")
xlabel!("F, м²")
ylabel!("T, K")
Для определения требуемой поверхности решим уравнение и определим при какой поверхности будут условия, указанные в задаче.
Fpryamo = find_zero(F -> pryamo(F)[2] - t_gasₖ, 300) #определение поверхности
Проверка условий по воде
PropsSI("T", "H", pryamo(Fpryamo)[1], "P", p, "water") - 273.15
Противоток
Для противотока поменяется уравнение теплового баланса:
function miv_protiv!(du, u, P, t)
du[1] = K * (u[2] - PropsSI("T", "H", u[1], "P", p, "water")) / Gᵥ
du[2] = K * (u[2] - PropsSI("T", "H", u[1], "P", p, "water")) / Gcp
end
init = [PropsSI("H", "T", t_vₙ, "P", p, "water"), t_gasₖ]
prob2 = ODEProblem(miv_protiv!, init, Fspan)
protiv = solve(prob2, Tsit5(), reltol = 1e-8, abstol = 1e-8)
Tg_protiv = collect(protiv.u[i][2] for i in 1:length(protiv.t))
Tw_protiv = collect(PropsSI("T", "H", protiv.u[i][1], "P", p, "water") for i in 1:length(protiv.t))
plot(protiv.t, Tg_protiv, label = "T газ")
plot!(protiv.t, Tw_protiv, label = "T вода")
xlabel!("F, м²")
ylabel!("T, K")
Fprotiv = find_zero(F -> protiv(F)[2] - t_gasₙ, 400)