Note
Go to the end to download the full example code.
ODE system for a generic zero-dimensional reactor#
Function REACTOR_ODE
evaluates the system of ordinary differential equations
for a zero-dimensional reactor with arbitrary heat transfer and volume change.
Used in ignite.m.
- Solution vector components:
- y(1):
Total internal energy U
- y(2):
Volume V
- y(3):
Mass of species 1
- ….:
- y(2+nsp):
Mass of last species
function dydt = reactor_ode(t, y, gas, vdot, area, heatflux)
[m, n] = size(y);
dydt = zeros(m, n);
for j = 1:n
this_y = y(:, j);
int_energy = this_y(1);
vol = this_y(2);
masses = this_y(3:end);
% evaluate the total mass, and the specific internal energy and volume.
total_mass = sum(masses);
u_mass = int_energy / total_mass;
v_mass = vol / total_mass;
% set the state of the gas by specifying (u,v,{Y_k})
gas.Y = masses;
gas.UV = {u_mass v_mass};
p = gas.P;
% volume equation
vdt = feval(vdot, t, vol, gas);
% energy equation
a = feval(area, t, vol);
q = feval(heatflux, t, gas);
udt = -p * vdt + a * q;
% species equations
ydt = total_mass * gas.massProdRate;
% set up column vector for dydt
dydt(:, j) = [udt
vdt
ydt'];
end
end