# ERROR came as "Index exceeds matrix dimensions".

1 view (last 30 days)

Show older comments

%% When I incorporate 3 eqns, ERROR came as "Index exceeds matrix dimensions".

%%Here I have initial condition f=[0 0 0 ], BC: gl=[coswt t t], gr =[0 0 0 ].

What next?

Here is my trial:

H=10;R=5;Pr=1;G1=5;G2=5;Kc=1;Sc=0.22;wt=pi/2;Q=H-(R/Pr);

xl=0; xr=5; % x domain [xl,xr]

J = 10; % J: number of division for x

dx = (xr-xl)/ J; % dx: mesh size

tf = 01; % final simulation time

Nt = 100; % Nt: number of time steps

dt = tf/Nt;

mu = dt/(dx)^2;

% Evaluate the initial conditions

x = xl : dx : xr; % generate the grid point

% f(1:J+1) since array index starts from 1

f1 = 0;f2 = 0;f3 = 0; %%%I.C

% store the solution at all grid points for all time steps

u = zeros(J+1,Nt);

v = zeros(J+1,Nt);

w = zeros(J+1,Nt);

U=[u; v; w];

% Find the approximate solution at each time step

for n = 1:Nt

t = n*dt; % current time

% boundary condition at left side

gl = [cos(wt); t; t];

% boundary condition at right side

gr = [0; 0; 0];

if n==1 % first time step

for j=2:J % interior nodes

u(j,n) = (1+dt*Q)*f1(j) + dt*(G1*f2(j)+G2*f3(j))+mu*(f1(j+1)-2*f1(j)+f1(j-1));

v(j,n) = (1+dt*Q)*f2(j) + (mu/Pr)*(f2(j+1)-2*f2(j)+f2(j-1));

w(j,n) = (1-dt*Kc)*f3(j) + (mu/Sc)*(f3(j+1)-2*f3(j)+f3(j-1));

U=[u(j,n) v(j,n) w(j,n)];

end

U(1,n) = gl; % the left-end point

U(J+1,n) = gr; % the right-end point

else

for j=2:J % interior nodes

u(j,n)= (1+dt*Q)*u(j,n-1)+ dt*(G1*v(j,n-1)+G2*w(j,n-1))+ mu*(u(j+1,n-1)-2*u(j,n-1)+u(j-1,n-1));

v(j,n)= (1+dt*Q)*v(j,n-1)+ (mu/Pr)*(v(j+1,n-1)-2*v(j,n-1)+v(j-1,n-1));

w(j,n)= (1+dt*Q)*w(j,n-1)+ (mu/Sc)*(w(j+1,n-1)-2*w(j,n-1)+w(j-1,n-1));

U=[u(j,n) v(j,n) w(j,n)];

end

U(1,n) = gl; % the left-end point

U(J+1,n) = gr; % the right-end point

end

end

% Plot the results

tt = dt : dt : Nt*dt;

figure(1)

plot(x,u)

hold on

##### 1 Comment

madhan ravi
on 18 Aug 2019

### Answers (3)

Adam Danz
on 18 Aug 2019

Edited: Adam Danz
on 18 Aug 2019

f1 = 0; % 12th line of your code; so, f1 only has 1 element

% (later in your code...)

for j=2:J % interior nodes

u(j,n) = (1+dt*Q)*f1(j) + dt*(G1*f2(j)+G2*f3(j))+mu*(f1(j+1)-2*f1(j)+f1(j-1));

% ^^^^

When j = 2, you're trying to reference the 2nd element of f1 but f1 only has 1 element.

##### 13 Comments

Walter Roberson
on 19 Aug 2019

% boundary condition at left side

gl = [cos(wt); t; t];

What is that intended to designate?

Is the intention that the first row should be assigned the boundary condition cos(wt) (the first entry) and that the last row should be assigned the boundary condition t (the last entry), and that all other rows should be assigned the boundary condition t (the middle entry) ?

### See Also

### Community Treasure Hunt

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

Start Hunting!