diff --git a/src/ZSOLVER/modeln.f90 b/src/ZSOLVER/modeln.f90
index 083d1adad140066fc63d2894a99adda19ffa48e4..71f868206338e1a4e4432f62216dc875e1628f28 100644
--- a/src/ZSOLVER/modeln.f90
+++ b/src/ZSOLVER/modeln.f90
@@ -362,7 +362,10 @@ USE MODD_TIME_n
 USE MODD_TIMEZ
 USE MODD_TURB_CLOUD,     ONLY: NMODEL_CLOUD,CTURBLEN_CLOUD,XCEI
 USE MODD_TURB_n
-USE MODD_VISCOSITY
+#ifdef MNH_COMPILER_CCE
+USE MODD_TURB_n,         ONLY:  VSIGQSAT_MODD => VSIGQSAT
+#endif
+ USE MODD_VISCOSITY
 !
 use mode_budget,           only: Budget_store_init, Budget_store_end
 USE MODE_DATETIME
@@ -559,6 +562,12 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZWETDEPAER
 !
 TYPE(TFILEDATA),POINTER :: TZBAKFILE, TZOUTFILE
 ! TYPE(TFILEDATA),SAVE    :: TZDIACFILE
+!
+#ifdef MNH_COMPILER_CCE
+!Bypass cray bug with scalar pointer
+REAL :: VSIGQSAT
+VSIGQSAT = VSIGQSAT_MODD
+#endif
 !-------------------------------------------------------------------------------
 !
 TZBAKFILE=> NULL()
@@ -1614,15 +1623,15 @@ XTIME_LES_BU_PROCESS = 0.
 !
 !$acc update device(XRTHS)
 !
+!XRWS_PRES copy and not copyout (hidden in UPDATE_HALO)
 !$acc data create (XUT, XVT, XWT)                                         &
-!$acc &    copyin (XTHT, XPABST, XRT, XSVT, XRTHS_CLD, XRRS_CLD, XTHVREF) &
-!$acc &    copy   (XRRS, XRUS, XRVS, XRWS)                         &
-!$acc &    copy   (XRWS_PRES)                                             & !XRWS_PRES copy and not copyout (hidden in UPDATE_HALO)
-!$acc &    present(XDXX, XDYY, XDZZ, XDZX, XDZY, XRHODJ)
+!$acc &    copyin (XTHT, XRT, XSVT, XRTHS_CLD, XRRS_CLD, XTHVREF) &
+!$acc &    copy   (XRRS, XRWS_PRES)                                       &
+!$acc &    present(XDXX, XDYY, XDZZ, XDZX, XDZY, XRHODJ, XRUS, XRVS, XRWS )
 !
 !$acc update device(XUT, XVT, XWT, XRHODJ)
-
-!
+!$acc update device(XRUS, XRVS, XRWS)
+!$acc update device(XPABST)
 !
 !$acc data copyin (XTKET, XRSVS_CLD) &
 !$acc &    copy   (XRTKES, XRSVS)    &
@@ -1751,16 +1760,24 @@ END IF
 ZTIME1 = ZTIME2
 !
 !$acc update self( XRUS, XRVS, XRWS )
+!$acc kernels
 ZRUS=XRUS
 ZRVS=XRVS
 ZRWS=XRWS
-
+!$acc end kernels
+!
 if ( .not. l1d ) then
   if ( lbudget_u ) call Budget_store_init( tbudgets(NBUDGET_U), 'PRES', xrus(:, :, :) )
   if ( lbudget_v ) call Budget_store_init( tbudgets(NBUDGET_V), 'PRES', xrvs(:, :, :) )
   if ( lbudget_w ) call Budget_store_init( tbudgets(NBUDGET_W), 'PRES', xrws(:, :, :) )
 end if
-
+!
+CALL MPPDB_CHECK3DM("before RAD_BOUND : other var",PRECISION,XUT,XVT,XRHODJ,XTKET)
+CALL MPPDB_CHECKLB(XLBXUM,"modeln XLBXUM",PRECISION,'LBXU',NRIMX)
+CALL MPPDB_CHECKLB(XLBYVM,"modeln XLBYVM",PRECISION,'LBYV',NRIMY)
+CALL MPPDB_CHECKLB(XLBXUS,"modeln XLBXUS",PRECISION,'LBXU',NRIMX)
+CALL MPPDB_CHECKLB(XLBYVS,"modeln XLBYVS",PRECISION,'LBYV',NRIMY)
+!
 CALL RAD_BOUND (CLBCX,CLBCY,CTURB,XCARPKMAX,             &
                 XTSTEP,                                  &
                 XDXHAT, XDYHAT, XZHAT,                   &
@@ -1770,9 +1787,11 @@ CALL RAD_BOUND (CLBCX,CLBCY,CTURB,XCARPKMAX,             &
                 XCPHASE, XCPHASE_PBL, XRHODJ,            &
                 XTKET,XRUS, XRVS, XRWS                   )
 !$acc update device( XRUS, XRVS, XRWS )
+!$acc kernels
 ZRUS=XRUS-ZRUS
 ZRVS=XRVS-ZRVS
 ZRWS=XRWS-ZRWS
+!$acc end kernels
 !
 CALL SECOND_MNH2(ZTIME2)
 !
@@ -1787,15 +1806,19 @@ ZTIME1 = ZTIME2
 XTIME_BU_PROCESS = 0.
 XTIME_LES_BU_PROCESS = 0.
 !
-ZPABST = XPABST
+!$acc kernels
+ZPABST(:,:,:) = XPABST(:,:,:)
+!$acc end kernels
 !
 IF(.NOT. L1D) THEN
 !
-  XRUS_PRES = XRUS
-  XRVS_PRES = XRVS
-  XRWS_PRES = XRWS
-!
-  CALL PRESSUREZ( CLBCX,CLBCY,CPRESOPT,NITR,LITRADJ,KTCOUNT, XRELAX,IMI, &
+   !$acc kernels   
+   XRUS_PRES = XRUS
+   XRVS_PRES = XRVS
+   XRWS_PRES = XRWS
+   !$acc end kernels  
+   !
+   CALL PRESSUREZ( CLBCX,CLBCY,CPRESOPT,NITR,LITRADJ,KTCOUNT, XRELAX,IMI, &
                   XRHODJ,XDXX,XDYY,XDZZ,XDZX,XDZY,XDXHATM,XDYHATM,XRHOM, &
                   XAF,XBFY,XCF,XTRIGSX,XTRIGSY,NIFAXX,NIFAXY,            &
                   NRR,NRRL,NRRI,XDRYMASST,XREFMASS,XMASS_O_PHI0,         &
@@ -1806,10 +1829,18 @@ IF(.NOT. L1D) THEN
                   XAF_ZS,XBF_ZS,XCF_ZS,                                  &
                   XDXATH_ZS,XDYATH_ZS,XRHO_ZS,                           &
                   XA_K,XB_K,XC_K,XD_K) !JUAN FULL ZSOLVER
-!
-  XRUS_PRES = XRUS - XRUS_PRES + ZRUS
-  XRVS_PRES = XRVS - XRVS_PRES + ZRVS
-  XRWS_PRES = XRWS - XRWS_PRES + ZRWS
+   !
+   !$acc update host(XPABST)
+   !$acc kernels  
+   XRUS_PRES = XRUS - XRUS_PRES + ZRUS
+   XRVS_PRES = XRVS - XRVS_PRES + ZRVS
+   XRWS_PRES = XRWS - XRWS_PRES + ZRWS
+   !$acc end kernels
+   !$acc update host(XRUS,XRVS,XRWS)
+   CALL MPPDB_CHECK3DM("after pressurez:XRU/V/WS",PRECISION,XRUS,XRVS,XRWS)
+   CALL MPPDB_CHECK3DM("after pressurez:ZRU/V/WS",PRECISION,ZRUS,ZRVS,ZRWS)
+   CALL MPPDB_CHECK3DM("after pressurez:XRU/V/WS_PRES",PRECISION,&
+                         XRUS_PRES,XRVS_PRES,XRWS_PRES )
 !
 END IF
 !
@@ -2399,7 +2430,7 @@ IF (OEXIT) THEN
 END IF
 
 #ifndef MNH_OPENACC
-IF ( ALLOCATED( ZSEA ) ) DEALLOCATE( ZSEA )
+IF ( ASSOCIATED( ZSEA ) ) DEALLOCATE( ZSEA )
 DEALLOCATE( ZRWS )
 DEALLOCATE( ZPABST )
 #else