ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.02.2024
Просмотров: 48
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ФГБОУ ВО «НИУ «МЭИ»
Кафедра промышленных теплоэнергетических систем
Работа 3.
По дисциплине «Математическое моделирование и оптимизация теплоэнергетических систем»
«Построение и оптимизация математической модели газотурбинной установки в программной среде Python».
Студент: Бирюков Андрей
Сергеевич
Руководитель:
Курзанов С.Ю.
Москва, 2023.
Ход работы:
Для построения и оптимизации математической модели газотурбинной установки необходимо иметь более подробные исходные данные, такие как:
-
геометрические размеры компонентов установки; -
технические характеристики компонентов установки, такие как КПД, мощность, расход топлива и т.д.; химический состав топлива и воздуха; -
условия окружающей среды и т.д.
Без этих данных невозможно построить точную математическую модель газотурбинной установки.
Однако, для примера мы можем построить упрощенную модель газотурбинной установки на основе данных, представленных в задании.
Исходные данные:
-
M6=3 - отношение топлива к воздуху; -
M7=1 - отношение воздуха к топливу; -
P2=1-4 - давление на выходе из компрессора; -
β=0 - угол атаки лопаток ступени соплового аппарата; -
NOxдк=400 - допустимый уровень выбросов оксидов азота; -
Цт=200 - температура газа на выходе из турбины; УNOx=5000 - уровень снижения выбросов оксидов азота; -
УCO2=12 - уровень снижения выбросов углекислого газа.
Для построения модели нам нужно определит параметры установки, такие как:
-
расход воздуха, массовый расход топлива, мощность установки и т.д.
Для расчета этих параметров необходимо использовать уравнения сохранения массы, импульса и энергии для каждого компонента установки.
Воспользуемся упрощенной моделью газотурбинной установки, которая состоит из компрессора, камеры сгорания и турбины.
-
Компрессор Расход воздуха через компрессор определяется уравнением:
Gвх = Gвых / (Pвых / Pвх)^(1/2),
где Gвх - расход воздуха на входе в компрессор, Gвых - расход воздуха на выходе из компрессора
, Pвх - давление на входе в компрессор, Pвых - давление на выходе из компрессора.
Мощность, потребляемая компрессором, определяется уравнением: Nк = Gвх * (Ht4 - Ht3) / (ηк * ρвх),
где Nк - мощность, потребляемая компрессором, Ht4 - энтальпия воздуха на выходе из компрессора, Ht3 - энтальпия воздуха на входе в компрессор, ηк - КПД компрессора, ρвх - плотность воздуха на входе в компрессор.
-
Камера сгорания Массовый расход топлива через камеру сгорания определяется уравнением: Gт = Gвх / (M6 + M7),
где Gт - массовый расход топлива, M6 - отношение топлива к воздуху, M7 - отношение воздуха к топливу.
Давление на входе в камеру сгорания определяется как Pвых.
Давление на выходе из камеры сгорания определяется уравнением: Pг = Pвых * (1 + β), где Pг - давление на выходе из камеры сгорания, β - угол атаки лопаток
ступени соплового аппарата.
-
Турбина Мощность, вырабатываемая турбиной, определяется уравнением: Nт = Gт * (Ht4 - Ht5) / ηт,
где Nт - мощность, вырабатываемая турбиной, Ht5 - энтальпия воздуха
на выходе из турбины, ηт - КПД турбины.
Температура воздуха на выходе из турбины определяется как Цт.
-
Эмиссии Уровень выбросов оксидов азота определяется уравнением:
NOx = Gт * NOxдк / УNOx,
где NOx - уровень выбросов оксидов азота, NOxдк - допустимый уровень выбросов оксидов азота, УNOx - уровень снижения выбросов оксидов азота.
Уровень выбросов углекислого газа определяется уравнением: CO2 = Gт * Цт / УCO2,
где CO2 - уровень выбросов углекислого газа, Цт - температура газа на
выходе из турбины, УCO2 - уровень снижения выбросов углекислого газа.
Таким образом, мы можем построить упрощенную модель газотурбинной установки, которая будет учитывать основные параметры и свойства компонентов системы. Для этого необходимо определить значения входных параметров и задать значения констант и коэффициентов КПД компонентов.
Например, можно задать следующие входные параметры:
-
Массовый расход воздуха на входе в компрессор (Gвх): 100
кг/с
-
Отношение топлива к воздуху (M6): 3 -
Отношение воздуха к топливу (M7): 1 -
Давление на входе в компрессор (P2): 1.5 МПа -
Угол атаки лопаток ступени соплового аппарата (β): 0 -
Допустимый уровень выбросов оксидов азота (NOxдк): 400 ppm -
Температура газа на выходе из турбины (Цт): 800 °C -
Уровень снижения выбросов оксидов азота (УNOx): 5000 -
Уровень снижения выбросов углекислого газа (УCO2): 12
Значения констант и коэффициентов КПД компонентов можно задать следующим образом:
-
КПД компрессора (ηк): 0.85 -
КПД турбины (ηт): 0.9
На основе этих данных мы можем создать математическую модель газотурбинной установки в Python, которая будет вычислять мощность, потребляемую компрессором, массовый расход топлива, давление на выходе из камеры сгорания, мощность, вырабатываемую турбиной, уровень выбросов оксидов азота и уровень выбросов углекислого газа.
Ниже приведен пример кода на Python, который реализует эту модель:
# Исходные данные
Gвх = 100 # массовый расход воздуха на входе в компрессор, кг/с
M6 = 3 # отношение топлива к воздуху
M7 = 1 # отношение воздуха к топливу
P2 = 1.5e6 # давление на входе в компрессор, Па beta = 0 # угол атаки лопаток ступени соплового аппарата, рад
NOxдк = 400 # допустимый уровень выбросов оксидов азота, ppm
Цт = 800 + 273.15 # температура газа на выходе из
УNOx = 5000 # уровень снижения выбросов оксидов азота УCO2 = 12 # уровень снижения выбросов углекислого газа ηк = 0.85 # КПД компрессора ηт = 0.9 # КПД турбины
Вычисление параметров газотурбинной установки:
Pвх = P2 / (1 + ((M6 + M7) / (Gвх * 287 * Цт))) # давление на входе в камеру сгорания, Па
Tвх = Цт / (1 + ((M6 + M7) / (Gвх * 287 * Цт))) # температура на входе в камеру сгорания, К
Gтоп = Gвх * (1 + M6) # массовый расход топлива, кг/с
Gгаз = Gвх + Gтоп # массовый расход газа, кг/с
Pкс = P2 * ((1 + ((ηк ** 0.5) * (((Pвх / P2) ** ((1 - κ) / κ)) - 1))) ** κ) # давление на выходе из компрессора, Па
Tкс = Tвх * ((Pкс / Pвх) ** ((κ - 1) / κ)) # температура на выходе из компрессора, К
Wкс = Gвх * cp_air * (Tкс - Tвх) # мощность, потребляемая компрессором, Вт
Tкп = Tкс + ((Gтоп * L0) / (cp_gas * Gгаз)) # температура на входе в турбину, К
Pкп = Pкс # давление на входе в турбину, Па
Pт = Pкп / ((1 + ((ηт ** 0.5) * (((Pвх / Pкп) ** ((1 - κ) / κ)) - 1))) ** κ) # давление на выходе из турбины, Па
Tт = Tкп - ((Tкп - Tвх) / ηт) # температура на выходе из турбины, К
Wт = Gгаз * cp_gas * (Tкп - Tт) # мощность, вырабатываемая турбиной,
Вт
NOx = ((NOxдк * УNOx) / 100) * (Gтоп / (Gгаз * 1000)) # уровень выбросов оксидов азота, ppm
CO2 = ((M6 * 44 * 1000) / ((M6 * 44 * 1000) + (M7 * 28 * 1000))) * (100 -
УCO2) # уровень выбросов Вывод результатов: print("Параметры газотурбинной установки:") print(f"Массовый расход воздуха на входе, кг/с: {Gвх:.4f}") print(f"Массовый расход топлива, кг/с: {Gтоп:.6f}") print(f"Массовый расход газа, кг/с: {Gгаз:.4f}") print(f"Давление на входе в камеру сгорания, Па: {Pвх:.0f}") print(f"Температура на входе в камеру сгорания, К: {Tвх:.2f}") print(f"Давление на выходе из компрессора, Па: {Pкс:.0f}") print(f"Температура на выходе из компрессора, К: {Tкс:.2f}") print(f"Мощность, потребляемая компрессором, Вт: {Wкс:.2f}") print(f"Давление на выходе из турбины, Па: {Pт:.0f}") print(f"Температура на выходе из турбины, К: {Tт:.2f}") print(f"Мощность, вырабатываемая турбиной, Вт: {Wт:.2f}") print(f"Уровень выбросов оксидов азота, ppm: {NOx:.2f}") print(f"Уровень выбросов углекислого газа, %: {CO2:.2f}")
Дополнения к работе:
Для постановки задачи оптимизации воспользуемся библиотекой
scipy.optimize и ее методом minimize.
From scipy.optimize import minimize
# Задаем функцию цели
Def objective(x):
M6 = 3
M7 = 1
P2 = 2
Beta = 0
NOxдк = 400
Цт = 200
УNOx = 5000
УСО2 = 12
# Расчет теплоемкости дымовых газов за камерой сгорания
C3 = 1298.1 – 0.512*T3
# Расчет величин Fэн, FNOx, FCO2, Fsum
Fэн = M7*19.71*(T3 – T2) + M6*31.43*(T4 – T3)
FNOx = M7*0.0187*(T3 – T2)*p/101.3
FCO2 = M7*0.0213*(T3 – T2)*p/101.3
Fsum = FNOx + FCO2
# Расчет работы потребляемой компрессором
Lк = 0.5*(M6 + M7)*cp*(T4 – T2)
# Расчет вырабатываемой тепловой и электрической энергии
Q = (1 + УСО2/100)*(Fэн + Fsum)*(c3 – T2)
Nэ = Q – Lк
# Возвращаем целевую функцию
Return -Nэ
# Задаем начальное приближение и границы изменения параметра
X0 = [2]
Bounds = [(1, 4)]
# Минимизируем функцию цели
Result = minimize(objective, x0, method='SLSQP', bounds=bounds)
# Выводим результаты
Print('Оптимальное значение параметра P2:', result.x[0])
Print('Минимальное значение электрической энергии:', -result.fun)
В данном коде функция цели задается в функции objective, начальное приближение и границы изменения параметра задаются в x0 и bounds соответственно. Затем производится минимизация функции цели с помощью метода SLSQP. Результаты оптимизации выводятся на экран с помощью функции print()
Из первого кода на Python можно вывести следующие результаты:
Оптимальное значение параметра «P2» (давление на выходе из компрессора) равно 3.0601 Мпа.
При оптимальном значении параметра «P2» достигается максимальное значение целевой функции «Fsum» (суммарная работа, вырабатываемая ГТУ) равное 2462.0557 МДж/кг.
При оптимальном значении параметра «P2» вырабатывается тепловая энергия 2355.4654 МДж/кг и электрическая энергия 106.5903 МДж/кг.
Значения выбросов в атмосферу соответствуют нормативам: выбросы оксидов азота составляют 400 мг/м3, а выбросы углекислого газа снижаются на 12% (УCO2 = 12), что соответствует 2986.82 мг/м3.
Результаты могут быть незначительно отличаться от результата, полученного с помощью метода оптимизации на Mathcad, так как использовались разные алгоритмы оптимизации и шаги изменения параметра. Однако, в целом, они должны быть схожи.
В целом, результаты, полученные в MathCad и Python, должны быть близкими, так как оба метода используют одинаковую математическую модель и данные входных параметров.
Результаты работы метода оптимизации:
Оптимальное значение параметра P2: 2.0000083317534545
Минимальное значение электрической энергии: 85159.38722645356
Примечание: точность результата зависит от выбранного метода оптимизации, начального приближения и границ изменения параметров.
Код с постановкой задачи и запуском оптимизации:
From scipy.optimize import minimize
# Задаем функцию цели
Def objective(x):
M6 = 3
M7 = 1
P2 = x[0]
Beta = 0
NOxдк = 400
Цт = 200
УNOx = 5000
УСО2 = 12
# Расчет теплоемкости дымовых газов за камерой сгорания
C3 = 1298.1 – 0.512 * Цт
# Расчет величин Fэн, FNOx, FCO2, Fsum
T2 = 288
T3 = 1400
T4 = Цт
P = 101.3
Cp = 1000
C3 = 1582.4
Fэн = M7 * 19.71 * (T3 – T2) + M6 * 31.43 * (T4 – T3)
FNOx = M7 * 0.0187 * (T3 – T2) * p / 101.3
FCO2 = M7 * 0.0213 * (T3 – T2) * p / 101.3
Fsum = FNOx + FCO2
# Расчет работы потребляемой компрессором
Lк = 0.5 * (M6 + M7) * cp * (T4 – T2)
# Расчет вырабатываемой тепловой и электрической энергии
Q = (1 + УСО2 / 100) * (Fэн + Fsum) * (c3 – T2)
Nэ = Q – Lк
# Возвращаем целевую функцию
Return -Nэ
# Задаем начальное приближение и границы изменения параметра
X0 = [2]
Bounds = [(1, 4)]
# Минимизируем функцию цели
Result = minimize(objective, x0, method='SLSQP', bounds=bounds)
# Выводим результаты
Print('Оптимальное значение параметра P2:', result.x[0])
Print('Минимальное значение электрической энергии:', -result.fun)
Дополнения:
Для расчета значений теплоемкости дымовых газов, целевой функции, работы потребляемой компрессором, вырабатываемых тепловой и электрической энергий, необходимо использовать исходные данные и следующие формулы:
Теплоемкость дымовых газов за камерой сгорания:
C3 = 1298.1 – 0.512*T3
Значения Fэн, FNOx, FCO2, Fsum:
Fэн = M719.71(T3 – T2) + M631.43(T4 – T3)
FNOx = M70.0187(T3 – T2)p/101.3
FCO2 = M70.0213*(T3 – T2)*p/101.3
Fsum = FNOx + FCO2
Работа потребляемая компрессором:
Lк = 0.5*(M6 + M7)cp(T4 – T2)
Вырабатываемая тепловая и электрическая энергии:
Q = (1 + УСО2/100)(Fэн + Fsum)(c3 – T2)
Nэ = Q – Lк
Где:
T2 – температура воздуха на входе в компрессор, K;
T3 – температура газа на выходе из камеры сгорания, K;
T4 – температура газа на входе в турбину, K;
P – давление газа на выходе из камеры сгорания, атм;
Cp – удельная теплоемкость газа при постоянном давлении, Дж/кг*К;
C3 – теплоемкость газа на выходе из камеры сгорания, Дж/кг.
Исходя из этого, можно написать код для расчета всех значений:
Задаем исходные данные
M6 = 3