function dNbydt = semibatch(t, N)
% Done on 16-Jul-2001 by M.Subramanian; msubbu@svce.ac.in
%* Problem Statement:
%* It is proposed to produce X, Y, and Z from A and B by chemical reaction
%* on a semibatch basis. That is, 1000 ltrs of pure A of concentration
%* 15 mol/ltr is charged in the reactor and B is added at the rate of
%* 50 ltr/min at a concentration 10 mol/ltr. If all the reactions are
%* second order and are represented stoichiometrically by the equations:
%* A + B --> X k1 = 0.18 ltr/mol.min
%* X + B --> Y k2 = 0.03 ltr/mol.min
%* Y + B --> Z k3 = 0.1 ltr/mol.min
%* Prepare a plot of moles of products formed as a function of time.
k1 = 0.18; % ltr/mol.min
k2 = 0.03; % ltr/mol.min
k3 = 0.1; % ltr/mol.min
Vo = 1000; % ltr. initial volume of reactor contents.
vo = 50; % ltr/min. Flow rate of B
Fbo = 500; % mol/min. Molar flow rate of B
V = Vo + vo*t;
% Notations: A=1; B=2; X=3; Y=4; Z=5;
dNbydt = zeros(5,1); % a column vector
dNbydt(1) = -k1*N(1)*N(2)/V;
dNbydt(2) = Fbo - (k1*N(1)*N(2) + k2*N(3)*N(2) + k3*N(4)*N(2))/V;
dNbydt(3) = (k1*N(1)*N(2) - k2*N(3)*N(2))/V;
dNbydt(4) = (k2*N(3)*N(2) - k3*N(4)*N(2))/V;
dNbydt(5) = k3*N(4)*N(2)/V;
% Issue the following commands in MATLAB-command prompt:
% N0 = [15000 0 0 0 0]'
% [t,N] = ode45('semibatch',[0 150],N0);
% plot(t,N)
%*************************************************