function vnew=twogrid(vold,f,nu1,nu2) % TWOGRID two-grid method with inferior data structures % global sigma vnew=vold; for ij=1:nu1 vnew=dampj(vnew,f); end nt=length(vnew); nl=nt-1; h=1/nl; hm2=nl*nl; av=zeros(nt,1); av(2:nt-1)=-vnew(1:nt-2)+(2+sigma*h*h)*vnew(2:nt-1)-vnew(3:nt); % % prepare coarse mesh data % r=f-hm2*av; fc=ftoc(r); % % call direct solver % vc=helmholtz(fc); vnew=vnew+ctof(vc); for ij=1:nu2 vnew=dampj(vnew,f); end