четверг, 16 марта 2017 г.

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


Выполняется пересчет точки росы природного газа в зависимости от изменения давления. Как промежуточная величина, в результат расчета также выводится концентрация влаги в природном газе.
Расчет востребован при локализации мест вероятного гидратообразования в газопроводах.
Пересчет точки росы природного газа в концентрацию водяных паров и дальнейший пересчет полученного значения содержания влаги в точку росы для искомого давления выполняется по формуле (2) ГОСТ 20060-83.
Примечание. Расчет коэффициентов полинома для таблицы 1 (к расчетной формуле  2 ГОСТ 20060-83) представлен в методике расчета «Пересчет точки росы природного газа в концентрацию паров воды».
Ссылка на онлайн-расчет:


Исходный код (PHP):
<?php
// Внимание!
// проверки на адекватность исходных данных
// выполняются на стороне клиента!
//
header('Content-Type^ text/html; charset=utf-8');
if ($_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest'){
       if ($_POST){
             // исходные данные из приложения
             $tn  = $_POST['tn'];// точка росы, по Цельсию
             $pn  = $_POST['pn'];// избыточное давление газа, кгс/см2
             $prt  = $_POST['prt'];// атмосферное давление, мм рт.ст.
             $pk  = $_POST['pk'];// искомое избыточное давление газа, кгс/см2
             // децимальный разделитель
             $tn = str_replace(",", ".", $tn);
             $pn = str_replace(",", ".", $pn);
             $prt = str_replace(",", ".", $prt);
             $pk = str_replace(",", ".", $pk);
             // расчет
             $patm = $prt*0.001359511;// атмосферное давление из мм рт.ст. в кгс/см2
             $pabs = $pn+$patm;// абсолютное давление точки росы, кгс/см2
             $pabs = $pabs*0.0980665*1000;// абсолютное давление, кПа
             $kx = $tn;
             $ka = 4.70071705147745+0.327455845285238*$kx+0.0107188260573598*$kx*$kx+0.000231555705067591*$kx*$kx*$kx+2.4753802785101e-6*$kx*$kx*$kx*$kx;
             $kb = 0.041824424637353+0.00220282911502024*$kx+0.0000500214593041303*$kx*$kx+6.47627910377323e-7*$kx*$kx*$kx+4.443336151276614e-9*$kx*$kx*$kx*$kx;
             $water = $ka*101.325/$pabs+$kb;// влагосодержание, г/м3
             //
             $pabs = $pk+$patm;// заданное абсолютное давление, кгс/см2
             $pabs = $pabs*0.0980665*1000;// абсолютное давление, кПа
             // первая итерация
             $tbegin = (-40); $tend = 40; $tdelta = ($tend-$tbegin)/99; $wdelta = 1000;
             for ($z=1; $z<=100; $z++){
                    $kx = $tbegin+$tdelta*($z-1);
             $ka = 4.70071705147745+0.327455845285238*$kx+0.0107188260573598*$kx*$kx+0.000231555705067591*$kx*$kx*$kx+2.4753802785101e-6*$kx*$kx*$kx*$kx;
                    $kb = 0.041824424637353+0.00220282911502024*$kx+0.0000500214593041303*$kx*$kx+6.47627910377323e-7*$kx*$kx*$kx+4.443336151276614e-9*$kx*$kx*$kx*$kx;
             $wx = $ka*101.325/$pabs+$kb;
             if(Abs($wx-$water)<$wdelta){
                           $tx = $kx;
                           $wdelta = Abs($wx-$water);
                    }
             }
             // вторая итерация с меньшим шагом пересчета
             $tbegin = $tx-$tdelta*1.2; $tend = $tx+$tdelta*1.2; $tdelta = ($tend-$tbegin)/99; $wdelta = 1000;
             for ($z=1; $z<=100; $z++){
                    $kx = $tbegin+$tdelta*($z-1);
             $ka = 4.70071705147745+0.327455845285238*$kx+0.0107188260573598*$kx*$kx+0.000231555705067591*$kx*$kx*$kx+2.4753802785101e-6*$kx*$kx*$kx*$kx;
                    $kb = 0.041824424637353+0.00220282911502024*$kx+0.0000500214593041303*$kx*$kx+6.47627910377323e-7*$kx*$kx*$kx+4.443336151276614e-9*$kx*$kx*$kx*$kx;
             $wx = $ka*101.325/$pabs+$kb;
             if(Abs($wx-$water)<$wdelta){
                           $tx = $kx;
                           $wdelta = Abs($wx-$water);
                    }
             }
             $htr = $tx;
             //
             $water = number_format($water, 3);
             $water = str_replace(",","",$water);
             $water = str_replace(".",",",$water);
             //
             $htr = number_format($htr, 1);
             $htr = str_replace(",","",$htr);
             $htr = str_replace(".",",",$htr);
             //
             $resrt = '<p>Концентрация влаги в природном газе: '.$water.' г/м<sup>3</sup></p>';
             print $resrt.'<p>Точка росы для искомого давления: '.$htr.' по Цельсию</p>';
       }
}
?>