why my loop doesn't run or produce an error at all?
6 views (last 30 days)
for NT = 2:60 %number of time steps
for n = 533:475 %number of grid points
maindiag = 2*(1+r)*ones(n+1,1);%n+1 because including one ghost point below i = 0
lowdiag = -r*ones(n+1,1);
updiag = -r*ones(n+1,1);
S = spdiags([lowdiag maindiag updiag],-1:1,n+1,n+1);
S = full(S);
S(1,1) = 1;
S(1,2) = -0.007875;
S(1,3) = -1;
S(n+1,n-1) = -1;
S(n+1,n) = 0;
S(n+1,n+1) = 1;
b(1,1) = 0;%first row of RHS vector b
%interior rows of RHS vector b
for i = 1:n-1
b(i+1,1) = r*C(i,1)+(2-2*r)*C(i+1,1)+r*C(i+2,1);
b(n+1,1) = 0;%final row of RHS vector b
I'm trying to use crank nicholson to solve for fick's 2nd law diffusion equation. The above code is a section of it. The fourth line from bottom is how I try to save the calculated result/concentration in each time step. r is a constant. Initial C matrix has been calculated and is a column vector at the first time step (NT = 1).
After run, n =  and NT = 60. but C matrix didn't update at all and remained as initial at NT = 1.
Abolfazl Chaman Motlagh on 16 Sep 2022
Edited: Abolfazl Chaman Motlagh on 16 Sep 2022
second line in image (line 31 in your attached code).
this is an empty loop. here watch this, i run it here:
so what is in this loop doesn't run even one time for whatever value the NT has. hence there is no update for C.