필터 지우기
필터 지우기

Unable to Understand error: left and right side elements do not match

조회 수: 1 (최근 30일)
Here is my code to solve and ODE given by the function O_Hydrogen(~,C,japp,alpha,params) in the code, after running i keep getting the same error. I am unable to understand why ? Could anyone please explain.
clc
%% Parametrs Set of Electrochemical Cell
params.Volume= 0.0005; % m3
params.ElecArea= 87.6e-04; % m2
params.Masstransfercoefficient= 5.2e-05;% m/s
th=input("Input Time in hours ");
tend= 60*th; % Time in Seconds
%% Initial Values
C0=0.625; % mole O2 / m3
H0=0; % mole H2/m3
yi=[C0;H0;0];
jlim_0 = j(C0,params); % A/m2
japp = input("Input applied current density"); % A/m2
%% Calculation of critical time and crtical COD
alpha=japp/jlim_0; % Dimensionless
Cr=alpha*C0; % Critical COD mole O2 / m3
tcr= ((1-alpha)/alpha)*params.Volume/(params.ElecArea*params.Masstransfercoefficient); % Seconds
%% Determination of step size
% Number of points to plot
n=100;
dt1=2*tend/(n);
dt2=2*(tend-tcr)/(n);
dt3=tcr/n;
trange=0:dt3:tcr;
trange2=tcr:dt2:tend;
trange_H = 0:dt1:tend;
%% Equation solving
% [t1,C1]=ode45(@(t,C)COD(t,C,alpha,params),trange_H,C0);
%
% [t2,C2]=ode45(@(t,C)COD(t,C,alpha,params),trange2,Cr);
%
% [t,H]=ode45(@(t,H)Hydrogen(t,japp,params),trange_H,H0);
%% Test ODE
[t,Cc] = ode45(@(t,C)O_Hydrogen(t,japp,C,alpha,params),trange_H,yi);
%% Append All data
% [CC]=[C1;C2];
% [T]= [t1;t2];
%% Plot Data
% figure
% plot(T,CC);
% figure
% plot(t,H);
%% Calculation of limiting current Density
function jlim= j(C,params)
km=params.Masstransfercoefficient;
jlim = 4*96500*km*C;
end
%% Anodic Pollutant Oxidation Charge Control
function dCdt=COD(~,C,alpha,params)
a=alpha;
Vr=params.Volume;
A=params.ElecArea;
km=params.Masstransfercoefficient;
dCdt=zeros(1,1);
dCdt(1)=C(1)*(-a)*A*km/Vr ; % mol COD/s
end
%% Cathodic Hydrogen Genreanration
function dHdt=Hydrogen(~,japp,params)
A=params.ElecArea; % m2;
Vr=params.Volume; % m3;
j=japp; %A/m2
F=96500;
dHdt=zeros(1,1);
dHdt(1)=(j*A/(2*F*Vr)); % mol H2/s
end
%% Hydrogen production due to pollutant oxidation
function dOHdt=O_Hydrogen(~,C,japp,alpha,params)
a=alpha;
Vr=params.Volume;
A=params.ElecArea;
km=params.Masstransfercoefficient;
F=96500;
j=japp;
dOHdt=zeros(3,1);
dOHdt(1)=C.*(-a)*A*km/Vr; % mol COD/s
dOHdt(2)= j*A/(2*F*Vr) ; % mol H2/s Hydrogen Production from Electrolysis
dOHdt(3) = 36.*dOHdt(1); % mol H2/s due to organics oxidation
end
  댓글 수: 6
Ranjeev Kumar Bhatia
Ranjeev Kumar Bhatia 2022년 6월 9일
Hi everyone,
Thank you for the feedback. It managed to work.
Much appreciated.
Corrected Code
clc
%% Parametrs Set of Electrochemical Cell
params.Volume= 0.0005; % m3
params.ElecArea= 87.6e-04; % m2
params.Masstransfercoefficient= 5.2e-05;% m/s
th=input("Input Time in hours ");
tend= 60*th; % Time in Seconds
%% Initial Values
C0=0.625; % mole O2 / m3
H0=0; % mole H2/m3
yi=[C0;H0;0];
jlim_0 = j(C0,params); % A/m2
japp = input("Input applied current density"); % A/m2
%% Calculation of critical time and crtical COD
alpha=japp/jlim_0; % Dimensionless
Cr=alpha*C0; % Critical COD mole O2 / m3
tcr= ((1-alpha)/alpha)*params.Volume/(params.ElecArea*params.Masstransfercoefficient); % Seconds
%% Determination of step size
% Number of points to plot
n=100;
dt1=2*tend/(n);
dt2=2*(tend-tcr)/(n);
dt3=tcr/n;
trange=0:dt3:tcr;
trange2=tcr:dt2:tend;
trange_H = 0:dt1:tend;
%% Equation solving
% [t1,C1]=ode45(@(t,C)COD(t,C,alpha,params),trange_H,C0);
%
% [t2,C2]=ode45(@(t,C)COD(t,C,alpha,params),trange2,Cr);
%
% [t,H]=ode45(@(t,H)Hydrogen(t,japp,params),trange_H,H0);
%% Test ODE
[t,Cc] = ode45(@(t,C)O_Hydrogen(t,C,japp,alpha,params),trange_H,yi);
%% Append All data
% [CC]=[C1;C2];
% [T]= [t1;t2];
%% Plot Data
% figure
% plot(T,CC);
% figure
% plot(t,H);
%% Calculation of limiting current Density
function jlim= j(C,params)
km=params.Masstransfercoefficient;
jlim = 4*96500*km*C;
end
%% Anodic Pollutant Oxidation Charge Control
function dCdt=COD(~,C,alpha,params)
a=alpha;
Vr=params.Volume;
A=params.ElecArea;
km=params.Masstransfercoefficient;
dCdt=zeros(1,1);
dCdt(1)=C(1)*(-a)*A*km/Vr ; % mol COD/s
end
%% Cathodic Hydrogen Genreanration
function dHdt=Hydrogen(~,japp,params)
A=params.ElecArea; % m2;
Vr=params.Volume; % m3;
j=japp; %A/m2
F=96500;
dHdt=zeros(1,1);
dHdt(1)=(j*A/(2*F*Vr)); % mol H2/s
end
%% Hydrogen production due to pollutant oxidation
function dOHdt=O_Hydrogen(~,C,japp,alpha,params)
a=alpha;
Vr=params.Volume;
A=params.ElecArea;
km=params.Masstransfercoefficient;
F=96500;
j=japp(1);
dOHdt=zeros(3,1);
dOHdt(1)=C(1).*(-a)*A*km/Vr; % mol COD/s
dOHdt(2)= j*A/(2*F*Vr) ; % mol H2/s Hydrogen Production from Electrolysis
dOHdt(3) = 36.*dOHdt(1); % mol H2/s due to organics oxidation
end

댓글을 달려면 로그인하십시오.

답변 (1개)

Spectro
Spectro 2022년 6월 9일
I think you should replace in the O_Hydrogen function this:
j=japp;
with this:
j=japp(1);

카테고리

Help CenterFile Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by