Вы находитесь на странице: 1из 3

%% Generation of a non-uniform mesh

for i=1:N+1
Xi = (i-1)*Delta;
x(i) = 0.5*(1 - cos(pi*xi));
end
for i=1:N
h(i) = x(i+1)-x(i);
end
hx = zeros(0,0);
hy = zeros(0,0);
for i=1 :N
hx = [hx h];
hy = [hy ; h ];
end
%% Initial conditions for u, v and pres
v = zeros(N+2,N+1);
u = zeros(N+1,N+2);
pres = zeros(N,N);
f(N,1) = 0;
%% The pressure matrix for the Poisson equation
for i=[1 :N]
for j=[1 :N]
k = (j-1)*N + i;
if i ==1
if j==1
B(k,3) = -2*h(j)/(h(i)+h(i+1))-2*h(i)/(h(j)+h(j+1));
B(k+1,4) = 2*h(j)/(h(i)+h(i+1));
B(k+N,5) = 2*h(i)/(h(j)+h(j+1));
Elseif j==N
B(k-N,1) =2*h(i)/(h(j)+h(j-1));
B(k,3) =-2*h(i)/(h(j)+h(j-1))-2*h(j)/(h(i)+h(i+1));
B(k+1,4) =2*h(j)/(h(i)+h(i+1));

else
B(k-N,1) =2*h(i)/(h(j)+h(j-1));
B(k,3) =-2*h(i)/(h(j)+h(j-1))-2*h(j)/(h(i)+h(i+1))-2*h(i)/(h(j)+h(j+1));
B(k+1,4) =2*h(j)/(h(i)+h(i+1));
B(k+N,5) =2*h(i)/(h(j)+h(j+1));
end;
elseif i==N
if j==1
B(k-1,2) =2*h(j)/(h(i)+h(i-1));
B(k,3) =-2*h(j)/(h(i)+h(i-1))-2*h(i)/(h(j)+h(j+1));
B(k+N,5) =2*h(i)/(h(j)+h(j+1));
Elseif j==N
B(k-N,1) = 2*h(i)/(h(j)+h(j-1));
B(k-1,2) =2*h(j)/(h(i)+h(i-1));
B(k,3) =-2*h(i)/(h(j)+h(j-1))-2*h(j)/(h(i)+h(i-1));
else
B(k-N,1) =2*h(i)/(h(j)+h(j-1));
B(k-1,2) =2*h(j)/(h(i)+h(i-1));
B(k,3) =-2*h(i)/(h(j)+h(j-1))-2*h(j)/(h(i)+h(i-1))-2*h(i)/(h(j)+h(j+1));
B(k+N,5) =2*h(i)/(h(j)+h(j+1));
end
elseif j == 1
if ( i > 1 && i < N )
B(k-1,2) = 2*h(j)/(h(i)+h(i-1));
B(k,3) = -2*h(j)/(h(i)+h(i-1))-2*h(j)/(h(i)+h(i+1))-2*h(i)/(h(j)+h(j+1));
B(k+1,4) = 2*h(j)/(h(i)+h(i+1));
B(k+N,5) =2*h(i)/(h(j)+h(j+1));
end
elseif j == N
if ( i > 1 && i < N )
B(k-N,1) = 2*h(i)/(h(j)+h(j-1));
B(k-1,2) =2*h(j)/(h(i)+h(i-1));

B(k,3) = -2*h(i)/(h(j)+h(j-1))-2*h(j)/(h(i)+h(i-1))-2*h(j)/(h(i)+h(i+1));
B(k+1,4) =2*h(j)/(h(i)+h(i+1));
end
else
B(k-N,1) = 2*h(i)/(h(j)+h(j-1));
B(k-1,2) = 2*h(j)/(h(i)+h(i-1));
B(k,3) = -2*h(i)/(h(j)+h(j-1))-2*h(j)/(h(i)+h(i-1))-2*h(j)/(h(i)+h(i+1))-2*h(i)/
(h(j)+h(j+1));
B(k+1,4) = 2*h(j)/(h(i)+h(i+1));
B(k+N,5) = 2*h(i)/(h(j)+h(j+1));
end
end
end
d = [ -N
-1
0
1
N];
A = spdiags(B,d,N*N,N*N);
Bm=full(A)

Вам также может понравиться