REDUCE 3.4, 15-Jul-91 ...
1:
(REACTEQN)
% Examples for the conversion of reaction equations to ordinary
% differential equations.
% Example taken from Feinberg (Chemical Engineering):
species := {A1,A2,A3,A4,A5};
SPECIES := {A1,
A2,
A3,
A4,
A5}
reac2ode { A1 + A4 <> 2A1, rho, beta,
A1 + A2 <> A3, gamma, epsilon,
A3 <> A2 + A5, theta, mue};
2
{DF(A1,T)=RHO*A1*A4 - BETA*A1 - GAMMA*A1*A2 + EPSILON*A3,
DF(A2,T)= - GAMMA*A1*A2 + EPSILON*A3 + THETA*A3 - MUE*A2*A5,
DF(A3,T)=GAMMA*A1*A2 - EPSILON*A3 - THETA*A3 + MUE*A2*A5,
2
DF(A4,T)= - RHO*A1*A4 + BETA*A1 ,
DF(A5,T)=THETA*A3 - MUE*A2*A5}
inputmat;
[1 0 0 1 0]
[ ]
[1 1 0 0 0]
[ ]
[0 0 1 0 0]
outputmat;
[2 0 0 0 0]
[ ]
[0 0 1 0 0]
[ ]
[0 1 0 0 1]
% Computation of the classical reaction matrix as difference
% of output and input matrix:
reactmat := outputmat-inputmat;
[1 0 0 -1 0]
[ ]
REACTMAT := [-1 -1 1 0 0]
[ ]
[0 1 -1 0 1]
% Example with automatic generation of rate constants and automatic
% extraction of species.
species := {};
SPECIES := {}
reac2ode { A1 + A4 <> 2A1,
A1 + A2 <> A3,
A3 <> A2 + A5};
new species: A1
new species: A4
new species: A2
new species: A3
new species: A5
2
{DF(A1,T)= - A1 *RATE(2) + A1*A4*RATE(1) - A1*A2*RATE(3) + A3*RATE(4)
,
2
DF(A4,T)=A1 *RATE(2) - A1*A4*RATE(1),
DF(A2,T)= - A1*A2*RATE(3) - A2*A5*RATE(6) + A3*RATE(5) + A3*RATE(4),
DF(A3,T)=A1*A2*RATE(3) + A2*A5*RATE(6) - A3*RATE(5) - A3*RATE(4),
DF(A5,T)= - A2*A5*RATE(6) + A3*RATE(5)}
on rounded;
species := {};
SPECIES := {}
reac2ode { A1 + A4 <> 2A1, 17.3* 22.4**1.5,
0.04* 22.4**1.5 };
new species: A1
new species: A4
2
{DF(A1,T)= - 4.24064598853*A1 + 1834.07939004*A1*A4,
2
DF(A4,T)=4.24064598853*A1 - 1834.07939004*A1*A4}
end;
Quitting