АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Практическая часть. Расчет кинетики реакции

Читайте также:
  1. II. Практическая часть.
  2. II. Практическая часть.
  3. Аналитическая часть.
  4. Аналитическая часть.
  5. Взвешенный метод наименьших квадратов (ВМНК). Простейшая модель гетероскедастичности случайного остатка. Практическая реализация ВМНК.
  6. Глава 1. Комплектование библиотечных фондов, как практическая проблема
  7. Основная часть.
  8. Основная часть.
  9. Основная часть. Расчет индивидуального задания
  10. Паспортная часть.
  11. Первая Всероссийская научно-практическая конференция в Голицыно проходила в
  12. Практическая значимость

Расчет кинетики реакции

Исходные данные:

A B

C E F G

D

G-?

Начальные концентрации: CA0= 200г/л; CB0=0г/л; CC0= 130г/л; CD0= 0г/л; CE0= 0г/л; CF0= 10г/л; CG0= 0г/л;

Константы скоростей: k1=0.003 c-1; k2=0.09 c-1; k3=0.2 c-1; k4=0.07 c-1; k5=0.055 c-1; k6=0.02 c-1; k7=0.035 c-1;

 

переделать

На рисунке 3 приведена блок-схема решения задачи в общем виде, где концентрации компонентов Сi, представленных как А, В, С, D, E, F, G для предыдущих (n-x) расчетов и как А1, В1,С1, D1, E1, F1 и G1 для последующих (n+1-x) расчетов. При достижении максимальной величины концентрации G, равной СG mах, решение задачи прекращается.

 

 

G, τ
G>G1
A=A1 B=B1 C=C1 D=D1 E=E1 C=C1 G=G1 τ =τ+∆ τ  
a1 = a + (-k1 * a - k2 * a - k3 * a) * dt b1 = b + k1 * a * dt c1 = c + (k2 * a - k4 * c) * dt d1 = d + k3 * a * dt e1 = e + (k4 * c - k5 * e + k6 * f) * dt f1 = f + (k5 * e - k6 * f - k7 * f) * dt g1 = g + k7 * f * dt  
a=Ca0,b=Cb0,c=Cc0,d=Cd0,e=Ce0,f=Cf0,g=Cg0
Ca0,Cb0,Cc0,Cd0,Ce0,Cf0,Cg0,k1,k2,k3,k4,k5,k6,k7,dt

 

Найдем основной компонент G методом дифференциальных уравнений:

Код программы

CLS

ca0 = 300: cb0 = 0: cc0 = 130: cd0 = 0: ce0 = 50: cf0 = 10: cg0 = 0

k1 =.003: k2 =.09: k3 =.02: k4 =.07: k5 =.055: k6 =.02: k7 =.035

INPUT "dt="; dt

t = 0

a = ca0: b = cb0: c = cc0: d = cd0: e = ce0: f = cf0: g = cg0

30 a1 = a + (-k1 * a - k2 * a - k3 * a) * dt

b1 = b + k1 * a * dt

c1 = c + (k2 * a - k4 * c) * dt

d1 = d + k3 * a * dt

e1 = e + (k4 * c - k5 * e + k6 * f) * dt

f1 = f + (k5 * e - k6 * f - k7 * f) * dt

g1 = g + k7 * f * dt

IF g1 > g THEN 10 ELSE 20

10 a = a1: b = b1: c = c1: d = d1: e = e1: f = f1: g = g1: t = t + dt

GOTO 30

20 PRINT "g=", g, "t=", t

END

РЕЗУЛЬТАТЫ ВЫЧИСЛЕНИЯ ПРОГРАММЫ

dt=? 1

g= 428.9373 t= 638

 

Поскольку точность решения задачи по методу Эйлера зависит от величины шага интегрирования (чем меньше шаг, тем точнее решение, но больше продолжительность расчета), рассмотрим принципы автоматического обеспечения правильности расчета, задав погрешность определения концентрации СG.

В число исходных данных вводим произвольно малое значение Gmax, например, Gmax=0. После определения лучшей концентрации компонента G в ходе расчета кинетики с шагом Δτ и сравнения G с Gmax расчет полностью повторяют с уменьшенным в 2-10 раз шагом интегрирования приемлемого совпадения G и Gmax. Как видно из рисунка 2 получение верного решения достигается дополнением блок-схемы принципиального решения (рисунок 2) всего двумя блоками (8 и 9).

Ca0,Cb0,Cc0,Cd0,Ce0,Cf0,Cg0,k1,k2,k3,k4,k5,k6,k7,dt,Gmax=0
Gmax=G
G, τ
│G-Gmax│<0.001G
A=A1 B=B1 C=C1 D=D1 E=E1 C=C1 G=G1 τ =τ+∆ τ  
G>G1
a=Ca0,b=Cb0,c=Cc0,d=Cd0,e=Ce0,f=Cf0,g=Cg0
a1 = a + (-k1 * a - k2 * a - k3 * a) * dt b1 = b + k1 * a * dt c1 = c + (k2 * a - k4 * c) * dt d1 = d + k3 * a * dt e1 = e + (k4 * c - k5 * e + k6 * f) * dt f1 = f + (k5 * e - k6 * f - k7 * f) * dt g1 = g + k7 * f * dt  

Рисунок 2 – Блок-схема расчета кинетики реакции с автоматическим обеспечением правильности расчета

 

Код программы

CLS

ca0 = 300: cb0 = 0: cc0 = 130: cd0 = 0: ce0 = 50: cf0 = 10: cg0 = 0

k1 =.003: k2 =.09: k3 =.02: k4 =.07: k5 =.055: k6 =.02: k7 =.035

INPUT "dt="; dt

60 t = 0

a = ca0: b = cb0: c = cc0: d = cd0: e = ce0: f = cf0: g = cg0

30 a1 = a + (-k1 * a - k2 * a - k3 * a) * dt

b1 = b + k1 * a * dt

c1 = c + (k2 * a - k4 * c) * dt

d1 = d + k3 * a * dt

e1 = e + (k4 * c - k5 * e + k6 * f) * dt

f1 = f + (k5 * e - k6 * f - k7 * f) * dt

g1 = g + k7 * f * dt

IF g1 > g THEN 10 ELSE 20

10 a = a1: b = b1: c = c1: d = d1: e = e1: f = f1: g = g1: t = t + dt

GOTO 30

20 IF ABS(g - gmax) <.01 * g THEN 40 ELSE 50

50 gmax = g: dt = dt / 2: PRINT "dt="; dt

GOTO 60

40 PRINT "g=", g, "t=", t

END

РЕЗУЛЬТАТЫ ВЫЧИСЛЕНИЯ ПРОГРАММЫ

dt=? 1

dt=.5

g= 428.9369 t= 609.5

 

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

1Способ:

Если продолжительность реакции примерно известна, то приняв Δτrep, можно сделать следующую вставку между блоками 4 и 5; во вставке j – время по оси реперных точек:

 

A1,B1,C1,D1,E1,C1,G1,j  

Код программы

CLS

ca0 = 300: cb0 = 0: cc0 = 130: cd0 = 0: ce0 = 50: cf0 = 10: cg0 = 0

k1 =.003: k2 =.09: k3 =.02: k4 =.07: k5 =.055: k6 =.02: k7 =.035

INPUT "dt="; dt

1 t = 0

a = ca0: b = cb0: c = cc0: d = cd0: e = ce0: f = cf0: g = cg0

30 a1 = a + (-k1 * a - k2 * a - k3 * a) * dt

b1 = b + k1 * a * dt

c1 = c + (k2 * a - k4 * c) * dt

d1 = d + k3 * a * dt

e1 = e + (k4 * c - k5 * e + k6 * f) * dt

f1 = f + (k5 * e - k6 * f - k7 * f) * dt

g1 = g + k7 * f * dt

FOR j = 0 TO 600 STEP 60

IF j = t + dt THEN 5 ELSE 6

5 PRINT a1; b1; c1; d1; e1; f1; g; j

6 NEXT j

IF g1 > g THEN 10 ELSE 20

10 a = a1: b = b1: c = c1: d = d1: e = e1: f = f1: g = g1: t = t + dt

GOTO 30

20 IF ABS(g - gmax) <.01 * g THEN 40 ELSE 50

50 gmax = g: dt = dt / 2: PRINT "dt="; dt: GOTO 1

40 PRINT "g=", g, "t=", t

END

РЕЗУЛЬТАТЫ ВЫЧИСЛЕНИЯ ПРОГРАММЫ

428.9316 540

1.703303E-29 7.964601 9.31933E-17 53.09734 5.97196E-04 9.903376E-04

428.9361 600

dt=.5

.2793506 7.957183 9.956594 53.04789 93.76899 119.8573 203.0227 60

2.601226E-04 7.964593.1460681 53.09728 24.36211 39.61463 364.1142 120

2.42218E-07 7.964597 2.03864E-03 53.09731 6.493336 10.75564 411.4967

2.255458E-10 7.964597 2.836082E-05 53.09731 1.738846 2.883373 424.2647

2.100213E-13 7.964597 3.944601E-07 53.09731.4657882.7724198 427.6861

1.955653E-16 7.964597 5.486319E-09 53.09731.1247737.2069138 428.6027

1.821043E-19 7.964597 7.630598E-11 53.09731 3.342399E-02 5.542741E-02

428.8481 420

1.695699E-22 7.964597 1.061295E-12 53.09731 8.95351E-03 1.484772E-02

428.9138 480

1.578982E-25 7.964597 1.476093E-14 53.09731 2.398437E-03 3.977357E-03

428.9314 540

1.470299E-28 7.964597 2.05301E-16 53.09731 6.424856E-04 1.065442E-03

428.9363 600

g= 428.9369 t= 609.5

Способ.

Если τр неизвестна, то вставка между блоками 4 и 5 примет вид:

Код программы

CLS

ca0 = 300: cb0 = 0: cc0 = 130: cd0 = 0: ce0 = 50: cf0 = 10: cg0 = 0

k1 =.003: k2 =.09: k3 =.02: k4 =.07: k5 =.055: k6 =.02: k7 =.035: dtr = 60

INPUT "dt="; dt

j = dt

60 t = 0: j = dtr

a = ca0: b = cb0: c = cc0: d = cd0: e = ce0: f = cf0: g = cg0

30 a1 = a + (-k1 * a - k2 * a - k3 * a) * dt

b1 = b + k1 * a * dt

c1 = c + (k2 * a - k4 * c) * dt

d1 = d + k3 * a * dt

e1 = e + (k4 * c - k5 * e + k6 * f) * dt

f1 = f + (k5 * e - k6 * f - k7 * f) * dt

g1 = g + k7 * f * dt

IF j = t + dt THEN 150 ELSE 160

150 PRINT a1; b1; c1; d1; e1; f1; g1; j

j = j + dtr

160 GOTO 170

170 IF g1 > g THEN 10 ELSE 20

10 a = a1: b = b1: c = c1: d = d1: e = e1: f = f1: g = g1: t = t + dt

GOTO 30

20 IF ABS(g - gmax) <.01 * g THEN 40 ELSE 50

50 gmax = g: dt = dt / 2: PRINT "dt="; dt

GOTO 60

40 PRINT "g=", g, "t=", t

END

РЕЗУЛЬТАТЫ ВЫЧИСЛЕНИЯ ПРОГРАММЫ

2.269211E-26 7.964601 7.251169E-15 53.09734 2.245724E-03 3.724113E-03

428.9317 540

1.703303E-29 7.964601 9.31933E-17 53.09734 5.97196E-04 9.903376E-04

428.9361 600

dt=.5

.2793506 7.957183 9.956594 53.04789 93.76899 119.8573 205.1326 60

2.601226E-04 7.964593.1460681 53.09728 24.36211 39.61463 364.8149 120

2.42218E-07 7.964597 2.03864E-03 53.09731 6.493336 10.75564 411.687 180

2.255458E-10 7.964597 2.836082E-05 53.09731 1.738846 2.883373 424.3157

2.100213E-13 7.964597 3.944601E-07 53.09731.4657882.7724198 427.6998

1.955653E-16 7.964597 5.486319E-09 53.09731.1247737.2069138 428.6063

1.821043E-19 7.964597 7.630598E-11 53.09731 3.342399E-02 5.542741E-02

428.849 420

1.695699E-22 7.964597 1.061295E-12 53.09731 8.95351E-03 1.484772E-02

428.9141 480

1.578982E-25 7.964597 1.476093E-14 53.09731 2.398437E-03 3.977357E-03

428.9315 540

1.470299E-28 7.964597 2.05301E-16 53.09731 6.424856E-04 1.065442E-03

428.9363 600

g= 428.9369 t= 609.5

Блок-схема расчета кинетики реакции

A B

C E F G

D

с автоматическим обеспечением правильности решения и выводом данных по кинетике реакции в реперных точка

Код программы

CLS

ca0 = 300: cb0 = 0: cc0 = 130: cd0 = 0: ce0 = 50: cf0 = 10: cg0 = 0

k1 =.003: k2 =.09: k3 =.02: k4 =.07: k5 =.055: k6 =.02: k7 =.035

n = 200

dtr = 39

DIM a0(n), b0(n), c0(n), d0(n), e0(n), f0(n), g0(n), a(n), b(n), c(n), d(n), e(n), f(n), g(n)

INPUT "dt="; dt

FOR i = 1 TO n

a0(i) = 0: b0(i) = 0: c0(i) = 0: d0(i) = 0: e0(i) = 0: f0(i) = 0: g0(i) = 0

NEXT i

150 t = 0: i = 0: k = 0: j = dtr

a = ca0: b = cb0: c = cc0: d = cd0: e = ce0: f = cf0: g = cg0

a(i) = a: b(i) = b: c(i) = c: d(i) = d: e(i) = e: f(i) = f: g(i) = g

50 a1 = a + (-k1 * a - k2 * a - k3 * a) * dt

b1 = b + k1 * a * dt

c1 = c + (k2 * a - k4 * c) * dt

d1 = d + k3 * a * dt

e1 = e + (k4 * c - k5 * e + k6 * f) * dt

f1 = f + (k5 * e - k6 * f - k7 * f) * dt

g1 = g + k7 * f * dt

IF j = t THEN GOTO 10 ELSE 20

10 i = i + 1: k = k + 1

a(i) = a: b(i) = b: c(i) = c: d(i) = d: e(i) = e: f(i) = f: g(i) = g

j = j + dtr

20 IF g1 > g THEN GOTO 30 ELSE GOTO 40

30 a = a1: b = b1: c = c1: d = d1: e = e1: f = f1: g = g1

t = t + dt

GOTO 50

40 tOPT = t

gmax = g

FOR i = 1 TO k

IF ABS(a0(i) - a(i)) <.01 * a(i) THEN GOTO 70 ELSE GOTO 130

70 IF ABS(b0(i) - b(i)) <.01 * b(i) THEN GOTO 80 ELSE GOTO 130

80 IF ABS(c0(i) - c(i)) <.01 * c(i) THEN GOTO 90 ELSE GOTO 130

90 IF ABS(d0(i) - d(i)) <.01 * d(i) THEN GOTO 100 ELSE GOTO 130

100 IF ABS(e0(i) - e(i)) <.01 * e(i) THEN GOTO 110 ELSE GOTO 130

110 IF ABS(f0(i) - f(i)) <.01 * f(i) THEN GOTO 120 ELSE GOTO 130

120 IF ABS(g0(i) - g(i)) <.01 * g(i) THEN GOTO 60 ELSE GOTO 130

60 NEXT i

GOTO 140

130 dt = dt / 2: PRINT "dt="; dt

FOR i = 1 TO n

a0(i) = a(i): b0(i) = b(i): c0(i) = c(i): d0(i) = d(i): e0(i) = e(i): f0(i) = f(i): g0(i) = g(i)

NEXT i

GOTO 150

140 j = dtr

FOR i = 1 TO k

PRINT a(i); b(i); c(i); d(i); e(i); f(i); g(i); j

j = j + dtr

NEXT i

PRINT "tOPT="; tOPT; "gmax="; g

END

РЕЗУЛЬТАТЫ ВЫЧИСЛЕНИЯ ПРОГРАММЫ

dt=.125

dt=.0625

dt=.03125

dt=.015625

dt=.0078125

dt= 3.90625E-03

3.653958 7.867608 41.76391 52.45067 142.5556 132.2051 109.5032 39

4.450447E-02 7.963397 3.128239 53.08921 63.13806 91.61901 271.0163 78

5.420607E-04 7.964242.208884 53.0944 26.42174 42.72292 359.5831 117

6.602178E-06 7.964242 1.367833E-02 53.0944 11.21387 18.51671 399.1925

8.041361E-08 7.964242 8.924915E-04 53.0944 4.780559 7.922224 416.2341

9.79429E-10 7.964242 5.819509E-05 53.0944 2.039757 3.38219 423.5142 234

1.192925E-11 7.964242 3.794126E-06 53.0944.870446 1.443447 426.6267

1.452971E-13 7.964242 2.473593E-07 53.0944.3714626.6159993 427.9482

1.769688E-15 7.964242 1.612655E-08 53.0944.1585222.2628793 428.5064

2.155456E-17 7.964242 1.051368E-09 53.0944 6.764965E-02.1121842

428.8111 390

tOPT= 390.2383 gmax= 428.8129

 

 


1 | 2 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.022 сек.)