Для потока воздуха к которому нет подвода/отвода теплоты (адиабатический процесс) выполняется условие: $h + w^2/2 = c_p t + w^2/2 = const$ Пусть $t_0$ - температура окружающего КВОУ воздуха при нулевой скорости воздуха (температура полного торможения). Воздух поступает в КВОУ с некоторой скоростью, которая увеличивается во входном сечении компрессора из-за уменьшения площади проходного сечения. Чем выше скорость воздуха, тем ниже статическая температура потока по сравнению с температурой полного торможения. Разница этих температур определяется по формуле $dt = - w^2/(2c_p)$.
w = 250 # максимальная скорость потока на входе в компрессор, м/с
cp = 1002.4 # теплоёмкость воздуха Дж/кг/К
# Разница статической температуры воздуха в потоке на входе в компрессор и воздуха перед КВОУ, C
dt_потока = -w*w/2/cp
dt_потока # C
-31.17517956903432
Непосредственно у поверхности входных элементов компрессора, которые обтекает воздух и на которых возможно образование льда, скорость воздуха в силу наличия вязкости равна нулю. Температура неподвижного воздуха должна быть равна температуре воздуха перед КВОУ, но так как поверхность находится в холодном потоке воздуха, часть теплоты выделяемая при торможении воздуха до нулевой скорости отдаётся потоку. В результате температура заторможенного воздуха вблизи обтекаемой поверхности восстановится до значения ниже температуры воздуха перед КВОУ. Степень восстановления температуры определяется значением коэффициента восстановления.
RF = 0.85 # коэффициент восстановления температуры воздуха
dt_пов = -(1-RF) * w*w/2/cp
dt_пов # Разница температур поверхности входных элементов компрессора и воздуха перед КВОУ, C
-4.6762769353551485
Образование льда на поверхности возможно при одновременном выполнении следующих условий:
Температура точки росы воздуха зависит от его статической температуры $t$ и относительной влажности $RH$.
Для определения температуры точки росы следует:
Ниже приведён код функций, находящих упругость насыщенного водяного пара по темпереатуре (взято из [1]) и температуру насыщения по упругости водяного пара.
from math import exp, log
def fE_s(t):
"""
Возвращает упрухость насыщенного водяного пара при заданной температуре
t: температура, С
return: давление, Па
Источник: https://files.stroyinf.ru/Data1/44/44694/
"""
T = t + 273.15
if t < 0:
C1= -5.6745359e3; C2 = 6.3925247; C3 = -9.677843e-3; C4 = 6.2215701e-7
C5= 2.0747825e-9; C6 = -9.484024e-13; C7 = 4.1635019
else:
C1 = -5.8002206e3; C2 = 1.3914993; C3 = -4.8640239e-2; C4 = 4.1764768e-5
C5 = -1.4452093e-8; C6 = 0.; C7 = 6.5459673
return exp(C1/T + C2 + C3*T + C4*T*T+ C5*T**3 + C6*T**4 + C7*log(T))
from scipy import optimize
def ft_s(p):
"""
Функция обратная fp_s.
Возвращает температуру насыщения водяного пара при заданном давлении
p: давление, Па
return: температура, С
"""
t_est = 0. # первое приближение
return optimize.newton(lambda t: p-fE_s(t), t_est)
Считается, что обледенение поверхности входных элементов компрессора необходимо предотвращать при температуре окружающего воздуха в диапазоне $t_0 = [-5; +5]\ ^\circ C$ и относительной влажности более 80%. Построим зависимости $E_{нас}(t)$ и $t_{нас}(E)$ для указанного выше диапазона температур.
import numpy as np
ts_0 = np.linspace(-5., 5., 11)
ps_s = np.array([fE_s(t) for t in ts_0])
import matplotlib.pyplot as plt # библиотека для построения графиков
plt.rcParams.update({'font.size': 14})
fig, axes = plt.subplots(1,2, figsize = (16, 4))
#fig.suptitle ("0", fontsize=16)
axes[0].grid(); axes[1].grid()
axes[0].set_xlim(ts_0[0],ts_0[-1])
axes[0].set_ylim(400,900)
axes[0].plot(ts_0, ps_s); axes[1].plot(ps_s, ts_0)
axes[0].set_xlabel('$t, \degree C$'); axes[0].set_ylabel('$E_{нас},\ Па$')
axes[0].set_title('$E_{нас}(t)$'); axes[1].set_title('$t_{нас}(E)$')
axes[1].set_xlim(400,900)
axes[1].set_ylabel('$t_{нас}, \degree C$'); axes[1].set_xlabel('$E,\ Па$');
Чем больше влаги содержится в воздухе тем выше потенциал лёдообразования при возникновении благоприятных для этого условий.
$$d = \frac{\mu_{вп} E_{вп}}{\mu_{св} E_{св}} = \frac{\mu_{вп} E_{вп}}{\mu_{св} (p_{атм}-E_{вп})}$$где $d$ - влагосодержание, кг водяного пара на кг сухого воздуха; $\mu_{вп} = 18$, $\mu_{св} = 29$ - молярная масса водяного пара и сухого воздуха соответственно, г/моль; $E_{вп},\ E_{св}$ - упругость водяного пара и сухого воздуха соответственно, Па; $p_{атм}$ - атмосферное давление, Па.
mu_вп = 18; mu_св = 29; p_атм = 101325
def fd(t, RH):
"""
Определение влагосодержания воздуха
t: температура воздуха, С
RH: относительная влажность воздуха [0; 1]
return: влагосодержание воздуха, г водяного пара на кг сухого воздуха
"""
p_s = fE_s(t); p_вп = RH * p_s
return mu_вп * p_вп / mu_св / (p_атм - p_вп) * 1000.
def ft_тр(t, RH):
"""
Определение температуры точки росы воздуха
t: температура воздуха, С
RH: относительная влажность воздуха [0; 1]
return: температура точки росы, С
"""
p_s = fE_s(t); p_вп = RH * p_s
return ft_s(p_вп)
ts_0 = np.linspace(-5, 5, 5)
RHs = np.linspace(0.5, 1., 51)
ds = np.zeros((len(ts_0),len(RHs)))
ds = np.array([[fd(t, RH) for t in ts_0] for RH in RHs])
ts_тр = np.array([[ft_тр(t, RH) for t in ts_0] for RH in RHs])
fig, axes = plt.subplots(1,2, figsize = (16, 5))
data =[ds, ts_тр]
axes[0].set_ylim(0, data[0][-1][-1])
for i, ax in enumerate(axes):
ax.grid(); ax.set_xlim(RHs[0]*100,RHs[-1]*100); ax.set_xlabel('$RH,\ \%$')
ax.plot(RHs*100, data[i])
ax.legend(ts_0, ncol=2, title = '$t_0,\ \degree C$')
axes[0].set_ylabel('$d$, г/кг сух. возд.')
axes[1].set_ylabel('$t_{тр},\ \degree C$')
axes[0].set_title('Влагосодержание воздуха')
axes[1].set_title('Температура точки росы воздуха');
Для предотвращения образования льда на поверхности входных элементов компрессора ГТУ применяется система подогрева входного воздуха предназначенная для увеличения его температуры до величины гарантирующей, что температура поверхности входных элементов компрессора будет положительной или выше температуры точки росы.
dt_запас = 3 # дополнительный нагрев сверх необходимого по расчёту
dts_нагрев = np.zeros((len(RHs), len(ts_0)))
for j, t in enumerate(ts_0):
t_пов = ts_0[j] + dt_пов
#print('Стенка', t_пов)
for i, RH in enumerate(RHs):
#print(t_росы)
if (ts_тр[i,j] + dt_запас) > t_пов and (t_пов - dt_запас) <= 0:
dts_нагрев[i,j] = ts_тр[i,j] - t_пов + dt_запас
else:
dts_нагрев[i,j] = 0.
fig, ax = plt.subplots(figsize = (10,5))
ax.grid(); #ax.set_xlim(0.65,); ax.set_ylim(0, 8)
ax.plot(RHs*100, dts_нагрев)
ax.legend(ts_0, ncol=2, title = '$t_0,\ \degree C$')
ax.set_xlim(RHs[0]*100,RHs[-1]*100)
ax.set_xlabel('$RH,\ \%$'); ax.set_ylabel('$\Delta t_{нагрев}$')
ax.set_title('Подогрев воздуха для предотвращения облединения');
На верхнем графике видна аномалия --- кривые для температур $-5, -2.5, 0\ ^\circ С$ идут плотно, а затем расстояние между кривыми скачкообразно увеличивается.
Причина данного явления в том, что зависимость упругости водяных паров от температуры для отрицательных и положительных температур воздуха описывается разными формулами. В диапазоне положительных температур при изменении температуры воздуха температура точки росы изменяется медленнее чем в диапазоне отрицательных температур (см. график ниже). Т.к. температрура точки росы при изменении температуры воздуха от 0 до $2.5\ ^\circ С$ возросла на значительно меньшую величину чем при изменении температуры воздуха от $-2.5$ до $0\ ^\circ С$, то нагревать воздух нужно меньше на разницу между двумя этими изменениями.
Изломы на зависимостях начинаются при переходе через $t_{тр} = 0\ ^\circ С$ (хорошо видно на кривой для $t_0 = 5\ ^\circ С$ при $RH=70\%$). При переходе через $t_{тр} = 0\ ^\circ С$ значение температуры мокрого термометра при увеличении значения относительной влажности начинает расти быстрее, а значит начинает быстрее расти величина необходимого подогрева воздуха.
fig, ax = plt.subplots(figsize = (10,5))
ax.set_title('Зависимость температуры точки росы от температуры воздуха при RH=60%')
ax.grid(); #ax.set_xlim(0.65,); ax.set_ylim(0, 8)
indRH = list(RHs).index(0.6) # индекс элемента со значением 0,6 (RH=60%)
ax.plot(ts_0, ts_тр[indRH][:], label = 'Точка росы')
#ax.plot([ts_0[0], ts_0[-1]],[ts_тр[0][0], ts_тр[0][-1]], label = 'Прямой отрезок')
ax.plot([ts_0[0], ts_0[-1]],[ts_тр[indRH][0],ts_тр[indRH][0] + (ts_0[-1] - ts_0[0])], label = 'Биссектриса')
ax.set_xlabel('$t,\ ^\circ C$'); ax.set_ylabel('$t,\ ^\circ C$')
ax.legend();
При нагреве воздуха увеличивается значение упругости насыщенного водяного пара $E_{нас}$, его влагосодержание, а значит и упругость водяного пара $E_{вп}$, не изменяется, значение относительной влажности воздуха $RH = E(t) / E_{нас}(t)$ уменьшается.
t_0 = -5.
E_нас_0 = fE_s(t_0)
dts_нагр = np.linspace(0, 5, 6)
RHs_0 = np.linspace(0.5, 1., 6)
RHs = np.zeros((len(RHs_0), len(dts_нагр)))
dts_нагр_grid, RHs_0_grid = np.meshgrid(dts_нагр, RHs_0)
for j,dt_нагр in enumerate(dts_нагр):
t = t_0 + dt_нагр
E_нас = fE_s(t)
for i,RH_0 in enumerate(RHs_0):
E_вп = RH_0 * E_нас_0
RHs[i,j] = E_вп / E_нас
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10, 10))
ax_3d = fig.add_subplot(projection='3d')
ax_3d.set_xlabel('$\Delta t_{нагр}$, $^\circ C$'); ax_3d.set_xlim(0., 5.)
ax_3d.set_title('Изменение относительной влажности воздуха с начальной температурой $-5\ ^\circ C$\n'+
'и относительной влажностью в диапазоне $RH_0 = 50 - 100$% при его нагреве')
ax_3d.set_ylabel('$RH_0$'); ax_3d.set_ylim(0.5, 1.)
ax_3d.set_zlabel('$RH$')
ax_3d.plot_surface(dts_нагр_grid, RHs_0_grid, RHs);
Инженерные расчёты на Python, С.В. Медведев, 2020-2022
Использование Python и Jupyter Notebook для инженерных расчётов, С.В. Медведев, 2020-2022