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

Файл с исходными данными

0.0388 0.0 0.0 0.0 {начальные значения концентраций компонентов}

0.12 0.8 {константы скорости химической реакции}

94200 81200 {энергии активации}

7030 -86820 {тепловые эффекты реакции}

0.01 10.0 620{шаг по времени, конечное время, начальная температура}

-1.456 1.842e-1 -1.002e-4 2.115e-8

-2.201 1.877e-1 -1.051e-4 2.316e-8

2.266 7.913e-2 -2.647e-5 -0.674e-9

-0.715 8.436e-2 -4.754e-5 1.066e-8

{a} {b} {p} {d}

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

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

Program RIS;

Const n=4; m=2;

l=6;

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;

mas4=array[1..l] of real;

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

f:mas2;

k,k0,E,Q:mas3;

tau:mas4;

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;tau:mas4;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]:=(ca0-c[1])/tau[j]-k[1]*c[1];

f[2]:=(cb0-c[2])/tau[j]+k[1]*c[1]-k[2]*c[2];

f[3]:=(cc0-c[3])/tau[j]+k[2]*c[2];

f[4]:=(cd0-c[4])/tau[j]+k[2]*c[2];

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

end;

begin {Основная программа}

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

assign(f2,'rris.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 l do read(f1,tau[i]); readln(f1);

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);

for j:=1 to l do

begin

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

writeln(f2,'Таблица-',j,' Расчёт РИС для времени контакта ', tau[j]:4:1,' сек');

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

writeln(f2,t:5:0,c[1]:11:3,c[2]:10:3,c[3]:10:3,c[4]:10:3,tem:12: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,tau,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

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

jn:=0; end;

until t>=tk;

xa:=(ca0-c[1])/ca0;

writeln(f2,'Степень превращения в РИС xa=',xa:5:3);

writeln(f2);

end;

close(f1); close(f2);

end.