Professional Documents
Culture Documents
ADI Cavity Matlab CODE
ADI Cavity Matlab CODE
Metoda
% st?ídavých sm?r?.
clc
clear all
tic
h=1;
um=1;
visc=1e-3;
relax=0.5;
n=51;
d=h/(n-1);
d2=d^2;
niter=5000;
psi=zeros(n,n);
omega=zeros(n,n);
u=zeros(n,n);
v=zeros(n,n);
a=zeros(n,1);
b=ones(n,1);
c=zeros(n,1);
r=zeros(n,1);
for iter=1:niter
for i=1:n
u(i,n)=um;
end
for i=2:n-1
for j=2:n-1
u(i,j)=(psi(i,j+1)-psi(i,j-1))/(2*d);
v(i,j)=(psi(i-1,j)-psi(i+1,j))/(2*d);
end
end
for j=2:n-1
for i=2:n-1
a(i)=-1/d2;
b(i)=4/d2;
c(i)=-1/d2;
r(i)=(psi(i,j-1)+psi(i,j+1))/d2+ omega(i,j);
end
r(1)=0;r(n)=0;
ps=TDMAsolver(a,b,c,r,n);
for i=2:n-1
psi(i,j)=(1-relax)*psi(i,j)+relax*ps(i);
end
end
for i=2:n-1
for j=2:n-1
a(j)=-1/d2;b(j)=4/d2;c(j)=-1/d2;r(j)=(psi(i-1,j)+psi(i+1,j))/d2+ omega(i,j);
end
r(1)=0;r(n)=0;
ps=TDMAsolver(a,b,c,r,n);
for j=2:n-1
psi(i,j)=(1-relax)*psi(i,j)+relax*ps(j);
end
end
for i=1:n
omega(i,n)=relax*omega(i,n)+(1-relax)*2/d2* (psi(i,n)-psi(i,n-1)-um*d);
omega(i,1)=relax*omega(i,1)+(1-relax)*2* (psi(i,1)-psi(i,2))/d2;
omega(1,i)=relax*omega(1,i)+(1-relax)*2*(psi(1,i)-psi(2,i))/d2;
omega(n,i)=relax*omega(n,i)+(1-relax)*2*(psi(n,i)-psi(n-1,i))/d2;
end
%vorticity x-implicit
for j=2:n-1
for i=2:n-1
up=u(i,j);vp=v(i,j);
a(i)=-visc/d2-max(up,0)/d;
b(i)=4*visc/d2+(abs(up)+abs(vp))/d;
c(i)=-visc/d2-max(-up,0)/d;
r(i)=omega(i,j-1)*(visc/d2+max(vp,0)/d)+omega(i,j+1)*(visc/d2+max(-vp,0)/d);
end
r(1)=omega(1,j);r(n)=omega(n,j);
ps=TDMAsolver(a,b,c,r,n);
for i=2:n-1
omega(i,j)=(1-relax)*omega(i,j)+relax*ps(i);
end
end
%vorticity y-implicit
for i=2:n-1
for j=2:n-1
up=u(i,j);vp=v(i,j);
a(j)=-visc/d2-max(vp,0)/d;
b(i)=4*visc/d2+(abs(up)+abs(vp))/d;
c(j)=-visc/d2-max(-vp,0)/d;
r(j)=omega(i-1,j)*(visc/d2+max(up,0)/d)+omega(i+1,j)* (visc/d2+max(-up,0)/d);
end
r(1)=omega(i,1);r(n)=omega(i,n);
ps=TDMAsolver(a,b,c,r,n);
for j=2:n-1
omega(i,j)=(1-relax)*omega(i,j)+relax*ps(j);
end
end
end
toc;
function x = TDMAsolver(a,b,c,d,r,n)
%a, b, c, and d are the column vectors for the compressed tridiagonal matrix
n = length(b); % n is the number of rows
for i = 2:n
end
x(n) = d(n);
for i = n-1:-1:1
end
end