Matlab mathematival modeling problem chemical eng

2 views (last 30 days)
Georgios Stefanis
Georgios Stefanis on 12 Nov 2021
Answered: Bjorn Gustavsson on 12 Nov 2021
function [f] = acidpretreat(t,x,)
%Components
xyl= x(1);
arab= x(2);
acet= x(3);
cel= x(4);
Xylo= x(5);
Arabi= x(6);
Acetic= x(7);
Furf= x(8);
%---------------------------------------------------------------------
%Data
R=8.314;
HA=0.8;
T=400; % kelvin
k10=2.37; k20=2.17; k1ac=2.37; k30=2.37; %min^-1%
n1=1.51; n2=0.29;n1ac=0.604;n3=1.359;
E1=83.3*1e3;E2=143.5*1e3;E1ac=83.3*1e3;E3=94.962*1e3; %J/mol
Bmax=120;
Xc=0.40680*1e-2; Xh1=0.22136*1e-2; Xh2=0.03786*1e-2;Xh3=0.03330*1e-2; %wt
xylmax=Xh1*Bmax; arabmax=Xh2*Bmax;acetmax=Xh3*Bmax;celmax=Xc*Bmax; %g/L
%---------------------------------------------------------------------
% initial concentrations
xyl_zero=Xh1*x;
arab_zero=Xh2*x;
acet_zero=Xh3*x;
cel_zero=Xc*x;
Xylo_zero=0;
Arabi_zero=0;
Acetic_zero=0;
Furf_zero=0;
% Effective coefficients
ef1=1/(1+(xyl/xylmax)^20);
ef2=1/(1+(arab/arabmax)^20);
ef3=1/(1+(acet/acetmax)^20);
ef4=1/(1+(cel/celmax)^20);
% Effective concentrations
xylef=0.95*ef1*xyl+((1-ef1)*xylmax);
arabef=0.95*ef2*arab+((1-ef2)*arabmax);
acetef=0.95*ef3*acet+((1-ef3)*acetmax);
celef=0.95*ef4*cel+((1-ef4)*celmax);
% K min^(-1)
K1=(k10*1e10)*(HA^n1)*exp(-E1/(R*T));
K2=(k20*1e15)*(HA^n2)*exp(-E2/R*T);
K3=(k30*1e10)*(HA^n3)*exp(-E3/R*T) ;
K1ac=k1ac*(10^10)*(HA^n1ac)*((xyl*((xyl_zero)^-1)))^2*exp(-E1ac/R*T);
% Rates
rxyl=-K1*xylef;
rarab=-K1*arabef;
racet=-K1ac*acetef;
rcel=-K3*celef;
rXylo=K1*xylef-K2*Xylo;
rArabi=K1*arabef-K2*Arabi;
rAcetic=K1ac*acetef;
rglu=K3*celef;
% Mass balance
dxyldt=rxyl;
darabdt=rarab;
4*((dacetdt)^2)+10*dacetdt = racet;
dceldt=rcel;
dXylodt=rXylo;
dArabidt=rArabi;
4*((dAceticdt)^2)+10*dAceticdt = rAcetic;
dgludt=rglu;
dfurfdt=K2*(Xylo+Arabi);
%-----------------------------------
f =[ dxyldt; darabdt; dacetdt; dceldt; dXylodt; dArabidt; dAceticdt;dgludt;dfurfdt];
end
comand window
[t, x] = ode23s(@acidpretreat, [0 240], [20])
Error using feval
Error: File: acidpretreat.m Line: 59 Column: 28
The expression to the left of the equals sign is not a valid target for an assignment.
Error in odearguments (line 87)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode23s (line 119)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

Answers (1)

Bjorn Gustavsson
Bjorn Gustavsson on 12 Nov 2021
You have at least a couple of syntax errors in your code, namely the lines:
4*((dacetdt)^2)+10*dacetdt = racet;
4*((dAceticdt)^2)+10*dAceticdt = rAcetic;
If you want to assign values to racet and rAcetic you have to put those variables on the LHS of the assignment-=.
In addition I strongly suggest you make use of the code-markup capacility of the answers editor - use the buttons over the "CODE" tab-label.
HTH

Categories

Products


Release

R2015a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!