diff --git a/src/arome/aux/mode_ll.F90 b/src/arome/aux/mode_ll.F90
index 030d629310c1918c8b3f7779ff880b31324457cc..d3626160c78620753d32020d3f40b40a43bc238c 100644
--- a/src/arome/aux/mode_ll.F90
+++ b/src/arome/aux/mode_ll.F90
@@ -1,6 +1,6 @@
 MODULE MODE_ll
-use mode_argslist_ll
-        
+USE MODE_ARGSLIST_ll    
+USE MODE_TOOLS
 IMPLICIT NONE
 CONTAINS
   SUBROUTINE GET_INDICE_ll(KXOR, KYOR, KXEND, KYEND, KSIZE1, KSIZE2)
@@ -19,4 +19,20 @@ CONTAINS
   TYPE(LIST_ll), POINTER :: TPLIST ! pointer to the list of fields to be updated
   INTEGER                :: KINFO  ! return status
   END SUBROUTINE UPDATE_HALO_ll
+
+LOGICAL FUNCTION LNORTH_ll()
+  LNORTH_ll=.FALSE.
+END FUNCTION LNORTH_ll
+!
+LOGICAL FUNCTION LEAST_ll()
+  LEAST_ll=.FALSE.
+END FUNCTION LEAST_ll
+!
+LOGICAL FUNCTION LWEST_ll()
+  LWEST_ll=.FALSE.
+END FUNCTION LWEST_ll
+!
+LOGICAL FUNCTION LSOUTH_ll()
+  LSOUTH_ll=.FALSE.
+END FUNCTION LSOUTH_ll
 END MODULE MODE_ll
diff --git a/src/arome/gmkpack_ignored_files b/src/arome/gmkpack_ignored_files
index 36cbe52459f70d29bcc03ac0f51a94cfa182b580..958afa751bc4a6c33fbc1e340431dadccb12c60e 100644
--- a/src/arome/gmkpack_ignored_files
+++ b/src/arome/gmkpack_ignored_files
@@ -109,3 +109,10 @@ phyex/turb/turb_ver_thermo_corr.F90
 phyex/turb/turb_ver_dyn_flux.F90
 phyex/turb/turb_ver_sv_flux.F90
 phyex/turb/turb_ver_sv_corr.F90
+phyex/turb/tm06.F90
+phyex/turb/tm06_h.F90
+phyex/turb/tridiag.F90
+phyex/turb/tridiag_wind.F90
+phyex/turb/tridiag_thermo.F90
+phyex/turb/tridiag_tke.F90
+phyex/turb/tridiag_massflux.F90
diff --git a/src/arome/micro/modd_refaro.F90 b/src/arome/micro/modd_refaro.F90
index 5d04ef439413f81cd47282608b4d645c7bb96875..c616ef13dad178f46223127c4c1d187ebc5e9242 100644
--- a/src/arome/micro/modd_refaro.F90
+++ b/src/arome/micro/modd_refaro.F90
@@ -38,5 +38,6 @@ IMPLICIT NONE
 !  set to constant value 300k for AROME
 REAL,SAVE, DIMENSION(2) :: XTHVREFZ=300.     ! Thetav(z) for reference
                                              ! state without orography
+LOGICAL, SAVE   ::LCOUPLES ! AUTOCOUPLED ATMS-OCEAN LES VERSION
 !
 END MODULE MODD_REF
diff --git a/src/arome/turb/mf_turb.F90 b/src/arome/turb/mf_turb.F90
index ee1e2cbf2b3be24d91653abc9987bbd08d6dfc50..3869d3bb0dd881143b0e750bf17f313fb003f7c2 100644
--- a/src/arome/turb/mf_turb.F90
+++ b/src/arome/turb/mf_turb.F90
@@ -59,7 +59,7 @@
 USE MODD_CMFSHALL
 !
 USE MODI_SHUMAN_MF, ONLY: MZM_MF
-USE MODI_TRIDIAG_MASSFLUX
+USE MODE_TRIDIAG_MASSFLUX, ONLY: TRIDIAG_MASSFLUX
 !
 IMPLICIT NONE
 !
diff --git a/src/arome/turb/modi_tm06.F90 b/src/arome/turb/modi_tm06.F90
deleted file mode 100644
index 5914828c395aa3015357c77808cbda3fcdf54086..0000000000000000000000000000000000000000
--- a/src/arome/turb/modi_tm06.F90
+++ /dev/null
@@ -1,25 +0,0 @@
-!     ######spl
-     MODULE MODI_TM06  
-!    ################ 
-!
-INTERFACE
-!
-      SUBROUTINE TM06(KKA,KKU,KKL,PTHVREF,PBL_DEPTH,PZZ,PSFTH,PMWTH,PMTH2)
-!
-INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
-INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
-INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=ARO
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHVREF    ! reference potential temperature
-REAL, DIMENSION(:,:),   INTENT(IN) :: PBL_DEPTH ! boundary layer height
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ        ! altitude of flux levels
-REAL, DIMENSION(:,:),   INTENT(IN) :: PSFTH      ! surface heat flux
-REAL, DIMENSION(:,:,:), INTENT(OUT):: PMWTH      ! w'2th'
-REAL, DIMENSION(:,:,:), INTENT(OUT):: PMTH2      ! w'th'2
-!
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE TM06
-!
-END INTERFACE
-!
-END MODULE MODI_TM06
diff --git a/src/arome/turb/modi_tm06_h.F90 b/src/arome/turb/modi_tm06_h.F90
deleted file mode 100644
index c37f96f34073a05b18e3afe6f12245b9d6d4fd70..0000000000000000000000000000000000000000
--- a/src/arome/turb/modi_tm06_h.F90
+++ /dev/null
@@ -1,24 +0,0 @@
-!     ######spl
-     MODULE MODI_TM06_H  
-!    ################ 
-!
-INTERFACE
-!
-      SUBROUTINE TM06_H(KKB,KKTB,KKTE,PTSTEP,PZZ,PFLXZ,PBL_DEPTH)
-!
-INTEGER,                INTENT(IN)    :: KKB       ! index of 1st physical level
-                                                   ! close to ground 
-INTEGER,                INTENT(IN)    :: KKTB      ! first physical level in k
-INTEGER,                INTENT(IN)    :: KKTE      ! last physical level in k
-REAL,                   INTENT(IN)    :: PTSTEP    ! Double time step
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PZZ       ! altitude of flux levels
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PFLXZ     ! heat flux
-REAL, DIMENSION(:,:),   INTENT(INOUT) :: PBL_DEPTH ! boundary layer height
-!
-!-------------------------------------------------------------------------------
-!
-END SUBROUTINE TM06_H
-!
-END INTERFACE
-!
-END MODULE MODI_TM06_H
diff --git a/src/arome/turb/modi_tridiag.F90 b/src/arome/turb/modi_tridiag.F90
deleted file mode 100644
index f04637f9f9dd2f8af39fe522c586a081addbc4ed..0000000000000000000000000000000000000000
--- a/src/arome/turb/modi_tridiag.F90
+++ /dev/null
@@ -1,25 +0,0 @@
-!     ######spl
-      MODULE MODI_TRIDIAG
-!     ###################
-INTERFACE
-!
-       SUBROUTINE TRIDIAG(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
-                                  PRHODJ,PSOURCE,PVARP )
-!
-INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
-INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
-INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR
-REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PVARM       ! variable at t-1  
-REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PA          ! upper diag. elements
-REAL,                      INTENT(IN)  :: PTSTEP      ! Double time step
-REAL,                      INTENT(IN)  :: PEXPL,PIMPL ! weights of the temporal scheme
-REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PRHODJ      ! (dry rho)*J
-REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PSOURCE     ! source term of PVAR    
-!
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PVARP       ! variable at t+1        
-!
-END SUBROUTINE TRIDIAG
-!
-END INTERFACE
-!
-END MODULE MODI_TRIDIAG 
diff --git a/src/arome/turb/modi_tridiag_massflux.F90 b/src/arome/turb/modi_tridiag_massflux.F90
deleted file mode 100644
index 1e6a223e9419519a53a1c768b6825536ace5c4f0..0000000000000000000000000000000000000000
--- a/src/arome/turb/modi_tridiag_massflux.F90
+++ /dev/null
@@ -1,28 +0,0 @@
-!     ######spl
-      MODULE MODI_TRIDIAG_MASSFLUX
-!     ###################
-INTERFACE
-!
-       SUBROUTINE TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PVARM,PF,PDFDT,PTSTEP,PIMPL,  &
-                                 PDZZ,PRHODJ,PVARP             )
-!
-INTEGER,                INTENT(IN)   :: KKA          ! near ground array index
-INTEGER,                INTENT(IN)   :: KKB          ! near ground physical index
-INTEGER,                INTENT(IN)   :: KKE          ! uppest atmosphere physical index
-INTEGER,                INTENT(IN)   :: KKU          ! uppest atmosphere array index
-INTEGER,                INTENT(IN)   :: KKL          ! +1 if grid goes from ground to atmosphere top, -1 otherwise
-REAL, DIMENSION(:,:), INTENT(IN) :: PVARM   ! variable at t-1      at mass point
-REAL, DIMENSION(:,:), INTENT(IN) :: PF      ! flux in dT/dt=-dF/dz at flux point
-REAL, DIMENSION(:,:), INTENT(IN) :: PDFDT   ! dF/dT                at flux point
-REAL,                   INTENT(IN) :: PTSTEP  ! Double time step
-REAL,                   INTENT(IN) :: PIMPL   ! implicit weight
-REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ    ! Dz                   at flux point
-REAL, DIMENSION(:,:), INTENT(IN) :: PRHODJ  ! (dry rho)*J          at mass point
-!
-REAL, DIMENSION(:,:), INTENT(OUT):: PVARP   ! variable at t+1      at mass point
-!
-END SUBROUTINE TRIDIAG_MASSFLUX
-!
-END INTERFACE
-!
-END MODULE MODI_TRIDIAG_MASSFLUX 
diff --git a/src/arome/turb/modi_tridiag_thermo.F90 b/src/arome/turb/modi_tridiag_thermo.F90
deleted file mode 100644
index e0b5240fb408773f0c03411f0c4ad72290354070..0000000000000000000000000000000000000000
--- a/src/arome/turb/modi_tridiag_thermo.F90
+++ /dev/null
@@ -1,26 +0,0 @@
-!     ######spl
-      MODULE MODI_TRIDIAG_THERMO
-!     ###################
-INTERFACE
-!
-       SUBROUTINE TRIDIAG_THERMO(KKA,KKU,KKL,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL,  &
-                                 PDZZ,PRHODJ,PVARP             )
-!
-INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
-INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
-INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PVARM   ! variable at t-1      at mass point
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PF      ! flux in dT/dt=-dF/dz at flux point
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PDFDDTDZ! dF/d(dT/dz)          at flux point
-REAL,                   INTENT(IN) :: PTSTEP  ! Double time step
-REAL,                   INTENT(IN) :: PIMPL   ! implicit weight
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ    ! Dz                   at flux point
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ  ! (dry rho)*J          at mass point
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT):: PVARP   ! variable at t+1      at mass point
-!
-END SUBROUTINE TRIDIAG_THERMO
-!
-END INTERFACE
-!
-END MODULE MODI_TRIDIAG_THERMO 
diff --git a/src/arome/turb/modi_tridiag_tke.F90 b/src/arome/turb/modi_tridiag_tke.F90
deleted file mode 100644
index 9398d9fb66015625cd42781b46a0ff95df26b0c0..0000000000000000000000000000000000000000
--- a/src/arome/turb/modi_tridiag_tke.F90
+++ /dev/null
@@ -1,27 +0,0 @@
-!     ######spl
-      MODULE MODI_TRIDIAG_TKE
-!     ##########################
-INTERFACE
-!
-       SUBROUTINE TRIDIAG_TKE(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
-                                  PRHODJ,PSOURCE,PDIAG,PVARP )
-!
-INTEGER,                INTENT(IN)   :: KKA     !near ground array index  
-INTEGER,                INTENT(IN)   :: KKU     !uppest atmosphere array index
-INTEGER,                INTENT(IN)   :: KKL     !vert. levels type 1=MNH -1=ARO
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PVARM       ! variable at t-1  
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PA          ! upper diag. elements
-REAL,                   INTENT(IN)  :: PTSTEP      ! Double time step
-REAL,                   INTENT(IN)  :: PEXPL,PIMPL ! weights of the temporal scheme
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRHODJ      ! (dry rho)*J
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSOURCE     ! source term of PVAR    
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDIAG       ! diagonal term linked to
-                                                      ! the implicit dissipation
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT) :: PVARP       ! variable at t+1        
-!
-END SUBROUTINE TRIDIAG_TKE
-!
-END INTERFACE
-!
-END MODULE MODI_TRIDIAG_TKE
diff --git a/src/arome/turb/modi_tridiag_wind.F90 b/src/arome/turb/modi_tridiag_wind.F90
deleted file mode 100644
index 87fb9c3e874a0606ece3d4aa2f439c3560033afa..0000000000000000000000000000000000000000
--- a/src/arome/turb/modi_tridiag_wind.F90
+++ /dev/null
@@ -1,27 +0,0 @@
-!     ######spl
-      MODULE MODI_TRIDIAG_WIND
-!     ########################
-INTERFACE
-!
-       SUBROUTINE TRIDIAG_WIND(KKA,KKU,KKL,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, &
-                                             PRHODJA,PSOURCE,PVARP )
-!
-INTEGER,                  INTENT(IN)   :: KKA           !near ground array index  
-INTEGER,                  INTENT(IN)   :: KKU           !uppest atmosphere array index
-INTEGER,                  INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR
-REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PVARM       ! variable at t-1  
-REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PA          ! upper diag. elements
-REAL, DIMENSION(:,:),      INTENT(IN)  :: PCOEFS      ! implicit coeff for the
-                                                      ! surface flux
-REAL,                      INTENT(IN)  :: PTSTEP      ! Double time step
-REAL,                      INTENT(IN)  :: PEXPL,PIMPL ! weights of the temporal scheme
-REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PRHODJA     ! (dry rho)*J averaged
-REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PSOURCE     ! source term of PVAR    
-!
-REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PVARP       ! variable at t+1        
-!
-END SUBROUTINE TRIDIAG_WIND
-!
-END INTERFACE
-!
-END MODULE MODI_TRIDIAG_WIND
diff --git a/src/common/aux/modd_ref.F90 b/src/common/aux/modd_ref.F90
deleted file mode 100644
index 3d1e6025ba5ac880c2d388e7adfe3be615ad2099..0000000000000000000000000000000000000000
--- a/src/common/aux/modd_ref.F90
+++ /dev/null
@@ -1,58 +0,0 @@
-!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     ###############
-      MODULE MODD_REF
-!     ###############
-!
-!!****  *MODD_REF* - declaration of reference state  profile
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this declarative module is to declare  the vertical
-!     profile of  the reference state, used for the anelastic 
-!     approximation. 
-!
-!!
-!!**  IMPLICIT ARGUMENTS
-!!    ------------------
-!!      None 
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation of Meso-NH (module MODD_REF)
-!!      Technical Specifications Report of the Meso-NH (chapters 2 and 3)
-!!
-!!    AUTHOR
-!!    ------
-!!	V. Ducrocq   *Meteo France*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original   07/06/94   
-!!                    07/13 (C.Lac) Add LBOUSS
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!-------------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-IMPLICIT NONE
-!          
-REAL,SAVE, DIMENSION(:), ALLOCATABLE, TARGET :: XRHODREFZ ! rhod(z) for reference
-                                             ! state without orography
-REAL,SAVE, DIMENSION(:), ALLOCATABLE, TARGET :: XTHVREFZ  ! Thetav(z) for reference
-                                             ! state without orography    
-REAL,SAVE                            :: XEXNTOP   ! Exner function at model top 
-!
-! For coupled A-O case
-REAL,SAVE, DIMENSION(:), ALLOCATABLE, TARGET :: XRHODREFZO! rhod(z) for ocean ref state in coupled mode
-REAL,SAVE, DIMENSION(:), ALLOCATABLE, TARGET :: XTHVREFZO !Thetav(z) for ocean ref state in coupled mode
-REAL,SAVE                            :: XEXNTOPO   ! Exner function at ocean  model top in coupled mode
-!
-LOGICAL, SAVE                        :: LBOUSS    ! Boussinesq approximation
-LOGICAL, SAVE   ::LCOUPLES ! AUTOCOUPLED ATMS-OCEAN LES VERSION
-! 
-END MODULE MODD_REF
diff --git a/src/common/turb/mode_tke_eps_sources.F90 b/src/common/turb/mode_tke_eps_sources.F90
index d266707a42c52b45afcf2f04ddfca6fdf3c6e506..2f31473d774a9b4cb9aa380c8a67e63cd7405acd 100644
--- a/src/common/turb/mode_tke_eps_sources.F90
+++ b/src/common/turb/mode_tke_eps_sources.F90
@@ -150,7 +150,7 @@ USE MODI_GRADIENT_U
 USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_LES_MEAN_SUBGRID
-USE MODI_TRIDIAG_TKE
+USE MODE_TRIDIAG_TKE, ONLY: TRIDIAG_TKE
 USE MODI_SHUMAN , ONLY : DZM, DZF, MZM, MZF
 !
 !
diff --git a/src/common/turb/tm06.F90 b/src/common/turb/mode_tm06.F90
similarity index 96%
rename from src/common/turb/tm06.F90
rename to src/common/turb/mode_tm06.F90
index 22bf99d25a03c27acd88ce1a3d9d0d649b6bcac8..903ea792e01c5f456289a0c283f6e24c76400a41 100644
--- a/src/common/turb/tm06.F90
+++ b/src/common/turb/mode_tm06.F90
@@ -2,8 +2,10 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
-!     ######spl
-      SUBROUTINE TM06(KKA,KKU,KKL,PTHVREF,PBL_DEPTH,PZZ,PSFTH,PMWTH,PMTH2)
+MODULE MODE_TM06
+IMPLICIT NONE
+CONTAINS
+SUBROUTINE TM06(KKA,KKU,KKL,PTHVREF,PBL_DEPTH,PZZ,PSFTH,PMWTH,PMTH2)
       USE PARKIND1, ONLY : JPRB
       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     #################################################################
@@ -136,3 +138,4 @@ PMWTH(:,:,KKU) = PMWTH(:,:,KKU) * ZWSTAR(:,:)**2*ZTSTAR(:,:)
 !----------------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('TM06',1,ZHOOK_HANDLE)
 END SUBROUTINE TM06
+END MODULE MODE_TM06
diff --git a/src/common/turb/tm06_h.F90 b/src/common/turb/mode_tm06_h.F90
similarity index 96%
rename from src/common/turb/tm06_h.F90
rename to src/common/turb/mode_tm06_h.F90
index 3162f5149e9d44cfe2d0e8868995881c044f1210..7d32fdd62d070d1f0d9cc796b315490f32c8d4cd 100644
--- a/src/common/turb/tm06_h.F90
+++ b/src/common/turb/mode_tm06_h.F90
@@ -2,8 +2,10 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1
-!     ######spl
-      SUBROUTINE TM06_H(KKB,KKTB,KKTE,PTSTEP,PZZ,PFLXZ,PBL_DEPTH)
+MODULE MODE_TM06_H
+IMPLICIT NONE
+CONTAINS
+SUBROUTINE TM06_H(KKB,KKTB,KKTE,PTSTEP,PZZ,PFLXZ,PBL_DEPTH)
       USE PARKIND1, ONLY : JPRB
       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     #################################################################
@@ -96,3 +98,4 @@ WHERE(PBL_DEPTH(:,:)/=XUNDEF) PBL_DEPTH(:,:)=MIN(PBL_DEPTH(:,:),ZBL_DEPTH(:,:)+Z
 !----------------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('TM06_H',1,ZHOOK_HANDLE)
 END SUBROUTINE TM06_H
+END MODULE MODE_TM06_H
diff --git a/src/common/turb/tridiag.F90 b/src/common/turb/mode_tridiag.F90
similarity index 98%
rename from src/common/turb/tridiag.F90
rename to src/common/turb/mode_tridiag.F90
index ee28bf7bb4be4dc87ca84be8d09bc696ca498496..82b2ec2b08172cb21bf53a27f11c9b12e1be6abe 100644
--- a/src/common/turb/tridiag.F90
+++ b/src/common/turb/mode_tridiag.F90
@@ -2,8 +2,10 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
-!     ######spl
-       SUBROUTINE TRIDIAG(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
+MODULE MODE_TRIDIAG
+IMPLICIT NONE
+CONTAINS
+SUBROUTINE TRIDIAG(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
                                   PRHODJ,PSOURCE,PVARP )
        USE PARKIND1, ONLY : JPRB
        USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -230,3 +232,4 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE)
 !
 IF (LHOOK) CALL DR_HOOK('TRIDIAG',1,ZHOOK_HANDLE)
 END SUBROUTINE TRIDIAG
+END MODULE MODE_TRIDIAG
diff --git a/src/common/turb/tridiag_massflux.F90 b/src/common/turb/mode_tridiag_massflux.F90
similarity index 98%
rename from src/common/turb/tridiag_massflux.F90
rename to src/common/turb/mode_tridiag_massflux.F90
index 401018cc0fed6cac3161e06224461d7c1ea8ea99..915d75b936fd4131452da4cf5c7e41a9922390f5 100644
--- a/src/common/turb/tridiag_massflux.F90
+++ b/src/common/turb/mode_tridiag_massflux.F90
@@ -2,8 +2,10 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
-!     ######spl
-       SUBROUTINE TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PVARM,PF,PDFDT,PTSTEP,PIMPL,  &
+MODULE MODE_TRIDIAG_MASSFLUX
+IMPLICIT NONE
+CONTAINS
+SUBROUTINE TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PVARM,PF,PDFDT,PTSTEP,PIMPL,  &
                                  PDZZ,PRHODJ,PVARP             )
 
        USE PARKIND1, ONLY : JPRB
@@ -275,3 +277,4 @@ PVARP(:,KKU)=PVARP(:,KKE)
 !
 IF (LHOOK) CALL DR_HOOK('TRIDIAG_MASSFLUX',1,ZHOOK_HANDLE)
 END SUBROUTINE TRIDIAG_MASSFLUX
+END MODULE MODE_TRIDIAG_MASSFLUX
diff --git a/src/common/turb/tridiag_thermo.F90 b/src/common/turb/mode_tridiag_thermo.F90
similarity index 98%
rename from src/common/turb/tridiag_thermo.F90
rename to src/common/turb/mode_tridiag_thermo.F90
index 7d20b2fa1e633d84dafcb24479c3c46a808d575a..5488c69f08941147fe0cafded7870f16aac0e796 100644
--- a/src/common/turb/tridiag_thermo.F90
+++ b/src/common/turb/mode_tridiag_thermo.F90
@@ -2,8 +2,10 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
-!     ######spl
-       SUBROUTINE TRIDIAG_THERMO(KKA,KKU,KKL,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL,  &
+MODULE MODE_TRIDIAG_THERMO
+IMPLICIT NONE
+CONTAINS       
+SUBROUTINE TRIDIAG_THERMO(KKA,KKU,KKL,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL,  &
                                  PDZZ,PRHODJ,PVARP             )
        USE PARKIND1, ONLY : JPRB
        USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -269,3 +271,4 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE)
 !
 IF (LHOOK) CALL DR_HOOK('TRIDIAG_THERMO',1,ZHOOK_HANDLE)
 END SUBROUTINE TRIDIAG_THERMO
+END MODULE MODE_TRIDIAG_THERMO
diff --git a/src/common/turb/tridiag_tke.F90 b/src/common/turb/mode_tridiag_tke.F90
similarity index 98%
rename from src/common/turb/tridiag_tke.F90
rename to src/common/turb/mode_tridiag_tke.F90
index aaba12157838120e2c95cc5fbb845e53f9185e55..52ec08bdfbcec157530255aa9593f16e2ee02383 100644
--- a/src/common/turb/tridiag_tke.F90
+++ b/src/common/turb/mode_tridiag_tke.F90
@@ -2,8 +2,10 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
-!     ######spl
-       SUBROUTINE TRIDIAG_TKE(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
+MODULE MODE_TRIDIAG_TKE
+IMPLICIT NONE
+CONTAINS       
+SUBROUTINE TRIDIAG_TKE(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
                                   PRHODJ,PSOURCE,PDIAG,PVARP )
        USE PARKIND1, ONLY : JPRB
        USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -233,3 +235,4 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE)
 !
 IF (LHOOK) CALL DR_HOOK('TRIDIAG_TKE',1,ZHOOK_HANDLE)
 END SUBROUTINE TRIDIAG_TKE
+END MODULE MODE_TRIDIAG_TKE
diff --git a/src/common/turb/tridiag_wind.F90 b/src/common/turb/mode_tridiag_wind.F90
similarity index 98%
rename from src/common/turb/tridiag_wind.F90
rename to src/common/turb/mode_tridiag_wind.F90
index 1f074af2b701023336eadeec436711fecb45f791..65fd7256e14f7cf242917b450ff723d4d9e942d9 100644
--- a/src/common/turb/tridiag_wind.F90
+++ b/src/common/turb/mode_tridiag_wind.F90
@@ -2,8 +2,10 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
-!     ######spl
-       SUBROUTINE TRIDIAG_WIND(KKA,KKU,KKL,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, &
+MODULE MODE_TRIDIAG_WIND
+IMPLICIT NONE
+CONTAINS       
+SUBROUTINE TRIDIAG_WIND(KKA,KKU,KKL,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, &
                                              PRHODJA,PSOURCE,PVARP )
        USE PARKIND1, ONLY : JPRB
        USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -234,3 +236,4 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE)
 ! 
 IF (LHOOK) CALL DR_HOOK('TRIDIAG_WIND',1,ZHOOK_HANDLE)
 END SUBROUTINE TRIDIAG_WIND
+END MODULE MODE_TRIDIAG_WIND
diff --git a/src/common/turb/mode_turb_ver_dyn_flux.F90 b/src/common/turb/mode_turb_ver_dyn_flux.F90
index b4e25e766dc3d99a601f39c39bd2d1612e709bfc..26d1ba9138550bd50e618c1e5f85c148de67dc8c 100644
--- a/src/common/turb/mode_turb_ver_dyn_flux.F90
+++ b/src/common/turb/mode_turb_ver_dyn_flux.F90
@@ -115,9 +115,6 @@ SUBROUTINE TURB_VER_DYN_FLUX(KKA,KKU,KKL,                     &
 !!      DXF,DYF,DZF,DZM
 !!                             :  Shuman functions (difference operators)     
 !!                               
-!!      SUBROUTINE TRIDIAG     : to compute the split implicit evolution
-!!                               of a variable located at a mass point
-!!
 !!      SUBROUTINE TRIDIAG_WIND: to compute the split implicit evolution
 !!                               of a variable located at a wind point
 !!
@@ -230,8 +227,7 @@ USE MODI_GRADIENT_M
 USE MODI_SECOND_MNH
 USE MODI_SHUMAN , ONLY: MZM, MZF, MXM, MXF, MYM, MYF,&
                       & DZM, DXF, DXM, DYF, DYM
-USE MODI_TRIDIAG 
-USE MODI_TRIDIAG_WIND 
+USE MODE_TRIDIAG_WIND, ONLY: TRIDIAG_WIND
 USE MODI_LES_MEAN_SUBGRID
 !
 USE MODE_IO_FIELD_WRITE, only: IO_Field_write
@@ -335,12 +331,12 @@ TYPE(TFIELDDATA) :: TZFIELD
 !
 !*       1.   PRELIMINARIES
 !             -------------
-ZA=XUNDEF
-PDP=XUNDEF
-!
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('TURB_VER_DYN_FLUX',0,ZHOOK_HANDLE)
 !
+ZA=XUNDEF
+PDP=XUNDEF
+!
 IIU=SIZE(PUM,1)
 IJU=SIZE(PUM,2)
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE,IIU,IJU)
@@ -351,8 +347,6 @@ IKE=KKU-JPVEXT_TURB*KKL
 IKT=SIZE(PUM,3)          
 IKTB=1+JPVEXT_TURB              
 IKTE=IKT-JPVEXT_TURB
-
-
 !
 ZSOURCE = 0.
 ZFLXZ   = 0.
diff --git a/src/common/turb/mode_turb_ver_sv_flux.F90 b/src/common/turb/mode_turb_ver_sv_flux.F90
index 41516708838d42b6a2bfd2851c00d66f6f17ebb7..6fdbba5c3f46700856f79ee23f60923d99b19c5e 100644
--- a/src/common/turb/mode_turb_ver_sv_flux.F90
+++ b/src/common/turb/mode_turb_ver_sv_flux.F90
@@ -226,8 +226,7 @@ USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
 USE MODI_SHUMAN , ONLY : DZM, MZM, MZF
-USE MODI_TRIDIAG 
-USE MODI_TRIDIAG_WIND 
+USE MODE_TRIDIAG, ONLY: TRIDIAG
 USE MODI_EMOIST
 USE MODI_ETHETA
 USE MODI_LES_MEAN_SUBGRID
diff --git a/src/common/turb/mode_turb_ver_thermo_corr.F90 b/src/common/turb/mode_turb_ver_thermo_corr.F90
index 3d420f3936d33e208d20b38c8e15974356c54d1d..add00cbc36ffdcb7fe50b81251e624b90e01710c 100644
--- a/src/common/turb/mode_turb_ver_thermo_corr.F90
+++ b/src/common/turb/mode_turb_ver_thermo_corr.F90
@@ -117,12 +117,6 @@ SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
 !!      DXF,DYF,DZF,DZM
 !!                             :  Shuman functions (difference operators)     
 !!                               
-!!      SUBROUTINE TRIDIAG     : to compute the split implicit evolution
-!!                               of a variable located at a mass point
-!!
-!!      SUBROUTINE TRIDIAG_WIND: to compute the split implicit evolution
-!!                               of a variable located at a wind point
-!!
 !!      FUNCTIONs ETHETA and EMOIST  :  
 !!            allows to compute:
 !!            - the coefficients for the turbulent correlation between
@@ -223,9 +217,7 @@ USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
 USE MODI_SHUMAN , ONLY : DZM, MZM, MZF
-USE MODI_TRIDIAG 
 USE MODI_LES_MEAN_SUBGRID
-USE MODI_TRIDIAG_THERMO
 !
 USE MODE_IO_FIELD_WRITE, only: IO_Field_write
 USE MODE_PRANDTL
diff --git a/src/common/turb/mode_turb_ver_thermo_flux.F90 b/src/common/turb/mode_turb_ver_thermo_flux.F90
index 7b7b6a4d42973c39fa4168a2f241554811658d93..ce4391f432da1184612f96732640611105498825 100644
--- a/src/common/turb/mode_turb_ver_thermo_flux.F90
+++ b/src/common/turb/mode_turb_ver_thermo_flux.F90
@@ -250,10 +250,10 @@ USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
 USE MODI_SHUMAN , ONLY : DZF, DZM, MZF, MZM, MYF, MXF
-USE MODI_TRIDIAG 
+USE MODE_TRIDIAG, ONLY: TRIDIAG
 USE MODI_LES_MEAN_SUBGRID
-USE MODI_TRIDIAG_THERMO
-USE MODI_TM06_H
+USE MODE_TRIDIAG_THERMO, ONLY: TRIDIAG_THERMO
+USE MODE_TM06_H, ONLY: TM06_H
 !
 USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
 USE MODE_PRANDTL
diff --git a/src/common/turb/turb.F90 b/src/common/turb/turb.F90
index 66b6b86f4804a50f8e00e76ba3c93a76b4b98989..9bfa00590f540579dc15c0df3400d9867f71ebc6 100644
--- a/src/common/turb/turb.F90
+++ b/src/common/turb/turb.F90
@@ -1,4 +1,8 @@
-!     ######spl
+!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
       SUBROUTINE TURB(KKA,KKU,KKL,KMI,KRR,KRRL,KRRI,HLBCX,HLBCY,      &
               & KSPLIT,KMODEL_CL,                                     &
               & OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,    &
@@ -21,10 +25,6 @@
               & YDDDH,YDLDDH,YDMDDH,                                  &
               & TBUDGETS, KBUDGETS,                                   &
               & PTR,PDISS,PEDR                                        )
-
-      USE PARKIND1, ONLY : JPRB
-      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-      USE MODD_CTURB, ONLY : LHARAT
 !     #################################################################
 !
 !
@@ -127,7 +127,6 @@
 !!      Module MODD_BUDGET:
 !!         NBUMOD  
 !!         CBUTYPE 
-!!         NBUPROCCTR 
 !!         LBU_RU     
 !!         LBU_RV     
 !!         LBU_RW     
@@ -220,11 +219,15 @@
 !*      0. DECLARATIONS
 !          ------------
 !
+USE PARKIND1, ONLY : JPRB
+USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+!
 USE MODD_PARAMETERS
 USE MODD_CST
 USE MODD_CTURB
 USE MODD_CONF
 USE MODD_BUDGET
+USE MODD_FIELD, ONLY: TFIELDDATA,TYPEREAL
 USE MODD_IO, ONLY: TFILEDATA
 USE MODD_LES
 USE MODD_NSV
@@ -241,9 +244,10 @@ USE MODI_BUDGET_DDH
 USE MODI_LES_MEAN_SUBGRID
 USE MODI_RMC01
 USE MODI_GRADIENT_W
-USE MODI_TM06
+USE MODE_TM06, ONLY: TM06
 USE MODI_UPDATE_LM
 !
+USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
 USE MODE_SBL
 USE MODE_FMWRIT
 !
@@ -442,11 +446,6 @@ INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain 
 INTEGER             :: JRR,JK,JSV   ! loop counters
 INTEGER             :: JI,JJ        ! loop counters
-INTEGER             :: IRESP        ! Return code of FM routines
-INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
-INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
-CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL                :: ZL0          ! Max. Mixing Length in Blakadar formula
 REAL                :: ZALPHA       ! proportionnality constant between Dz/2 and 
 !                                   ! BL89 mixing length near the surface
@@ -456,6 +455,7 @@ TYPE(TFILEDATA) :: TPFILE ! File type to write fields for MesoNH
 !
 REAL :: ZTIME1, ZTIME2
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3))::  ZSHEAR, ZDUDZ, ZDVDZ
+TYPE(TFIELDDATA) :: TZFIELD
 !
 !*      1.PRELIMINARIES
 !         -------------
@@ -556,18 +556,30 @@ IF (KRRL >=1) THEN
   END IF
 !
 !
-  IF (OCLOSE_OUT .AND. OTURB_DIAG) THEN
-    YRECFM  ='ATHETA'
-    YCOMMENT='X_Y_Z_ATHETA (M)'
-    IGRID   = 1
-    ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZATHETA,IGRID,ILENCH,YCOMMENT,IRESP)
+  IF ( TPFILE%LOPENED .AND. OTURB_DIAG ) THEN
+    TZFIELD%CMNHNAME   = 'ATHETA'
+    TZFIELD%CSTDNAME   = ''
+    TZFIELD%CLONGNAME  = 'ATHETA'
+    TZFIELD%CUNITS     = 'm'
+    TZFIELD%CDIR       = 'XY'
+    TZFIELD%CCOMMENT   = 'X_Y_Z_ATHETA'
+    TZFIELD%NGRID      = 1
+    TZFIELD%NTYPE      = TYPEREAL
+    TZFIELD%NDIMS      = 3
+    TZFIELD%LTIMEDEP   = .TRUE.
+    CALL IO_Field_write(TPFILE,TZFIELD,ZATHETA)
 ! 
-    YRECFM  ='AMOIST'
-    YCOMMENT='X_Y_Z_AMOIST (M)'
-    IGRID   = 1
-    ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZAMOIST,IGRID,ILENCH,YCOMMENT,IRESP)
+    TZFIELD%CMNHNAME   = 'AMOIST'
+    TZFIELD%CSTDNAME   = ''
+    TZFIELD%CLONGNAME  = 'AMOIST'
+    TZFIELD%CUNITS     = 'm'
+    TZFIELD%CDIR       = 'XY'
+    TZFIELD%CCOMMENT   = 'X_Y_Z_AMOIST'
+    TZFIELD%NGRID      = 1
+    TZFIELD%NTYPE      = TYPEREAL
+    TZFIELD%NDIMS      = 3
+    TZFIELD%LTIMEDEP   = .TRUE.
+    CALL IO_Field_write(TPFILE,TZFIELD,ZAMOIST)
   END IF
 !
 ELSE
@@ -655,11 +667,8 @@ END SELECT
 !
 !*      3.5 Mixing length modification for cloud
 !           -----------------------
-IF (KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE' ) CALL CLOUD_MODIF_LM
-ENDIF  ! 
-
-!
-!
+IF (KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE') CALL CLOUD_MODIF_LM
+ENDIF  ! end LHARRAT
 
 !
 !*      3.6 Dissipative length
@@ -946,35 +955,51 @@ ENDIF
 !*      7. STORES SOME INFORMATIONS RELATED TO THE TURBULENCE SCHEME
 !          ---------------------------------------------------------
 !
-IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
-  YCOMMENT=' '
+IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
 ! 
 ! stores the mixing length
 ! 
-  YRECFM  ='LM'
-  YCOMMENT='X_Y_Z_LM (M)'
-  IGRID   = 1
-  ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP)
+  TZFIELD%CMNHNAME   = 'LM'
+  TZFIELD%CSTDNAME   = ''
+  TZFIELD%CLONGNAME  = 'LM'
+  TZFIELD%CUNITS     = 'm'
+  TZFIELD%CDIR       = 'XY'
+  TZFIELD%CCOMMENT   = 'Mixing length'
+  TZFIELD%NGRID      = 1
+  TZFIELD%NTYPE      = TYPEREAL
+  TZFIELD%NDIMS      = 3
+  TZFIELD%LTIMEDEP   = .TRUE.
+  CALL IO_Field_write(TPFILE,TZFIELD,ZLM)
 !
   IF (KRR /= 0) THEN
 !
 ! stores the conservative potential temperature
 !
-    YRECFM  ='THLM'
-    YCOMMENT='X_Y_Z_THLM (KELVIN)'
-    IGRID   = 1
-    ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PTHLM,IGRID,ILENCH,YCOMMENT,IRESP)
+    TZFIELD%CMNHNAME   = 'THLM'
+    TZFIELD%CSTDNAME   = ''
+    TZFIELD%CLONGNAME  = 'THLM'
+    TZFIELD%CUNITS     = 'K'
+    TZFIELD%CDIR       = 'XY'
+    TZFIELD%CCOMMENT   = 'Conservative potential temperature'
+    TZFIELD%NGRID      = 1
+    TZFIELD%NTYPE      = TYPEREAL
+    TZFIELD%NDIMS      = 3
+    TZFIELD%LTIMEDEP   = .TRUE.
+    CALL IO_Field_write(TPFILE,TZFIELD,PTHLM)
 !
 ! stores the conservative mixing ratio
 !
-    YRECFM  ='RNPM'
-    YCOMMENT='X_Y_Z_RNPM (KG/KG)'
-    IGRID   = 1
-    ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRM(:,:,:,1),IGRID,ILENCH,       &
-                                                               YCOMMENT,IRESP)
+    TZFIELD%CMNHNAME   = 'RNPM'
+    TZFIELD%CSTDNAME   = ''
+    TZFIELD%CLONGNAME  = 'RNPM'
+    TZFIELD%CUNITS     = 'kg kg-1'
+    TZFIELD%CDIR       = 'XY'
+    TZFIELD%CCOMMENT   = 'Conservative mixing ratio'
+    TZFIELD%NGRID      = 1
+    TZFIELD%NTYPE      = TYPEREAL
+    TZFIELD%NDIMS      = 3
+    TZFIELD%LTIMEDEP   = .TRUE.
+    CALL IO_Field_write(TPFILE,TZFIELD,PRM(:,:,:,1))
    END IF
 END IF
 !
@@ -1093,13 +1118,14 @@ CONTAINS
 !!    MODIFICATIONS
 !!    -------------
 !!      Original   24/06/99
+!!      J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test
 !!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------
-!USE MODE_ll
-!USE MODD_ARGSLIST_ll, ONLY : LIST_ll
+USE MODE_ll
+USE MODD_ARGSLIST_ll, ONLY : LIST_ll
 USE MODD_CONF
 !
 IMPLICIT NONE
@@ -1111,45 +1137,47 @@ REAL, DIMENSION(:,:), INTENT(INOUT) :: PUSLOPE,PVSLOPE
 !
 !*       0.2   Declarations of local variables :
 !
-INTEGER             :: IIB,IIE,IJB,IJE ! index values for the physical subdomain
-!TYPE(LIST_ll), POINTER :: TZFIELDS_ll  ! list of fields to exchange
-!INTEGER                :: IINFO_ll     ! return code of parallel routine
+INTEGER             :: IIB,IIE,IJB,IJE,IIU,IJU ! index values for the physical subdomain
+TYPE(LIST_ll), POINTER :: TZFIELDS_ll  ! list of fields to exchange
+INTEGER                :: IINFO_ll     ! return code of parallel routine
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('TURB:UPDATE_ROTATE_WIND',0,ZHOOK_HANDLE)
 !
 !*        1  PROLOGUE
 !
-!NULLIFY(TZFIELDS_ll)
+NULLIFY(TZFIELDS_ll)
 !
-!CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
+IIU=SIZE(PUSLOPE,1)
+IJU=SIZE(PUSLOPE,2)
+CALL GET_INDICE_ll (IIB,IJB,IIE,IJE,IIU,IJU)
 !
 !         2 Update halo if necessary
 !
-!IF (NHALO == 1) THEN
-!  CALL ADD2DFIELD_ll(TZFIELDS_ll,PUSLOPE)
-!  CALL ADD2DFIELD_ll(TZFIELDS_ll,PVSLOPE)
-!  CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-!  CALL CLEANLIST_ll(TZFIELDS_ll)
-!ENDIF
+!!$IF (NHALO == 1) THEN
+  CALL ADD2DFIELD_ll( TZFIELDS_ll, PUSLOPE, 'UPDATE_ROTATE_WIND::PUSLOPE' )
+  CALL ADD2DFIELD_ll( TZFIELDS_ll, PVSLOPE, 'UPDATE_ROTATE_WIND::PVSLOPE' )
+  CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
+  CALL CLEANLIST_ll(TZFIELDS_ll)
+!!$ENDIF
 !
 !        3 Boundary conditions for non cyclic case
 !
-!IF ( HLBCX(1) /= "CYCL" .AND. LWEST_ll()) THEN
-!  PUSLOPE(IIB-1,:)=PUSLOPE(IIB,:)
-!  PVSLOPE(IIB-1,:)=PVSLOPE(IIB,:)
-!END IF
-!IF ( HLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN
-!  PUSLOPE(IIE+1,:)=PUSLOPE(IIE,:)
-!  PVSLOPE(IIE+1,:)=PVSLOPE(IIE,:)
-!END IF
-!IF ( HLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN
-!  PUSLOPE(:,IJB-1)=PUSLOPE(:,IJB)
-!  PVSLOPE(:,IJB-1)=PVSLOPE(:,IJB)
-!END IF
-!IF(  HLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN
-!  PUSLOPE(:,IJE+1)=PUSLOPE(:,IJE)
-!  PVSLOPE(:,IJE+1)=PVSLOPE(:,IJE)
-!END IF
+IF ( HLBCX(1) /= "CYCL" .AND. LWEST_ll()) THEN
+  PUSLOPE(IIB-1,:)=PUSLOPE(IIB,:)
+  PVSLOPE(IIB-1,:)=PVSLOPE(IIB,:)
+END IF
+IF ( HLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN
+  PUSLOPE(IIE+1,:)=PUSLOPE(IIE,:)
+  PVSLOPE(IIE+1,:)=PVSLOPE(IIE,:)
+END IF
+IF ( HLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN
+  PUSLOPE(:,IJB-1)=PUSLOPE(:,IJB)
+  PVSLOPE(:,IJB-1)=PVSLOPE(:,IJB)
+END IF
+IF(  HLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN
+  PUSLOPE(:,IJE+1)=PUSLOPE(:,IJE)
+  PVSLOPE(:,IJE+1)=PVSLOPE(:,IJE)
+END IF
 !
 IF (LHOOK) CALL DR_HOOK('TURB:UPDATE_ROTATE_WIND',1,ZHOOK_HANDLE)
 !
@@ -1545,12 +1573,18 @@ ENDIF
 !              -----------------------------------------------
 !
 ! Impression before modification of the mixing length
-IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
-  YRECFM  ='LM_CLEAR_SKY'
-  YCOMMENT='X_Y_Z_LM CLEAR SKY (M)'
-  IGRID   = 1
-  ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP)
+IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
+  TZFIELD%CMNHNAME   = 'LM_CLEAR_SKY'
+  TZFIELD%CSTDNAME   = ''
+  TZFIELD%CLONGNAME  = 'LM_CLEAR_SKY'
+  TZFIELD%CUNITS     = 'm'
+  TZFIELD%CDIR       = 'XY'
+  TZFIELD%CCOMMENT   = 'X_Y_Z_LM CLEAR SKY'
+  TZFIELD%NGRID      = 1
+  TZFIELD%NTYPE      = TYPEREAL
+  TZFIELD%NDIMS      = 3
+  TZFIELD%LTIMEDEP   = .TRUE.
+  CALL IO_Field_write(TPFILE,TZFIELD,ZLM)
 ENDIF
 !
 ! Amplification of the mixing length when the criteria are verified
@@ -1565,18 +1599,29 @@ WHERE (PCEI(:,:,:) == -1.) ZLM(:,:,:) = ZLM_CLOUD(:,:,:)
 !*       5.    IMPRESSION
 !              ----------
 !
-IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
-  YRECFM  ='COEF_AMPL'
-  YCOMMENT='X_Y_Z_COEF AMPL (-)'
-  IGRID   = 1
-  ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCOEF_AMPL,IGRID,ILENCH,YCOMMENT,IRESP)
+IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
+  TZFIELD%CMNHNAME   = 'COEF_AMPL'
+  TZFIELD%CSTDNAME   = ''
+  TZFIELD%CLONGNAME  = 'COEF_AMPL'
+  TZFIELD%CUNITS     = '1'
+  TZFIELD%CDIR       = 'XY'
+  TZFIELD%CCOMMENT   = 'X_Y_Z_COEF AMPL'
+  TZFIELD%NGRID      = 1
+  TZFIELD%NTYPE      = TYPEREAL
+  TZFIELD%NDIMS      = 3
+  TZFIELD%LTIMEDEP   = .TRUE.
+  CALL IO_Field_write(TPFILE,TZFIELD,ZCOEF_AMPL)
   !
-  YRECFM  ='LM_CLOUD'
-  YCOMMENT='X_Y_Z_LM CLOUD (M)'
-  IGRID   = 1
-  ILENCH  = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM_CLOUD,IGRID,ILENCH,YCOMMENT,IRESP)
+  TZFIELD%CMNHNAME   = 'LM_CLOUD'
+  TZFIELD%CSTDNAME   = ''
+  TZFIELD%CLONGNAME  = 'LM_CLOUD'
+  TZFIELD%CUNITS     = 'm'
+  TZFIELD%CDIR       = 'XY'
+  TZFIELD%CCOMMENT   = 'X_Y_Z_LM CLOUD'
+  TZFIELD%NGRID      = 1
+  TZFIELD%NTYPE      = TYPEREAL
+  TZFIELD%NDIMS      = 3
+  CALL IO_Field_write(TPFILE,TZFIELD,ZLM_CLOUD)
   !
 ENDIF
 !
diff --git a/src/mesonh/turb/turb.f90 b/src/mesonh/turb/turb.f90
index e089edc8208eeb908585d9b8d67351b10e1811ba..c255d2dd58c5b41c5189751e4cedd16d121ccaf3 100644
--- a/src/mesonh/turb/turb.f90
+++ b/src/mesonh/turb/turb.f90
@@ -395,7 +395,7 @@ USE MODI_UPDATE_LM
 USE MODI_GET_HALO
 !
 use mode_budget,         only: Budget_store_init, Budget_store_end
-USE MODE_IO_FIELD_WRITE, only: IO_Field_write
+USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
 USE MODE_SBL
 use mode_sources_neg_correct, only: Sources_neg_correct
 !
@@ -713,7 +713,7 @@ IF (KRRL >=1) THEN
   END IF
 !
 !
-  IF ( tpfile%lopened .AND. OTURB_DIAG ) THEN
+  IF ( TPFILE%LOPENED .AND. OTURB_DIAG ) THEN
     TZFIELD%CMNHNAME   = 'ATHETA'
     TZFIELD%CSTDNAME   = ''
     TZFIELD%CLONGNAME  = 'ATHETA'
@@ -1163,7 +1163,7 @@ CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKET,PLEM,ZLEPS,PDYP,ZTRH,     &
 !*      7. STORES SOME INFORMATIONS RELATED TO THE TURBULENCE SCHEME
 !          ---------------------------------------------------------
 !
-IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
+IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
 ! 
 ! stores the mixing length
 ! 
@@ -1302,9 +1302,6 @@ IF (LLES_CALL) THEN
   CALL SECOND_MNH(ZTIME2)
   XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
 END IF
-
-!
-
 !
 !----------------------------------------------------------------------------
 !
@@ -1834,7 +1831,7 @@ ENDIF
 !              -----------------------------------------------
 !
 ! Impression before modification of the mixing length
-IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
+IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
   TZFIELD%CMNHNAME   = 'LM_CLEAR_SKY'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = 'LM_CLEAR_SKY'
@@ -1860,7 +1857,7 @@ WHERE (PCEI(:,:,:) == -1.) PLEM(:,:,:) = ZLM_CLOUD(:,:,:)
 !*       5.    IMPRESSION
 !              ----------
 !
-IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
+IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
   TZFIELD%CMNHNAME   = 'COEF_AMPL'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = 'COEF_AMPL'