2D DirichMcode
2D DirichMcode
q=zeros(nx,ny);
%q(n/22:n/2+2,n/22:n/2+2)=1.;
set(gca,zlim,[0 1]);
surf(x,y,u);
shading interp;
pause;
err_tol=0.001;
err=2*err_tol;
iter=0;
omega=1.8;
%while err>err_tol && iter<1000
while (err>err_tol) && iter<1000
for i=2:mx
for j=2:my
% unew(i,j)=(u(i1,j)+u(i+1,j)+beta2*(u(i,j1)+u(i,j+1))+q(i,j)*dx*dx
)/(2+2*beta2);
%unew(i,j)=(unew(i1,j)+u(i+1,j)+beta2*(unew(i,j1)+u(i,j+1))+q(i,j)
*dx*dx)/(2+2*beta2);
unew(i,j)=(1omega)*u(i,j)+omega/(2*(1+beta2))*(unew(i1,j)+u(i+1,j)
+beta2*unew(i,j1)+beta2*u(i,j+1)+q(i,j)*dx*dx);
end;
end;
err=0;
%for i=2:nx1
% for j=2:ny1
% err=err+abs(unew(i,j)u(i,j));
% end;
%end;
err=sum(sum(abs(unewu)));
if mod(iter,10)==0
pause;
iter
err
surf(x,y,unew);
shading interp;
end;
u=unew;
iter=iter+1;
end;
surf(x,y,u);