function [u2d,stats]=altsw(m,rhs2d,uin,overlap) % ALTSW Alternating Schwarz solver % % function [u2d,stats]=altsw(m,rhs2d,uin,overlap) % maxit=10; stats=zeros(maxit,1); m2=overlap-1+((m+1)/2); h=1/(m+1); al=pmat2(m,m2,h); u2d=uin; % % lower block % mr=m2; for i=1:maxit uold=u2d; blow=u2d(1:m,mr+1)*h^-2; rlow=rhs2d(1:m,1:mr); rlow(1:m,m2)=rlow(1:m,mr)+blow; rl=rlow(:); ul=al\rl; v=zeros(m,m2); v(:)=ul; u2d(1:m,1:mr)=v; % % upper block % ml=.5*(m+1)+1-overlap; bup=u2d(1:m,ml-1)*h^-2; rup=rhs2d(1:m,ml:m); rup(1:m,1)=rup(1:m,1)+bup; rr=rup(:); ur=al\rr; v=zeros(m,m2); v(:)=ur; u2d(1:m,ml:m)=v; stats(i)= max(max(u2d-uold)); end