These functions are used by some of the examples, and show how custom reactor-like models can be implemented in Matlab. They are useful mostly as a basis for user modifications.
50 lines
1.2 KiB
Matlab
50 lines
1.2 KiB
Matlab
function dydt = reactor_ode(t,y,gas,vdot,area,heatflux)
|
|
% REACTOR ODE system for a generic zero-dimensional reactor.
|
|
%
|
|
% Function REACTOR evaluates the system of ordinary differential
|
|
% equations for a zero-dimensional reactor with arbitrary heat
|
|
% transfer and volume change.
|
|
%
|
|
% 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
|
|
%
|
|
|
|
[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})
|
|
setMassFractions(gas,masses);
|
|
setState_UV(gas, [u_mass v_mass]);
|
|
p = pressure(gas);
|
|
|
|
% 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 * ydot(gas);
|
|
|
|
% set up column vector for dydt
|
|
dydt(:,j) = [udt
|
|
vdt
|
|
ydt ];
|
|
end
|