Рассчитываем разгон компрессора
Напорная характеристика компрессора
Пример иллюстрирует табличный метод задания напорных характеристик компрессора через степень повышения давления, приведенного массового расхода и КПД и расчета динамики разгона на основе этих характеристик.
Подготовка данных
В файлах compressor_map_speed_lines и compressor_map_efficiency_data содержатся линии напорной карты компрессора - точки контуров по частоте вращения и по КПД.
]add JLD2, Interpolations, ScatteredInterpolation
using JLD2, Interpolations, ScatteredInterpolation
@load "compressor_map_speed_lines.jld2"
# Создание матриц для приведенного массового расхода и степеней повышения давления
mdot_TLU = [Line1000[:,1]'; Line1500[:,1]'; Line2000[:,1]'; Line2500[:,1]'; Line3000[:,1]'; Line3500[:,1]']
pr_TLU = [Line1000[:,2]'; Line1500[:,2]'; Line2000[:,2]'; Line2500[:,2]'; Line3000[:,2]'; Line3500[:,2]']
# Создание вектора приведенной скорости
omega_TLU = [1000, 1500, 2000, 2500, 3000, 3500]
# Beta изменяется от 0 до 1. Длина = количество точек на каждой линии
beta_TLU = range(0, 1, length=7)
@load "compressor_map_efficiency_data.jld2"
# Добавим еще одну точку посередине характеристики чтобы избежать пересечения
Eff80 = [Eff80[1:3,:]; [0.55 1.5]; Eff80[4:end, :]]
# Организация данных КПД для использования с интерполяцией
eff_levels = [(Eff80, 0.80), (Eff82, 0.82), (Eff84, 0.84), (Eff86, 0.86), (Eff88, 0.88), (Eff90, 0.90)]
# Вывод графика с характеристикой компрессора
include("create_compressor_map.jl")
p, eta_TLU = create_compressor_map(mdot_TLU, pr_TLU, omega_TLU, eff_levels)
plot!(p)
График контуров показывает, что интерполированные контуры КПД почти соответствуют исходным данным. Кроме того, точки теперь представлены в формате, который может быть использован в блоке "Компрессор".
Сперва характеристика имела слишком упрощенные контуры, поэтому мы произвели интерполяцию изолиний КПД, а затем произвели интерполяцию по более тонкой равномерной сетке значений подобрав подходящее ядро для сглаживания.
В ходе интерполяции возможна потеря точности. Единственный надежный способ избежать такой потери точности состоит в том, чтобы использовать более точные исходные данные. Обратите внимание, данные задаются во вспомогательной системе координат, определяемой приведенной частотой вращения и вспомогательной координатой β.
Расчет компрессора
В этом проекте мы задаем параметры блока Компрессор (Г) из рабочего пространства, при помощи переменных, сгенерированных на основе исходных табличных данных:
omega_TLUbeta_TLUpr_TLUmdot_TLUeta_TLU
Рабочие значения температуры и давления равны температуре во впускном резервуаре и атмосферному давлению. Поэтому значения приведенного массового расхода и приведенной частоты вращения совпадают с фактическими значениями для источника идеальной угловой скорости (поскольку поправочный коэффициент равен единице).
Проследим, как увеличение частоты вращения компрессоры приводит к повышению давления в камере постоянного объема.
engee.open("compressor_map_example.engee")
data = engee.run();
# Температура и давление уже равны рабочим значениям, приводить их не требуется
mdot_corrected = data["Компрессор (Г).mdot_inlet"].value .* 1000; # Свойство хранится в кг/с
PR = data["Компрессор (Г).outlet.p"].value ./ data["Компрессор (Г).inlet.p"].value;
# Выводим линию переходного режима поверх прошлого графика
plot!(mdot_corrected, PR, lw=3, label="Линия приемистости", lc=:black, ls=:dash)
Заключение
Характеристика компрессора хорошо сочетается с исходными данными. Процесс интерполяции вызывает некоторую погрешность, но ее можно минимизировать, улучшив подход к предобработке данных или просто увеличив их количество.

