From 29984e99588db82819f56faa6db27ae6fb5a2b35 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Riette?= <sebastien.riette@meteo.fr>
Date: Mon, 28 Nov 2022 09:25:20 +0100
Subject: [PATCH] S. Riette 28 nov 2022: bugfix for turb testprogs

This version of the turb testprogs need the data generated by commit afa3b585a3081a3dd064f46d3f7c30412ca6e09f
---
 build/with_fcm/arch/arch-gnu.fcm              |   2 +-
 src/common/turb/mode_turb_ver_thermo_flux.F90 |   2 +
 .../ice_adjust/getdata_ice_adjust_mod.F90     |   9 +-
 .../rain_ice/getdata_rain_ice_mod.F90         |  11 +-
 src/testprogs/support/arrays_manip.F90        |  11 +-
 src/testprogs/turb_mnh/getdata_turb_mod.F90   | 349 ++++++++++--------
 src/testprogs/turb_mnh/main_turb.F90          | 154 ++++----
 7 files changed, 301 insertions(+), 237 deletions(-)

diff --git a/build/with_fcm/arch/arch-gnu.fcm b/build/with_fcm/arch/arch-gnu.fcm
index 1b16787f6..b97a5ea34 100644
--- a/build/with_fcm/arch/arch-gnu.fcm
+++ b/build/with_fcm/arch/arch-gnu.fcm
@@ -3,7 +3,7 @@ $FCOMPILER     =     gfortran
 $BASE_FFLAGS   =     -c -fPIC -fdefault-real-8 -fdefault-double-8 -ffree-line-length-none -fopenmp -fconvert=swap -fallow-argument-mismatch
 $PROD_FFLAGS   =     -O3
 $DEV_FFLAGS    =     -O1
-$DEBUG_FFLAGS  =     -fbounds-check
+$DEBUG_FFLAGS  =     -O0 -g -fbounds-check -finit-real=snan -ffpe-trap=invalid,zero,overflow
 $CCOMPILER     =     gcc
 $BASE_CFLAGS   =     -c -fPIC -fopenmp
 $PROD_CFLAGS   =     -O3
diff --git a/src/common/turb/mode_turb_ver_thermo_flux.F90 b/src/common/turb/mode_turb_ver_thermo_flux.F90
index cb84c52a5..47063ca84 100644
--- a/src/common/turb/mode_turb_ver_thermo_flux.F90
+++ b/src/common/turb/mode_turb_ver_thermo_flux.F90
@@ -688,6 +688,7 @@ ELSE
   !$mnh_expand_array(JIJ=IIJB:IIJE)
   PWTH(IIJB:IIJE,D%NKA)=0.5*(ZFLXZ(IIJB:IIJE,D%NKA)+ZFLXZ(IIJB:IIJE,D%NKA+D%NKL))
   PWTH(IIJB:IIJE,IKE)=PWTH(IIJB:IIJE,IKE-D%NKL)
+  PWTH(IIJB:IIJE,D%NKU)=0.
   !$mnh_end_expand_array(JIJ=IIJB:IIJE)
 END IF
 !
@@ -1075,6 +1076,7 @@ IF (KRR /= 0) THEN
     !$mnh_expand_array(JIJ=IIJB:IIJE)
     PWRC(IIJB:IIJE,D%NKA)=0.5*(ZFLXZ(IIJB:IIJE,D%NKA)+ZFLXZ(IIJB:IIJE,D%NKA+D%NKL))
     PWRC(IIJB:IIJE,IKE)=PWRC(IIJB:IIJE,IKE-D%NKL)
+    PWRC(IIJB:IIJE,D%NKU)=0.
     !$mnh_end_expand_array(JIJ=IIJB:IIJE)    
   ENDIF
   !
diff --git a/src/testprogs/ice_adjust/getdata_ice_adjust_mod.F90 b/src/testprogs/ice_adjust/getdata_ice_adjust_mod.F90
index 1372fcd92..644f9211c 100644
--- a/src/testprogs/ice_adjust/getdata_ice_adjust_mod.F90
+++ b/src/testprogs/ice_adjust/getdata_ice_adjust_mod.F90
@@ -1,7 +1,7 @@
 MODULE GETDATA_ICE_ADJUST_MOD
 
 USE OMP_LIB
-USE ARRAYS_MANIP, ONLY: SETUP, XNAN, REPLICATE, NPROMIZE, INTERPOLATE, SET
+USE ARRAYS_MANIP, ONLY: SETUP, REPLICATE, NPROMIZE, INTERPOLATE, SET
 
 CONTAINS
 
@@ -167,13 +167,6 @@ CALL SET (PHLI_HCF_OUT_B)
 
 ZSIGQSAT_B     = 2.0000000000000000E-002
 ZICE_CLD_WGT_B = 1.5
-PSRCS_B        = XNAN
-PCLDFR_B       = XNAN
-PHLI_HCF_B     = XNAN
-PHLI_HRI_B     = XNAN
-PHLC_HCF_B     = XNAN
-PHLC_HRC_B     = XNAN
-
 
 IOFF = 0
 IBL = 0
diff --git a/src/testprogs/rain_ice/getdata_rain_ice_mod.F90 b/src/testprogs/rain_ice/getdata_rain_ice_mod.F90
index 8940901fd..9d3751853 100644
--- a/src/testprogs/rain_ice/getdata_rain_ice_mod.F90
+++ b/src/testprogs/rain_ice/getdata_rain_ice_mod.F90
@@ -1,6 +1,6 @@
 MODULE GETDATA_RAIN_ICE_MOD
 
-USE ARRAYS_MANIP, ONLY: SETUP, XNAN, REPLICATE, NPROMIZE, INTERPOLATE, SET
+USE ARRAYS_MANIP, ONLY: SETUP, REPLICATE, NPROMIZE, INTERPOLATE, SET
 
 CONTAINS
 
@@ -184,15 +184,6 @@ CALL SET (ZINDEP_OUT_B  )
 CALL SET (ZRAINFR_OUT_B )
 CALL SET (PFPR_OUT_B    )
 
-ZINPRC_OUT_B  =     XNAN
-PINPRR_OUT_B  =     XNAN
-PEVAP_OUT_B   =     XNAN
-PINPRS_OUT_B  =     XNAN
-PINPRG_OUT_B  =     XNAN
-ZINDEP_OUT_B  =     XNAN
-ZRAINFR_OUT_B =     XNAN
-PFPR_OUT_B    =     XNAN
-
 IOFF = 0
 IBL = 0
 LLEXIST = .TRUE.
diff --git a/src/testprogs/support/arrays_manip.F90 b/src/testprogs/support/arrays_manip.F90
index 3f659a613..0556f3b55 100644
--- a/src/testprogs/support/arrays_manip.F90
+++ b/src/testprogs/support/arrays_manip.F90
@@ -29,12 +29,13 @@ INTERFACE SET
   MODULE PROCEDURE SET5
 END INTERFACE
 
-REAL, SAVE :: XNAN
+REAL, SAVE :: XINVALID
 
 CONTAINS
 
 SUBROUTINE SETUP()
-XNAN = IEEE_VALUE (1., IEEE_SIGNALING_NAN)
+  !XINVALID = IEEE_VALUE (1., IEEE_SIGNALING_NAN)
+  XINVALID = HUGE(1.)
 END SUBROUTINE SETUP
 
 SUBROUTINE REPLICATE4 (KOFF, P)
@@ -379,7 +380,7 @@ JBLK1 = 1 +  (IGPBLKS * (ITID+0)) / NTID
 JBLK2 =      (IGPBLKS * (ITID+1)) / NTID
 
 DO IBL = JBLK1, JBLK2
-  P (:,:,IBL) = XNAN
+  P (:,:,IBL) = XINVALID
 ENDDO
 
 !$OMP END PARALLEL
@@ -402,7 +403,7 @@ JBLK1 = 1 +  (IGPBLKS * (ITID+0)) / NTID
 JBLK2 =      (IGPBLKS * (ITID+1)) / NTID
 
 DO IBL = JBLK1, JBLK2
-  P (:,:,:,IBL) = XNAN
+  P (:,:,:,IBL) = XINVALID
 ENDDO
 
 !$OMP END PARALLEL
@@ -425,7 +426,7 @@ JBLK1 = 1 +  (IGPBLKS * (ITID+0)) / NTID
 JBLK2 =      (IGPBLKS * (ITID+1)) / NTID
 
 DO IBL = JBLK1, JBLK2
-  P (:,:,:,:,IBL) = XNAN
+  P (:,:,:,:,IBL) = XINVALID
 ENDDO
 
 !$OMP END PARALLEL
diff --git a/src/testprogs/turb_mnh/getdata_turb_mod.F90 b/src/testprogs/turb_mnh/getdata_turb_mod.F90
index c30126cdc..ecdc7fb25 100644
--- a/src/testprogs/turb_mnh/getdata_turb_mod.F90
+++ b/src/testprogs/turb_mnh/getdata_turb_mod.F90
@@ -1,25 +1,37 @@
 MODULE GETDATA_TURB_MOD
 
-USE ARRAYS_MANIP, ONLY: SETUP, XNAN, REPLICATE, NPROMIZE, INTERPOLATE, SET
+USE ARRAYS_MANIP, ONLY: SETUP, 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)
-
+SUBROUTINE GETDATA_TURB (NPROMA, NGPBLKS, NFLEVG, KRR, KRRL, KRRI, KSV, KLEV, &
+                        !IN and INOUT (allocation and reading)
+                        &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, &
+                        &PLENGTHM_B, PLENGTHH_B, MFMOIST_B, &
+                        &ZBL_DEPTH_B, ZSBL_DEPTH_B, &
+                        &ZCEI_B, &
+                        &PTHM_B, ZRM_B, &
+                        &PRUS_B, PRVS_B, PRWS_B, PRTHS_B, ZRRS_B, ZRSVS_B, PRTKES_OUT_B, &
+                        &PFLXZTHVMF_B, &
+                        !OUT (allocation)
+                        &PSIGS_B, &
+                        &ZWTH_B,ZWRC_B,ZWSV_B,PDP_B,PTP_B,PTDIFF_B,PTDISS_B, &
+                        &PEDR_B,PTPMF_B, &
+                        &PDRUS_TURB_B,PDRVS_TURB_B, &
+                        &PDRTHLS_TURB_B,PDRRTS_TURB_B,ZDRSVS_TURB_B, &
+                        !OUT and INOUT (expected values)
+                        &ZBL_DEPTH_OUT_B, ZSBL_DEPTH_OUT_B, &
+                        &PTHM_OUT_B, ZRM_OUT_B, &
+                        &PRUS_OUT_B, PRVS_OUT_B, PRWS_OUT_B, PRTHS_OUT_B, ZRRS_OUT_B, ZRSVS_OUT_B, PRTKES_OUT_OUT_B, &
+                        &PSIGS_OUT_B, &
+                        &ZWTH_OUT_B, ZWRC_OUT_B, ZWSV_OUT_B, PDP_OUT_B, PTP_OUT_B, PTDIFF_OUT_B, PTDISS_OUT_B, &
+                        &PEDR_OUT_B, PTPMF_OUT_B, &
+                        &PDRUS_TURB_OUT_B, PDRVS_TURB_OUT_B, &
+                        &PDRTHLS_TURB_OUT_B, PDRRTS_TURB_OUT_B, ZDRSVS_TURB_OUT_B)
 
 IMPLICIT NONE
 
@@ -29,13 +41,13 @@ INTEGER      :: KLON
 INTEGER      :: KIDIA  
 INTEGER      :: KFDIA  
 INTEGER      :: KLEV  
-INTEGER      :: KRR
+INTEGER      :: KRR, KRRL, KRRI
 INTEGER      :: KSV
 INTEGER      :: KDUM
 
 LOGICAL :: LDVERBOSE
 
-!Inputs
+!IN and INOUTS
 REAL, ALLOCATABLE   :: ZDXX_B             (:,:,:,:)
 REAL, ALLOCATABLE   :: ZDYY_B             (:,:,:,:)
 REAL, ALLOCATABLE   :: ZDZZ_B             (:,:,:,:)
@@ -61,67 +73,69 @@ 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_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: ZRM_B              (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: PRUS_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: PRVS_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: PRWS_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: PRTHS_B            (:,:,:,:)
+REAL, ALLOCATABLE   :: ZRRS_B             (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: ZRSVS_B            (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PRTKES_OUT_B       (:,:,:,:)
+REAL, ALLOCATABLE   :: PFLXZTHVMF_B       (:,:,:,:)
+
+!OUT
+REAL, ALLOCATABLE   :: PSIGS_B            (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWTH_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWRC_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWSV_B             (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PDP_B              (:,:,:,:)
+REAL, ALLOCATABLE   :: PTP_B              (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDIFF_B           (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDISS_B           (:,:,:,:)
+REAL, ALLOCATABLE   :: PEDR_B             (:,:,:,:)
+REAL, ALLOCATABLE   :: PTPMF_B            (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRUS_TURB_B       (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRVS_TURB_B       (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRTHLS_TURB_B     (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRRTS_TURB_B      (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDRSVS_TURB_B      (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+
+!Expected values
+REAL, ALLOCATABLE   :: ZBL_DEPTH_OUT_B    (:,:,:)
+REAL, ALLOCATABLE   :: ZSBL_DEPTH_OUT_B   (:,:,:)
 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   :: ZRSVS_OUT_B        (:,:,:,:,:) !(KLON,1,KLEV+2,KSV) 
+REAL, ALLOCATABLE   :: PRTKES_OUT_OUT_B   (:,:,:,:)
 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
+!Inputs to read
 REAL, ALLOCATABLE   :: ZDXX               (:,:,:,:)
 REAL, ALLOCATABLE   :: ZDYY               (:,:,:,:)
 REAL, ALLOCATABLE   :: ZDZZ               (:,:,:,:)
@@ -147,27 +161,34 @@ REAL, ALLOCATABLE   :: PWM                (:,:,:,:)
 REAL, ALLOCATABLE   :: PTKEM              (:,:,:,:)
 REAL, ALLOCATABLE   :: ZSVM               (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
 REAL, ALLOCATABLE   :: PSRCM              (:,:,:,:)
+REAL, ALLOCATABLE   :: PLENGTHM           (:,:,:,:)
+REAL, ALLOCATABLE   :: PLENGTHH           (:,:,:,:)
+REAL, ALLOCATABLE   :: MFMOIST            (:,:,:,:)
+REAL, ALLOCATABLE   :: ZBL_DEPTH          (:,:,:)
+REAL, ALLOCATABLE   :: ZSBL_DEPTH         (:,:,:)
+REAL, ALLOCATABLE   :: ZCEI               (:,:,:,:)
 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   :: ZRRS               (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: ZRSVS              (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PRTKES_OUT         (:,:,:,:)
 REAL, ALLOCATABLE   :: PFLXZTHVMF         (:,:,:,:)
-!Outputs
+!Expected values to read
+REAL, ALLOCATABLE   :: ZBL_DEPTH_OUT      (:,:,:)
+REAL, ALLOCATABLE   :: ZSBL_DEPTH_OUT     (:,:,:)
 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   :: PRTKES_OUT_OUT     (:,:,:,:)
 REAL, ALLOCATABLE   :: PSIGS_OUT          (:,:,:,:)
 REAL, ALLOCATABLE   :: ZWTH_OUT           (:,:,:,:)
 REAL, ALLOCATABLE   :: ZWRC_OUT           (:,:,:,:)
@@ -184,7 +205,6 @@ 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
@@ -198,9 +218,8 @@ IBL = 1
 WRITE (CLFILE, '("data/",I8.8,".dat")') IBL
 OPEN (IFILE, FILE=TRIM (CLFILE), FORM='UNFORMATTED') 
 READ (IFILE) KLON, KDUM, KLEV
+READ (IFILE) KRR, KRRL, KRRI, KSV
 CLOSE (IFILE)
-KRR = 6
-KSV = 0
 
 IF (NFLEVG < 0) NFLEVG = KLEV
 
@@ -229,63 +248,64 @@ 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 (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_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 (ZRRS_B             (NPROMA,1,NFLEVG,KRR,NGPBLKS))
+ALLOCATE (ZRSVS_B            (NPROMA,1,NFLEVG,KSV,NGPBLKS))
+ALLOCATE (PRTKES_OUT_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 (PSIGS_B            (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZWTH_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZWRC_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZWSV_B             (NPROMA,1,NFLEVG,KSV,NGPBLKS))
+ALLOCATE (PDP_B              (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTP_B              (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTDIFF_B           (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTDISS_B           (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PEDR_B             (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PTPMF_B            (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRUS_TURB_B       (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRVS_TURB_B       (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRTHLS_TURB_B     (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (PDRRTS_TURB_B      (NPROMA,1,NFLEVG,NGPBLKS))
+ALLOCATE (ZDRSVS_TURB_B      (NPROMA,1,NFLEVG,KSV,NGPBLKS))
+
+ALLOCATE (ZBL_DEPTH_OUT_B    (NPROMA,1,NGPBLKS))
+ALLOCATE (ZSBL_DEPTH_OUT_B   (NPROMA,1,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 (PRTKES_OUT_OUT_B   (NPROMA,1,NFLEVG,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             )
@@ -313,64 +333,64 @@ CALL SET (PWM_B              )
 CALL SET (PTKEM_B            )
 CALL SET (ZSVM_B             )
 CALL SET (PSRCM_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_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 (ZRRS_B             )
+CALL SET (ZRSVS_B            )
+CALL SET (PRTKES_OUT_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 (PSIGS_B            )
+CALL SET (ZWTH_B             )
+CALL SET (ZWRC_B             )
+CALL SET (ZWSV_B             )
+CALL SET (PDP_B              )
+CALL SET (PTP_B              )
+CALL SET (PTDIFF_B           )
+CALL SET (PTDISS_B           )
+CALL SET (PEDR_B             )
+CALL SET (PTPMF_B            )
+CALL SET (PDRUS_TURB_B       )
+CALL SET (PDRVS_TURB_B       )
+CALL SET (PDRTHLS_TURB_B     )
+CALL SET (PDRRTS_TURB_B      )
+CALL SET (ZDRSVS_TURB_B      )
+
+CALL SET (ZBL_DEPTH_OUT_B    )
+CALL SET (ZSBL_DEPTH_OUT_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 (PRTKES_OUT_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
@@ -390,6 +410,7 @@ DO WHILE(LLEXIST)
   OPEN (IFILE, FILE=TRIM (CLFILE), FORM='UNFORMATTED') 
   
   READ (IFILE) KLON, KDUM, KLEV
+  READ (IFILE) KRR, KRRL, KRRI, KSV
 
   IF (IBL == 1) THEN
     ALLOCATE (ZDXX               (NGPTOT,1,KLEV,1))
@@ -417,26 +438,34 @@ DO WHILE(LLEXIST)
     ALLOCATE (PTKEM              (NGPTOT,1,KLEV,1))
     ALLOCATE (ZSVM               (NGPTOT,1,KLEV,KSV,1))
     ALLOCATE (PSRCM              (NGPTOT,1,KLEV,1))
+    ALLOCATE (PLENGTHM           (NGPTOT,1,KLEV,1))
+    ALLOCATE (PLENGTHH           (NGPTOT,1,KLEV,1))
+    ALLOCATE (MFMOIST            (NGPTOT,1,KLEV,1))
+    ALLOCATE (ZBL_DEPTH          (NGPTOT,1,1))
+    ALLOCATE (ZSBL_DEPTH         (NGPTOT,1,1))
+    ALLOCATE (ZCEI               (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 (ZRRS               (NGPTOT,1,KLEV,KRR,1))
+    ALLOCATE (ZRSVS              (NGPTOT,1,KLEV,KSV,1))
+    ALLOCATE (PRTKES_OUT         (NGPTOT,1,KLEV,1))
     ALLOCATE (PFLXZTHVMF         (NGPTOT,1,KLEV,1))
+
+    ALLOCATE (ZBL_DEPTH_OUT      (NGPTOT,1,1))
+    ALLOCATE (ZSBL_DEPTH_OUT     (NGPTOT,1,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 (PRTKES_OUT_OUT     (NGPTOT,1,KLEV,1))
     ALLOCATE (PSIGS_OUT          (NGPTOT,1,KLEV,1))
     ALLOCATE (ZWTH_OUT           (NGPTOT,1,KLEV,1))
     ALLOCATE (ZWRC_OUT           (NGPTOT,1,KLEV,1))
@@ -464,9 +493,9 @@ DO WHILE(LLEXIST)
   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) ZDIRCOSXW          (IOFF+1:IOFF+KLON,:,1)
+  READ(IFILE) ZDIRCOSYW          (IOFF+1:IOFF+KLON,:,1)
+  READ(IFILE) ZDIRCOSZW          (IOFF+1:IOFF+KLON,:,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)
@@ -483,26 +512,34 @@ DO WHILE(LLEXIST)
   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) PLENGTHM           (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) PLENGTHH           (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) MFMOIST            (IOFF+1:IOFF+KLON,:,:,1)
+  READ(IFILE) ZBL_DEPTH          (IOFF+1:IOFF+KLON,:,1)
+  READ(IFILE) ZSBL_DEPTH         (IOFF+1:IOFF+KLON,:,1)
+  READ(IFILE) ZCEI               (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) ZRRS               (IOFF+1:IOFF+KLON,:,:,:,1)
+  READ(IFILE) ZRSVS              (IOFF+1:IOFF+KLON,:,:,:,1)
+  READ(IFILE) PRTKES_OUT         (IOFF+1:IOFF+KLON,:,:,1)
   READ(IFILE) PFLXZTHVMF         (IOFF+1:IOFF+KLON,:,:,1)
+
+  READ(IFILE) ZBL_DEPTH_OUT      (IOFF+1:IOFF+KLON,:,1)
+  READ(IFILE) ZSBL_DEPTH_OUT     (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) PRTKES_OUT_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)
@@ -551,26 +588,34 @@ IF (NFLEVG /= KLEV) THEN
   CALL INTERPOLATE (NFLEVG, IOFF, PTKEM              )
   CALL INTERPOLATE (NFLEVG, IOFF, ZSVM               )
   CALL INTERPOLATE (NFLEVG, IOFF, PSRCM              )
+  CALL INTERPOLATE (NFLEVG, IOFF, PLENGTHM           )
+  CALL INTERPOLATE (NFLEVG, IOFF, PLENGTHH           )
+  CALL INTERPOLATE (NFLEVG, IOFF, MFMOIST            )
+!  CALL INTERPOLATE (NFLEVG, IOFF, ZBL_DEPTH          )
+!  CALL INTERPOLATE (NFLEVG, IOFF, ZSBL_DEPTH         )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZCEI               )
   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, ZRRS               )
+  CALL INTERPOLATE (NFLEVG, IOFF, ZRSVS              )
+  CALL INTERPOLATE (NFLEVG, IOFF, PRTKES_OUT         )
   CALL INTERPOLATE (NFLEVG, IOFF, PFLXZTHVMF         )
+
+!  CALL INTERPOLATE (NFLEVG, IOFF, ZBL_DEPTH_OUT      )
+!  CALL INTERPOLATE (NFLEVG, IOFF, ZSBL_DEPTH_OUT     )
   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, PRTKES_OUT_OUT     )
   CALL INTERPOLATE (NFLEVG, IOFF, PSIGS_OUT          )
   CALL INTERPOLATE (NFLEVG, IOFF, ZWTH_OUT           )
   CALL INTERPOLATE (NFLEVG, IOFF, ZWRC_OUT           )
@@ -614,26 +659,34 @@ CALL REPLICATE (IOFF, PWM                (:,:,:,1))
 CALL REPLICATE (IOFF, PTKEM              (:,:,:,1))
 CALL REPLICATE (IOFF, ZSVM               (:,:,:,:,1))
 CALL REPLICATE (IOFF, PSRCM              (:,:,:,1))
+CALL REPLICATE (IOFF, PLENGTHM           (:,:,:,1))
+CALL REPLICATE (IOFF, PLENGTHH           (:,:,:,1))
+CALL REPLICATE (IOFF, MFMOIST            (:,:,:,1))
+CALL REPLICATE (IOFF, ZBL_DEPTH          (:,:,1))
+CALL REPLICATE (IOFF, ZSBL_DEPTH         (:,:,1))
+CALL REPLICATE (IOFF, ZCEI               (:,:,:,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, ZRRS               (:,:,:,:,1))
+CALL REPLICATE (IOFF, ZRSVS              (:,:,:,:,1))
+CALL REPLICATE (IOFF, PRTKES_OUT         (:,:,:,1))
 CALL REPLICATE (IOFF, PFLXZTHVMF         (:,:,:,1))
+
+CALL REPLICATE (IOFF, ZBL_DEPTH_OUT      (:,:,1))
+CALL REPLICATE (IOFF, ZSBL_DEPTH_OUT     (:,:,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, PRTKES_OUT_OUT     (:,:,:,1))
 CALL REPLICATE (IOFF, PSIGS_OUT          (:,:,:,1))
 CALL REPLICATE (IOFF, ZWTH_OUT           (:,:,:,1))
 CALL REPLICATE (IOFF, ZWRC_OUT           (:,:,:,1))
@@ -675,26 +728,34 @@ 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, PLENGTHM           , PLENGTHM_B         ) 
+CALL NPROMIZE (NPROMA, PLENGTHH           , PLENGTHH_B         ) 
+CALL NPROMIZE (NPROMA, MFMOIST            , MFMOIST_B          ) 
+CALL NPROMIZE (NPROMA, ZBL_DEPTH          , ZBL_DEPTH_B        ) 
+CALL NPROMIZE (NPROMA, ZSBL_DEPTH         , ZSBL_DEPTH_B       ) 
+CALL NPROMIZE (NPROMA, ZCEI               , ZCEI_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, ZRRS               , ZRRS_B             )
+CALL NPROMIZE (NPROMA, ZRSVS              , ZRSVS_B            )
+CALL NPROMIZE (NPROMA, PRTKES_OUT         , PRTKES_OUT_B       )
 CALL NPROMIZE (NPROMA, PFLXZTHVMF         , PFLXZTHVMF_B       )
+
+CALL NPROMIZE (NPROMA, ZBL_DEPTH_OUT      , ZBL_DEPTH_OUT_B    )
+CALL NPROMIZE (NPROMA, ZSBL_DEPTH_OUT     , ZSBL_DEPTH_OUT_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, PRTKES_OUT_OUT     , PRTKES_OUT_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         )
diff --git a/src/testprogs/turb_mnh/main_turb.F90 b/src/testprogs/turb_mnh/main_turb.F90
index a080971f8..acb1b1165 100644
--- a/src/testprogs/turb_mnh/main_turb.F90
+++ b/src/testprogs/turb_mnh/main_turb.F90
@@ -24,7 +24,7 @@ INTEGER      :: KLEV
 INTEGER      :: KRR, KRRL, KRRI
 INTEGER      :: KSV
 
-!Inputs
+!IN and INOUTS
 REAL, ALLOCATABLE   :: ZDXX               (:,:,:,:)
 REAL, ALLOCATABLE   :: ZDYY               (:,:,:,:)
 REAL, ALLOCATABLE   :: ZDZZ               (:,:,:,:)
@@ -50,64 +50,66 @@ REAL, ALLOCATABLE   :: PWM                (:,:,:,:)
 REAL, ALLOCATABLE   :: PTKEM              (:,:,:,:)
 REAL, ALLOCATABLE   :: ZSVM               (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
 REAL, ALLOCATABLE   :: PSRCM              (:,:,:,:)
+REAL, ALLOCATABLE   :: PLENGTHM           (:,:,:,:)
+REAL, ALLOCATABLE   :: PLENGTHH           (:,:,:,:)
+REAL, ALLOCATABLE   :: MFMOIST            (:,:,:,:)
+REAL, ALLOCATABLE   :: ZBL_DEPTH          (:,:,:)
+REAL, ALLOCATABLE   :: ZSBL_DEPTH         (:,:,:)
+REAL, ALLOCATABLE   :: ZCEI               (:,:,:,:)
 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   :: ZRRS               (:,:,:,:,:) !(KLON,1,KLEV+2,KRR)
+REAL, ALLOCATABLE   :: ZRSVS              (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PRTKES_OUT         (:,:,:,:)
 REAL, ALLOCATABLE   :: PFLXZTHVMF         (:,:,:,:)
-REAL, ALLOCATABLE   :: PLENGTHM           (:,:,:,:)
-REAL, ALLOCATABLE   :: PLENGTHH           (:,:,:,:)
-REAL, ALLOCATABLE   :: MFMOIST            (:,:,:,:)
-REAL, ALLOCATABLE   :: ZBL_DEPTH          (:,:,:)
-REAL, ALLOCATABLE   :: ZSBL_DEPTH         (:,:,:)
-REAL, ALLOCATABLE   :: ZCEI               (:,:,:,:)
-!Outputs
+
+!OUT
+REAL, ALLOCATABLE   :: PSIGS              (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWTH               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWRC               (:,:,:,:)
+REAL, ALLOCATABLE   :: ZWSV               (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+REAL, ALLOCATABLE   :: PDP                (:,:,:,:)
+REAL, ALLOCATABLE   :: PTP                (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDIFF             (:,:,:,:)
+REAL, ALLOCATABLE   :: PTDISS             (:,:,:,:)
+REAL, ALLOCATABLE   :: PEDR               (:,:,:,:)
+REAL, ALLOCATABLE   :: PTPMF              (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRUS_TURB         (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRVS_TURB         (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRTHLS_TURB       (:,:,:,:)
+REAL, ALLOCATABLE   :: PDRRTS_TURB        (:,:,:,:)
+REAL, ALLOCATABLE   :: ZDRSVS_TURB        (:,:,:,:,:) !(KLON,1,KLEV+2,KSV)
+
+!Expected values
+REAL, ALLOCATABLE   :: ZBL_DEPTH_OUT      (:,:,:)
+REAL, ALLOCATABLE   :: ZSBL_DEPTH_OUT     (:,:,:)
 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   :: PRTKES_OUT_OUT     (:,:,:,:)
 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
@@ -172,35 +174,42 @@ IF (LLBIND) THEN
   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)
+CALL GETDATA_TURB (NPROMA, NGPBLKS, NFLEVG, KRR, KRRL, KRRI, KSV, KLEV, &
+                  !IN and INOUT (allocation and values are needed for the call)
+                  &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, &
+                  &PLENGTHM, PLENGTHH, MFMOIST, &
+                  &ZBL_DEPTH, ZSBL_DEPTH, &
+                  &ZCEI, &
+                  &PTHM, ZRM, &
+                  &PRUS, PRVS, PRWS, PRTHS, ZRRS, ZRSVS, PRTKES_OUT, &
+                  &PFLXZTHVMF, &
+                  !OUT only (needed to allocate the array to be passed to the subroutine)
+                  &PSIGS, &
+                  &ZWTH,ZWRC,ZWSV,PDP,PTP,PTDIFF,PTDISS, &
+                  &PEDR,PTPMF, &
+                  &PDRUS_TURB,PDRVS_TURB, &
+                  &PDRTHLS_TURB,PDRRTS_TURB,ZDRSVS_TURB, &
+                  !OUT and INOUT (expected values)
+                  &ZBL_DEPTH_OUT, ZSBL_DEPTH_OUT, &
+                  &PTHM_OUT, ZRM_OUT, &
+                  &PRUS_OUT, PRVS_OUT, PRWS_OUT, PRTHS_OUT, ZRRS_OUT, ZRSVS_OUT, PRTKES_OUT_OUT, &
+                  &PSIGS_OUT, &
+                  &ZWTH_OUT, ZWRC_OUT, ZWSV_OUT, PDP_OUT, PTP_OUT, PTDIFF_OUT, PTDISS_OUT, &
+                  &PEDR_OUT, PTPMF_OUT, &
+                  &PDRUS_TURB_OUT, PDRVS_TURB_OUT, &
+                  &PDRTHLS_TURB_OUT, PDRRTS_TURB_OUT, ZDRSVS_TURB_OUT)
 
 IF (LLVERBOSE) PRINT *, " KLEV = ", KLEV, " KRR = ", KRR
 
 PRINT *, " NPROMA = ", NPROMA, " KLEV = ", KLEV, " NGPBLKS = ", NGPBLKS
 
 IMI = 1
-HLBCX(:)='CYCL'
-HLBCY(:)='CYCL'
+HLBCX(:)='CYCLCYCL'
+HLBCY(:)='CYCLCYCL'
 ISPLIT = 1
 KSV_LGBEG = 0
 KSV_LGEND = 0
@@ -221,6 +230,9 @@ ZCEI_MIN=0.0
 ZCOEF_AMPL_SAT=0.0
 !
 PTSTEP = 25.0000000000000
+print*, 'OCOMPUTE_SRC=', OCOMPUTE_SRC
+print*, 'KRR', KRR
+
 CALL INIT_PHYEX ()
 
 DO JRR=1, NBUDGET_RH
@@ -246,8 +258,8 @@ D0%NKTB = 2
 D0%NKTE = KLEV-1
 D0%NIBC = 1
 D0%NJBC = 1
-D0%NIEC = D%NIE
-D0%NJEC = D%NJT
+D0%NIEC = D0%NIE
+D0%NJEC = D0%NJT
 
 ISTSZ = NPROMA * 20 * KLEV
 ALLOCATE (PSTACK (ISTSZ, NGPBLKS))
@@ -304,6 +316,8 @@ JBLK2 =      (NGPBLKS * (ITID+1)) / NTID
     D%NIE = JLON
     D%NIJB = JLON
     D%NIJE = JLON
+    D%NIBC = JLON
+    D%NIEC = JLON
 #endif
 
 #ifdef USE_OPENMP
@@ -326,21 +340,21 @@ CALL TURB (CST,CSTURB,TBUCONF,TURBN, D,&
    & OOCEAN,ODEEPOC, .FALSE.,   &
    & 'NONE',CMICRO,           &
    & 2*PTSTEP,ZTFILE,                                      &
-   & ZDXX,ZDYY,ZDZZ,ZDZX,ZDZY,ZZZ,          &
+   & ZDXX(:,:,:,IBL),ZDYY(:,:,:,IBL),ZDZZ(:,:,:,IBL),ZDZX(:,:,:,IBL),ZDZY(:,:,:,IBL),ZZZ(:,:,:,IBL),          &
    & 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)
+   & PRHODJ(:,:,:,IBL),PTHVREF(:,:,:,IBL),                              &
+   & PSFTH(:,:,IBL),PSFRV(:,:,IBL),PSFSV(:,:,:,IBL),PSFU(:,:,IBL),PSFV(:,:,IBL),                          &
+   & PPABSM(:,:,:,IBL),PUM(:,:,:,IBL),PVM(:,:,:,IBL),PWM(:,:,:,IBL),PTKEM(:,:,:,IBL),ZSVM(:,:,:,:,IBL),PSRCM(:,:,:,IBL),                  &
+   & PLENGTHM(:,:,:,IBL),PLENGTHH(:,:,:,IBL),MFMOIST(:,:,:,IBL),                            &
+   & ZBL_DEPTH(:,:,IBL),ZSBL_DEPTH(:,:,IBL),                                 &
+   & ZCEI(:,:,:,IBL),ZCEI_MIN,ZCEI_MAX,ZCOEF_AMPL_SAT,    &
+   & PTHM(:,:,:,IBL),ZRM(:,:,:,:,IBL), &
+   & PRUS(:,:,:,IBL),PRVS(:,:,:,IBL),PRWS(:,:,:,IBL),PRTHS(:,:,:,IBL),ZRRS(:,:,:,:,IBL),ZRSVS(:,:,:,:,IBL),PRTKES_OUT(:,:,:,IBL),         &
+   & PSIGS(:,:,:,IBL),                                         &
+   & PFLXZTHVMF(:,:,:,IBL),ZWTH(:,:,:,IBL),ZWRC(:,:,:,IBL),ZWSV(:,:,:,:,IBL),PDP(:,:,:,IBL),PTP(:,:,:,IBL),PTDIFF(:,:,:,IBL),PTDISS(:,:,:,IBL),&
+   & YLBUDGET, KBUDGETS=SIZE(YLBUDGET),PEDR=PEDR(:,:,:,IBL),PTPMF=PTPMF(:,:,:,IBL),&
+   & PDRUS_TURB=PDRUS_TURB(:,:,:,IBL),PDRVS_TURB=PDRVS_TURB(:,:,:,IBL),          &
+   & PDRTHLS_TURB=PDRTHLS_TURB(:,:,:,IBL),PDRRTS_TURB=PDRRTS_TURB(:,:,:,IBL),PDRSVS_TURB=ZDRSVS_TURB(:,:,:,:,IBL))
 
 #ifdef _OPENACC
     ENDDO
@@ -384,6 +398,8 @@ IF (LLCHECK .OR. LLSTAT .OR. LLCHECKDIFF) THEN
       WRITE (CLTEXT, '("ZRRS JRR=",I3.3)') JRR
       CALL DIFF3 (CLTEXT,      ZRRS_OUT       (:,:,:,JRR,IBL), ZRRS      (:,:,:,JRR,IBL), LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
     ENDDO
+    CALL DIFF2 ("ZBL_DEPTH   ", ZBL_DEPTH_OUT    (:,:,IBL)  , ZBL_DEPTH   (:,:,IBL)  , LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
+    CALL DIFF2 ("ZSBL_DEPTH  ", ZSBL_DEPTH_OUT   (:,:,IBL)  , ZSBL_DEPTH  (:,:,IBL)  , LLSTAT, LLCHECK, NPROMA, LLCHECKDIFF, LLDIFF)
     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)
-- 
GitLab