diff --git a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 index afc9d71dcf2276959a97e60486eb2012d92e86ae..75a6c3ad22d8ca3a8d2efb1f7da4661c4c59cbed 100644 --- a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 +++ b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 @@ -1661,30 +1661,57 @@ end subroutine construct_vertical_coeff end do end do end if - if (LUseT) then + + if (LUseT) then + iib=ixmin(iblock) iie=ixmax(iblock) ijb=iymin(iblock) ije=iymax(iblock) - + zu_st => u%st zSutmp_st => Sutmp%st zSut0_st => Sut0%st - + call apply_tridiag_solve_mnh_allT(iib,iie,ijb,ije,Sr,c,b, & - Sut0, & - Sutmp,level ) - !$acc kernels present_cr(zsut0_st,zu_st) - !$mnh_do_concurrent( ix=iib:iie , iy=ijb:ije , iz=1:nz ) - zu_st(ix,iy,iz) = & - rho*zSutmp_st(ix,iy,iz) & - + (1.0_rl-rho)*zSut0_st(ix,iy,iz) - !$mnh_end_do() ! concurrent - !$acc end kernels + Sut0, & + Sutmp,level ) + + call loop_over_grid_jacobi_mnh_dim(& + zu_st,zSutmp_st,zSut0_st,& + iib,iie,ijb,ije) + end if end subroutine loop_over_grid_jacobi_mnh +! contains + + subroutine loop_over_grid_jacobi_mnh_dim(& + zu_st,zSutmp_st,zSut0_st,& + iib,iie,ijb,ije) + + implicit none + + real :: zu_st (nib:nie,njb:nje,nkb:nke ),& + zSutmp_st(nib:nie,njb:nje,nkb:nke ),& + zSut0_st (nib:nie,njb:nje,nkb:nke ) + + integer :: iib,iie,ijb,ije + + ! local var + integer :: ix,iy,iz + + !$acc kernels present_cr(zsut0_st,zSutmp_st,zu_st) + !$mnh_do_concurrent( ix=iib:iie , iy=ijb:ije , iz=1:nz ) + zu_st(ix,iy,iz) = & + rho*zSutmp_st(ix,iy,iz) & + + (1.0_rl-rho)*zSut0_st(ix,iy,iz) + !$mnh_end_do() ! concurrent + !$acc end kernels + + end subroutine loop_over_grid_jacobi_mnh_dim + end subroutine line_Jacobi_mnh !================================================================== ! Jacobi line smoother