Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet.docx
Скачиваний:
53
Добавлен:
19.04.2015
Размер:
82.1 Кб
Скачать

Блок-схема программы

Рисунок 1. Блок-схема программы

Листинг Файлmain.Php

<?php

$a=0;

$b=0;

$pi=pi();

$R=8.31;

//Задаем пластовые условия

$patm=20000000;

$T=300;

//Метанол CH40

$dolya[1]=0.4;

$Pkr[1]=7990000;

$Tkr[1]=512.6;

$Vkr[1]=0.000118;

$omega[1]=0.559;

//Изобутан C4H10

$dolya[2]=0.1;

$Pkr[2]=3600000;

$Tkr[2]=408.1;

$Vkr[2]=0.000263;

$omega[2]=0.176;

//Дихлорбензин C6H4Cl2

$dolya[3]=0.5;

$Pkr[3]=4050000;

$Tkr[3]=697.3;

$Vkr[3]=0.000360;

$omega[3]=0.272;

$V=0.999997;

$L=0.000003;

include ('api.php');

//Давление нассыщенных паров

for ($i=1;$i<=3;$i++)

{

$Pnas[$i]=exp(5.37*(1+$omega[$i])*(1-$Tkr[$i]/$T))*$Pkr[$i];

$Kraspr[$i]=$Pnas[$i]/$patm;

}

$SUMM=10;

while($SUMM>0.000000000001) {

for ($i=1;$i<=3;$i++)

{

$xx[$i]=$dolya[$i]/($L*($Kraspr[$i]-1)+1);

$yy[$i]=($dolya[$i]*$Kraspr[$i])/($V*($Kraspr[$i]-1)+1);

//echo "x=$xx[$i] y=$yy[$i]<br>";

}

$vapour = calc_v($xx, 1);

$liquid = calc_v($yy, 2);

///echo $liquid.'<br>';

//echo $vapour.'<br>';

$fugV = calc_integral($patm, 100, $vapour);

$fugL = calc_integral($patm, 100, $liquid);

//echo $fugL.'<br>';

//echo $fugV.'<br>';

for ($i=1;$i<=3;$i++) {

$SUMM=0;

$fugitivnostL[$i]=$fugL*$patm*$dolya[$i];

$fugitivnostV[$i]=$fugV*$patm*$dolya[$i];

$SUMM=$SUMM+pow((1-$fugitivnostL[$i]/$fugitivnostV[$i]),2);

$Kraspr[$i]=$fugitivnostL[$i]/$fugitivnostV[$i];

}

}

$xsum=0;

$ysum=0;

for ($i=1;$i<=3;$i++)

{

$xsum=$xsum+$xx[$i];

$ysum=$ysum+$yy[$i];

echo "x=$xx[$i] y=$yy[$i]<br>";

}

echo $xsum.' '.$ysum.'<br>';

echo $SUMM;

?>

Файл api.Php

<?php

function calc_b($Tkr,$Pkr,$R=8.31) {

$b=0.077*$R*$Tkr/$Pkr;

return $b;

}

function calc_a($Tkr,$Pkr,$omega,$T,$R=8.31) {

$apr=0.45*(pow($R*$Tkr,2))/$Pkr;

$Tpr=$T/$Tkr;

$m=0.37+1.5*$omega-0.269*(pow($omega,2));

$alT=1+pow(($m-$Tpr),2);

$a=$apr*$alT;

return $a;

}

function calc_v($dolya = array(), $type) {

$a=0;

$b=0;

$pi=pi();

$R=8.31;

//Задаем пластовые условия

$patm=20000000;

$T=300;

//Метанол CH40

$Pkr1=7990000;

$Tkr1=512.6;

$Vkr1=0.000118;

$omega1=0.559;

//Изобутан C4H10

$Pkr2=3600000;

$Tkr2=408.1;

$Vkr2=0.000263;

$omega2=0.176;

//Дихлорбензин C6H4Cl2

$Pkr3=4050000;

$Tkr3=697.3;

$Vkr3=0.000360;

$omega3=0.272;

//Считаем константы a и b

$a_ar[1]=calc_a($Tkr1,$Pkr1,$omega1,$T);

$a_ar[2]=calc_a($Tkr2,$Pkr2,$omega2,$T);

$a_ar[3]=calc_a($Tkr3,$Pkr3,$omega3,$T);

for ($i=1;$i<=3;$i++) {

for ($j=1;$j<=3;$j++) {

$a=$a+$dolya[$i]*$dolya[$j]*pow($a_ar[$i]*$a_ar[$j],1/2);

}

}

$b_ar[1]=calc_b($Tkr1,$Pkr1);

$b_ar[2]=calc_b($Tkr2,$Pkr2);

$b_ar[3]=calc_b($Tkr3,$Pkr3);

for ($i=1;$i<=3;$i++) {

$b=$b+$b_ar[$i];

}

//Замененные параметры приведенного уравнения Пенга-Робинсона

$c=($b*$patm)/($R*$T);

$d=(($a*(pow($c,2)))/((pow($b,2))*$patm))-(3*(pow($c,2)))-(2*$c);

//Коэффициенты для метода Кардана

$p=$d-((pow(($c-1),2))/3);

$q=(2*(pow(($c-1),3))/27)-((4*$c*$d)/3)-(2*(pow($c,3)))-((pow($c,2)))+($d/3);

$QQ=(pow($p/3,3))+(pow($q/2,2));

if ($QQ<0 && $p<0)

{

$alpha=acos(-$q/(2*(pow(-1*(pow(($p/3),3)),1/2))));

$tay1=2*pow(-$p/3,1/2)*cos($alpha/3);

$tay2=-2*pow(-$p/3,1/2)*cos($alpha/3+$pi/3);

$tay3=-2*pow(-$p/3,1/2)*cos($alpha/3-$pi/3);

if ($type=2) {

if ($tay2<$tay1 && $tay2<$tay3) $tay=$tay2;

if ($tay1<$tay2 && $tay1<$tay2) $tay=$tay1;

if ($tay3<$tay1 && $tay3<$tay1) $tay=$tay3;

}

if ($type=1) {

if ($tay2>$tay1 && $tay2>$tay3) $tay=$tay2;

if ($tay1>$tay2 && $tay1>$tay2) $tay=$tay1;

if ($tay3>$tay1 && $tay3>$tay1) $tay=$tay3;

}

}

elseif ($QQ>=0 && $p>0)

{

$betta=atan((2/$q)*pow($p/3,3/2));

$alpha=atan(pow(tan($betta/2),1/3));

$tay=-2*pow($p/3,1/2)*(1/(tan(2*$alpha)));

}

elseif ($QQ>=0 && $p<0)

{

$betta=asin((2/$q)*(pow(pow((-$p/3),3),1/2)));

echo $betta;

$alpha=atan(pow(tan($betta/2),1/3));

$tay=(-2*pow(-$p/3,1/2))/sin(2*$alpha);

}

$z=$tay+($c-1)/3;

//$v=$z*$R*$T/$patm;

//return $v;

return $z;

}

function calc_integral($p,$dp,$zin) {

$ex=0;

$integral=0;

while ($ex<=$p) {

$integral=$integral+(($zin-1)/$p)*$dp;

$ex=$ex+$dp;

}

return $integral;

}

?>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]