--- mg.f Sun Feb 12 03:31:15 2006 +++ mg.f Fri Jun 30 16:46:03 2006 @@ -499,60 +499,63 @@ c--------------------------------------------------------------------- c--------------------------------------------------------------------- subroutine mg3P(u,v,r,a,c,n1,n2,n3,k) c--------------------------------------------------------------------- c--------------------------------------------------------------------- c--------------------------------------------------------------------- c multigrid V-cycle routine c--------------------------------------------------------------------- implicit none include 'mpinpb.h' include 'globals.h' integer n1, n2, n3, k double precision u(nr),v(nv),r(nr) double precision a(0:3),c(0:3) integer j c--------------------------------------------------------------------- c down cycle. c restrict the residual from the find grid to the coarse c--------------------------------------------------------------------- do k= lt, lb+1 , -1 j = k-1 +C fix race + call mpi_barrier(mpi_comm_world, ierr) +C fix race call rprj3(r(ir(k)),m1(k),m2(k),m3(k), > r(ir(j)),m1(j),m2(j),m3(j),k) enddo k = lb c--------------------------------------------------------------------- c compute an approximate solution on the coarsest grid c--------------------------------------------------------------------- call zero3(u(ir(k)),m1(k),m2(k),m3(k)) call psinv(r(ir(k)),u(ir(k)),m1(k),m2(k),m3(k),c,k) do k = lb+1, lt-1 j = k-1 c--------------------------------------------------------------------- c prolongate from level k-1 to k c--------------------------------------------------------------------- call zero3(u(ir(k)),m1(k),m2(k),m3(k)) call interp(u(ir(j)),m1(j),m2(j),m3(j), > u(ir(k)),m1(k),m2(k),m3(k),k) c--------------------------------------------------------------------- c compute residual for level k c--------------------------------------------------------------------- call resid(u(ir(k)),r(ir(k)),r(ir(k)),m1(k),m2(k),m3(k),a,k) c--------------------------------------------------------------------- c apply smoother c--------------------------------------------------------------------- call psinv(r(ir(k)),u(ir(k)),m1(k),m2(k),m3(k),c,k) enddo 200 continue j = lt - 1