Error using vertcat Dimensions of arrays being concatenated are not consistent.

1 vue (au cours des 30 derniers jours)
Cesar Rubio
Cesar Rubio le 6 Mai 2021
Commenté : James Tursa le 7 Mai 2021
I understand that this code returns a vector length of 303 but the initail vector (y0) only contains 3. I am not sure how to fix this error.
Vspan = [0 10];
y0 = [0 570 (50*101.325)];
[V,y] = ode45(@(~,y) fun(del_h1,del_cp1,cp1),Vspan,y0);
function dydt = fun(~,y,del_h1,del_cp1,cp1)
X = y(1);
T = y(2);
P = y(3);
% inital parameters
T0 = 570; % [K] inlet temp
P0 = 50*101325; % [Pa] inlet pressure
Ft0 = 8000; % inlet total flow rate w mixture [kmol/hr]
%T = 570:2.3:800; % 800 is max temp allowed [K]
Ac = 3; % cross sectional area [m^3]
R = 8.314*1000; % [J/kmol.K]
%X= 0:.01:1;
%T = T';
%X = X';
% mol fractions
% let 1 = H2, 2 = CO, 3 = CH4, 4 = H2O
% 5 = CO2, 6 = C2H4, 7 = N2
y10 = 0.555; y20 = 0.215; y30 = 0.167;
y50 = 0.033; y60 = 0.019; y70 = 0.011; % inert gases
% molar masses [kg/kmol]
m1 = 2.016; m2 = 28.01; m3 = 16.04; m4 = 18.016; m5 = 44.01;
m6 = 30.07; m7 = 28.02;
% finding density of gas mixture (not sure if this is right way lol)
% should inert gases be included?
% found this at https://chemistry.stackexchange.com/questions/91120/finding-density-of-the-gas-mixture
mt = y10*m1 + y20*m2 +y30*m3 + y50*m5 + y60*m6 + y70*m7; % total mass [kg/kmol]
yt = y10 + y20 + y30 + y50 + y60 + y70; % total mole fraction
rho = (P.*mt)./(yt.*R.*T); % density of mixture
% flow rates [kmol/hr]
F10 = Ft0*y10; F20 = Ft0*y20; F30 = Ft0*y30;
% thetas
theta_b = F20/F10; theta_c = F30/F10;
% flow rates [kmol/hr]
delta = -2/3;
F1 = F10.*(1-X);
F2 = F10.*(theta_b - (X./3));
F3 = F10.*(theta_c + (X./3));
F4 = (F10.*X)/3;
Ft = Ft0 + delta.*F10.*X;
% masses
% finding concentrations
% note that: density = (molar flow)/(volumetric flow)
E = y10*delta;
vo = Ft0/Ac; % not the right volumetric flow rate
v = vo*(1+E.*X).*(T./T0).*(P0./P); % volumetric flow rate
C1 = F1./v; C2 = F2./v; C3 = F3./v; C4 = F4./v;
% let 1 = H2, 2 = CO, 3 = CH4, 4 = H2O, 5 = CO2, 6 = C2H4, 7 = N2
% parameters
a = [28.84 28.95 34.31 33.46 36.11 49.37 29]/10^3;
b = [.00765 .411 5.469 .688 4.233 13.92 .2199]/10^5;
c = [.3288 .3548 .3661 .7604 -2.887 -5.816 .5723]/10^8;
d = [-.8698 -2.22 -11 -3.593 7.464 7.28 -2.871]/10^12;
a = a';
b = b';
c = c';
d = d';
rho_cat = (1.14*(100^3))/1000; % [kg/m^3] catalyst density
D = ((2.81E-06).*T + 1.68E-04)/(100^2); % [m^2/s] effective diffusivity
area = 150*1000; % [m^2/kg.catalyst]
volume = (0.395*1000)/(100^3); % pore volume [m^3/kg]
UaTaT = 0; % this is U*a*(Ta-T) which is neglible
% arrhenius equation
A = [0.2687 9.706E-12 4.124E-09]/1000; % [in Pascal]
Ea = [70 -90 -68.5]*1000; % [kPa] may need to multiply by 1000 to get into Pa
K0 = A(1)*exp(-Ea(1)./(R.*T));
K1 = A(2)*exp(-Ea(2)./(R.*T));
K2 = A(3)*exp(-Ea(3)./(R.*T));
% partial pressures
P1 = P.*y10;
P2 = P.*y20;
r1 = -( (K0.*P1) ./ ( (1+sqrt(K1.*P1)+(K2.*P2)).^2) );
r1_prime = r1/rho_cat;
% effectiveness factor
tmod = 0.16.*sqrt(1./((2.81E-06).*T + 1.68E-04));
n = (3.*(tmod.*cot(tmod) - 1))./(tmod.^2); % effectiveness factor
% Erguen equation stuff
y = P./P0;
U = v./Ac;
phi = 0.4;
gc = 1; % for metric system
Dp = 0.32/100; % [m] particle diameter
G = rho_cat.*U;
u = 3.2*10^-4; % viscosity
Bo = ((G.*(1-phi))./(rho_cat.*gc.*Dp.*(phi.^3))).*(((150.*(1-phi)*u)./Dp) + 1.75.*G);
gamma = (2.*Bo)./(Ac.*rho_cat.*(1-phi).*P0);
dydt = [ -r1_prime.*n./F10; % dXdW
(1./rho_cat).*( (UaTaT + n.*r1_prime.*del_h1) ./ (F10.*(cp1+ del_cp1.*X)) ); % dTdW
(-gamma./(2.*y)).*(T./T0).*(1+E.*X) ];% dydW
%dydt = dydt';
end

Réponses (1)

James Tursa
James Tursa le 6 Mai 2021
You have a mismatch in the number of arguments. E.g., this
[V,y] = ode45(@(~,y) fun(del_h1,del_cp1,cp1),Vspan,y0);
should be this
[V,y] = ode45(@(t,y) fun(t,y,del_h1,del_cp1,cp1),Vspan,y0);
  5 commentaires
Cesar Rubio
Cesar Rubio le 6 Mai 2021
I am thinking the error has something to deal with the 'dydt' having a much longer vector length than 'y0' but I do not know how to fix this. My goal is to solve the ODE's for a many ranges of cp1, del_cp1, and del_h1 values.
James Tursa
James Tursa le 7 Mai 2021
Please post your current code.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by