среда, 8 марта 2017 г.

Скорость звука в газе и скорость истечения газа


Будем считать, что Вы ознакомились с предыдущими заметками и никаких проблем с расчетом коэффициента сжимаемости газа и показателя адиабаты не испытываете. Разве что необходимо привести выражение для расчета фактической плотности природного газа по условиям трубы (оборудования):
В связи с прикладной важностью этой характеристики газа, ее расчет на сайте было оформлен как самостоятельное решение:


Примечание. В приведенном ниже листинге (PHP) в том числе имеется и функция расчета фактической плотности газа.
Важная часть прикладных задач газовой динамики – расчет расхода газа при его истечении из оборудования. А для того, чтобы определить режим истечения газа (критический или докритический), необходимо сравнить скорость звука в газе (по условиям трубы или оборудования) со скоростью истечения газа из свечной трубы.
 Вот расчетные формулы:

Сравнение результатов расчетов позволит Вам определиться с режимом истечения газа. В случае, если скорость истечения газа превышает скорость звука в газе – режим истечения газа критический, если нет – докритический. Соответственно, для расчетов стравленного объема газа нужно выбирать соответствующую формулу.
Особо подчеркну, что формулу Сен-Венана следует использовать только для того, чтобы определиться с режимом истечения, а не для расчетов объемов стравленного газа!
А теперь о занимательном. Истечения газа переходит из докритического режима в критический при разнице давлений между источником и приемником газа примерно в полторы атмосферы. Однако, при разнице давлений около 260 кгс/см2 скорость звука в газе снова начинает превышать скорость его истечения:



Данный феномен не будет рассмотрен в этом блоге, так как в прикладном аспекте (эксплуатация газотранспортной системы) давления газа свыше 110 кгс/см2 являются абстрактными величинами, а не исходными данными для выполнения вполне практичных и приличных расчетов расхода газа на собственные технологические нужды.

Выполнить расчет скорости звука в газе и скорости истечения газа Вы можете в онлайн-режиме на странице сайта:


Серверная часть расчета (PHP):

<?php
// Внимание!
// проверки на адекватность исходных данных
// выполняются на стороне клиента!
//
header('Content-Type^ text/html; charset=utf-8');
if ($_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest'){
        if ($_POST){
               // исходные данные из приложения
               $ro = $_POST['ro'];// плотность газа абсолютная, кг/м3
               $azot  = $_POST['azot'];// молярная составляющая азота
               $pn  = $_POST['pn'];// избыточное давление газа, кгс/см2
               $prt  = $_POST['prt'];// атмосферное давление, мм рт.ст.
               $tn  = $_POST['tn'];// температура газа, по Цельсию
               // децимальный разделитель
               $ro = str_replace(",", ".", $ro);
               $azot = str_replace(",", ".", $azot);
               $pn = str_replace(",", ".", $pn);
               $prt = str_replace(",", ".", $prt);
               $tn = str_replace(",", ".", $tn);
               // приведение размерности
               $tn = $tn+273.15;// по Кельвину
               $azot = $azot/100;// молярная составляющая в долях единицы
               $patm = $prt*0.001359511;// атмосферное давление в кгс/см2
               $pk = 0;
               // загрузка функций
               function f_delta($ro) {
               // относительная плотность газа
               // ro - плотность газа, кг/м3
               $delta = $ro/1.2044;
               return $delta;
               }
               function f_z($delta, $pn, $patm, $tn){
               // коэффициент сжимаемости газа
               // delta - дельта
               // pn - избыточное давление газа, кгс/см2
               // patm - атмосферное давление, кгс/см2
               // tn - температура газа, по Кельвину
               $pabs = $pn+$patm;// абсолютное давление
               $pmpa = $pabs*0.0980665;// перевод кгс/см2 в МПа
               $z = 1-((10.2*$pmpa-6)*(0.345/100*$delta-0.446/1000)+0.015)*(1.3-0.0144*($tn-283.2));
               return $z;     
               }
               function f_adiabata($azot, $ro, $pn, $patm, $tn){
               // коэффициент адиабаты
               // azot - молярная составляющая азота, доли единицы
               // ro - плотность газа абсолютная, кг/м3
               // pn - избыточное давление, кгс/см2
               // patm - атмосферное давление, кгс/см2
               // tn - температура, по Кельвину
               $pabs = $pn+$patm;// абсолютное давление
               $pmpa = $pabs*0.0980665;// перевод кгс/см2 в МПа
               $k1 = 1.556*(1+0.074*$azot);
               $k2 = 3.9/10000*$tn*(1-0.68*$azot)+0.208*$ro;// последний плюс - не ошибка! потом будем отнимать все сразу
               $k3 = pow(($pmpa/$tn), 1.43)*(384*(1-$azot)*(pow(($pmpa/$tn), 0.8))+26.4*$azot);
               $k = $k1-$k2+$k3;// (Сарданашвили, стр. 44, формула 1.69)
               return $k;     
               }
               function f_rofact($ro, $pn, $patm, $tn, $z){
               // фактическая плотность газа
               // ro - абсолютная плотность газа
               // pn - избыточное давление, кгс/см2
               // patm - атмосферное давление, кгс/см2
               // tn - температура газа, по Кельвину
               // z - коэффициент сжимаемости
               $pabs = $pn+$patm;// абсолютное давление
               $pmpa = $pabs*0.0980665;// перевод кгс/см2 в МПа
               $ud = $ro*(293.15*$pmpa)/($tn*0.101325*$z);
               return $ud;    
               }
               function f_speedsound($tn, $adiabata, $z, $ro){
               // скорость звука в газе, м/с
               // tn - температура газа, по Кельвину
               // adiabata - коэффициент адиабаты
               // z - коэффициент сжимаемости газа
               // ro - плотность газа абсолютная, кг/м3
               $a = ($tn*$adiabata*$z)/$ro;
               $u = 18.591*pow($a, 0.5);
               return $u;     
               }
               function f_speedgas($adiabata, $rofact, $pn, $patm, $pk){
               // скорость истечения газа (по формуле Сен-Венана), м/с
               // adiabata - коэффициент адиабаты
               // rofact - фактическая плотность газа, кг/м3
               // pn - начальное избыточное давление, кгс/см2
               // pk - конечное избыточное давление, кгс/см2
               $pnmpa = ($pn+$patm)*0.0980665;
               $pkmpa = ($pk+$patm)*0.0980665;// внимание! если в атмосферу - то ноль в исходные данные
               $a = $pkmpa/$pnmpa;
               $b =($adiabata-1)/$adiabata; 
               $w = sqrt(2*$adiabata/($adiabata-1)*$pnmpa*1000000/$rofact*(1-pow($a, $b)));
               return $w;     
               }
               // расчет
               $delta = f_delta($ro);
               $z = f_z($delta, $pn, $patm, $tn);// по условиям МГ
               $k = f_adiabata($azot, $ro, $pn, $patm, $tn);
               $ud = f_rofact($ro, $pn, $patm, $tn, $z);
               $u = f_speedsound($tn, $k, $z, $ro);
               $w = f_speedgas($k, $ud, $pn, $patm, $pk);
               //
               if ($u>0 AND $w>0){
                       $u = number_format($u, 1);
                       $w = number_format($w, 1);
                       $u = str_replace(",","",$u);
                       $u = str_replace(".",",",$u);
                       $w = str_replace(",","",$w);
                       $w = str_replace(".",",",$w);
                       $resrt = '<p>Скорость звука в газе: '.$u.' м/сек;</p>';
                       print $resrt.'<p>Скорость истечения газа в атмосферу: '.$w.' м/сек.</p>';
                       if ($w>$u){
                               print '<p>Режим истечения газа в атмосферу - критический.</p>';
                       } else {
                               print '<p>Режим истечения газа в атмосферу - некритический.</p>';
                       }
               } else {
                       print '<p>Ошибка расчета: нулевое значение скорости.</p>';
               }
        }
}
?>