Вычисление степени компрессора, необходимой в сверхзвуковой аэродинамической трубе

Этот пример показывает, как вычислить необходимую степень компрессора в сверхзвуковой аэродинамической трубе.

Описание задачи

В этом разделе описывается задача, которая будет решена. Это также предоставляет необходимые уравнения и известные значения.

Рассчитать, какая степень компрессора требуется для запуска сверхзвуковой аэродинамической трубы фиксированной геометрии при установившемся режиме и запуске для моделирования условий работы потока Mach 2 на высоте 20 километров.

Тестовая секция имеет круглую форму диаметром 25 сантиметров. После тестовой секции находится диффузор фиксированной площади. Аэродинамическая труба использует охладитель, чтобы отклонить дополнительную энергию, которая добавляется в систему компрессором. Поэтому входное отверстие компрессора и испытательная секция имеют одинаковую температуру застоя. Предположим, что компрессор изентропен, а эффекты трения незначительны.

steadyPicture = astsswtschematic('steady');

Приведенная информация в задаче:

diameter = 25/100;  % Diameter of the cross-section [m]
height   = 20e+03;    % Design altitude [m]
testMach = 2.0;     % Mach number in the test section [dimensionless]

Жидкость принята воздушной, и поэтому она имеет следующие свойства.

k  = 1.4;        % Specific heat ratio [dimensionless]
cp = 1.004;     % Specific heat at constant pressure [kJ / (kg * K)]
The cross-section area of the test section is needed from the diameter.
testSectionArea = pi * (diameter)^2 / 4 ; % [m^2]

Поскольку задана проектная высота, решите для условий рейса на этой высоте. Aerospace Toolbox имеет несколько функций для вычисления условий на различных высотах. Одна из таких функций, atmosisa, использует международную стандартную атмосферу, чтобы вычислить условия рейса с левой стороны, учитывая вход высоты:

[testSectionTemp, testSectionSpeedOfSound, testSectionPressure, testSectionDensity] = atmosisa(height);

Эта функция использует следующие модули:

testSectionTemp = Static temperature in the test section        [K]
testSectionSpeedOfSound = Speed of sound in the test section    [m / s]
testSectionPressure = Static pressure in the test section       [kPa]
testSectionDensity = Density of the fluid in the test section   [kg / m^3]

Расчет величин застоя

Необходимо вычислить многие величины застоя (общего) в разделе теста. Отношения локальных статических условий к условиям застоя могут быть вычислены с помощью flowisentropic.

[~,tempRatioIsen, presRatioIsen, ~, areaRatioIsen] = flowisentropic(k, testMach);

Все левосторонние величины являются безразмерными отношениями. Теперь мы можем использовать отношение статической температуры к температуре застоя, чтобы вычислить температуру застоя.

testSectionStagTemp = testSectionTemp / tempRatioIsen;

Оптимальное условие для установившейся операции сверхзвуковой аэродинамической трубы с диффузором фиксированной площади возникает, когда в горле диффузора присутствует нормальный удар. Для оптимального условия площадь горловины диффузора должна быть меньше площади горловины сопла. Принимая идеальный газ с постоянными удельными нагревами, вычислите коэффициент, на который площадь диффузора должна быть меньше площади сопла. Этот расчет получен из упрощенной формы сохранения уравнения массы с суммарными давлениями и площадями поперечного сечения:

$$p_{t_{nozzle}} A^*_{nozzle} = p_{t_{diffuser}} A^*_{diffuser}$$

где

$$p_{t_{nozzle}} = Total\;pressure\;at\;the\;nozzle$$

$$p_{t_{diffuser}} = Total\;pressure\;at\;the\;di\!f\!f\!user$$

$$A^*_{nozzle} = Reference\;area\;for\;sonic\;flow\;at\;the\;nozzle$$

$$A^*_{diffuser} = Reference\;area\;for\;sonic\;flow\;at\;the\;di\!f\!f\!user$$

Переставьте уравнение:

$$\frac{A^*_{diffuser}}{A^*_{nozzle}} =
\frac{p_{t_{nozzle}}}{p_{t_{diffuser}}}$$

Этот пример принимает площадь горловины сопла, испытательную секцию и область потока в горловине диффузора, прежде чем удар окажется в восходящем направлении. Поскольку ударная волна находится на горловине диффузора, площадь горловины диффузора может рассматриваться как в восходящем направлении, так и ниже по течению от удара. Этот пример принимает, что площадь горловины диффузора находится ниже по потоку. Поскольку восходящий поток изентропен до ударной волны, можно использовать число Маха тестовой секции в качестве числа Маха восходящего потока. Это позволяет вам вычислить отношение общего давления через удар, а затем отношение площадей между соплом и площадью диффузора.

Общий коэффициент давления:

$$stagPressRatio = \frac{p_{t_{diffuser}}}{p_{t_{nozzle}}}$$

Вычислите отношение общего давления с помощью функции нормального удара из Aerospace Toolbox:

[~, ~, ~, ~, ~, stagPressRatio] = flownormalshock(k, testMach);

Соотношение площадей при ударе:

$$areaRatioShock = \frac{A^*_{nozzle}}{A^*_{diffuser}}$$

У нас есть следующее выражение, использующее сохранение массы, как обсуждалось ранее.

areaRatioShock = stagPressRatio;

Вычислите площадь диффузора:

diffuserArea = testSectionArea / (areaRatioShock * areaRatioIsen);

Поскольку площадь горловины диффузора меньше площади тестовой секции, число Маха потока должно сходиться к единице. Использование flowisentropic с учетом соотношения площадей в качестве входов вычислите число Маха непосредственно в восходящем направлении удара:

diffuserMachUpstreamOfShock = flowisentropic(k, (1 / areaRatioShock), 'sup');

Использование flownormalshock вычислить свойства потока через ударную волну. Обратите внимание, что здесь снова нам понадобится только общий коэффициент давления:

[~, ~, ~, ~, ~, P0] = flownormalshock(k, diffuserMachUpstreamOfShock);

Расчет работы и степени, необходимой для установившегося случая

Работа, выполняемая компрессором на единицу массы жидкости, равна изменению энтальпии через компрессор. Из определения энтальпии вычислите конкретную работу, выполненную путем знания изменения температуры и удельной теплоты жидкости при постоянном давлении:

$$specificWork = h_{out} - h_{in} = c_p(T_{out} - T_{in})$$

Для изентропного компрессора,

$$\frac{T_{out}}{T_{in}} = \left(\!\frac{p_{out}}{p_{in}}\!\right)^{\!\!\!\frac{k - 1}{k}}$$

Переставьте вышеописанное уравнение, чтобы решить различие температур. Напомним, что температура в компрессоре совпадает с температурой застоя тестовой секции.

$$T_{out}-T_{in} = T_{in}\left[\left(\!\frac{p_{out}}{p_{in}}\!\right)^{\!\!\!\frac{k - 1}{k}} - \:1\right]$$

tempDiff = testSectionStagTemp * ((1 / P0)^((k - 1) / k) - 1); % [K]

Теперь конкретную работу можно найти.

specificWork = cp * tempDiff; % [kJ / kg]

Требуемая степень равна заданному времени работы массовому расходу жидкости. Во время статической операции массовый расход жидкости через испытательную секцию определяется:

$$\dot m = \rho A V = \rho A M a$$

где все величины потока являются значениями в разделе испытаний:

$$\dot m = Mass\;flow\;rate$$

$$\rho = Density$$

$$A = Cross-sectional\;area\;of\;test\;section$$

$$V = Velocity$$

$$M = Mach\;number$$

$$a = Local\;speed\;of\;sound$$

massFlowRate = testSectionDensity * testSectionArea * testMach * testSectionSpeedOfSound; % [kg / s]

Наконец, вычислите степень, необходимую компрессору во время установившейся операции.

powerSteadyState = specificWork * massFlowRate;  % [kW]

Вычисление работы и степени, необходимой во время запуска

startupPicture = astsswtschematic('startup');

Для условия запуска ударная волна находится в тестовой секции. Число Маха непосредственно перед ударной волной является числом тестового участка Маха.

[~, ~, ~, ~, ~, stagPressRatioStartup] = flownormalshock(k, testMach);

Теперь вычислите конкретную работу изентропного компрессора.

specificWorkStartup = cp * testSectionStagTemp * ((1 / stagPressRatioStartup)^((k - 1) / k) - 1); % [kJ / kg]

Затем вычислите степень, необходимую во время запуска:

powerStartup = specificWorkStartup * massFlowRate;   % [kW]

Требуемая во время установившейся операции степени (53,1 кВт) намного ниже, чем требуемая компрессором во время запуска (97,9 кВт). Эти результаты, требуемые мощностью, представляют оптимальные и наихудшие условия операции, соответственно.

power = [powerSteadyState powerStartup];
barGraph = figure('name','barGraph');
bar(power,0.1);
ylabel('Power required [kilowatts]')
set(gca,'XTickLabel',{'powerSteadyState', 'powerStartup'})

close(steadyPicture, startupPicture, barGraph)

Ссылка

[1] James, J. E. A., «Gas Dynamics, Second Edition», Allyn and Bacon, Inc, Boston, 1984.