Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабор.практ._Мат. моделир.ХТП 2013.doc
Скачиваний:
524
Добавлен:
29.05.2015
Размер:
4.37 Mб
Скачать

Приложение е Программы расчета гомогенных химических реакторов

Обозначения, принятые в программах:

n – число компонентов;

m – число реакций;

l – число значений времени контакта;

R=8.314 – универсальная газовая постоянная, Дж/(моль*К);

R1=0.00845 – универсальная газовая постоянная, м3*МПа/(кмоль*К);

PP – давление в реакторе, МПа;

c – концентрация компонентов;

a, b, p, d – коэффициенты температурной зависимости для расчёта теплоёмкости;

f – правые части уравнений математической модели;

k – константы скорости химической реакции;

k0 – предэкспоненциальные множители;

E – энергии активации;

Q – тепловые эффекты реакции;

tau – массив значений времени контакта;

t – текущее время;

tk – конечное время;

h – шаг по времени;

tem – текущее значение температуры;

xa – степень превращения;

ca0,cb0,cc0,cd0 – начальные значения концентраций компонентов;

tem0 – начальная температура;

i,j – переменные циклов;

jn – счётчик шагов;

nn – количество шагов, через которое производится запись результатов;

cp – теплоёмкость реакционной смеси;

cc,s – вспомогательные величины, необходимые для расчётов;

f1,f2 – файловые переменные.

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

Program RIV;

Const n=4;

m=2;

R=8.314;

R1=0.00845;

PP=0.103;

Type mas1=array[1..n] of real;

mas2=array[1..n+1] of real;

mas3=array[1..m] of real;

Var c,a,b,p,d:mas1;

f:mas2;

k,k0,E,Q:mas3;

t,tk,h,tem,xa,ca0,cb0,cc0,cd0,tem0:real;

i,j,jn,nn:integer;

f1,f2:text;

Procedure pr(c:mas1;k,Q:mas3;tem:real;var f:mas2);

var cp,s:real; cc:mas1;

begin

s:=0; {пересчёт концентраций в мольные доли}

for i:=1 to n do

s:=s+c[i];

for i:=1 to n do

cc[i]:=c[i]/s;

cp:=0;

for i:=1 to n do

cp:=cp+(a[i]+b[i]*tem+p[i]*tem*tem+d[i]*tem*tem*tem)*4.1887*cc[i];

f[1]:=-k[1]*c[1];

f[2]:=k[1]*c[1]-k[2]*c[2];

f[3]:=k[2]*c[2];

f[4]:=k[2]*c[2];

f[5]:=(Q[1]*k[1]*c[1]+Q[2]*k[2]*c[2])*R1*tem/PP/cp;

end;

begin

assign(f1,'driv.pas'); reset(f1);

assign(f2,'rriv.pas'); rewrite(f2);

readln(f1,ca0,cb0,cc0,cd0);

for i:=1 to m do read(f1,k[i]); readln(f1);

for i:=1 to m do read(f1,E[i]); readln(f1);

for i:=1 to m do read(f1,Q[i]); readln(f1);

readln(f1,h,tk,tem0);

for i:=1 to n do readln(f1,a[i],b[i],p[i],d[i]);

for i:=1 to m do

k0[i]:=k[i]/exp(-E[i]/(R*tem0));

nn:=Trunc(Int(tk/h/10));

writeln(f2,' Результаты расчёта');

writeln(f2);

t:=0; jn:=0; c[1]:=ca0; c[2]:=cb0; c[3]:=cc0; c[4]:=cd0; tem:=tem0;

writeln(f2,'Таблица 1 – Расчёт РИВ в стационарном режиме');

writeln(f2,'Время, с n-C8H18 i-C8H18 C4H10 C4H8 T,K Xa');

writeln(f2,t:5:0,c[1]:10:3,c[2]:9:3,c[3]:9:3,c[4]:9:3,tem:10:3);

repeat

t:=t+h; jn:=jn+1;

for i:=1 to m do

k[i]:=k0[i]*exp(-E[i]/(R*tem));

pr(c,k,Q,tem,f);

for i:=1 to n do

c[i]:=c[i]+h*f[i];

tem:=tem+h*f[n+1];

if jn=nn then begin xa:=(ca0-c[1])/ca0;

writeln(f2,t:5:0,c[1]:10:3,c[2]:9:3,c[3]:9:3,c[4]:9:3,tem:10:3,xa:7:3);

jn:=0; end;

until t>=tk;

close(f1); close(f2);

end.