function iflag = CSTR_SS_ex1();% ask the user for the input parameters, which are
% stored in a structure Param
Param.Q = input('Enter vol. flow rate: ');Param.V = input('Enter reactor volume: ');Param.k1 = input('Enter rate constant for rxn.# 1: ');Param.k2 = input('Enter rate constnt for rxn. # 2: ');Param.cA_in = input('Enter inlet A concentration: ');Param.cB_in = input('Enter inlet B concentration: ');Param.cC_in = input('Enter inlet C concentration: ');Param.cD_in = input('Enter inlet D concentration: ');% set the initial guess equal to the inlet values
x0 = zeros(4,1);x0(1) = Param.cA_in;x0(2) = Param.cB_in;x0(3) = Param.cC_in;x0(4) = Param.cD_in;% call fsolve to obtain the steady-state concentrations
% Options = optimset('Largescle','off','Display','off');
options = optimset('fsolve');[x,f]=fsolve(@CSTR_SS_calc_f, x0, options, Param);% f_norm = norm(f,inf);
% get infinity norm
% report the results
disp(' ');disp('Steady state concentrations: ');disp(['[A] = ', num2str(x(1))]);disp(['[B] = ', num2str(x(2))]);disp(['[C] = ', num2str(x(3))]);disp(['[D] = ', num2str(x(4))]);disp(' ');% disp(['infinity norm of f = ', num2str(f_norm)]);
end% =================================================================
% This routine returns the function vector for the steady state CSTR
% example
function f = CSTR_SS_calc_f(x,Param);% extract the unknowns into meaningful names
cA = x(1);cB = x(2);cC = x(3);cD = x(4); % compute the reaction rates
r1 = Param.k1*cA*cB;r2 = Param.k2*cB*cC;f = zeros(4,1);f(1) = Param.Q*(Param.cA_in - cA) + Param.V*(-r1);f(2) = Param.Q*(Param.cB_in - cB) + Param.V*(-r1 - r2);f(3) = Param.Q*(Param.cC_in - cC) + Param.V*(r1 - r2);f(4) = Param.Q*(Param.cD_in - cD) + Param.V*(r2);end
MATLAB: Where Param is getting defined
differential equationsfsolvereactor
Best Answer