Ниже приведена расчётная часть статьи Тепловой расчёт испарителя мгновенного вскипания (ИМВ).
Рассмотрим схему ИМВ с N ступенями. Каждая ступень имеет в своём составе испаритель и конденсатор.
Пар – первичный (греющий) пар, Конденсат – конденсат первичного пара, пар – вторичный пар, ГВ – горячая вода (нагретая первичным паром), ХВ – холодная вода (вх, вых – на входе и выходе ИМВ). ПВ - подогреватель воды, И – испаритель, К – конденсатор, Д – дистиллят, СР – солевой раствор. СР после охлаждения может быть направлен в линию ХВ.
В испарителе мгновенного вскипания горячая вода (ГВ) подаётся в испаритель, внутри которого поддерживается давление ниже давления кипения при текущей температуре воды. Вода за счёт уменьшения собственной внутренней энергии испаряется, образуя вторичный пар, температура воды уменьшается до температуры насыщения, соответствующей давлению в испарителе. Пониженное давление в испарителе поддерживается за счёт конденсации вторичного пара в конденсаторе при которой происходит передача скрытой теплоты парообразования вторичного пара холодной воде (ХВ). Величина давления в конденсаторе определяется температурой холодной воды на выходе из конденсатора – чем ниже эта температура тем меньше давление. Неконденсируемые газы (воздух, который попадает в испаритель и конденсатор ввиду негерметичности системы) отводятся с помощью эжекторов (на схеме не показаны).
Сконденсировавшийся вторичный пар (дистиллят) отводится из конденсатора. Неиспарившаяся и уже менее горячая вода поступает в следующую ступень.
Для начала оценим какая доля подаваемой в ИМВ воды может быть преобразована в пар.
import numpy as np
from wsprops import HSDiag # описание пакета см. в [1]
from scipy.optimize import root_scalar
hs = HSDiag()
t_х_вх = 20 # температура воды на входе в ИМВ
# Первичный пар, подаваемый на нагрев холодной воды (для получения горячей воды)
p_пар = 0.12e6; t_пар = 150
h_пар = hs.props_tp(t_пар, p_пар)['h']
h_пар.item() # удельная энтальпия пара, Дж/кг
2775121.9164403765
# Теплота, выделяемая при конденсации 1 кг греющего пара
w, _ = hs.props_p(p_пар)
dh_нагр = h_пар - w['h']
dh_нагр.item() # Дж/кг
2335822.552759812
# Температура горячей воды на выходе из теплообменника
t_г_вх = hs.t_p(p_пар) - 5 # 5 C - температурный напор в теплообменнике
t_г_вх.item() # градусы С
99.78378433819114
p_х = p_г_вх = 0.13e6 # абсолютное давление в контуре воды
# Удельная энтальпия воды перед ИМВ
h_г_вх = hs.props_tp(t_г_вх, p_г_вх)['h']
h_г_вх.item() # Дж/кг
418208.96051349153
p_к_мин = 3000 # давление в конденсаторе последней ступени ИМВ, Па
t_к_мин = hs.t_p(p_к_мин) # температура насыщения/кипения до которой охладится горячая вода
t_к_мин.item() # градусы С
24.079941253834022
# Удельная энтальпия горячей воды на выходе из ИМВ
w, _ = hs.props_p(p_к_мин)
h_г_вых = w['h']
h_г_вых.item() # Дж/кг
100990.17193814949
# изменение удельной энтальпии (внутренней энергии) воды
# (для простоты предполагается, что количество воды от ступени к ступени не уменьшается)
dh_г = h_г_вх - h_г_вых
dh_г.item() # Дж/кг
317218.78857534204
# Удельная скрытая теплота парообразования при нормальном атмосферном давлении
dh_исп = hs.dh_p(101325)
dh_исп.item() # Дж/кг
2256540.7482377575
# Максимально возможная доля воды, преобразованной в пар
x = dh_г / dh_исп
x.item()
0.1405774696615045
Таким образом, при температуре горячей воды на входе 99,8 С, а на выходе 24,1 С, в пар преобразуется менее 15% поступающей в ИМВ горячей воды.Т.к. количество горячей воды от ступени к ступени уменьшается, а скрытая теплота парообразования увеличивается, то в реальности доля пара будет ещё меньше.
Выполним вариативный тепловой расчёт испарителя мгновенного вскипания с различным количеством ступеней – от 1 до 16.
# Тепловой расчёт ИМВ
def fИМВ(N):
t_г = np.zeros(N+1)
t_х = np.zeros(N+1)
p_г = np.zeros(N+1)
g = np.zeros(N+1)
t_г[0] = t_г_вх # проектный параметр
g[0] = 1.
p_г[0] = p_г_вх # давление воды на входе в ИМВ
# Расчёт ступеней ИМВ
def f(t_х_вых):
t_х[0] = t_х_вых
for i in range(N):
t_г[i+1] = t_х[i] + 5 # температура горячей воды на выходе i-ой ступени
p_г[i+1] = hs.p_t(t_г[i+1]) # давление конденсации и давление горячей воды на выходе из i-ой ступени
w, s = hs.props_p(p_г[i+1]) # параметры кипящей воды и влажного пара
h_г = hs.region1.props_tp(t_г[i], p_г[i])['h'] # энтальпия горячей воды на входе
x = (h_г - w['h']) / (s['h'] - w['h']) # доля пара
g[i+1] = g[i] * (1 - x) # неиспарившаяся вода
# Нагрев холодной воды
dt_х = (s['h'] - w['h']) * (g[i] - g[i+1]) / hs.region1.props_tp(t_х[i], p_х)['cp']
# Температура холодной воды на выходе из ступени i+1
t_х[i+1] = t_х[i] - dt_х
if t_х[i+1] < 1: return t_х[i+1] - t_х_вх # чтобы избежать генерацию исключения
return t_х[N] - t_х_вх
result = root_scalar(f, bracket=[t_г_вх, t_г_вх * 0.5])
#x_solution = result.root # равен t_х[0]
return g, p_г, t_г, t_х
# Расчёт ИМВ с разным количеством ступеней
N_max = 16
# Контейнеры данных для графиков
d = {'g': [], 'p_г': [], 't_г': [], 't_х': [], 'x': []}
y = []; y_x = [];
for i in range(N_max):
data = list(fИМВ(i+1))
for j in range(len(data)):
data[j] = np.pad(data[j], (0, N_max + 1 - len(data[j])), mode='constant', constant_values=np.nan)
d['g'].append(data[0]) # доля солевого расствора (горячей воды)
d['x'].append(1 - d['g'][-1]) # доля пара
d['p_г'].append(data[1]) # давление в испарителе
d['t_г'].append(data[2]) # температура горячей воды в испарителе
d['t_х'].append(data[3]) # температура холодной воды в конденсаторе
# энтальпия холодной воды на выходе ИМВ
h_х_вых = hs.props_tp(d['t_х'][-1][0], p_х)['h']
# количество греющего пара (относительно количества воды на входе в ИМВ)
y.append((h_г_вх - h_х_вых) / dh_нагр)
# количество греющего пара (относительно количества выработанного в ИМВ вторичного пара)
y_x.append(y[-1]/d['x'][-1][i+1])
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1, figsize=(10, 5))
ax.plot(range(N_max+1), np.transpose(np.array(d['x'])*100));
ax.set_xlim(0, N_max); ax.set_ylim(0,14); ax.grid();
ax.legend(range(1, N_max+1), title = 'Количество ступеней', loc='lower right', ncol=4);
ax.set_title("Паропроизводительность")
ax.set_xlabel('Номер ступени'); ax.set_ylabel("Паропроизводительность, %");
fig, ax = plt.subplots(1, 1, figsize=(10, 5))
ax.plot(range(N_max+1), np.transpose(np.array(d['t_х'])));
ax.set_xlim(0, N_max); ax.set_ylim(20,90); ax.grid();
ax.legend(range(1, N_max+1), title = 'Количество ступеней', loc='upper right', ncol=4);
ax.set_title("Температура холодной воды")
ax.set_xlabel('Номер ступени'); ax.set_ylabel("Температура, C");
fig, ax = plt.subplots(1, 1, figsize=(10, 5))
ax.plot(range(N_max+1), np.transpose(np.array(d['t_г'])));
ax.set_xlim(0, N_max); ax.set_ylim(20,100); ax.grid();
ax.legend(range(1, N_max+1), title = 'Количество ступеней', loc='upper right', ncol=4);
ax.set_title("Температура горячей воды")
ax.set_xlabel('Номер ступени'); ax.set_ylabel("Температура, C");
fig, ax = plt.subplots(1, 1, figsize=(10, 5))
ax.plot(range(N_max+1), np.transpose(np.array(d['p_г'])/1000));
ax.set_xlim(0, N_max); ax.set_ylim(0,80); ax.grid();
ax.legend(range(1, N_max+1), title = 'Количество ступеней', loc='upper right', ncol=4);
ax.set_title("Давление в ступенях")
ax.set_xlabel('Номер ступени'); ax.set_ylabel("Давление, кПа");
fig, ax = plt.subplots(1, 1, figsize=(10, 5))
ax.bar(range(1, N_max+1), np.array(y_x)*100);
ax.set_xlim(0, 16.5); ax.set_ylim(0,120); ax.grid();
ax.set_title("Потребность в первичном паре")
ax.set_xlabel('Количество ступеней'); ax.set_ylabel("Первичный пар / Вторичный пар, %");
В рассматриваемом ИМВ (при количестве ступеней более 8) выход дистиллята составляет около 12% от количества подаваемой на вход установки воды. Т.е. если необходимо производить 12 т/ч дистиллята, то в ИМВ следует подавать не менее 100 т/ч исходной воды.
Высокая эффективность ИМВ связана с тем, что тепловая энергия воды, затраченная в испарителе на образование пара возвращается этой же воде, проходящей через конденсатор, при конденсации пара (образовании дистиллята).
Инженерные расчёты на Python, С.В. Медведев, 2020-2025
Использование Python и Jupyter Notebook для инженерных расчётов, С.В. Медведев, 2020-2025