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