diff --git a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 index 295e13e964ae225f357e279932b87f6a2b46379d..6ea00fada95668bc83d8248df9715a0eeab6a1a1 100644 --- a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 +++ b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 @@ -693,7 +693,7 @@ end subroutine construct_vertical_coeff zr_st => r%st zb_st => b%st - !$acc kernels + !$acc kernels present(zr_st,zb_st) zr_st(iib:iie,ijb:ije,ikb:ike) = zb_st(iib:iie,ijb:ije,ikb:ike) - zr_st(iib:iie,ijb:ije,ikb:ike) !$acc end kernels endif @@ -2024,6 +2024,9 @@ end subroutine line_Jacobi_mnh type(Temp_tridiag_mnh) , save , dimension(max_lev) :: Ttridiag_mnh + real(kind=rl) :: Tijs + + if (LUseT ) then ! Calculate r_i = b_i - A_{ij} u_i @@ -2080,7 +2083,7 @@ end subroutine line_Jacobi_mnh endif Tij=>Ttridiag_mnh(level)%Tij - alpha_div_Tij=>Ttridiag_mnh(level)%alpha_div_Tij + Tijs = Tij ! Bypass Cray Bug with allocatable/scalair pointer tmp_k => Ttridiag_mnh(level)%tmp_k c_k => Ttridiag_mnh(level)%c_k @@ -2101,21 +2104,21 @@ end subroutine line_Jacobi_mnh ! Thomas algorithm ! iz = 1 - zSu_out_st(iib:iie,ijb:ije,iz) = zSr_st(iib:iie,ijb:ije,iz) / (tmp_k(iz)*Tij*zd_k(iz)) + zSu_out_st(iib:iie,ijb:ije,iz) = zSr_st(iib:iie,ijb:ije,iz) / (tmp_k(iz)*Tijs*zd_k(iz)) ! !$acc loop seq do iz=2,nz-1 !$acc loop independent collapse(2) do ij=ijb,ije do ii=iib,iie - zSu_out_st(ii,ij,iz) = (zSr_st(ii,ij,iz) / (Tij*zd_k(iz)) & + zSu_out_st(ii,ij,iz) = (zSr_st(ii,ij,iz) / (Tijs*zd_k(iz)) & - zSu_out_st(ii,ij,iz-1)*zc_k(iz)) / tmp_k(iz) end do end do end do ! iz=nz - zSu_out_st(iib:iie,ijb:ije,iz) = (zSr_st(iib:iie,ijb:ije,iz) / (Tij*zd_k(iz)) & + zSu_out_st(iib:iie,ijb:ije,iz) = (zSr_st(iib:iie,ijb:ije,iz) / (Tijs*zd_k(iz)) & - zSu_out_st(iib:iie,ijb:ije,iz-1)*zc_k(iz)) / tmp_k(iz) ! STEP 2: back substitution