Paxton asked . 2020-12-08

Index exceeds number of array elements (1)

I" m trying to build function that solves pyrolysis problem. But, when I run it, it keep saying "Index exceeds number of array elements (1)." I need help...
 
Error is in this funcation on line 53.
Error in nonstqsol (line 53)
 
%% Function of non-stoichiometric thermodynamic equilibrium model
function fun=nonstqsol(x)
global n M_biomass  T M_gas M_char n_char
R=8.314;
a=0.2;
b=0.13;
x=1.44;
y=0.66;
if nargin==0
    x=ones(1,8);
end
% To calculate the Gibbs formation Value of parameter a-g taken from 
% Synthetic fuels, by Probstein, R F; Hicks, R E, 1982.
% H2 CO, CO2, H2O, CH4, C, O2
prm=[0 5.619e-3 -1.949e-2 -8.950e-3 -4.620e-2 0 0;... %a
     0 -1.190e-5 3.122e-5 -3.672e-6 1.130-5 0 0;... %b
     0 6.383e-9 -2.448e-8 5.209e-9 1.319e-8 0 0;... %c
     0 -1.846e-12 6.946e-12 -1.478e-12 -6.647e-12 0 0;... %d
     0 -4.891e2 -4.891e2 0.0 -4.891e2 0 0;... %e
     0 8.684e-1 5.270 2.868 1.411e1 0 0;... %f
     0 -6.131e-2 -1.207e-1 -1.722e-2 -2.234e-1 0 0];... %g
%% Enthalpy of formation at temperature of 298K
%       [H2  CO   CO2    H2O    CH4  C O2]
h_f298K=[0 -110.5 -393.5 -241.8 -74.8 0 0];
%% Standard Gibbs function of formation at given temperature of the gas species i.
%Standard Gibbs of CO
del_gCO=h_f298K(1,2)-(prm(1,2).*T(n).*log(T(n))-(prm(2,2).*(T(n))^2)-(prm(3,2)/2.*(T(n))^3)...
    -(prm(4,2)/3.*(T(n))^4)+(prm(5,2)/(2.*T(n))+prm(6,2)+(prm(7,2).*T(n))));
%Standard Gibbs of CO2
del_gCO2=h_f298K(1,3)-(prm(1,3).*T(n).*log(T(n))-(prm(2,3).*(T(n))^2)-(prm(3,3)/2.*(T(n))^3)...
    -(prm(4,3)/3.*(T(n))^4)+(prm(5,3)/(2.*T(n))+prm(6,3)+(prm(7,3).*T(n))));
%Standard Gibbs of H2O
del_gH2O=h_f298K(1,4)-(prm(1,4).*T(n).*log(T(n))-(prm(2,4).*(T(n))^2)-(prm(3,4)/2.*(T(n))^3)...
    -(prm(4,4)/3.*(T(n))^4)+(prm(5,4)/(2.*T(n))+prm(6,4)+(prm(7,4).*T(n))));
%Standard Gibbs of CH4
del_gCH4=h_f298K(1,5)-(prm(1,5).*T(n).*log(T(n))-(prm(2,5).*(T(n))^2)-(prm(3,5)/2.*(T(n))^3)...
    -(prm(4,5)/3.*(T(n))^4)+(prm(5,5)/(2.*T(n))+prm(6,5)+(prm(7,5).*T(n))));
del_gspecies=[0; del_gCO; del_gCO2; del_gH2O; del_gCH4; 0; 0];
% Stoichiometric Co-efficient Reactions
% H2 CO CO2 H2O CH4 C O2
vi = [1, 1, 0, -1, 0, -1, 0;... % C + H2O --> CO + H2
1,-1, 1, -1, 0, 0, 0;... % CO + H2O --> CO2+ H2
-2, 0, 0, 0, 1, -1, 0;... % C + 2H2 --> CH4
0, 2,-1, 0, 0, -1, 0;... % C + CO2 --> 2CO
3, 1, 0, -1, -1, 0, 0;... % CH4+ H2O --> CO + 3H2
0, 2, 0, 0, 0, -2,-1;... % 2C + O2 --> 2CO
2, 0, 1, -2, 0, -1, 0]; % C + 2H2O--> CO2+ 2H2
%% Gibbs enthalpy of formation of species i
%G_Ft=v_i*g_(f,T,i)
GFt(n,:)=vi*del_gspecies;
%% mass of components H2, CO, CO2, H2O, CH4, CO2
nH2 =x(1);       %Mole of H2O
nCO =x(2);       %Mole of carbon monoxide
nCO2 =x(3);      %Mole of carbon dioxide
nH2O =x(4);      %Mole of hydrogen
nCH4 =x(5);      %Mole of methane
Lg_C =x(6);       %La grangian for Carbon
Lg_O =x(7);       %La grangian for Oxygen
Lg_H =x(8);       %La grangian for Hydrogen
% The Composition of Wood in weight percent.
% C - 51.6% H - 6.2% O - 43.2% CH(1.44)O(0.66)
Mw_Char = 14.2;                    %Molecular weight of char
Mw_biomass = 24;                   %Molecular weight of biomass
n_biomass= M_biomass/Mw_biomass;   %Mole of biomass
n_char =M_char/Mw_Char;            %Mole of char
n_gas=n_biomass-n_char;            %Mole of gass
Mw_gas= M_gas/n_gas;               %Molecular weight of gas
%%
%Carbon mass balance
f(1)=n_biomass-(n_gas*(nCO+nCO2+nCH4+n_char));
%Hydrogen Mass Balance
f(2)=(x*n_biomass)-(n_gas*(2*nH2+4*nCH4+2*nH2O)+a*n_char);
%Oxygen Mass Balance
f(3)=(y*n_biomass)-(n_gas*(nCO+2*nCO2+nH2O)+b*n_char);
%H2 Gibbs function
f(4)=GFt(n,1)+R*T(n)*log(nH2/sum(x(1:5)+n_char))-2*Lg_H;
%CO Gibbs
f(5)=GFt(n,2)+R*T(n)*log(nCO/(sum(x(1:5)+n_char)))-Lg_C-Lg_O;
%CO2 Gibbs
f(6)=GFt(n,3)+R*T(n)*log(nCO2/(sum(x(1:5)+n_char)))-Lg_C-2*Lg_O;
%H2O gibbs
f(7)=GFt(n,4)+R*T(n)*log(nH2O/(sum(x(1:5)+n_char)))-Lg_H-2*Lg_O;
%CH4 Gibbs
f(8)=GFt(n,5)+R*T(n)*log(nCH4/(sum(x(1:5)+n_char)))-Lg_C-4*Lg_H;
fun = [f(1),f(2),f(3),f(4),f(5),f(6),f(7),f(8)];

Solver function

% Calling function
function nlinear_eq_solver
close all
clear all
clc
global n M_biomass T M_char M_gas n_char
T = 953:5:1053;%input('Enter the Reactor temperature in the Range between 700-1165 [K] :');
M_biomass = 15;%input('Enter the Biomass feed rate in [Kg/hr] :')*1000;%kg
Matrix =[0.41621 0.4973 0.1801 0.0656 0.0051 11508 202070 2820];
for n=1:length(T)
% Pyrolysis from "Modeling circulating fluidized bed biomass gasifiers.
[t1,z] =ode113(@Tinitialpyrolysis,[0 1],[1 0 0 0]);
% Material balance
M_tar = M_biomass*z(end,3); % Rate of tar into the reactor by devolatilization, [kg/s]
M_char = M_biomass*z(end,4); % Rate of char into the reactor by devolatilization, [kg/s]
M_gas=M_biomass*z(end,2); % [Kg/s]

InitialGuess = Matrix;
options=optimset('Display','iter','TolFun',1e-32,'MaxFunEvals',10000,'MaxIter',10000);
[x,fval,exitflag] = fsolve(@nonstqsol,InitialGuess,options);
Eflag(n)=[exitflag];
yh2=x(1)/sum(x(1:5)); %mol frac hydrogen
yco=x(2)/sum(x(1:5)); %mol frac carbon monoxide,exitflag
yco2=x(3)/sum(x(1:5)); %mol frac carbon dioxide
yh2o=x(4)/sum(x(1:5)); %mol frac h2o
ych4=x(5)/sum(x(1:5)); %mol frac of methane
Lg_C=x(6) %La grangian for Carbon
Lg_O=x(7); %La grangian for Oxygen
Lg_H=x(8); %La grangian for Hydrogen
fn(n,:)=fval;
mol(n,:) =[x(1:5) n_char];
molfr(n,:) =[yh2 yco yco2 yh2o ych4];
Matrix=x;
end
Eflag
fn
mol
figure(1)
hold on
grid on
box on
H=plot(T-273,molfr(:,1),'.r');
K=plot(T-273,molfr(:,2),'.g');
L=plot(T-273,molfr(:,3),'.b');
M=plot(T-273,molfr(:,4),'.c');
N=plot(T-273,molfr(:,5),'.k');
legend([H,K,L,M,N],'H2','CO','CO2','H2O','CH4');
title('Molfraction of Pyrolysis products in Biomass Gasification');
xlabel('Temperature in [C]');
ylabel('massfraction');
figure (2)
hold on
grid on
box on
plot(T-273,molfr(:,7),'.r');
plot(T-273,molfr(:,8),'*b');
plot(T-273,molfr(:,9),'+g');
%% Pyrolysis of wood (pine Radiata)
function [dpyro] = Tinitialpyrolysis(z,x)
Te=T(n);
R=8.314;
% Taken from "Modeling chemical and physical processes of wood and
% biomass pyrolysis ",Progress in Energy and Combustion 
% Science 34 (2008) 47–90, Colomba Di Blasi.
% Reaction Schema for devolatilization of wood by proposed by 
% Colomba Di Blasi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%             k_1
%       |---------------> gas
%       |                ^
%       |                |k_4
%       |     k_2        |
% Biomass ----------------> tar
%       |                |
%       |                |k_5
%       |     k_3        |
%       |------------->char
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Rxn 1,2,3,4,5 based on Colomba Di Blasi.
% k_j=k_0j exp(-E_Aj/((RT) ))
% k_0 is pre-exponential factor of the reaction
% E_A is activation energy of the reaction in (J(mol)^(-1) )
% R is the universal gas constant, in (J(mol)^(-1) K^(-1) )
% T is the operating temperature, in (K)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% k_oj(1/s)          E_Aj(J/mole)       deltH_rxnj(J/kg)
  ko1=1.30e8;         E_A1=140000;       deltH_rxn1=64000;
  ko2=2.00e8;         E_A2=133000;       deltH_rxn2=64000;
  ko3=1.08e7;         E_A3=121000;       deltH_rxn3=64000;
  ko4=1.00e5;         E_A4=93300;        deltH_rxn5=-42000;
  ko5=1.48e6;         E_A5=144000;       deltH_rxn6=-42000;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
k1=ko1*exp(-E_A1/(R*Te));
k2=ko2*exp(-E_A2/(R*Te));
k3=ko3*exp(-E_A3/(R*Te));
k4=ko4*exp(-E_A4/(R*Te));
k5=ko5*exp(-E_A5/(R*Te));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dM_biomass = -(k1+k2+k3)*x(1);
dM_char = (k3*x(1))+(k5*x(3));
dM_tar = (k2*x(1))-((k4*x(3))+(k5*x(3)));
dM_gas = (k1*x(1))+(k4*x(3));
dpyro = [dM_biomass; dM_gas; dM_tar; dM_char];
end
end

matlab , array index , matrix

Expert Answer

Prashant Kumar answered . 2024-05-20 15:38:54

It would appear your function has a little problem.
You start with the following:
 
function fun=nonstqsol(x)
global n M_biomass  T M_gas M_char n_char
R=8.314;
a=0.2;
b=0.13;
x=1.44;M

This means that, no matter what your input for x is, it immediately gets replaced by x=1.44. A little later in your function, you try to define nCO:

 

nCO =x(2);       %Mole of carbon monoxide

However, this results in an error because x only contains a single value. Hence, your index (2) exceeds the number of elements (1) in x.


Not satisfied with the answer ?? ASK NOW

Frequently Asked Questions

MATLAB offers tools for real-time AI applications, including Simulink for modeling and simulation. It can be used for developing algorithms and control systems for autonomous vehicles, robots, and other real-time AI systems.

MATLAB Online™ provides access to MATLAB® from your web browser. With MATLAB Online, your files are stored on MATLAB Drive™ and are available wherever you go. MATLAB Drive Connector synchronizes your files between your computers and MATLAB Online, providing offline access and eliminating the need to manually upload or download files. You can also run your files from the convenience of your smartphone or tablet by connecting to MathWorks® Cloud through the MATLAB Mobile™ app.

Yes, MATLAB provides tools and frameworks for deep learning, including the Deep Learning Toolbox. You can use MATLAB for tasks like building and training neural networks, image classification, and natural language processing.

MATLAB and Python are both popular choices for AI development. MATLAB is known for its ease of use in mathematical computations and its extensive toolbox for AI and machine learning. Python, on the other hand, has a vast ecosystem of libraries like TensorFlow and PyTorch. The choice depends on your preferences and project requirements.

You can find support, discussion forums, and a community of MATLAB users on the MATLAB website, Matlansolutions forums, and other AI-related online communities. Remember that MATLAB's capabilities in AI and machine learning continue to evolve, so staying updated with the latest features and resources is essential for effective AI development using MATLAB.

Without any hesitation the answer to this question is NO. The service we offer is 100% legal, legitimate and won't make you a cheater. Read and discover exactly what an essay writing service is and how when used correctly, is a valuable teaching aid and no more akin to cheating than a tutor's 'model essay' or the many published essay guides available from your local book shop. You should use the work as a reference and should not hand over the exact copy of it.

Matlabsolutions.com provides guaranteed satisfaction with a commitment to complete the work within time. Combined with our meticulous work ethics and extensive domain experience, We are the ideal partner for all your homework/assignment needs. We pledge to provide 24*7 support to dissolve all your academic doubts. We are composed of 300+ esteemed Matlab and other experts who have been empanelled after extensive research and quality check.

Matlabsolutions.com provides undivided attention to each Matlab assignment order with a methodical approach to solution. Our network span is not restricted to US, UK and Australia rather extends to countries like Singapore, Canada and UAE. Our Matlab assignment help services include Image Processing Assignments, Electrical Engineering Assignments, Matlab homework help, Matlab Research Paper help, Matlab Simulink help. Get your work done at the best price in industry.