フィルターのクリア

Index exceeds the number of array elements, must not exceed 1, in a nested for loop

3 ビュー (過去 30 日間)
In my code, I am analyzing a heat concentric heat exchanger and am solving for h, the local convection coefficients at points along the length of the of tube. In my nested for loop, indexed by j, I am attempting to update the length 0, dDh, for each iteration of the Nsselt number Nud. However, I keep getting the error that the index exceeds the number of array elements. there are 10 distance steps and 10 mass flow rates to analyze, so I am confused on why the sizes are a probelm. Any help is appreciated.
```clear
clc
% givens for the air
ma = 15; %kg/s
Tai = 1200; % deg-C
cpa = 1.207; % kJ/kg-K @ 1200C
ODa = 0.05; % m
IDa = 0.04; % m
% givens for the feedwater
mw = 10; %kg/s
Twi = 250; % deg-C
Two = 500; % deg-C
cpw = 4.860; % kJ/kg-K @ 250C
ODw = 0.01; %m
IDw = 0.008; %m
L = 5; %m, length of HEX bundle
Cc = mw*cpw;
Ch = ma*cpa;
A = [Cc, Ch];
Cmin = min(A);
Cmax = max(A);
Cr = Cmin/Cmax;
Tao = Tai - ((Cmax/Cmin)*(Two-Twi)); %air outlet temperature in deg-C
dT1 = Tai-Two;
dT2 = Tao - Twi;
LMTD = (dT2 - dT1)/log(dT2/dT1); %log mean temperature difference for the HEX
e = (Cc*(Two-Twi))/(Cmin*(Tai-Twi)); %HEX effectiveness
NTU = (1/(Cr-1))*log((e-1)/((e*Cr)-1)); % Net Transfer Units
Aht = pi*ODw*L; % heat transfer area (ft^2), or the outside surface area of the feedwater tube
U = (NTU*Cmin)/Aht; % overall heat transfer coefficient
%%% PART B
mw2 = [0.01:0.01:0.1]; %water mass flow rate in kg/s
rho_w = 798.6; %lg/m^3
Ac = 0.25*pi*IDw^2; %cross-sectional area of the inside of the feedwater tube
Dh = (4*Ac)/(4*pi*IDw); % hydraulic diameter for the feedwater tube
muw = 0.0001063; % dynamic visocsity of the water @ 250C (N*s/m^2)
Uw = zeros(1,length(mw2));
Red = zeros(1,length(mw2));
Nud = zeros(1,length(mw2));
k = 8; %W/m-K. thermal conductivity of water @250-C, guess beased on lower figures
step = Dh/9;
dDh = [0:step:Dh]; %size of the hydraulic diameter
h = zeros(length(mw2),length(dDh));
for i = 1:10
Uw(i) = mw2(i)/(rho_w*Ac); %velocity of the feedwater for the varying flow rates
Red(i) = (rho_w*Uw(i)*Dh)/muw;
Pr = (muw*cpw)/k;
if Red <= 5000
Nud = 4.36;
elseif Red > 5000
Nud(i) = 0.023*(Red(i)^0.8)*(Pr^0.4);
end
for j = 1:10
h(i,j) = (Nud(i)*k)/dDh(j);
end
end```

採用された回答

Torsten
Torsten 2023 年 12 月 10 日
編集済み: Torsten 2023 年 12 月 11 日
Use
clear
clc
% givens for the air
ma = 15; %kg/s
Tai = 1200; % deg-C
cpa = 1.207; % kJ/kg-K @ 1200C
ODa = 0.05; % m
IDa = 0.04; % m
% givens for the feedwater
mw = 10; %kg/s
Twi = 250; % deg-C
Two = 500; % deg-C
cpw = 4.860; % kJ/kg-K @ 250C
ODw = 0.01; %m
IDw = 0.008; %m
L = 5; %m, length of HEX bundle
Cc = mw*cpw;
Ch = ma*cpa;
A = [Cc, Ch];
Cmin = min(A);
Cmax = max(A);
Cr = Cmin/Cmax;
Tao = Tai - ((Cmax/Cmin)*(Two-Twi)); %air outlet temperature in deg-C
dT1 = Tai-Two;
dT2 = Tao - Twi;
LMTD = (dT2 - dT1)/log(dT2/dT1); %log mean temperature difference for the HEX
e = (Cc*(Two-Twi))/(Cmin*(Tai-Twi)); %HEX effectiveness
NTU = (1/(Cr-1))*log((e-1)/((e*Cr)-1)); % Net Transfer Units
Aht = pi*ODw*L; % heat transfer area (ft^2), or the outside surface area of the feedwater tube
U = (NTU*Cmin)/Aht; % overall heat transfer coefficient
%%% PART B
mw2 = [0.01:0.01:0.1]; %water mass flow rate in kg/s
rho_w = 798.6; %lg/m^3
Ac = 0.25*pi*IDw^2; %cross-sectional area of the inside of the feedwater tube
Dh = (4*Ac)/(4*pi*IDw); % hydraulic diameter for the feedwater tube
muw = 0.0001063; % dynamic visocsity of the water @ 250C (N*s/m^2)
k = 8; %W/m-K. thermal conductivity of water @250-C, guess beased on lower figures
step = Dh/9;
dDh = [0:step:Dh]; %size of the hydraulic diameter
h = zeros(length(mw2),length(dDh));
for i = 1:10
Uw = mw2(i)/(rho_w*Ac); %velocity of the feedwater for the varying flow rates
Red = (rho_w*Uw*Dh)/muw;
Pr = (muw*cpw)/k;
if Red <= 5000
Nud = 4.36;
elseif Red > 5000
Nud = 0.023*(Red^0.8)*(Pr^0.4);
end
for j = 1:10
h(i,j) = (Nud*k)/dDh(j);
end
end
or change at least this part
if Red <= 5000
Nud = 4.36;
elseif Red > 5000
Nud(i) = 0.023*(Red(i)^0.8)*(Pr^0.4);
end
to
if Red(i) <= 5000
Nud(i) = 4.36;
elseif Red(i) > 5000
Nud(i) = 0.023*(Red(i)^0.8)*(Pr^0.4);
end
  1 件のコメント
Matthew Palermo
Matthew Palermo 2023 年 12 月 11 日
This worked! Thanks, I was really struggling to see what was going on

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSparse Matrices についてさらに検索

製品


リリース

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by