diff --git a/build/with_fcm/fcm-make.cfg b/build/with_fcm/fcm-make.cfg
index cf2f0909ab554fddf2567ad1f23cb3b68a29a85a..6a43a1be568ad2f7c37b61c608d179e3f6bb444a 100644
--- a/build/with_fcm/fcm-make.cfg
+++ b/build/with_fcm/fcm-make.cfg
@@ -64,7 +64,7 @@ build.prop{fc.libs} = $LIBS
 #############################
 # 4.1 Programs and dummy programm to force linking
 build.source[dummyprog] = src/dummyprog.F90
-build.source[testprogs] = src/ice_adjust/ src/rain_ice/ src/support/
+build.source[testprogs] = src/ice_adjust/ src/rain_ice/ src/turb_mnh/ src/support/
 
 #############################
 # 4.2 Main directory
diff --git a/src/arome/ext/aroini_turb.F90 b/src/arome/ext/aroini_turb.F90
index b5d06b2109c6e9590dc3ee664d9f82501b0ecea7..1f2d9c7714a1432c99626602aaf8ee5ed9cce54a 100644
--- a/src/arome/ext/aroini_turb.F90
+++ b/src/arome/ext/aroini_turb.F90
@@ -44,7 +44,7 @@ USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 USE MODD_LES,   ONLY : TLES
 USE MODD_CTURB, ONLY : XLINI
 USE MODD_TURB_n, ONLY: LHARAT, LSTATNW, CTURBLEN, TURB_GOTO_MODEL, LTURB_FLX, LTURB_DIAG, &
-                       LSUBG_COND, LRMC01, CTURBDIM, XIMPL
+                       LSUBG_COND, LRMC01, CTURBDIM, XIMPL, CTOM
 USE MODI_INI_CTURB
 
 IMPLICIT NONE
@@ -86,6 +86,7 @@ LTURB_DIAG = .FALSE.
 XIMPL = 1.
 LSUBG_COND = OSUBG_COND
 LRMC01 = .FALSE.
+CTOM = 'NONE'
 
 !     ------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('AROINI_TURB',1,ZHOOK_HANDLE)
diff --git a/src/testprogs/support/diff.F90 b/src/testprogs/support/diff.F90
index 68fade755a33ec3b94800cb67f698e328310a3a7..15382559346a816780ead2715521bfe990c32393 100644
--- a/src/testprogs/support/diff.F90
+++ b/src/testprogs/support/diff.F90
@@ -38,9 +38,13 @@ IF (LLCHECK) THEN
     WRITE (*, '(I4)', ADVANCE='NO') JLEV
     DO JLON = 1, NPROMA
       IF (ABS (PREF (JLON, 1, JLEV)) + ABS (POUT (JLON, 1, JLEV)) == 0.) THEN
-      WRITE (*, '("|",2A12)', ADVANCE='NO') "", ""
+        WRITE (*, '("|",2A12)', ADVANCE='NO') "", ""
       ELSE
-      WRITE (*, '("|",2E12.5)', ADVANCE='NO') PREF (JLON, 1, JLEV), POUT (JLON, 1, JLEV)
+        !IF(ABS(POUT (JLON, 1, JLEV)-PREF (JLON, 1, JLEV))>0.001 * ABS(PREF (JLON, 1, JLEV))) THEN
+        !  WRITE (*, '("|",E12.5,"!=",E12.5)', ADVANCE='NO') PREF (JLON, 1, JLEV), POUT (JLON, 1, JLEV)
+        !ELSE
+          WRITE (*, '("|",2E12.5)', ADVANCE='NO') PREF (JLON, 1, JLEV), POUT (JLON, 1, JLEV)
+        !ENDIF
       ENDIF
     ENDDO
     WRITE (*, '("|")')
diff --git a/src/testprogs/turb_mnh/getdata_turb_mod.F90 b/src/testprogs/turb_mnh/getdata_turb_mod.F90
new file mode 100644
index 0000000000000000000000000000000000000000..c30126cdc7d100a55ce9734414f9184f551b1057
--- /dev/null
+++ b/src/testprogs/turb_mnh/getdata_turb_mod.F90
@@ -0,0 +1,716 @@
+MODULE GETDATA_TURB_MOD
+
+USE ARRAYS_MANIP, ONLY: SETUP, XNAN, REPLICATE, NPROMIZE, INTERPOLATE, SET
+
+CONTAINS
+
+SUBROUTINE GETDATA_TURB (NPROMA, NGPBLKS, NFLEVG, &
+                        !Inputs
+                        &ZDXX_B, ZDYY_B, ZDZZ_B, ZDZX_B, ZDZY_B, ZZZ_B, ZDIRCOSXW_B, ZDIRCOSYW_B, ZDIRCOSZW_B, &
+                        &ZCOSSLOPE_B, ZSINSLOPE_B, PRHODJ_B, &
+                        &PTHVREF_B, PSFTH_B, PSFRV_B, PSFU_B, PSFV_B, PSFSV_B, PPABSM_B, PUM_B, &
+                        &PVM_B, PWM_B, PTKEM_B, ZSVM_B, PSRCM_B, PTHM_B, ZRM_B, PRUS_B, &
+                        &PRVS_B, PRWS_B, PRTHS_B, PRTKES_B, PRRS_B, PRSVS_B, PSIGS_B, PFLXZTHVMF_B, &
+                        &PLENGTHM_B, PLENGTHH_B, MFMOIST_B, ZBL_DEPTH_B, ZSBL_DEPTH_B, ZCEI_B, &
+                        !Outputs
+                        &PTHM_OUT_B, ZRM_OUT_B, PRUS_OUT_B, PRVS_OUT_B, PRWS_OUT_B, PRTHS_OUT_B, PRTKES_OUT_B, PRTKES_OUT_OUT_B, &
+                        &ZRRS_B, ZRRS_OUT_B, ZRSVS_B, ZRSVS_OUT_B, PSIGS_OUT_B, ZWTH_B, ZWTH_OUT_B, ZWRC_B, ZWRC_OUT_B, &
+                        &ZWSV_B, ZWSV_OUT_B, PDP_B, PDP_OUT_B, PTP_B, PTP_OUT_B, &
+                        &PTDIFF_B, PTDIFF_OUT_B, PTDISS_B, PTDISS_OUT_B, PEDR_B, PEDR_OUT_B, PTPMF_B, PTPMF_OUT_B, &
+                        &PDRUS_TURB_B, PDRUS_TURB_OUT_B, PDRVS_TURB_B, PDRVS_TURB_OUT_B, &
+                        &PDRTHLS_TURB_B, PDRTHLS_TURB_OUT_B, PDRRTS_TURB_B, PDRRTS_TURB_OUT_B, ZDRSVS_TURB_B, ZDRSVS_TURB_OUT_B)
+
+
+IMPLICIT NONE
+
+INTEGER, PARAMETER :: IFILE = 77
+
+INTEGER      :: KLON 
+INTEGER      :: KIDIA  
+INTEGER      :: KFDIA  
+INTEGER      :: KLEV  
+INTEGER      :: KRR
+INTEGER      :: KSV
+INTEGER      :: KDUM
+
+LOGICAL :: LDVERBOSE
+
+!Inputs
+REAL, ALLOCATABLE   :: ZDXX_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDYY_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDZZ_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDZX_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDZY_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: ZZZ_B              (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDIRCOSXW_B        (:,:,:)
+REAL, ALLOCATABLE   :: ZDIRCOSYW_B        (:,:,:)
+REAL, ALLOCATABLE   :: ZDIRCOSZW_B        (:,:,:)
+REAL, ALLOCATABLE   :: ZCOSSLOPE_B        (:,:,:)
+REAL, ALLOCATABLE   :: ZSINSLOPE_B        (:,:,:)
+REAL, ALLOCATABLE   :: PRHODJ_B           (:,:,:,:)
+REAL, ALLOCATABLE   :: PTHVREF_B          (:,:,:,:)
+REAL, ALLOCATABLE   :: PSFTH_B            (:,:,:)
+REAL, ALLOCATABLE   :: PSFRV_B            (:,:,:)
+REAL, ALLOCATABLE   :: PSFU_B             (:,:,:)
+REAL, ALLOCATABLE   :: PSFV_B             (:,:,:)
+REAL, ALLOCATABLE   :: PSFSV_B            (:,:,:,:) !(KLON, 1, KSV)
+REAL, ALLOCATABLE   :: PPABSM_B           (:,:,:,:)
+REAL, ALLOCATABLE   :: PUM_B              (:,:,:,:)
+REAL, ALLOCATABLE   :: PVM_B              (:,:,:,:)
+REAL, ALLOCATABLE   :: PWM_B              (:,:,:,:)
+REAL, ALLOCATABLE   :: PTKEM_B            (:,:,:,:)
+REAL, ALLOCATABLE   :: ZSVM_B             (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PSRCM_B            (:,:,:,:)
+REAL, ALLOCATABLE   :: PTHM_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: ZRM_B              (:,:,:,:,:) !(KLON,1,KLEV,KRR)
+REAL, ALLOCATABLE   :: PRUS_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: PRVS_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: PRWS_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTHS_B            (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTKES_B           (:,:,:,:) !(KLON,1,KLEV)
+REAL, ALLOCATABLE   :: PRRS_B             (:,:,:,:,:) !(KLON,1,KLEV,KRR)
+REAL, ALLOCATABLE   :: PRSVS_B            (:,:,:,:,:) !(KLON,1,KLEV,KSV)
+REAL, ALLOCATABLE   :: PSIGS_B            (:,:,:,:)
+REAL, ALLOCATABLE   :: PFLXZTHVMF_B       (:,:,:,:)
+REAL, ALLOCATABLE   :: PLENGTHM_B         (:,:,:,:)
+REAL, ALLOCATABLE   :: PLENGTHH_B         (:,:,:,:)
+REAL, ALLOCATABLE   :: MFMOIST_B          (:,:,:,:)
+REAL, ALLOCATABLE   :: ZBL_DEPTH_B        (:,:,:)
+REAL, ALLOCATABLE   :: ZSBL_DEPTH_B       (:,:,:)
+REAL, ALLOCATABLE   :: ZCEI_B             (:,:,:,:)
+!Outputs
+REAL, ALLOCATABLE   :: PTHM_OUT_B         (:,:,:,:)
+REAL, ALLOCATABLE   :: ZRM_OUT_B          (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: PRUS_OUT_B         (:,:,:,:)
+REAL, ALLOCATABLE   :: PRVS_OUT_B         (:,:,:,:)
+REAL, ALLOCATABLE   :: PRWS_OUT_B         (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTHS_OUT_B        (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTKES_OUT_B       (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTKES_OUT_OUT_B   (:,:,:,:)
+REAL, ALLOCATABLE   :: ZRRS_B             (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: ZRRS_OUT_B         (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: ZRSVS_B            (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: ZRSVS_OUT_B        (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PSIGS_OUT_B        (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWTH_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWTH_OUT_B         (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWRC_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWRC_OUT_B         (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWSV_B             (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: ZWSV_OUT_B         (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PDP_B              (:,:,:,:)
+REAL, ALLOCATABLE   :: PDP_OUT_B          (:,:,:,:)
+REAL, ALLOCATABLE   :: PTP_B              (:,:,:,:)
+REAL, ALLOCATABLE   :: PTP_OUT_B          (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDIFF_B           (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDIFF_OUT_B       (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDISS_B           (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDISS_OUT_B       (:,:,:,:)
+REAL, ALLOCATABLE   :: PEDR_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: PEDR_OUT_B         (:,:,:,:)
+REAL, ALLOCATABLE   :: PTPMF_B            (:,:,:,:)
+REAL, ALLOCATABLE   :: PTPMF_OUT_B        (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRUS_TURB_B       (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRUS_TURB_OUT_B   (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRVS_TURB_B       (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRVS_TURB_OUT_B   (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRTHLS_TURB_B     (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRTHLS_TURB_OUT_B (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRRTS_TURB_B      (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRRTS_TURB_OUT_B  (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDRSVS_TURB_B      (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: ZDRSVS_TURB_OUT_B  (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+
+!Inputs
+REAL, ALLOCATABLE   :: ZDXX               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDYY               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDZZ               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDZX               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDZY               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZZZ                (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDIRCOSXW          (:,:,:)
+REAL, ALLOCATABLE   :: ZDIRCOSYW          (:,:,:)
+REAL, ALLOCATABLE   :: ZDIRCOSZW          (:,:,:)
+REAL, ALLOCATABLE   :: ZCOSSLOPE          (:,:,:)
+REAL, ALLOCATABLE   :: ZSINSLOPE          (:,:,:)
+REAL, ALLOCATABLE   :: PRHODJ             (:,:,:,:)
+REAL, ALLOCATABLE   :: PTHVREF            (:,:,:,:)
+REAL, ALLOCATABLE   :: PSFTH              (:,:,:)
+REAL, ALLOCATABLE   :: PSFRV              (:,:,:)
+REAL, ALLOCATABLE   :: PSFU               (:,:,:)
+REAL, ALLOCATABLE   :: PSFV               (:,:,:)
+REAL, ALLOCATABLE   :: PSFSV              (:,:,:,:) !(KLON, 1, KSV)
+REAL, ALLOCATABLE   :: PPABSM             (:,:,:,:)
+REAL, ALLOCATABLE   :: PUM                (:,:,:,:)
+REAL, ALLOCATABLE   :: PVM                (:,:,:,:)
+REAL, ALLOCATABLE   :: PWM                (:,:,:,:)
+REAL, ALLOCATABLE   :: PTKEM              (:,:,:,:)
+REAL, ALLOCATABLE   :: ZSVM               (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PSRCM              (:,:,:,:)
+REAL, ALLOCATABLE   :: PTHM               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZRM                (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: PRUS               (:,:,:,:)
+REAL, ALLOCATABLE   :: PRVS               (:,:,:,:)
+REAL, ALLOCATABLE   :: PRWS               (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTHS              (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTKES             (:,:,:,:)
+REAL, ALLOCATABLE   :: PRRS               (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: PRSVS              (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PSIGS              (:,:,:,:)
+REAL, ALLOCATABLE   :: PFLXZTHVMF         (:,:,:,:)
+!Outputs
+REAL, ALLOCATABLE   :: PTHM_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: ZRM_OUT            (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: PRUS_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: PRVS_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: PRWS_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTHS_OUT          (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTKES_OUT_OUT     (:,:,:,:)
+REAL, ALLOCATABLE   :: ZRRS_OUT           (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: ZRSVS_OUT          (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PSIGS_OUT          (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWTH_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWRC_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWSV_OUT           (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PDP_OUT            (:,:,:,:)
+REAL, ALLOCATABLE   :: PTP_OUT            (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDIFF_OUT         (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDISS_OUT         (:,:,:,:)
+REAL, ALLOCATABLE   :: PEDR_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: PTPMF_OUT          (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRUS_TURB_OUT     (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRVS_TURB_OUT     (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRTHLS_TURB_OUT   (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRRTS_TURB_OUT    (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDRSVS_TURB_OUT    (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+
+
+INTEGER :: NGPTOT, NPROMA, NGPBLKS, NFLEVG
+INTEGER :: IOFF, IBL
+LOGICAL :: LLEXIST
+CHARACTER(LEN=32) :: CLFILE
+
+CALL SETUP()
+
+NGPTOT = NPROMA * NGPBLKS
+
+IBL = 1
+WRITE (CLFILE, '("data/",I8.8,".dat")') IBL
+OPEN (IFILE, FILE=TRIM (CLFILE), FORM='UNFORMATTED') 
+READ (IFILE) KLON, KDUM, KLEV
+CLOSE (IFILE)
+KRR = 6
+KSV = 0
+
+IF (NFLEVG < 0) NFLEVG = KLEV
+
+ALLOCATE (ZDXX_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZDYY_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZDZZ_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZDZX_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZDZY_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZZZ_B              (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZDIRCOSXW_B        (NPROMA,1,NGPBLKS))
+ALLOCATE (ZDIRCOSYW_B        (NPROMA,1,NGPBLKS))
+ALLOCATE (ZDIRCOSZW_B        (NPROMA,1,NGPBLKS))
+ALLOCATE (ZCOSSLOPE_B        (NPROMA,1,NGPBLKS))
+ALLOCATE (ZSINSLOPE_B        (NPROMA,1,NGPBLKS))
+ALLOCATE (PRHODJ_B           (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTHVREF_B          (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PSFTH_B            (NPROMA,1,NGPBLKS))
+ALLOCATE (PSFRV_B            (NPROMA,1,NGPBLKS))
+ALLOCATE (PSFU_B             (NPROMA,1,NGPBLKS))
+ALLOCATE (PSFV_B             (NPROMA,1,NGPBLKS))
+ALLOCATE (PSFSV_B            (NPROMA,1,KSV,NGPBLKS))
+ALLOCATE (PPABSM_B           (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PUM_B              (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PVM_B              (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PWM_B              (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTKEM_B            (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZSVM_B             (NPROMA,1,NFLEVG,KSV,NGPBLKS))
+ALLOCATE (PSRCM_B            (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTHM_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZRM_B              (NPROMA,1,NFLEVG,KRR,NGPBLKS))
+ALLOCATE (PRUS_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PRVS_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PRWS_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PRTHS_B            (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PRTKES_B           (NPROMA,1,NFLEVG-2,NGPBLKS))
+ALLOCATE (PRRS_B             (NPROMA,1,NFLEVG-2,KRR,NGPBLKS))
+ALLOCATE (PRSVS_B            (NPROMA,1,NFLEVG-2,KSV,NGPBLKS))
+ALLOCATE (PSIGS_B            (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PFLXZTHVMF_B       (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PLENGTHM_B         (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PLENGTHH_B         (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (MFMOIST_B          (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZBL_DEPTH_B        (NPROMA,1,NGPBLKS))
+ALLOCATE (ZSBL_DEPTH_B       (NPROMA,1,NGPBLKS))
+ALLOCATE (ZCEI_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTHM_OUT_B         (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZRM_OUT_B          (NPROMA,1,NFLEVG,KRR,NGPBLKS))
+ALLOCATE (PRUS_OUT_B         (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PRVS_OUT_B         (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PRWS_OUT_B         (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PRTHS_OUT_B        (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PRTKES_OUT_B       (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PRTKES_OUT_OUT_B   (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZRRS_B             (NPROMA,1,NFLEVG,KRR,NGPBLKS))
+ALLOCATE (ZRRS_OUT_B         (NPROMA,1,NFLEVG,KRR,NGPBLKS))
+ALLOCATE (ZRSVS_B            (NPROMA,1,NFLEVG,KSV,NGPBLKS))
+ALLOCATE (ZRSVS_OUT_B        (NPROMA,1,NFLEVG,KSV,NGPBLKS))
+ALLOCATE (PSIGS_OUT_B        (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZWTH_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZWTH_OUT_B         (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZWRC_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZWRC_OUT_B         (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZWSV_B             (NPROMA,1,NFLEVG,KSV,NGPBLKS))
+ALLOCATE (ZWSV_OUT_B         (NPROMA,1,NFLEVG,KSV,NGPBLKS))
+ALLOCATE (PDP_B              (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDP_OUT_B          (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTP_B              (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTP_OUT_B          (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTDIFF_B           (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTDIFF_OUT_B       (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTDISS_B           (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTDISS_OUT_B       (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PEDR_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PEDR_OUT_B         (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTPMF_B            (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTPMF_OUT_B        (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRUS_TURB_B       (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRUS_TURB_OUT_B   (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRVS_TURB_B       (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRVS_TURB_OUT_B   (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRTHLS_TURB_B     (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRTHLS_TURB_OUT_B (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRRTS_TURB_B      (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRRTS_TURB_OUT_B  (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZDRSVS_TURB_B      (NPROMA,1,NFLEVG,KSV,NGPBLKS))
+ALLOCATE (ZDRSVS_TURB_OUT_B  (NPROMA,1,NFLEVG,KSV,NGPBLKS))
+
+CALL SET (ZDXX_B             )
+CALL SET (ZDYY_B             )
+CALL SET (ZDZZ_B             )
+CALL SET (ZDZX_B             )
+CALL SET (ZDZY_B             )
+CALL SET (ZZZ_B              )
+CALL SET (ZDIRCOSXW_B        )
+CALL SET (ZDIRCOSYW_B        )
+CALL SET (ZDIRCOSZW_B        )
+CALL SET (ZCOSSLOPE_B        )
+CALL SET (ZSINSLOPE_B        )
+CALL SET (PRHODJ_B           )
+CALL SET (PTHVREF_B          )
+CALL SET (PSFTH_B            )
+CALL SET (PSFRV_B            )
+CALL SET (PSFU_B             )
+CALL SET (PSFV_B             )
+CALL SET (PSFSV_B            )
+CALL SET (PPABSM_B           )
+CALL SET (PUM_B              )
+CALL SET (PVM_B              )
+CALL SET (PWM_B              )
+CALL SET (PTKEM_B            )
+CALL SET (ZSVM_B             )
+CALL SET (PSRCM_B            )
+CALL SET (PTHM_B             )
+CALL SET (ZRM_B              )
+CALL SET (PRUS_B             )
+CALL SET (PRVS_B             )
+CALL SET (PRWS_B             )
+CALL SET (PRTHS_B            )
+CALL SET (PRTKES_B           )
+CALL SET (PRRS_B             )
+CALL SET (PRSVS_B            )
+CALL SET (PSIGS_B            )
+CALL SET (PFLXZTHVMF_B       )
+CALL SET (PLENGTHM_B         )
+CALL SET (PLENGTHH_B         )
+CALL SET (MFMOIST_B          )
+CALL SET (ZBL_DEPTH_B        )
+CALL SET (ZSBL_DEPTH_B       )
+CALL SET (ZCEI_B             )
+
+CALL SET (PTHM_OUT_B         )
+CALL SET (ZRM_OUT_B          )
+CALL SET (PRUS_OUT_B         )
+CALL SET (PRVS_OUT_B         )
+CALL SET (PRWS_OUT_B         )
+CALL SET (PRTHS_OUT_B        )
+CALL SET (PRTKES_OUT_B       )
+CALL SET (PRTKES_OUT_OUT_B   )
+CALL SET (ZRRS_B             )
+CALL SET (ZRRS_OUT_B         )
+CALL SET (ZRSVS_B            )
+CALL SET (ZRSVS_OUT_B        )
+CALL SET (PSIGS_OUT_B        )
+CALL SET (ZWTH_B             )
+CALL SET (ZWTH_OUT_B         )
+CALL SET (ZWRC_B             )
+CALL SET (ZWRC_OUT_B         )
+CALL SET (ZWSV_B             )
+CALL SET (ZWSV_OUT_B         )
+CALL SET (PDP_B              )
+CALL SET (PDP_OUT_B          )
+CALL SET (PTP_B              )
+CALL SET (PTP_OUT_B          )
+CALL SET (PTDIFF_B           )
+CALL SET (PTDIFF_OUT_B       )
+CALL SET (PTDISS_B           )
+CALL SET (PTDISS_OUT_B       )
+CALL SET (PEDR_B             )
+CALL SET (PEDR_OUT_B         )
+CALL SET (PTPMF_B            )
+CALL SET (PTPMF_OUT_B        )
+CALL SET (PDRUS_TURB_B       )
+CALL SET (PDRUS_TURB_OUT_B   )
+CALL SET (PDRVS_TURB_B       )
+CALL SET (PDRVS_TURB_OUT_B   )
+CALL SET (PDRTHLS_TURB_B     )
+CALL SET (PDRTHLS_TURB_OUT_B )
+CALL SET (PDRRTS_TURB_B      )
+CALL SET (PDRRTS_TURB_OUT_B  )
+CALL SET (ZDRSVS_TURB_B      )
+CALL SET (ZDRSVS_TURB_OUT_B  )
+
+IOFF = 0
+IBL = 0
+LLEXIST = .TRUE.
+
+DO WHILE(LLEXIST)
+  IBL = IBL + 1
+  WRITE (CLFILE, '("data/",I8.8,".dat")') IBL
+
+  INQUIRE (FILE=TRIM (CLFILE), EXIST=LLEXIST)
+
+  IF (LDVERBOSE) PRINT *, TRIM (CLFILE)
+
+  IF (.NOT. LLEXIST) EXIT
+
+  OPEN (IFILE, FILE=TRIM (CLFILE), FORM='UNFORMATTED') 
+  
+  READ (IFILE) KLON, KDUM, KLEV
+
+  IF (IBL == 1) THEN
+    ALLOCATE (ZDXX               (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZDYY               (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZDZZ               (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZDZX               (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZDZY               (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZZZ                (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZDIRCOSXW          (NGPTOT,1,1))
+    ALLOCATE (ZDIRCOSYW          (NGPTOT,1,1))
+    ALLOCATE (ZDIRCOSZW          (NGPTOT,1,1))
+    ALLOCATE (ZCOSSLOPE          (NGPTOT,1,1))
+    ALLOCATE (ZSINSLOPE          (NGPTOT,1,1))
+    ALLOCATE (PRHODJ             (NGPTOT,1,KLEV,1))
+    ALLOCATE (PTHVREF            (NGPTOT,1,KLEV,1))
+    ALLOCATE (PSFTH              (NGPTOT,1,1))
+    ALLOCATE (PSFRV              (NGPTOT,1,1))
+    ALLOCATE (PSFU               (NGPTOT,1,1))
+    ALLOCATE (PSFV               (NGPTOT,1,1))
+    ALLOCATE (PSFSV              (NGPTOT,1,KSV,1))
+    ALLOCATE (PPABSM             (NGPTOT,1,KLEV,1))
+    ALLOCATE (PUM                (NGPTOT,1,KLEV,1))
+    ALLOCATE (PVM                (NGPTOT,1,KLEV,1))
+    ALLOCATE (PWM                (NGPTOT,1,KLEV,1))
+    ALLOCATE (PTKEM              (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZSVM               (NGPTOT,1,KLEV,KSV,1))
+    ALLOCATE (PSRCM              (NGPTOT,1,KLEV,1))
+    ALLOCATE (PTHM               (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZRM                (NGPTOT,1,KLEV,KRR,1))
+    ALLOCATE (PRUS               (NGPTOT,1,KLEV,1))
+    ALLOCATE (PRVS               (NGPTOT,1,KLEV,1))
+    ALLOCATE (PRWS               (NGPTOT,1,KLEV,1))
+    ALLOCATE (PRTHS              (NGPTOT,1,KLEV,1))
+    ALLOCATE (PRTKES             (NGPTOT,1,KLEV-2,1))
+    ALLOCATE (PRRS               (NGPTOT,1,KLEV-2,KRR,1))
+    ALLOCATE (PRSVS              (NGPTOT,1,KLEV-2,KSV,1))
+    ALLOCATE (PSIGS              (NGPTOT,1,KLEV,1))
+    ALLOCATE (PFLXZTHVMF         (NGPTOT,1,KLEV,1))
+    ALLOCATE (PTHM_OUT           (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZRM_OUT            (NGPTOT,1,KLEV,KRR,1))
+    ALLOCATE (PRUS_OUT           (NGPTOT,1,KLEV,1))
+    ALLOCATE (PRVS_OUT           (NGPTOT,1,KLEV,1))
+    ALLOCATE (PRWS_OUT           (NGPTOT,1,KLEV,1))
+    ALLOCATE (PRTHS_OUT          (NGPTOT,1,KLEV,1))
+    ALLOCATE (PRTKES_OUT_OUT     (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZRRS_OUT           (NGPTOT,1,KLEV,KRR,1))
+    ALLOCATE (ZRSVS_OUT          (NGPTOT,1,KLEV,KSV,1))
+    ALLOCATE (PSIGS_OUT          (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZWTH_OUT           (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZWRC_OUT           (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZWSV_OUT           (NGPTOT,1,KLEV,KSV,1))
+    ALLOCATE (PDP_OUT            (NGPTOT,1,KLEV,1))
+    ALLOCATE (PTP_OUT            (NGPTOT,1,KLEV,1))
+    ALLOCATE (PTDIFF_OUT         (NGPTOT,1,KLEV,1))
+    ALLOCATE (PTDISS_OUT         (NGPTOT,1,KLEV,1))
+    ALLOCATE (PEDR_OUT           (NGPTOT,1,KLEV,1))
+    ALLOCATE (PTPMF_OUT          (NGPTOT,1,KLEV,1))
+    ALLOCATE (PDRUS_TURB_OUT     (NGPTOT,1,KLEV,1))
+    ALLOCATE (PDRVS_TURB_OUT     (NGPTOT,1,KLEV,1))
+    ALLOCATE (PDRTHLS_TURB_OUT   (NGPTOT,1,KLEV,1))
+    ALLOCATE (PDRRTS_TURB_OUT    (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZDRSVS_TURB_OUT    (NGPTOT,1,KLEV,KSV,1))
+  ENDIF
+
+  IF (IOFF+KLON > NGPTOT) THEN
+    EXIT
+  ENDIF
+
+  READ(IFILE) ZDXX               (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZDYY               (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZDZZ               (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZDZX               (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZDZY               (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZZZ                (IOFF+1:IOFF+KLON,:,:,1)
+  ZDIRCOSXW(IOFF+1:IOFF+KLON,:,1)=1.
+  ZDIRCOSYW(IOFF+1:IOFF+KLON,:,1)=1.
+  ZDIRCOSZW(IOFF+1:IOFF+KLON,:,1)=1.
+  READ(IFILE) ZCOSSLOPE          (IOFF+1:IOFF+KLON,:,1)
+  READ(IFILE) ZSINSLOPE          (IOFF+1:IOFF+KLON,:,1)
+  READ(IFILE) PRHODJ             (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PTHVREF            (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PSFTH              (IOFF+1:IOFF+KLON,:,1)
+  READ(IFILE) PSFRV              (IOFF+1:IOFF+KLON,:,1)
+  READ(IFILE) PSFU               (IOFF+1:IOFF+KLON,:,1)
+  READ(IFILE) PSFV               (IOFF+1:IOFF+KLON,:,1)
+  READ(IFILE) PSFSV              (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PPABSM             (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PUM                (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PVM                (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PWM                (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PTKEM              (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZSVM               (IOFF+1:IOFF+KLON,:,:,:,1)
+  READ(IFILE) PSRCM              (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PTHM               (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZRM                (IOFF+1:IOFF+KLON,:,:,:,1)
+  READ(IFILE) PRUS               (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PRVS               (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PRWS               (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PRTHS              (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PRTKES             (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PRRS               (IOFF+1:IOFF+KLON,:,:,:,1)
+  READ(IFILE) PRSVS              (IOFF+1:IOFF+KLON,:,:,:,1)
+  READ(IFILE) PSIGS              (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PFLXZTHVMF         (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PTHM_OUT           (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZRM_OUT            (IOFF+1:IOFF+KLON,:,:,:,1)
+  READ(IFILE) PRUS_OUT           (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PRVS_OUT           (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PRWS_OUT           (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PRTHS_OUT          (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PRTKES_OUT_OUT     (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZRRS_OUT           (IOFF+1:IOFF+KLON,:,:,:,1)
+  READ(IFILE) ZRSVS_OUT          (IOFF+1:IOFF+KLON,:,:,:,1)
+  READ(IFILE) PSIGS_OUT          (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZWTH_OUT           (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZWRC_OUT           (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZWSV_OUT           (IOFF+1:IOFF+KLON,:,:,:,1)
+  READ(IFILE) PDP_OUT            (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PTP_OUT            (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PTDIFF_OUT         (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PTDISS_OUT         (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PEDR_OUT           (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PTPMF_OUT          (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PDRUS_TURB_OUT     (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PDRVS_TURB_OUT     (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PDRTHLS_TURB_OUT   (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PDRRTS_TURB_OUT    (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZDRSVS_TURB_OUT    (IOFF+1:IOFF+KLON,:,:,:,1)
+  
+  CLOSE (IFILE)
+
+  IOFF = IOFF + KLON
+
+ENDDO
+
+IF (NFLEVG /= KLEV) THEN
+  CALL INTERPOLATE (NFLEVG, IOFF, ZDXX               )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZDYY               )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZDZZ               )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZDZX               )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZDZY               )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZZZ                )
+!  CALL INTERPOLATE (NFLEVG, IOFF, ZDIRCOSXW_B        )
+!  CALL INTERPOLATE (NFLEVG, IOFF, ZDIRCOSYW_B        )
+!  CALL INTERPOLATE (NFLEVG, IOFF, ZDIRCOSZW_B        )
+!  CALL INTERPOLATE (NFLEVG, IOFF, ZCOSSLOPE          )
+!  CALL INTERPOLATE (NFLEVG, IOFF, ZSINSLOPE          )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRHODJ             )
+  CALL INTERPOLATE (NFLEVG, IOFF, PTHVREF            )
+!  CALL INTERPOLATE (NFLEVG, IOFF, PSFTH              )
+!  CALL INTERPOLATE (NFLEVG, IOFF, PSFRV              )
+!  CALL INTERPOLATE (NFLEVG, IOFF, PSFU               )
+!  CALL INTERPOLATE (NFLEVG, IOFF, PSFV               )
+!  CALL INTERPOLATE (NFLEVG, IOFF, PSFSV              )
+  CALL INTERPOLATE (NFLEVG, IOFF, PPABSM             )
+  CALL INTERPOLATE (NFLEVG, IOFF, PUM                )
+  CALL INTERPOLATE (NFLEVG, IOFF, PVM                )
+  CALL INTERPOLATE (NFLEVG, IOFF, PWM                )
+  CALL INTERPOLATE (NFLEVG, IOFF, PTKEM              )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZSVM               )
+  CALL INTERPOLATE (NFLEVG, IOFF, PSRCM              )
+  CALL INTERPOLATE (NFLEVG, IOFF, PTHM               )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZRM                )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRUS               )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRVS               )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRWS               )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRTHS              )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRTKES             )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRRS               )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRSVS              )
+  CALL INTERPOLATE (NFLEVG, IOFF, PSIGS              )
+  CALL INTERPOLATE (NFLEVG, IOFF, PFLXZTHVMF         )
+  CALL INTERPOLATE (NFLEVG, IOFF, PTHM_OUT           )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZRM_OUT            )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRUS_OUT           )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRVS_OUT           )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRWS_OUT           )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRTHS_OUT          )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRTKES_OUT_OUT     )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZRRS_OUT           )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZRSVS_OUT          )
+  CALL INTERPOLATE (NFLEVG, IOFF, PSIGS_OUT          )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZWTH_OUT           )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZWRC_OUT           )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZWSV_OUT           )
+  CALL INTERPOLATE (NFLEVG, IOFF, PDP_OUT            )
+  CALL INTERPOLATE (NFLEVG, IOFF, PTP_OUT            )
+  CALL INTERPOLATE (NFLEVG, IOFF, PTDIFF_OUT         )
+  CALL INTERPOLATE (NFLEVG, IOFF, PTDISS_OUT         )
+  CALL INTERPOLATE (NFLEVG, IOFF, PEDR_OUT           )
+  CALL INTERPOLATE (NFLEVG, IOFF, PTPMF_OUT          )
+  CALL INTERPOLATE (NFLEVG, IOFF, PDRUS_TURB_OUT     )
+  CALL INTERPOLATE (NFLEVG, IOFF, PDRVS_TURB_OUT     )
+  CALL INTERPOLATE (NFLEVG, IOFF, PDRTHLS_TURB_OUT   )
+  CALL INTERPOLATE (NFLEVG, IOFF, PDRRTS_TURB_OUT    )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZDRSVS_TURB_OUT    )
+
+ENDIF
+
+CALL REPLICATE (IOFF, ZDXX               (:,:,:,1))
+CALL REPLICATE (IOFF, ZDYY               (:,:,:,1))
+CALL REPLICATE (IOFF, ZDZZ               (:,:,:,1))
+CALL REPLICATE (IOFF, ZDZX               (:,:,:,1))
+CALL REPLICATE (IOFF, ZDZY               (:,:,:,1))
+CALL REPLICATE (IOFF, ZZZ                (:,:,:,1))
+CALL REPLICATE (IOFF, ZDIRCOSXW          (:,:,1))
+CALL REPLICATE (IOFF, ZDIRCOSYW          (:,:,1))
+CALL REPLICATE (IOFF, ZDIRCOSZW          (:,:,1))
+CALL REPLICATE (IOFF, ZCOSSLOPE          (:,:,1))
+CALL REPLICATE (IOFF, ZSINSLOPE          (:,:,1))
+CALL REPLICATE (IOFF, PRHODJ             (:,:,:,1))
+CALL REPLICATE (IOFF, PTHVREF            (:,:,:,1))
+CALL REPLICATE (IOFF, PSFTH              (:,:,1))
+CALL REPLICATE (IOFF, PSFRV              (:,:,1))
+CALL REPLICATE (IOFF, PSFU               (:,:,1))
+CALL REPLICATE (IOFF, PSFV               (:,:,1))
+CALL REPLICATE (IOFF, PSFSV              (:,:,:,1))
+CALL REPLICATE (IOFF, PPABSM             (:,:,:,1))
+CALL REPLICATE (IOFF, PUM                (:,:,:,1))
+CALL REPLICATE (IOFF, PVM                (:,:,:,1))
+CALL REPLICATE (IOFF, PWM                (:,:,:,1))
+CALL REPLICATE (IOFF, PTKEM              (:,:,:,1))
+CALL REPLICATE (IOFF, ZSVM               (:,:,:,:,1))
+CALL REPLICATE (IOFF, PSRCM              (:,:,:,1))
+CALL REPLICATE (IOFF, PTHM               (:,:,:,1))
+CALL REPLICATE (IOFF, ZRM                (:,:,:,:,1))
+CALL REPLICATE (IOFF, PRUS               (:,:,:,1))
+CALL REPLICATE (IOFF, PRVS               (:,:,:,1))
+CALL REPLICATE (IOFF, PRWS               (:,:,:,1))
+CALL REPLICATE (IOFF, PRTHS              (:,:,:,1))
+CALL REPLICATE (IOFF, PRTKES             (:,:,:,1))
+CALL REPLICATE (IOFF, PRRS               (:,:,:,:,1))
+CALL REPLICATE (IOFF, PRSVS              (:,:,:,:,1))
+CALL REPLICATE (IOFF, PSIGS              (:,:,:,1))
+CALL REPLICATE (IOFF, PFLXZTHVMF         (:,:,:,1))
+CALL REPLICATE (IOFF, PTHM_OUT           (:,:,:,1))
+CALL REPLICATE (IOFF, ZRM_OUT            (:,:,:,:,1))
+CALL REPLICATE (IOFF, PRUS_OUT           (:,:,:,1))
+CALL REPLICATE (IOFF, PRVS_OUT           (:,:,:,1))
+CALL REPLICATE (IOFF, PRWS_OUT           (:,:,:,1))
+CALL REPLICATE (IOFF, PRTHS_OUT          (:,:,:,1))
+CALL REPLICATE (IOFF, PRTKES_OUT_OUT     (:,:,:,1))
+CALL REPLICATE (IOFF, ZRRS_OUT           (:,:,:,:,1))
+CALL REPLICATE (IOFF, ZRSVS_OUT          (:,:,:,:,1))
+CALL REPLICATE (IOFF, PSIGS_OUT          (:,:,:,1))
+CALL REPLICATE (IOFF, ZWTH_OUT           (:,:,:,1))
+CALL REPLICATE (IOFF, ZWRC_OUT           (:,:,:,1))
+CALL REPLICATE (IOFF, ZWSV_OUT           (:,:,:,:,1))
+CALL REPLICATE (IOFF, PDP_OUT            (:,:,:,1))
+CALL REPLICATE (IOFF, PTP_OUT            (:,:,:,1))
+CALL REPLICATE (IOFF, PTDIFF_OUT         (:,:,:,1))
+CALL REPLICATE (IOFF, PTDISS_OUT         (:,:,:,1))
+CALL REPLICATE (IOFF, PEDR_OUT           (:,:,:,1))
+CALL REPLICATE (IOFF, PTPMF_OUT          (:,:,:,1))
+CALL REPLICATE (IOFF, PDRUS_TURB_OUT     (:,:,:,1))
+CALL REPLICATE (IOFF, PDRVS_TURB_OUT     (:,:,:,1))
+CALL REPLICATE (IOFF, PDRTHLS_TURB_OUT   (:,:,:,1))
+CALL REPLICATE (IOFF, PDRRTS_TURB_OUT    (:,:,:,1))
+CALL REPLICATE (IOFF, ZDRSVS_TURB_OUT    (:,:,:,:,1))
+
+CALL NPROMIZE (NPROMA, ZDXX               , ZDXX_B             )
+CALL NPROMIZE (NPROMA, ZDYY               , ZDYY_B             )
+CALL NPROMIZE (NPROMA, ZDZZ               , ZDZZ_B             )
+CALL NPROMIZE (NPROMA, ZDZX               , ZDZX_B             )
+CALL NPROMIZE (NPROMA, ZDZY               , ZDZY_B             )
+CALL NPROMIZE (NPROMA, ZZZ                , ZZZ_B              )
+CALL NPROMIZE (NPROMA, ZDIRCOSXW          , ZDIRCOSXW_B        )
+CALL NPROMIZE (NPROMA, ZDIRCOSYW          , ZDIRCOSYW_B        )
+CALL NPROMIZE (NPROMA, ZDIRCOSZW          , ZDIRCOSZW_B        )
+CALL NPROMIZE (NPROMA, ZCOSSLOPE          , ZCOSSLOPE_B        )
+CALL NPROMIZE (NPROMA, ZSINSLOPE          , ZSINSLOPE_B        )
+CALL NPROMIZE (NPROMA, PRHODJ             , PRHODJ_B           )
+CALL NPROMIZE (NPROMA, PTHVREF            , PTHVREF_B          )
+CALL NPROMIZE (NPROMA, PSFTH              , PSFTH_B            )
+CALL NPROMIZE (NPROMA, PSFRV              , PSFRV_B            )
+CALL NPROMIZE (NPROMA, PSFU               , PSFU_B             )
+CALL NPROMIZE (NPROMA, PSFV               , PSFV_B             )
+CALL NPROMIZE (NPROMA, PSFSV              , PSFSV_B            )
+CALL NPROMIZE (NPROMA, PPABSM             , PPABSM_B           )
+CALL NPROMIZE (NPROMA, PUM                , PUM_B              )
+CALL NPROMIZE (NPROMA, PVM                , PVM_B              )
+CALL NPROMIZE (NPROMA, PWM                , PWM_B              )
+CALL NPROMIZE (NPROMA, PTKEM              , PTKEM_B            )
+CALL NPROMIZE (NPROMA, ZSVM               , ZSVM_B             )
+CALL NPROMIZE (NPROMA, PSRCM              , PSRCM_B            )
+CALL NPROMIZE (NPROMA, PTHM               , PTHM_B             )
+CALL NPROMIZE (NPROMA, ZRM                , ZRM_B              )
+CALL NPROMIZE (NPROMA, PRUS               , PRUS_B             )
+CALL NPROMIZE (NPROMA, PRVS               , PRVS_B             )
+CALL NPROMIZE (NPROMA, PRWS               , PRWS_B             )
+CALL NPROMIZE (NPROMA, PRTHS              , PRTHS_B            )
+CALL NPROMIZE (NPROMA, PRTKES             , PRTKES_B           )
+CALL NPROMIZE (NPROMA, PRRS               , PRRS_B             )
+CALL NPROMIZE (NPROMA, PRSVS              , PRSVS_B            )
+CALL NPROMIZE (NPROMA, PSIGS              , PSIGS_B            )
+CALL NPROMIZE (NPROMA, PFLXZTHVMF         , PFLXZTHVMF_B       )
+CALL NPROMIZE (NPROMA, PTHM_OUT           , PTHM_OUT_B         )
+CALL NPROMIZE (NPROMA, ZRM_OUT            , ZRM_OUT_B          )
+CALL NPROMIZE (NPROMA, PRUS_OUT           , PRUS_OUT_B         )
+CALL NPROMIZE (NPROMA, PRVS_OUT           , PRVS_OUT_B         )
+CALL NPROMIZE (NPROMA, PRWS_OUT           , PRWS_OUT_B         )
+CALL NPROMIZE (NPROMA, PRTHS_OUT          , PRTHS_OUT_B        )
+CALL NPROMIZE (NPROMA, PRTKES_OUT_OUT     , PRTKES_OUT_OUT_B   )
+CALL NPROMIZE (NPROMA, ZRRS_OUT           , ZRRS_OUT_B         )
+CALL NPROMIZE (NPROMA, ZRSVS_OUT          , ZRSVS_OUT_B        )
+CALL NPROMIZE (NPROMA, PSIGS_OUT          , PSIGS_OUT_B        )
+CALL NPROMIZE (NPROMA, ZWTH_OUT           , ZWTH_OUT_B         )
+CALL NPROMIZE (NPROMA, ZWRC_OUT           , ZWRC_OUT_B         )
+CALL NPROMIZE (NPROMA, ZWSV_OUT           , ZWSV_OUT_B         )
+CALL NPROMIZE (NPROMA, PDP_OUT            , PDP_OUT_B          )
+CALL NPROMIZE (NPROMA, PTP_OUT            , PTP_OUT_B          )
+CALL NPROMIZE (NPROMA, PTDIFF_OUT         , PTDIFF_OUT_B       )
+CALL NPROMIZE (NPROMA, PTDISS_OUT         , PTDISS_OUT_B       )
+CALL NPROMIZE (NPROMA, PEDR_OUT           , PEDR_OUT_B         )
+CALL NPROMIZE (NPROMA, PTPMF_OUT          , PTPMF_OUT_B        )
+CALL NPROMIZE (NPROMA, PDRUS_TURB_OUT     , PDRUS_TURB_OUT_B   )
+CALL NPROMIZE (NPROMA, PDRVS_TURB_OUT     , PDRVS_TURB_OUT_B   )
+CALL NPROMIZE (NPROMA, PDRTHLS_TURB_OUT   , PDRTHLS_TURB_OUT_B )
+CALL NPROMIZE (NPROMA, PDRRTS_TURB_OUT    , PDRRTS_TURB_OUT_B  )
+CALL NPROMIZE (NPROMA, ZDRSVS_TURB_OUT    , ZDRSVS_TURB_OUT_B  )
+
+END SUBROUTINE 
+
+END  MODULE
diff --git a/src/testprogs/turb_mnh/main_turb.F90 b/src/testprogs/turb_mnh/main_turb.F90
new file mode 100644
index 0000000000000000000000000000000000000000..a080971f80b7229b7855dca8c4e3c9629394f7b0
--- /dev/null
+++ b/src/testprogs/turb_mnh/main_turb.F90
@@ -0,0 +1,498 @@
+PROGRAM MAIN_TURB
+
+USE XRD_GETOPTIONS
+USE GETDATA_TURB_MOD
+USE COMPUTE_DIFF
+USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
+USE MODD_CST,        ONLY: CST
+USE MODD_CTURB
+USE MODD_TURB_n,     ONLY: TURBN
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODI_TURB
+USE MODI_INI_CST
+USE MODD_BUDGET!, ONLY: TBUCONF_ASSOCIATE, TBUDGETDATA, NBUDGET_RH, TBUCONF
+USE STACK_MOD
+USE OMP_LIB
+USE YOMHOOK, ONLY : LHOOK, DR_HOOK
+USE PARKIND1, ONLY : JPRB, JPIM
+
+
+IMPLICIT NONE
+
+INTEGER      :: KLON 
+INTEGER      :: KLEV
+INTEGER      :: KRR, KRRL, KRRI
+INTEGER      :: KSV
+
+!Inputs
+REAL, ALLOCATABLE   :: ZDXX               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDYY               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDZZ               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDZX               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDZY               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZZZ                (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDIRCOSXW          (:,:,:)
+REAL, ALLOCATABLE   :: ZDIRCOSYW          (:,:,:)
+REAL, ALLOCATABLE   :: ZDIRCOSZW          (:,:,:)
+REAL, ALLOCATABLE   :: ZCOSSLOPE          (:,:,:)
+REAL, ALLOCATABLE   :: ZSINSLOPE          (:,:,:)
+REAL, ALLOCATABLE   :: PRHODJ             (:,:,:,:)
+REAL, ALLOCATABLE   :: PTHVREF            (:,:,:,:)
+REAL, ALLOCATABLE   :: PSFTH              (:,:,:)
+REAL, ALLOCATABLE   :: PSFRV              (:,:,:)
+REAL, ALLOCATABLE   :: PSFU               (:,:,:)
+REAL, ALLOCATABLE   :: PSFV               (:,:,:)
+REAL, ALLOCATABLE   :: PSFSV              (:,:,:,:) !(KLON, 1, KSV)
+REAL, ALLOCATABLE   :: PPABSM             (:,:,:,:)
+REAL, ALLOCATABLE   :: PUM                (:,:,:,:)
+REAL, ALLOCATABLE   :: PVM                (:,:,:,:)
+REAL, ALLOCATABLE   :: PWM                (:,:,:,:)
+REAL, ALLOCATABLE   :: PTKEM              (:,:,:,:)
+REAL, ALLOCATABLE   :: ZSVM               (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PSRCM              (:,:,:,:)
+REAL, ALLOCATABLE   :: PTHM               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZRM                (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: PRUS               (:,:,:,:)
+REAL, ALLOCATABLE   :: PRVS               (:,:,:,:)
+REAL, ALLOCATABLE   :: PRWS               (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTHS              (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTKES             (:,:,:,:)
+REAL, ALLOCATABLE   :: PRRS               (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: PRSVS              (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PSIGS              (:,:,:,:)
+REAL, ALLOCATABLE   :: PFLXZTHVMF         (:,:,:,:)
+REAL, ALLOCATABLE   :: PLENGTHM           (:,:,:,:)
+REAL, ALLOCATABLE   :: PLENGTHH           (:,:,:,:)
+REAL, ALLOCATABLE   :: MFMOIST            (:,:,:,:)
+REAL, ALLOCATABLE   :: ZBL_DEPTH          (:,:,:)
+REAL, ALLOCATABLE   :: ZSBL_DEPTH         (:,:,:)
+REAL, ALLOCATABLE   :: ZCEI               (:,:,:,:)
+!Outputs
+REAL, ALLOCATABLE   :: PTHM_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: ZRM_OUT            (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: PRUS_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: PRVS_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: PRWS_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTHS_OUT          (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTKES_OUT         (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTKES_OUT_OUT     (:,:,:,:)
+REAL, ALLOCATABLE   :: ZRRS               (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: ZRRS_OUT           (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: ZRSVS              (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: ZRSVS_OUT          (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PSIGS_OUT          (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWTH               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWTH_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWRC               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWRC_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWSV               (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: ZWSV_OUT           (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PDP                (:,:,:,:)
+REAL, ALLOCATABLE   :: PDP_OUT            (:,:,:,:)
+REAL, ALLOCATABLE   :: PTP                (:,:,:,:)
+REAL, ALLOCATABLE   :: PTP_OUT            (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDIFF             (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDIFF_OUT         (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDISS             (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDISS_OUT         (:,:,:,:)
+REAL, ALLOCATABLE   :: PEDR               (:,:,:,:)
+REAL, ALLOCATABLE   :: PEDR_OUT           (:,:,:,:)
+REAL, ALLOCATABLE   :: PTPMF              (:,:,:,:)
+REAL, ALLOCATABLE   :: PTPMF_OUT          (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRUS_TURB         (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRUS_TURB_OUT     (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRVS_TURB         (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRVS_TURB_OUT     (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRTHLS_TURB       (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRTHLS_TURB_OUT   (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRRTS_TURB        (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRRTS_TURB_OUT    (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDRSVS_TURB        (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: ZDRSVS_TURB_OUT    (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+
+INTEGER :: NPROMA, NGPBLKS, NFLEVG
+INTEGER :: IBL, JLON, JLEV
+
+TYPE(DIMPHYEX_t)         :: D, D0
+INTEGER                  :: IMI, ISPLIT, KSV_LGBEG, KSV_LGEND
+CHARACTER(LEN=4),DIMENSION(2)  :: HLBCX, HLBCY
+CHARACTER(LEN=6)   ::  HPROGRAM
+LOGICAL            :: O2D, ONOMIXLG, OFLAT, LLES_CALL, OCOUPLES, OBLOWSNOW, OCOMPUTE_SRC, OOCEAN, ODEEPOC
+TYPE(TFILEDATA)    :: ZTFILE
+REAL :: ZCEI_MAX, ZCEI_MIN, ZCOEF_AMPL_SAT
+CHARACTER (LEN=4)   :: CMICRO  
+REAL                :: PTSTEP 
+TYPE(TBUDGETDATA), DIMENSION(NBUDGET_RH) :: YLBUDGET
+LOGICAL                  :: LLCHECK
+LOGICAL                  :: LLCHECKDIFF
+LOGICAL                  :: LLDIFF
+INTEGER                  :: IBLOCK1, IBLOCK2
+INTEGER                  :: ISTSZ, JBLK1, JBLK2
+INTEGER                  :: NTID, ITID
+INTEGER                  :: JRR
+
+
+REAL, ALLOCATABLE :: PSTACK(:,:)
+TYPE (STACK) :: YLSTACK
+
+REAL(KIND=8) :: TS,TE
+REAL(KIND=8) :: TSC, TEC, TSD, TED, ZTC, ZTD 
+INTEGER :: ITIME, NTIME
+INTEGER :: IRANK, ISIZE
+LOGICAL :: LLVERBOSE, LLSTAT, LLBIND
+REAL (KIND=JPRB) :: ZHOOK_HANDLE
+CHARACTER(LEN=32) :: CLTEXT
+
+CALL INITOPTIONS ()
+NGPBLKS = 150
+CALL GETOPTION ("--blocks", NGPBLKS)
+NPROMA = 32
+CALL GETOPTION ("--nproma", NPROMA)
+NFLEVG = -1
+CALL GETOPTION ("--nflevg", NFLEVG)
+CALL GETOPTION ("--check",  LLCHECK)
+CALL GETOPTION ("--checkdiff",  LLCHECKDIFF)
+IBLOCK1 = 1
+CALL GETOPTION ("--check-block-1", IBLOCK1)
+IBLOCK2 = NGPBLKS
+CALL GETOPTION ("--check-block-2", IBLOCK2)
+CALL GETOPTION ("--stat", LLSTAT)
+NTIME = 1
+CALL GETOPTION ("--times", NTIME)
+CALL GETOPTION ("--verbose", LLVERBOSE)
+CALL GETOPTION ("--bind", LLBIND)
+CALL CHECKOPTIONS ()
+
+LLDIFF = .FALSE.
+
+IRANK = 0
+ISIZE = 1
+IF (LLBIND) THEN
+  CALL LINUX_BIND      (IRANK, ISIZE)
+  CALL LINUX_BIND_DUMP (IRANK, ISIZE)
+ENDIF
+
+CALL GETDATA_TURB (NPROMA, NGPBLKS, NFLEVG, &
+                  !Inputs
+                  &ZDXX, ZDYY, ZDZZ, ZDZX, ZDZY, ZZZ, ZDIRCOSXW, ZDIRCOSYW, ZDIRCOSZW, &
+                  &ZCOSSLOPE, ZSINSLOPE, PRHODJ, &
+                  &PTHVREF, PSFTH, PSFRV, PSFU, PSFV, PSFSV, PPABSM, PUM, &
+                  &PVM, PWM, PTKEM, ZSVM, PSRCM, PTHM, ZRM, PRUS, &
+                  &PRVS, PRWS, PRTHS, PRTKES, PRRS, PRSVS, PSIGS, PFLXZTHVMF, &
+                  &PLENGTHM, PLENGTHH, MFMOIST, ZBL_DEPTH, ZSBL_DEPTH, ZCEI, &
+                  !Outputs
+                  &PTHM_OUT, ZRM_OUT, PRUS_OUT, PRVS_OUT, PRWS_OUT, PRTHS_OUT, PRTKES_OUT, PRTKES_OUT_OUT, &
+                  &ZRRS, ZRRS_OUT, ZRSVS, ZRSVS_OUT, PSIGS_OUT, ZWTH, ZWTH_OUT, ZWRC, ZWRC_OUT, &
+                  &ZWSV, ZWSV_OUT, PDP, PDP_OUT, PTP, PTP_OUT, &
+                  &PTDIFF, PTDIFF_OUT, PTDISS, PTDISS_OUT, PEDR, PEDR_OUT, PTPMF, PTPMF_OUT, &
+                  &PDRUS_TURB, PDRUS_TURB_OUT, PDRVS_TURB, PDRVS_TURB_OUT, &
+                  &PDRTHLS_TURB, PDRTHLS_TURB_OUT, PDRRTS_TURB, PDRRTS_TURB_OUT, ZDRSVS_TURB, ZDRSVS_TURB_OUT)
+
+KLEV = SIZE (PRRS, 3)
+KRR  = SIZE (PRRS, 4)
+KRRL = 2
+KRRI = 3
+KSV  = SIZE (PRSVS, 4)
+
+IF (LLVERBOSE) PRINT *, " KLEV = ", KLEV, " KRR = ", KRR
+
+PRINT *, " NPROMA = ", NPROMA, " KLEV = ", KLEV, " NGPBLKS = ", NGPBLKS
+
+IMI = 1
+HLBCX(:)='CYCL'
+HLBCY(:)='CYCL'
+ISPLIT = 1
+KSV_LGBEG = 0
+KSV_LGEND = 0
+HPROGRAM='AROME '
+O2D=.FALSE.
+ONOMIXLG=.FALSE.
+OFLAT=.FALSE.
+LLES_CALL=.FALSE.
+OCOUPLES=.FALSE.
+OBLOWSNOW=.FALSE.
+OCOMPUTE_SRC=SIZE(PSIGS, 3)/=0
+OOCEAN=.FALSE.
+ODEEPOC=.FALSE.
+CMICRO='ICE3'
+ZTFILE%LOPENED=.FALSE.
+ZCEI_MAX=1.0
+ZCEI_MIN=0.0
+ZCOEF_AMPL_SAT=0.0
+!
+PTSTEP = 25.0000000000000
+CALL INIT_PHYEX ()
+
+DO JRR=1, NBUDGET_RH
+  YLBUDGET(JRR)%NBUDGET=JRR
+ENDDO
+
+D0%NIT  = NPROMA
+D0%NIB  = 1
+D0%NIE  = NPROMA
+D0%NJT  = 1
+D0%NJB  = 1
+D0%NJE  = 1
+D0%NIJT = D0%NIT * D0%NJT
+D0%NIJB = 1
+D0%NIJE = NPROMA
+D0%NKL  = -1
+D0%NKT  = KLEV
+D0%NKA  = KLEV
+D0%NKU  = 1
+D0%NKB  = KLEV-1
+D0%NKE  = 2
+D0%NKTB = 2
+D0%NKTE = KLEV-1
+D0%NIBC = 1
+D0%NJBC = 1
+D0%NIEC = D%NIE
+D0%NJEC = D%NJT
+
+ISTSZ = NPROMA * 20 * KLEV
+ALLOCATE (PSTACK (ISTSZ, NGPBLKS))
+
+TS = OMP_GET_WTIME ()
+
+ZTD = 0.
+ZTC = 0.
+
+IF (LHOOK) CALL DR_HOOK ('MAIN',0,ZHOOK_HANDLE)
+
+DO ITIME = 1, NTIME
+
+  TSD = OMP_GET_WTIME ()
+
+!!!              !directives pas a jour !$acc data &
+!!!              !directives pas a jour !$acc      & copyin  (D0, CST, ICEP, NEB, KRR, HFRAC_ICE, HCONDENS, HLAMBDA3, HBUNAME, OSUBG_COND, OSIGMAS, OCND2, HSUBG_MF_PDF, PTSTEP, LMFCONV, &
+!!!              !directives pas a jour !$acc      &          ZSIGQSAT, PRHODJ, PEXNREF, PRHODREF, PSIGS, PMFCONV, PPABSM, ZZZ, PCF_MF, PRC_MF, PRI_MF, ZRS, ZICE_CLD_WGT) &
+!!!              !directives pas a jour !$acc      & copy    (PRS, PTHS), &
+!!!              !directives pas a jour !$acc      & copyout (PSRCS, PCLDFR, PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF) &
+!!!              !directives pas a jour !$acc      & create  (PSTACK) 
+
+  TSC = OMP_GET_WTIME ()
+
+#ifdef USE_OPENMP
+!$OMP PARALLEL PRIVATE (D, ITID, JBLK1, JBLK2)
+#endif
+
+#ifdef _OPENACC
+JBLK1 = 1 
+JBLK2 = NGPBLKS
+#endif
+
+#ifdef USE_OPENMP
+NTID = OMP_GET_MAX_THREADS ()
+ITID = OMP_GET_THREAD_NUM ()
+JBLK1 = 1 +  (NGPBLKS * (ITID+0)) / NTID
+JBLK2 =      (NGPBLKS * (ITID+1)) / NTID
+
+
+!PRINT *, ITID, JBLK1, JBLK2
+
+#endif
+
+!$acc parallel loop gang vector private (YLSTACK, IBL, JLON, D) collapse (2)
+
+  DO IBL = JBLK1, JBLK2
+
+
+#ifdef _OPENACC
+  DO JLON = 1, NPROMA
+    D = D0
+    D%NIB = JLON
+    D%NIE = JLON
+    D%NIJB = JLON
+    D%NIJE = JLON
+#endif
+
+#ifdef USE_OPENMP
+    D = D0
+#endif
+
+#ifdef USE_STACK
+    YLSTACK%L = LOC (PSTACK (1, IBL))
+    YLSTACK%U = YLSTACK%L + ISTSZ * KIND (PSTACK)
+#else
+    YLSTACK%L = 0
+    YLSTACK%U = 0
+#endif
+
+CALL TURB (CST,CSTURB,TBUCONF,TURBN, D,&
+   & IMI, KRR, KRRL, KRRI, HLBCX, HLBCY,&
+   & ISPLIT,IMI, KSV, KSV_LGBEG, KSV_LGEND, &
+   & HPROGRAM, O2D, ONOMIXLG, OFLAT, LLES_CALL,OCOUPLES,OBLOWSNOW,& 
+   & OCOMPUTE_SRC, 1.0, &
+   & OOCEAN,ODEEPOC, .FALSE.,   &
+   & 'NONE',CMICRO,           &
+   & 2*PTSTEP,ZTFILE,                                      &
+   & ZDXX,ZDYY,ZDZZ,ZDZX,ZDZY,ZZZ,          &
+   & ZDIRCOSXW,ZDIRCOSYW,ZDIRCOSZW,ZCOSSLOPE,ZSINSLOPE,    &
+   & PRHODJ,PTHVREF,                              &
+   & PSFTH,PSFRV,PSFSV,PSFU,PSFV,                          &
+   & PPABSM,PUM,PVM,PWM,PTKEM,ZSVM,PSRCM,                  &
+   & PLENGTHM,PLENGTHH,MFMOIST,                            &
+   & ZBL_DEPTH,ZSBL_DEPTH,                                 &
+   & ZCEI,ZCEI_MIN,ZCEI_MAX,ZCOEF_AMPL_SAT,    &
+   & PTHM,ZRM, &
+   & PRUS,PRVS,PRWS,PRTHS,ZRRS,ZRSVS,PRTKES_OUT,         &
+   & PSIGS,                                         &
+   & PFLXZTHVMF,ZWTH,ZWRC,ZWSV,PDP,PTP,PTDIFF,PTDISS,&
+   & YLBUDGET, KBUDGETS=SIZE(YLBUDGET),PEDR=PEDR,PTPMF=PTPMF,&
+   & PDRUS_TURB=PDRUS_TURB,PDRVS_TURB=PDRVS_TURB,          &
+   & PDRTHLS_TURB=PDRTHLS_TURB,PDRRTS_TURB=PDRRTS_TURB,PDRSVS_TURB=ZDRSVS_TURB)
+
+#ifdef _OPENACC
+    ENDDO
+#endif
+
+  ENDDO
+
+#ifdef USE_OPENMP
+!$OMP END PARALLEL
+#endif
+
+!$acc end parallel loop
+
+  TEC = OMP_GET_WTIME ()
+
+!$acc end data
+
+  TED = OMP_GET_WTIME ()
+
+  ZTC = ZTC + (TEC - TSC)
+  ZTD = ZTD + (TED - TSD)
+
+ENDDO
+
+IF (LHOOK) CALL DR_HOOK ('MAIN',1,ZHOOK_HANDLE)
+
+TE = OMP_GET_WTIME()
+
+WRITE (*,'(A,F8.2,A)') 'elapsed time : ',TE-TS,' s'
+WRITE (*,'(A,F8.4,A)') '          i.e. ',1000.*(TE-TS)/(NPROMA*NGPBLKS)/NTIME,' ms/gp'
+
+PRINT *, " ZTD = ", ZTD, ZTD / REAL (NPROMA*NGPBLKS*NTIME)
+PRINT *, " ZTC = ", ZTC, ZTC / REAL (NPROMA*NGPBLKS*NTIME)
+
+IF (LLCHECK .OR. LLSTAT .OR. LLCHECKDIFF) THEN
+  DO IBL = IBLOCK1, IBLOCK2
+    PRINT *, " IBL = ", IBL
+    DO JRR=1, KRR
+      WRITE (CLTEXT, '("ZRM JRR=",I3.3)') JRR
+      CALL DIFF3 (CLTEXT,      ZRM_OUT       (:,:,:,JRR,IBL), ZRM      (:,:,:,JRR,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+      WRITE (CLTEXT, '("ZRRS JRR=",I3.3)') JRR
+      CALL DIFF3 (CLTEXT,      ZRRS_OUT       (:,:,:,JRR,IBL), ZRRS      (:,:,:,JRR,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    ENDDO
+    CALL DIFF3 ("PTHM        ", PTHM_OUT         (:,:,:,IBL), PTHM        (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PRUS        ", PRUS_OUT         (:,:,:,IBL), PRUS        (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PRVS        ", PRVS_OUT         (:,:,:,IBL), PRVS        (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PRWS        ", PRWS_OUT         (:,:,:,IBL), PRWS        (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PRTHS       ", PRTHS_OUT        (:,:,:,IBL), PRTHS       (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PRTKES_OUT  ", PRTKES_OUT_OUT   (:,:,:,IBL), PRTKES_OUT  (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PSIGS       ", PSIGS_OUT        (:,:,:,IBL), PSIGS       (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("ZWTH        ", ZWTH_OUT         (:,:,:,IBL), ZWTH        (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("ZWRC        ", ZWRC_OUT         (:,:,:,IBL), ZWRC        (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PDP         ", PDP_OUT          (:,:,:,IBL), PDP         (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PTP         ", PTP_OUT          (:,:,:,IBL), PTP         (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PTDIFF      ", PTDIFF_OUT       (:,:,:,IBL), PTDIFF      (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PTDISS      ", PTDISS_OUT       (:,:,:,IBL), PTDISS      (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PEDR        ", PEDR_OUT         (:,:,:,IBL), PEDR        (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PTPMF       ", PTPMF_OUT        (:,:,:,IBL), PTPMF       (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PDRUS_TURB  ", PDRUS_TURB_OUT   (:,:,:,IBL), PDRUS_TURB  (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PDRVS_TURB  ", PDRVS_TURB_OUT   (:,:,:,IBL), PDRVS_TURB  (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PDRTHLS_TURB", PDRTHLS_TURB_OUT (:,:,:,IBL), PDRTHLS_TURB(:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF3 ("PDRRTS_TURB ", PDRRTS_TURB_OUT  (:,:,:,IBL), PDRRTS_TURB (:,:,:,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+  ENDDO
+ENDIF
+
+IF (LLCHECKDIFF) THEN
+  IF (LLDIFF) THEN
+    PRINT*, "THERE ARE DIFF SOMEWHERE"
+  ELSE
+    PRINT*, "THERE IS NO DIFF AT ALL"
+  ENDIF
+ENDIF
+
+STOP
+
+CONTAINS
+
+SUBROUTINE INIT_PHYEX()
+USE MODD_TURB_N, ONLY: TURB_GOTO_MODEL
+IMPLICIT NONE
+!
+CALL INI_CST
+CALL TURB_GOTO_MODEL(1,1)
+CALL CTURB_ASSOCIATE()
+CALL TBUCONF_ASSOCIATE
+LBU_ENABLE=.FALSE.                                                                                                       
+LBUDGET_U=.FALSE.
+LBUDGET_V=.FALSE.
+LBUDGET_W=.FALSE.
+LBUDGET_TH=.FALSE.
+LBUDGET_TKE=.FALSE.
+LBUDGET_RV=.FALSE.
+LBUDGET_RC=.FALSE.
+LBUDGET_RR=.FALSE.
+LBUDGET_RI=.FALSE.
+LBUDGET_RS=.FALSE.
+LBUDGET_RG=.FALSE.
+LBUDGET_RH=.FALSE.
+LBUDGET_SV=.FALSE.
+
+TURBN%LHARAT=.FALSE.
+TURBN%CTURBDIM = '1DIM'
+TURBN%XIMPL=1.
+TURBN%CTURBLEN='BL89'
+TURBN%LSTATNW=.FALSE.
+TURBN%LTURB_DIAG=.FALSE.
+TURBN%LTURB_FLX=.FALSE.
+TURBN%LHGRAD=.FALSE.
+TURBN%LSUBG_COND=.TRUE.
+TURBN%LRMC01=.FALSE.
+TURBN%CTOM='NONE'
+
+XCED  = 0.85
+XCEP  = 2.11 
+XA0   = 0.6
+XA2   = 1.
+XA3   = 0.
+XCTD  = 1.2
+IF (TURBN%LSTATNW) THEN
+    XCTP  = 4.0
+  ELSE
+    XCTP  = 4.65
+ENDIF
+XA5   = 1./3.
+XCET  = 0.40
+XALPSBL = 4.63
+XRM17 = 0.5  ! Rodier et al 2017
+XCMFS= 2./3./XCEP*(1.-XA0)   !Constant for the momentum flux due to shear (RS)
+XCSHF= 2./3./XCTP            !Constant for the sensible heat flux(RS)
+XCHF= XCSHF                  !Constant for the humidity flux(RS)
+XCTV= 2./3./XCTP/XCTD        !Constant for the temperature variance(RS)
+XCHV=  XCTV                  !Constant for the humidity variance(RS)
+XCHT1= XCTV/2.      !Constants for the temperature-humidity correlation(RS)
+XCHT2= XCTV/2.
+XCPR1= XCTV         !Constants for the turbulent Prandtl and Schmidt numbers
+XCPR2= XCHT1
+XCPR3= XCPR2        ! used only for the Schmidt number for scalar variables
+XCPR4= XCPR2
+XCPR5= XCPR2
+XTKEMIN=1.E-6
+!XLINI=10.   ! BL mixing length
+XLINI=0.1   ! BL mixing length
+XLINF=1.E-10! to prevent division by zero
+XPHI_LIM = 3.
+XCDP  =  1.46
+XCDD  =  1.83
+XCDT  =  0.42
+XSBL_O_BL     = 0.05 ! SBL height / BL height ratio
+XFTOP_O_FSURF = 0.05 ! Fraction of surface (heat or momentum) flux used to define top of BL
+
+!
+END SUBROUTINE INIT_PHYEX
+
+END PROGRAM
+
diff --git a/tools/check_commit_testprogs.sh b/tools/check_commit_testprogs.sh
index b94833cfb75968a38659d811c58ce48f62333a79..cd70f6b4d73bd0ee1afa52c50a656e4383c16de1 100755
--- a/tools/check_commit_testprogs.sh
+++ b/tools/check_commit_testprogs.sh
@@ -12,7 +12,7 @@ set -e
 #ref is commit 855b8f8 for ice_adjust, rain_ice, turb and shallow_mf
 
 specialName="ref"
-availTests="ice_adjust,rain_ice"
+availTests="ice_adjust,rain_ice,turb"
 defaultTest='ALL'
 separator='_' #- seprator must be in sync with prep_code.sh separator
 
@@ -182,7 +182,7 @@ if [ $compilation -eq 1 ]; then
   else
     expand_options=""
   fi
-  subs="$subs -s turb -s micro -s aux -s ice_adjust -s rain_ice -s support"
+  subs="$subs -s turb -s turb_mnh -s micro -s aux -s ice_adjust -s rain_ice -s support"
   prep_code=$PHYEXTOOLSDIR/prep_code.sh
 
   if [ "$fromdir" == '' ]; then