diff --git a/src/ZSOLVER/tensorproductmultigrid_Source/multigrid.f90 b/src/ZSOLVER/tensorproductmultigrid_Source/multigrid.f90 index 0b2444808550091995965b8df60b5133c1acf626..2fd6bc0b0e0c21d9751c4d15b9302dc37c7a2562 100644 --- a/src/ZSOLVER/tensorproductmultigrid_Source/multigrid.f90 +++ b/src/ZSOLVER/tensorproductmultigrid_Source/multigrid.f90 @@ -511,17 +511,16 @@ contains zphifine_st => phifine%st zphicoarse_st => phicoarse%st !$acc kernels +#ifdef MNH_COMPILER_NVHPC !$acc loop independent collapse(3) - do iz=1,nz - do iy=iy_min,iy_max - do ix=ix_min,ix_max +#endif + do concurrent (ix=ix_min:ix_max, iy=iy_min:iy_max, iz=1:nz) zphicoarse_st(ix,iy,iz) = & zphifine_st(2*ix ,2*iy ,iz) + & zphifine_st(2*ix ,2*iy-1,iz) + & zphifine_st(2*ix-1,2*iy ,iz) + & zphifine_st(2*ix-1,2*iy-1,iz) - end do - end do + end do !$acc end kernels endif @@ -849,20 +848,18 @@ contains zphicoarse_st => phicoarse%st !$acc kernels +#ifdef MNH_COMPILER_NVHPC !$acc loop independent collapse(5) - do iz=1,nz - do diy = -1,0 - do dix = -1,0 - do iy=iy_min,iy_max - do ix=ix_min,ix_max - zphifine_st(2*ix+dix,2*iy+diy,iz) = & - zphicoarse_st(ix,iy,iz) + & - rhox*(zphicoarse_st(ix+(2*dix+1),iy,iz) & - - zphicoarse_st(ix,iy,iz)) + & - rhoy*(zphicoarse_st(ix,iy+(2*diy+1),iz) & - - zphicoarse_st(ix,iy,iz)) - end do - end do +#endif + do diy = -1,0 + do dix = -1,0 + DO CONCURRENT (ix=ix_min:ix_max, iy=iy_min:iy_max, iz=1:nz) + zphifine_st(2*ix+dix,2*iy+diy,iz) = & + zphicoarse_st(ix,iy,iz) + & + rhox*(zphicoarse_st(ix+(2*dix+1),iy,iz) & + - zphicoarse_st(ix,iy,iz)) + & + rhoy*(zphicoarse_st(ix,iy+(2*diy+1),iz) & + - zphicoarse_st(ix,iy,iz)) end do end do end do