Ва́куум (от лат. vacuus — пустота) — пространство, свободное от вещества. В технике и прикладной физике под вакуумом понимают среду, состоящую из газа при давлении значительно ниже атмосферного (из Википедии).
При работе паровой турбины в её конденсаторе поддерживается давление в пределах 6 - 12 кПа (атмосферное давление составляет 101,3 кПа). В некоторых случаях при аварийном останове паровой турбины необходимо снизить длительность выбега её ротора. Это достигается повышением давления в конденсаторе - срывом вакуума. При увеличении давления воздуха в конденсаторе увеличивается его плотность и, как следствие, сопротивление вращению ротора, что приводит к снижению длительности выбега ротора.
В статье изложена методика моделирования процесса срыва вакуума в замкнутом объёме при поступлении туда воздуха через суживающееся сопло.
Уравнение состояния идеального газа задаёт зависимость между давлением, температурой и массой газа, занимающего заданный объём:
$$pV = mR_вT$$где $p$ - давление воздуха внутри ёмкости, Па; $V$ - объём ёмкости, $м^3$; $m$ - масса воздуха внутри ёмкости, кг, $R_в = 287\, Дж/(кг\cdotК)$ - газовая постоянная воздуха; $T$ - температура воздуха внутри ёмкости, К.
Т.к. в процессе поступления воздуха в ёмкость значения $V$, $R_в$, $T$ остаются неизменными, то давление в ёмкости будет меняться пропорционально изменению массы воздуха внутри ёмкости:
$$\frac{p}{p_0} = \frac{m}{m_0} \Rightarrow p = p_0 \frac{m}{m_0} $$где $p_0,\ m_0$ - давление и масса воздуха внутри ёмкости в момент начала поступления воздуха из окружающего пространство в ёмкость.
V = 3200 # объём ёмкости, м3
R_в = 287 # газовая постоянная для воздуха, Дж/(кг∙К)
k = 1.4 # показатель адиабаты воздуха
p_0 = 10e3 # начальное давление в резервуаре, Па
t_2 = 15 # температура воздуха в резервуаре, С
T_2 = t_2 + 273.15 # перевод в градусы Кельвина
m_0 = p_0 * V / R_в / T_2
m_0 # масса воздуха в объёме V при p_0 и T_2, кг
386.945194654594
Массовый расход воздуха через сопло находится по формуле из [1]:
где $G$ - массовый расход, кг/с; $w$ - скорость, м/с; $f$ - лощадь сечения, $м^2$; $v$ - удельный объём, $м^3/кг$; $p$ - давление, Па; $k = $ 1,4 - показатель адиабаты воздуха. Индекс 1 относится к входному сечению сопла, 2 - к выходному сечению. Примем параметры воздуха во входном сечении сопла равными параметрам окружающего воздуха (площадь $f_1 = \infty$).
# Параметры окружающего резервуар воздуха
p_1 = 101325 # Па
t_1 = 20 # температура окружающего воздуха, C
T_1 = t_1 + 273.15 # перевод в градусы Кельвина
v_1 = R_в * T_1 / p_1 # удельный объём, м3/кг
# Расчёт массового расхода воздуха через суживающееся сопло
def fG (p_2, f_2):
return f_2 * sqrt(2 * k / (k - 1) * p_1 / v_1 * ((p_2 / p_1) ** (2 / k) -
(p_2 / p_1) ** ((k + 1) / k)))
Приведённая выше формула действительна для отношения давлений $\beta = p_2 / p_1 \ge \beta_{кр}$, где
$$\beta_{кр} = \left(\frac{2}{k + 1} \right) ^{\frac{k}{k - 1}}$$$k = 1.4$ - показатель адиабаты воздуха.
b_кр = (2 / (k + 1)) ** (k / (k - 1))
b_кр
0.5282817877171742
При уменьшении значения $\beta$ массовый расход воздуха через сопло увеличивается и достигает своего максимального значения $G_{кр}$ при $\beta = \beta_{кр}$. Т.к. давление окружающего ёмкость воздуха $p_1$ не изменяется, то $p_{2кр}= \beta_{кр} p_1$. При $\beta \le \beta_{кр}$ массовый расход $G = G_{кр}$, а скорость воздуха в выходном сечении сопла равна скорости звука.
p_2_кр = b_кр * p_1
p_2_кр # Па
53528.152140442675
# Масса воздуха в резервуаре при p_2 = p_2_кр, кг
m_кр = p_2_кр * V / R_в / T_2
m_кр
2071.2461249484313
До того как давление воздуха в резервуаре не превысит $p_{2кр}$ (масса воздуха в резервуаре не превысит значения $m_{кр}$) массовый расход воздуха через сопло будет составлять $G_{кр}$. При давлении $p_2 > p_{2кр}$ массовый расход воздуха $G$ будет находиться по приведённой выше формуле.
Найдём как изменяется давление в резервуаре во времени для различных значений диаметра выходного сечения сопла $d_2$.
import numpy as np
from math import pi, sqrt
# Диаметры выходного сечения сопла, м
d2s = np.array([.150, .200, .250, .300, .350, .400])
f2s = pi * d2s * d2s / 4 # площадь выходного сечения, м2
T = 60 * 60 # граница времени интегрирования, с
dt = 0.1 # шаг интегрирования по времени, с
# Так как шаг интегрирования не уменьшается при приближении p_2 к p_1
# давление p_2 достигает значения p_1
ts =[]; p2s = []; ts_кр = []
for i, f in enumerate(f2s):
ts.append([]); p2s.append([])
ts[i] = [0]; p2s[i] = [p_0]
G_кр = fG(p_2_кр, f)
t = (m_кр - m_0) / G_кр
ts[i].append(t)
p2s[i].append(p_2_кр)
ts_кр.append(t)
G1 = G_кр
m = m_кр
j = 1
p = p_2_кр
while t < (T + dt):
t = ts_кр[i] + j * dt
j += 1
G2 = fG(p, f)
G = (G1 + G2) / 2
m += G * dt
G1 = G2
p = m * R_в * T_2 / V
if p >= p_1:
break
ts[i].append(t)
p2s[i].append(p)
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.size'] = 12.0
fig, ax = plt.subplots(figsize = (10,5))
ax.set_xlabel('$t$, мин'); ax.set_ylabel('$p,\ кПа$')
for i, d in enumerate(d2s):
ax.plot(np.array(ts[i]) / 60, np.array(p2s[i]) / 1e3, label = str(int(d * 1000)))
ax.set_title("Рост давления в резервуаре V = 3200 $м^3$ при срыве вакуума")
ax.set_xlim(0, ); ax.set_ylim(0, )
ax.grid(); ax.legend(title = '$d_2$, мм');
n = len(d2s)
ind = np.arange(n)
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize = (9, 5))
data1 = np.array(ts_кр) / 60
data2 = (np.array([ts[i][-1] for i in range(len(d2s))]) - ts_кр) / 60
ax.set_xticks(ind)
ax.set_title("Время достижения давления $p_1$ в резервуаре V = 3200 $м^3$")
ax.bar(ind, data1, label = 'от $p_0$ до $p_{2кр}$')
ax.bar(ind, data2, bottom = data1, label = 'от $p_{2кр}$ до $p_{1}$')
ax.set_xlabel('$d_2$, мм'); ax.set_ylabel('$t$, мин')
ax.legend(); ax.yaxis.grid(True, color = 'grey')
ax.set_xticklabels(np.int16(d2s * 1000));
Инженерные расчёты на Python, С.В. Медведев, 2020-2022
Использование Python и Jupyter Notebook для инженерных расчётов, С.В. Медведев, 2020-2022