# I am getting Index exceeds the number of array elements(1) error?

1 ビュー (過去 30 日間)
Ajaykumar MST 2021 年 6 月 19 日

I have attached my code
close all
clear all
clc
% Input values
n = 31;
x = linspace(0,3,n);
dx = x(2)-x(1);
gamma = 1.4;
% Calculate initial profile
rho = 1-0.3146*x; % Density
t = 1-0.2314*x; % Temperature
v = (0.1+1.09*x).*t.^0.5; % Velocity
a = 1+2.2*(x-1.5).^2; %Area
% Time steps
nt = 100;
dt = 0.001;
% Outer time loop
for k=1:nt
rho_old = rho;
v_old = v;
t_old = t;
% Predictor step
% Continuity Equation
for j = 2:n-1
%drho_dt_p = -rhodv_dx-rhovdloga_dx-vdrho_dx main equation
% Sepearting the terms for easy debugging
dv_dx = (v(j+1)-v(j))/dx;
dloga_dx = (log(a(j+1))-log(a(j)))/dx;
drho_dx = (rho(j+1)-rho(j))/dx;
dt_dx = (t(j+1)-t(j))/dx;
drho_dt_p = -rho(j)*(dv_dx-rho(j))*v(j)*(dloga_dx-v(j))*(drho_dx);
% Momentum Equation
dv_dt_p = -v(j)*dv_dx-(1/gamma)*((dt_dx)+(t(j)/rho(j))*drho_dx);
% Energy Equation
dt_dt_p = -v(j)*dt_dx-(gamma-1)*t(j)*((drho_dx)+v(j)*dloga_dx);
% Solution Update
rho(j) = rho(j)+drho_dt_p(j)*dt;
v(j) = v(j)+dv_dt_p(j)*dt;
t(j) = t(j)+dt_dt_p(j)*dt;
end
end
##### 1 件のコメント表示非表示 なし
Jan 2021 年 6 月 19 日
You do get an error message, which tells, in which line the error occurs. It helps to solve your problem, if you share this important information with the readers.

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

### 回答 (1 件)

Jan 2021 年 6 月 19 日

With guessing where the error occurs:
dv_dt_p = -v(j)*dv_dx-(1/gamma)*((dt_dx)+(t(j)/rho(j))*drho_dx);
dt_dt_p = -v(j)*dt_dx-(gamma-1)*t(j)*((drho_dx)+v(j)*dloga_dx);
Both variables are scalars. Then indexing them with j does not work:
rho(j) = rho(j)+drho_dt_p(j)*dt;
% ^^^ omit this
v(j) = v(j)+dv_dt_p(j)*dt;
% ^^^ omit this
t(j) = t(j)+dt_dt_p(j)*dt;
% ^^^ omit this
Use the debugger to find the cause of such problems:
dbstop if error
Then run the code until Matlab stops. Now check, which of the indices is out of range:
j
size(v)
size(dv_dt_p)
size(drho_dt_p)
##### 1 件のコメント表示非表示 なし
KALYAN ACHARJYA 2021 年 6 月 19 日
Yes sir, I noticed that ..thanks for clarification.

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

R2021a

### Community Treasure Hunt

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

Start Hunting!

Translated by