diff --git a/src/ZSOLVER/ini_modeln.f90 b/src/ZSOLVER/ini_modeln.f90
index 75587ef41ec43b4ae41fadd1890abd2091ee413c..609de0788d2d404ebc5212565d81cea6d352cd74 100644
--- a/src/ZSOLVER/ini_modeln.f90
+++ b/src/ZSOLVER/ini_modeln.f90
@@ -848,6 +848,7 @@ ALLOCATE(XUT(IIU,IJU,IKU))      ; XUT  = 0.0
 ALLOCATE(XVT(IIU,IJU,IKU))      ; XVT  = 0.0
 ALLOCATE(XWT(IIU,IJU,IKU))      ; XWT  = 0.0
 ALLOCATE(XTHT(IIU,IJU,IKU))     ; XTHT = 0.0
+!$acc enter data copyin(XTHT)
 ALLOCATE(XRUS(IIU,IJU,IKU))     ; XRUS = 0.0
 ALLOCATE(XRVS(IIU,IJU,IKU))     ; XRVS = 0.0
 ALLOCATE(XRWS(IIU,IJU,IKU))     ; XRWS = 0.0
@@ -934,6 +935,7 @@ ALLOCATE(XPABST(IIU,IJU,IKU)) ; XPABST = 0.0
 !$acc enter data copyin(XPABST)
 !
 ALLOCATE(XRT(IIU,IJU,IKU,NRR)) ;     XRT = 0.0
+
 ALLOCATE(XRRS(IIU,IJU,IKU,NRR)) ;    XRRS = 0.0
 ALLOCATE(XRRS_CLD(IIU,IJU,IKU,NRR)); XRRS_CLD = 0.0
 !
@@ -1039,14 +1041,15 @@ END IF
 ALLOCATE(XPHIT(IIU,IJU,IKU))
 ALLOCATE(XRHODREF(IIU,IJU,IKU))
 ALLOCATE(XTHVREF(IIU,IJU,IKU))
-ALLOCATE(XEXNREF(IIU,IJU,IKU))
+ALLOCATE(XEXNREF(IIU,IJU,IKU)) 
 ALLOCATE(XRHODJ(IIU,IJU,IKU))
-!$acc enter data create(XRHODJ)
+!$acc enter data create(XRHODREF,XEXNREF,XTHVREF,XRHODJ)
 IF (CEQNSYS=='DUR' .AND. LUSERV) THEN
   ALLOCATE(XRVREF(IIU,IJU,IKU))
 ELSE
   ALLOCATE(XRVREF(0,0,0))
 END IF
+!$acc enter data create(XRVREF)
 !
 !*       3.4   Module MODD_CURVCOR_n
 !
diff --git a/src/ZSOLVER/modeln.f90 b/src/ZSOLVER/modeln.f90
index 194b37a60da097527445893d401e0900b33600ba..c36c99582f7efc80ed9e44bfffa215911304c774 100644
--- a/src/ZSOLVER/modeln.f90
+++ b/src/ZSOLVER/modeln.f90
@@ -1633,13 +1633,14 @@ XTIME_LES_BU_PROCESS = 0.
 !
 !XRWS_PRES copy and not copyout (hidden in UPDATE_HALO)
 !$acc data create (XUT, XVT, XWT)                                         &
-!$acc &    copyin (XTHT, XRT, XSVT, XRTHS_CLD, XRRS_CLD, XTHVREF) &
+!$acc &    copyin (      XRT, XSVT, XRTHS_CLD, XRRS_CLD         ) &
 !$acc &    copy   (XRRS, XRWS_PRES)                                       &
-!$acc &    present(XDXX, XDYY, XDZZ, XDZX, XDZY, XRHODJ, XRUS, XRVS, XRWS )
+!$acc &    present(XDXX, XDYY, XDZZ, XDZX, XDZY, XRHODJ, XRUS, XRVS, XRWS ) &
+!$acc &    present(XTHT)
 !
 !$acc update device(XUT, XVT, XWT, XRHODJ)
 !$acc update device(XRUS, XRVS, XRWS)
-!$acc update device(XPABST)
+!$acc update device(XPABST,XTHT)
 !
 !$acc data copyin (XTKET, XRSVS_CLD) &
 !$acc &    copy   (XRTKES, XRSVS)    &
@@ -1952,7 +1953,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
   XRRS_CLD (:, :, :, : ) = XRRS(:, :, :, : )
   XRSVS_CLD(:, :, :, : ) = XRSVS(:, :, :, : )
 !$acc data present( XRHODJ, XRTHS, ZPABST )                                                      &
-!$acc &    copyin (XZZ, XRHODREF, XEXNREF, XTHT, XSIGS, VSIGQSAT, XMFCONV, XTHM, XPABSM,         &
+!$acc &    copyin (XZZ,                    XTHT, XSIGS, VSIGQSAT, XMFCONV, XTHM, XPABSM,         &
 !$acc &            XRCM, XWT_ACT_NUC, XDTHRAD, XCF_MF, XRC_MF, XRI_MF,                           &
 !$acc &            XSOLORG, XMI)                                                                 &
 !$acc &    copy   (XSUPSAT, XNACT, XNPRO, XSSPRO,                                                &
@@ -1961,7 +1962,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
 !$acc &            XHLC_HRC, XHLC_HCF, XHLI_HRI, XHLI_HCF)                                       &
 !$acc &    copyout(XSRCT, XRAINFR)
 
-!$acc update device (XRTHS)
+!$acc update device (XRTHS) 
   
   IF (CSURF=='EXTE') THEN
 #ifndef MNH_OPENACC
diff --git a/src/ZSOLVER/set_ref.f90 b/src/ZSOLVER/set_ref.f90
index 2fbb25ee08b0c3fffee800db82afdbb494f5c00d..a5e8b75322d1edc2df4211d9f2bc98a61ab6ab79 100644
--- a/src/ZSOLVER/set_ref.f90
+++ b/src/ZSOLVER/set_ref.f90
@@ -594,6 +594,10 @@ IF(NVERB >= 10) THEN                               !Value control
   END DO
 END IF
 !
+!$acc update device(PEXNREF,PRHODREF,PTHVREF) 
+IF ( SIZE(PRVREF,1) /= 0 ) THEN
+  !$acc update device(PRVREF) 
+END IF
 !-------------------------------------------------------------------------------
 !
 END SUBROUTINE SET_REF