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

Расчет основных характеристик сепаратора высокого давления блока предварительной гидроочистки бензина                                                         установки каталитического риформинга.                                                                  

Автор:      Пуцко И.В.                                                                                                     

Дата:        20.05.1999                                                                                                                                                 

Язык:       Турбо Паскаль 7.0                                                                                       

Uses CRT;

const

Eps = 0.0001;

MaxStrLen = 14;

SepVertikal = True;

CRLF = #13#10;

type

TVect        = array [1..7] of    Real;

TVectStr    = array [1..7] of   String [MaxStrLen];

const

M:  TVect    =  (2,             16,            30,           44,           58,          123.4,           34);

M:  TVect    =  (388.44,    111.44,     29.93,      11.98,      6.95,       240.82,         1.1);

K:  TVect    =   (38.4,        5.84,        1.23,         0.54,        0.2,         0.0015,         0.88);   

L1: TVectStr  =  ( 'Водород',    'Метан',   'Этан',   'Пропан',

'Бутан',   'Гидрогенизат',   'Сероводород' ); 

var

G_cvsg, x, y, x1, x2, x3:  TVect;

a, b, y1, t, p, w, dd, Vv, V_v, Ee, s, D, h1, hs,nn,

xx1, xx2, xx3, F, V, z, g_zagr, G_cvsg1, D1, Vg,

Ug, Ho, Gg, U_cvsg, N_cvsg, N_cvsg1, Diam,

Hg, Hp, Tau, Tau1, Hopor : Real;

i:  Integer;

FOut: Text;

{----------------------------------------------}

PROCEDURE  InputParm (S: String;  var  Value:  Real);

BEGIN

Write (FOut,  S,  ' = ');

TextAttr  :=$1E;

while Length (S)  < 45 do  S :=S + ' . ';

Write ('      ',  chr ($FE),  '  ',  S,  '  ');

ReadLn (Value);

WriteLn (Fout,  Value:3:4);

END;

{----------------------------------------------}

PROCEDURE  TabLine;

BEGIN;

Write ('   ' :10);

      for   i:=1 to 57 do 

Write (chr($CD)); 

WriteLn

END;

{----------------------------------------------}

BEGIN

Assign ( Fout, ' separat.dat' );

Rewrite ( Fout );

WriteLn ( Fout,  'Исходные данные:',  CRLF );

TextMode (Co80);

Window (5,  19,  75,  25);

TextAttr  :=  $1F;

ClrScr;

WriteLn ('Введите следующие параметры' :48,  CRLF);

InputParm ( 'Суммарное кол-во кмолей  (Nцвсг) ', N_cvsg);

Window (1, 1, 80, 17);

TextAttr  := 7;

nn  :=0;

       for  i  := 1  to 7 do

nn  := nn + N[ i ];

a  :=  0; b  := 1.1*N_cvsg;

      repeat

N_cvsg1  :=  (a+b) / 2;

             for  i  := 1 to 7 do

                 begin

x1 [ i ]  :=  N [ i ]  /  (nn +  N_cvsg1*(K [ i ] -1));

x2 [ i ]  :=  N [ i ]  /  (nn + a*(K[ i ] - 1));

x3 [ i ]  :=  N [ i ]  /  (nn + b*(K[ i ] - 1))

end;

xx1  :=  0;  xx2  :=  0;  xx3  :=0;

for  i  :=  1  to  7  do

                 begin

xx1  :=  xx1  +  x1 [ i ];

xx2  :=  xx2  +  x2 [ i ];

xx3  :=  xx3  +  x3 [ i ]

end;

      if  (xx1 >  1)  and  (xx2  <=1)  then

b := N_cvsg1

else

a  := N_cvsg1;

until   abs (xx1-xx3)  < Eps;

N_cvsg1  := b;

If    (N_cvsg1 < 0.9*N_cvsg)  or  (N_cvsg1 > 1.1*N_cvsg)  then 

begin      

WriteLn ( ' Измените условия!!!!!!!!! ');

Halt

end;

xx1  := 0;  y1  := 0;

      for  i  :=  1 to  do

         begin

x [ i ]  := N [ i ] / (nn+N_cvsg1*(K [ i ] - 1));  xx1 :=xx1+x [ i ];

y [ i ]  :=K [ i ]*x [ i ];

y1    :=y1+y [ i ]

end;

WriteLn ('Состав равновесной паровой смеси: ':55,  CRLF);

TabLine;

WriteLn ( 'N': 12,  'Hазвание' :12,  'M' :7,  'K' :8,  'N':9,  ' x'' ' :9,  ' y '' ' :8;

TabLine;

for   i  :=  1  to  7  do

WriteLn (i : 12, '  ', L1 [ i ], '  ' : MaxStrLen-Length (L1 [ i ] ),

M [ i ] : 6 : 2,  K [ i ] : 9 : 4,  N [ i ] : 8 : 2,  x [ i ] : 8 : 4,  y [ i ] : 8 :4);

TabLine;

WriteLn ( ' Итого:                 -----------         -----------  ' : 42,  nn : 8 : 2,  xx1 : 8 : 4, y1 : 8 : 4);