diff --git a/src/arome/ext/apl_arome.F90 b/src/arome/ext/apl_arome.F90
index c2986feee9a266f78977e6d8aca9eb1cbfc7f312..bbf2d2f26daaa1cdbad3900f4f933c8d15eb6df9 100644
--- a/src/arome/ext/apl_arome.F90
+++ b/src/arome/ext/apl_arome.F90
@@ -1568,7 +1568,7 @@ IF (LMICRO) THEN
     ! for now a copy is needed (see below, inside). I don't like than :-( REK
     ZLIMAS_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG,1:NLIMA)=ZLIMASIN_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG,1:NLIMA)
 
-    CALL ARO_ADJUST_LIMA (YDCPG_OPTS%KFLEVG, IKU, IKL, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, NRR,                          &
+    CALL ARO_ADJUST_LIMA (YDCPG_OPTS%KFLEVG, IKU, IKL, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, YDCPG_BNDS%KFDIA, NRR,        &
     & NLIMA, YDCPG_OPTS%KSTEP+1, LOSUBG_COND, LOSIGMAS, LOCND2, ZDT, VSIGQSAT, ZZZ_F_, ZRHODJM__(:, 1:YDCPG_OPTS%KFLEVG), &
     & ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG), ZEXNREFM_, ZPABSM__(:, 1:YDCPG_OPTS%KFLEVG), ZTHM__(:, 1:YDCPG_OPTS%KFLEVG),   &
     & ZRM_, ZLIMAM_, ZSIGM_, ZMFM_, ZRC_MF_, ZRI_MF_, ZCF_MF_, ZTHS__(:, 1:YDCPG_OPTS%KFLEVG), ZRS_,                      &
@@ -3158,7 +3158,7 @@ IF (LMICRO) THEN
     ELSE
       ZPTRWNU_ => ZWM__(1:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG)
     ENDIF
-    CALL ARO_LIMA(YDCPG_OPTS%KFLEVG, IKU, IKL, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, NRR, NLIMA, YDCPG_OPTS%KSTEP+1,       &
+    CALL ARO_LIMA(YDCPG_OPTS%KFLEVG, IKU, IKL, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG,YDCPG_BNDS%KFDIA,NRR, NLIMA, YDCPG_OPTS%KSTEP+1, &
     & NSPLITR, NSPLITG, ZDT, ZDZZ_, ZRHODJM__(:, 1:YDCPG_OPTS%KFLEVG), ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG),               &
     & ZEXNREFM_, ZPABSM__(:, 1:YDCPG_OPTS%KFLEVG), ZPTRWNU_, ZTHM__(:, 1:YDCPG_OPTS%KFLEVG), ZRM_,                        &
     & ZLIMAM_, ZTHS__(:, 1:YDCPG_OPTS%KFLEVG), ZRS_, ZLIMAS_, ZEVAP_, ZINPRR_NOTINCR_,                                    &
diff --git a/src/arome/ext/aro_adjust_lima.F90 b/src/arome/ext/aro_adjust_lima.F90
index 169373f4974ae90ae14ebd0df4f5f19508cf2737..6cd01e848d725c2778c95f2ec23d3549a874777c 100644
--- a/src/arome/ext/aro_adjust_lima.F90
+++ b/src/arome/ext/aro_adjust_lima.F90
@@ -1,5 +1,5 @@
 !     ######spl
-      SUBROUTINE  ARO_ADJUST_LIMA(KKA,KKU,KKL,KLON,KLEV,  KRR, KSV, KTCOUNT,  &
+      SUBROUTINE  ARO_ADJUST_LIMA(KKA,KKU,KKL,KLON,KLEV,KFDIA,  KRR, KSV, KTCOUNT,  &
                                   OSUBG_COND, OSIGMAS, OCND2, &
                                   PTSTEP, PSIGQSAT, &
                                   PZZF, PRHODJ, PRHODREF, PEXNREF,&
@@ -93,6 +93,8 @@ USE DDH_MIX, ONLY  : TYP_DDH
 USE YOMLDDH, ONLY  : TLDDH
 USE YOMMDDH, ONLY  : TMDDH
 !
+USE MODD_DIMPHYEX,   ONLY: DIMPHYEX_t
+!
 IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
@@ -105,6 +107,7 @@ INTEGER,                  INTENT(IN)   :: KKU    !uppest atmosphere array index
 INTEGER,                  INTENT(IN)   :: KKL    !vert. levels type 1=MNH -1=ARO
 INTEGER,                  INTENT(IN)   :: KLON     !NPROMA under CPG
 INTEGER,                  INTENT(IN)   :: KLEV     !Number of vertical levels
+INTEGER,                  INTENT(IN)   :: KFDIA    !
 INTEGER,                  INTENT(IN)   :: KRR      ! Number of moist variables
 INTEGER,                  INTENT(IN)   :: KSV      ! Number of moist variables
 INTEGER,                  INTENT(IN)   :: KTCOUNT  ! Temporal loop counter
@@ -173,6 +176,8 @@ REAL  :: ZMASSPOS                   ! total mass  for one water category
                                     ! after removing the negative values
 REAL  :: ZRATIO                     ! ZMASSTOT / ZMASSCOR
 !
+TYPE(TBUDGETDATA), DIMENSION(NBUDGET_SV1+NSV_LIMA-1) :: YLBUDGET
+TYPE(DIMPHYEX_t) :: YLDIMPHYEX
 !
 !------------------------------------------------------------------------------
 !
@@ -189,7 +194,7 @@ HRAD='NONE'
 HTURBDIM='1DIM'
 KMI=1
 
-
+CALL FILL_DIMPHYEX(YLDIMPHYEX, KLON, 1, KLEV, 0, KFDIA)
 
 !
 !*       2.     TRANSFORMATION INTO PHYSICAL TENDENCIES
@@ -242,7 +247,7 @@ ZCPH(:,:,:)=XCPD +XCPV*2.*PTSTEP*PRS(:,:,:,1)
 !*       3.2    Correct negative values
 !
 ! Correction where rc<0
-     IF (LWARM_LIMA) THEN
+     IF (NMOM_C.GE.1) THEN
 !        WHERE (PRS(:,:,:,2) < 0. .OR. PSVS(:,:,:,NSV_LIMA_NC) < 0.)
         WHERE (PRS(:,:,:,2) < 0.)
            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,2)
@@ -253,7 +258,7 @@ ZCPH(:,:,:)=XCPD +XCPV*2.*PTSTEP*PRS(:,:,:,1)
         END WHERE
      END IF
 ! Correction where rr<0
-     IF (LWARM_LIMA .AND. LRAIN_LIMA) THEN
+     IF (NMOM_R.GE.1) THEN
 !        WHERE (PRS(:,:,:,3) < 0. .OR. PSVS(:,:,:,NSV_LIMA_NR) < 0.)
         WHERE (PRS(:,:,:,3) < 0.)
            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,3)
@@ -275,7 +280,7 @@ ZCPH(:,:,:)=XCPD +XCPV*2.*PTSTEP*PRS(:,:,:,1)
 !        ENDDO
 !     END IF
 ! Correction where ri<0
-     IF (LCOLD_LIMA) THEN
+     IF (NMOM_I.GE.1) THEN
 !        WHERE (PRS(:,:,:,4) < 0. .OR. PSVS(:,:,:,NSV_LIMA_NI) < 0.)
         WHERE (PRS(:,:,:,4) < 0.)
            PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4)
@@ -301,7 +306,12 @@ ZCPH(:,:,:)=XCPD +XCPV*2.*PTSTEP*PRS(:,:,:,1)
 !IF (LBUDGET_RH) CALL BUDGET (PRS(:,:,:,7) * PRHODJ(:,:,:),12,'NEGA_BU_RRH')
 !IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)  * PRHODJ(:,:,:), 4,'NEGA_BU_RTH')
 
-
+DO JRR=1, NBUDGET_SV1+NSV_LIMA-1
+  YLBUDGET(JRR)%NBUDGET=JRR
+  YLBUDGET(JRR)%YDDDH=>YDDDH
+  YLBUDGET(JRR)%YDLDDH=>YDLDDH
+  YLBUDGET(JRR)%YDMDDH=>YDMDDH
+ENDDO
 !
 !-------------------------------------------------------------------------------
 !
@@ -314,7 +324,8 @@ ZCPH(:,:,:)=XCPD +XCPV*2.*PTSTEP*PRS(:,:,:,1)
 !
     ZZZ =  PZZF
 
-    CALL LIMA_ADJUST(KRR=KRR, KMI=KMI, HFMFILE='DUMMY', HLUOUT='DUMMY', HRAD='DUMMY',                  &
+    CALL LIMA_ADJUST_SPLIT(YLDIMPHYEX, CST, TBUCONF, TBUDGETS=YLBUDGET, KBUDGETS=SIZE(YLBUDGET), &
+                     KRR=KRR, KMI=KMI, HFMFILE='DUMMY', HLUOUT='DUMMY', HRAD='DUMMY',                  &
                      HTURBDIM=HTURBDIM, OCLOSE_OUT=.FALSE., OSUBG_COND=.FALSE., PTSTEP=2*PTSTEP,         &
                      PRHODREF=PRHODREF, PRHODJ=PRHODJ, PEXNREF=PEXNREF, PPABSM=PPABSM, PSIGS=PSIGS, PPABST=PPABSM, &
                      PRT=PRT, PRS=PRS, PSVT=PSVT, PSVS=PSVS,                             &
diff --git a/src/arome/ext/aro_adjust_lima.h b/src/arome/ext/aro_adjust_lima.h
new file mode 100644
index 0000000000000000000000000000000000000000..7f4f9c8b9a3ee0be30715e1b998ab7a6aea256b8
--- /dev/null
+++ b/src/arome/ext/aro_adjust_lima.h
@@ -0,0 +1,46 @@
+INTERFACE
+SUBROUTINE ARO_ADJUST_LIMA(KKA,KKU,KKL,KLON,KLEV,KFDIA, KRR, KSV, KTCOUNT,&
+ & OSUBG_COND, OSIGMAS,OCND2,&
+ & PTSTEP, PSIGQSAT, PZZF, PRHODJ, PRHODREF, PEXNREF,&
+ & PPABSM, PTHT, PRT, PSVT, PSIGS,&
+ & PMFCONV, PRC_MF, PRI_MF, PCF_MF,&
+ & PTHS, PRS, PSVS, PSRCS, PCLDFR,YDDDH,YDLDDH,YDMDDH) 
+USE PARKIND1  ,ONLY : JPIM     ,JPRB
+USE DDH_MIX, ONLY : TYP_DDH
+USE YOMLDDH, ONLY : TLDDH
+USE YOMMDDH, ONLY : TMDDH
+INTEGER(KIND=JPIM), INTENT(IN) :: KKA
+INTEGER(KIND=JPIM), INTENT(IN) :: KKU
+INTEGER(KIND=JPIM), INTENT(IN) :: KKL
+INTEGER(KIND=JPIM), INTENT(IN) :: KLON
+INTEGER(KIND=JPIM), INTENT(IN) :: KLEV
+INTEGER(KIND=JPIM), INTENT(IN) :: KFDIA
+INTEGER(KIND=JPIM), INTENT(IN) :: KRR
+INTEGER(KIND=JPIM), INTENT(IN) :: KSV
+INTEGER(KIND=JPIM), INTENT(IN) :: KTCOUNT
+LOGICAL, INTENT(IN) :: OSUBG_COND
+LOGICAL, INTENT(IN) :: OSIGMAS
+LOGICAL, INTENT(IN) :: OCND2
+REAL(KIND=JPRB), INTENT(IN) :: PTSTEP
+REAL(KIND=JPRB), INTENT(IN) :: PSIGQSAT
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PZZF
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PRHODJ
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PRHODREF
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PEXNREF
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PPABSM
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PTHT
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KRR), INTENT(INOUT) :: PRT
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KSV), INTENT(INOUT) :: PSVT
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PSIGS
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PMFCONV
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PRC_MF,PRI_MF,PCF_MF
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PTHS
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KRR), INTENT(INOUT) :: PRS
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KSV), INTENT(INOUT) :: PSVS
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(OUT) :: PSRCS
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PCLDFR
+TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
+TYPE(TLDDH), INTENT(IN) :: YDLDDH
+TYPE(TMDDH), INTENT(IN) :: YDMDDH
+END SUBROUTINE ARO_ADJUST_LIMA
+END INTERFACE
diff --git a/src/arome/ext/aro_lima.F90 b/src/arome/ext/aro_lima.F90
index b3f7d2159e20a10d5c41c28feae45c96b61e9dde..08afb064a11963f0aaf3074b7b7ff0294cd7d81c 100644
--- a/src/arome/ext/aro_lima.F90
+++ b/src/arome/ext/aro_lima.F90
@@ -1,5 +1,5 @@
 !     ######spl
-      SUBROUTINE  ARO_LIMA(KKA,KKU,KKL,KLON,KLEV,  KRR, KSV, KTCOUNT, KSPLITR, KSPLITG, &
+      SUBROUTINE  ARO_LIMA(KKA,KKU,KKL,KLON,KLEV,KFDIA,KRR, KSV, KTCOUNT, KSPLITR, KSPLITG, &
                                   PTSTEP, PDZZ, PRHODJ, PRHODREF, PEXNREF,&
                                   PPABSM, PW_NU, PTHT, PRT, PSVT, &
                                   PTHS, PRS, PSVS, PEVAP,  &
@@ -75,6 +75,7 @@ INTEGER,                  INTENT(IN)   :: KKU  !uppest atmosphere array index
 INTEGER,                  INTENT(IN)   :: KKL  !vert. levels type 1=MNH -1=ARO
 INTEGER,                  INTENT(IN)   :: KLON     !NPROMA under CPG
 INTEGER,                  INTENT(IN)   :: KLEV     !Number of vertical levels
+INTEGER,                  INTENT(IN)   :: KFDIA    !
 INTEGER,                  INTENT(IN)   :: KRR      ! Number of moist variables
 INTEGER,                  INTENT(IN)   :: KSV      ! Number of LIMA variables
 INTEGER,                  INTENT(IN)   :: KTCOUNT  ! Temporal loop counter
@@ -145,7 +146,7 @@ REAL  :: ZRATIO                     ! ZMASSTOT / ZMASSCOR
 
 LOGICAL :: LL_RRR_BUDGET
 !
-TYPE(TBUDGETDATA), DIMENSION() :: YLBUDGET
+TYPE(TBUDGETDATA), DIMENSION(NBUDGET_SV1+NSV_LIMA-1) :: YLBUDGET
 TYPE(DIMPHYEX_t) :: YLDIMPHYEX
 !
 !------------------------------------------------------------------------------
diff --git a/src/arome/ext/aro_lima.h b/src/arome/ext/aro_lima.h
new file mode 100644
index 0000000000000000000000000000000000000000..67ab774670f3d0c896a53d0f1b3d5fa93c4efae1
--- /dev/null
+++ b/src/arome/ext/aro_lima.h
@@ -0,0 +1,46 @@
+INTERFACE
+SUBROUTINE ARO_LIMA(KKA,KKU,KKL,KLON,KLEV, KFDIA, KRR, KSV, KTCOUNT, KSPLITR, KSPLITG, &
+ & PTSTEP, PDZZ, PRHODJ, PRHODREF, PEXNREF,&
+ & PPABSM, PW_NU, PTHT, PRT, PSVT, &
+ & PTHS, PRS, PSVS, PEVAP,&
+ & PINPRR,PINPRS,PINPRG,PINPRH,PFPR,&
+ & YDDDH,YDLDDH,YDMDDH)
+USE PARKIND1  ,ONLY : JPIM     ,JPRB
+USE DDH_MIX, ONLY : TYP_DDH
+USE YOMLDDH, ONLY : TLDDH
+USE YOMMDDH, ONLY : TMDDH
+INTEGER(KIND=JPIM), INTENT(IN) :: KKA
+INTEGER(KIND=JPIM), INTENT(IN) :: KKU
+INTEGER(KIND=JPIM), INTENT(IN) :: KKL
+INTEGER(KIND=JPIM), INTENT(IN) :: KLON
+INTEGER(KIND=JPIM), INTENT(IN) :: KLEV
+INTEGER(KIND=JPIM), INTENT(IN) :: KFDIA
+INTEGER(KIND=JPIM), INTENT(IN) :: KRR
+INTEGER(KIND=JPIM), INTENT(IN) :: KSV
+INTEGER(KIND=JPIM), INTENT(IN) :: KTCOUNT
+INTEGER(KIND=JPIM), INTENT(IN) :: KSPLITR
+INTEGER(KIND=JPIM), INTENT(IN) :: KSPLITG
+REAL(KIND=JPRB), INTENT(IN) :: PTSTEP
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PDZZ
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PRHODJ
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PRHODREF
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PEXNREF
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PPABSM
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PW_NU
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(IN) :: PTHT
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KRR), INTENT(INOUT):: PRT
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KSV), INTENT(INOUT):: PSVT
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PTHS
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KRR), INTENT(INOUT) :: PRS
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KSV), INTENT(INOUT) :: PSVS
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PEVAP
+REAL(KIND=JPRB), DIMENSION(KLON,1), INTENT(INOUT) :: PINPRR
+REAL(KIND=JPRB), DIMENSION(KLON,1), INTENT(INOUT) :: PINPRS
+REAL(KIND=JPRB), DIMENSION(KLON,1), INTENT(INOUT) :: PINPRG
+REAL(KIND=JPRB), DIMENSION(KLON,1), INTENT(INOUT) :: PINPRH
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KRR), INTENT(INOUT) :: PFPR
+TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
+TYPE(TLDDH), INTENT(IN) :: YDLDDH
+TYPE(TMDDH), INTENT(IN) :: YDMDDH
+END SUBROUTINE ARO_LIMA
+END INTERFACE
diff --git a/src/arome/ext/aroini_micro_lima.F90 b/src/arome/ext/aroini_micro_lima.F90
new file mode 100644
index 0000000000000000000000000000000000000000..839aa2de9b54a5addb90ec5658776abc9662af80
--- /dev/null
+++ b/src/arome/ext/aroini_micro_lima.F90
@@ -0,0 +1,259 @@
+!     ######spl
+SUBROUTINE AROINI_MICRO_LIMA(KULOUT,KULNAM,PTSTEP,LDWARM,CMICRO,KSPLITR,KSPLITG,CCSEDIM,LDCRIAUTI,&
+              PCRIAUTI,PT0CRIAUTI,PCRIAUTC)
+
+USE PARKIND1, ONLY : JPRB
+USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+!**** *INI_MICRO*   - Initialize common meso_NH MODD_ used in microphysics for AROME
+
+!     Purpose.
+!     --------
+!           Initialize 
+!           MODD_RAIN_ICE_DESCR, MODD_RAIN_ICE_PARAM and MODD_PARAM_ICE  
+!           parameters used in AROME microphysics 
+
+!**   Interface.
+!     ----------
+!        *CALL* *INI_MICRO (KULOUT,KSTEP,KSPLITR)
+
+!        Explicit arguments :
+!        --------------------
+!        KULOUT : Logical unit for the output
+!        PTSTEP  : Time step
+!        KSPLITR : Number of small time step interation for rain sedimentation 
+!        LDWARM : value assigned to LWARM_LIMA       
+
+!        Implicit arguments :
+!        --------------------
+!        
+
+!     Method.
+!     -------
+!        See documentation
+
+!     Externals.
+!     ----------
+
+!     Reference.
+!     ----------
+!        Documentation AROME 
+
+!     Author.
+!     -------
+!        B. Vie 
+
+!     Modifications.
+!     --------------
+!        Original : 17-10-09
+!     ------------------------------------------------------------------
+
+USE MODD_NSV
+USE MODD_LIMA_PRECIP_SCAVENGING_n
+USE MODD_PARAM_LIMA_COLD
+USE MODD_PARAM_LIMA
+USE MODD_PARAM_LIMA_MIXED
+USE MODD_PARAM_LIMA_WARM
+ 
+USE MODI_INI_LIMA
+USE MODI_INIT_AEROSOL_PROPERTIES
+
+USE MODD_LUNIT, ONLY : ILUOUT
+
+IMPLICIT NONE
+! -----------------------------------------------------------------------
+!     DUMMY INTEGER SCALARS
+INTEGER, INTENT (IN) :: KULOUT
+INTEGER, INTENT (IN) :: KULNAM
+REAL, INTENT (IN) :: PTSTEP
+LOGICAL, INTENT (IN) :: LDWARM
+CHARACTER(4), INTENT (IN) :: CMICRO 
+CHARACTER(4), INTENT (IN) :: CCSEDIM
+INTEGER, INTENT (OUT) :: KSPLITR
+INTEGER, INTENT (OUT) :: KSPLITG
+LOGICAL, INTENT (IN) :: LDCRIAUTI
+REAL, INTENT (IN) :: PCRIAUTI
+REAL, INTENT (IN) :: PT0CRIAUTI
+REAL, INTENT (IN) :: PCRIAUTC
+!-----------------------------------------------------------------------
+!    LOCAL VARIABLES
+REAL :: ZCRI0, ZTCRI0   
+INTEGER :: ISV 
+REAL(KIND=JPRB) :: ZHOOK_HANDLE
+! -----------------------------------------------------------------------
+!
+#include "namlima.nam.h"
+#include "posnam.intfb.h"
+!
+! -----------------------------------------------------------------------
+
+ILUOUT = KULOUT
+
+
+! -----------------------------------------------------------------------
+! lecture Valeurs par défaut pour les paramètres de la namelist LIMA
+!
+LPTSPLIT           = .FALSE.
+LCOLD_LIMA              = .TRUE.
+LNUCL_LIMA              = .TRUE.
+LSEDI_LIMA              = .FALSE.
+LSNOW_LIMA              = .TRUE.
+LHAIL_LIMA              = .FALSE.
+LHHONI_LIMA             = .FALSE.
+LMEYERS_LIMA            = .FALSE.
+NMOD_IFN           = 1
+XIFN_CONC(1)       = 1000
+LIFN_HOM           = .TRUE.
+CIFN_SPECIES       = 'PHILLIPS'
+CINT_MIXING        = ''
+NMOD_IMM           = 0
+NIND_SPECIE        = 1
+CPRISTINE_ICE_LIMA = 'PLAT'
+CHEVRIMED_ICE_LIMA = 'GRAU'
+XALPHAI            = 0.
+XNUI               = 0.
+XALPHAS            = 0.
+XNUS               = 0.
+XALPHAG            = 0.
+XNUG               = 0.
+XFACTNUC_DEP       = 1.
+XFACTNUC_CON       = 1.
+NPHILLIPS          = 8
+!
+LWARM_LIMA              = .TRUE.
+LACTI_LIMA              = .TRUE.
+LRAIN_LIMA              = .TRUE.
+LSEDC_LIMA              = .FALSE.
+LACTIT_LIMA             = .FALSE.
+NMOD_CCN           = 1
+XCCN_CONC(1)       = 350.
+LCCN_HOM           = .TRUE.
+CCCN_MODES         = ''
+HINI_CCN           = 'XXX'
+HTYPE_CCN          = 'X'
+XALPHAC            = 3.
+XNUC               = 1.
+XALPHAR            = 1.
+XNUR               = 2.
+XFSOLUB_CCN        = 1.
+XACTEMP_CCN        = 280.
+XAERDIFF           = 0.
+XAERHEIGHT         = 2000.
+LSCAV              = .FALSE.
+LAERO_MASS         = .FALSE.
+! -----------------------------------------------------------------------
+! lecture de la namelist LIMA
+  CALL POSNAM(KULNAM,'NAMLIMA')
+  READ(KULNAM,NAMLIMA)
+! -----------------------------------------------------------------------
+! initialisation des NSV
+  ISV = 1
+
+  NSV_LIMA_BEG = ISV
+  IF (LWARM_LIMA) THEN
+! Nc
+     NSV_LIMA_NC = ISV
+     ISV = ISV+1
+! Nr
+     IF (LRAIN_LIMA) THEN
+        NSV_LIMA_NR = ISV
+        ISV = ISV+1
+     END IF
+  END IF ! LWARM_LIMA
+! CCN
+  IF (NMOD_CCN .GT. 0) THEN
+     NSV_LIMA_CCN_FREE = ISV
+     ISV = ISV + NMOD_CCN
+     NSV_LIMA_CCN_ACTI = ISV
+     ISV = ISV + NMOD_CCN
+  END IF
+! Scavenging
+  IF (LSCAV .AND. LAERO_MASS) THEN
+     NSV_LIMA_SCAVMASS = ISV
+     ISV = ISV+1
+  END IF ! LSCAV
+! 
+  IF (LCOLD_LIMA) THEN
+! Ni
+     NSV_LIMA_NI = ISV
+     ISV = ISV+1
+  END IF ! LCOLD_LIMA
+! IFN
+  IF (NMOD_IFN .GT. 0) THEN
+     NSV_LIMA_IFN_FREE = ISV
+     ISV = ISV + NMOD_IFN
+     NSV_LIMA_IFN_NUCL = ISV
+     ISV = ISV + NMOD_IFN
+  END IF
+! IMM
+  IF (NMOD_IMM .GT. 0) THEN
+     NSV_LIMA_IMM_NUCL = ISV
+     ISV = ISV + MAX(1,NMOD_IMM)
+  END IF
+! Homogeneous freezing of CCN
+  IF (LCOLD_LIMA .AND. LHHONI_LIMA) THEN
+     NSV_LIMA_HOM_HAZE = ISV
+     ISV = ISV + 1
+  END IF
+! End and total variables
+  ISV = ISV - 1
+  NSV_LIMA_END = ISV
+  NSV_LIMA = NSV_LIMA_END - NSV_LIMA_BEG + 1
+
+NSV=NSV_LIMA
+
+! -----------------------------------------------------------------------
+! initialisation de LIMA
+CALL INIT_AEROSOL_PROPERTIES
+! PDZMIN = 20 comme dans l'appel à INI_RAIN_ICE !
+CALL INI_LIMA(KULOUT, PTSTEP, 20., KSPLITR, KSPLITG)
+
+WRITE(UNIT=KULOUT,FMT='(''LIMA SCHEME TUNING  VARIABLES :'')')
+WRITE(UNIT=KULOUT,FMT='('' LCOLD_LIMA = '',L5)') LCOLD_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LNUCL_LIMA = '',L5)') LNUCL_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LSEDI_LIMA = '',L5)') LSEDI_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LSNOW_LIMA = '',L5)') LSNOW_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LHAIL_LIMA = '',L5)') LHAIL_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LHHONI_LIMA = '',L5)') LHHONI_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LMEYERS_LIMA = '',L5)') LMEYERS_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LIFN_HOM = '',L5)') LIFN_HOM
+WRITE(UNIT=KULOUT,FMT='('' LWARM_LIMA = '',L5)') LWARM_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LACTI_LIMA = '',L5)') LACTI_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LRAIN_LIMA = '',L5)') LRAIN_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LSEDC_LIMA = '',L5)') LSEDC_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LACTIT_LIMA = '',L5)') LACTIT_LIMA
+WRITE(UNIT=KULOUT,FMT='('' LCCN_HOM = '',L5)') LCCN_HOM
+WRITE(UNIT=KULOUT,FMT='('' LSCAV = '',L5)') LSCAV
+WRITE(UNIT=KULOUT,FMT='('' LAERO_MASS = '',L5)') LAERO_MASS
+WRITE(UNIT=KULOUT,FMT='('' CIFN_SPECIES = '',A8,''CINT_MIXING = '',A8)')&
+&CIFN_SPECIES,CINT_MIXING
+WRITE(UNIT=KULOUT,FMT='('' CPRISTINE_ICE_LIMA = '',A4,''CHEVRIMED_ICE_LIMA = '',A4)')&
+&CPRISTINE_ICE_LIMA, CHEVRIMED_ICE_LIMA
+WRITE(UNIT=KULOUT,FMT='('' CCCN_MODES = '',A8)')CCCN_MODES
+WRITE(UNIT=KULOUT,FMT='('' HINI_CCN = '',A3,''HTYPE_CCN = '',A1)')&
+&HINI_CCN,HTYPE_CCN
+WRITE(UNIT=KULOUT,FMT='('' NMOD_IFN = '',I5)') NMOD_IFN
+WRITE(UNIT=KULOUT,FMT='('' NMOD_IMM = '',I5)') NMOD_IMM
+WRITE(UNIT=KULOUT,FMT='('' NIND_SPECIE = '',I5)') NIND_SPECIE
+WRITE(UNIT=KULOUT,FMT='('' NPHILLIPS = '',I5)') NPHILLIPS
+WRITE(UNIT=KULOUT,FMT='('' NMOD_CCN = '',I5)') NMOD_CCN
+WRITE(UNIT=KULOUT,FMT='('' XIFN_CONC = '',f6.2)') XIFN_CONC
+WRITE(UNIT=KULOUT,FMT='('' XALPHAI = '',f6.2)') XALPHAI
+WRITE(UNIT=KULOUT,FMT='('' XNUI = '',f6.2)') XNUI
+WRITE(UNIT=KULOUT,FMT='('' XALPHAS = '',f6.2)') XALPHAS
+WRITE(UNIT=KULOUT,FMT='('' XNUS = '',f6.2)') XNUS
+WRITE(UNIT=KULOUT,FMT='('' XALPHAG = '',f6.2)') XALPHAG
+WRITE(UNIT=KULOUT,FMT='('' XNUG = '',f6.2)') XNUG
+WRITE(UNIT=KULOUT,FMT='('' XCCN_CONC = '',f6.2)') XCCN_CONC
+WRITE(UNIT=KULOUT,FMT='('' XALPHAC = '',f6.2)') XALPHAC
+WRITE(UNIT=KULOUT,FMT='('' XNUC = '',f6.2)') XNUC
+WRITE(UNIT=KULOUT,FMT='('' XALPHAR = '',f6.2)') XALPHAR
+WRITE(UNIT=KULOUT,FMT='('' XNUR = '',f6.2)') XNUR
+WRITE(UNIT=KULOUT,FMT='('' XFSOLUB_CCN = '',f6.2)') XFSOLUB_CCN
+WRITE(UNIT=KULOUT,FMT='('' XACTEMP_CCN = '',f6.2)') XACTEMP_CCN
+WRITE(UNIT=KULOUT,FMT='('' XAERDIFF = '',f6.2)') XAERDIFF
+WRITE(UNIT=KULOUT,FMT='('' XAERHEIGHT = '',f6.2)') XAERHEIGHT
+
+
+
+RETURN
+END SUBROUTINE AROINI_MICRO_LIMA
diff --git a/src/arome/ext/aroini_micro_lima.h b/src/arome/ext/aroini_micro_lima.h
new file mode 100644
index 0000000000000000000000000000000000000000..66a01c117f5fe8f3c5662f152bfd61b662faa618
--- /dev/null
+++ b/src/arome/ext/aroini_micro_lima.h
@@ -0,0 +1,18 @@
+INTERFACE
+SUBROUTINE AROINI_MICRO_LIMA(KULOUT,KULNAM,PTSTEP,LDWARM,CMICRO,KSPLITR,KSPLITG,CCSEDIM,LDCRIAUTI,&
+          PCRIAUTI,PT0CRIAUTI,PCRIAUTC)
+USE PARKIND1  ,ONLY : JPIM     ,JPRB
+INTEGER(KIND=JPIM), INTENT (IN) :: KULOUT
+INTEGER(KIND=JPIM), INTENT (IN) :: KULNAM
+REAL(KIND=JPRB), INTENT (IN) :: PTSTEP
+LOGICAL, INTENT (IN) :: LDWARM
+CHARACTER (LEN=4), INTENT (IN) :: CMICRO
+CHARACTER(4), INTENT (IN) :: CCSEDIM
+INTEGER(KIND=JPIM), INTENT (OUT) :: KSPLITR
+INTEGER(KIND=JPIM), INTENT (OUT) :: KSPLITG
+LOGICAL, INTENT (IN) :: LDCRIAUTI
+REAL(KIND=JPRB), INTENT (IN) :: PCRIAUTI
+REAL(KIND=JPRB), INTENT (IN) :: PT0CRIAUTI
+REAL(KIND=JPRB), INTENT (IN) :: PCRIAUTC
+END SUBROUTINE AROINI_MICRO_LIMA
+END INTERFACE
diff --git a/src/arome/gmkpack_ignored_files b/src/arome/gmkpack_ignored_files
index 95e773e987fa70619196587c5494177ceb27da86..2e00e3c0612ce24c313e7b1b3201b4ec5509f190 100644
--- a/src/arome/gmkpack_ignored_files
+++ b/src/arome/gmkpack_ignored_files
@@ -204,3 +204,17 @@ mpa/micro/interface/aro_subudget.h
 mpa/micro/interface/aroend_budget.h
 mpa/micro/module/modd_refaro.F90
 mpa/micro/externals/invert_vlev.F90
+phyex/micro/lima_warm.F90
+phyex/micro/lima_warm_sedimentation.F90
+phyex/micro/lima_warm_nucl.F90
+phyex/micro/lima_warm_coal.F90
+phyex/micro/lima_warm_evap.F90
+phyex/micro/lima_cold.F90
+phyex/micro/lima_cold_sedimentation.F90
+phyex/micro/lima_cold_hom_nucl.F90
+phyex/micro/lima_cold_slow_processes.F90
+phyex/micro/lima_mixed.F90
+phyex/micro/lima_mixed_slow_processes.F90
+phyex/micro/lima_mixed_fast_processes.F90
+phyex/micro/lima_adjust.F90
+phyex/micro/lima_phillips.F90
diff --git a/src/arome/micro/ini_lima.F90 b/src/arome/micro/ini_lima.F90
deleted file mode 100644
index e6a94ef38da0ac05e7ebb3c6ec4986457cdd4057..0000000000000000000000000000000000000000
--- a/src/arome/micro/ini_lima.F90
+++ /dev/null
@@ -1,156 +0,0 @@
-!      ####################
-       MODULE MODI_INI_LIMA
-!      ####################
-!
-INTERFACE
-      SUBROUTINE INI_LIMA (KULOUT, PTSTEP, PDZMIN, KSPLITR, KSPLITG)
-!
-INTEGER,                 INTENT(IN) :: KULOUT    ! output logical unit number
-INTEGER,                 INTENT(OUT):: KSPLITR   ! Number of small time step
-                                                 ! integration for  rain
-                                                 ! sedimendation
-INTEGER,                 INTENT(OUT):: KSPLITG   ! Number of small time step
-                                                 ! integration for graupel
-                                                 ! sedimendation
-REAL,                    INTENT(IN) :: PTSTEP    ! Effective Time step 
-REAL,                    INTENT(IN) :: PDZMIN    ! minimun vertical mesh size
-!
-END SUBROUTINE INI_LIMA
-!
-END INTERFACE
-!
-END MODULE MODI_INI_LIMA
-!     ######################################################
-      SUBROUTINE INI_LIMA (KULOUT, PTSTEP, PDZMIN, KSPLITR, KSPLITG)
-!     ######################################################
-!
-!!    PURPOSE
-!!    -------
-!!      The purpose of this routine is to initialize the constants used in the 
-!!    microphysical scheme LIMA. 
-!!
-!!    AUTHOR
-!!    ------
-!!      J.-M. Cohard     * Laboratoire d'Aerologie*
-!!      J.-P. Pinty      * Laboratoire d'Aerologie*
-!!      S.    Berthet    * Laboratoire d'Aerologie*
-!!      B.    Vié        * Laboratoire d'Aerologie*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original             ??/??/13 
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-USE MODD_CST
-
-USE MODD_PARAM_LIMA
-USE MODD_PARAMETERS
-USE MODD_LUNIT
-!
-IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-!
-INTEGER,                 INTENT(IN) :: KULOUT    ! output logical unit number
-INTEGER,                 INTENT(OUT):: KSPLITR   ! Number of small time step
-                                                 ! integration for  rain
-                                                 ! sedimendation
-INTEGER,                 INTENT(OUT):: KSPLITG   ! Number of small time step
-                                                 ! integration for graupel or hail
-                                                 ! sedimendation
-REAL,                    INTENT(IN) :: PTSTEP    ! Effective Time step 
-REAL,                    INTENT(IN) :: PDZMIN    ! minimun vertical mesh size
-!
-!*       0.2   Declarations of local variables :
-!
-REAL     :: ZT      ! Work variable
-REAL     :: ZVTRMAX
-!
-INTEGER  :: ILUOUT0 ! Logical unit number for output-listing
-INTEGER  :: IRESP   ! Return code of FM-routines
-!  
-!-------------------------------------------------------------------------------
-!
-!
-!*       1.     INIT OUTPUT LISTING, COMPUTE KSPLITR AND KSPLITG
-!   	        ------------------------------------------------
-!
-!
-! Init output listing
-CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP)
-!
-!
-! KSPLITR
-ZVTRMAX = 30.         ! Maximum rain drop fall speed
-!
-KSPLITR = 1
-SPLITR : DO
-   ZT = PTSTEP / FLOAT(KSPLITR)
-   IF ( ZT * ZVTRMAX / PDZMIN < 1.0) EXIT SPLITR
-   KSPLITR = KSPLITR + 1
-END DO SPLITR
-!
-!
-! KSPLITG
-ZVTRMAX = 30.                          
-IF( LHAIL_LIMA ) THEN
-   ZVTRMAX = 60. ! Hail case 
-END IF
-!
-KSPLITG = 1
-SPLITG : DO
-   ZT = 2.* PTSTEP / FLOAT(KSPLITG)
-   IF ( ZT * ZVTRMAX / PDZMIN .LT. 1.) EXIT SPLITG
-   KSPLITG = KSPLITG + 1
-END DO SPLITG
-!
-!
-!
-IF (ALLOCATED(XRTMIN)) RETURN    ! In case of nesting microphysics, constants of
-                                 ! MODD_RAIN_C2R2_PARAM are computed only once.
-!
-!
-! Set bounds for mixing ratios and concentrations
-ALLOCATE( XRTMIN(7) )
-XRTMIN(1) = 1.0E-20   ! rv
-XRTMIN(2) = 1.0E-20   ! rc
-!XRTMIN(3) = 1.0E-20   ! rr
-XRTMIN(3) = 1.0E-17   ! rr
-XRTMIN(4) = 1.0E-20   ! ri
-XRTMIN(5) = 1.0E-15   ! rs
-XRTMIN(6) = 1.0E-15   ! rg
-XRTMIN(7) = 1.0E-15   ! rh
-ALLOCATE( XCTMIN(7) )
-XCTMIN(1) = 1.0       ! Not used
-XCTMIN(2) = 1.0E+4    ! Nc
-!XCTMIN(3) = 1.0E+1    ! Nr
-XCTMIN(3) = 1.0E-3    ! Nr
-XCTMIN(4) = 1.0E-3    ! Ni
-XCTMIN(5) = 1.0E-3    ! Not used
-XCTMIN(6) = 1.0E-3    ! Not used
-XCTMIN(7) = 1.0E-3    ! Not used
-!
-!
-! Air density fall speed correction
-XCEXVT = 0.4
-!
-!------------------------------------------------------------------------------
-!
-!
-!
-!*       2.     DEFINE SPECIES CHARACTERISTICS AND PROCESSES CONSTANTS
-!   	        ------------------------------------------------------
-!
-!
-CALL INI_LIMA_WARM(KULOUT, PTSTEP, PDZMIN)
-!
-CALL INI_LIMA_COLD_MIXED(KULOUT, PTSTEP, PDZMIN)
-!
-!------------------------------------------------------------------------------
-!
-END SUBROUTINE INI_LIMA
diff --git a/src/arome/micro/ini_lima_cold_mixed.F90 b/src/arome/micro/ini_lima_cold_mixed.F90
deleted file mode 100644
index ba7e13302bb01192a51c354235b9e9d6e45648d4..0000000000000000000000000000000000000000
--- a/src/arome/micro/ini_lima_cold_mixed.F90
+++ /dev/null
@@ -1,1309 +0,0 @@
-!      ###############################
-       MODULE MODI_INI_LIMA_COLD_MIXED
-!      ###############################
-!
-INTERFACE
-      SUBROUTINE INI_LIMA_COLD_MIXED (KULOUT, PTSTEP, PDZMIN)
-!
-INTEGER,                 INTENT(IN) :: KULOUT    ! output logical unit number
-REAL,                    INTENT(IN) :: PTSTEP    ! Effective Time step 
-REAL,                    INTENT(IN) :: PDZMIN    ! minimun vertical mesh size
-!
-END SUBROUTINE INI_LIMA_COLD_MIXED
-!
-END INTERFACE
-!
-END MODULE MODI_INI_LIMA_COLD_MIXED
-!     ###############################################
-      SUBROUTINE INI_LIMA_COLD_MIXED (KULOUT, PTSTEP, PDZMIN)
-!     ###############################################
-!
-!!    PURPOSE
-!!    -------
-!!      The purpose of this routine is to initialize the constants used in the 
-!!    microphysical scheme LIMA for the cold and mixed phase variables
-!!    and processes. 
-!!
-!!    AUTHOR
-!!    ------
-!!      J.-M. Cohard     * Laboratoire d'Aerologie*
-!!      J.-P. Pinty      * Laboratoire d'Aerologie*
-!!      S.    Berthet    * Laboratoire d'Aerologie*
-!!      B.    Vié        * Laboratoire d'Aerologie*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original             ??/??/13 
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-USE MODD_CST
-
-USE MODD_PARAM_LIMA
-USE MODD_PARAM_LIMA_WARM
-USE MODD_PARAM_LIMA_COLD
-USE MODD_PARAM_LIMA_MIXED
-USE MODD_PARAMETERS
-USE MODD_LUNIT
-!
-USE MODI_LIMA_FUNCTIONS
-USE MODI_GAMMA
-USE MODI_GAMMA_INC
-USE MODE_RRCOLSS, ONLY: RRCOLSS
-USE MODE_RZCOLX, ONLY: RZCOLX
-USE MODE_RSCOLRG, ONLY: RSCOLRG
-USE MODE_READ_XKER_RACCS, ONLY: READ_XKER_RACCS
-USE MODE_READ_XKER_SDRYG, ONLY: READ_XKER_SDRYG
-USE MODE_READ_XKER_RDRYG, ONLY: READ_XKER_RDRYG
-USE MODE_READ_XKER_SWETH, ONLY: READ_XKER_SWETH
-USE MODE_READ_XKER_GWETH, ONLY: READ_XKER_GWETH
-!
-IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-INTEGER,                 INTENT(IN) :: KULOUT    ! output logical unit number
-REAL,                    INTENT(IN) :: PTSTEP    ! Effective Time step 
-REAL,                    INTENT(IN) :: PDZMIN    ! minimun vertical mesh size
-!
-!*       0.2   Declarations of local variables :
-!
-INTEGER :: IKB                ! Coordinates of the first  physical 
-                              ! points along z
-INTEGER :: J1,J2              ! Internal loop indexes
-!
-REAL, DIMENSION(8)  :: ZGAMI  ! parameters involving various moments
-REAL, DIMENSION(2)  :: ZGAMS  ! of the generalized gamma law
-!
-REAL :: ZT                    ! Work variable
-REAL :: ZVTRMAX               ! Raindrop maximal fall velocity
-REAL :: ZRHO00                ! Surface reference air density
-REAL :: ZRATE                 ! Geometrical growth of Lbda in the tabulated
-                              ! functions and kernels
-REAL :: ZBOUND                ! XDCSLIM*Lbda_s: upper bound for the partial
-                              ! integration of the riming rate of the aggregates
-REAL :: ZEGS, ZEGR, ZEHS, ZEHG! Bulk collection efficiencies
-!
-INTEGER :: IND                ! Number of interval to integrate the kernels
-REAL :: ZESR                  ! Mean efficiency of rain-aggregate collection
-REAL :: ZFDINFTY              ! Factor used to define the "infinite" diameter
-!
-!
-LOGICAL  :: GFLAG   ! Logical flag for printing the constatnts on the output
-                    ! listing
-REAL     :: ZCONC_MAX ! Maximal concentration for snow
-REAL     :: ZFACT_NUCL! Amplification factor for the minimal ice concentration
-!  
-INTEGER  :: KND
-INTEGER  :: KACCLBDAS,KACCLBDAR,KDRYLBDAG,KDRYLBDAS,KDRYLBDAR
-REAL     :: PALPHAR,PALPHAS,PALPHAG,PALPHAH
-REAL     :: PNUR,PNUS,PNUG,PNUH
-REAL     :: PBR,PBS,PBG,PBH
-REAL     :: PCR,PCS,PCG,PCH
-REAL     :: PDR,PDS,PFVELOS,PDG,PDH
-REAL     :: PESR,PEGS,PEGR,PEHS,PEHG
-REAL     :: PFDINFTY
-REAL     :: PACCLBDAS_MAX,PACCLBDAR_MAX,PACCLBDAS_MIN,PACCLBDAR_MIN
-REAL     :: PDRYLBDAG_MAX,PDRYLBDAS_MAX,PDRYLBDAG_MIN,PDRYLBDAS_MIN
-REAL     :: PDRYLBDAR_MAX,PDRYLBDAR_MIN
-REAL     :: PWETLBDAS_MAX,PWETLBDAG_MAX,PWETLBDAS_MIN,PWETLBDAG_MIN
-REAL     :: PWETLBDAH_MAX,PWETLBDAH_MIN
-INTEGER  :: KWETLBDAS,KWETLBDAG,KWETLBDAH
-!
-REAL     :: ZFAC_ZRNIC ! Zrnic factor used to decrease Long Kernels
-!  
-!-------------------------------------------------------------------------------
-!
-!
-!*       1.     CHARACTERISTICS OF THE SPECIES
-!   	        ------------------------------
-!
-!
-!*       1.2    Ice crystal characteristics
-!
-SELECT CASE (CPRISTINE_ICE_LIMA)
-  CASE('PLAT')
-    XAI = 0.82      ! Plates
-    XBI = 2.5       ! Plates 
-    XC_I = 747.     ! Plates
-    XDI = 1.0       ! Plates
-    XC1I = 1./XPI   ! Plates
-  CASE('COLU')
-    XAI = 2.14E-3   ! Columns
-    XBI = 1.7       ! Columns
-    XC_I = 1.96E5   ! Columns
-    XDI = 1.585     ! Columns
-    XC1I = 0.8      ! Columns 
-  CASE('BURO')
-    XAI = 44.0      ! Bullet rosettes
-    XBI = 3.0       ! Bullet rosettes
-    XC_I = 4.E5     ! Bullet rosettes
-    XDI = 1.663     ! Bullet rosettes
-    XC1I = 0.5      ! Bullet rosettes
-END SELECT
-!
-!  Note that XCCI=N_i (a locally predicted value) and XCXI=0.0, implicitly
-!
-XF0I = 1.00
-! Correction BVIE XF2I from Pruppacher 1997 eq 13-88
-!XF2I = 0.103
-XF2I = 0.14
-XF0IS = 0.86
-XF1IS = 0.28
-!
-!*       1.3    Snowflakes/aggregates characteristics
-!
-XAS = 0.02
-XBS = 1.9
-XCS = 5.
-XDS = 0.27
-!
-XCCS = 5.0
-XCXS = 1.0
-!
-XF0S = 0.86
-XF1S = 0.28
-!
-XC1S = 1./XPI
-!
-!*       1.4    Graupel characteristics
-!
-XAG = 19.6  ! Lump graupel case
-XBG = 2.8   ! Lump graupel case
-XCG = 122.  ! Lump graupel case
-XDG = 0.66  ! Lump graupel case
-!
-XCCG = 5.E5
-XCXG = -0.5
-! XCCG = 4.E4 ! Test of Ziegler (1988)
-! XCXG = -1.0 ! Test of Ziegler (1988)
-!
-XF0G = 0.86
-XF1G = 0.28
-!
-XC1G = 1./2.
-!
-!*       2.5    Hailstone characteristics
-!
-!
-XAH = 470.
-XBH = 3.0
-XCH = 201.
-XDH = 0.64
-!
-!XCCH = 5.E-4
-!XCXH = 2.0
-!!!!!!!!!!!!
-   XCCH = 4.E4 ! Test of Ziegler (1988)
-   XCXH = -1.0 ! Test of Ziegler (1988)
-!!!    XCCH = 5.E5 ! Graupel_like
-!!!    XCXH = -0.5 ! Graupel_like
-!!!!!!!!!!!!
-!
-XF0H = 0.86
-XF1H = 0.28
-!
-XC1H = 1./2.
-!  
-!-------------------------------------------------------------------------------
-!
-!
-!*       2.     DIMENSIONAL DISTRIBUTIONS OF THE SPECIES
-!   	        ----------------------------------------
-!
-!
-!*       2.1    Ice, snow, graupel and hail distribution
-!
-!
-XALPHAI = 3.0  ! Gamma law for the ice crystal volume
-XNUI    = 3.0  ! Gamma law with little dispersion
-!
-XALPHAS = 1.0  ! Exponential law
-XNUS    = 1.0  ! Exponential law
-!
-XALPHAG = 1.0  ! Exponential law
-XNUG    = 1.0  ! Exponential law
-!
-XALPHAH = 1.0  ! Gamma law
-XNUH    = 8.0  ! Gamma law with little dispersion
-!
-!*       2.2    Constants for shape parameter
-!
-XLBEXI = 1.0/XBI
-XLBI   = XAI*MOMG(XALPHAI,XNUI,XBI)
-!
-XLBEXS = 1.0/(XCXS-XBS)
-XLBS   = ( XAS*XCCS*MOMG(XALPHAS,XNUS,XBS) )**(-XLBEXS)
-!
-XLBEXG = 1.0/(XCXG-XBG)
-XLBG   = ( XAG*XCCG*MOMG(XALPHAG,XNUG,XBG))**(-XLBEXG)
-!
-XLBEXH = 1.0/(XCXH-XBH)
-XLBH   = ( XAH*XCCH*MOMG(XALPHAH,XNUH,XBH) )**(-XLBEXH)
-!
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=KULOUT,FMT='("      Shape Parameters")')
-  WRITE(UNIT=KULOUT,FMT='(" XLBEXI =",E13.6," XLBI =",E13.6)') XLBEXI,XLBI
-  WRITE(UNIT=KULOUT,FMT='(" XLBEXS =",E13.6," XLBS =",E13.6)') XLBEXS,XLBS
-  WRITE(UNIT=KULOUT,FMT='(" XLBEXG =",E13.6," XLBG =",E13.6)') XLBEXG,XLBG
-  WRITE(UNIT=KULOUT,FMT='(" XLBEXH =",E13.6," XLBH =",E13.6)') XLBEXH,XLBH
-END IF
-!
-XLBDAS_MAX = 100000.0
-XLBDAG_MAX = 100000.0
-!
-ZCONC_MAX  = 1.E6 ! Maximal concentration for falling particules set to 1 per cc
-XLBDAS_MAX = ( ZCONC_MAX/XCCS )**(1./XCXS) 
-!  
-!-------------------------------------------------------------------------------
-!
-!
-!*       3.     CONSTANTS FOR THE SEDIMENTATION
-!   	        -------------------------------
-!
-!
-!*       3.1    Exponent of the fall-speed air density correction
-!
-IKB = 1 + JPVEXT
-! Correction
-! ZRHO00 = XP00/(XRD*XTHVREFZ(IKB))
-ZRHO00 = 1.2041 ! at P=1013.25hPa and T=20°C
-!
-!*       3.2    Constants for sedimentation
-!
-!! XEXRSEDI = (XBI+XDI)/XBI
-!! XEXCSEDI = 1.0-XEXRSEDI
-!! XFSEDI   = (4.*XPI*900.)**(-XEXCSEDI) *                         &
-!!            XC_I*XAI*MOMG(XALPHAI,XNUI,XBI+XDI) *                &
-!!            ((XAI*MOMG(XALPHAI,XNUI,XBI)))**(-XEXRSEDI) *        &
-!!            (ZRHO00)**XCEXVT
-!! !
-!! !  Computations made for Columns
-!! !
-!! XEXRSEDI = 1.9324
-!! XEXCSEDI =-0.9324
-!! XFSEDI   = 3.89745E11*MOMG(XALPHAI,XNUI,3.285)*                          &
-!!                       MOMG(XALPHAI,XNUI,1.7)**(-XEXRSEDI)*(ZRHO00)**XCEXVT
-!! XEXCSEDI =-0.9324*3.0
-!! WRITE (KULOUT,FMT=*)' PRISTINE ICE SEDIMENTATION for columns XFSEDI=',XFSEDI
-!
-!
-XFSEDRI  = XC_I*GAMMA_X0D(XNUI+(XDI+XBI)/XALPHAI)/GAMMA_X0D(XNUI+XBI/XALPHAI)*     &
-            (ZRHO00)**XCEXVT
-XFSEDCI  = XC_I*GAMMA_X0D(XNUI+XDI/XALPHAI)/GAMMA_X0D(XNUI)*     &
-            (ZRHO00)**XCEXVT
-!
-XEXSEDS = (XBS+XDS-XCXS)/(XBS-XCXS)
-XFSEDS  = XCS*XAS*XCCS*MOMG(XALPHAS,XNUS,XBS+XDS)*                         &
-            (XAS*XCCS*MOMG(XALPHAS,XNUS,XBS))**(-XEXSEDS)*(ZRHO00)**XCEXVT
-!
-XEXSEDG = (XBG+XDG-XCXG)/(XBG-XCXG)
-XFSEDG  = XCG*XAG*XCCG*MOMG(XALPHAG,XNUG,XBG+XDG)*                         &
-            (XAG*XCCG*MOMG(XALPHAG,XNUG,XBG))**(-XEXSEDG)*(ZRHO00)**XCEXVT
-!
-XEXSEDH = (XBH+XDH-XCXH)/(XBH-XCXH)
-XFSEDH  = XCH*XAH*XCCH*MOMG(XALPHAH,XNUH,XBH+XDH)*                         &
-            (XAH*XCCH*MOMG(XALPHAH,XNUH,XBH))**(-XEXSEDH)*(ZRHO00)**XCEXVT
-!  
-!-------------------------------------------------------------------------------
-!
-!
-!*       4.     CONSTANTS FOR HETEROGENEOUS NUCLEATION
-!   	        --------------------------------------
-!
-!
-!                 ***************
-!*          4.1   LIMA_NUCLEATION
-!                 ***************   
-!*               4.1.1  Constants for the computation of the number concentration
-!                       of active IN 
-!
-XRHO_CFDC  = 0.76 
-!
-XGAMMA     = 2.
-!
-IF (NPHILLIPS == 13) THEN
-   XAREA1(1)  = 2.0E-6    !DM1
-   XAREA1(2)  = XAREA1(1) !DM2
-   XAREA1(3)  = 1.0E-7    !BC
-   XAREA1(4)  = 8.9E-7    !BIO
-ELSE IF (NPHILLIPS == 8) THEN
-   XAREA1(1)  = 2.0E-6    !DM1
-   XAREA1(2)  = XAREA1(1) !DM2
-   XAREA1(3)  = 2.7E-7    !BC
-   XAREA1(4)  = 9.1E-7    !BIO
-ELSE
-   print *, "NPHILLIPS n'est pas égal à 8 ou 13" 
-   STOP
-END IF
-!
-!*               4.1.2  Constants for the computation of H_X (the fraction-redu-
-!                       cing IN activity at low S_i and warm T) for X={DM1,DM2,BC,BIO} 
-!                       
-!
-IF (NPHILLIPS == 13) THEN
-   XDT0(1)   =   5. +273.15 !DM1
-   XDT0(2)   =   5. +273.15 !DM2
-   XDT0(3)   =  10. +273.15 !BC
-   XDT0(4)   =   5. +273.15 !BIOO
-!
-   XT0(1) = -40. +273.15 !DM1
-   XT0(2) = XT0(1)       !DM2
-   XT0(3) = -50. +273.15 !BC
-   XT0(4) = -20. +273.15 !BIO
-!
-   XSW0   = 0.97
-!
-   XDSI0(1)  = 0.1 !DM1
-   XDSI0(2)  = 0.1 !DM2
-   XDSI0(3)  = 0.1 !BC
-   XDSI0(4)  = 0.2 !BIO
-!
-   XH(1) = 0.15          !DM1
-   XH(2) = 0.15          !DM2
-   XH(3) = 0.            !BC
-   XH(4) = 0.            !O
-!
-   XTX1(1) = -30. +273.15 !DM1
-   XTX1(2) = XTX1(1)      !DM2
-   XTX1(3) = -25. +273.15 !BC
-   XTX1(4) =  -5. +273.15 !BIO
-!
-   XTX2(1) = -10. +273.15 !DM1
-   XTX2(2) = XTX2(1)      !DM2
-   XTX2(3) = -15. +273.15 !BC
-   XTX2(4) =  -2. +273.15 !BIO
-ELSE IF (NPHILLIPS == 8) THEN
-   XDT0(1)   =   5. +273.15 !DM1
-   XDT0(2)   =   5. +273.15 !DM2
-   XDT0(3)   =   5. +273.15 !BC
-   XDT0(4)   =   5. +273.15 !O
-!
-   XT0(1) = -40. +273.15 !DM1
-   XT0(2) = XT0(1)       !DM2
-   XT0(3) = -50. +273.15 !BC
-   XT0(4) = -50. +273.15 !BIO
-!
-   XSW0   = 0.97
-!
-   XDSI0(1)  = 0.1 !DM1
-   XDSI0(2)  = 0.1 !DM2
-   XDSI0(3)  = 0.1 !BC
-   XDSI0(4)  = 0.1 !BIO
-!
-   XH(1) = 0.15          !DM1
-   XH(2) = 0.15          !DM2
-   XH(3) = 0.            !BC
-   XH(4) = 0.            !O
-!
-   XTX1(1) =  -5. +273.15 !DM1
-   XTX1(2) = XTX1(1)      !DM2
-   XTX1(3) =  -5. +273.15 !BC
-   XTX1(4) =  -5. +273.15 !BIO
-!
-   XTX2(1) =  -2. +273.15 !DM1
-   XTX2(2) = XTX2(1)      !DM2
-   XTX2(3) =  -2. +273.15 !BC
-   XTX2(4) =  -2. +273.15 !BIO
-END IF
-!
-!*               4.1.3  Constants for the computation of the Gauss Hermitte 
-!                       quadrature method used for the integration of the total
-!                       crystal number over T>-35°C
-!
-NDIAM = 70
-!
-ALLOCATE(XABSCISS(NDIAM))
-ALLOCATE(XWEIGHT (NDIAM))
-!
-CALL GAUHER(XABSCISS, XWEIGHT, NDIAM)
-!
-!                 ***************** 
-!*          4.2   MEYERS NUCLEATION
-!                 ***************** 
-!
-ZFACT_NUCL =  1.0    ! Plates, Columns and Bullet rosettes
-!
-!*               5.2.1  Constants for nucleation from ice nuclei
-!
-XNUC_DEP  = XFACTNUC_DEP*1000.*ZFACT_NUCL
-XEXSI_DEP = 12.96E-2
-XEX_DEP   = -0.639
-!
-XNUC_CON   = XFACTNUC_CON*1000.*ZFACT_NUCL
-XEXTT_CON  = -0.262
-XEX_CON    = -2.8
-!
-XMNU0 = 6.88E-13
-!
-IF (LMEYERS_LIMA) THEN
-  WRITE(UNIT=KULOUT,FMT='("      Heterogeneous nucleation")')
-  WRITE(UNIT=KULOUT,FMT='(" XNUC_DEP=",E13.6," XEXSI=",E13.6," XEX=",E13.6)') &
-                                                      XNUC_DEP,XEXSI_DEP,XEX_DEP
-  WRITE(UNIT=KULOUT,FMT='(" XNUC_CON=",E13.6," XEXTT=",E13.6," XEX=",E13.6)') &
-                                                      XNUC_CON,XEXTT_CON,XEX_CON
-  WRITE(UNIT=KULOUT,FMT='(" mass of embryo XMNU0=",E13.6)') XMNU0
-END IF
-!  
-!-------------------------------------------------------------------------------
-!
-!
-!*       5.     CONSTANTS FOR THE SLOW COLD PROCESSES
-!   	        -------------------------------------
-!
-!
-!*       5.1.2  Constants for homogeneous nucleation from haze particules
-!
-XRHOI_HONH = 925.0
-XCEXP_DIFVAP_HONH = 1.94
-XCOEF_DIFVAP_HONH = (2.0*XPI)*0.211E-4*XP00/XTT**XCEXP_DIFVAP_HONH
-XCRITSAT1_HONH = 2.583
-XCRITSAT2_HONH = 207.83
-XTMIN_HONH = 180.0
-XTMAX_HONH = 240.0
-XDLNJODT1_HONH = 4.37
-XDLNJODT2_HONH = 0.03
-XC1_HONH = 100.0
-XC2_HONH = 22.6
-XC3_HONH = 0.1
-XRCOEF_HONH = (XPI/6.0)*XRHOI_HONH
-!
-!
-!*       5.1.3  Constants for homogeneous nucleation from cloud droplets
-!
-XTEXP1_HONC = -606.3952*LOG(10.0)
-XTEXP2_HONC =  -52.6611*LOG(10.0)
-XTEXP3_HONC =   -1.7439*LOG(10.0)
-XTEXP4_HONC =   -0.0265*LOG(10.0)
-XTEXP5_HONC = -1.536E-4*LOG(10.0)
-IF (XALPHAC == 3.0) THEN
-  XC_HONC   = XPI/6.0
-  XR_HONC   = XPI/6.0
-ELSE
-  WRITE(UNIT=KULOUT,FMT='("      Homogeneous nucleation")')
-  WRITE(UNIT=KULOUT,FMT='(" XALPHAC=",E13.6," IS NOT 3.0")') XALPHAC
-  WRITE(UNIT=KULOUT,FMT='(" No algorithm yet developped in this case !")')
-  STOP
-END IF
-!
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=KULOUT,FMT='("      Homogeneous nucleation")')
-  WRITE(UNIT=KULOUT,FMT='(" XTEXP1_HONC=",E13.6)') XTEXP1_HONC
-  WRITE(UNIT=KULOUT,FMT='(" XTEXP2_HONC=",E13.6)') XTEXP2_HONC
-  WRITE(UNIT=KULOUT,FMT='(" XTEXP3_HONC=",E13.6)') XTEXP3_HONC
-  WRITE(UNIT=KULOUT,FMT='(" XTEXP4_HONC=",E13.6)') XTEXP4_HONC
-  WRITE(UNIT=KULOUT,FMT='(" XTEXP5_HONC=",E13.6)') XTEXP5_HONC
-  WRITE(UNIT=KULOUT,FMT='("XC_HONC=",E13.6," XR_HONC=",E13.6)') XC_HONC,XR_HONC
-END IF
-!
-!
-!*       5.2    Constants for vapor deposition on ice
-!
-XSCFAC = (0.63**(1./3.))*SQRT((ZRHO00)**XCEXVT) ! One assumes Sc=0.63
-!
-X0DEPI = (4.0*XPI)*XC1I*XF0I*MOMG(XALPHAI,XNUI,1.)
-X2DEPI = (4.0*XPI)*XC1I*XF2I*XC_I*MOMG(XALPHAI,XNUI,XDI+2.0)
-!
-! Harrington parameterization for ice to snow conversion
-!
-XDICNVS_LIM = 125.E-6  ! size in microns
-XLBDAICNVS_LIM = (50.0**(1.0/(XALPHAI)))/XDICNVS_LIM  ! ZLBDAI Limitation
-XC0DEPIS = ((4.0*XPI)/(XAI*XBI))*XC1I*XF0IS*                        &
-           (XALPHAI/GAMMA_X0D(XNUI))*XDICNVS_LIM**(1.0-XBI)
-XC1DEPIS = ((4.0*XPI)/(XAI*XBI))*XC1I*XF1IS*SQRT(XC_I)*             &
-           (XALPHAI/GAMMA_X0D(XNUI))*XDICNVS_LIM**(1.0-XBI+(XDI+1.0)/2.0)
-XR0DEPIS = XC0DEPIS *(XAI*XDICNVS_LIM**XBI)
-XR1DEPIS = XC1DEPIS *(XAI*XDICNVS_LIM**XBI)
-!
-! Harrington parameterization for snow to ice conversion
-!
-XLBDASCNVI_MAX = 6000. ! lbdas max after Field (1999)
-!
-XDSCNVI_LIM    = 125.E-6  ! size in microns
-XLBDASCNVI_LIM = (50.0**(1.0/(XALPHAS)))/XDSCNVI_LIM  ! ZLBDAS Limitation
-XC0DEPSI = ((4.0*XPI)/(XAS*XBS))*XC1S*XF0IS*                        &
-           (XALPHAS/GAMMA_X0D(XNUS))*XDSCNVI_LIM**(1.0-XBS)
-XC1DEPSI = ((4.0*XPI)/(XAS*XBS))*XC1S*XF1IS*SQRT(XCS)*             &
-           (XALPHAS/GAMMA_X0D(XNUS))*XDSCNVI_LIM**(1.0-XBS+(XDS+1.0)/2.0)
-XR0DEPSI = XC0DEPSI *(XAS*XDSCNVI_LIM**XBS)
-XR1DEPSI = XC1DEPSI *(XAS*XDSCNVI_LIM**XBS)
-!
-! Vapor deposition on snow and graupel and hail
-!
-X0DEPS = (4.0*XPI)*XCCS*XC1S*XF0S*MOMG(XALPHAS,XNUS,1.)
-X1DEPS = (4.0*XPI)*XCCS*XC1S*XF1S*SQRT(XCS)*MOMG(XALPHAS,XNUS,0.5*XDS+1.5)
-XEX0DEPS = XCXS-1.0
-XEX1DEPS = XCXS-0.5*(XDS+3.0)
-!
-X0DEPG = (4.0*XPI)*XCCG*XC1G*XF0G*MOMG(XALPHAG,XNUG,1.)
-X1DEPG = (4.0*XPI)*XCCG*XC1G*XF1G*SQRT(XCG)*MOMG(XALPHAG,XNUG,0.5*XDG+1.5)
-XEX0DEPG = XCXG-1.0
-XEX1DEPG = XCXG-0.5*(XDG+3.0)
-!
-X0DEPH = (4.0*XPI)*XCCH*XC1H*XF0H*MOMG(XALPHAH,XNUH,1.)
-X1DEPH = (4.0*XPI)*XCCH*XC1H*XF1H*SQRT(XCH)*MOMG(XALPHAH,XNUH,0.5*XDH+1.5)
-XEX0DEPH = XCXH-1.0
-XEX1DEPH = XCXH-0.5*(XDH+3.0)
-!  
-!-------------------------------------------------------------------------------
-!
-!
-!*       6.     CONSTANTS FOR THE COALESCENCE PROCESSES
-!   	        ---------------------------------------
-!
-!
-!*       6.0    Precalculation of the gamma function momentum
-!
-ZGAMI(1) = GAMMA_X0D(XNUI)
-ZGAMI(2) = MOMG(XALPHAI,XNUI,3.)
-ZGAMI(3) = MOMG(XALPHAI,XNUI,6.)
-ZGAMI(4) = ZGAMI(3)-ZGAMI(2)**2  ! useful for Sig_I
-ZGAMI(5) = MOMG(XALPHAI,XNUI,9.)
-ZGAMI(6) = MOMG(XALPHAI,XNUI,3.+XBI)
-ZGAMI(7) = MOMG(XALPHAI,XNUI,XBI)
-ZGAMI(8) = MOMG(XALPHAI,XNUI,3.)/MOMG(XALPHAI,XNUI,2.)
-!
-ZGAMS(1) = GAMMA_X0D(XNUS)
-ZGAMS(2) = MOMG(XALPHAS,XNUS,3.)
-!
-!
-!*       6.1    Csts for the coalescence processes
-!
-ZFAC_ZRNIC = 0.1
-XKER_ZRNIC_A1 = 2.59E15*ZFAC_ZRNIC**2! From Long  a1=9.44E9 cm-3 
-                                     ! so XKERA1= 9.44E9*1E6*(PI/6)**2
-XKER_ZRNIC_A2 = 3.03E3*ZFAC_ZRNIC    ! From Long  a2=5.78E3      
-                                     ! so XKERA2= 5.78E3*    (PI/6)
-!
-!
-!*       6.2    Csts for the pristine ice selfcollection process
-!
-XSELFI = XKER_ZRNIC_A1*ZGAMI(3)
-XCOLEXII = 0.025   !  Temperature factor of the I+I collection efficiency
-!
-!
-!*       6.3    Constants for pristine ice autoconversion
-!
-XTEXAUTI = 0.025   !  Temperature factor of the I+I collection efficiency
-!
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=KULOUT,FMT='("      pristine ice autoconversion")')
-  WRITE(UNIT=KULOUT,FMT='(" Temp. factor    XTEXAUTI=",E13.6)') XTEXAUTI
-END IF
-!
-XAUTO3 = 6.25E18*(ZGAMI(2))**(1./3.)*SQRT(ZGAMI(4))
-XAUTO4 = 0.5E6*(ZGAMI(4))**(1./6.)
-XLAUTS = 2.7E-2
-XLAUTS_THRESHOLD  = 0.4
-XITAUTS= 0.27 ! (Notice that T2 of BR74 is uncorrect and that 0.27=1./3.7
-XITAUTS_THRESHOLD = 7.5
-!
-!
-!*       6.4    Constants for snow aggregation
-!
-XCOLEXIS = 0.05    ! Temperature factor of the I+S collection efficiency
-XAGGS_CLARGE1 = XKER_ZRNIC_A2*ZGAMI(2)
-XAGGS_CLARGE2 = XKER_ZRNIC_A2*ZGAMS(2)
-XAGGS_RLARGE1 = XKER_ZRNIC_A2*ZGAMI(6)*XAI
-XAGGS_RLARGE2 = XKER_ZRNIC_A2*ZGAMI(7)*ZGAMS(2)*XAI
-!
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=KULOUT,FMT='("      snow aggregation")')
-  WRITE(UNIT=KULOUT,FMT='(" Temp. factor     XCOLEXIS=",E13.6)') XCOLEXIS
-END IF
-!  
-!-------------------------------------------------------------------------------
-!
-!
-!*       7.     CONSTANTS FOR THE FAST COLD PROCESSES FOR THE AGGREGATES
-!   	        --------------------------------------------------------
-!
-!
-!*       7.1    Constants for the riming of the aggregates
-!
-XDCSLIM  = 0.007 ! D_cs^lim = 7 mm as suggested by Farley et al. (1989)
-XCOLCS   = 1.0
-XEXCRIMSS= XCXS-XDS-2.0
-XCRIMSS  = (XPI/4.0)*XCOLCS*XCCS*XCS*(ZRHO00**XCEXVT)*MOMG(XALPHAS,XNUS,XDS+2.0)
-XEXCRIMSG= XEXCRIMSS
-XCRIMSG  = XCRIMSS
-XSRIMCG  = XCCS*XAS*MOMG(XALPHAS,XNUS,XBS)
-XEXSRIMCG= XCXS-XBS
-!
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=KULOUT,FMT='("      riming of the aggregates")')
-  WRITE(UNIT=KULOUT,FMT='(" D_cs^lim (Farley et al.) XDCSLIM=",E13.6)') XDCSLIM
-  WRITE(UNIT=KULOUT,FMT='(" Coll. efficiency          XCOLCS=",E13.6)') XCOLCS
-END IF
-!
-NGAMINC = 80
-XGAMINC_BOUND_MIN = 1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha
-XGAMINC_BOUND_MAX = 1.0E7  ! Maximal value of (Lbda * D_cs^lim)**alpha
-ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/FLOAT(NGAMINC-1))
-!
-ALLOCATE( XGAMINC_RIM1(NGAMINC) )
-ALLOCATE( XGAMINC_RIM2(NGAMINC) )
-!
-DO J1=1,NGAMINC
-  ZBOUND = XGAMINC_BOUND_MIN*ZRATE**(J1-1)
-  XGAMINC_RIM1(J1) = GAMMA_INC(XNUS+(2.0+XDS)/XALPHAS,ZBOUND)
-  XGAMINC_RIM2(J1) = GAMMA_INC(XNUS+XBS/XALPHAS      ,ZBOUND)
-END DO
-!
-XRIMINTP1 = XALPHAS / LOG(ZRATE)
-XRIMINTP2 = 1.0 + XRIMINTP1*LOG( XDCSLIM/(XGAMINC_BOUND_MIN)**(1.0/XALPHAS) )
-!
-!*       7.1.1  Defining the constants for the Hallett-Mossop 
-!               secondary ice nucleation process
-!
-XHMTMIN = XTT - 8.0
-XHMTMAX = XTT - 3.0
-XHM1 = 9.3E-3            ! Obsolete parameterization
-XHM2 = 1.5E-3/LOG(10.0)  ! from Ferrier (1995)
-XHM_YIELD = 5.E-3 ! A splinter is produced after the riming of 200 droplets
-XHM_COLLCS= 1.0   ! Collision efficiency snow/droplet (with Dc>25 microns)
-XHM_FACTS = XHM_YIELD*(XHM_COLLCS/XCOLCS)
-!
-! Notice: One magnitude of lambda discretized over 10 points for the droplets 
-!
-XGAMINC_HMC_BOUND_MIN = 1.0E-3 ! Min value of (Lbda * (12,25) microns)**alpha
-XGAMINC_HMC_BOUND_MAX = 1.0E5  ! Max value of (Lbda * (12,25) microns)**alpha
-ZRATE = EXP(LOG(XGAMINC_HMC_BOUND_MAX/XGAMINC_HMC_BOUND_MIN)/FLOAT(NGAMINC-1))
-!
-ALLOCATE( XGAMINC_HMC(NGAMINC) )
-!
-DO J1=1,NGAMINC
-  ZBOUND = XGAMINC_HMC_BOUND_MIN*ZRATE**(J1-1)
-  XGAMINC_HMC(J1) = GAMMA_INC(XNUC,ZBOUND)
-END DO
-!
-XHMSINTP1 = XALPHAC / LOG(ZRATE)
-XHMSINTP2 = 1.0 + XHMSINTP1*LOG( 12.E-6/(XGAMINC_HMC_BOUND_MIN)**(1.0/XALPHAC) )
-XHMLINTP1 = XALPHAC / LOG(ZRATE)
-XHMLINTP2 = 1.0 + XHMLINTP1*LOG( 25.E-6/(XGAMINC_HMC_BOUND_MIN)**(1.0/XALPHAC) )
-!
-!
-!*       7.2    Constants for the accretion of raindrops onto aggregates
-!
-XFRACCSS = ((XPI**2)/24.0)*XCCS*XRHOLW*(ZRHO00**XCEXVT)
-!
-XLBRACCS1   =    MOMG(XALPHAS,XNUS,2.)*MOMG(XALPHAR,XNUR,3.)
-XLBRACCS2   = 2.*MOMG(XALPHAS,XNUS,1.)*MOMG(XALPHAR,XNUR,4.)
-XLBRACCS3   =                          MOMG(XALPHAR,XNUR,5.)
-!
-XFSACCRG = (XPI/4.0)*XAS*XCCS*(ZRHO00**XCEXVT)
-!
-XLBSACCR1   =    MOMG(XALPHAR,XNUR,2.)*MOMG(XALPHAS,XNUS,XBS)
-XLBSACCR2   = 2.*MOMG(XALPHAR,XNUR,1.)*MOMG(XALPHAS,XNUS,XBS+1.)
-XLBSACCR3   =                          MOMG(XALPHAS,XNUS,XBS+2.)
-!
-!*       7.2.1  Defining the ranges for the computation of the kernels
-!
-! Notice: One magnitude of lambda discretized over 10 points for rain
-! Notice: One magnitude of lambda discretized over 10 points for snow
-!
-NACCLBDAS = 40
-XACCLBDAS_MIN = 5.0E1 ! Minimal value of Lbda_s to tabulate XKER_RACCS
-XACCLBDAS_MAX = 5.0E5 ! Maximal value of Lbda_s to tabulate XKER_RACCS
-ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/FLOAT(NACCLBDAS-1)
-XACCINTP1S = 1.0 / ZRATE
-XACCINTP2S = 1.0 - LOG( XACCLBDAS_MIN ) / ZRATE
-NACCLBDAR = 40
-XACCLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RACCS
-XACCLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RACCS
-ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/FLOAT(NACCLBDAR-1)
-XACCINTP1R = 1.0 / ZRATE
-XACCINTP2R = 1.0 - LOG( XACCLBDAR_MIN ) / ZRATE
-!
-!*       7.2.2  Computations of the tabulated normalized kernels
-!
-IND      = 50    ! Interval number, collection efficiency and infinite diameter
-ZESR     = 1.0   ! factor used to integrate the dimensional distributions when
-ZFDINFTY = 20.0  ! computing the kernels XKER_RACCSS, XKER_RACCS and XKER_SACCRG
-!
-ALLOCATE( XKER_RACCSS(NACCLBDAS,NACCLBDAR) )
-ALLOCATE( XKER_RACCS (NACCLBDAS,NACCLBDAR) )
-ALLOCATE( XKER_SACCRG(NACCLBDAR,NACCLBDAS) )
-!
-CALL READ_XKER_RACCS (KACCLBDAS,KACCLBDAR,KND,                                &
-                      PALPHAS,PNUS,PALPHAR,PNUR,PESR,PBS,PBR,PCS,PDS,PFVELOS,PCR,PDR, &
-                      PACCLBDAS_MAX,PACCLBDAR_MAX,PACCLBDAS_MIN,PACCLBDAR_MIN,&
-                      PFDINFTY                                                )
-IF( (KACCLBDAS/=NACCLBDAS) .OR. (KACCLBDAR/=NACCLBDAR) .OR. (KND/=IND) .OR. &
-    (PALPHAS/=XALPHAS) .OR. (PNUS/=XNUS)                               .OR. &
-    (PALPHAR/=XALPHAR) .OR. (PNUR/=XNUR)                               .OR. &
-    (PESR/=ZESR) .OR. (PBS/=XBS) .OR. (PBR/=XBR)                       .OR. &
-    (PCS/=XCS) .OR. (PDS/=XDS) .OR. (PCR/=XCR) .OR. (PDR/=XDR)         .OR. &
-    (PACCLBDAS_MAX/=XACCLBDAS_MAX) .OR. (PACCLBDAR_MAX/=XACCLBDAR_MAX) .OR. &
-    (PACCLBDAS_MIN/=XACCLBDAS_MIN) .OR. (PACCLBDAR_MIN/=XACCLBDAR_MIN) .OR. &
-    (PFDINFTY/=ZFDINFTY)                                               ) THEN
-  CALL RRCOLSS ( IND, XALPHAS, XNUS, XALPHAR, XNUR,                          &
-                 ZESR, XBR, XCS, XDS, PFVELOS, XCR, XDR,                     &
-                 XACCLBDAS_MAX, XACCLBDAR_MAX, XACCLBDAS_MIN, XACCLBDAR_MIN, &
-                 ZFDINFTY, XKER_RACCSS, XAG, XBS, XAS                        )
-  CALL RZCOLX  ( IND, XALPHAS, XNUS, XALPHAR, XNUR,                          &
-                 ZESR, XBR, XCS, XDS, PFVELOS, XCR, XDR, 0.,                 &
-                 XACCLBDAS_MAX, XACCLBDAR_MAX, XACCLBDAS_MIN, XACCLBDAR_MIN, &
-                 ZFDINFTY, XKER_RACCS                                        )
-  CALL RSCOLRG ( IND, XALPHAS, XNUS, XALPHAR, XNUR,                          &
-                 ZESR, XBS, XCS, XDS, PFVELOS, XCR, XDR,                     &
-                 XACCLBDAS_MAX, XACCLBDAR_MAX, XACCLBDAS_MIN, XACCLBDAR_MIN, &
-                 ZFDINFTY, XKER_SACCRG,XAG, XBS, XAS                         )
-  WRITE(UNIT=KULOUT,FMT='("*****************************************")')
-  WRITE(UNIT=KULOUT,FMT='("**** UPDATE NEW SET OF RACSS KERNELS ****")')
-  WRITE(UNIT=KULOUT,FMT='("**** UPDATE NEW SET OF RACS  KERNELS ****")')
-  WRITE(UNIT=KULOUT,FMT='("**** UPDATE NEW SET OF SACRG KERNELS ****")')
-  WRITE(UNIT=KULOUT,FMT='("*****************************************")')
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("KND=",I3)') IND
-  WRITE(UNIT=KULOUT,FMT='("KACCLBDAS=",I3)') NACCLBDAS
-  WRITE(UNIT=KULOUT,FMT='("KACCLBDAR=",I3)') NACCLBDAR
-  WRITE(UNIT=KULOUT,FMT='("PALPHAS=",E13.6)') XALPHAS
-  WRITE(UNIT=KULOUT,FMT='("PNUS=",E13.6)') XNUS
-  WRITE(UNIT=KULOUT,FMT='("PALPHAR=",E13.6)') XALPHAR
-  WRITE(UNIT=KULOUT,FMT='("PNUR=",E13.6)') XNUR
-  WRITE(UNIT=KULOUT,FMT='("PESR=",E13.6)') ZESR
-  WRITE(UNIT=KULOUT,FMT='("PBS=",E13.6)') XBS
-  WRITE(UNIT=KULOUT,FMT='("PBR=",E13.6)') XBR
-  WRITE(UNIT=KULOUT,FMT='("PCS=",E13.6)') XCS
-  WRITE(UNIT=KULOUT,FMT='("PDS=",E13.6)') XDS
-  WRITE(UNIT=KULOUT,FMT='("PCR=",E13.6)') XCR
-  WRITE(UNIT=KULOUT,FMT='("PDR=",E13.6)') XDR
-  WRITE(UNIT=KULOUT,FMT='("PACCLBDAS_MAX=",E13.6)') &
-                                                    XACCLBDAS_MAX
-  WRITE(UNIT=KULOUT,FMT='("PACCLBDAR_MAX=",E13.6)') &
-                                                    XACCLBDAR_MAX
-  WRITE(UNIT=KULOUT,FMT='("PACCLBDAS_MIN=",E13.6)') &
-                                                    XACCLBDAS_MIN
-  WRITE(UNIT=KULOUT,FMT='("PACCLBDAR_MIN=",E13.6)') &
-                                                    XACCLBDAR_MIN
-  WRITE(UNIT=KULOUT,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("IF( PRESENT(PKER_RACCSS) ) THEN")')
-  DO J1 = 1 , NACCLBDAS
-    DO J2 = 1 , NACCLBDAR
-    WRITE(UNIT=KULOUT,FMT='("  PKER_RACCSS(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_RACCSS(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=KULOUT,FMT='("END IF")')
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("IF( PRESENT(PKER_RACCS ) ) THEN")')
-  DO J1 = 1 , NACCLBDAS
-    DO J2 = 1 , NACCLBDAR
-    WRITE(UNIT=KULOUT,FMT='("  PKER_RACCS (",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_RACCS (J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=KULOUT,FMT='("END IF")')
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("IF( PRESENT(PKER_SACCRG) ) THEN")')
-  DO J1 = 1 , NACCLBDAR
-    DO J2 = 1 , NACCLBDAS
-    WRITE(UNIT=KULOUT,FMT='("  PKER_SACCRG(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_SACCRG(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=KULOUT,FMT='("END IF")')
-  ELSE
-  CALL READ_XKER_RACCS (KACCLBDAS,KACCLBDAR,KND,                               &
-                       PALPHAS,PNUS,PALPHAR,PNUR,PESR,PBS,PBR,PCS,PDS,PFVELOS,PCR,PDR, &
-                       PACCLBDAS_MAX,PACCLBDAR_MAX,PACCLBDAS_MIN,PACCLBDAR_MIN,&
-                       PFDINFTY,XKER_RACCSS,XKER_RACCS,XKER_SACCRG             )
-  WRITE(UNIT=KULOUT,FMT='(" Read XKER_RACCSS")')
-  WRITE(UNIT=KULOUT,FMT='(" Read XKER_RACCS ")')
-  WRITE(UNIT=KULOUT,FMT='(" Read XKER_SACCRG")')
-END IF
-!
-!
-!*       7.3    Constant for the conversion-melting rate
-!
-XFSCVMG = 2.0
-!
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=KULOUT,FMT='("      conversion-melting of the aggregates")')
-  WRITE(UNIT=KULOUT,FMT='(" Conv. factor XFSCVMG=",E13.6)') XFSCVMG
-END IF
-!  
-!-------------------------------------------------------------------------------
-!
-!
-!*       8.     CONSTANTS FOR THE FAST COLD PROCESSES FOR THE GRAUPELN
-!   	        --------------------------------------------------------
-!
-!
-!*       8.1    Constants for the rain contact freezing
-!
-XCOLIR    = 1.0
-!
-! values of these coeficients differ from the single-momemt rain_ice case
-!
-XEXRCFRI  = -XDR-5.0
-XRCFRI    = ((XPI**2)/24.0)*XRHOLW*XCOLIR*XCR*(ZRHO00**XCEXVT)     &
-                                                     *MOMG(XALPHAR,XNUR,XDR+5.0)
-XEXICFRR  = -XDR-2.0
-XICFRR    = (XPI/4.0)*XCOLIR*XCR*(ZRHO00**XCEXVT)                  &
-                                                     *MOMG(XALPHAR,XNUR,XDR+2.0)
-!
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=KULOUT,FMT='("      rain contact freezing")')
-  WRITE(UNIT=KULOUT,FMT='(" Coll. efficiency          XCOLIR=",E13.6)') XCOLIR
-END IF
-!
-!
-!*       8.2    Constants for the dry growth of the graupeln
-!
-!*       8.2.1  Constants for the cloud droplet collection by the graupeln
-!               and for the Hallett-Mossop process
-!
-XCOLCG  = 0.6  !  Estimated from Cober and List (1993)
-XFCDRYG = (XPI/4.0)*XCOLCG*XCCG*XCG*(ZRHO00**XCEXVT)*MOMG(XALPHAG,XNUG,XDG+2.0)
-!
-XHM_COLLCG= 0.9   ! Collision efficiency graupel/droplet (with Dc>25 microns)
-XHM_FACTG = XHM_YIELD*(XHM_COLLCG/XCOLCG)
-!
-!*       8.2.2  Constants for the cloud ice collection by the graupeln
-!
-XCOLIG    = 0.25 ! Collection efficiency of I+G
-XCOLEXIG  = 0.05 ! Temperature factor of the I+G collection efficiency
-XCOLIG   = 0.01 ! Collection efficiency of I+G
-XCOLEXIG = 0.1  ! Temperature factor of the I+G collection efficiency
-WRITE (KULOUT, FMT=*) ' NEW Constants for the cloud ice collection by the graupeln'
-WRITE (KULOUT, FMT=*) ' XCOLIG, XCOLEXIG  = ',XCOLIG,XCOLEXIG
-XFIDRYG = (XPI/4.0)*XCOLIG*XCCG*XCG*(ZRHO00**XCEXVT)*MOMG(XALPHAG,XNUG,XDG+2.0)
-!
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=KULOUT,FMT='("      cloud ice collection by the graupeln")')
-  WRITE(UNIT=KULOUT,FMT='(" Coll. efficiency XCOLIG=",E13.6)') XCOLIG
-  WRITE(UNIT=KULOUT,FMT='(" Temp. factor     XCOLEXIG=",E13.6)') XCOLEXIG
-END IF
-!
-!*       8.2.3  Constants for the aggregate collection by the graupeln
-!
-XCOLSG    = 0.25 ! Collection efficiency of S+G
-XCOLEXSG  = 0.05 ! Temperature factor of the S+G collection efficiency
-XCOLSG   = 0.01 ! Collection efficiency of S+G
-XCOLEXSG = 0.1  ! Temperature factor of the S+G collection efficiency
-WRITE (KULOUT, FMT=*) ' NEW Constants for the aggregate collection by the graupeln'
-WRITE (KULOUT, FMT=*) ' XCOLSG, XCOLEXSG  = ',XCOLSG,XCOLEXSG
-XFSDRYG = (XPI/4.0)*XCOLSG*XCCG*XCCS*XAS*(ZRHO00**XCEXVT)
-!
-XLBSDRYG1   =    MOMG(XALPHAG,XNUG,2.)*MOMG(XALPHAS,XNUS,XBS)
-XLBSDRYG2   = 2.*MOMG(XALPHAG,XNUG,1.)*MOMG(XALPHAS,XNUS,XBS+1.)
-XLBSDRYG3   =                          MOMG(XALPHAS,XNUS,XBS+2.)
-!
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=KULOUT,FMT='("      aggregate collection by the graupeln")')
-  WRITE(UNIT=KULOUT,FMT='(" Coll. efficiency XCOLSG=",E13.6)') XCOLSG
-  WRITE(UNIT=KULOUT,FMT='(" Temp. factor     XCOLEXSG=",E13.6)') XCOLEXSG
-END IF
-!
-!*       8.2.4  Constants for the raindrop collection by the graupeln
-!
-XFRDRYG = ((XPI**2)/24.0)*XCCG*XRHOLW*(ZRHO00**XCEXVT)
-!
-XLBRDRYG1   =    MOMG(XALPHAG,XNUG,2.)*MOMG(XALPHAR,XNUR,3.)
-XLBRDRYG2   = 2.*MOMG(XALPHAG,XNUG,1.)*MOMG(XALPHAR,XNUR,4.)
-XLBRDRYG3   =                          MOMG(XALPHAR,XNUR,5.)
-!
-! Notice: One magnitude of lambda discretized over 10 points
-!
-NDRYLBDAR = 40
-XDRYLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RDRYG
-XDRYLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RDRYG
-ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/FLOAT(NDRYLBDAR-1)
-XDRYINTP1R = 1.0 / ZRATE
-XDRYINTP2R = 1.0 - LOG( XDRYLBDAR_MIN ) / ZRATE
-NDRYLBDAS = 80
-XDRYLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SDRYG
-XDRYLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SDRYG
-ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/FLOAT(NDRYLBDAS-1)
-XDRYINTP1S = 1.0 / ZRATE
-XDRYINTP2S = 1.0 - LOG( XDRYLBDAS_MIN ) / ZRATE
-NDRYLBDAG = 40
-XDRYLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG
-XDRYLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG
-ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/FLOAT(NDRYLBDAG-1)
-XDRYINTP1G = 1.0 / ZRATE
-XDRYINTP2G = 1.0 - LOG( XDRYLBDAG_MIN ) / ZRATE
-!
-!*       8.2.5  Computations of the tabulated normalized kernels
-!
-IND      = 50    ! Interval number, collection efficiency and infinite diameter
-ZEGS     = 1.0   ! factor used to integrate the dimensional distributions when
-ZFDINFTY = 20.0  ! computing the kernels XKER_SDRYG
-!
-ALLOCATE( XKER_SDRYG(NDRYLBDAG,NDRYLBDAS) )
-!
-CALL READ_XKER_SDRYG (KDRYLBDAG,KDRYLBDAS,KND,                              &
-                   PALPHAG,PNUG,PALPHAS,PNUS,PEGS,PBS,PCG,PDG,PCS,PDS,PFVELOS,     &
-                   PDRYLBDAG_MAX,PDRYLBDAS_MAX,PDRYLBDAG_MIN,PDRYLBDAS_MIN, &
-                   PFDINFTY                                                 )
-IF( (KDRYLBDAG/=NDRYLBDAG) .OR. (KDRYLBDAS/=NDRYLBDAS) .OR. (KND/=IND) .OR. &
-    (PALPHAG/=XALPHAG) .OR. (PNUG/=XNUG)                               .OR. &
-    (PALPHAS/=XALPHAS) .OR. (PNUS/=XNUS)                               .OR. &
-    (PEGS/=ZEGS) .OR. (PBS/=XBS)                                       .OR. &
-    (PCG/=XCG) .OR. (PDG/=XDG) .OR. (PCS/=XCS) .OR. (PDS/=XDS) .OR. (PFVELOS/=PFVELOS) .OR. &
-    (PDRYLBDAG_MAX/=XDRYLBDAG_MAX) .OR. (PDRYLBDAS_MAX/=XDRYLBDAS_MAX) .OR. &
-    (PDRYLBDAG_MIN/=XDRYLBDAG_MIN) .OR. (PDRYLBDAS_MIN/=XDRYLBDAS_MIN) .OR. &
-    (PFDINFTY/=ZFDINFTY)                                               ) THEN
-  CALL RZCOLX ( IND, XALPHAG, XNUG, XALPHAS, XNUS,                          &
-                ZEGS, XBS, XCG, XDG, 0., XCS, XDS, PFVELOS,                 &
-                XDRYLBDAG_MAX, XDRYLBDAS_MAX, XDRYLBDAG_MIN, XDRYLBDAS_MIN, &
-                ZFDINFTY, XKER_SDRYG                                        )
-  WRITE(UNIT=KULOUT,FMT='("*****************************************")')
-  WRITE(UNIT=KULOUT,FMT='("**** UPDATE NEW SET OF SDRYG KERNELS ****")')
-  WRITE(UNIT=KULOUT,FMT='("*****************************************")')
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("KND=",I3)') IND
-  WRITE(UNIT=KULOUT,FMT='("KDRYLBDAG=",I3)') NDRYLBDAG
-  WRITE(UNIT=KULOUT,FMT='("KDRYLBDAS=",I3)') NDRYLBDAS
-  WRITE(UNIT=KULOUT,FMT='("PALPHAG=",E13.6)') XALPHAG
-  WRITE(UNIT=KULOUT,FMT='("PNUG=",E13.6)') XNUG
-  WRITE(UNIT=KULOUT,FMT='("PALPHAS=",E13.6)') XALPHAS
-  WRITE(UNIT=KULOUT,FMT='("PNUS=",E13.6)') XNUS
-  WRITE(UNIT=KULOUT,FMT='("PEGS=",E13.6)') ZEGS
-  WRITE(UNIT=KULOUT,FMT='("PBS=",E13.6)') XBS
-  WRITE(UNIT=KULOUT,FMT='("PCG=",E13.6)') XCG
-  WRITE(UNIT=KULOUT,FMT='("PDG=",E13.6)') XDG
-  WRITE(UNIT=KULOUT,FMT='("PCS=",E13.6)') XCS
-  WRITE(UNIT=KULOUT,FMT='("PDS=",E13.6)') XDS
-  WRITE(UNIT=KULOUT,FMT='("PDRYLBDAG_MAX=",E13.6)') &
-                                                    XDRYLBDAG_MAX
-  WRITE(UNIT=KULOUT,FMT='("PDRYLBDAS_MAX=",E13.6)') &
-                                                    XDRYLBDAS_MAX
-  WRITE(UNIT=KULOUT,FMT='("PDRYLBDAG_MIN=",E13.6)') &
-                                                    XDRYLBDAG_MIN
-  WRITE(UNIT=KULOUT,FMT='("PDRYLBDAS_MIN=",E13.6)') &
-                                                    XDRYLBDAS_MIN
-  WRITE(UNIT=KULOUT,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("IF( PRESENT(PKER_SDRYG) ) THEN")')
-  DO J1 = 1 , NDRYLBDAG
-    DO J2 = 1 , NDRYLBDAS
-    WRITE(UNIT=KULOUT,FMT='("PKER_SDRYG(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_SDRYG(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=KULOUT,FMT='("END IF")')
-  ELSE
-  CALL READ_XKER_SDRYG (KDRYLBDAG,KDRYLBDAS,KND,                              &
-                     PALPHAG,PNUG,PALPHAS,PNUS,PEGS,PBS,PCG,PDG,PCS,PDS,PFVELOS,     &
-                     PDRYLBDAG_MAX,PDRYLBDAS_MAX,PDRYLBDAG_MIN,PDRYLBDAS_MIN, &
-                     PFDINFTY,XKER_SDRYG                                      )
-  WRITE(UNIT=KULOUT,FMT='(" Read XKER_SDRYG")')
-END IF
-!
-!
-IND      = 50    ! Number of interval used to integrate the dimensional
-ZEGR     = 1.0   ! distributions when computing the kernel XKER_RDRYG
-ZFDINFTY = 20.0
-!
-ALLOCATE( XKER_RDRYG(NDRYLBDAG,NDRYLBDAR) )
-!
-CALL READ_XKER_RDRYG (KDRYLBDAG,KDRYLBDAR,KND,                              &
-                   PALPHAG,PNUG,PALPHAR,PNUR,PEGR,PBR,PCG,PDG,PCR,PDR,      &
-                   PDRYLBDAG_MAX,PDRYLBDAR_MAX,PDRYLBDAG_MIN,PDRYLBDAR_MIN, &
-                   PFDINFTY                                                 )
-IF( (KDRYLBDAG/=NDRYLBDAG) .OR. (KDRYLBDAR/=NDRYLBDAR) .OR. (KND/=IND) .OR. &
-    (PALPHAG/=XALPHAG) .OR. (PNUG/=XNUG)                               .OR. &
-    (PALPHAR/=XALPHAR) .OR. (PNUR/=XNUR)                               .OR. &
-    (PEGR/=ZEGR) .OR. (PBR/=XBR)                                       .OR. &
-    (PCG/=XCG) .OR. (PDG/=XDG) .OR. (PCR/=XCR) .OR. (PDR/=XDR)         .OR. &
-    (PDRYLBDAG_MAX/=XDRYLBDAG_MAX) .OR. (PDRYLBDAR_MAX/=XDRYLBDAR_MAX) .OR. &
-    (PDRYLBDAG_MIN/=XDRYLBDAG_MIN) .OR. (PDRYLBDAR_MIN/=XDRYLBDAR_MIN) .OR. &
-    (PFDINFTY/=ZFDINFTY)                                               ) THEN
-  CALL RZCOLX ( IND, XALPHAG, XNUG, XALPHAR, XNUR,                          &
-                ZEGR, XBR, XCG, XDG, 0., XCR, XDR, 0.,                      &
-                XDRYLBDAG_MAX, XDRYLBDAR_MAX, XDRYLBDAG_MIN, XDRYLBDAR_MIN, &
-                ZFDINFTY, XKER_RDRYG                                        )
-  WRITE(UNIT=KULOUT,FMT='("*****************************************")')
-  WRITE(UNIT=KULOUT,FMT='("**** UPDATE NEW SET OF RDRYG KERNELS ****")')
-  WRITE(UNIT=KULOUT,FMT='("*****************************************")')
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("KND=",I3)') IND
-  WRITE(UNIT=KULOUT,FMT='("KDRYLBDAG=",I3)') NDRYLBDAG
-  WRITE(UNIT=KULOUT,FMT='("KDRYLBDAR=",I3)') NDRYLBDAR
-  WRITE(UNIT=KULOUT,FMT='("PALPHAG=",E13.6)') XALPHAG
-  WRITE(UNIT=KULOUT,FMT='("PNUG=",E13.6)') XNUG
-  WRITE(UNIT=KULOUT,FMT='("PALPHAR=",E13.6)') XALPHAR
-  WRITE(UNIT=KULOUT,FMT='("PNUR=",E13.6)') XNUR
-  WRITE(UNIT=KULOUT,FMT='("PEGR=",E13.6)') ZEGR
-  WRITE(UNIT=KULOUT,FMT='("PBR=",E13.6)') XBR
-  WRITE(UNIT=KULOUT,FMT='("PCG=",E13.6)') XCG
-  WRITE(UNIT=KULOUT,FMT='("PDG=",E13.6)') XDG
-  WRITE(UNIT=KULOUT,FMT='("PCR=",E13.6)') XCR
-  WRITE(UNIT=KULOUT,FMT='("PDR=",E13.6)') XDR
-  WRITE(UNIT=KULOUT,FMT='("PDRYLBDAG_MAX=",E13.6)') &
-                                                    XDRYLBDAG_MAX
-  WRITE(UNIT=KULOUT,FMT='("PDRYLBDAR_MAX=",E13.6)') &
-                                                    XDRYLBDAR_MAX
-  WRITE(UNIT=KULOUT,FMT='("PDRYLBDAG_MIN=",E13.6)') &
-                                                    XDRYLBDAG_MIN
-  WRITE(UNIT=KULOUT,FMT='("PDRYLBDAR_MIN=",E13.6)') &
-                                                    XDRYLBDAR_MIN
-  WRITE(UNIT=KULOUT,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("IF( PRESENT(PKER_RDRYG) ) THEN")')
-  DO J1 = 1 , NDRYLBDAG
-    DO J2 = 1 , NDRYLBDAR
-    WRITE(UNIT=KULOUT,FMT='("PKER_RDRYG(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_RDRYG(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=KULOUT,FMT='("END IF")')
-  ELSE
-  CALL READ_XKER_RDRYG (KDRYLBDAG,KDRYLBDAR,KND,                              &
-                     PALPHAG,PNUG,PALPHAR,PNUR,PEGR,PBR,PCG,PDG,PCR,PDR,      &
-                     PDRYLBDAG_MAX,PDRYLBDAR_MAX,PDRYLBDAG_MIN,PDRYLBDAR_MIN, &
-                     PFDINFTY,XKER_RDRYG                                      )
-  WRITE(UNIT=KULOUT,FMT='(" Read XKER_RDRYG")')
-END IF
-!  
-!-------------------------------------------------------------------------------
-!
-!*       9.     CONSTANTS FOR THE FAST COLD PROCESSES FOR THE HAILSTONES
-!               --------------------------------------------------------
-!
-!*       9.2    Constants for the wet growth of the hailstones
-!
-!
-!*       9.2.1  Constant for the cloud droplet and cloud ice collection
-!               by the hailstones
-!
-XFWETH = (XPI/4.0)*XCCH*XCH*(ZRHO00**XCEXVT)*MOMG(XALPHAH,XNUH,XDH+2.0)
-!
-!*       9.2.2  Constants for the aggregate collection by the hailstones
-!
-XFSWETH = (XPI/4.0)*XCCH*XCCS*XAS*(ZRHO00**XCEXVT)
-!
-XLBSWETH1   =    MOMG(XALPHAH,XNUH,2.)*MOMG(XALPHAS,XNUS,XBS)
-XLBSWETH2   = 2.*MOMG(XALPHAH,XNUH,1.)*MOMG(XALPHAS,XNUS,XBS+1.)
-XLBSWETH3   =                          MOMG(XALPHAS,XNUS,XBS+2.)
-!
-!*       9.2.3  Constants for the graupel collection by the hailstones
-!
-XFGWETH = (XPI/4.0)*XCCH*XCCG*XAG*(ZRHO00**XCEXVT)
-!
-XLBGWETH1   =    MOMG(XALPHAH,XNUH,2.)*MOMG(XALPHAG,XNUG,XBG)
-XLBGWETH2   = 2.*MOMG(XALPHAH,XNUH,1.)*MOMG(XALPHAG,XNUG,XBG+1.)
-XLBGWETH3   =                          MOMG(XALPHAG,XNUG,XBG+2.)
-!
-! Notice: One magnitude of lambda discretized over 10 points
-!
-NWETLBDAS = 80
-XWETLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SWETH
-XWETLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SWETH
-ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN)/FLOAT(NWETLBDAS-1)
-XWETINTP1S = 1.0 / ZRATE
-XWETINTP2S = 1.0 - LOG( XWETLBDAS_MIN ) / ZRATE
-NWETLBDAG = 40
-XWETLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_GWETH
-XWETLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_GWETH
-ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN)/FLOAT(NWETLBDAG-1)
-XWETINTP1G = 1.0 / ZRATE
-XWETINTP2G = 1.0 - LOG( XWETLBDAG_MIN ) / ZRATE
-NWETLBDAH = 40
-XWETLBDAH_MIN = 1.0E3 ! Min value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH
-XWETLBDAH_MAX = 1.0E7 ! Max value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH
-ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN)/FLOAT(NWETLBDAH-1)
-XWETINTP1H = 1.0 / ZRATE
-XWETINTP2H = 1.0 - LOG( XWETLBDAH_MIN ) / ZRATE
-!
-!*       9.2.4  Computations of the tabulated normalized kernels
-!
-IND      = 50    ! Interval number, collection efficiency and infinite diameter
-ZEHS     = 1.0   ! factor used to integrate the dimensional distributions when
-ZFDINFTY = 20.0  ! computing the kernels XKER_SWETH
-!
-IF( .NOT.ALLOCATED(XKER_SWETH) ) ALLOCATE( XKER_SWETH(NWETLBDAH,NWETLBDAS) )
-!
-CALL READ_XKER_SWETH (KWETLBDAH,KWETLBDAS,KND,                              &
-                   PALPHAH,PNUH,PALPHAS,PNUS,PEHS,PBS,PCH,PDH,PCS,PDS,PFVELOS,      &
-                   PWETLBDAH_MAX,PWETLBDAS_MAX,PWETLBDAH_MIN,PWETLBDAS_MIN, &
-                   PFDINFTY                                                 )
-IF( (KWETLBDAH/=NWETLBDAH) .OR. (KWETLBDAS/=NWETLBDAS) .OR. (KND/=IND) .OR. &
-    (PALPHAH/=XALPHAH) .OR. (PNUH/=XNUH)                               .OR. &
-    (PALPHAS/=XALPHAS) .OR. (PNUS/=XNUS)                               .OR. &
-    (PEHS/=ZEHS) .OR. (PBS/=XBS)                                       .OR. &
-    (PCH/=XCH) .OR. (PDH/=XDH) .OR. (PCS/=XCS) .OR. (PDS/=XDS) .OR. (PFVELOS/=PFVELOS) .OR. &
-    (PWETLBDAH_MAX/=XWETLBDAH_MAX) .OR. (PWETLBDAS_MAX/=XWETLBDAS_MAX) .OR. &
-    (PWETLBDAH_MIN/=XWETLBDAH_MIN) .OR. (PWETLBDAS_MIN/=XWETLBDAS_MIN) .OR. &
-    (PFDINFTY/=ZFDINFTY)                                               ) THEN
-  CALL RZCOLX ( IND, XALPHAH, XNUH, XALPHAS, XNUS,                          &
-                ZEHS, XBS, XCH, XDH, 0., XCS, XDS, PFVELOS,                 &
-                XWETLBDAH_MAX, XWETLBDAS_MAX, XWETLBDAH_MIN, XWETLBDAS_MIN, &
-                ZFDINFTY, XKER_SWETH                                        )
-  WRITE(UNIT=KULOUT,FMT='("*****************************************")')
-  WRITE(UNIT=KULOUT,FMT='("**** UPDATE NEW SET OF SWETH KERNELS ****")')
-  WRITE(UNIT=KULOUT,FMT='("*****************************************")')
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("KND=",I3)') IND
-  WRITE(UNIT=KULOUT,FMT='("KWETLBDAH=",I3)') NWETLBDAH
-  WRITE(UNIT=KULOUT,FMT='("KWETLBDAS=",I3)') NWETLBDAS
-  WRITE(UNIT=KULOUT,FMT='("PALPHAH=",E13.6)') XALPHAH
-  WRITE(UNIT=KULOUT,FMT='("PNUH=",E13.6)') XNUH
-  WRITE(UNIT=KULOUT,FMT='("PALPHAS=",E13.6)') XALPHAS
-  WRITE(UNIT=KULOUT,FMT='("PNUS=",E13.6)') XNUS
-  WRITE(UNIT=KULOUT,FMT='("PEHS=",E13.6)') ZEHS
-  WRITE(UNIT=KULOUT,FMT='("PBS=",E13.6)') XBS
-  WRITE(UNIT=KULOUT,FMT='("PCH=",E13.6)') XCH
-  WRITE(UNIT=KULOUT,FMT='("PDH=",E13.6)') XDH
-  WRITE(UNIT=KULOUT,FMT='("PCS=",E13.6)') XCS
-  WRITE(UNIT=KULOUT,FMT='("PDS=",E13.6)') XDS
-  WRITE(UNIT=KULOUT,FMT='("PWETLBDAH_MAX=",E13.6)') &
-                                                    XWETLBDAH_MAX
-  WRITE(UNIT=KULOUT,FMT='("PWETLBDAS_MAX=",E13.6)') &
-                                                    XWETLBDAS_MAX
-  WRITE(UNIT=KULOUT,FMT='("PWETLBDAH_MIN=",E13.6)') &
-                                                    XWETLBDAH_MIN
-  WRITE(UNIT=KULOUT,FMT='("PWETLBDAS_MIN=",E13.6)') &
-                                                    XWETLBDAS_MIN
-  WRITE(UNIT=KULOUT,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("IF( PRESENT(PKER_SWETH) ) THEN")')
-  DO J1 = 1 , NWETLBDAH
-    DO J2 = 1 , NWETLBDAS
-    WRITE(UNIT=KULOUT,FMT='("PKER_SWETH(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_SWETH(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=KULOUT,FMT='("END IF")')
-  ELSE
-  CALL READ_XKER_SWETH (KWETLBDAH,KWETLBDAS,KND,                              &
-                     PALPHAH,PNUH,PALPHAS,PNUS,PEHS,PBS,PCH,PDH,PCS,PDS,PFVELOS,     &
-                     PWETLBDAH_MAX,PWETLBDAS_MAX,PWETLBDAH_MIN,PWETLBDAS_MIN, &
-                     PFDINFTY,XKER_SWETH                                      )
-  WRITE(UNIT=KULOUT,FMT='(" Read XKER_SWETH")')
-END IF
-!
-!
-IND      = 50    ! Number of interval used to integrate the dimensional
-ZEHG     = 1.0   ! distributions when computing the kernel XKER_GWETH
-ZFDINFTY = 20.0
-!
-IF( .NOT.ALLOCATED(XKER_GWETH) ) ALLOCATE( XKER_GWETH(NWETLBDAH,NWETLBDAG) )
-!
-CALL READ_XKER_GWETH (KWETLBDAH,KWETLBDAG,KND,                              &
-                   PALPHAH,PNUH,PALPHAG,PNUG,PEHG,PBG,PCH,PDH,PCG,PDG,      &
-                   PWETLBDAH_MAX,PWETLBDAG_MAX,PWETLBDAH_MIN,PWETLBDAG_MIN, &
-                   PFDINFTY                                                 )
-IF( (KWETLBDAH/=NWETLBDAH) .OR. (KWETLBDAG/=NWETLBDAG) .OR. (KND/=IND) .OR. &
-    (PALPHAH/=XALPHAH) .OR. (PNUH/=XNUH)                               .OR. &
-    (PALPHAG/=XALPHAG) .OR. (PNUG/=XNUG)                               .OR. &
-    (PEHG/=ZEHG) .OR. (PBG/=XBG)                                       .OR. &
-    (PCH/=XCH) .OR. (PDH/=XDH) .OR. (PCG/=XCG) .OR. (PDG/=XDG)         .OR. &
-    (PWETLBDAH_MAX/=XWETLBDAH_MAX) .OR. (PWETLBDAG_MAX/=XWETLBDAG_MAX) .OR. &
-    (PWETLBDAH_MIN/=XWETLBDAH_MIN) .OR. (PWETLBDAG_MIN/=XWETLBDAG_MIN) .OR. &
-    (PFDINFTY/=ZFDINFTY)                                               ) THEN
-  CALL RZCOLX ( IND, XALPHAH, XNUH, XALPHAG, XNUG,                          &
-                ZEHG, XBG, XCH, XDH, 0., XCG, XDG, 0.,                      &
-                XWETLBDAH_MAX, XWETLBDAG_MAX, XWETLBDAH_MIN, XWETLBDAG_MIN, &
-                ZFDINFTY, XKER_GWETH                                        )
-  WRITE(UNIT=KULOUT,FMT='("*****************************************")')
-  WRITE(UNIT=KULOUT,FMT='("**** UPDATE NEW SET OF GWETH KERNELS ****")')
-  WRITE(UNIT=KULOUT,FMT='("*****************************************")')
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("KND=",I3)') IND
-  WRITE(UNIT=KULOUT,FMT='("KWETLBDAH=",I3)') NWETLBDAH
-  WRITE(UNIT=KULOUT,FMT='("KWETLBDAG=",I3)') NWETLBDAG
-  WRITE(UNIT=KULOUT,FMT='("PALPHAH=",E13.6)') XALPHAH
-  WRITE(UNIT=KULOUT,FMT='("PNUH=",E13.6)') XNUH
-  WRITE(UNIT=KULOUT,FMT='("PALPHAG=",E13.6)') XALPHAG
-  WRITE(UNIT=KULOUT,FMT='("PNUG=",E13.6)') XNUG
-  WRITE(UNIT=KULOUT,FMT='("PEHG=",E13.6)') ZEHG
-  WRITE(UNIT=KULOUT,FMT='("PBG=",E13.6)') XBG
-  WRITE(UNIT=KULOUT,FMT='("PCH=",E13.6)') XCH
-  WRITE(UNIT=KULOUT,FMT='("PDH=",E13.6)') XDH
-  WRITE(UNIT=KULOUT,FMT='("PCG=",E13.6)') XCG
-  WRITE(UNIT=KULOUT,FMT='("PDG=",E13.6)') XDG
-  WRITE(UNIT=KULOUT,FMT='("PWETLBDAH_MAX=",E13.6)') &
-                                                    XWETLBDAH_MAX
-  WRITE(UNIT=KULOUT,FMT='("PWETLBDAG_MAX=",E13.6)') &
-                                                    XWETLBDAG_MAX
-  WRITE(UNIT=KULOUT,FMT='("PWETLBDAH_MIN=",E13.6)') &
-                                                    XWETLBDAH_MIN
-  WRITE(UNIT=KULOUT,FMT='("PWETLBDAG_MIN=",E13.6)') &
-                                                    XWETLBDAG_MIN
-  WRITE(UNIT=KULOUT,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
-  WRITE(UNIT=KULOUT,FMT='("!")')
-  WRITE(UNIT=KULOUT,FMT='("IF( PRESENT(PKER_GWETH) ) THEN")')
-  DO J1 = 1 , NWETLBDAH
-    DO J2 = 1 , NWETLBDAG
-    WRITE(UNIT=KULOUT,FMT='("PKER_GWETH(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_GWETH(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=KULOUT,FMT='("END IF")')
-  ELSE
-  CALL READ_XKER_GWETH (KWETLBDAH,KWETLBDAG,KND,                              &
-                     PALPHAH,PNUH,PALPHAG,PNUG,PEHG,PBG,PCH,PDH,PCG,PDG,      &
-                     PWETLBDAH_MAX,PWETLBDAG_MAX,PWETLBDAH_MIN,PWETLBDAG_MIN, &
-                     PFDINFTY,XKER_GWETH                                      )
-  WRITE(UNIT=KULOUT,FMT='(" Read XKER_GWETH")')
-END IF
-!
-!
-!
-!-------------------------------------------------------------------------------
-!
-!*      10.     SET-UP RADIATIVE PARAMETERS
-!   	        ---------------------------
-!
-!
-! R_eff_i = XFREFFI * (rho*r_i/N_i)**(1/3)
-!
-XFREFFI = 0.5 * ZGAMI(8) * (1.0/XLBI)**XLBEXI
-!  
-!-------------------------------------------------------------------------------
-!
-!
-!*      11.     SOME PRINTS FOR CONTROL
-!   	        -----------------------
-!
-!
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=KULOUT,FMT='(" Summary of the ice particule characteristics")')
-  WRITE(UNIT=KULOUT,FMT='("      PRISTINE ICE")')
-  WRITE(UNIT=KULOUT,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
-                                                      XAI,XBI
-  WRITE(UNIT=KULOUT,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
-                                                      XC_I,XDI
-  WRITE(UNIT=KULOUT,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
-                                                      XALPHAI,XNUI
-  WRITE(UNIT=KULOUT,FMT='("              SNOW")')
-  WRITE(UNIT=KULOUT,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
-                                                      XAS,XBS
-  WRITE(UNIT=KULOUT,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
-                                                      XCS,XDS
-  WRITE(UNIT=KULOUT,FMT='("           concentration:CC=",E13.6," x=",E13.6)') &
-                                                      XCCS,XCXS
-  WRITE(UNIT=KULOUT,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
-                                                      XALPHAS,XNUS
-  WRITE(UNIT=KULOUT,FMT='("            GRAUPEL")')
-  WRITE(UNIT=KULOUT,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
-                                                      XAG,XBG
-  WRITE(UNIT=KULOUT,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
-                                                      XCG,XDG
-  WRITE(UNIT=KULOUT,FMT='("           concentration:CC=",E13.6," x=",E13.6)') &
-                                                      XCCG,XCXG
-  WRITE(UNIT=KULOUT,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
-                                                      XALPHAG,XNUG
-END IF
-!
-!------------------------------------------------------------------------------
-!
-END SUBROUTINE INI_LIMA_COLD_MIXED
diff --git a/src/arome/micro/ini_lima_warm.F90 b/src/arome/micro/ini_lima_warm.F90
deleted file mode 100644
index e1fce381890992a8307515ccecc7873d8c3e0687..0000000000000000000000000000000000000000
--- a/src/arome/micro/ini_lima_warm.F90
+++ /dev/null
@@ -1,439 +0,0 @@
-!      #########################
-       MODULE MODI_INI_LIMA_WARM
-!      #########################
-!
-INTERFACE
-      SUBROUTINE INI_LIMA_WARM (KULOUT, PTSTEP, PDZMIN)
-!
-INTEGER,                 INTENT(IN) :: KULOUT    ! output logical unit number
-REAL,                    INTENT(IN) :: PTSTEP    ! Effective Time step 
-REAL,                    INTENT(IN) :: PDZMIN    ! minimun vertical mesh size
-!
-END SUBROUTINE INI_LIMA_WARM
-!
-END INTERFACE
-!
-END MODULE MODI_INI_LIMA_WARM
-!     #########################################
-      SUBROUTINE INI_LIMA_WARM (KULOUT, PTSTEP, PDZMIN)
-!     #########################################
-!
-!!    PURPOSE
-!!    -------
-!!      The purpose of this routine is to initialize the constants used in the 
-!!    microphysical scheme LIMA for the warm phase species and processes. 
-!!
-!!    AUTHOR
-!!    ------
-!!      J.-M. Cohard     * Laboratoire d'Aerologie*
-!!      J.-P. Pinty      * Laboratoire d'Aerologie*
-!!      S.    Berthet    * Laboratoire d'Aerologie*
-!!      B.    Vié        * Laboratoire d'Aerologie*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original             ??/??/13 
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-USE MODD_CST
-
-USE MODD_PARAM_LIMA
-USE MODD_PARAM_LIMA_WARM
-USE MODD_PARAMETERS
-USE MODD_LUNIT
-!
-USE MODI_LIMA_FUNCTIONS
-USE MODI_HYPGEO
-USE MODI_GAMMA
-!
-IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-INTEGER,                 INTENT(IN) :: KULOUT    ! output logical unit number
-REAL,                    INTENT(IN) :: PTSTEP    ! Effective Time step 
-REAL,                    INTENT(IN) :: PDZMIN    ! minimun vertical mesh size
-!
-!*       0.2   Declarations of local variables :
-!
-INTEGER :: IKB                ! Coordinates of the first and last physical 
-                              ! points along z
-INTEGER :: J1                 ! Internal loop indexes
-INTEGER :: JMOD               ! Internal loop to index the CCN modes
-!
-REAL, DIMENSION(6)  :: ZGAMC, ZGAMR ! parameters involving various moments of
-                              ! the generalized gamma law
-!
-REAL :: ZTT                   ! Temperature in Celsius
-REAL :: ZLV                   ! Latent heat of vaporization
-REAL :: ZSS                   ! Supersaturation
-REAL :: ZPSI1, ZG             ! Psi1 and G functions
-REAL :: ZAHENR                ! r_star (FH92)
-REAL :: ZVTRMAX               ! Raindrop maximal fall velocity
-REAL :: ZRHO00                ! Surface reference air density
-REAL :: ZSURF_TEN             ! Water drop surface tension
-REAL :: ZSMIN, ZSMAX          ! Minimal and maximal supersaturation used to
-                              ! discretize the HYP functions
-!
-!
-INTEGER  :: IRESP   ! Return code of FM-routines
-LOGICAL  :: GFLAG   ! Logical flag for printing the constatnts on the output
-                    ! listing
-!  
-!-------------------------------------------------------------------------------
-!
-!
-!*       1.     CHARACTERISTICS OF THE SPECIES
-!   	        ------------------------------
-!
-!
-!*       1.1    Cloud droplet characteristics
-!
-XAC = (XPI/6.0)*XRHOLW
-XBC = 3.0
-XCC = XRHOLW*XG/(18.0*1.816E-5) ! Stokes flow (Pruppacher eq. 10-138 for T=293K)
-!XCC = XRHOLW*XG/(18.0*1.7E-5) ! Stokes flow (Pruppacher eq. 10-138 for T=273K)
-XDC = 2.0
-!
-XF0C = 1.00
-XF2C = 0.108
-!
-XC1C = 1./2.
-!
-!*       1.2    Raindrops characteristics
-!
-XAR = (XPI/6.0)*XRHOLW
-XBR = 3.0
-XCR = 842.
-XDR = 0.8
-!
-XF0R = 0.780
-!Correction BVIE Pruppacher 1997 eq. 13-61
-!XF1R = 0.265
-XF1R = 0.308
-!
-!
-!------------------------------------------------------------------------------
-!
-!
-!*       2.     DIMENSIONAL DISTRIBUTIONS OF THE SPECIES
-!   	        ----------------------------------------
-!
-!
-!*       2.1    Cloud droplet distribution
-!
-!XALPHAC = 3.0  ! Gamma law of the Cloud droplet (here volume-like distribution)
-!XNUC    = 3.0  ! Gamma law with little dispersion
-!
-!*       2.2    Raindrop distribution
-!
-!XALPHAR = 3.0  ! Gamma law of the raindrops (here volume-like distribution)
-!XNUR    = 3.0  ! Gamma law for the raindrops 
-!XNUR    = 0.1
-!
-!*       2.3    Precalculation of the gamma function momentum
-!
-!
-ZGAMC(1) = GAMMA_X0D(XNUC)
-ZGAMC(2) = MOMG(XALPHAC,XNUC,3.)
-ZGAMC(3) = MOMG(XALPHAC,XNUC,6.)
-ZGAMC(4) = ZGAMC(3)-ZGAMC(2)**2  ! useful for Sig_c
-ZGAMC(5) = MOMG(XALPHAC,XNUC,9.)
-ZGAMC(6) = MOMG(XALPHAC,XNUC,3.)**(2./3.)/MOMG(XALPHAC,XNUC,2.)
-!
-ZGAMR(1) = GAMMA_X0D(XNUR)
-ZGAMR(2) = MOMG(XALPHAR,XNUR,3.)
-ZGAMR(3) = MOMG(XALPHAR,XNUR,6.)
-ZGAMR(4) = MOMG(XALPHAR,XNUR,6.)
-ZGAMR(5) = MOMG(XALPHAR,XNUR,9.)
-ZGAMR(6) = MOMG(XALPHAR,XNUR,3.)**(2./3.)/MOMG(XALPHAR,XNUR,2.)
-!
-!*       2.4    Csts for the shape parameter
-!
-XLBC   = XAR*ZGAMC(2)
-XLBEXC = 1.0/XBC
-XLBR   = XAR*ZGAMR(2)
-XLBEXR = 1.0/XBR
-!
-!
-!------------------------------------------------------------------------------
-!
-!
-!*       3.     CONSTANTS FOR THE SEDIMENTATION
-!   	        -------------------------------
-!
-!
-!*       4.1    Exponent of the fall-speed air density correction
-!
-IKB = 1 + JPVEXT
-! Correction
-!ZRHO00 = XP00/(XRD*XTHVREFZ(IKB))
-ZRHO00 = 1.2041 ! at P=1013.25hPa and T=20°C
-!
-!*       4.2    Constants for sedimentation
-!
-XFSEDRR  = XCR*GAMMA_X0D(XNUR+(XDR+3.)/XALPHAR)/GAMMA_X0D(XNUR+3./XALPHAR)*     &
-            (ZRHO00)**XCEXVT
-XFSEDCR  = XCR*GAMMA_X0D(XNUR+XDR/XALPHAR)/GAMMA_X0D(XNUR)*     &
-            (ZRHO00)**XCEXVT
-XFSEDRC  = XCC*GAMMA_X0D(XNUC+(XDC+3.)/XALPHAC)/GAMMA_X0D(XNUC+3./XALPHAC)*     &
-            (ZRHO00)**XCEXVT
-XFSEDCC  = XCC*GAMMA_X0D(XNUC+XDC/XALPHAC)/GAMMA_X0D(XNUC)*     &
-            (ZRHO00)**XCEXVT
-
-!
-!
-!------------------------------------------------------------------------------
-!
-!
-!*       4.     CONSTANTS FOR THE NUCLEATION PROCESS
-!   	        ------------------------------------
-!
-!
-XWMIN = 0.01 ! Minimal positive vertical velocity required 
-             ! for the activation process in Twomey and CPB scheme
-XTMIN = -0.000278 ! Minimal cooling required 1K/h
-!
-XDIVA = 226.E-7 ! Diffusivity of water vapor in the air
-XTHCO = 24.3E-3 ! Air thermal conductivity
-!
-!                        ( 8 Mw (Sigma)sw )3  Pi*Rho_l
-!            XCSTDCRIT = ( -------------- ) * --------
-!                        ( 3    Ra Rhow   )     6
-!
-ZSURF_TEN = 76.1E-3  ! Surface tension of a water drop at T=0 C
-XCSTDCRIT = (XPI/6.)*XRHOLW*( (8.0*ZSURF_TEN )/( 3.0*XRV*XRHOLW ) )**3
-!
-!
-!
-!	4.1   Tabulation of the hypergeometric functions in 'no units'
-!             --------------------------------------------------------
-!
-!               In LIMA's nucleation parameterization,
-!               supersaturation is not in % : Smax=0.01 for a 1% supersaturation.
-!               This is accounted for in the modified Beta and C values.
-!
-!               Here, we tabulate the
-!               F(mu,k/2, k/2+1 ,-Beta S**2) -> XHYPF12
-!               F(mu,k/2,(k+3)/2,-Beta S**2) -> XHYPF32 functions
-!               using a logarithmic scale for S
-!
-NHYP = 500 ! Number of points for the tabulation
-ALLOCATE (XHYPF12( NHYP, NMOD_CCN ))
-ALLOCATE (XHYPF32( NHYP, NMOD_CCN ))
-!
-ZSMIN = 1.0E-5  ! Minimum supersaturation set at 0.001 % 
-ZSMAX = 5.0E-2  ! Maximum supersaturation set at 5 %
-XHYPINTP1 = FLOAT(NHYP-1)/LOG(ZSMAX/ZSMIN)
-XHYPINTP2 = FLOAT(NHYP)-XHYPINTP1*LOG(ZSMAX)
-!
-DO JMOD = 1,NMOD_CCN 
-   DO J1 = 1,NHYP
-      ZSS =ZSMAX*(ZSMIN/ZSMAX)**(FLOAT(NHYP-J1)/FLOAT(NHYP-1))
-      XHYPF12(J1,JMOD) = HYPGEO(XMUHEN_MULTI(JMOD),0.5*XKHEN_MULTI(JMOD),&
-                                0.5*XKHEN_MULTI(JMOD)+1.0,XBETAHEN_MULTI(JMOD),ZSS)
-      XHYPF32(J1,JMOD) = HYPGEO(XMUHEN_MULTI(JMOD),0.5*XKHEN_MULTI(JMOD),&
-                                0.5*XKHEN_MULTI(JMOD)+1.5,XBETAHEN_MULTI(JMOD),ZSS)
-   END DO
-ENDDO
-!
-NAHEN = 81 ! Tabulation for each Kelvin degree in the range XTT-40 to XTT+40
-XAHENINTP1 = 1.0
-XAHENINTP2 = 0.5*FLOAT(NAHEN-1) - XTT
-!
-!		Compute the tabulation of function of T :
-!
-!                                   1
-!               XAHENG = -----------------------
-!                          XCSTHEN * G**(3/2)
-!
-!            Compute constants for the calculation of Smax.
-!            XCSTHEN = 1/(rho_l 2 pi)   
-!            PSI1
-!            PSI3
-!            T
-!            Lv
-!            G
-!
-ALLOCATE (XAHENG(NAHEN))
-ALLOCATE (XPSI1(NAHEN))
-ALLOCATE (XPSI3(NAHEN))
-XCSTHEN = 1.0 / ( XRHOLW*2.0*XPI )
-DO J1 = 1,NAHEN
-   ZTT = XTT + FLOAT(J1-(NAHEN-1)/2)                                         ! T
-   ZLV = XLVTT+(XCPV-XCL)*(ZTT-XTT)                                          ! Lv
-   XPSI1(J1) = (XG/(XRD*ZTT))*(XMV*ZLV/(XMD*XCPD*ZTT)-1.)                    ! Psi1
-   XPSI3(J1) = -1*XMV*ZLV/(XMD*XRD*(ZTT**2))                                 ! Psi3
-   ZG    = 1./( XRHOLW*( (XRV*ZTT)/                                        & ! G
-                         (XDIVA*EXP(XALPW-(XBETAW/ZTT)-(XGAMW*ALOG(ZTT)))) &
-                       + (ZLV/ZTT)**2/(XTHCO*XRV) ) )              
-   XAHENG(J1) = XCSTHEN/(ZG)**(3./2.)
-END DO
-!-------------------------------------------------------------------------------
-!
-! Parameters used to initialise the droplet and drop concentration
-! from the respective mixing ratios (used in RESTART_RAIN_C2R2)
-!
-! Droplet case
-!
-!!ALLOCATE(XCONCC_INI(SIZE(PNFS,1),SIZE(PNFS,2),SIZE(PNFS,3),SIZE(PNFS,4))) !NMOD_CCN))
-!!  XCONCC_INI(:,:,:,:) = 0.8 * PNFS(:,:,:,:) ! 80% of the maximum CCN conc. is assumed
-!
-! Raindrop case
-!
-XCONCR_PARAM_INI = (1.E7)**3/(XPI*XRHOLW) ! MP law with N_O=1.E7 m-1 is assumed
-!
-!
-!------------------------------------------------------------------------------
-!
-!
-!*       5.     CONSTANTS FOR THE COALESCENCE PROCESSES
-!   	        ---------------------------------------
-!
-!
-!*       6.1    Csts for the coalescence processes
-!
-XKERA1 = 2.59E15   ! From Long  a1=9.44E9 cm-3 so XKERA1= 9.44E9*1E6*(PI/6)**2
-XKERA2 = 3.03E3    ! From Long  a2=5.78E3      so XKERA2= 5.78E3*    (PI/6)
-!
-! Cst for the cloud droplet selfcollection process
-!
-XSELFC = XKERA1*ZGAMC(3)
-!
-! Cst for the autoconversion process
-!
-XAUTO1 = 6.25E18*(ZGAMC(2))**(1./3.)*SQRT(ZGAMC(4))
-XAUTO2 = 0.5E6*(ZGAMC(4))**(1./6.)
-XLAUTR = 2.7E-2
-XLAUTR_THRESHOLD  = 0.4
-XITAUTR= 0.27 ! (Notice that T2 of BR74 is uncorrect and that 0.27=1./3.7
-XITAUTR_THRESHOLD = 7.5
-XCAUTR = 3.5E9
-!
-! Cst for the accretion process
-!
-XACCR1 = ZGAMR(2)**(1./3.)
-XACCR2 = 5.0E-6
-XACCR3 = 12.6E-4
-XACCR4 = XAUTO2
-XACCR5 = 3.5
-XACCR6 = 1.2*XCAUTR
-XACCR_CLARGE1 = XKERA2*ZGAMC(2)
-XACCR_CLARGE2 = XKERA2*ZGAMR(2)
-XACCR_RLARGE1 = XKERA2*ZGAMC(3)*XRHOLW*(XPI/6.0)
-XACCR_RLARGE2 = XKERA2*ZGAMC(2)*ZGAMR(2)*XRHOLW*(XPI/6.0)
-XACCR_CSMALL1 = XKERA1*ZGAMC(3)
-XACCR_CSMALL2 = XKERA1*ZGAMR(3)
-XACCR_RSMALL1 = XKERA1*ZGAMC(5)*XRHOLW*(XPI/6.0)
-XACCR_RSMALL2 = XKERA1*ZGAMC(2)*ZGAMR(3)*XRHOLW*(XPI/6.0)
-!
-! Cst for the raindrop self-collection/breakup process
-!
-XSCBU2 = XKERA2*ZGAMR(2)
-XSCBU3 = XKERA1*ZGAMR(3)
-XSCBU_EFF1 = 0.6E-3
-XSCBU_EFF2 = 2.0E-3
-XSCBUEXP1 = -2500.0
-!
-!
-!------------------------------------------------------------------------------
-!
-!
-!*       6.     CONSTANTS FOR THE "SONTANEOUS" BREAK-UP
-!   	        ---------------------------------------
-!
-!
-XSPONBUD1 = 3.0E-3
-XSPONBUD2 = 4.0E-3
-XSPONBUD3 = 5.0E-3
-XSPONCOEF2 = ((XSPONBUD3/XSPONBUD2)**3 - 1.0)/(XSPONBUD3-XSPONBUD1)**2
-!
-!
-!------------------------------------------------------------------------------
-!
-!
-!*        7.    CONSTANTS FOR EVAPORATION PROCESS
-!   	        ---------------------------------------
-!
-!
-X0CNDC = (4.0*XPI)*XC1C*XF0C*MOMG(XALPHAC,XNUC,1.)
-X2CNDC = (4.0*XPI)*XC1C*XF2C*XCC*MOMG(XALPHAC,XNUC,XDC+2.0)
-!
-! Valeurs utiles pour le calcul de l'évaporation en fonction de N_r
-!
-!XEX0EVAR = -1.0
-!XEX1EVAR = -1.0 - (XDR+1.0)*0.5
-!XEX2EVAR = -0.5*XCEXVT
-!
-!X0EVAR = (2.0*XPI)*XF0R*GAMMA_X0D(XNUR+1./XALPHAR)/GAMMA_X0D(XNUR)
-!X1EVAR = (2.0*XPI)*XF1R*((ZRHO00)**(XCEXVT)*(XCR/0.15E-4))**0.5*    &
-!           GAMMA_X0D(XNUR+(XDR+3.0)/(2.0*XALPHAR))/GAMMA_X0D(XNUR)
-!
-!
-! Valeurs utiles pour le calcul de l'évaporation en fonction de r_r
-!
-XEX0EVAR = 2.0
-XEX1EVAR = 2.0 - (XDR+1.0)*0.5
-XEX2EVAR = -0.5*XCEXVT
-!
-X0EVAR = (12.0)*XF0R*GAMMA_X0D(XNUR+1./XALPHAR)/GAMMA_X0D(XNUR+3./XALPHAR)
-X1EVAR = (12.0)*XF1R*((ZRHO00)**(XCEXVT)*(XCR/0.15E-4))**0.5*    &
-           GAMMA_X0D(XNUR+(XDR+3.0)/(2.0*XALPHAR))/GAMMA_X0D(XNUR+3./XALPHAR)
-!
-!
-!------------------------------------------------------------------------------
-!
-!
-!*       8.     SET-UP RADIATIVE PARAMETERS
-!   	        ---------------------------
-!
-!
-! R_eff_c = XFREFFC * (rho*r_c/N_c)**(1/3)
-!
-!
-XFREFFC = 0.5 * ZGAMC(6) * (1.0/XAC)**(1.0/3.0)
-XFREFFR = 0.5 * ZGAMR(6) * (1.0/XAR)**(1.0/3.0)
-!
-! Coefficients used to compute reff when both cloud and rain are present
-!
-XCREC = 1.0/ (ZGAMC(6) * XAC**(2.0/3.0))
-XCRER = 1.0/ (ZGAMR(6) * XAR**(2.0/3.0))
-!
-!
-!------------------------------------------------------------------------------
-!
-!
-!*       9.     SOME PRINTS FOR CONTROL
-!   	        -----------------------
-!
-!
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=KULOUT,FMT='(" Summary of the cloud particule characteristics")')
-  WRITE(UNIT=KULOUT,FMT='("             CLOUD")')
-  WRITE(UNIT=KULOUT,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
-                                                      XAR,XBR
-  WRITE(UNIT=KULOUT,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
-                                                      XCC,XDC
-  WRITE(UNIT=KULOUT,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
-                                                      XALPHAC,XNUC
-  WRITE(UNIT=KULOUT,FMT='("               RAIN")')
-  WRITE(UNIT=KULOUT,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
-                                                      XAR,XBR
-  WRITE(UNIT=KULOUT,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
-                                                      XCR,XDR
-!!$  WRITE(UNIT=KULOUT,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
-!!$                                                      XALPHAR,XNUR
-!!$  WRITE(UNIT=KULOUT,FMT='(" Description of the nucleation spectrum")')
-!!$  WRITE(UNIT=KULOUT,FMT='("         C=",E13.6,"  k=",E13.6)') XCHEN, XKHEN
-!!$  WRITE(UNIT=KULOUT,FMT='("      Beta=",E13.6," MU=",E13.6)') XBETAHEN, XMUHEN
-!!$  WRITE(UNIT=KULOUT,FMT='("      CCN max=",E13.6)') XCONC_CCN
-END IF
-!
-!------------------------------------------------------------------------------
-!
-END SUBROUTINE INI_LIMA_WARM
diff --git a/src/arome/micro/init_aerosol_properties.F90 b/src/arome/micro/init_aerosol_properties.F90
deleted file mode 100644
index 06cec3bfa4d198b4f2d7a9f792293ffbff43f4ee..0000000000000000000000000000000000000000
--- a/src/arome/micro/init_aerosol_properties.F90
+++ /dev/null
@@ -1,370 +0,0 @@
-!      ####################
-       MODULE MODI_INIT_AEROSOL_PROPERTIES
-INTERFACE
-   SUBROUTINE INIT_AEROSOL_PROPERTIES
-   END SUBROUTINE INIT_AEROSOL_PROPERTIES
-END INTERFACE
-END MODULE MODI_INIT_AEROSOL_PROPERTIES
-!      ####################
-!
-!     #############################################################
-      SUBROUTINE INIT_AEROSOL_PROPERTIES
-!     #############################################################
-
-!!
-!!
-!!      PURPOSE
-!!      -------
-!!      
-!!      Define the aerosol properties
-!!
-!!
-!!    AUTHOR
-!!    ------
-!!      J.-P. Pinty      * Laboratoire d'Aerologie*
-!!      S.    Berthet    * Laboratoire d'Aerologie*
-!!      B.    Vié        * Laboratoire d'Aerologie*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original             ??/??/13 
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-USE MODD_LUNIT,           ONLY : ILUOUT, CLUOUT0
-USE MODD_PARAM_LIMA,      ONLY : LWARM_LIMA, LACTI_LIMA, NMOD_CCN, HINI_CCN, HTYPE_CCN,        &
-                                 XR_MEAN_CCN, XLOGSIG_CCN, XRHO_CCN,                 &
-                                 XKHEN_MULTI, XMUHEN_MULTI, XBETAHEN_MULTI,          &
-                                 XLIMIT_FACTOR, CCCN_MODES, LSCAV,                    &
-                                 XACTEMP_CCN, XFSOLUB_CCN,                           &
-                                 LCOLD_LIMA, LNUCL_LIMA, NMOD_IFN, NSPECIE, CIFN_SPECIES,       &
-                                 XMDIAM_IFN, XSIGMA_IFN, XRHO_IFN, XFRAC, XFRAC_REF, &
-                                 CINT_MIXING, NMOD_IMM, NINDICE_CCN_IMM, NIMM,        &
-                                 NPHILLIPS
-!
-USE MODI_GAMMA
-!
-IMPLICIT NONE
-!
-REAL             ::  XKHEN0     
-REAL             ::  XLOGSIG0   
-REAL             ::  XALPHA1     
-REAL             ::  XMUHEN0    
-REAL             ::  XALPHA2   
-REAL             ::  XBETAHEN0  
-REAL             ::  XR_MEAN0  
-REAL             ::  XALPHA3    
-REAL             ::  XALPHA4     
-REAL             ::  XALPHA5      
-REAL             ::  XACTEMP0    
-REAL             ::  XALPHA6   
-!
-REAL, DIMENSION(6) :: XKHEN_TMP   = (/1.56, 1.56, 1.56, 1.56, 1.56, 1.56 /)
-REAL, DIMENSION(6) :: XMUHEN_TMP  = (/0.80, 0.80, 0.80, 0.80, 0.80, 0.80 /)
-REAL, DIMENSION(6) :: XBETAHEN_TMP= (/136., 136., 136., 136., 136., 136. /)
-!
-REAL, DIMENSION(3) :: RCCN
-REAL, DIMENSION(3) :: LOGSIGCCN
-REAL, DIMENSION(3) :: RHOCCN
-!
-INTEGER            :: I,J,JMOD
-!
-INTEGER  :: ILUOUT0 ! Logical unit number for output-listing
-INTEGER  :: IRESP   ! Return code of FM-routines
-
-!
-!-------------------------------------------------------------------------------
-!
-CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP)
-!
-!!!!!!!!!!!!!!!!
-! CCN properties
-!!!!!!!!!!!!!!!!
-!
-IF ( NMOD_CCN .GE. 1 ) THEN
-!
-   IF (.NOT.(ALLOCATED(XR_MEAN_CCN))) ALLOCATE(XR_MEAN_CCN(NMOD_CCN))
-   IF (.NOT.(ALLOCATED(XLOGSIG_CCN))) ALLOCATE(XLOGSIG_CCN(NMOD_CCN))
-   IF (.NOT.(ALLOCATED(XRHO_CCN)))    ALLOCATE(XRHO_CCN(NMOD_CCN))
-!
-   SELECT CASE (CCCN_MODES)
-   CASE ('JUNGFRAU')
-      RCCN(:)   = (/ 0.02E-6 , 0.058E-6 , 0.763E-6 /)
-      LOGSIGCCN(:) = (/ 0.28 , 0.57 , 0.34 /)
-      RHOCCN(:) = (/ 1500. , 1500. , 1500. /)
-   CASE ('COPT')
-      RCCN(:)   = (/ 0.125E-6 , 0.4E-6 , 1.0E-6 /)
-      LOGSIGCCN(:) = (/ 0.69 , 0.41 , 0.47 /)
-      RHOCCN(:) = (/ 1000. , 1000. , 1000. /)
-   CASE ('MACC')
-      RCCN(:)   = (/ 0.4E-6 , 0.25E-6 , 0.1E-6 /)
-      LOGSIGCCN(:) = (/ 0.64 , 0.47 , 0.47 /)
-      RHOCCN(:) = (/ 2160. , 2000. , 1750. /)
-   CASE ('MACC_JPP')
-! sea-salt, sulfate, hydrophilic (GADS data)
-      RCCN(:)      = (/ 0.209E-6 , 0.0695E-6 , 0.0212E-6 /)
-      LOGSIGCCN(:) = (/ 0.708    , 0.708     , 0.806     /)
-      RHOCCN(:)    = (/ 2200.    , 1700.     , 1800.     /)
-   CASE ('SIRTA')
-      RCCN(:)   = (/ 0.153E-6 , 0.058E-6 , 0.763E-6 /)
-      LOGSIGCCN(:) = (/ 0.846 , 0.57 , 0.34 /)
-      RHOCCN(:) = (/ 1500. , 1500. , 1500. /)
-   CASE ('CPS00')
-      RCCN(:)   = (/ 0.0218E-6 , 0.058E-6 , 0.763E-6 /)
-      LOGSIGCCN(:) = (/ 1.16 , 0.57 , 0.34 /)
-      RHOCCN(:) = (/ 1500. , 1500. , 1500. /)
-   CASE ('MOCAGE') ! ordre : sulfates, sels marins, BC+O
-      RCCN(:)   = (/ 0.01E-6 , 0.05E-6 , 0.008E-6 /)
-      LOGSIGCCN(:) = (/ 0.788 , 0.993 , 0.916 /)
-      RHOCCN(:) = (/ 1000. , 2200. , 1000. /)
-   CASE DEFAULT
-! d'après Jaenicke 1993, aerosols troposphere libre, masse volumique typique
-      RCCN(:)   = (/ 0.0035E-6 , 0.125E-6 , 0.26E-6 /)
-      LOGSIGCCN(:) = (/ 0.645 , 0.253 , 0.425 /)
-      RHOCCN(:) = (/ 1000. , 1000. , 1000. /)
-  ENDSELECT
-!
-  DO I=1, MIN(NMOD_CCN,3)
-    XR_MEAN_CCN(I) = RCCN(I)
-    XLOGSIG_CCN(I) = LOGSIGCCN(I)
-    XRHO_CCN(I)    = RHOCCN(I)
-  END DO
-!
-  IF (NMOD_CCN .EQ. 4) THEN
-! default values as coarse sea salt mode
-    XR_MEAN_CCN(4) = 1.75E-6
-    XLOGSIG_CCN(4) = 0.708
-    XRHO_CCN(4)    = 2200.   
-  END IF
-!
-!
-!		Compute CCN spectra parameters from CCN characteristics
-!
-!* INPUT : XBETAHEN_TEST is in 'percent' and XBETAHEN_MULTI in 'no units', 
-!  XK... and XMU... are invariant
-!
-  IF (.NOT.(ALLOCATED(XKHEN_MULTI)))    ALLOCATE(XKHEN_MULTI(NMOD_CCN))  
-  IF (.NOT.(ALLOCATED(XMUHEN_MULTI)))   ALLOCATE(XMUHEN_MULTI(NMOD_CCN))
-  IF (.NOT.(ALLOCATED(XBETAHEN_MULTI))) ALLOCATE(XBETAHEN_MULTI(NMOD_CCN))
-  IF (.NOT.(ALLOCATED(XLIMIT_FACTOR)))  ALLOCATE(XLIMIT_FACTOR(NMOD_CCN))
-!
-  IF (HINI_CCN == 'CCN'.AND. (.NOT. LSCAV) ) THEN
-! Numerical initialization without dependence on AP physical properties
-100 DO JMOD = 1, NMOD_CCN 
-      XKHEN_MULTI(JMOD)    = XKHEN_TMP(JMOD)  
-      XMUHEN_MULTI(JMOD)   = XMUHEN_TMP(JMOD)
-      XBETAHEN_MULTI(JMOD) = XBETAHEN_TMP(JMOD)*(100.)**2                    
-! no units relative to smax 
-      XLIMIT_FACTOR(JMOD)  = ( GAMMA_X0D(0.5*XKHEN_MULTI(JMOD)+1.)&
-           *GAMMA_X0D(XMUHEN_MULTI(JMOD)-0.5*XKHEN_MULTI(JMOD)) ) &
-           /( XBETAHEN_MULTI(JMOD)**(0.5*XKHEN_MULTI(JMOD))       &
-           *GAMMA_X0D(XMUHEN_MULTI(JMOD)) ) ! N/C
-    END DO
-  ELSE IF (HINI_CCN == 'CCN'.AND. LSCAV ) THEN
-! Attention !
-    WRITE(UNIT=ILUOUT0,FMT='("You are using a numerical initialization &
-      &not depending on the aerosol properties, however you need it for &
-      &scavenging.                                                      &
-      &With LSCAV = true, HINI_CCN should be set to AER for consistency")')
-    go to 100
-  ELSE IF (HINI_CCN == 'AER') THEN
-! 
-! Initialisation depending on aerosol physical properties
-!
-! First, computing k, mu, beta, and XLIMIT_FACTOR as in CPS2000 (eqs 9a-9c)
-!
-! XLIMIT_FACTOR replaces C, because C depends on the CCN number concentration
-! which is therefore determined at each grid point and time step as 
-! Nccn / XLIMIT_FACTOR
-!
-    DO JMOD = 1, NMOD_CCN 
-!
-       SELECT CASE (HTYPE_CCN(JMOD))
-       CASE ('M') ! CCN marins
-          XKHEN0     = 3.251
-          XLOGSIG0   = 0.4835
-          XALPHA1    = -1.297
-          XMUHEN0    = 2.589
-          XALPHA2    = -1.511
-          XBETAHEN0  = 621.689
-          XR_MEAN0   = 0.133E-6
-          XALPHA3    = 3.002
-          XALPHA4    = 1.081
-          XALPHA5    = 1.0
-          XACTEMP0   = 290.16
-          XALPHA6    = 2.995
-       CASE ('C') ! CCN continentaux
-          XKHEN0     = 1.403
-          XLOGSIG0   = 1.16
-          XALPHA1    = -1.172
-          XMUHEN0    = 0.834
-          XALPHA2    = -1.350
-          XBETAHEN0  = 25.499
-          XR_MEAN0   = 0.0218E-6
-          XALPHA3    = 3.057
-          XALPHA4    = 4.092
-          XALPHA5    = 1.011
-          XACTEMP0   = 290.16
-          XALPHA6    = 3.076
-       CASE DEFAULT
-          WRITE(UNIT=ILUOUT0,FMT='("You must specify HTYPE_CNN(JMOD)=C or M &
-               &in EXSEG1.nam for each CCN mode")')
-          CALL ABORT
-       ENDSELECT
-!
-      XKHEN_MULTI(JMOD)   =   XKHEN0*(XLOGSIG_CCN(JMOD)/XLOGSIG0)**XALPHA1
-      XMUHEN_MULTI(JMOD)  =  XMUHEN0*(XLOGSIG_CCN(JMOD)/XLOGSIG0)**XALPHA2
-      XBETAHEN_MULTI(JMOD)=XBETAHEN0*(XR_MEAN_CCN(JMOD)/XR_MEAN0)**XALPHA3 &
-           * EXP( XALPHA4*((XLOGSIG_CCN(JMOD)/XLOGSIG0)-1.) )              &
-           * XFSOLUB_CCN**XALPHA5                                          &
-           * (XACTEMP_CCN/XACTEMP0)**XALPHA6
-      XLIMIT_FACTOR(JMOD)  = ( GAMMA_X0D(0.5*XKHEN_MULTI(JMOD)+1.) &
-           *GAMMA_X0D(XMUHEN_MULTI(JMOD)-0.5*XKHEN_MULTI(JMOD)) )  &
-           /( XBETAHEN_MULTI(JMOD)**(0.5*XKHEN_MULTI(JMOD))        &
-           *GAMMA_X0D(XMUHEN_MULTI(JMOD)) )
-    ENDDO
-!
-! These parameters are correct for a nucleation spectra 
-! Nccn(Smax) = C Smax^k F(mu,k/2,1+k/2,-beta Smax^2)
-! with Smax expressed in % (Smax=1 for a supersaturation of 1%).
-!
-! All the computations in LIMA are done for an adimensional Smax (Smax=0.01 for 
-! a 1% supersaturation). So beta and C (XLIMIT_FACTOR) are changed :
-! new_beta = beta * 100^2
-! new_C = C * 100^k (ie XLIMIT_FACTOR = XLIMIT_FACTOR / 100^k)
-!
-    XBETAHEN_MULTI(:) = XBETAHEN_MULTI(:) * 10000
-    XLIMIT_FACTOR(:)  = XLIMIT_FACTOR(:) / (100**XKHEN_MULTI(:))
-  END IF
-END IF ! NMOD_CCN > 0
-!
-!!!!!!!!!!!!!!!!
-! IFN properties
-!!!!!!!!!!!!!!!!
-!
-IF ( NMOD_IFN .GE. 1 ) THEN
-  SELECT CASE (CIFN_SPECIES)
-   CASE ('MOCAGE')
-         NSPECIE = 4
-         IF (.NOT.(ALLOCATED(XMDIAM_IFN))) ALLOCATE(XMDIAM_IFN(NSPECIE))
-         IF (.NOT.(ALLOCATED(XSIGMA_IFN))) ALLOCATE(XSIGMA_IFN(NSPECIE))
-         IF (.NOT.(ALLOCATED(XRHO_IFN)))   ALLOCATE(XRHO_IFN(NSPECIE))
-         XMDIAM_IFN = (/ 0.05E-6 , 3.E-6 , 0.016E-6 , 0.016E-6 /)
-         XSIGMA_IFN = (/ 2.4 , 1.6 , 2.5 , 2.5 /)
-         XRHO_IFN   = (/ 2650. , 2650. , 1000. , 1000. /)
-   CASE ('MACC_JPP')
-! sea-salt, sulfate, hydrophilic (GADS data)
-! 2 species, dust-metallic and hydrophobic (as BC)
-! (Phillips et al. 2013 and GADS data)
-      NSPECIE = 4 ! DM1, DM2, BC, BIO+(O)
-      IF (.NOT.(ALLOCATED(XMDIAM_IFN))) ALLOCATE(XMDIAM_IFN(NSPECIE))
-      IF (.NOT.(ALLOCATED(XSIGMA_IFN))) ALLOCATE(XSIGMA_IFN(NSPECIE))
-      IF (.NOT.(ALLOCATED(XRHO_IFN)))   ALLOCATE(XRHO_IFN(NSPECIE))
-      XMDIAM_IFN = (/0.8E-6, 3.0E-6, 0.025E-6, 0.2E-6/)
-      XSIGMA_IFN = (/2.0, 2.15, 2.0, 1.6 /)
-      XRHO_IFN   = (/2600., 2600., 1000., 1500./) 
-   CASE DEFAULT
-      IF (NPHILLIPS == 8) THEN
-! 4 species, according to Phillips et al. 2008
-         NSPECIE = 4
-         IF (.NOT.(ALLOCATED(XMDIAM_IFN))) ALLOCATE(XMDIAM_IFN(NSPECIE))
-         IF (.NOT.(ALLOCATED(XSIGMA_IFN))) ALLOCATE(XSIGMA_IFN(NSPECIE))
-         IF (.NOT.(ALLOCATED(XRHO_IFN)))   ALLOCATE(XRHO_IFN(NSPECIE))
-         XMDIAM_IFN = (/0.8E-6, 3.0E-6, 0.2E-6, 0.2E-6/)
-         XSIGMA_IFN = (/1.9, 1.6, 1.6, 1.6 /)
-         XRHO_IFN   = (/2300., 2300., 1860., 1500./)
-      ELSE IF (NPHILLIPS == 13) THEN
-! 4 species, according to Phillips et al. 2013
-         NSPECIE = 4
-         IF (.NOT.(ALLOCATED(XMDIAM_IFN))) ALLOCATE(XMDIAM_IFN(NSPECIE))
-         IF (.NOT.(ALLOCATED(XSIGMA_IFN))) ALLOCATE(XSIGMA_IFN(NSPECIE))
-         IF (.NOT.(ALLOCATED(XRHO_IFN)))   ALLOCATE(XRHO_IFN(NSPECIE))
-         XMDIAM_IFN = (/0.8E-6, 3.0E-6, 90.E-9, 0.163E-6/)
-         XSIGMA_IFN = (/1.9, 1.6, 1.6, 2.54 /)
-         XRHO_IFN   = (/2300., 2300., 1860., 1000./)
-      END IF
-   ENDSELECT
-!
-! internal mixing
-!
-   IF (.NOT.(ALLOCATED(XFRAC))) ALLOCATE(XFRAC(NSPECIE,NMOD_IFN))
-   XFRAC(:,:)=0. 
-   SELECT CASE (CINT_MIXING)
-   CASE ('DM1')
-      XFRAC(1,:)=1.
-   CASE ('DM2')
-      XFRAC(2,:)=1.
-   CASE ('BC')
-      XFRAC(3,:)=1.
-   CASE ('O')
-      XFRAC(4,:)=1.
-   CASE ('MACC')
-      XFRAC(1,1)=0.99
-      XFRAC(2,1)=0.01
-      XFRAC(3,1)=0.
-      XFRAC(4,1)=0.
-      XFRAC(1,2)=0.
-      XFRAC(2,2)=0.
-      XFRAC(3,2)=0.5
-      XFRAC(4,2)=0.5
-   CASE ('MACC_JPP')
-      XFRAC(1,1)=1.0
-      XFRAC(2,1)=0.0
-      XFRAC(3,1)=0.0
-      XFRAC(4,1)=0.0
-      XFRAC(1,2)=0.0
-      XFRAC(2,2)=0.0
-      XFRAC(3,2)=0.5
-      XFRAC(4,2)=0.5
-   CASE ('MOCAGE')
-      XFRAC(1,1)=1.
-      XFRAC(2,1)=0.
-      XFRAC(3,1)=0.
-      XFRAC(4,1)=0.
-      XFRAC(1,2)=0.
-      XFRAC(2,2)=0.
-      XFRAC(3,2)=0.7
-      XFRAC(4,2)=0.3
-   CASE DEFAULT
-      XFRAC(1,:)=0.6
-      XFRAC(2,:)=0.009
-      XFRAC(3,:)=0.33
-      XFRAC(4,:)=0.06
-   ENDSELECT
-!
-! Phillips 08 alpha (table 1) 
-   IF (.NOT.(ALLOCATED(XFRAC_REF))) ALLOCATE(XFRAC_REF(4))
-      IF (NPHILLIPS == 13) THEN
-         XFRAC_REF(1)=0.66
-         XFRAC_REF(2)=0.66
-         XFRAC_REF(3)=0.31
-         XFRAC_REF(4)=0.03
-      ELSE IF (NPHILLIPS == 8) THEN
-         XFRAC_REF(1)=0.66
-         XFRAC_REF(2)=0.66
-         XFRAC_REF(3)=0.28
-         XFRAC_REF(4)=0.06
-      END IF
-!
-! Immersion modes
-!
-   IF (.NOT.(ALLOCATED(NIMM))) ALLOCATE(NIMM(NMOD_CCN))
-   NIMM(:)=0
-   IF (ALLOCATED(NINDICE_CCN_IMM)) DEALLOCATE(NINDICE_CCN_IMM)
-   ALLOCATE(NINDICE_CCN_IMM(MAX(1,NMOD_IMM)))
-   IF (NMOD_IMM .GE. 1) THEN
-      DO J = 0, NMOD_IMM-1
-         NIMM(NMOD_CCN-J)=1
-         NINDICE_CCN_IMM(NMOD_IMM-J) = NMOD_CCN-J
-      END DO
-!   ELSE IF (NMOD_IMM == 0) THEN ! PNIS existe mais vaut 0, pour l'appel à resolved_cloud
-!      NMOD_IMM = 1
-!      NINDICE_CCN_IMM(1) = 0
-   END IF
-!
-END IF ! NMOD_IFN > 0
-! 
-END SUBROUTINE INIT_AEROSOL_PROPERTIES
diff --git a/src/arome/micro/lima.F90 b/src/arome/micro/lima.F90
deleted file mode 100644
index a96c98099c5846f08e8e395d74c36031ad50bdcb..0000000000000000000000000000000000000000
--- a/src/arome/micro/lima.F90
+++ /dev/null
@@ -1,1806 +0,0 @@
-!      ######spl
-MODULE MODI_LIMA
-!      ####################
-!
-INTERFACE
-!
-SUBROUTINE LIMA ( PTSTEP, HFMFILE, OCLOSE_OUT,                    &
-                  PRHODREF, PEXNREF, PZZ,                         &
-                  PRHODJ, PPABST,                                 &
-                  NCCN, NIFN, NIMM,                               &
-                  PTHM, PTHT, PRT, PSVT, PW_NU,                   &
-                  PTHS, PRS, PSVS,                                &
-                  PINPRC, PINPRR, PINPRI, PINPRS, PINPRG, PINPRH, &
-                  PEVAP3D, &
-                  KSPLITR, KSPLITG, YDDDH, YDLDDH, YDMDDH                                         )
-!
-USE DDH_MIX, ONLY  : TYP_DDH
-USE YOMLDDH, ONLY  : TLDDH
-USE YOMMDDH, ONLY  : TMDDH
-!
-REAL,                     INTENT(IN)    :: PTSTEP     ! Time step
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of output
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ        ! Layer thikness (m)
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ     ! Dry density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST     ! absolute pressure at t
-!
-INTEGER,                  INTENT(IN)    :: NCCN       ! for array size declarations
-INTEGER,                  INTENT(IN)    :: NIFN       ! for array size declarations
-INTEGER,                  INTENT(IN)    :: NIMM       ! for array size declarations
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM       ! Theta at time t-dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT       ! Theta at time t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT        ! Mixing ratios at time t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT       ! Concentrations at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! w for CCN activation
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS       ! Theta source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS        ! Mixing ratios sources
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS       ! Concentrations sources
-!
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRC     ! Cloud instant precip
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRR     ! Rain instant precip
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRI     ! Rain instant precip
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRS     ! Snow instant precip
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRG     ! Graupel instant precip
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRH     ! Rain instant precip
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PEVAP3D    ! Rain evap profile
-!
-INTEGER,                  INTENT(IN)    :: KSPLITR    
-INTEGER,                  INTENT(IN)    :: KSPLITG   
-!
-TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
-TYPE(TLDDH), INTENT(IN) :: YDLDDH
-TYPE(TMDDH), INTENT(IN) :: YDMDDH
-!
-END SUBROUTINE LIMA
-END INTERFACE
-END MODULE MODI_LIMA
-!
-!
-!     ######spl
-      SUBROUTINE LIMA ( PTSTEP, HFMFILE, OCLOSE_OUT,                    &
-                        PRHODREF, PEXNREF, PZZ,                         &
-                        PRHODJ, PPABST,                                 &
-                        NCCN, NIFN, NIMM,                               &
-                        PTHM, PTHT, PRT, PSVT, PW_NU,                   &
-                        PTHS, PRS, PSVS,                                &
-                        PINPRC, PINPRR, PINPRI, PINPRS, PINPRG, PINPRH, &
-                        PEVAP3D, &
-                        KSPLITR, KSPLITG, YDDDH, YDLDDH, YDMDDH                                         )
-!     ######################################################################
-!
-!!    PURPOSE
-!!    -------
-!!      Compute explicit microphysical sources using the 2-moment scheme LIMA     
-!!
-!!    REFERENCE
-!!    ---------
-!!      Vié et al. (GMD, 2016)
-!!      Meso-NH scientific documentation
-!!
-!!    AUTHOR
-!!    ------
-!!      B. Vié 
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original   ??/??/??
-!!
-!!
-!!
-!*       0.    DECLARATIONS
-!              ------------
-USE MODD_PARAMETERS,     ONLY : JPHEXT, JPVEXT
-USE MODD_PARAM_ICE,      ONLY : NMAXITER, LFEEDBACKT,XMRSTEP, XTSTEP_TS
-USE MODD_PARAM_LIMA,     ONLY : LCOLD_LIMA, LRAIN_LIMA, LWARM_LIMA, NMOD_CCN, NMOD_IFN, NMOD_IMM, LHHONI_LIMA,      &
-                                XRTMIN, LACTIT_LIMA,       &
-                                LSEDC_LIMA, LSEDI_LIMA, XRTMIN, XCTMIN
-USE MODD_PARAM_LIMA_WARM,ONLY : XLBC, XLBEXC
-USE MODD_BUDGET,         ONLY : LBU_ENABLE, LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RR,     &
-                                LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, LBUDGET_SV
-USE MODD_NSV,            ONLY : NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_CCN_FREE, NSV_LIMA_CCN_ACTI, &
-                                NSV_LIMA_SCAVMASS, NSV_LIMA_NI, NSV_LIMA_IFN_FREE,              &
-                                NSV_LIMA_IFN_NUCL, NSV_LIMA_IMM_NUCL, NSV_LIMA_HOM_HAZE
-USE MODD_CST,            ONLY : XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XTT
-!
-USE MODE_BUDGET, ONLY: BUDGET_DDH
-USE MODI_LIMA_FUNCTIONS, ONLY : COUNTJV
-USE MODI_LIMA_WARM_SEDIMENTATION
-USE MODI_LIMA_COLD_SEDIMENTATION
-USE MODI_LIMA_NUCLEATION_PROCS
-USE MODI_LIMA_INST_PROCS
-USE MODI_LIMA_TENDENCIES
-!
-USE DDH_MIX, ONLY  : TYP_DDH
-USE YOMLDDH, ONLY  : TLDDH
-USE YOMMDDH, ONLY  : TMDDH
-!
-IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-REAL,                     INTENT(IN)    :: PTSTEP     ! Time step
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of output
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ        ! Layer thikness (m)
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ     ! Dry density * Jacobian
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST     ! absolute pressure at t
-!
-INTEGER,                  INTENT(IN)    :: NCCN       ! for array size declarations
-INTEGER,                  INTENT(IN)    :: NIFN       ! for array size declarations
-INTEGER,                  INTENT(IN)    :: NIMM       ! for array size declarations
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHM       ! Theta at time t-dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT       ! Theta at time t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT        ! Mixing ratios at time t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT       ! Concentrations at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! w for CCN activation
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHS       ! Theta source
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRS        ! Mixing ratios sources
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS       ! Concentrations sources
-!
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRC     ! Cloud instant precip
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRR     ! Rain instant precip
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRI     ! Rain instant precip
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRS     ! Snow instant precip
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRG     ! Graupel instant precip
-REAL, DIMENSION(:,:),     INTENT(OUT)   :: PINPRH     ! Rain instant precip
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PEVAP3D    ! Rain evap profile
-!
-INTEGER,                  INTENT(IN)    :: KSPLITR    
-INTEGER,                  INTENT(IN)    :: KSPLITG   
-!
-TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
-TYPE(TLDDH), INTENT(IN) :: YDLDDH
-TYPE(TMDDH), INTENT(IN) :: YDMDDH
-!
-!*       0.2   Declarations of local variables :
-!
-!
-! Prognostic variables and sources
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, ZRHT
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: ZCCT, ZCRT, ZCIT
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: ZTHS, ZRVS, ZRCS, ZRRS, ZRIS, ZRSS, ZRGS, ZRHS
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: ZCCS, ZCRS, ZCIS
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NCCN) :: ZCCNFT, ZCCNAT
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NCCN) :: ZCCNFS, ZCCNAS
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NIFN) :: ZIFNFT, ZIFNNT
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NIFN) :: ZIFNFS, ZIFNNS
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NIMM) :: ZIMMNT
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NIMM) :: ZIMMNS
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: ZHOMFT
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: ZHOMFS
-
-!
-! for each process & species, we need variables to store instant tendencies for hydrometeors
-! These are 1D packed variables
-REAL, DIMENSION(:), ALLOCATABLE :: &
-! mixing ratio & concentration changes by instantaneous processes (kg/kg and #/kg) :
-     Z_RC_HENU, Z_CC_HENU, &                                  ! cloud droplet nucleation (HENU) : rc, Nc, rv=-rc, th, CCNF, CCNA
-     Z_CR_BRKU, &                                             ! spontaneous break up of drops (BRKU) : Nr
-     Z_RI_HIND, Z_CI_HIND, &                                  ! heterogeneous IFN nucleation (HIND) : rv=-ri, ri, Ni, th, IFNF, IFNN
-     Z_RC_HINC, Z_CC_HINC, &                                  ! heterogeneous coated IFN nucl. (HINC) : rc, Nc, ri=-rc, Ni=-Nc, th, CCNacti, CCNnucl
-     Z_RI_HONH, Z_CI_HONH, &                                  ! CCN homogeneous freezing (HONH) : ri, Ni, th, CCNF
-     Z_TH_HONR, Z_RR_HONR, Z_CR_HONR, &                                  ! rain drops homogeneous freezing (HONR) : rr, Nr, rg=-rr, th
-     Z_TH_IMLT, Z_RC_IMLT, Z_CC_IMLT, &                                  ! ice melting (IMLT) : rc, Nc, ri=-rc, Ni=-Nc, th, IFNF, IFNA
-! mixing ratio & concentration tendencies by continuous processes (kg/kg/s and #/kg/s) :
-     Z_TH_HONC, Z_RC_HONC, Z_CC_HONC, &                                  ! droplets homogeneous freezing (HONC) : rc, Nc, ri=-rc, Ni=-Nc, th
-     Z_CC_SELF, &                                             ! self collection of droplets (SELF) : Nc
-     Z_RC_AUTO, Z_CC_AUTO, Z_CR_AUTO, &                       ! autoconversion of cloud droplets (AUTO) : rc, Nc, rr=-rc, Nr
-     Z_RC_ACCR, Z_CC_ACCR, &                                  ! accretion of droplets by rain drops (ACCR) : rc, Nc, rr=-rr
-     Z_CR_SCBU, &                                             ! self collectio break up of drops (SCBU) : Nr
-     Z_TH_EVAP, Z_RC_EVAP, Z_CC_EVAP, Z_RR_EVAP, Z_CR_EVAP, &            ! evaporation of rain drops (EVAP) : rv=-rr-rc, rc, Nc, rr, Nr, th
-     Z_RI_CNVI, Z_CI_CNVI, &                                  ! conversion snow -> ice (CNVI) : ri, Ni, rs=-ri
-     Z_TH_DEPS, Z_RS_DEPS, &                                             ! deposition of vapor on snow (DEPS) : rv=-rs, rs, th
-     Z_RI_CNVS, Z_CI_CNVS, &                                  ! conversion ice -> snow (CNVS) : ri, Ni, rs=-ri
-     Z_RI_AGGS, Z_CI_AGGS, &                                  ! aggregation of ice on snow (AGGS) : ri, Ni, rs=-ri
-     Z_TH_DEPG, Z_RG_DEPG, &                                             ! deposition of vapor on graupel (DEPG) : rv=-rg, rg, th
-     Z_TH_BERFI, Z_RC_BERFI, &                                            ! Bergeron (BERFI) : rc, ri=-rc, th
-     Z_TH_RIM, Z_RC_RIM, Z_CC_RIM, Z_RS_RIM, Z_RG_RIM,&                 ! cloud droplet riming (RIM) : rc, Nc, rs, rg, th
-     Z_RI_HMS, Z_CI_HMS, Z_RS_HMS, &                          ! hallett mossop snow (HMS) : ri, Ni, rs
-     Z_TH_ACC, Z_RR_ACC, Z_CR_ACC, Z_RS_ACC, Z_RG_ACC, &                ! rain accretion on aggregates (ACC) : rr, Nr, rs, rg, th
-     Z_RS_CMEL, &                                             ! conversion-melting (CMEL) : rs, rg=-rs
-     Z_TH_CFRZ, Z_RR_CFRZ, Z_CR_CFRZ, Z_RI_CFRZ, Z_CI_CFRZ, &            ! rain freezing (CFRZ) : rr, Nr, ri, Ni, rg=-rr-ri, th
-     Z_TH_WETG, Z_RC_WETG, Z_CC_WETG, Z_RR_WETG, Z_CR_WETG, &            ! wet growth of graupel (WETG) : rc, NC, rr, Nr, ri, Ni, rs, rg, rh, th
-     Z_RI_WETG, Z_CI_WETG, Z_RS_WETG, Z_RG_WETG, Z_RH_WETG, & ! wet growth of graupel (WETG) : rc, NC, rr, Nr, ri, Ni, rs, rg, rh, th
-     Z_TH_DRYG, Z_RC_DRYG, Z_CC_DRYG, Z_RR_DRYG, Z_CR_DRYG, &            ! dry growth of graupel (DRYG) : rc, Nc, rr, Nr, ri, Ni, rs, rg, th
-     Z_RI_DRYG, Z_CI_DRYG, Z_RS_DRYG, Z_RG_DRYG, &            ! dry growth of graupel (DRYG) : rc, Nc, rr, Nr, ri, Ni, rs, rg, th
-     Z_RI_HMG, Z_CI_HMG, Z_RG_HMG, &                          ! hallett mossop graupel (HMG) : ri, Ni, rg
-     Z_TH_GMLT, Z_RR_GMLT, Z_CR_GMLT, &                                  ! graupel melting (GMLT) : rr, Nr, rg=-rr, th
-     Z_RC_WETH, Z_CC_WETH, Z_RR_WETH, Z_CR_WETH,  &           ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th
-     Z_RI_WETH, Z_CI_WETH, Z_RS_WETH, Z_RG_WETH, Z_RH_WETH, & ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th
-     Z_RG_COHG, &                                             ! conversion of hail into graupel (COHG) : rg, rh
-     Z_RR_HMLT, Z_CR_HMLT                                     ! hail melting (HMLT) : rr, Nr, rh=-rr, th
-!
-!
-! for each process & species, we need variables to store total mmr and conc change (kg/kg and #/kg and theta)
-REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: &
-! instantaneous processes :
-     ZTOT_RC_HENU, ZTOT_CC_HENU, & ! cloud droplet nucleation (HENU) : rc, Nc, rv=-rc, th, CCNF, CCNA
-     ZTOT_CR_BRKU,               & ! spontaneous break up of drops (BRKU) : Nr
-     ZTOT_RI_HIND, ZTOT_CI_HIND, & ! heterogeneous IFN nucleation (HIND) : rv=-ri, ri, Ni, th, IFNF, IFNN
-     ZTOT_RC_HINC, ZTOT_CC_HINC, & ! heterogeneous coated IFN nucl. (HINC) : rc, Nc, ri=-rc, Ni=-Nc, th, CCNacti, CCNnucl
-     ZTOT_RI_HONH, ZTOT_CI_HONH, & ! CCN homogeneous freezing (HONH) : ri, Ni, th, CCNF
-     ZTOT_TH_HONR, ZTOT_RR_HONR, ZTOT_CR_HONR, & ! rain drops homogeneous freezing (HONR) : rr, Nr, rg=-rr, th
-     ZTOT_TH_IMLT, ZTOT_RC_IMLT, ZTOT_CC_IMLT, & ! ice melting (IMLT) : rc, Nc, ri=-rc, Ni=-Nc, th, IFNF, IFNA
-! continuous processes :
-     ZTOT_TH_HONC, ZTOT_RC_HONC, ZTOT_CC_HONC, & ! droplets homogeneous freezing (HONC) : rc, Nc, ri=-rc, Ni=-Nc, th
-     ZTOT_CC_SELF,                                                         & ! self collection of droplets (SELF) : Nc
-     ZTOT_RC_AUTO, ZTOT_CC_AUTO, ZTOT_CR_AUTO,                             & ! autoconversion of cloud droplets (AUTO) : rc, Nc, rr=-rc, Nr
-     ZTOT_RC_ACCR, ZTOT_CC_ACCR,                                           & ! accretion of droplets by rain drops (ACCR) : rc, Nc, rr=-rr
-     ZTOT_CR_SCBU,                                                         & ! self collectio break up of drops (SCBU) : Nr
-     ZTOT_TH_EVAP, ZTOT_RC_EVAP, ZTOT_CC_EVAP, ZTOT_RR_EVAP, ZTOT_CR_EVAP,               & ! evaporation of rain drops (EVAP) : rv=-rr-rc, rc, Nc, rr, Nr, th
-     ZTOT_RI_CNVI, ZTOT_CI_CNVI,                                           & ! conversion snow -> ice (CNVI) : ri, Ni, rs=-ri
-     ZTOT_TH_DEPS, ZTOT_RS_DEPS,                                                         & ! deposition of vapor on snow (DEPS) : rv=-rs, rs, th
-     ZTOT_RI_CNVS, ZTOT_CI_CNVS,                                           & ! conversion ice -> snow (CNVS) : ri, Ni, rs=-ri
-     ZTOT_RI_AGGS, ZTOT_CI_AGGS,                                           & ! aggregation of ice on snow (AGGS) : ri, Ni, rs=-ri
-     ZTOT_TH_DEPG, ZTOT_RG_DEPG,                                                         & ! deposition of vapor on graupel (DEPG) : rv=-rg, rg, th
-     ZTOT_TH_BERFI, ZTOT_RC_BERFI,                                                        & ! Bergeron (BERFI) : rc, ri=-rc, th
-     ZTOT_TH_RIM, ZTOT_RC_RIM, ZTOT_CC_RIM, ZTOT_RS_RIM, ZTOT_RG_RIM,                   & ! cloud droplet riming (RIM) : rc, Nc, rs, rg, th
-     ZTOT_RI_HMS, ZTOT_CI_HMS, ZTOT_RS_HMS,                                & ! hallett mossop snow (HMS) : ri, Ni, rs
-     ZTOT_TH_ACC, ZTOT_RR_ACC, ZTOT_CR_ACC, ZTOT_RS_ACC, ZTOT_RG_ACC,                   & ! rain accretion on aggregates (ACC) : rr, Nr, rs, rg, th
-     ZTOT_RS_CMEL,                                                         & ! conversion-melting (CMEL) : rs, rg=-rs
-     ZTOT_TH_CFRZ, ZTOT_RR_CFRZ, ZTOT_CR_CFRZ, ZTOT_RI_CFRZ, ZTOT_CI_CFRZ,               & ! rain freezing (CFRZ) : rr, Nr, ri, Ni, rg=-rr-ri, th
-     ZTOT_TH_WETG, ZTOT_RC_WETG, ZTOT_CC_WETG, ZTOT_RR_WETG, ZTOT_CR_WETG,               & ! wet growth of graupel (WETG) : rc, NC, rr, Nr, ri, Ni, rs, rg, rh, th
-     ZTOT_RI_WETG, ZTOT_CI_WETG, ZTOT_RS_WETG, ZTOT_RG_WETG, ZTOT_RH_WETG, & ! wet growth of graupel (WETG) : rc, NC, rr, Nr, ri, Ni, rs, rg, rh, th
-     ZTOT_TH_DRYG, ZTOT_RC_DRYG, ZTOT_CC_DRYG, ZTOT_RR_DRYG, ZTOT_CR_DRYG,               & ! dry growth of graupel (DRYG) : rc, Nc, rr, Nr, ri, Ni, rs, rg, th
-     ZTOT_RI_DRYG, ZTOT_CI_DRYG, ZTOT_RS_DRYG, ZTOT_RG_DRYG,               & ! dry growth of graupel (DRYG) : rc, Nc, rr, Nr, ri, Ni, rs, rg, th
-     ZTOT_RI_HMG, ZTOT_CI_HMG, ZTOT_RG_HMG,                                & ! hallett mossop graupel (HMG) : ri, Ni, rg
-     ZTOT_TH_GMLT, ZTOT_RR_GMLT, ZTOT_CR_GMLT,                                           & ! graupel melting (GMLT) : rr, Nr, rg=-rr, th
-     ZTOT_RC_WETH, ZTOT_CC_WETH, ZTOT_RR_WETH, ZTOT_CR_WETH,               & ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th
-     ZTOT_RI_WETH, ZTOT_CI_WETH, ZTOT_RS_WETH, ZTOT_RG_WETH, ZTOT_RH_WETH, & ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th
-     ZTOT_RG_COHG,                                                         & ! conversion of hail into graupel (COHG) : rg, rh
-     ZTOT_RR_HMLT, ZTOT_CR_HMLT                                              ! hail melting (HMLT) : rr, Nr, rh=-rr, th
-!
-!
-! concentration changes by instantaneous processes (#/kg) (instant + total):
-! Unused so far, necessary if we want detailed budgets of aerosols
-!!$REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NCCN) :: &
-!!$     Z_CCNF_HENU, ZTOT_CCNF_HENU, & ! cloud droplet nucleation (HENU) : rc, Nc, rv=-rc, th, CCNF, CCNA=-CCNF
-!!$     Z_CCNA_HINC, ZTOT_CCNA_HINC, & ! heterogeneous coated IFN nucl. (HINC) : rc, Nc, ri=-rc, Ni=-Nc, th, CCNacti, CCNnucl=-CCNacti
-!!$     Z_CCNF_HONH, ZTOT_CCNF_HONH    ! CCN homogeneous freezing (HONH) : ri, Ni, th, CCNF
-!!$REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NIFN) :: &
-!!$     Z_IFNF_HIND, ZTOT_IFNF_HIND, & ! heterogeneous IFN nucleation (HIND) : rv=-ri, ri, Ni, th, IFNF, IFNN=-IFNF
-!!$     Z_IFNF_IMLT, ZTOT_IFNF_IMLT    ! ice melting (IMLT) : rc, Nc, ri=-rc, Ni=-Nc, th, IFNF, IFNA=-IFNF
-!
-!
-!For mixing-ratio splitting
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: &
-     Z0RVT,        &   ! Water vapor m.r. at the beginig of the current loop
-     Z0RCT, Z0CCT, &   ! Cloud water m.r. at the beginig of the current loop
-     Z0RRT, Z0CRT, &   ! Rain water m.r. at the beginig of the current loop
-     Z0RIT, Z0CIT, &   ! Pristine ice m.r. at the beginig of the current loop
-     Z0RST,        &   ! Snow/aggregate m.r. at the beginig of the current loop
-     Z0RGT,        &   ! Graupel m.r. at the beginig of the current loop
-     Z0RHT             ! Hail m.r. at the beginig of the current loop
-! Unused, necessary if concentration splitting
-!!$REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NCCN) :: Z0CCNFT, Z0CCNAT
-!!$REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NIFN) :: Z0IFNFT, Z0IFNNT
-!!$REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NIMM) :: Z0IMMNT
-!!$REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3))      :: Z0HOMFT
-!
-! Packed variables for total tendencies
-REAL, DIMENSION(:),   ALLOCATABLE :: &
-     ZA_TH, ZA_RV, ZA_RC, ZA_CC, ZA_RR, ZA_CR, ZA_RI, ZA_CI, ZA_RS, ZA_RG, ZA_RH, & ! ZA = continuous tendencies (kg/kg/s = S variable)
-     ZB_TH, ZB_RV, ZB_RC, ZB_CC, ZB_RR, ZB_CR, ZB_RI, ZB_CI, ZB_RS, ZB_RG, ZB_RH    ! ZB = instant mixing ratio change (kg/kg = T variable)
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZB_IFNN
-!
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: &
-     IITER,           & ! Number of iterations done (with real tendencies computation)
-     ZTIME,           & ! Current integration time (starts with 0 and ends with PTSTEP)
-!     ZMAXTIME,        & ! Time on which we can apply the current tendencies
-!     ZTIME_THRESHOLD, & ! Time to reach threshold
-     ZTIME_LASTCALL     ! Integration time when last tendecies call has been done
-LOGICAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: &
-     LLCOMPUTE          ! Points where we must compute tendencies
-REAL, DIMENSION(:), ALLOCATABLE :: ZMAXTIME, ZTIME_THRESHOLD
-!
-!
-! Various parameters
-INTEGER :: IIB           !  Define the domain where is
-INTEGER :: IIE           !  the microphysical sources have to be computed
-INTEGER :: IIT           !
-INTEGER :: IJB           !
-INTEGER :: IJE           !
-INTEGER :: IJT           !
-INTEGER :: IKB, IKTB, IKT!
-INTEGER :: IKE, IKTE     !
-INTEGER :: INB_ITER_MAX ! Maximum number of iterations (with real tendencies computation)
-!
-REAL :: ZTSTEP ! length of sub-timestep in case of time splitting
-REAL :: ZINV_TSTEP ! Inverse ov PTSTEP
-!
-!
-! For total tendencies computation
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: &
-     ZW_RVS, &
-     ZW_RCS, ZW_CCS, &
-     ZW_RRS, ZW_CRS, &
-     ZW_RIS, ZW_CIS, &
-     ZW_RSS, &
-     ZW_RGS, &
-     ZW_RHS, &
-     ZW_THS
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NCCN) :: ZW_CCNFS, ZW_CCNAS
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NIFN) :: ZW_IFNFS, ZW_IFNNS
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),NIMM) :: ZW_IMMNS
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: ZW_HOMFS
-!
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: &
-     PEXN, &
-     PDZZ, &
-     ZEXN, &
-     ZT, &
-     ZTM, &
-     ZZ_LSFACT, &
-     ZZ_LVFACT, &
-     ZZT, &
-     ZLSFACT, &
-     ZLVFACT, &
-     ZW1, &
-     ZLBDC
-!
-INTEGER :: KRR, &
-     KKA, & ! near ground array index
-     KKU, & ! highest level array index
-     KKL, & ! levels ordering (=1 for MNH, =-1 for AROME)
-     II     ! index for loops
-!
-LOGICAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: MASK ! Points where we must run the microphysics scheme
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: ZRT_SUM ! Total condensed water mr
-INTEGER :: IPACK
-INTEGER, DIMENSION(:), ALLOCATABLE :: I1, I2, I3
-REAL, DIMENSION(:), ALLOCATABLE :: &
-     ZTHT1D, &
-     ZRVT1D, &
-     ZRCT1D, &
-     ZRRT1D, &
-     ZRIT1D, &
-     ZRST1D, &
-     ZRGT1D, &
-     ZRHT1D, &
-     ZCCT1D, &
-     ZCRT1D, &
-     ZCIT1D, &
-     ZP1D,   &
-     ZRHODREF1D, &
-     ZEXNREF1D, &
-     ZEXN1D, &
-     ZEVAP1D, &
-     ZTIME1D, &
-     IITER1D, &
-     ZTIME_LASTCALL1D, &
-     Z0RVT1D, &
-     Z0RCT1D, &
-     Z0RRT1D, &
-     Z0RIT1D, &
-     Z0RST1D, &
-     Z0RGT1D, &
-     Z0RHT1D 
-LOGICAL, DIMENSION(:), ALLOCATABLE :: LLCOMPUTE1D
-REAL, DIMENSION(:,:), ALLOCATABLE :: ZIFNN1D    
-!-------------------------------------------------------------------------------
-!
-!*       0.     Init
-!               ----
-!
-ZTHS(:,:,:) = PTHS(:,:,:)
-ZTHT(:,:,:) = PTHS(:,:,:) * PTSTEP
-ZRVT(:,:,:) = 0.
-ZRVS(:,:,:) = 0.
-ZRCT(:,:,:) = 0.
-ZRCS(:,:,:) = 0.
-ZRRT(:,:,:) = 0.
-ZRRS(:,:,:) = 0.
-ZRIT(:,:,:) = 0.
-ZRIS(:,:,:) = 0.
-ZRST(:,:,:) = 0.
-ZRSS(:,:,:) = 0.
-ZRGT(:,:,:) = 0.
-ZRGS(:,:,:) = 0.
-ZRHT(:,:,:) = 0.
-ZRHS(:,:,:) = 0.
-ZRT_SUM(:,:,:) = 0.
-ZCCT(:,:,:)   = 0.
-ZCCS(:,:,:)   = 0.
-ZCRT(:,:,:)   = 0.
-ZCRS(:,:,:)   = 0.
-ZCIT(:,:,:)   = 0.
-ZCIS(:,:,:)   = 0.
-ZCCNFT(:,:,:,:) = 0.
-ZCCNAT(:,:,:,:) = 0.
-ZCCNFS(:,:,:,:) = 0.
-ZCCNAS(:,:,:,:) = 0.
-ZIFNFT(:,:,:,:) = 0.
-ZIFNNT(:,:,:,:) = 0.
-ZIFNFS(:,:,:,:) = 0.
-ZIFNNS(:,:,:,:) = 0.
-ZIMMNT(:,:,:,:) = 0.
-ZIMMNS(:,:,:,:) = 0.
-ZHOMFT(:,:,:)   = 0.
-ZHOMFS(:,:,:)   = 0.
-
-IF(LBU_ENABLE) THEN
-     ZTOT_CR_BRKU(:,:,:) = 0.
-     ZTOT_TH_HONR(:,:,:) = 0.
-     ZTOT_RR_HONR(:,:,:) = 0.
-     ZTOT_CR_HONR(:,:,:) = 0.
-     ZTOT_TH_IMLT(:,:,:) = 0.
-     ZTOT_RC_IMLT(:,:,:) = 0.
-     ZTOT_CC_IMLT(:,:,:) = 0.
-     ZTOT_TH_HONC(:,:,:) = 0.
-     ZTOT_RC_HONC(:,:,:) = 0.
-     ZTOT_CC_HONC(:,:,:) = 0.
-     ZTOT_CC_SELF(:,:,:) = 0.
-     ZTOT_RC_AUTO(:,:,:) = 0.
-     ZTOT_CC_AUTO(:,:,:) = 0.
-     ZTOT_CR_AUTO(:,:,:) = 0.
-     ZTOT_RC_ACCR(:,:,:) = 0.
-     ZTOT_CC_ACCR(:,:,:) = 0.
-     ZTOT_CR_SCBU(:,:,:) = 0.
-     ZTOT_TH_EVAP(:,:,:) = 0.
-     ZTOT_RC_EVAP(:,:,:) = 0.
-     ZTOT_CC_EVAP(:,:,:) = 0.
-     ZTOT_RR_EVAP(:,:,:) = 0.
-     ZTOT_CR_EVAP(:,:,:) = 0.
-     ZTOT_RI_CNVI(:,:,:) = 0.
-     ZTOT_CI_CNVI(:,:,:) = 0.
-     ZTOT_TH_DEPS(:,:,:) = 0.
-     ZTOT_RS_DEPS(:,:,:) = 0.
-     ZTOT_RI_CNVS(:,:,:) = 0.
-     ZTOT_CI_CNVS(:,:,:) = 0.
-     ZTOT_RI_AGGS(:,:,:) = 0.
-     ZTOT_CI_AGGS(:,:,:) = 0.
-     ZTOT_TH_DEPG(:,:,:) = 0.
-     ZTOT_RG_DEPG(:,:,:) = 0.
-     ZTOT_TH_BERFI(:,:,:) = 0.
-     ZTOT_RC_BERFI(:,:,:) = 0.
-     ZTOT_TH_RIM(:,:,:) = 0.
-     ZTOT_RC_RIM(:,:,:) = 0.
-     ZTOT_CC_RIM(:,:,:) = 0.
-     ZTOT_RS_RIM(:,:,:) = 0.
-     ZTOT_RG_RIM(:,:,:) = 0.
-     ZTOT_RI_HMS(:,:,:) = 0.
-     ZTOT_CI_HMS(:,:,:) = 0.
-     ZTOT_RS_HMS(:,:,:) = 0.
-     ZTOT_TH_ACC(:,:,:) = 0.
-     ZTOT_RR_ACC(:,:,:) = 0.
-     ZTOT_CR_ACC(:,:,:) = 0.
-     ZTOT_RS_ACC(:,:,:) = 0.
-     ZTOT_RG_ACC(:,:,:) = 0.
-     ZTOT_RS_CMEL(:,:,:) = 0.
-     ZTOT_TH_CFRZ(:,:,:) = 0.
-     ZTOT_RR_CFRZ(:,:,:) = 0.
-     ZTOT_CR_CFRZ(:,:,:) = 0.
-     ZTOT_RI_CFRZ(:,:,:) = 0.
-     ZTOT_CI_CFRZ(:,:,:) = 0.
-     ZTOT_TH_WETG(:,:,:) = 0.
-     ZTOT_RC_WETG(:,:,:) = 0.
-     ZTOT_CC_WETG(:,:,:) = 0.
-     ZTOT_RR_WETG(:,:,:) = 0.
-     ZTOT_CR_WETG(:,:,:) = 0.
-     ZTOT_RI_WETG(:,:,:) = 0.
-     ZTOT_CI_WETG(:,:,:) = 0.
-     ZTOT_RS_WETG(:,:,:) = 0.
-     ZTOT_RG_WETG(:,:,:) = 0.
-     ZTOT_RH_WETG(:,:,:) = 0.
-     ZTOT_TH_DRYG(:,:,:) = 0.
-     ZTOT_RC_DRYG(:,:,:) = 0.
-     ZTOT_CC_DRYG(:,:,:) = 0.
-     ZTOT_RR_DRYG(:,:,:) = 0.
-     ZTOT_CR_DRYG(:,:,:) = 0.
-     ZTOT_RI_DRYG(:,:,:) = 0.
-     ZTOT_CI_DRYG(:,:,:) = 0.
-     ZTOT_RS_DRYG(:,:,:) = 0.
-     ZTOT_RG_DRYG(:,:,:) = 0.
-     ZTOT_RI_HMG(:,:,:) = 0.
-     ZTOT_CI_HMG(:,:,:) = 0.
-     ZTOT_RG_HMG(:,:,:) = 0.
-     ZTOT_TH_GMLT(:,:,:) = 0.
-     ZTOT_RR_GMLT(:,:,:) = 0.
-     ZTOT_CR_GMLT(:,:,:) = 0.
-     ZTOT_RC_WETH(:,:,:) = 0.
-     ZTOT_CC_WETH(:,:,:) = 0.
-     ZTOT_RR_WETH(:,:,:) = 0.
-     ZTOT_CR_WETH(:,:,:) = 0.
-     ZTOT_RI_WETH(:,:,:) = 0.
-     ZTOT_CI_WETH(:,:,:) = 0.
-     ZTOT_RS_WETH(:,:,:) = 0.
-     ZTOT_RG_WETH(:,:,:) = 0.
-     ZTOT_RH_WETH(:,:,:) = 0.
-     ZTOT_RG_COHG(:,:,:) = 0.
-     ZTOT_RR_HMLT(:,:,:) = 0.
-     ZTOT_CR_HMLT(:,:,:) = 0.
-END IF
-!
-! Initial values computed as source * PTSTEP
-!
-! Mixing ratios
-!
-KRR=SIZE(PRT,4)
-ZRVT(:,:,:) = PRS(:,:,:,1) * PTSTEP
-ZRVS(:,:,:) = PRS(:,:,:,1)
-IF ( KRR .GE. 2 ) ZRCT(:,:,:) = PRS(:,:,:,2) * PTSTEP
-IF ( KRR .GE. 2 ) ZRCS(:,:,:) = PRS(:,:,:,2)
-IF ( KRR .GE. 3 ) ZRRT(:,:,:) = PRS(:,:,:,3) * PTSTEP
-IF ( KRR .GE. 3 ) ZRRS(:,:,:) = PRS(:,:,:,3)
-IF ( KRR .GE. 4 ) ZRIT(:,:,:) = PRS(:,:,:,4) * PTSTEP
-IF ( KRR .GE. 4 ) ZRIS(:,:,:) = PRS(:,:,:,4)
-IF ( KRR .GE. 5 ) ZRST(:,:,:) = PRS(:,:,:,5) * PTSTEP
-IF ( KRR .GE. 5 ) ZRSS(:,:,:) = PRS(:,:,:,5)
-IF ( KRR .GE. 6 ) ZRGT(:,:,:) = PRS(:,:,:,6) * PTSTEP
-IF ( KRR .GE. 6 ) ZRGS(:,:,:) = PRS(:,:,:,6)
-IF ( KRR .GE. 7 ) ZRHT(:,:,:) = PRS(:,:,:,7) * PTSTEP
-IF ( KRR .GE. 7 ) ZRHS(:,:,:) = PRS(:,:,:,7)
-ZRT_SUM(:,:,:) = ZRCT(:,:,:) + ZRRT(:,:,:) + ZRIT(:,:,:) + ZRST(:,:,:) + ZRGT(:,:,:) + ZRHT(:,:,:)
-!
-! Concentrations
-!
-IF ( LWARM_LIMA )             ZCCT(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NC) * PTSTEP
-IF ( LWARM_LIMA )             ZCCS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NC)
-IF ( LWARM_LIMA .AND. LRAIN_LIMA ) ZCRT(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NR) * PTSTEP
-IF ( LWARM_LIMA .AND. LRAIN_LIMA ) ZCRS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NR)
-IF ( LCOLD_LIMA )             ZCIT(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NI) * PTSTEP
-IF ( LCOLD_LIMA )             ZCIS(:,:,:)   = PSVS(:,:,:,NSV_LIMA_NI)
-!
-IF ( NMOD_CCN .GE. 1 )   ZCCNFT(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_CCN_FREE:NSV_LIMA_CCN_FREE+NMOD_CCN-1) * PTSTEP
-IF ( NMOD_CCN .GE. 1 )   ZCCNAT(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_CCN_ACTI:NSV_LIMA_CCN_ACTI+NMOD_CCN-1) * PTSTEP
-IF ( NMOD_CCN .GE. 1 )   ZCCNFS(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_CCN_FREE:NSV_LIMA_CCN_FREE+NMOD_CCN-1)
-IF ( NMOD_CCN .GE. 1 )   ZCCNAS(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_CCN_ACTI:NSV_LIMA_CCN_ACTI+NMOD_CCN-1)
-!
-IF ( NMOD_IFN .GE. 1 )   ZIFNFT(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_IFN_FREE:NSV_LIMA_IFN_FREE+NMOD_IFN-1) * PTSTEP
-IF ( NMOD_IFN .GE. 1 )   ZIFNNT(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_IFN_NUCL:NSV_LIMA_IFN_NUCL+NMOD_IFN-1) * PTSTEP
-IF ( NMOD_IFN .GE. 1 )   ZIFNFS(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_IFN_FREE:NSV_LIMA_IFN_FREE+NMOD_IFN-1)
-IF ( NMOD_IFN .GE. 1 )   ZIFNNS(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_IFN_NUCL:NSV_LIMA_IFN_NUCL+NMOD_IFN-1)
-!
-IF ( NMOD_IMM .GE. 1 )   ZIMMNT(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_IMM_NUCL:NSV_LIMA_IMM_NUCL+NMOD_IMM-1) * PTSTEP
-IF ( NMOD_IMM .GE. 1 )   ZIMMNS(:,:,:,:) = PSVS(:,:,:,NSV_LIMA_IMM_NUCL:NSV_LIMA_IMM_NUCL+NMOD_IMM-1)
-!
-IF ( LCOLD_LIMA .AND. LHHONI_LIMA ) ZHOMFT(:,:,:)  = PSVS(:,:,:,NSV_LIMA_HOM_HAZE) * PTSTEP
-IF ( LCOLD_LIMA .AND. LHHONI_LIMA ) ZHOMFS(:,:,:)  = PSVS(:,:,:,NSV_LIMA_HOM_HAZE)
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.     Sedimentation
-!               -------------
-!
-PEXN(:,:,:)=PEXNREF(:,:,:)
-ZEXN(:,:,:)=PEXNREF(:,:,:)
-ZT(:,:,:)  = ZTHT(:,:,:) * PEXN(:,:,:)
-!
-ZW1(:,:,:)=0.
-ZLBDC(:,:,:)  = 1.E10
-WHERE (ZRCT(:,:,:)>XRTMIN(2) .AND. ZCCT(:,:,:)>XCTMIN(2))
-   ZLBDC(:,:,:) = XLBC*ZCCT(:,:,:) / ZRCT(:,:,:)
-   ZLBDC(:,:,:) = ZLBDC(:,:,:)**XLBEXC
-END WHERE
-CALL LIMA_WARM_SEDIMENTATION (LSEDC_LIMA, KSPLITR, PTSTEP, 1,    &
-                              HFMFILE, 'DUMMY', OCLOSE_OUT,  &
-                              PZZ, PRHODREF, PPABST, ZT,    &
-                              ZLBDC,                        &
-                              ZRCT, ZRRT, ZCCT, ZCRT,       &
-                              ZRCS, ZRRS, ZCCS, ZCRS,       &
-                              PINPRC, PINPRR,               &
-                              ZW1    )
-!
-CALL LIMA_COLD_SEDIMENTATION (LSEDI_LIMA, KSPLITG, PTSTEP, 1,       &
-                              HFMFILE, 'DUMMY', OCLOSE_OUT,     &
-                              PZZ, PRHODJ, PRHODREF,           &
-                              ZRIT, ZCIT,                      &
-                              ZRIS, ZRSS, ZRGS, ZRHS, ZCIS,    &
-                              PINPRS, PINPRG,                  &
-                              PINPRH                  )
-!
-IF ( KRR .GE. 2 ) ZRCT(:,:,:) = ZRCS(:,:,:) * PTSTEP
-IF ( KRR .GE. 3 ) ZRRT(:,:,:) = ZRRS(:,:,:) * PTSTEP
-IF ( KRR .GE. 4 ) ZRIT(:,:,:) = ZRIS(:,:,:) * PTSTEP
-IF ( KRR .GE. 5 ) ZRST(:,:,:) = ZRSS(:,:,:) * PTSTEP
-IF ( KRR .GE. 6 ) ZRGT(:,:,:) = ZRGS(:,:,:) * PTSTEP
-IF ( KRR .GE. 7 ) ZRHT(:,:,:) = ZRHS(:,:,:) * PTSTEP
-ZRT_SUM(:,:,:) = ZRCT(:,:,:) + ZRRT(:,:,:) + ZRIT(:,:,:) + ZRST(:,:,:) + ZRGT(:,:,:) + ZRHT(:,:,:)
-!
-IF ( LWARM_LIMA )             ZCCT(:,:,:)   = ZCCS(:,:,:) * PTSTEP
-IF ( LWARM_LIMA .AND. LRAIN_LIMA ) ZCRT(:,:,:)   = ZCRS(:,:,:) * PTSTEP
-IF ( LCOLD_LIMA )             ZCIT(:,:,:)   = ZCIS(:,:,:) * PTSTEP
-!
-! Call budgets
-!
-IF(LBU_ENABLE) THEN
-  IF (LBUDGET_RC .AND. LSEDC_LIMA) CALL BUDGET_DDH (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'SEDI_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-  IF (LBUDGET_RR)             CALL BUDGET_DDH (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'SEDI_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-  IF (LBUDGET_RI .AND. LSEDI_LIMA) CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'SEDI_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-  IF (LBUDGET_RS)             CALL BUDGET_DDH (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'SEDI_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-  IF (LBUDGET_RG)             CALL BUDGET_DDH (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'SEDI_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-  IF (LBUDGET_RH)             CALL BUDGET_DDH (ZRHS(:,:,:)*PRHODJ(:,:,:), 12 , 'SEDI_BU_RRH',YDDDH, YDLDDH, YDMDDH)
-  IF (LBUDGET_SV) THEN
-     IF (LSEDC_LIMA)               CALL BUDGET_DDH (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'SEDI_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-     IF (LRAIN_LIMA)               CALL BUDGET_DDH (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'SEDI_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-     IF (LSEDI_LIMA)               CALL BUDGET_DDH (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'SEDI_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-  END IF
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.     Nucleation processes
-!               --------------------
-!
-!
-IF( LACTIT_LIMA ) THEN
-   ZTM(:,:,:) = PTHM(:,:,:) * PEXN(:,:,:)
-ELSE 
-   ZTM(:,:,:) = ZT(:,:,:)
-END IF
-!
-CALL LIMA_NUCLEATION_PROCS (PTSTEP, HFMFILE, OCLOSE_OUT, PRHODJ,                &
-                            PRHODREF, PEXN, PPABST, ZT, ZTM, PW_NU,             &
-                            ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT,           &
-                            ZCCT, ZCRT, ZCIT,                                   &
-                            ZCCNFT, ZCCNAT, ZIFNFT, ZIFNNT, ZIMMNT, ZHOMFT,YDDDH, YDLDDH, YDMDDH      )
-ZRT_SUM(:,:,:) = ZRCT(:,:,:) + ZRRT(:,:,:) + ZRIT(:,:,:) + ZRST(:,:,:) + ZRGT(:,:,:) + ZRHT(:,:,:)
-!
-! Saving sources before microphysics time-splitting loop
-!
-ZRCS(:,:,:) = ZRCT(:,:,:) / PTSTEP
-ZRRS(:,:,:) = ZRRT(:,:,:) / PTSTEP
-ZRIS(:,:,:) = ZRIT(:,:,:) / PTSTEP
-ZRSS(:,:,:) = ZRST(:,:,:) / PTSTEP
-ZRGS(:,:,:) = ZRGT(:,:,:) / PTSTEP
-ZRHS(:,:,:) = ZRHT(:,:,:) / PTSTEP
-!
-ZCCS(:,:,:) = ZCCT(:,:,:) / PTSTEP
-ZCRS(:,:,:) = ZCRT(:,:,:) / PTSTEP
-ZCIS(:,:,:) = ZCIT(:,:,:) / PTSTEP
-!
-ZCCNFS(:,:,:,:) = ZCCNFS(:,:,:,:) / PTSTEP
-ZCCNAS(:,:,:,:) = ZCCNAS(:,:,:,:) / PTSTEP
-ZIFNFS(:,:,:,:) = ZIFNFS(:,:,:,:) / PTSTEP
-ZIFNNS(:,:,:,:) = ZIFNNS(:,:,:,:) / PTSTEP
-ZIMMNS(:,:,:,:) = ZIMMNS(:,:,:,:) / PTSTEP
-ZHOMFS(:,:,:)   = ZHOMFS(:,:,:)   / PTSTEP
-!
-ZTHS(:,:,:) = ZTHT(:,:,:) / PTSTEP
-!
-!
-!*       1.     PREPARE COMPUTATIONS
-!               -----------------------
-!
-!
-PDZZ(:,:,:)=PZZ(:,:,:)
-KKA=1
-KKU=SIZE(PDZZ,3)
-KKL=1
-!
-IIB=1+JPHEXT
-IIE=SIZE(PDZZ,1) - JPHEXT
-IIT=SIZE(PDZZ,1)
-IJB=1+JPHEXT
-IJE=SIZE(PDZZ,2) - JPHEXT
-IJT=SIZE(PDZZ,2)
-IKB=KKA+JPVEXT*KKL
-IKE=KKU-JPVEXT*KKL
-IKT=SIZE(PDZZ,3)
-IKTB=1+JPVEXT
-IKTE=IKT-JPVEXT
-!
-ZINV_TSTEP=1./PTSTEP
-!
-PEXN(:,:,:)=PEXNREF(:,:,:)
-ZEXN(:,:,:)=PEXNREF(:,:,:)
-!ZTHT(:,:,:)=PTHT(:,:,:)
-!
-!ZT(:,:,:)  = PTHT(:,:,:) * PEXN(:,:,:)
-!!$IF( LACTIT_LIMA ) THEN
-!!$   ZTM(:,:,:) = PTHM(:,:,:) * PEXN(:,:,:)
-!!$ELSE 
-!!$   ZTM(:,:,:) = ZT(:,:,:)
-!!$END IF
-! LSFACT and LVFACT without exner
-ZZ_LSFACT(:,:,:)=(XLSTT+(XCPV-XCI)*(ZT(:,:,:)-XTT))   &
-     /( XCPD + XCPV*PRT(:,:,:,1) + XCL*(SUM(PRT(:,:,:,2:3),4))  &
-     + XCI*(SUM(PRT(:,:,:,4:),4)))
-ZZ_LVFACT(:,:,:)=(XLVTT+(XCPV-XCL)*(ZT(:,:,:)-XTT))   &
-     /( XCPD + XCPV*PRT(:,:,:,1) + XCL*(SUM(PRT(:,:,:,2:3),4))   &
-     + XCI*(SUM(PRT(:,:,:,4:),4)))
-!
-! Setting everything at 0
-!
-
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.     LOOP
-!               ----
-!
-!
-! Maximum number of iterations
-INB_ITER_MAX=NMAXITER
-IF(XTSTEP_TS/=0.)THEN
-  INB_ITER_MAX=MAX(1, INT(PTSTEP/XTSTEP_TS)) !At least the number of iterations needed for the time-splitting
-  ZTSTEP=PTSTEP/INB_ITER_MAX
-  INB_ITER_MAX=MAX(NMAXITER, INB_ITER_MAX) !Fot the case XMRSTEP/=0. at the same time
-ENDIF
-IITER(:,:,:)=0
-ZTIME(:,:,:)=0. ! Current integration time (all points may have a different integration time)
-!
-! Begin the huge time splitting loop
-!
-WHERE (ZRT_SUM(:,:,:)<XRTMIN(2)) ZTIME(:,:,:)=PTSTEP ! no need to treat hydrometeor-free point
-!
-DO WHILE(ANY(ZTIME(IIB:IIE,IJB:IJE,IKB:IKE)<PTSTEP))
-   !
-   IF(XMRSTEP/=0.) THEN
-      ! In this case we need to remember the mixing ratios used to compute the tendencies
-      ! because when mixing ratio has evolved more than a threshold, we must re-compute tendecies
-      Z0RVT(:,:,:)=ZRVT(:,:,:)
-      Z0RCT(:,:,:)=ZRCT(:,:,:)
-      Z0CCT(:,:,:)=ZCCT(:,:,:)
-      Z0RRT(:,:,:)=ZRRT(:,:,:)
-      Z0CRT(:,:,:)=ZCRT(:,:,:)
-      Z0RIT(:,:,:)=ZRIT(:,:,:)
-      Z0CIT(:,:,:)=ZCIT(:,:,:)
-      Z0RST(:,:,:)=ZRST(:,:,:)
-      Z0RGT(:,:,:)=ZRGT(:,:,:)
-      Z0RHT(:,:,:)=ZRHT(:,:,:)
-!!$      Z0CCNFT(:,:,:,:) = ZCCNFT(:,:,:,:)
-!!$      Z0CCNAT(:,:,:,:) = ZCCNAT(:,:,:,:)
-!!$      Z0IFNFT(:,:,:,:) = ZIFNFT(:,:,:,:)
-!!$      Z0IFNNT(:,:,:,:) = ZIFNNT(:,:,:,:)
-!!$      Z0IMMNT(:,:,:,:) = ZIMMNT(:,:,:,:)
-!!$      Z0HOMFT(:,:,:)   = ZHOMFT(:,:,:)
-   ENDIF
-   !
-   IF(XTSTEP_TS/=0.) THEN
-      ! In this case we need to remember the time when tendencies were computed
-      ! because when time has evolved more than a limit, we must re-compute tendecies
-      ZTIME_LASTCALL(:,:,:)=ZTIME(:,:,:)
-   ENDIF
-   !
-   LLCOMPUTE(:,:,:)=.FALSE.
-   LLCOMPUTE(IIB:IIE,IJB:IJE,IKB:IKE) = ZTIME(IIB:IIE,IJB:IJE,IKB:IKE)<PTSTEP ! Compuation only for points for which integration time has not reached the timestep
-   WHERE(LLCOMPUTE(:,:,:))
-      IITER(:,:,:)=IITER(:,:,:)+1
-   END WHERE
-   ! 
-   DO WHILE(ANY(LLCOMPUTE(:,:,:))) ! Loop to adjust tendencies when we cross the 0°C or when a species disappears
-
-      !
-      ! Packing variables to run computations only where necessary
-      !
-      IPACK = COUNT(LLCOMPUTE)
-      ALLOCATE(I1(IPACK))
-      ALLOCATE(I2(IPACK))
-      ALLOCATE(I3(IPACK))
-      ALLOCATE(ZRHODREF1D(IPACK))
-      ALLOCATE(ZEXNREF1D(IPACK))
-      ALLOCATE(ZEXN1D(IPACK))
-      ALLOCATE(ZP1D(IPACK))     
-      ALLOCATE(ZTHT1D(IPACK))
-      ALLOCATE(ZRVT1D(IPACK))
-      ALLOCATE(ZRCT1D(IPACK))
-      ALLOCATE(ZRRT1D(IPACK))
-      ALLOCATE(ZRIT1D(IPACK))
-      ALLOCATE(ZRST1D(IPACK))
-      ALLOCATE(ZRGT1D(IPACK))
-      ALLOCATE(ZRHT1D(IPACK))
-      ALLOCATE(ZCCT1D(IPACK))
-      ALLOCATE(ZCRT1D(IPACK))
-      ALLOCATE(ZCIT1D(IPACK))
-      ALLOCATE(ZIFNN1D(IPACK,NMOD_IFN))
-      ALLOCATE(ZEVAP1D(IPACK))
-      ALLOCATE(ZTIME1D(IPACK))
-      ALLOCATE(LLCOMPUTE1D(IPACK))
-      ALLOCATE(IITER1D(IPACK))
-      ALLOCATE(ZTIME_LASTCALL1D(IPACK))
-      ALLOCATE(Z0RVT1D(IPACK))
-      ALLOCATE(Z0RCT1D(IPACK))
-      ALLOCATE(Z0RRT1D(IPACK))
-      ALLOCATE(Z0RIT1D(IPACK))
-      ALLOCATE(Z0RST1D(IPACK))
-      ALLOCATE(Z0RGT1D(IPACK))
-      ALLOCATE(Z0RHT1D(IPACK))
-      IPACK = COUNTJV(LLCOMPUTE,I1,I2,I3)
-      DO II=1,IPACK
-         ZRHODREF1D(II) = PRHODREF(I1(II),I2(II),I3(II))
-         ZEXNREF1D(II) = PEXNREF(I1(II),I2(II),I3(II))
-         ZEXN1D(II) = ZEXN(I1(II),I2(II),I3(II))
-         ZP1D(II) = PPABST(I1(II),I2(II),I3(II))
-         ZTHT1D(II) = ZTHT(I1(II),I2(II),I3(II))
-         ZRVT1D(II) = ZRVT(I1(II),I2(II),I3(II))
-         ZRCT1D(II) = ZRCT(I1(II),I2(II),I3(II))
-         ZRRT1D(II) = ZRRT(I1(II),I2(II),I3(II))
-         ZRIT1D(II) = ZRIT(I1(II),I2(II),I3(II))
-         ZRST1D(II) = ZRST(I1(II),I2(II),I3(II))
-         ZRGT1D(II) = ZRGT(I1(II),I2(II),I3(II))
-         ZRHT1D(II) = ZRHT(I1(II),I2(II),I3(II))
-         ZCCT1D(II) = ZCCT(I1(II),I2(II),I3(II))
-         ZCRT1D(II) = ZCRT(I1(II),I2(II),I3(II))
-         ZCIT1D(II) = ZCIT(I1(II),I2(II),I3(II))
-         ZIFNN1D(II,:) = ZIFNNT(I1(II),I2(II),I3(II),:)
-         ZEVAP1D(II) = PEVAP3D(I1(II),I2(II),I3(II))
-         ZTIME1D(II) = ZTIME(I1(II),I2(II),I3(II))         
-         LLCOMPUTE1D(II) = LLCOMPUTE(I1(II),I2(II),I3(II))         
-         IITER1D(II) = IITER(I1(II),I2(II),I3(II))         
-         ZTIME_LASTCALL1D(II) = ZTIME_LASTCALL(I1(II),I2(II),I3(II))         
-         Z0RVT1D(II) = Z0RVT(I1(II),I2(II),I3(II))
-         Z0RCT1D(II) = Z0RCT(I1(II),I2(II),I3(II))
-         Z0RRT1D(II) = Z0RRT(I1(II),I2(II),I3(II))
-         Z0RIT1D(II) = Z0RIT(I1(II),I2(II),I3(II))
-         Z0RST1D(II) = Z0RST(I1(II),I2(II),I3(II))
-         Z0RGT1D(II) = Z0RGT(I1(II),I2(II),I3(II))
-         Z0RHT1D(II) = Z0RHT(I1(II),I2(II),I3(II))
-      END DO
-      !
-      ! Allocating 1D variables
-      !
-      ALLOCATE(ZMAXTIME(IPACK))           ;  ZMAXTIME(:) = 0.
-      ALLOCATE(ZTIME_THRESHOLD(IPACK))    ;  ZTIME_THRESHOLD(:) = 0.
-      !
-      ALLOCATE(ZA_TH(IPACK))    ;  ZA_TH(:) = 0.
-      ALLOCATE(ZA_RV(IPACK))    ;  ZA_RV(:) = 0.
-      ALLOCATE(ZA_RC(IPACK))    ;  ZA_RC(:) = 0.
-      ALLOCATE(ZA_RR(IPACK))    ;  ZA_RR(:) = 0.
-      ALLOCATE(ZA_RI(IPACK))    ;  ZA_RI(:) = 0.
-      ALLOCATE(ZA_RS(IPACK))    ;  ZA_RS(:) = 0.
-      ALLOCATE(ZA_RG(IPACK))    ;  ZA_RG(:) = 0.
-      ALLOCATE(ZA_RH(IPACK))    ;  ZA_RH(:) = 0.
-      ALLOCATE(ZA_CC(IPACK))    ;  ZA_CC(:) = 0.
-      ALLOCATE(ZA_CR(IPACK))    ;  ZA_CR(:) = 0.
-      ALLOCATE(ZA_CI(IPACK))    ;  ZA_CI(:) = 0.
-      !
-      ALLOCATE(ZB_TH(IPACK))    ;  ZB_TH(:) = 0.
-      ALLOCATE(ZB_RV(IPACK))    ;  ZB_RV(:) = 0.
-      ALLOCATE(ZB_RC(IPACK))    ;  ZB_RC(:) = 0.
-      ALLOCATE(ZB_RR(IPACK))    ;  ZB_RR(:) = 0.
-      ALLOCATE(ZB_RI(IPACK))    ;  ZB_RI(:) = 0.
-      ALLOCATE(ZB_RS(IPACK))    ;  ZB_RS(:) = 0.
-      ALLOCATE(ZB_RG(IPACK))    ;  ZB_RG(:) = 0.
-      ALLOCATE(ZB_RH(IPACK))    ;  ZB_RH(:) = 0.
-      ALLOCATE(ZB_CC(IPACK))    ;  ZB_CC(:) = 0.
-      ALLOCATE(ZB_CR(IPACK))    ;  ZB_CR(:) = 0.
-      ALLOCATE(ZB_CI(IPACK))    ;  ZB_CI(:) = 0.
-      ALLOCATE(ZB_IFNN(IPACK,NMOD_IFN)) ;  ZB_IFNN(:,:) = 0.
-      !
-      ALLOCATE(Z_CR_BRKU(IPACK)) ; Z_CR_BRKU(:) = 0.
-      ALLOCATE(Z_TH_HONR(IPACK)) ; Z_TH_HONR(:) = 0.
-      ALLOCATE(Z_RR_HONR(IPACK)) ; Z_RR_HONR(:) = 0.
-      ALLOCATE(Z_CR_HONR(IPACK)) ; Z_CR_HONR(:) = 0.
-      ALLOCATE(Z_TH_IMLT(IPACK)) ; Z_TH_IMLT(:) = 0.
-      ALLOCATE(Z_RC_IMLT(IPACK)) ; Z_RC_IMLT(:) = 0.
-      ALLOCATE(Z_CC_IMLT(IPACK)) ; Z_CC_IMLT(:) = 0.
-      ALLOCATE(Z_TH_HONC(IPACK)) ; Z_TH_HONC(:) = 0.
-      ALLOCATE(Z_RC_HONC(IPACK)) ; Z_RC_HONC(:) = 0.
-      ALLOCATE(Z_CC_HONC(IPACK)) ; Z_CC_HONC(:) = 0.
-      ALLOCATE(Z_CC_SELF(IPACK)) ; Z_CC_SELF(:) = 0.
-      ALLOCATE(Z_RC_AUTO(IPACK)) ; Z_RC_AUTO(:) = 0.
-      ALLOCATE(Z_CC_AUTO(IPACK)) ; Z_CC_AUTO(:) = 0.
-      ALLOCATE(Z_CR_AUTO(IPACK)) ; Z_CR_AUTO(:) = 0.
-      ALLOCATE(Z_RC_ACCR(IPACK)) ; Z_RC_ACCR(:) = 0.
-      ALLOCATE(Z_CC_ACCR(IPACK)) ; Z_CC_ACCR(:) = 0.
-      ALLOCATE(Z_CR_SCBU(IPACK)) ; Z_CR_SCBU(:) = 0.
-      ALLOCATE(Z_TH_EVAP(IPACK)) ; Z_TH_EVAP(:) = 0.
-      ALLOCATE(Z_RR_EVAP(IPACK)) ; Z_RR_EVAP(:) = 0.
-      ALLOCATE(Z_RI_CNVI(IPACK)) ; Z_RI_CNVI(:) = 0.
-      ALLOCATE(Z_CI_CNVI(IPACK)) ; Z_CI_CNVI(:) = 0.
-      ALLOCATE(Z_TH_DEPS(IPACK)) ; Z_TH_DEPS(:) = 0.
-      ALLOCATE(Z_RS_DEPS(IPACK)) ; Z_RS_DEPS(:) = 0.
-      ALLOCATE(Z_RI_CNVS(IPACK)) ; Z_RI_CNVS(:) = 0.
-      ALLOCATE(Z_CI_CNVS(IPACK)) ; Z_CI_CNVS(:) = 0.
-      ALLOCATE(Z_RI_AGGS(IPACK)) ; Z_RI_AGGS(:) = 0.
-      ALLOCATE(Z_CI_AGGS(IPACK)) ; Z_CI_AGGS(:) = 0.
-      ALLOCATE(Z_TH_DEPG(IPACK)) ; Z_TH_DEPG(:) = 0.
-      ALLOCATE(Z_RG_DEPG(IPACK)) ; Z_RG_DEPG(:) = 0.
-      ALLOCATE(Z_TH_BERFI(IPACK)); Z_TH_BERFI(:) = 0.
-      ALLOCATE(Z_RC_BERFI(IPACK)); Z_RC_BERFI(:) = 0.
-      ALLOCATE(Z_TH_RIM(IPACK))  ; Z_TH_RIM = 0.
-      ALLOCATE(Z_RC_RIM(IPACK))  ; Z_RC_RIM = 0.
-      ALLOCATE(Z_CC_RIM(IPACK))  ; Z_CC_RIM = 0.
-      ALLOCATE(Z_RS_RIM(IPACK))  ; Z_RS_RIM = 0.
-      ALLOCATE(Z_RG_RIM(IPACK))  ; Z_RG_RIM = 0.
-      ALLOCATE(Z_RI_HMS(IPACK))  ; Z_RI_HMS = 0.
-      ALLOCATE(Z_CI_HMS(IPACK))  ; Z_CI_HMS = 0.
-      ALLOCATE(Z_RS_HMS(IPACK))  ; Z_RS_HMS = 0.
-      ALLOCATE(Z_TH_ACC(IPACK))  ; Z_TH_ACC = 0.
-      ALLOCATE(Z_RR_ACC(IPACK))  ; Z_RR_ACC = 0.
-      ALLOCATE(Z_CR_ACC(IPACK))  ; Z_CR_ACC = 0.
-      ALLOCATE(Z_RS_ACC(IPACK))  ; Z_RS_ACC = 0.
-      ALLOCATE(Z_RG_ACC(IPACK))  ; Z_RG_ACC = 0.
-      ALLOCATE(Z_RS_CMEL(IPACK)) ; Z_RS_CMEL = 0.
-      ALLOCATE(Z_TH_CFRZ(IPACK)) ; Z_TH_CFRZ = 0.
-      ALLOCATE(Z_RR_CFRZ(IPACK)) ; Z_RR_CFRZ = 0.
-      ALLOCATE(Z_CR_CFRZ(IPACK)) ; Z_CR_CFRZ = 0.
-      ALLOCATE(Z_RI_CFRZ(IPACK)) ; Z_RI_CFRZ = 0.
-      ALLOCATE(Z_CI_CFRZ(IPACK)) ; Z_CI_CFRZ = 0.
-      ALLOCATE(Z_TH_WETG(IPACK)) ; Z_TH_WETG = 0.
-      ALLOCATE(Z_RC_WETG(IPACK)) ; Z_RC_WETG = 0.
-      ALLOCATE(Z_CC_WETG(IPACK)) ; Z_CC_WETG = 0.
-      ALLOCATE(Z_RR_WETG(IPACK)) ; Z_RR_WETG = 0.
-      ALLOCATE(Z_CR_WETG(IPACK)) ; Z_CR_WETG = 0.
-      ALLOCATE(Z_RI_WETG(IPACK)) ; Z_RI_WETG = 0.
-      ALLOCATE(Z_CI_WETG(IPACK)) ; Z_CI_WETG = 0.
-      ALLOCATE(Z_RS_WETG(IPACK)) ; Z_RS_WETG = 0.
-      ALLOCATE(Z_RG_WETG(IPACK)) ; Z_RG_WETG = 0.
-      ALLOCATE(Z_RH_WETG(IPACK)) ; Z_RH_WETG = 0.
-      ALLOCATE(Z_TH_DRYG(IPACK)) ; Z_TH_DRYG = 0.
-      ALLOCATE(Z_RC_DRYG(IPACK)) ; Z_RC_DRYG = 0.
-      ALLOCATE(Z_CC_DRYG(IPACK)) ; Z_CC_DRYG = 0.
-      ALLOCATE(Z_RR_DRYG(IPACK)) ; Z_RR_DRYG = 0.
-      ALLOCATE(Z_CR_DRYG(IPACK)) ; Z_CR_DRYG = 0.
-      ALLOCATE(Z_RI_DRYG(IPACK)) ; Z_RI_DRYG = 0.
-      ALLOCATE(Z_CI_DRYG(IPACK)) ; Z_CI_DRYG = 0.
-      ALLOCATE(Z_RS_DRYG(IPACK)) ; Z_RS_DRYG = 0.
-      ALLOCATE(Z_RG_DRYG(IPACK)) ; Z_RG_DRYG = 0.
-      ALLOCATE(Z_RI_HMG(IPACK))  ; Z_RI_HMG = 0.
-      ALLOCATE(Z_CI_HMG(IPACK))  ; Z_CI_HMG = 0.
-      ALLOCATE(Z_RG_HMG(IPACK))  ; Z_RG_HMG = 0.
-      ALLOCATE(Z_TH_GMLT(IPACK)) ; Z_TH_GMLT = 0.
-      ALLOCATE(Z_RR_GMLT(IPACK)) ; Z_RR_GMLT = 0.
-      ALLOCATE(Z_CR_GMLT(IPACK)) ; Z_CR_GMLT = 0.
-
-
-!!$      ZZT(:,:,:) = ZTHT(:,:,:) * ZEXN(:,:,:)
-!!$      ZLSFACT(:,:,:)=(XLSTT+(XCPV-XCI)*(ZZT(:,:,:)-XTT))   &
-!!$           /( (XCPD + XCPV*ZRVT(:,:,:) + XCL*(ZRCT(:,:,:)+ZRRT(:,:,:))   &
-!!$           + XCI*(ZRIT(:,:,:)+ZRST(:,:,:)+ZRGT(:,:,:)+ZRHT(:,:,:)))*ZEXN(:,:,:) )
-!!$      ZLVFACT(:,:,:)=(XLVTT+(XCPV-XCL)*(ZZT(:,:,:)-XTT))   &
-!!$           /( (XCPD + XCPV*ZRVT(:,:,:) + XCL*(ZRCT(:,:,:)+ZRRT(:,:,:))   &
-!!$           + XCI*(ZRIT(:,:,:)+ZRST(:,:,:)+ZRGT(:,:,:)+ZRHT(:,:,:)))*ZEXN(:,:,:) )
-      !
-      !***       4.1 Tendecies computation
-      !
-      
-      CALL LIMA_INST_PROCS (PTSTEP, HFMFILE, OCLOSE_OUT, LLCOMPUTE1D,             &
-                            ZEXNREF1D, ZP1D,           &
-                            ZTHT1D, ZRVT1D, ZRCT1D, ZRRT1D, ZRIT1D, ZRST1D, ZRGT1D,           &
-                            ZCCT1D, ZCRT1D, ZCIT1D,                                   &
-                            ZIFNN1D,                 &
-                            Z_CR_BRKU,                                          & ! spontaneous break up of drops (BRKU) : Nr
-                            Z_TH_HONR, Z_RR_HONR, Z_CR_HONR,                    & ! rain drops homogeneous freezing (HONR) : rr, Nr, rg=-rr, th
-                            Z_TH_IMLT, Z_RC_IMLT, Z_CC_IMLT,                    & ! ice melting (IMLT) : rc, Nc, ri=-rc, Ni=-Nc, th, IFNF, IFNA
-                            ZB_TH, ZB_RV, ZB_RC, ZB_RR, ZB_RI, ZB_RG,           &
-                            ZB_CC, ZB_CR, ZB_CI,                                &
-                            ZB_IFNN)
-      
-      CALL LIMA_TENDENCIES (PTSTEP, HFMFILE, OCLOSE_OUT, LLCOMPUTE1D,                &
-                            ZEXNREF1D, ZRHODREF1D, ZP1D, ZTHT1D,                       &
-                            ZRVT1D, ZRCT1D, ZRRT1D, ZRIT1D, ZRST1D, ZRGT1D, ZRHT1D,              &
-                            ZCCT1D, ZCRT1D, ZCIT1D,                                      &
-                            Z_TH_HONC, Z_RC_HONC, Z_CC_HONC,                                  & 
-                            Z_CC_SELF,                                             & 
-                            Z_RC_AUTO, Z_CC_AUTO, Z_CR_AUTO,                       & 
-                            Z_RC_ACCR, Z_CC_ACCR,                                  & 
-                            Z_CR_SCBU,                                             & 
-                            Z_TH_EVAP, Z_RR_EVAP,                                             & 
-                            Z_RI_CNVI, Z_CI_CNVI,                                  & 
-                            Z_TH_DEPS, Z_RS_DEPS,                                             & 
-                            Z_RI_CNVS, Z_CI_CNVS,                                  & 
-                            Z_RI_AGGS, Z_CI_AGGS,                                  & 
-                            Z_TH_DEPG, Z_RG_DEPG,                                             & 
-                            Z_TH_BERFI, Z_RC_BERFI,                                            & 
-                            Z_TH_RIM, Z_RC_RIM, Z_CC_RIM, Z_RS_RIM, Z_RG_RIM,                & 
-                            Z_RI_HMS, Z_CI_HMS, Z_RS_HMS,                          & 
-                            Z_TH_ACC, Z_RR_ACC, Z_CR_ACC, Z_RS_ACC, Z_RG_ACC,                & 
-                            Z_RS_CMEL,                                             & 
-                            Z_TH_CFRZ, Z_RR_CFRZ, Z_CR_CFRZ, Z_RI_CFRZ, Z_CI_CFRZ,            & 
-                            Z_TH_WETG, Z_RC_WETG, Z_CC_WETG, Z_RR_WETG, Z_CR_WETG,            & 
-                            Z_RI_WETG, Z_CI_WETG, Z_RS_WETG, Z_RG_WETG, Z_RH_WETG, & 
-                            Z_TH_DRYG, Z_RC_DRYG, Z_CC_DRYG, Z_RR_DRYG, Z_CR_DRYG,            & 
-                            Z_RI_DRYG, Z_CI_DRYG, Z_RS_DRYG, Z_RG_DRYG,            & 
-                            Z_RI_HMG, Z_CI_HMG, Z_RG_HMG,                          & 
-                            Z_TH_GMLT, Z_RR_GMLT, Z_CR_GMLT,                                  & 
-!!!     Z_RC_WETH, Z_CC_WETH, Z_RR_WETH, Z_CR_WETH,  &           ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th
-!!!     Z_RI_WETH, Z_CI_WETH, Z_RS_WETH, Z_RG_WETH, Z_RH_WETH, & ! wet growth of hail (WETH) : rc, Nc, rr, Nr, ri, Ni, rs, rg, rh, th
-!!!     Z_RG_COHG, &                                             ! conversion of hail into graupel (COHG) : rg, rh
-!!!     Z_RR_HMLT, Z_CR_HMLT                                     ! hail melting (HMLT) : rr, Nr, rh=-rr, th
-                            ZA_TH, ZA_RV, ZA_RC, ZA_CC, ZA_RR, ZA_CR,              &
-                            ZA_RI, ZA_CI, ZA_RS, ZA_RG, ZA_RH,                     &
-                            ZEVAP1D )
-
-      !
-      !***       4.2 Integration time
-      !
-      ! If we can, we will use these tendecies until the end of the timestep
-      ZMAXTIME(:)=PTSTEP-ZTIME1D(:) ! Remaining time until the end of the timestep
-
-      ! We need to adjust tendencies when temperature reaches 0
-      IF(LFEEDBACKT) THEN
-         !Is ZB_TH enough to change temperature sign?
-         WHERE( ((ZTHT1D(:) - XTT/ZEXN1D(:)) * (ZTHT1D(:) + ZB_TH(:) - XTT/ZEXN1D(:))) < 0. )
-            ZMAXTIME(:)=0.
-         ENDWHERE
-         !Can ZA_TH make temperature change of sign?
-         ZTIME_THRESHOLD(:)=-1.
-         WHERE(ABS(ZA_TH(:))>1.E-20)
-            ZTIME_THRESHOLD(:)=(XTT/ZEXN1D(:) - ZB_TH(:) - ZTHT1D(:))/ZA_TH(:)
-         ENDWHERE
-         WHERE(ZTIME_THRESHOLD(:)>0.)
-            ZMAXTIME(:)=MIN(ZMAXTIME(:), ZTIME_THRESHOLD(:))
-         ENDWHERE
-      ENDIF
-
-      ! We need to adjust tendencies when a species disappears
-      ! When a species is missing, only the external tendencies can be negative (and we must keep track of it)
-      WHERE(ZA_RV(:)<-1.E-20 .AND. ZRVT1D(:)>XRTMIN(1))
-         ZMAXTIME(:)=MIN(ZMAXTIME(:), -(ZB_RV(:)+ZRVT1D(:))/ZA_RV(:))
-      END WHERE
-      WHERE(ZA_RC(:)<-1.E-20 .AND. ZRCT1D(:)>XRTMIN(2))
-         ZMAXTIME(:)=MIN(ZMAXTIME(:), -(ZB_RC(:)+ZRCT1D(:))/ZA_RC(:))
-      END WHERE
-      WHERE(ZA_RR(:)<-1.E-20 .AND. ZRRT1D(:)>XRTMIN(3))
-         ZMAXTIME(:)=MIN(ZMAXTIME(:), -(ZB_RR(:)+ZRRT1D(:))/ZA_RR(:))
-      END WHERE
-      WHERE(ZA_RI(:)<-1.E-20 .AND. ZRIT1D(:)>XRTMIN(4))
-         ZMAXTIME(:)=MIN(ZMAXTIME(:), -(ZB_RI(:)+ZRIT1D(:))/ZA_RI(:))
-      END WHERE
-      WHERE(ZA_RS(:)<-1.E-20 .AND. ZRST1D(:)>XRTMIN(5))
-         ZMAXTIME(:)=MIN(ZMAXTIME(:), -(ZB_RS(:)+ZRST1D(:))/ZA_RS(:))
-      END WHERE
-      WHERE(ZA_RG(:)<-1.E-20 .AND. ZRGT1D(:)>XRTMIN(6))
-         ZMAXTIME(:)=MIN(ZMAXTIME(:), -(ZB_RG(:)+ZRGT1D(:))/ZA_RG(:))
-      END WHERE
-      WHERE(ZA_RH(:)<-1.E-20 .AND. ZRHT1D(:)>XRTMIN(7))
-         ZMAXTIME(:)=MIN(ZMAXTIME(:), -(ZB_RH(:)+ZRHT1D(:))/ZA_RH(:))
-      END WHERE
-
-      ! We stop when the end of the timestep is reached
-      WHERE(PTSTEP-ZTIME1D(:)-ZMAXTIME(:)<=0.)
-         LLCOMPUTE1D(:)=.FALSE.
-      ENDWHERE
-
-      ! We must recompute tendencies when the end of the sub-timestep is reached
-      IF(XTSTEP_TS/=0.) THEN
-         WHERE(IITER1D(:)<INB_ITER_MAX .AND. ZTIME1D(:)+ZMAXTIME(:)>ZTIME_LASTCALL1D(:)+ZTSTEP)
-            ZMAXTIME(:)=ZTIME_LASTCALL1D(:)-ZTIME1D(:)+ZTSTEP
-            LLCOMPUTE1D(:)=.FALSE.
-         ENDWHERE
-      ENDIF
-
-      ! We must recompute tendencies when the maximum allowed change is reached
-      ! When a species is missing, only the external tendencies can be active and we do not want to recompute
-      ! the microphysical tendencies when external tendencies are negative (results won't change because species was already missing)
-      IF(XMRSTEP/=0.) THEN
-         ZTIME_THRESHOLD(:)=-1.
-         WHERE(IITER1D(:)<INB_ITER_MAX .AND. ABS(ZA_RV(:))>1.E-20)
-            ZTIME_THRESHOLD(:)=(SIGN(1., ZA_RV(:))*XMRSTEP+Z0RVT1D(:)-ZRVT1D(:)-ZB_RV(:))/ZA_RV(:)
-         ENDWHERE
-         WHERE(ZTIME_THRESHOLD(:)>=0. .AND. ZTIME_THRESHOLD(:)<ZMAXTIME(:) .AND. &
-              &(ZRVT1D(:)>XRTMIN(1) .OR. ZA_RV(:)>0.))
-            ZMAXTIME(:)=MIN(ZMAXTIME(:), ZTIME_THRESHOLD(:))
-            LLCOMPUTE1D(:)=.FALSE.
-         ENDWHERE
-
-         ZTIME_THRESHOLD(:)=-1.
-         WHERE(IITER1D(:)<INB_ITER_MAX .AND. ABS(ZA_RC(:))>1.E-20)
-            ZTIME_THRESHOLD(:)=(SIGN(1., ZA_RC(:))*XMRSTEP+Z0RCT1D(:)-ZRCT1D(:)-ZB_RC(:))/ZA_RC(:)
-         ENDWHERE
-         WHERE(ZTIME_THRESHOLD(:)>=0. .AND. ZTIME_THRESHOLD(:)<ZMAXTIME(:) .AND. &
-              &(ZRCT1D(:)>XRTMIN(2) .OR. ZA_RC(:)>0.))
-            ZMAXTIME(:)=MIN(ZMAXTIME(:), ZTIME_THRESHOLD(:))
-            LLCOMPUTE1D(:)=.FALSE.
-         ENDWHERE
-
-         ZTIME_THRESHOLD(:)=-1.
-         WHERE(IITER1D(:)<INB_ITER_MAX .AND. ABS(ZA_RR(:))>1.E-20)
-            ZTIME_THRESHOLD(:)=(SIGN(1., ZA_RR(:))*XMRSTEP+Z0RRT1D(:)-ZRRT1D(:)-ZB_RR(:))/ZA_RR(:)
-         ENDWHERE
-         WHERE(ZTIME_THRESHOLD(:)>=0. .AND. ZTIME_THRESHOLD(:)<ZMAXTIME(:) .AND. &
-              &(ZRRT1D(:)>XRTMIN(3) .OR. ZA_RR(:)>0.))
-            ZMAXTIME(:)=MIN(ZMAXTIME(:), ZTIME_THRESHOLD(:))
-            LLCOMPUTE1D(:)=.FALSE.
-         ENDWHERE
-
-         ZTIME_THRESHOLD(:)=-1.
-         WHERE(IITER1D(:)<INB_ITER_MAX .AND. ABS(ZA_RI(:))>1.E-20)
-            ZTIME_THRESHOLD(:)=(SIGN(1., ZA_RI(:))*XMRSTEP+Z0RIT1D(:)-ZRIT1D(:)-ZB_RI(:))/ZA_RI(:)
-         ENDWHERE
-         WHERE(ZTIME_THRESHOLD(:)>=0. .AND. ZTIME_THRESHOLD(:)<ZMAXTIME(:) .AND. &
-              &(ZRIT1D(:)>XRTMIN(4) .OR. ZA_RI(:)>0.))
-            ZMAXTIME(:)=MIN(ZMAXTIME(:), ZTIME_THRESHOLD(:))
-            LLCOMPUTE1D(:)=.FALSE.
-         ENDWHERE
-
-         ZTIME_THRESHOLD(:)=-1.
-         WHERE(IITER1D(:)<INB_ITER_MAX .AND. ABS(ZA_RS(:))>1.E-20)
-            ZTIME_THRESHOLD(:)=(SIGN(1., ZA_RS(:))*XMRSTEP+Z0RST1D(:)-ZRST1D(:)-ZB_RS(:))/ZA_RS(:)
-         ENDWHERE
-         WHERE(ZTIME_THRESHOLD(:)>=0. .AND. ZTIME_THRESHOLD(:)<ZMAXTIME(:) .AND. &
-              &(ZRST1D(:)>XRTMIN(5) .OR. ZA_RS(:)>0.))
-            ZMAXTIME(:)=MIN(ZMAXTIME(:), ZTIME_THRESHOLD(:))
-            LLCOMPUTE1D(:)=.FALSE.
-         ENDWHERE
-
-         ZTIME_THRESHOLD(:)=-1.
-         WHERE(IITER1D(:)<INB_ITER_MAX .AND. ABS(ZA_RG(:))>1.E-20)
-            ZTIME_THRESHOLD(:)=(SIGN(1., ZA_RG(:))*XMRSTEP+Z0RGT1D(:)-ZRGT1D(:)-ZB_RG(:))/ZA_RG(:)
-         ENDWHERE
-         WHERE(ZTIME_THRESHOLD(:)>=0. .AND. ZTIME_THRESHOLD(:)<ZMAXTIME(:) .AND. &
-              &(ZRGT1D(:)>XRTMIN(6) .OR. ZA_RG(:)>0.))
-            ZMAXTIME(:)=MIN(ZMAXTIME(:), ZTIME_THRESHOLD(:))
-            LLCOMPUTE1D(:)=.FALSE.
-         ENDWHERE
-
-         ZTIME_THRESHOLD(:)=-1.
-         WHERE(IITER1D(:)<INB_ITER_MAX .AND. ABS(ZA_RH(:))>1.E-20)
-            ZTIME_THRESHOLD(:)=(SIGN(1., ZA_RH(:))*XMRSTEP+Z0RHT1D(:)-ZRHT1D(:)-ZB_RH(:))/ZA_RH(:)
-         ENDWHERE
-         WHERE(ZTIME_THRESHOLD(:)>=0. .AND. ZTIME_THRESHOLD(:)<ZMAXTIME(:) .AND. &
-              &(ZRHT1D(:)>XRTMIN(7) .OR. ZA_RH(:)>0.))
-            ZMAXTIME(:)=MIN(ZMAXTIME(:), ZTIME_THRESHOLD(:))
-            LLCOMPUTE1D(:)=.FALSE.
-         ENDWHERE
-
-         WHERE(IITER1D(:)<INB_ITER_MAX .AND. MAX(ABS(ZB_RV(:)),  &
-              ABS(ZB_RC(:)), ABS(ZB_RR(:)), ABS(ZB_RI(:)), &
-              ABS(ZB_RS(:)), ABS(ZB_RG(:)), ABS(ZB_RH(:)))>XMRSTEP)
-            ZMAXTIME(:)=0.
-            LLCOMPUTE1D(:)=.FALSE.
-         ENDWHERE
-      ENDIF
-      !
-      !***       4.3 New values of variables for next iteration
-      !
-      ZTHT1D = ZTHT1D + ZA_TH(:) * ZMAXTIME(:) + ZB_TH(:)
-      ZRVT1D = ZRVT1D + ZA_RV(:) * ZMAXTIME(:) + ZB_RV(:)
-      ZRCT1D = ZRCT1D + ZA_RC(:) * ZMAXTIME(:) + ZB_RC(:)
-      ZCCT1D = ZCCT1D + ZA_CC(:) * ZMAXTIME(:) + ZB_CC(:)
-      ZRRT1D = ZRRT1D + ZA_RR(:) * ZMAXTIME(:) + ZB_RR(:)
-      ZCRT1D = ZCRT1D + ZA_CR(:) * ZMAXTIME(:) + ZB_CR(:)
-      ZRIT1D = ZRIT1D + ZA_RI(:) * ZMAXTIME(:) + ZB_RI(:)
-      ZCIT1D = ZCIT1D + ZA_CI(:) * ZMAXTIME(:) + ZB_CI(:)
-      ZRST1D = ZRST1D + ZA_RS(:) * ZMAXTIME(:) + ZB_RS(:)
-      ZRGT1D = ZRGT1D + ZA_RG(:) * ZMAXTIME(:) + ZB_RG(:)
-      ZRHT1D = ZRHT1D + ZA_RH(:) * ZMAXTIME(:) + ZB_RH(:)
-      !
-
-      DO II=1,NMOD_IFN
-         ZIFNN1D(:,II) = ZIFNN1D(:,II) + ZB_IFNN(:,II)
-      END DO
-      !
-      !***       4.5 
-      !
-      WHERE (ZRCT1D .LE. XRTMIN(2))
-         ZRVT1D = ZRVT1D + ZRCT1D
-         ZRCT1D = 0.
-         ZCCT1D = 0.
-      END WHERE
-      WHERE (ZRRT1D .LE. XRTMIN(3))
-         ZRVT1D = ZRVT1D + ZRRT1D
-         ZRRT1D = 0.
-         ZCRT1D = 0.
-      END WHERE
-      WHERE (ZRIT1D .LE. XRTMIN(4))
-         ZRVT1D = ZRVT1D + ZRIT1D
-         ZRIT1D = 0.
-         ZCIT1D = 0.
-      END WHERE
-      
-      !
-      !***       4.5 Next loop
-      !
-      ZTIME1D(:)=ZTIME1D(:)+ZMAXTIME(:)
-      !
-      !***       4.4 Unpacking
-      !
-      DO II=1,IPACK
-         ZTHT(I1(II),I2(II),I3(II))      = ZTHT1D(II)
-         ZRVT(I1(II),I2(II),I3(II))      = ZRVT1D(II)
-         ZRCT(I1(II),I2(II),I3(II))      = ZRCT1D(II)
-         ZRRT(I1(II),I2(II),I3(II))      = ZRRT1D(II)
-         ZRIT(I1(II),I2(II),I3(II))      = ZRIT1D(II)
-         ZRST(I1(II),I2(II),I3(II))      = ZRST1D(II)
-         ZRGT(I1(II),I2(II),I3(II))      = ZRGT1D(II)
-         ZRHT(I1(II),I2(II),I3(II))      = ZRHT1D(II)
-         ZCCT(I1(II),I2(II),I3(II))      = ZCCT1D(II)
-         ZCRT(I1(II),I2(II),I3(II))      = ZCRT1D(II)
-         ZCIT(I1(II),I2(II),I3(II))      = ZCIT1D(II)
-         ZIFNNT(I1(II),I2(II),I3(II),:)  = ZIFNN1D(II,:)
-         PEVAP3D(I1(II),I2(II),I3(II))   = ZEVAP1D(II)
-         ZTIME(I1(II),I2(II),I3(II))     = ZTIME1D(II)
-         LLCOMPUTE(I1(II),I2(II),I3(II)) = LLCOMPUTE1D(II)
-         IITER(I1(II),I2(II),I3(II))     = IITER1D(II)
-      END DO
-      !
-      !***       4.4 Unpacking for budgets
-      !
-      IF(LBU_ENABLE) THEN
-         DO II=1,IPACK
-!!$            ZTOT_RC_HENU(I1(II),I2(II),I3(II)) =   ZTOT_RC_HENU(I1(II),I2(II),I3(II))   + Z_RC_HENU(II)
-!!$            ZTOT_CC_HENU(I1(II),I2(II),I3(II)) =   ZTOT_CC_HENU(I1(II),I2(II),I3(II))   + Z_CC_HENU(II)
-            ZTOT_CR_BRKU(I1(II),I2(II),I3(II)) =   ZTOT_CR_BRKU(I1(II),I2(II),I3(II))   + Z_CR_BRKU(II)
-!!$            ZTOT_RI_HIND(I1(II),I2(II),I3(II)) =   ZTOT_RI_HIND(I1(II),I2(II),I3(II))   + Z_RI_HIND(II)
-!!$            ZTOT_CI_HIND(I1(II),I2(II),I3(II)) =   ZTOT_CI_HIND(I1(II),I2(II),I3(II))   + Z_CI_HIND(II)
-!!$            ZTOT_RC_HINC(I1(II),I2(II),I3(II)) =   ZTOT_RC_HINC(I1(II),I2(II),I3(II))   + Z_RC_HINC(II)
-!!$            ZTOT_CC_HINC(I1(II),I2(II),I3(II)) =   ZTOT_CC_HINC(I1(II),I2(II),I3(II))   + Z_CC_HINC(II)
-!!$            ZTOT_RI_HONH(I1(II),I2(II),I3(II)) =   ZTOT_RI_HONH(I1(II),I2(II),I3(II))   + Z_RI_HONH(II)
-!!$            ZTOT_CI_HONH(I1(II),I2(II),I3(II)) =   ZTOT_CI_HONH(I1(II),I2(II),I3(II))   + Z_CI_HONH(II)
-            ZTOT_TH_HONC(I1(II),I2(II),I3(II)) =   ZTOT_TH_HONC(I1(II),I2(II),I3(II))   + Z_TH_HONC(II)  * ZMAXTIME(II)
-            ZTOT_RC_HONC(I1(II),I2(II),I3(II)) =   ZTOT_RC_HONC(I1(II),I2(II),I3(II))   + Z_RC_HONC(II)  * ZMAXTIME(II)
-            ZTOT_CC_HONC(I1(II),I2(II),I3(II)) =   ZTOT_CC_HONC(I1(II),I2(II),I3(II))   + Z_CC_HONC(II)  * ZMAXTIME(II)
-            ZTOT_TH_HONR(I1(II),I2(II),I3(II)) =   ZTOT_TH_HONR(I1(II),I2(II),I3(II))   + Z_TH_HONR(II)
-            ZTOT_RR_HONR(I1(II),I2(II),I3(II)) =   ZTOT_RR_HONR(I1(II),I2(II),I3(II))   + Z_RR_HONR(II)
-            ZTOT_CR_HONR(I1(II),I2(II),I3(II)) =   ZTOT_CR_HONR(I1(II),I2(II),I3(II))   + Z_CR_HONR(II)
-            ZTOT_TH_IMLT(I1(II),I2(II),I3(II)) =   ZTOT_TH_IMLT(I1(II),I2(II),I3(II))   + Z_TH_IMLT(II)
-            ZTOT_RC_IMLT(I1(II),I2(II),I3(II)) =   ZTOT_RC_IMLT(I1(II),I2(II),I3(II))   + Z_RC_IMLT(II)
-            ZTOT_CC_IMLT(I1(II),I2(II),I3(II)) =   ZTOT_CC_IMLT(I1(II),I2(II),I3(II))   + Z_CC_IMLT(II)
-            ZTOT_CC_SELF(I1(II),I2(II),I3(II)) =   ZTOT_CC_SELF(I1(II),I2(II),I3(II))   + Z_CC_SELF(II)  * ZMAXTIME(II)
-            ZTOT_RC_AUTO(I1(II),I2(II),I3(II)) =   ZTOT_RC_AUTO(I1(II),I2(II),I3(II))   + Z_RC_AUTO(II)  * ZMAXTIME(II)
-            ZTOT_CC_AUTO(I1(II),I2(II),I3(II)) =   ZTOT_CC_AUTO(I1(II),I2(II),I3(II))   + Z_CC_AUTO(II)  * ZMAXTIME(II)
-            ZTOT_CR_AUTO(I1(II),I2(II),I3(II)) =   ZTOT_CR_AUTO(I1(II),I2(II),I3(II))   + Z_CR_AUTO(II)  * ZMAXTIME(II)
-            ZTOT_RC_ACCR(I1(II),I2(II),I3(II)) =   ZTOT_RC_ACCR(I1(II),I2(II),I3(II))   + Z_RC_ACCR(II)  * ZMAXTIME(II)
-            ZTOT_CC_ACCR(I1(II),I2(II),I3(II)) =   ZTOT_CC_ACCR(I1(II),I2(II),I3(II))   + Z_CC_ACCR(II)  * ZMAXTIME(II)
-            ZTOT_CR_SCBU(I1(II),I2(II),I3(II)) =   ZTOT_CR_SCBU(I1(II),I2(II),I3(II))   + Z_CR_SCBU(II)  * ZMAXTIME(II)
-!!$            ZTOT_RC_EVAP(I1(II),I2(II),I3(II)) =   ZTOT_RC_EVAP(I1(II),I2(II),I3(II))   + Z_RC_EVAP(II)  * ZMAXTIME(II)
-!!$            ZTOT_CC_EVAP(I1(II),I2(II),I3(II)) =   ZTOT_CC_EVAP(I1(II),I2(II),I3(II))   + Z_CC_EVAP(II)  * ZMAXTIME(II)
-            ZTOT_TH_EVAP(I1(II),I2(II),I3(II)) =   ZTOT_TH_EVAP(I1(II),I2(II),I3(II))   + Z_TH_EVAP(II)  * ZMAXTIME(II)
-            ZTOT_RR_EVAP(I1(II),I2(II),I3(II)) =   ZTOT_RR_EVAP(I1(II),I2(II),I3(II))   + Z_RR_EVAP(II)  * ZMAXTIME(II)
-!!$            ZTOT_CR_EVAP(I1(II),I2(II),I3(II)) =   ZTOT_CR_EVAP(I1(II),I2(II),I3(II))   + Z_CR_EVAP(II)  * ZMAXTIME(II)
-            ZTOT_RI_CNVI(I1(II),I2(II),I3(II)) =   ZTOT_RI_CNVI(I1(II),I2(II),I3(II))   + Z_RI_CNVI(II)  * ZMAXTIME(II)
-            ZTOT_CI_CNVI(I1(II),I2(II),I3(II)) =   ZTOT_CI_CNVI(I1(II),I2(II),I3(II))   + Z_CI_CNVI(II)  * ZMAXTIME(II)
-            ZTOT_TH_DEPS(I1(II),I2(II),I3(II)) =   ZTOT_TH_DEPS(I1(II),I2(II),I3(II))   + Z_TH_DEPS(II)  * ZMAXTIME(II)
-            ZTOT_RS_DEPS(I1(II),I2(II),I3(II)) =   ZTOT_RS_DEPS(I1(II),I2(II),I3(II))   + Z_RS_DEPS(II)  * ZMAXTIME(II)
-            ZTOT_RI_CNVS(I1(II),I2(II),I3(II)) =   ZTOT_RI_CNVS(I1(II),I2(II),I3(II))   + Z_RI_CNVS(II)  * ZMAXTIME(II)
-            ZTOT_CI_CNVS(I1(II),I2(II),I3(II)) =   ZTOT_CI_CNVS(I1(II),I2(II),I3(II))   + Z_CI_CNVS(II)  * ZMAXTIME(II)
-            ZTOT_RI_AGGS(I1(II),I2(II),I3(II)) =   ZTOT_RI_AGGS(I1(II),I2(II),I3(II))   + Z_RI_AGGS(II)  * ZMAXTIME(II)
-            ZTOT_CI_AGGS(I1(II),I2(II),I3(II)) =   ZTOT_CI_AGGS(I1(II),I2(II),I3(II))   + Z_CI_AGGS(II)  * ZMAXTIME(II)
-            ZTOT_TH_DEPG(I1(II),I2(II),I3(II)) =   ZTOT_TH_DEPG(I1(II),I2(II),I3(II))   + Z_TH_DEPG(II)  * ZMAXTIME(II)
-            ZTOT_RG_DEPG(I1(II),I2(II),I3(II)) =   ZTOT_RG_DEPG(I1(II),I2(II),I3(II))   + Z_RG_DEPG(II)  * ZMAXTIME(II)
-            ZTOT_TH_BERFI(I1(II),I2(II),I3(II))=   ZTOT_TH_BERFI(I1(II),I2(II),I3(II))  + Z_TH_BERFI(II) * ZMAXTIME(II)
-            ZTOT_RC_BERFI(I1(II),I2(II),I3(II))=   ZTOT_RC_BERFI(I1(II),I2(II),I3(II))  + Z_RC_BERFI(II) * ZMAXTIME(II)
-            ZTOT_TH_RIM(I1(II),I2(II),I3(II))  =   ZTOT_TH_RIM(I1(II),I2(II),I3(II))    + Z_TH_RIM(II)   * ZMAXTIME(II)
-            ZTOT_RC_RIM(I1(II),I2(II),I3(II))  =   ZTOT_RC_RIM(I1(II),I2(II),I3(II))    + Z_RC_RIM(II)   * ZMAXTIME(II)
-            ZTOT_CC_RIM(I1(II),I2(II),I3(II))  =   ZTOT_CC_RIM(I1(II),I2(II),I3(II))    + Z_CC_RIM(II)   * ZMAXTIME(II)
-            ZTOT_RS_RIM(I1(II),I2(II),I3(II))  =   ZTOT_RS_RIM(I1(II),I2(II),I3(II))    + Z_RS_RIM(II)   * ZMAXTIME(II)
-            ZTOT_RG_RIM(I1(II),I2(II),I3(II))  =   ZTOT_RG_RIM(I1(II),I2(II),I3(II))    + Z_RG_RIM(II)   * ZMAXTIME(II)
-            ZTOT_RI_HMS(I1(II),I2(II),I3(II))  =   ZTOT_RI_HMS(I1(II),I2(II),I3(II))    + Z_RI_HMS(II)   * ZMAXTIME(II)
-            ZTOT_CI_HMS(I1(II),I2(II),I3(II))  =   ZTOT_CI_HMS(I1(II),I2(II),I3(II))    + Z_CI_HMS(II)   * ZMAXTIME(II)
-            ZTOT_RS_HMS(I1(II),I2(II),I3(II))  =   ZTOT_RS_HMS(I1(II),I2(II),I3(II))    + Z_RS_HMS(II)   * ZMAXTIME(II)
-            ZTOT_TH_ACC(I1(II),I2(II),I3(II))  =   ZTOT_TH_ACC(I1(II),I2(II),I3(II))    + Z_TH_ACC(II)   * ZMAXTIME(II)
-            ZTOT_RR_ACC(I1(II),I2(II),I3(II))  =   ZTOT_RR_ACC(I1(II),I2(II),I3(II))    + Z_RR_ACC(II)   * ZMAXTIME(II)
-            ZTOT_CR_ACC(I1(II),I2(II),I3(II))  =   ZTOT_CR_ACC(I1(II),I2(II),I3(II))    + Z_CR_ACC(II)   * ZMAXTIME(II)
-            ZTOT_RS_ACC(I1(II),I2(II),I3(II))  =   ZTOT_RS_ACC(I1(II),I2(II),I3(II))    + Z_RS_ACC(II)   * ZMAXTIME(II)
-            ZTOT_RG_ACC(I1(II),I2(II),I3(II))  =   ZTOT_RG_ACC(I1(II),I2(II),I3(II))    + Z_RG_ACC(II)   * ZMAXTIME(II)
-            ZTOT_RS_CMEL(I1(II),I2(II),I3(II)) =   ZTOT_RS_CMEL(I1(II),I2(II),I3(II))   + Z_RS_CMEL(II)  * ZMAXTIME(II)
-            ZTOT_TH_CFRZ(I1(II),I2(II),I3(II)) =   ZTOT_TH_CFRZ(I1(II),I2(II),I3(II))   + Z_TH_CFRZ(II)  * ZMAXTIME(II)
-            ZTOT_RR_CFRZ(I1(II),I2(II),I3(II)) =   ZTOT_RR_CFRZ(I1(II),I2(II),I3(II))   + Z_RR_CFRZ(II)  * ZMAXTIME(II)
-            ZTOT_CR_CFRZ(I1(II),I2(II),I3(II)) =   ZTOT_CR_CFRZ(I1(II),I2(II),I3(II))   + Z_CR_CFRZ(II)  * ZMAXTIME(II)
-            ZTOT_RI_CFRZ(I1(II),I2(II),I3(II)) =   ZTOT_RI_CFRZ(I1(II),I2(II),I3(II))   + Z_RI_CFRZ(II)  * ZMAXTIME(II)
-            ZTOT_CI_CFRZ(I1(II),I2(II),I3(II)) =   ZTOT_CI_CFRZ(I1(II),I2(II),I3(II))   + Z_CI_CFRZ(II)  * ZMAXTIME(II)
-            ZTOT_TH_WETG(I1(II),I2(II),I3(II)) =   ZTOT_TH_WETG(I1(II),I2(II),I3(II))   + Z_TH_WETG(II)  * ZMAXTIME(II)
-            ZTOT_RC_WETG(I1(II),I2(II),I3(II)) =   ZTOT_RC_WETG(I1(II),I2(II),I3(II))   + Z_RC_WETG(II)  * ZMAXTIME(II)
-            ZTOT_CC_WETG(I1(II),I2(II),I3(II)) =   ZTOT_CC_WETG(I1(II),I2(II),I3(II))   + Z_CC_WETG(II)  * ZMAXTIME(II)
-            ZTOT_RR_WETG(I1(II),I2(II),I3(II)) =   ZTOT_RR_WETG(I1(II),I2(II),I3(II))   + Z_RR_WETG(II)  * ZMAXTIME(II)
-            ZTOT_CR_WETG(I1(II),I2(II),I3(II)) =   ZTOT_CR_WETG(I1(II),I2(II),I3(II))   + Z_CR_WETG(II)  * ZMAXTIME(II)
-            ZTOT_RI_WETG(I1(II),I2(II),I3(II)) =   ZTOT_RI_WETG(I1(II),I2(II),I3(II))   + Z_RI_WETG(II)  * ZMAXTIME(II)
-            ZTOT_CI_WETG(I1(II),I2(II),I3(II)) =   ZTOT_CI_WETG(I1(II),I2(II),I3(II))   + Z_CI_WETG(II)  * ZMAXTIME(II)
-            ZTOT_RS_WETG(I1(II),I2(II),I3(II)) =   ZTOT_RS_WETG(I1(II),I2(II),I3(II))   + Z_RS_WETG(II)  * ZMAXTIME(II)
-            ZTOT_RG_WETG(I1(II),I2(II),I3(II)) =   ZTOT_RG_WETG(I1(II),I2(II),I3(II))   + Z_RG_WETG(II)  * ZMAXTIME(II)
-            ZTOT_RH_WETG(I1(II),I2(II),I3(II)) =   ZTOT_RH_WETG(I1(II),I2(II),I3(II))   + Z_RH_WETG(II)  * ZMAXTIME(II)
-            ZTOT_TH_DRYG(I1(II),I2(II),I3(II)) =   ZTOT_TH_DRYG(I1(II),I2(II),I3(II))   + Z_TH_DRYG(II)  * ZMAXTIME(II)
-            ZTOT_RC_DRYG(I1(II),I2(II),I3(II)) =   ZTOT_RC_DRYG(I1(II),I2(II),I3(II))   + Z_RC_DRYG(II)  * ZMAXTIME(II)
-            ZTOT_CC_DRYG(I1(II),I2(II),I3(II)) =   ZTOT_CC_DRYG(I1(II),I2(II),I3(II))   + Z_CC_DRYG(II)  * ZMAXTIME(II)
-            ZTOT_RR_DRYG(I1(II),I2(II),I3(II)) =   ZTOT_RR_DRYG(I1(II),I2(II),I3(II))   + Z_RR_DRYG(II)  * ZMAXTIME(II)
-            ZTOT_CR_DRYG(I1(II),I2(II),I3(II)) =   ZTOT_CR_DRYG(I1(II),I2(II),I3(II))   + Z_CR_DRYG(II)  * ZMAXTIME(II)
-            ZTOT_RI_DRYG(I1(II),I2(II),I3(II)) =   ZTOT_RI_DRYG(I1(II),I2(II),I3(II))   + Z_RI_DRYG(II)  * ZMAXTIME(II)
-            ZTOT_CI_DRYG(I1(II),I2(II),I3(II)) =   ZTOT_CI_DRYG(I1(II),I2(II),I3(II))   + Z_CI_DRYG(II)  * ZMAXTIME(II)
-            ZTOT_RS_DRYG(I1(II),I2(II),I3(II)) =   ZTOT_RS_DRYG(I1(II),I2(II),I3(II))   + Z_RS_DRYG(II)  * ZMAXTIME(II)
-            ZTOT_RG_DRYG(I1(II),I2(II),I3(II)) =   ZTOT_RG_DRYG(I1(II),I2(II),I3(II))   + Z_RG_DRYG(II)  * ZMAXTIME(II)
-            ZTOT_RI_HMG(I1(II),I2(II),I3(II))  =   ZTOT_RI_HMG(I1(II),I2(II),I3(II))    + Z_RI_HMG(II)   * ZMAXTIME(II)
-            ZTOT_CI_HMG(I1(II),I2(II),I3(II))  =   ZTOT_CI_HMG(I1(II),I2(II),I3(II))    + Z_CI_HMG(II)   * ZMAXTIME(II)
-            ZTOT_RG_HMG(I1(II),I2(II),I3(II))  =   ZTOT_RG_HMG(I1(II),I2(II),I3(II))    + Z_RG_HMG(II)   * ZMAXTIME(II)
-            ZTOT_TH_GMLT(I1(II),I2(II),I3(II)) =   ZTOT_TH_GMLT(I1(II),I2(II),I3(II))   + Z_TH_GMLT(II)  * ZMAXTIME(II)
-            ZTOT_RR_GMLT(I1(II),I2(II),I3(II)) =   ZTOT_RR_GMLT(I1(II),I2(II),I3(II))   + Z_RR_GMLT(II)  * ZMAXTIME(II)
-            ZTOT_CR_GMLT(I1(II),I2(II),I3(II)) =   ZTOT_CR_GMLT(I1(II),I2(II),I3(II))   + Z_CR_GMLT(II)  * ZMAXTIME(II)
-!!$            ZTOT_RC_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RC_WETH(I1(II),I2(II),I3(II))   + Z_RC_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_CC_WETH(I1(II),I2(II),I3(II)) =   ZTOT_CC_WETH(I1(II),I2(II),I3(II))   + Z_CC_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RR_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RR_WETH(I1(II),I2(II),I3(II))   + Z_RR_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_CR_WETH(I1(II),I2(II),I3(II)) =   ZTOT_CR_WETH(I1(II),I2(II),I3(II))   + Z_CR_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RI_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RI_WETH(I1(II),I2(II),I3(II))   + Z_RI_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_CI_WETH(I1(II),I2(II),I3(II)) =   ZTOT_CI_WETH(I1(II),I2(II),I3(II))   + Z_CI_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RS_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RS_WETH(I1(II),I2(II),I3(II))   + Z_RS_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RG_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RG_WETH(I1(II),I2(II),I3(II))   + Z_RG_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RH_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RH_WETH(I1(II),I2(II),I3(II))   + Z_RH_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RG_COHG(I1(II),I2(II),I3(II)) =   ZTOT_RG_COHG(I1(II),I2(II),I3(II))   + Z_RG_COHG(II)  * ZMAXTIME(II)
-!!$            ZTOT_RR_HMLT(I1(II),I2(II),I3(II)) =   ZTOT_RR_HMLT(I1(II),I2(II),I3(II))   + Z_RR_HMLT(II)  * ZMAXTIME(II)
-!!$            ZTOT_CR_HMLT(I1(II),I2(II),I3(II)) =   ZTOT_CR_HMLT(I1(II),I2(II),I3(II))   + Z_CR_HMLT(II)  * ZMAXTIME(II)
-         END DO
-      ENDIF
-      !
-      ! Deallocating variables
-      !
-      DEALLOCATE(I1)
-      DEALLOCATE(I2)
-      DEALLOCATE(I3)
-      DEALLOCATE(ZRHODREF1D)
-      DEALLOCATE(ZEXNREF1D)
-      DEALLOCATE(ZEXN1D)
-      DEALLOCATE(ZP1D)     
-      DEALLOCATE(ZTHT1D)
-      DEALLOCATE(ZRVT1D)
-      DEALLOCATE(ZRCT1D)
-      DEALLOCATE(ZRRT1D)
-      DEALLOCATE(ZRIT1D)
-      DEALLOCATE(ZRST1D)
-      DEALLOCATE(ZRGT1D)
-      DEALLOCATE(ZRHT1D)
-      DEALLOCATE(ZCCT1D)
-      DEALLOCATE(ZCRT1D)
-      DEALLOCATE(ZCIT1D)
-      DEALLOCATE(ZIFNN1D)
-      DEALLOCATE(ZEVAP1D)
-      DEALLOCATE(ZTIME1D)
-      DEALLOCATE(LLCOMPUTE1D)
-      DEALLOCATE(IITER1D)
-      DEALLOCATE(ZTIME_LASTCALL1D)
-      DEALLOCATE(Z0RVT1D)
-      DEALLOCATE(Z0RCT1D)
-      DEALLOCATE(Z0RRT1D)
-      DEALLOCATE(Z0RIT1D)
-      DEALLOCATE(Z0RST1D)
-      DEALLOCATE(Z0RGT1D)
-      DEALLOCATE(Z0RHT1D)
-      !
-      DEALLOCATE(ZMAXTIME)
-      DEALLOCATE(ZTIME_THRESHOLD)
-      !
-      DEALLOCATE(ZA_TH)
-      DEALLOCATE(ZA_RV)
-      DEALLOCATE(ZA_RC)
-      DEALLOCATE(ZA_RR)
-      DEALLOCATE(ZA_RI)
-      DEALLOCATE(ZA_RS)
-      DEALLOCATE(ZA_RG)
-      DEALLOCATE(ZA_RH)
-      DEALLOCATE(ZA_CC)
-      DEALLOCATE(ZA_CR)
-      DEALLOCATE(ZA_CI)
-      !
-      DEALLOCATE(ZB_TH)
-      DEALLOCATE(ZB_RV)   
-      DEALLOCATE(ZB_RC)   
-      DEALLOCATE(ZB_RR)   
-      DEALLOCATE(ZB_RI)   
-      DEALLOCATE(ZB_RS)   
-      DEALLOCATE(ZB_RG)   
-      DEALLOCATE(ZB_RH)   
-      DEALLOCATE(ZB_CC)   
-      DEALLOCATE(ZB_CR)  
-      DEALLOCATE(ZB_CI)  
-      DEALLOCATE(ZB_IFNN)
-      !
-      DEALLOCATE(Z_CR_BRKU)
-      DEALLOCATE(Z_TH_HONR)
-      DEALLOCATE(Z_RR_HONR)
-      DEALLOCATE(Z_CR_HONR)
-      DEALLOCATE(Z_TH_IMLT)
-      DEALLOCATE(Z_RC_IMLT)
-      DEALLOCATE(Z_CC_IMLT)
-      DEALLOCATE(Z_TH_HONC)
-      DEALLOCATE(Z_RC_HONC)
-      DEALLOCATE(Z_CC_HONC)
-      DEALLOCATE(Z_CC_SELF) 
-      DEALLOCATE(Z_RC_AUTO) 
-      DEALLOCATE(Z_CC_AUTO)
-      DEALLOCATE(Z_CR_AUTO) 
-      DEALLOCATE(Z_RC_ACCR) 
-      DEALLOCATE(Z_CC_ACCR) 
-      DEALLOCATE(Z_CR_SCBU)
-      DEALLOCATE(Z_TH_EVAP) 
-      DEALLOCATE(Z_RR_EVAP) 
-      DEALLOCATE(Z_RI_CNVI)
-      DEALLOCATE(Z_CI_CNVI)
-      DEALLOCATE(Z_TH_DEPS)
-      DEALLOCATE(Z_RS_DEPS)
-      DEALLOCATE(Z_RI_CNVS)
-      DEALLOCATE(Z_CI_CNVS)
-      DEALLOCATE(Z_RI_AGGS) 
-      DEALLOCATE(Z_CI_AGGS) 
-      DEALLOCATE(Z_TH_DEPG) 
-      DEALLOCATE(Z_RG_DEPG) 
-      DEALLOCATE(Z_TH_BERFI)
-      DEALLOCATE(Z_RC_BERFI)
-      DEALLOCATE(Z_TH_RIM) 
-      DEALLOCATE(Z_RC_RIM) 
-      DEALLOCATE(Z_CC_RIM)  
-      DEALLOCATE(Z_RS_RIM) 
-      DEALLOCATE(Z_RG_RIM) 
-      DEALLOCATE(Z_RI_HMS) 
-      DEALLOCATE(Z_CI_HMS) 
-      DEALLOCATE(Z_RS_HMS) 
-      DEALLOCATE(Z_TH_ACC) 
-      DEALLOCATE(Z_RR_ACC) 
-      DEALLOCATE(Z_CR_ACC) 
-      DEALLOCATE(Z_RS_ACC) 
-      DEALLOCATE(Z_RG_ACC)  
-      DEALLOCATE(Z_RS_CMEL) 
-      DEALLOCATE(Z_TH_CFRZ)
-      DEALLOCATE(Z_RR_CFRZ)
-      DEALLOCATE(Z_CR_CFRZ)
-      DEALLOCATE(Z_RI_CFRZ)
-      DEALLOCATE(Z_CI_CFRZ)
-      DEALLOCATE(Z_TH_WETG)
-      DEALLOCATE(Z_RC_WETG)
-      DEALLOCATE(Z_CC_WETG)
-      DEALLOCATE(Z_RR_WETG) 
-      DEALLOCATE(Z_CR_WETG) 
-      DEALLOCATE(Z_RI_WETG)
-      DEALLOCATE(Z_CI_WETG)
-      DEALLOCATE(Z_RS_WETG)
-      DEALLOCATE(Z_RG_WETG)
-      DEALLOCATE(Z_RH_WETG) 
-      DEALLOCATE(Z_TH_DRYG) 
-      DEALLOCATE(Z_RC_DRYG) 
-      DEALLOCATE(Z_CC_DRYG)
-      DEALLOCATE(Z_RR_DRYG)
-      DEALLOCATE(Z_CR_DRYG)
-      DEALLOCATE(Z_RI_DRYG)
-      DEALLOCATE(Z_CI_DRYG)
-      DEALLOCATE(Z_RS_DRYG) 
-      DEALLOCATE(Z_RG_DRYG)
-      DEALLOCATE(Z_RI_HMG) 
-      DEALLOCATE(Z_CI_HMG) 
-      DEALLOCATE(Z_RG_HMG) 
-      DEALLOCATE(Z_TH_GMLT)
-      DEALLOCATE(Z_RR_GMLT)
-      DEALLOCATE(Z_CR_GMLT)
-      !      
-   ENDDO
-ENDDO
-!
-!-------------------------------------------------------------------------------
-!
-!*       7.     TOTAL TENDENCIES
-!               ----------------
-!
-! Old state = state before microphysics time-splitting = state after sedimentation and nucleation processes
-! Tendencies from microphysics = (new state - old state) / PTSTEP
-!                              = new state / PTSTEP   - old source 
-!
-ZW_RVS(:,:,:) = 0.
-ZW_RCS(:,:,:) = 0.
-ZW_CCS(:,:,:) = 0.
-ZW_RRS(:,:,:) = 0.
-ZW_CRS(:,:,:) = 0.
-ZW_RIS(:,:,:) = 0.
-ZW_CIS(:,:,:) = 0.
-ZW_RSS(:,:,:) = 0.
-ZW_RGS(:,:,:) = 0.
-ZW_RHS(:,:,:) = 0.
-ZW_THS(:,:,:) = 0.
-!     
-ZW_CCNFS(:,:,:,:) = 0.
-ZW_CCNAS(:,:,:,:) = 0.
-ZW_IFNFS(:,:,:,:) = 0.
-ZW_IFNNS(:,:,:,:) = 0.
-ZW_IMMNS(:,:,:,:) = 0.
-ZW_HOMFS(:,:,:)   = 0.
-!
-!!$IF ( KRR .GE. 1 ) ZW_RVS(:,:,:) = ( ZRVT(:,:,:) ) *ZINV_TSTEP - ZRVS(:,:,:)
-!!$IF ( KRR .GE. 2 ) ZW_RCS(:,:,:) = ( ZRCT(:,:,:) ) *ZINV_TSTEP - ZRCS(:,:,:)
-!!$IF ( KRR .GE. 3 ) ZW_RRS(:,:,:) = ( ZRRT(:,:,:) ) *ZINV_TSTEP - ZRRS(:,:,:)
-!!$IF ( KRR .GE. 4 ) ZW_RIS(:,:,:) = ( ZRIT(:,:,:) ) *ZINV_TSTEP - ZRIS(:,:,:)
-!!$IF ( KRR .GE. 5 ) ZW_RSS(:,:,:) = ( ZRST(:,:,:) ) *ZINV_TSTEP - ZRSS(:,:,:)
-!!$IF ( KRR .GE. 6 ) ZW_RGS(:,:,:) = ( ZRGT(:,:,:) ) *ZINV_TSTEP - ZRGS(:,:,:)
-!!$IF ( KRR .GE. 7 ) ZW_RHS(:,:,:) = ( ZRHT(:,:,:) ) *ZINV_TSTEP - ZRHS(:,:,:)
-!!$!
-!!$ZW_THS(:,:,:) = (ZW_RCS(:,:,:)+ZW_RRS(:,:,:)                            )*ZZ_LVFACT(:,:,:) + &
-!!$              & (ZW_RIS(:,:,:)+ZW_RSS(:,:,:)+ZW_RGS(:,:,:)+ZW_RHS(:,:,:))*ZZ_LSFACT(:,:,:)
-!!$!
-!!$! Source at the end of microphysics = new state / PTSTEP
-!!$!
-!!$IF ( KRR .GE. 1 ) ZW_RVS(:,:,:) = ZW_RVS(:,:,:) + ZRVS(:,:,:)
-!!$IF ( KRR .GE. 2 ) ZW_RCS(:,:,:) = ZW_RCS(:,:,:) + ZRCS(:,:,:)
-!!$IF ( KRR .GE. 3 ) ZW_RRS(:,:,:) = ZW_RRS(:,:,:) + ZRRS(:,:,:)
-!!$IF ( KRR .GE. 4 ) ZW_RIS(:,:,:) = ZW_RIS(:,:,:) + ZRIS(:,:,:)
-!!$IF ( KRR .GE. 5 ) ZW_RSS(:,:,:) = ZW_RSS(:,:,:) + ZRSS(:,:,:)
-!!$IF ( KRR .GE. 6 ) ZW_RGS(:,:,:) = ZW_RGS(:,:,:) + ZRGS(:,:,:)
-!!$IF ( KRR .GE. 7 ) ZW_RHS(:,:,:) = ZW_RHS(:,:,:) + ZRHS(:,:,:)
-!!$!
-!!$ZW_THS(:,:,:) = ZTHS(:,:,:) + ZW_THS(:,:,:)
-!
-IF ( KRR .GE. 1 ) ZW_RVS(:,:,:) = ( ZRVT(:,:,:) ) *ZINV_TSTEP
-IF ( KRR .GE. 2 ) ZW_RCS(:,:,:) = ( ZRCT(:,:,:) ) *ZINV_TSTEP
-IF ( KRR .GE. 3 ) ZW_RRS(:,:,:) = ( ZRRT(:,:,:) ) *ZINV_TSTEP
-IF ( KRR .GE. 4 ) ZW_RIS(:,:,:) = ( ZRIT(:,:,:) ) *ZINV_TSTEP
-IF ( KRR .GE. 5 ) ZW_RSS(:,:,:) = ( ZRST(:,:,:) ) *ZINV_TSTEP
-IF ( KRR .GE. 6 ) ZW_RGS(:,:,:) = ( ZRGT(:,:,:) ) *ZINV_TSTEP
-IF ( KRR .GE. 7 ) ZW_RHS(:,:,:) = ( ZRHT(:,:,:) ) *ZINV_TSTEP
-!
-IF ( LWARM_LIMA )             ZW_CCS(:,:,:) = ( ZCCT(:,:,:) ) *ZINV_TSTEP
-IF ( LWARM_LIMA .AND. LRAIN_LIMA ) ZW_CRS(:,:,:) = ( ZCRT(:,:,:) ) *ZINV_TSTEP
-IF ( LCOLD_LIMA )             ZW_CIS(:,:,:) = ( ZCIT(:,:,:) ) *ZINV_TSTEP
-!
-IF ( NMOD_CCN .GE. 1 )   ZW_CCNFS(:,:,:,:) = ( ZCCNFT(:,:,:,:) ) *ZINV_TSTEP
-IF ( NMOD_CCN .GE. 1 )   ZW_CCNAS(:,:,:,:) = ( ZCCNAT(:,:,:,:) ) *ZINV_TSTEP
-IF ( NMOD_IFN .GE. 1 )   ZW_IFNFS(:,:,:,:) = ( ZIFNFT(:,:,:,:) ) *ZINV_TSTEP
-IF ( NMOD_IFN .GE. 1 )   ZW_IFNNS(:,:,:,:) = ( ZIFNNT(:,:,:,:) ) *ZINV_TSTEP
-IF ( NMOD_IMM .GE. 1 )   ZW_IMMNS(:,:,:,:) = ( ZIMMNT(:,:,:,:) ) *ZINV_TSTEP
-IF ( LHHONI_LIMA )            ZW_HOMFS(:,:,:) = ( ZHOMFT(:,:,:)   ) *ZINV_TSTEP
-!
-ZW_THS(:,:,:) = ZTHT(:,:,:) * ZINV_TSTEP
-!
-!***     7.3    Final tendencies
-!
-! Mixing ratios
-!
-PRS(:,:,:,1) = ZW_RVS(:,:,:)
-IF ( KRR .GE. 2 ) PRS(:,:,:,2) = ZW_RCS(:,:,:)
-IF ( KRR .GE. 3 ) PRS(:,:,:,3) = ZW_RRS(:,:,:)
-IF ( KRR .GE. 4 ) PRS(:,:,:,4) = ZW_RIS(:,:,:)
-IF ( KRR .GE. 5 ) PRS(:,:,:,5) = ZW_RSS(:,:,:)
-IF ( KRR .GE. 6 ) PRS(:,:,:,6) = ZW_RGS(:,:,:)
-IF ( KRR .GE. 7 ) PRS(:,:,:,7) = ZW_RHS(:,:,:)
-!
-IF ( LWARM_LIMA )             PSVS(:,:,:,NSV_LIMA_NC) = ZW_CCS(:,:,:)
-IF ( LWARM_LIMA .AND. LRAIN_LIMA ) PSVS(:,:,:,NSV_LIMA_NR) = ZW_CRS(:,:,:)
-IF ( LCOLD_LIMA )             PSVS(:,:,:,NSV_LIMA_NI) = ZW_CIS(:,:,:)
-!
-IF ( NMOD_CCN .GE. 1 )   PSVS(:,:,:,NSV_LIMA_CCN_FREE:NSV_LIMA_CCN_FREE+NMOD_CCN-1) = ZW_CCNFS(:,:,:,:)
-IF ( NMOD_CCN .GE. 1 )   PSVS(:,:,:,NSV_LIMA_CCN_ACTI:NSV_LIMA_CCN_ACTI+NMOD_CCN-1) = ZW_CCNAS(:,:,:,:)
-IF ( NMOD_IFN .GE. 1 )   PSVS(:,:,:,NSV_LIMA_IFN_FREE:NSV_LIMA_IFN_FREE+NMOD_IFN-1) = ZW_IFNFS(:,:,:,:)
-IF ( NMOD_IFN .GE. 1 )   PSVS(:,:,:,NSV_LIMA_IFN_NUCL:NSV_LIMA_IFN_NUCL+NMOD_IFN-1) = ZW_IFNNS(:,:,:,:)
-IF ( NMOD_IMM .GE. 1 )   PSVS(:,:,:,NSV_LIMA_IMM_NUCL:NSV_LIMA_IMM_NUCL+NMOD_IMM-1) = ZW_IMMNS(:,:,:,:)
-IF ( LCOLD_LIMA .AND. LHHONI_LIMA ) PSVS(:,:,:,NSV_LIMA_HOM_HAZE) = ZW_HOMFS(:,:,:)
-!
-PTHS(:,:,:) = ZW_THS(:,:,:)
-!
-! Call budgets
-!
-IF(LBU_ENABLE) THEN
-   IF (LBUDGET_TH) THEN
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_EVAP(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'REVA_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_HONC(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'HONC_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_HONR(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'HONR_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_DEPS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'DEPS_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_DEPG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'DEPG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_IMLT(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'IMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_BERFI(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'BERFI_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_RIM(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'RIM_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_ACC(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'ACC_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'CFRZ_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_WETG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'WETG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'DRYG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-      ZTHS(:,:,:) = ZTHS(:,:,:) + ZTOT_TH_GMLT(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZTHS(:,:,:)*PRHODJ(:,:,:), 4  , 'GMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH)
-   END IF
-
-   IF (LBUDGET_RV) THEN
-      ZRVS(:,:,:) = ZRVS(:,:,:) - ZTOT_RR_EVAP(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRVS(:,:,:)*PRHODJ(:,:,:), 6  , 'REVA_BU_RRV',YDDDH, YDLDDH, YDMDDH)
-      ZRVS(:,:,:) = ZRVS(:,:,:) - ZTOT_RS_DEPS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRVS(:,:,:)*PRHODJ(:,:,:), 6  , 'DEPS_BU_RRV',YDDDH, YDLDDH, YDMDDH)
-      ZRVS(:,:,:) = ZRVS(:,:,:) - ZTOT_RG_DEPG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRVS(:,:,:)*PRHODJ(:,:,:), 6  , 'DEPG_BU_RRV',YDDDH, YDLDDH, YDMDDH)
-   END IF
-
-   IF (LBUDGET_RC) THEN
-      ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_AUTO(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'AUTO_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-      ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_ACCR(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'ACCR_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-      ! impact of rain evap !!!!!!
-      ZRCS(:,:,:) = ZRCS(:,:,:)
-      CALL BUDGET_DDH (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'REVA_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-      ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_HONC(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'HONC_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-      ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_IMLT(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'IMLT_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-      ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_BERFI(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'BERFI_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-      ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_RIM(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'RIM_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-      ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_WETG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'WETG_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-      ZRCS(:,:,:) = ZRCS(:,:,:) + ZTOT_RC_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRCS(:,:,:)*PRHODJ(:,:,:), 7  , 'DRYG_BU_RRC',YDDDH, YDLDDH, YDMDDH)
-   END IF
-   
-   IF (LBUDGET_RR) THEN
-      ZRRS(:,:,:) = ZRRS(:,:,:) - ZTOT_RC_AUTO(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'AUTO_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-      ZRRS(:,:,:) = ZRRS(:,:,:) - ZTOT_RC_ACCR(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'ACCR_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-      ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_EVAP(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'REVA_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-      ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_HONR(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'HONR_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-      ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_ACC(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'ACC_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-      ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'CFRZ_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-      ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_WETG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'WETG_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-      ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'DRYG_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-      ZRRS(:,:,:) = ZRRS(:,:,:) + ZTOT_RR_GMLT(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRRS(:,:,:)*PRHODJ(:,:,:), 8  , 'GMLT_BU_RRR',YDDDH, YDLDDH, YDMDDH)
-   END IF
-  
-   IF (LBUDGET_RI) THEN
-      ZRIS(:,:,:) = ZRIS(:,:,:) - ZTOT_RC_HONC(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'HONC_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-      ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_CNVI(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'CNVI_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-      ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_CNVS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'CNVS_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-      ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_AGGS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'AGGS_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-      ZRIS(:,:,:) = ZRIS(:,:,:) - ZTOT_RC_IMLT(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'IMLT_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-      ZRIS(:,:,:) = ZRIS(:,:,:) - ZTOT_RC_BERFI(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'BERFI_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-      ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_HMS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'HMS_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-      ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'CFRZ_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-      ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_WETG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'WETG_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-      ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'DRYG_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-      ZRIS(:,:,:) = ZRIS(:,:,:) + ZTOT_RI_HMG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRIS(:,:,:)*PRHODJ(:,:,:), 9  , 'HMG_BU_RRI',YDDDH, YDLDDH, YDMDDH)
-   END IF
-   
-   IF (LBUDGET_RS) THEN
-      ZRSS(:,:,:) = ZRSS(:,:,:) - ZTOT_RI_CNVI(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'CNVI_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-      ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_DEPS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'DEPS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-      ZRSS(:,:,:) = ZRSS(:,:,:) - ZTOT_RI_CNVS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'CNVS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-      ZRSS(:,:,:) = ZRSS(:,:,:) - ZTOT_RI_AGGS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'AGGS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-      ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_RIM(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'RIM_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-      ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_HMS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'HMS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-      ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_ACC(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'ACC_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-      ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_CMEL(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'CMEL_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-      ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_WETG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'WETG_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-      ZRSS(:,:,:) = ZRSS(:,:,:) + ZTOT_RS_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRSS(:,:,:)*PRHODJ(:,:,:), 10 , 'DRYG_BU_RRS',YDDDH, YDLDDH, YDMDDH)
-   END IF
-   
-   IF (LBUDGET_RG) THEN
-      ZRGS(:,:,:) = ZRGS(:,:,:) - ZTOT_RR_HONR(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'HONR_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-      ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_DEPG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'DEPG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-      ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_RIM(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'RIM_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-      ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_ACC(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'ACC_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-      ZRGS(:,:,:) = ZRGS(:,:,:) - ZTOT_RS_CMEL(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'CMEL_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-      ZRGS(:,:,:) = ZRGS(:,:,:) - ZTOT_RR_CFRZ(:,:,:)/PTSTEP - ZTOT_RI_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'CFRZ_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-      ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_WETG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'WETG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-      ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'DRYG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-      ZRGS(:,:,:) = ZRGS(:,:,:) + ZTOT_RG_HMG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'HMG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-      ZRGS(:,:,:) = ZRGS(:,:,:) - ZTOT_RR_GMLT(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRGS(:,:,:)*PRHODJ(:,:,:), 11 , 'GMLT_BU_RRG',YDDDH, YDLDDH, YDMDDH)
-   END IF
-
-   IF (LBUDGET_RH) THEN
-      ZRHS(:,:,:) = ZRHS(:,:,:) + ZTOT_RH_WETG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZRHS(:,:,:)*PRHODJ(:,:,:), 12 , 'WETG_BU_RRH',YDDDH, YDLDDH, YDMDDH)
-   END IF
-
-   IF (LBUDGET_SV) THEN
-      !
-      ! Cloud droplets
-      !
-      ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_SELF(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'SELF_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_AUTO(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'AUTO_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_ACCR(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'ACCR_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ! impact of rain evap !!!!!!
-      ZCCS(:,:,:) = ZCCS(:,:,:)
-      CALL BUDGET_DDH (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'REVA_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_HONC(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'HONC_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_IMLT(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'IMLT_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_RIM(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'RIM_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_WETG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'WETG_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCCS(:,:,:) = ZCCS(:,:,:) + ZTOT_CC_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCCS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NC  , 'DRYG_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      !
-      ! Rain drops
-      !
-      ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_AUTO(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'AUTO_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_SCBU(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'SCBU_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ! Rain evaporation !!!!!!!!!!!!!
-      ZCRS(:,:,:) = ZCRS(:,:,:)
-      CALL BUDGET_DDH (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'REVA_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_BRKU(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'BRKU_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_HONR(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'HONR_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_ACC(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'ACC_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'CFRZ_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_WETG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'WETG_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'DRYG_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCRS(:,:,:) = ZCRS(:,:,:) + ZTOT_CR_GMLT(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCRS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NR  , 'GMLT_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      !
-      ! Ice crystals
-      !
-      ZCIS(:,:,:) = ZCIS(:,:,:) - ZTOT_CC_HONC(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'HONC_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_CNVI(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'CNVI_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_CNVS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'CNVS_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_AGGS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'AGGS_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCIS(:,:,:) = ZCIS(:,:,:) - ZTOT_CC_IMLT(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'IMLT_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_HMS(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'HMS_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_CFRZ(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'CFRZ_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_WETG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'WETG_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_DRYG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'DRYG_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-      ZCIS(:,:,:) = ZCIS(:,:,:) + ZTOT_CI_HMG(:,:,:)/PTSTEP
-      CALL BUDGET_DDH (ZCIS(:,:,:)*PRHODJ(:,:,:), 12+NSV_LIMA_NI  , 'HMG_BU_RSV',YDDDH, YDLDDH, YDMDDH)
-   END IF
-!!$            ZTOT_RC_EVAP(I1(II),I2(II),I3(II)) =   ZTOT_RC_EVAP(I1(II),I2(II),I3(II))   + Z_RC_EVAP(II)  * ZMAXTIME(II)
-!!$            ZTOT_CC_EVAP(I1(II),I2(II),I3(II)) =   ZTOT_CC_EVAP(I1(II),I2(II),I3(II))   + Z_CC_EVAP(II)  * ZMAXTIME(II)
-!!$            ZTOT_CR_EVAP(I1(II),I2(II),I3(II)) =   ZTOT_CR_EVAP(I1(II),I2(II),I3(II))   + Z_CR_EVAP(II)  * ZMAXTIME(II)
-
-!!$            ZTOT_RC_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RC_WETH(I1(II),I2(II),I3(II))   + Z_RC_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_CC_WETH(I1(II),I2(II),I3(II)) =   ZTOT_CC_WETH(I1(II),I2(II),I3(II))   + Z_CC_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RR_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RR_WETH(I1(II),I2(II),I3(II))   + Z_RR_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_CR_WETH(I1(II),I2(II),I3(II)) =   ZTOT_CR_WETH(I1(II),I2(II),I3(II))   + Z_CR_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RI_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RI_WETH(I1(II),I2(II),I3(II))   + Z_RI_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_CI_WETH(I1(II),I2(II),I3(II)) =   ZTOT_CI_WETH(I1(II),I2(II),I3(II))   + Z_CI_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RS_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RS_WETH(I1(II),I2(II),I3(II))   + Z_RS_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RG_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RG_WETH(I1(II),I2(II),I3(II))   + Z_RG_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RH_WETH(I1(II),I2(II),I3(II)) =   ZTOT_RH_WETH(I1(II),I2(II),I3(II))   + Z_RH_WETH(II)  * ZMAXTIME(II)
-!!$            ZTOT_RG_COHG(I1(II),I2(II),I3(II)) =   ZTOT_RG_COHG(I1(II),I2(II),I3(II))   + Z_RG_COHG(II)  * ZMAXTIME(II)
-!!$            ZTOT_RR_HMLT(I1(II),I2(II),I3(II)) =   ZTOT_RR_HMLT(I1(II),I2(II),I3(II))   + Z_RR_HMLT(II)  * ZMAXTIME(II)
-!!$            ZTOT_CR_HMLT(I1(II),I2(II),I3(II)) =   ZTOT_CR_HMLT(I1(II),I2(II),I3(II))   + Z_CR_HMLT(II)  * ZMAXTIME(II)
- 
-END IF
-!
-END SUBROUTINE LIMA
diff --git a/src/arome/micro/lima_ccn_activation.F90 b/src/arome/micro/lima_ccn_activation.F90
deleted file mode 100644
index a4824192b76ee45437af77e580d16b9be1d74ce7..0000000000000000000000000000000000000000
--- a/src/arome/micro/lima_ccn_activation.F90
+++ /dev/null
@@ -1,766 +0,0 @@
-!      ###############################
-       MODULE MODI_LIMA_CCN_ACTIVATION
-!      ###############################
-!
-INTERFACE
-   SUBROUTINE LIMA_CCN_ACTIVATION (PTSTEP, HFMFILE, OCLOSE_OUT,                 &
-                                   PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU,   &
-                                   PTHT, PRVT, PRCT, PCCT, PRRT, PNFT, PNAT     )
-!
-REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
-                                                      ! (single if cold start)
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the output FM file
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST     ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZT         ! Temperature
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZTM        ! Temperature at time t-dt
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! updraft velocity used for
-                                                      ! the nucleation param.
-!   
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHT       ! Theta at t 
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRVT       ! Water vapor m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRCT       ! Cloud water m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCCT       ! Cloud water m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRT       ! Cloud water m.r. at t 
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNFT       ! CCN C. available at t
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNAT       ! CCN C. activated at t
-!
-END SUBROUTINE LIMA_CCN_ACTIVATION
-END INTERFACE
-END MODULE MODI_LIMA_CCN_ACTIVATION
-!     #############################################################################
-   SUBROUTINE LIMA_CCN_ACTIVATION (PTSTEP, HFMFILE, OCLOSE_OUT,                 &
-                                   PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU,   &
-                                   PTHT, PRVT, PRCT, PCCT, PRRT, PNFT, PNAT     )
-!     #############################################################################
-!
-!!
-!!    PURPOSE
-!!    -------
-!!      The purpose of this routine is to compute the activation of CCN 
-!!    according to Cohard and Pinty, QJRMS, 2000
-!!
-!!
-!!**  METHOD
-!!    ------
-!!      The activation of CCN is checked for quasi-saturated air parcels 
-!!    to update the cloud droplet number concentration.
-!!
-!!    Computation steps :
-!!      1- Check where computations are necessary
-!!      2- and 3- Compute the maximum of supersaturation using the iterative 
-!!                Ridder algorithm
-!!      4- Compute the nucleation source
-!!      5- Deallocate local variables
-!! 
-!!    Contains :
-!!      6- Functions : Ridder algorithm
-!!
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!      Cohard, J.-M. and J.-P. Pinty, 2000: A comprehensive two-moment warm 
-!!      microphysical bulk scheme. 
-!!        Part I: Description and tests
-!!        Part II: 2D experiments with a non-hydrostatic model
-!!      Accepted for publication in Quart. J. Roy. Meteor. Soc. 
-!!
-!!    AUTHOR
-!!    ------
-!!      J.-M. Cohard     * Laboratoire d'Aerologie*
-!!      J.-P. Pinty      * Laboratoire d'Aerologie*
-!!      S.    Berthet    * Laboratoire d'Aerologie*
-!!      B.    Vié        * Laboratoire d'Aerologie*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original             ??/??/13 
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-USE MODD_PARAMETERS,      ONLY : JPHEXT, JPVEXT
-USE MODD_CST,             ONLY : XALPW, XBETAW, XCL, XCPD, XCPV, XGAMW, XLVTT, XMD, XMV, XRV, XTT
-USE MODD_PARAM_LIMA,      ONLY : LACTIT_LIMA, NMOD_CCN, XKHEN_MULTI, XCTMIN, XLIMIT_FACTOR
-USE MODD_PARAM_LIMA_WARM, ONLY : XWMIN, NAHEN, NHYP, XAHENINTP1, XAHENINTP2, XCSTDCRIT, XHYPF12, &
-                                 XHYPINTP1, XHYPINTP2, XTMIN, XHYPF32, XPSI3, XAHENG, XPSI1
-!
-USE MODI_GAMMA
-USE MODI_LIMA_FUNCTIONS,  ONLY : COUNTJV
-!
-IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-REAL,                     INTENT(IN)    :: PTSTEP     ! Double Time step
-                                                      ! (single if cold start)
-CHARACTER(LEN=*),         INTENT(IN)    :: HFMFILE    ! Name of the output FM-file
-LOGICAL,                  INTENT(IN)    :: OCLOSE_OUT ! Conditional closure of 
-                                                      ! the output FM file
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF   ! Reference density
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PEXNREF    ! Reference Exner function
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PPABST     ! abs. pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZT         ! Temperature
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: ZTM        ! Temperature at time t-dt
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PW_NU      ! updraft velocity used for
-                                                      ! the nucleation param.
-!   
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PTHT       ! Theta at t 
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRVT       ! Water vapor m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRCT       ! Cloud water m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PCCT       ! Cloud water m.r. at t 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRRT       ! Cloud water m.r. at t 
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNFT       ! CCN C. available at t
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNAT       ! CCN C. activated at t
-!
-!
-!*       0.1   Declarations of local variables :
-!
-! Packing variables
-LOGICAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: GNUCT 
-INTEGER :: INUCT
-INTEGER , DIMENSION(SIZE(GNUCT))   :: I1,I2,I3 ! Used to replace the COUNT
-INTEGER                            :: JL       ! and PACK intrinsics 
-!
-! Packed micophysical variables
-REAL, DIMENSION(:,:), ALLOCATABLE  :: ZNFT     ! available nucleus conc. source
-REAL, DIMENSION(:,:), ALLOCATABLE  :: ZNAT     ! activated nucleus conc. source
-!
-! Other packed variables
-REAL, DIMENSION(:)  , ALLOCATABLE  :: ZRHODREF ! RHO Dry REFerence
-REAL, DIMENSION(:)  , ALLOCATABLE  :: ZEXNREF  ! EXNer Pressure REFerence
-REAL, DIMENSION(:)  , ALLOCATABLE  :: ZZT      ! Temperature
-!
-! Work arrays
-REAL, DIMENSION(:), ALLOCATABLE    :: ZZW1, ZZW2, ZZW3, ZZW4, ZZW5, ZZW6, &
-                                      ZZTDT,          & ! dT/dt
-                                      ZSMAX,          & ! Maximum supersaturation
-                                      ZVEC1
-!
-REAL, DIMENSION(:,:), ALLOCATABLE  :: ZTMP, ZCHEN_MULTI
-!
-REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3))   &
-                                   :: ZTDT, ZDRC, ZRVSAT, ZW  
-REAL, DIMENSION(SIZE(PNFT,1),SIZE(PNFT,2),SIZE(PNFT,3))               &
-                                   :: ZCONC_TOT         ! total CCN C. available
-!
-INTEGER, DIMENSION(:), ALLOCATABLE :: IVEC1             ! Vectors of indices for
-                                                        ! interpolations
-!
-! 
-REAL    :: ZEPS                                ! molar mass ratio
-REAL    :: ZS1, ZS2, ZXACC 
-INTEGER :: JMOD
-INTEGER :: IIB, IIE, IJB, IJE, IKB, IKE        ! Physical domain
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       1.     PREPARE COMPUTATIONS - PACK
-!   	        ---------------------------
-!
-IIB=1+JPHEXT
-IIE=SIZE(PRHODREF,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PRHODREF,2) - JPHEXT
-IKB=1+JPVEXT
-IKE=SIZE(PRHODREF,3) - JPVEXT
-!
-!  Saturation vapor mixing ratio and radiative tendency                    
-!
-ZEPS= XMV / XMD
-!
-ZRVSAT(:,:,:) = ZEPS / (PPABST(:,:,:) * &
-                EXP(-XALPW+XBETAW/ZT(:,:,:)+XGAMW*ALOG(ZT(:,:,:))) - 1.0)
-ZTDT(:,:,:)   = 0.
-!! ZDRC(:,:,:)   = 0.
-IF (LACTIT_LIMA) THEN
-   ZTDT(:,:,:)   = (ZT(:,:,:)-ZTM(:,:,:))/PTSTEP                   ! dT/dt 
-!!!   ZDRC(:,:,:)   = (PRCT(:,:,:)-PRCM(:,:,:))/PTSTEP                ! drc/dt
-!!   ZDRC(:,:,:)   = PRCS(:,:,:)-(PRCT(:,:,:)/PTSTEP)                ! drc/dt
-!!
-!! BV - W and drc/dt effect should not be included in ZTDT (already accounted for in the computations) ?  
-!!
-!!   ZTDT(:,:,:)   = MIN(0.,ZTDT(:,:,:)+(XG*PW_NU(:,:,:))/XCPD- &
-!!        (XLVTT+(XCPV-XCL)*(ZT(:,:,:)-XTT))*ZDRC(:,:,:)/XCPD)
-END IF
-!
-!  find locations where CCN are available
-!
-ZCONC_TOT(:,:,:) = 0.0
-DO JMOD = 1, NMOD_CCN 
-   ZCONC_TOT(:,:,:) = ZCONC_TOT(:,:,:) + PNFT(:,:,:,JMOD) ! sum over the free CCN
-ENDDO
-!
-!  optimization by looking for locations where
-!  the updraft velocity is positive!!!
-!
-GNUCT(:,:,:) = .FALSE.
-!
-! NEW : -22°C = limit sup for condensation freezing in Fridlin et al., 2007
-IF( LACTIT_LIMA ) THEN
-   GNUCT(IIB:IIE,IJB:IJE,IKB:IKE) = (PW_NU(IIB:IIE,IJB:IJE,IKB:IKE)>XWMIN  .OR. &
-                                      ZTDT(IIB:IIE,IJB:IJE,IKB:IKE)<XTMIN) .AND.&
-            PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>(0.98*ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE))&
-             .AND. ZT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.)                        &
-             .AND. ZCONC_TOT(IIB:IIE,IJB:IJE,IKB:IKE)>XCTMIN(4)
-ELSE 
-   GNUCT(IIB:IIE,IJB:IJE,IKB:IKE) =   PW_NU(IIB:IIE,IJB:IJE,IKB:IKE)>XWMIN .AND.&
-            PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>(0.98*ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE))&
-             .AND. ZT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.)                        &
-             .AND. ZCONC_TOT(IIB:IIE,IJB:IJE,IKB:IKE)>XCTMIN(4)
-END IF
-INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:))
-!
-IF( INUCT >= 1 ) THEN
-!
-   ALLOCATE(ZNFT(INUCT,NMOD_CCN))
-   ALLOCATE(ZNAT(INUCT,NMOD_CCN))
-   ALLOCATE(ZTMP(INUCT,NMOD_CCN))
-   ALLOCATE(ZZT(INUCT)) 
-   ALLOCATE(ZZTDT(INUCT)) 
-   ALLOCATE(ZZW1(INUCT))
-   ALLOCATE(ZZW2(INUCT))
-   ALLOCATE(ZZW3(INUCT))
-   ALLOCATE(ZZW4(INUCT))
-   ALLOCATE(ZZW5(INUCT))
-   ALLOCATE(ZZW6(INUCT))
-   ALLOCATE(ZCHEN_MULTI(INUCT,NMOD_CCN))
-   ALLOCATE(ZVEC1(INUCT))
-   ALLOCATE(IVEC1(INUCT))
-   ALLOCATE(ZRHODREF(INUCT)) 
-   ALLOCATE(ZEXNREF(INUCT)) 
-   DO JL=1,INUCT
-      ZZT(JL)  = ZT(I1(JL),I2(JL),I3(JL))
-      ZZW1(JL) = ZRVSAT(I1(JL),I2(JL),I3(JL))
-      ZZW2(JL) = PW_NU(I1(JL),I2(JL),I3(JL))
-      ZZTDT(JL)  = ZTDT(I1(JL),I2(JL),I3(JL))
-      ZRHODREF(JL) = PRHODREF(I1(JL),I2(JL),I3(JL))
-      ZEXNREF(JL)  = PEXNREF(I1(JL),I2(JL),I3(JL))
-      DO JMOD = 1,NMOD_CCN
-         ZNFT(JL,JMOD)        = PNFT(I1(JL),I2(JL),I3(JL),JMOD)
-         ZNAT(JL,JMOD)        = PNAT(I1(JL),I2(JL),I3(JL),JMOD)
-         ZCHEN_MULTI(JL,JMOD) = (ZNFT(JL,JMOD)+ZNAT(JL,JMOD))*ZRHODREF(JL) &
-                                                             / XLIMIT_FACTOR(JMOD)
-      ENDDO
-   ENDDO
-!
-   ZZW1(:) = 1.0/ZEPS + 1.0/ZZW1(:)                                   &
-             + (((XLVTT+(XCPV-XCL)*(ZZT(:)-XTT))/ZZT(:))**2)/(XCPD*XRV) ! Psi2
-!
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       2. compute the constant term (ZZW3) relative to smax    
-!   	 ----------------------------------------------------
-!
-!  Remark : in LIMA's nucleation parameterization, Smax=0.01 for a supersaturation of 1% !
-!
-!
-   ZVEC1(:) = MAX( 1.00001, MIN( FLOAT(NAHEN)-0.00001, &
-                                 XAHENINTP1 * ZZT(:) + XAHENINTP2 )  )
-   IVEC1(:) = INT( ZVEC1(:) )
-   ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) )
-   ALLOCATE(ZSMAX(INUCT))
-!
-!
-   IF (LACTIT_LIMA) THEN ! including a cooling rate
-!
-!       Compute the tabulation of function of ZZW3 :
-!
-!                                                  (Psi1*w+Psi3*DT/Dt)**1.5 
-!       ZZW3 = XAHENG*(Psi1*w + Psi3*DT/Dt)**1.5 = ------------------------ 
-!                                                   2*pi*rho_l*G**(3/2)     
-!
-!
-        ZZW4(:)=XPSI1( IVEC1(:)+1)*ZZW2(:)+XPSI3(IVEC1(:)+1)*ZZTDT(:)
-        ZZW5(:)=XPSI1( IVEC1(:)  )*ZZW2(:)+XPSI3(IVEC1(:)  )*ZZTDT(:)
-        WHERE (ZZW4(:) < 0. .OR. ZZW5(:) < 0.)
-           ZZW4(:) = 0.
-           ZZW5(:) = 0.
-        END WHERE
-        ZZW3(:) =   XAHENG( IVEC1(:)+1)*(ZZW4(:)**1.5)* ZVEC1(:)      &
-                  - XAHENG( IVEC1(:)  )*(ZZW5(:)**1.5)*(ZVEC1(:) - 1.0)
-                       ! Cste*((Psi1*w+Psi3*dT/dt)/(G))**1.5
-!
-!
-   ELSE ! LACTIT_LIMA , for clouds
-!
-!
-!       Compute the tabulation of function of ZZW3 :
-!
-!                                             (Psi1 * w)**1.5       
-!       ZZW3 = XAHENG * (Psi1 * w)**1.5  = -------------------------
-!                                            2 pi rho_l * G**(3/2)  
-!
-!
-        ZZW3(:)=XAHENG(IVEC1(:)+1)*((XPSI1(IVEC1(:)+1)*ZZW2(:))**1.5)* ZVEC1(:)    &
-               -XAHENG(IVEC1(:)  )*((XPSI1(IVEC1(:)  )*ZZW2(:))**1.5)*(ZVEC1(:)-1.0)
-!
-   END IF ! LACTIT_LIMA
-!
-!
-!              (Psi1*w+Psi3*DT/Dt)**1.5   rho_air
-!       ZZW3 = ------------------------ * -------
-!                 2*pi*rho_l*G**(3/2)       Psi2
-!
-   ZZW5(:) = 1.
-   ZZW3(:) = (ZZW3(:)/ZZW1(:))*ZRHODREF(:) ! R.H.S. of Eq 9 of CPB 98 but
-                                           ! for multiple aerosol modes
-   WHERE (ZZW3(:) == 0.)
-      ZZW5(:) = -1.
-   END WHERE
-!
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       3. Compute the maximum of supersaturation
-!   	 -----------------------------------------
-!
-!
-! estimate S_max for the CPB98 parameterization with SEVERAL aerosols mode
-! Reminder : Smax=0.01 for a 1% supersaturation
-!
-! Interval bounds to tabulate sursaturation Smax
-! Check with values used for tabulation in ini_lima_warm.f90
-   ZS1 = 1.0E-5                   ! corresponds to  0.001% supersaturation
-   ZS2 = 5.0E-2                   ! corresponds to 5.0% supersaturation 
-   ZXACC = 1.0E-7                 ! Accuracy needed for the search in [NO UNITS]
-!
-   ZSMAX(:) = ZRIDDR(ZS1,ZS2,ZXACC,ZZW3(:),INUCT)    ! ZSMAX(:) is in [NO UNITS]
-!
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       4. Compute the nucleus source
-!   	 -----------------------------
-!
-!
-! Again : Smax=0.01 for a 1% supersaturation
-! Modified values for Beta and C (see in init_aerosol_properties) account for that
-!
-   WHERE (ZZW5(:) > 0. .AND. ZSMAX(:) > 0.)
-      ZVEC1(:) = MAX( 1.00001, MIN( FLOAT(NHYP)-0.00001,  &
-                                    XHYPINTP1*LOG(ZSMAX(:))+XHYPINTP2 ) )
-      IVEC1(:) = INT( ZVEC1(:) )
-      ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) )
-   END WHERE
-   ZZW6(:)  = 0. ! initialize the change of cloud droplet concentration
-!
-   ZTMP(:,:)=0.0
-!
-! Compute the concentration of activable aerosols for each mode
-! based on the max of supersaturation ( -> ZTMP )
-!
-   DO JMOD = 1, NMOD_CCN                     ! iteration on mode number
-      ZZW1(:) = 0.
-      ZZW2(:) = 0.
-      ZZW3(:) = 0.
-   !
-      WHERE( ZSMAX(:)>0.0 )
-         ZZW2(:) =  XHYPF12( IVEC1(:)+1,JMOD )* ZVEC1(:)      & ! hypergeo function
-                  - XHYPF12( IVEC1(:)  ,JMOD )*(ZVEC1(:) - 1.0) ! XHYPF12 is tabulated
-   !
-         ZTMP(:,JMOD) = (ZCHEN_MULTI(:,JMOD)/ZRHODREF(:))*ZSMAX(:)**XKHEN_MULTI(JMOD) &
-                                                         *ZZW2(:)
-      ENDWHERE
-   ENDDO
-!
-! Compute the concentration of aerosols activated at this time step
-! as the difference between ZTMP and the aerosols already activated at t-dt (ZZW1)
-!
-   DO JMOD = 1, NMOD_CCN                     ! iteration on mode number
-      ZZW1(:) = 0.
-      ZZW2(:) = 0.
-      ZZW3(:) = 0.
-   !
-      WHERE( SUM(ZTMP(:,:),DIM=2) .GT. 25.E6/ZRHODREF(:) ) 
-         ZZW1(:) = MIN( ZNFT(:,JMOD),MAX( ZTMP(:,JMOD)- ZNAT(:,JMOD) , 0.0 ) )
-      ENDWHERE
-   !
-   !* update the concentration of activated CCN = Na
-   !
-      PNAT(:,:,:,JMOD) = PNAT(:,:,:,JMOD) + UNPACK( ZZW1(:), MASK=GNUCT(:,:,:), FIELD=0.0 )
-   !
-   !* update the concentration of free CCN = Nf
-   !
-      PNFT(:,:,:,JMOD) = PNFT(:,:,:,JMOD) - UNPACK( ZZW1(:), MASK=GNUCT(:,:,:), FIELD=0.0 )
-   !
-   !* prepare to update the cloud water concentration 
-   !
-      ZZW6(:) = ZZW6(:) + ZZW1(:)
-   ENDDO
-!
-! Output tendencies
-!
-   ZZW1(:)=0.
-   WHERE (ZZW5(:)>0.0 .AND. ZSMAX(:)>0.0) ! ZZW1 is computed with ZSMAX [NO UNIT]
-      ZZW1(:) = MIN(XCSTDCRIT*ZZW6(:)/(((ZZT(:)*ZSMAX(:))**3)*ZRHODREF(:)),1.E-5)
-   END WHERE
-   ZW(:,:,:) = MIN( UNPACK( ZZW1(:),MASK=GNUCT(:,:,:),FIELD=0.0 ),PRVT(:,:,:) )
-!
-   PRVT(:,:,:) = PRVT(:,:,:) - ZW(:,:,:) 
-   PRCT(:,:,:) = PRCT(:,:,:) + ZW(:,:,:) 
-   PCCT(:,:,:) = PCCT(:,:,:) + UNPACK( ZZW6(:),MASK=GNUCT(:,:,:),FIELD=0. ) 
-   PTHT(:,:,:) = PTHT(:,:,:) + ZW(:,:,:) * (XLVTT+(XCPV-XCL)*(ZT(:,:,:)-XTT))/                &
-            (PEXNREF(:,:,:)*(XCPD+XCPV*PRVT(:,:,:)+XCL*(PRCT(:,:,:)+PRRT(:,:,:))))
-!
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       5. Cleaning
-!   	 -----------
-!
-!
-   DEALLOCATE(IVEC1)
-   DEALLOCATE(ZVEC1)
-   DEALLOCATE(ZNFT)
-   DEALLOCATE(ZNAT)
-   DEALLOCATE(ZZT)
-   DEALLOCATE(ZSMAX)
-   DEALLOCATE(ZZW1)
-   DEALLOCATE(ZZW2)
-   DEALLOCATE(ZZW3)
-   DEALLOCATE(ZZW4)
-   DEALLOCATE(ZZW5)
-   DEALLOCATE(ZZW6)
-   DEALLOCATE(ZZTDT)
-   DEALLOCATE(ZRHODREF)
-   DEALLOCATE(ZCHEN_MULTI)
-   DEALLOCATE(ZEXNREF)
-!
-END IF ! INUCT
-!
-!
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       6. Functions used to compute the maximum of supersaturation
-!   	 -----------------------------------------------------------
-!
-!
-CONTAINS
-!------------------------------------------------------------------------------
-!
-  FUNCTION ZRIDDR(PX1,PX2INIT,PXACC,PZZW3,NPTS)  RESULT(PZRIDDR)
-!
-!
-!!****  *ZRIDDR* - iterative algorithm to find root of a function
-!!
-!!
-!!    PURPOSE
-!!    -------
-!!       The purpose of this function is to find the root of a given function
-!!     the arguments are the brackets bounds (the interval where to find the root)
-!!     the accuracy needed and the input parameters of the given function.
-!!     Using Ridders' method, return the root of a function known to lie between 
-!!     PX1 and PX2. The root, returned as PZRIDDR, will be refined to an approximate
-!!     accuracy PXACC.
-!! 
-!!**  METHOD
-!!    ------
-!!       Ridders' method
-!!
-!!    EXTERNAL
-!!    --------
-!!       FUNCSMAX  
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!      NUMERICAL RECIPES IN FORTRAN 77: THE ART OF SCIENTIFIC COMPUTING 
-!!     (ISBN 0-521-43064-X)
-!!      Copyright (C) 1986-1992 by Cambridge University Press.
-!!      Programs Copyright (C) 1986-1992 by Numerical Recipes Software.
-!!
-!!    AUTHOR
-!!    ------
-!!      Frederick Chosson *CERFACS*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original     12/07/07
-!!      S.BERTHET        2008 vectorization 
-!------------------------------------------------------------------------------
-!
-!*       0. DECLARATIONS
-!
-!
-IMPLICIT NONE
-!
-!*       0.1 declarations of arguments and result
-!
-INTEGER,            INTENT(IN)     :: NPTS
-REAL, DIMENSION(:), INTENT(IN)     :: PZZW3
-REAL,               INTENT(IN)     :: PX1, PX2INIT, PXACC
-REAL, DIMENSION(:), ALLOCATABLE    :: PZRIDDR
-!
-!*       0.2 declarations of local variables
-!
-!
-INTEGER, PARAMETER                 :: MAXIT=60
-REAL,    PARAMETER                 :: UNUSED=0.0 !-1.11e30
-REAL,    DIMENSION(:), ALLOCATABLE :: fh,fl, fm,fnew
-REAL                               :: s,xh,xl,xm,xnew
-REAL                               :: PX2
-INTEGER                            :: j, JL
-!
-ALLOCATE(  fh(NPTS))
-ALLOCATE(  fl(NPTS))
-ALLOCATE(  fm(NPTS))
-ALLOCATE(fnew(NPTS))
-ALLOCATE(PZRIDDR(NPTS))
-!
-PZRIDDR(:)= UNUSED
-PX2       = PX2INIT 
-fl(:)     = FUNCSMAX(PX1,PZZW3(:),NPTS)
-fh(:)     = FUNCSMAX(PX2,PZZW3(:),NPTS)
-!
-DO JL = 1, NPTS
-   PX2 = PX2INIT
-100 if ((fl(JL) > 0.0 .and. fh(JL) < 0.0) .or. (fl(JL) < 0.0 .and. fh(JL) > 0.0)) then
-      xl         = PX1
-      xh         = PX2
-      do j=1,MAXIT
-         xm     = 0.5*(xl+xh)
-         fm(JL) = SINGL_FUNCSMAX(xm,PZZW3(JL),JL)
-         s      = sqrt(fm(JL)**2-fl(JL)*fh(JL))
-         if (s == 0.0) then
-            GO TO 101
-         endif
-         xnew  = xm+(xm-xl)*(sign(1.0,fl(JL)-fh(JL))*fm(JL)/s)
-         if (abs(xnew - PZRIDDR(JL)) <= PXACC) then
-            GO TO 101 
-         endif
-         PZRIDDR(JL) = xnew
-         fnew(JL)  = SINGL_FUNCSMAX(PZRIDDR(JL),PZZW3(JL),JL)
-         if (fnew(JL) == 0.0) then
-            GO TO 101
-         endif
-         if (sign(fm(JL),fnew(JL)) /= fm(JL)) then
-            xl    =xm
-            fl(JL)=fm(JL)
-            xh    =PZRIDDR(JL)
-            fh(JL)=fnew(JL)
-         else if (sign(fl(JL),fnew(JL)) /= fl(JL)) then
-            xh    =PZRIDDR(JL)
-            fh(JL)=fnew(JL)
-         else if (sign(fh(JL),fnew(JL)) /= fh(JL)) then
-            xl    =PZRIDDR(JL)
-            fl(JL)=fnew(JL)
-         else if (PX2 .lt. 0.05) then
-            PX2 = PX2 + 1.0E-2
-            PRINT*, 'PX2 ALWAYS too small, we put a greater one : PX2 =',PX2
-            fh(JL)   = SINGL_FUNCSMAX(PX2,PZZW3(JL),JL)
-            go to 100
-            print*, 'PZRIDDR: never get here'
-            STOP
-         end if
-         if (abs(xh-xl) <= PXACC) then
-            GO TO 101 
-         endif
-!!SB
-!!$      if (j == MAXIT .and. (abs(xh-xl) > PXACC) ) then
-!!$        PZRIDDR(JL)=0.0
-!!$        go to 101
-!!$      endif   
-!!SB
-      end do
-      print*, 'PZRIDDR: exceeded maximum iterations',j
-      STOP
-   else if (fl(JL) == 0.0) then
-      PZRIDDR(JL)=PX1
-   else if (fh(JL) == 0.0) then
-      PZRIDDR(JL)=PX2
-   else if (PX2 .lt. 0.05) then
-      PX2 = PX2 + 1.0E-2
-      PRINT*, 'PX2 too small, we put a greater one : PX2 =',PX2
-      fh(JL)   = SINGL_FUNCSMAX(PX2,PZZW3(JL),JL)
-      go to 100
-   else
-!!$      print*, 'PZRIDDR: root must be bracketed'
-!!$      print*,'npts ',NPTS,'jl',JL
-!!$      print*, 'PX1,PX2,fl,fh',PX1,PX2,fl(JL),fh(JL)
-!!$      print*, 'PX2 = 30 % of supersaturation, there is no solution for Smax'
-!!$      print*, 'try to put greater PX2 (upper bound for Smax research)'
-!!$      STOP
-      PZRIDDR(JL)=0.0
-      go to 101
-   end if
-101 ENDDO
-!
-DEALLOCATE(  fh)
-DEALLOCATE(  fl)
-DEALLOCATE(  fm)
-DEALLOCATE(fnew)
-!
-END FUNCTION ZRIDDR
-!
-!------------------------------------------------------------------------------
-!
-  FUNCTION FUNCSMAX(PPZSMAX,PPZZW3,NPTS)  RESULT(PFUNCSMAX)
-!
-!
-!!****  *FUNCSMAX* - function describing SMAX function that you want to find the root
-!!
-!!
-!!    PURPOSE
-!!    -------
-!!       This function describe the equilibrium between Smax and two aerosol mode
-!!     acting as CCN. This function is derive from eq. (9) of CPB98 but for two
-!!     aerosols mode described by their respective parameters C, k, Mu, Beta.
-!!     the arguments are the supersaturation in "no unit" and the r.h.s. of this eq.
-!!     and the ratio of concentration of injected aerosols on maximum concentration
-!!     of injected aerosols ever.
-!!**  METHOD
-!!    ------
-!!       This function is called by zriddr.f90
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!    Module MODD_PARAM_LIMA_WARM
-!!        XHYPF32
-!!
-!!        XHYPINTP1
-!!        XHYPINTP2
-!!
-!!    Module MODD_PARAM_C2R2
-!!        XKHEN_MULTI()
-!!        NMOD_CCN
-!!       
-!!    REFERENCE
-!!    ---------
-!!    Cohard, J.M., J.P.Pinty, K.Suhre, 2000:"On the parameterization of activation
-!!             spectra from cloud condensation nuclei microphysical properties",
-!!             J. Geophys. Res., Vol.105, N0.D9, pp. 11753-11766
-!!
-!!    AUTHOR
-!!    ------
-!!      Frederick Chosson *CERFACS*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original     12/07/07
-!!      S.Berthet    19/03/08 Extension a une population multimodale d aerosols
-!
-!------------------------------------------------------------------------------
-!
-!*       0. DECLARATIONS
-!
-IMPLICIT NONE
-!
-!*       0.1 declarations of arguments and result
-!
-INTEGER,            INTENT(IN)  :: NPTS
-REAL,               INTENT(IN)  :: PPZSMAX   ! supersaturation is already in no units
-REAL, DIMENSION(:), INTENT(IN)  :: PPZZW3    ! 
-REAL, DIMENSION(:), ALLOCATABLE :: PFUNCSMAX ! 
-!
-!*       0.2 declarations of local variables
-!
-REAL                           :: ZHYPF
-!
-REAL                           :: PZVEC1
-INTEGER                        :: PIVEC1
-!
-ALLOCATE(PFUNCSMAX(NPTS))
-!
-PFUNCSMAX(:) = 0.
-PZVEC1 = MAX( 1.00001,MIN( FLOAT(NHYP)-0.00001,               &
-                           XHYPINTP1*LOG(PPZSMAX)+XHYPINTP2 ) )
-PIVEC1 = INT( PZVEC1 )
-PZVEC1 = PZVEC1 - FLOAT( PIVEC1 )
-DO JMOD = 1, NMOD_CCN
-   ZHYPF        = 0.          ! XHYPF32 is tabulated with ZSMAX in [NO UNITS]
-   ZHYPF        =   XHYPF32( PIVEC1+1,JMOD ) * PZVEC1              &
-                  - XHYPF32( PIVEC1  ,JMOD ) *(PZVEC1 - 1.0)
-                             ! sum of s**(ki+2) * F32 * Ci * ki * beta(ki/2,3/2)
-   PFUNCSMAX(:) =  PFUNCSMAX(:) + (PPZSMAX)**(XKHEN_MULTI(JMOD) + 2) &
-                 * ZHYPF* XKHEN_MULTI(JMOD) * ZCHEN_MULTI(:,JMOD)    &
-                 * GAMMA_X0D( XKHEN_MULTI(JMOD)/2.0)*GAMMA_X0D(3.0/2.0)      &
-                 / GAMMA_X0D((XKHEN_MULTI(JMOD)+3.0)/2.0)
-ENDDO
-! function l.h.s. minus r.h.s. of eq. (9) of CPB98 but for NMOD_CCN aerosol mode
-PFUNCSMAX(:) = PFUNCSMAX(:) - PPZZW3(:)
-!
-END FUNCTION FUNCSMAX
-!
-!------------------------------------------------------------------------------
-!
-  FUNCTION SINGL_FUNCSMAX(PPZSMAX,PPZZW3,KINDEX)  RESULT(PSINGL_FUNCSMAX)
-!
-!
-!!****  *SINGL_FUNCSMAX* - same function as FUNCSMAX
-!!
-!!
-!!    PURPOSE
-!!    -------
-!        As for FUNCSMAX but for a scalar
-!!
-!!**  METHOD
-!!    ------
-!!       This function is called by zriddr.f90
-!!
-!------------------------------------------------------------------------------
-!
-!*       0. DECLARATIONS
-!
-IMPLICIT NONE
-!
-!*       0.1 declarations of arguments and result
-!
-INTEGER,            INTENT(IN)  :: KINDEX
-REAL,               INTENT(IN)  :: PPZSMAX   ! supersaturation is "no unit"
-REAL,               INTENT(IN)  :: PPZZW3    ! 
-REAL                            :: PSINGL_FUNCSMAX ! 
-!
-!*       0.2 declarations of local variables
-!
-REAL                           :: ZHYPF
-!
-REAL                           :: PZVEC1
-INTEGER                        :: PIVEC1
-!
-PSINGL_FUNCSMAX = 0.
-PZVEC1    = MAX( 1.00001,MIN( FLOAT(NHYP)-0.00001,               &
-                              XHYPINTP1*LOG(PPZSMAX)+XHYPINTP2 ) )
-PIVEC1 = INT( PZVEC1 )
-PZVEC1 = PZVEC1 - FLOAT( PIVEC1 )
-DO JMOD = 1, NMOD_CCN
-   ZHYPF        = 0.          ! XHYPF32 is tabulated with ZSMAX in [NO UNITS]
-   ZHYPF        =   XHYPF32( PIVEC1+1,JMOD ) * PZVEC1              &
-                  - XHYPF32( PIVEC1  ,JMOD ) *(PZVEC1 - 1.0)
-                             ! sum of s**(ki+2) * F32 * Ci * ki * bêta(ki/2,3/2)
-   PSINGL_FUNCSMAX = PSINGL_FUNCSMAX + (PPZSMAX)**(XKHEN_MULTI(JMOD) + 2)   &
-                   * ZHYPF* XKHEN_MULTI(JMOD) * ZCHEN_MULTI(KINDEX,JMOD) &
-                   * GAMMA_X0D( XKHEN_MULTI(JMOD)/2.0)*GAMMA_X0D(3.0/2.0)        &
-                   / GAMMA_X0D((XKHEN_MULTI(JMOD)+3.0)/2.0)
-ENDDO
-! function l.h.s. minus r.h.s. of eq. (9) of CPB98 but for NMOD_CCN aerosol mode
-PSINGL_FUNCSMAX = PSINGL_FUNCSMAX - PPZZW3
-!
-END FUNCTION SINGL_FUNCSMAX
-!
-!-----------------------------------------------------------------------------
-!
-END SUBROUTINE LIMA_CCN_ACTIVATION
diff --git a/src/common/aux/modd_nsv.f90 b/src/common/aux/modd_nsv.f90
new file mode 100644
index 0000000000000000000000000000000000000000..ec95d8957071f201ebd60118648cf31134b8910a
--- /dev/null
+++ b/src/common/aux/modd_nsv.f90
@@ -0,0 +1,261 @@
+!MNH_LIC Copyright 2001-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_NSV
+!        ###############
+!
+!!****  *MODD_NSV* - declaration of scalar variables numbers
+!!
+!!    PURPOSE
+!!    -------
+!!       Arrays to store the per-model NSV_* values number (suffix _A denote an array)
+!!
+!!    AUTHOR
+!!    ------
+!!      D. Gazen   L.A.
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original  01/02/01
+!!       J.-P. Pinty   29/11/02 add C3R5, ELEC
+!!       V. Masson     01/2004  add scalar names
+!!       M. Leriche    12/04/07 add aqueous chemistry
+!!       M. Leriche    08/07/10 add ice phase chemistry
+!!       C.Lac         07/11    add conditional sampling
+!!       Pialat/Tulet  15/02/12 add ForeFire
+!!      Modification    01/2016  (JP Pinty) Add LIMA
+!!       V. Vionnet     07/17   add blowing snow
+!  P. Wautelet 10/03/2021: add CSVNAMES and CSVNAMES_A to store the name of all the scalar variables
+!  B. Vie         06/2021: add prognostic supersaturation for LIMA
+!
+!-------------------------------------------------------------------------------
+!
+!*       0.   DECLARATIONS
+!             ------------
+!
+USE MODD_PARAMETERS, ONLY : JPMODELMAX, &  ! Maximum allowed number of nested models
+                            JPSVMAX,    &  ! Maximum number of scalar variables
+                            JPSVNAMELGTMAX ! Maximum length of a scalar variable name
+!
+IMPLICIT NONE
+SAVE
+!
+REAL,DIMENSION(JPSVMAX) :: XSVMIN ! minimum value for SV variables
+!
+LOGICAL :: LINI_NSV = .FALSE. ! becomes True when routine INI_NSV is called
+!
+CHARACTER(LEN=JPSVNAMELGTMAX), DIMENSION(:,:), ALLOCATABLE, TARGET :: CSVNAMES_A !Names of all the scalar variables
+
+INTEGER,DIMENSION(JPMODELMAX)::NSV_A = 0 ! total number of scalar variables
+                                         ! NSV_A = NSV_USER_A+NSV_C2R2_A+NSV_CHEM_A+..
+INTEGER,DIMENSION(JPMODELMAX)::NSV_USER_A = 0  ! number of user scalar variables with 
+                                               ! indices in the range : 1...NSV_USER_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_C2R2_A = 0    ! number of liq scalar in C2R2
+                                                 !                  and in C3R5
+INTEGER,DIMENSION(JPMODELMAX)::NSV_C2R2BEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_C2R2END_A = 0 ! NSV_C2R2BEG_A...NSV_C2R2END_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_C1R3_A = 0    ! number of ice scalar in C3R5
+INTEGER,DIMENSION(JPMODELMAX)::NSV_C1R3BEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_C1R3END_A = 0 ! NSV_C1R3BEG_A...NSV_C1R3END_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_ELEC_A = 0    ! number of scalar in ELEC
+INTEGER,DIMENSION(JPMODELMAX)::NSV_ELECBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_ELECEND_A = 0 ! NSV_ELECBEG_A...NSV_ELECEND_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHEM_A = 0    ! number of chemical scalar
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHEMBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHEMEND_A = 0 ! NSV_CHEMBEG_A...NSV_CHEMEND_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHGS_A = 0    ! number of gaseous chemcial species
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHGSBEG_A = 0 ! with indices
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHGSEND_A = 0 ! NSV_CHGSBEG_
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHAC_A = 0    ! number of aqueous chemical species
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHACBEG_A = 0 ! with indices
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHACEND_A = 0 ! NSV_CHACBEG
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHIC_A = 0    ! number of ice phase chemical species
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHICBEG_A = 0 ! with indices
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CHICEND_A = 0 ! NSV_CHICBEG
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LG_A = 0    ! number of LaGrangian 
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LGBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LGEND_A = 0 ! NSV_LGBEG_A...NSV_LGEND_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LNOX_A = 0    ! number of lightning NOx
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LNOXBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LNOXEND_A = 0 ! NSV_LNOXBEG_A...NSV_LNOXEND_A                !                                 
+INTEGER,DIMENSION(JPMODELMAX)::NSV_DST_A = 0    ! number of dust scalar
+INTEGER,DIMENSION(JPMODELMAX)::NSV_DSTBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_DSTEND_A = 0 ! NSV_DSTBEG_A...NSV_DSTEND_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_SLT_A = 0    ! number of sea salt scalar
+INTEGER,DIMENSION(JPMODELMAX)::NSV_SLTBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_SLTEND_A = 0 ! NSV_SLTBEG_A...NSV_SLTEND_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_AER_A = 0    ! number of aerosol scalar
+INTEGER,DIMENSION(JPMODELMAX)::NSV_AERBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_AEREND_A = 0 ! NSV_AERBEG_A...NSV_AEREND_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_DSTDEP_A    = 0    ! number of aerosol scalar
+INTEGER,DIMENSION(JPMODELMAX)::NSV_DSTDEPBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_DSTDEPEND_A = 0 ! NSV_AERBEG_A...NSV_AEREND_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_AERDEP_A    = 0    ! number of aerosol scalar
+INTEGER,DIMENSION(JPMODELMAX)::NSV_AERDEPBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_AERDEPEND_A = 0 ! NSV_AERBEG_A...NSV_AEREND_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_SLTDEP_A    = 0    ! number of aerosol scalar
+INTEGER,DIMENSION(JPMODELMAX)::NSV_SLTDEPBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_SLTDEPEND_A = 0 ! NSV_SLTBEG_A...NSV_SLTEND_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_PP_A = 0    ! number of passive pol.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_PPBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_PPEND_A = 0 ! NSV_PPBEG_A...NSV_PPEND_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CS_A = 0    ! number of condit.samplings
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CSBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_CSEND_A = 0 ! NSV_CSBEG_A...NSV_CSEND_A
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_A = 0     ! number of scalar in LIMA
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_BEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_END_A = 0 ! NSV_LIMA_BEG_A...NSV_LIMA_END_A
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_NC_A = 0       ! First Nc variable
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_NR_A = 0       ! First Nr variable
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_CCN_FREE_A = 0 ! First Free CCN conc.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_CCN_ACTI_A = 0 ! First Acti. CNN conc.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_SCAVMASS_A = 0 ! Scavenged mass variable
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_NI_A = 0       ! First Ni var.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_NS_A = 0       ! First Ns var.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_NG_A = 0       ! First Ng var.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_NH_A = 0       ! First Nh var.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_IFN_FREE_A = 0 ! First Free IFN conc.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_IFN_NUCL_A = 0 ! First Nucl. IFN conc.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_IMM_NUCL_A = 0 ! First Nucl. IMM conc.
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_HOM_HAZE_A = 0 ! Hom. freezing of CCN
+INTEGER,DIMENSION(JPMODELMAX)::NSV_LIMA_SPRO_A = 0     ! Supersaturation
+!
+#ifdef MNH_FOREFIRE
+INTEGER,DIMENSION(JPMODELMAX)::NSV_FF_A = 0    ! number of ForeFire scalar variables
+INTEGER,DIMENSION(JPMODELMAX)::NSV_FFBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_FFEND_A = 0 ! NSV_FFBEG_A...NSV_FFEND_A
+#endif
+!
+INTEGER,DIMENSION(JPMODELMAX)::NSV_SNW_A = 0    ! number of blowing snow scalar
+INTEGER,DIMENSION(JPMODELMAX)::NSV_SNWBEG_A = 0 ! with indices in the range :
+INTEGER,DIMENSION(JPMODELMAX)::NSV_SNWEND_A = 0 ! NSV_SNWBEG_A...NSV_SNWEND_A
+!
+!###############################################################################
+!
+! variables updated for the current model
+!
+CHARACTER(LEN=JPSVNAMELGTMAX), DIMENSION(:), POINTER :: CSVNAMES !Names of all the scalar variables
+CHARACTER(LEN=6), DIMENSION(:), ALLOCATABLE :: CSV ! name of the scalar variables
+INTEGER :: NSV         = 0 ! total number of user scalar variables
+!
+INTEGER :: NSV_USER    = 0 ! number of user scalar variables with indices
+                           ! in the range : 1...NSV_USER
+INTEGER :: NSV_C2R2    = 0 ! number of liq scalar used in C2R2 and in C3R5
+INTEGER :: NSV_C2R2BEG = 0 ! with indices in the range :
+INTEGER :: NSV_C2R2END = 0 ! NSV_C2R2BEG...NSV_C2R2END
+!
+INTEGER :: NSV_C1R3    = 0 ! number of ice scalar used in C3R5
+INTEGER :: NSV_C1R3BEG = 0 ! with indices in the range :
+INTEGER :: NSV_C1R3END = 0 ! NSV_C1R3BEG...NSV_C1R3END
+!
+INTEGER :: NSV_ELEC    = 0 ! number of scalar variables used in ELEC
+INTEGER :: NSV_ELECBEG = 0 ! with indices in the range :
+INTEGER :: NSV_ELECEND = 0 ! NSV_ELECBEG...NSV_ELECEND
+!
+INTEGER :: NSV_CHEM    = 0 ! number of chemical scalar variables
+INTEGER :: NSV_CHEMBEG = 0 ! with indices in the range :
+INTEGER :: NSV_CHEMEND = 0 ! NSV_CHEMBEG...NSV_CHEMEND
+!
+INTEGER :: NSV_CHGS    = 0 ! number of gas-phase chemicals 
+INTEGER :: NSV_CHGSBEG = 0 ! with indices in the range :
+INTEGER :: NSV_CHGSEND = 0 ! NSV_CHGSBEG...NSV_CHGSEND         
+!
+INTEGER :: NSV_CHAC    = 0 ! number of aqueous-phase chemicals
+INTEGER :: NSV_CHACBEG = 0 ! with indices in the range :
+INTEGER :: NSV_CHACEND = 0 ! NSV_CHACBEG...NSV_CHACEND
+!
+INTEGER :: NSV_CHIC    = 0 ! number of ice-phase chemicals
+INTEGER :: NSV_CHICBEG = 0 ! with indices in the range :
+INTEGER :: NSV_CHICEND = 0 ! NSV_CHICBEG...NSV_CHICEND
+!
+INTEGER :: NSV_LG    = 0 ! number of lagrangian
+INTEGER :: NSV_LGBEG = 0 ! with indices in the range :
+INTEGER :: NSV_LGEND = 0 ! NSV_LGBEG...NSV_LGEND
+!
+INTEGER :: NSV_LNOX    = 0 ! number of lightning NOx variables
+INTEGER :: NSV_LNOXBEG = 0 ! with indices in the range :
+INTEGER :: NSV_LNOXEND = 0 ! NSV_LNOXBEG...NSV_LNOXEND
+!
+INTEGER :: NSV_DST     = 0 ! number of dust scalar variables
+INTEGER :: NSV_DSTBEG  = 0 ! with indices in the range :
+INTEGER :: NSV_DSTEND  = 0 ! NSV_DSTBEG...NSV_DSTEND
+
+INTEGER :: NSV_SLT     = 0 ! number of sea salt scalar variables
+INTEGER :: NSV_SLTBEG  = 0 ! with indices in the range :
+INTEGER :: NSV_SLTEND  = 0 ! NSV_SLTBEG...NSV_SLTEND
+
+INTEGER :: NSV_AER     = 0 ! number of aerosol scalar variables
+INTEGER :: NSV_AERBEG  = 0 ! with indices in the range :
+INTEGER :: NSV_AEREND  = 0 ! NSV_AERBEG...NSV_AEREND
+
+INTEGER :: NSV_DSTDEP  = 0 ! number of aerosol scalar variables
+INTEGER :: NSV_DSTDEPBEG  = 0 ! with indices in the range :
+INTEGER :: NSV_DSTDEPEND  = 0 ! NSV_AERBEG...NSV_AEREND
+!
+INTEGER :: NSV_AERDEP  = 0 ! number of aerosol scalar variables
+INTEGER :: NSV_AERDEPBEG  = 0 ! with indices in the range :
+INTEGER :: NSV_AERDEPEND  = 0 ! NSV_AERBEG...NSV_AEREND
+
+INTEGER :: NSV_SLTDEP  = 0 ! number of aerosol scalar variables
+INTEGER :: NSV_SLTDEPBEG  = 0 ! with indices in the range :
+INTEGER :: NSV_SLTDEPEND  = 0 ! NSV_AERBEG...NSV_AEREND
+!
+INTEGER :: NSV_PP    = 0 ! number of passive pollutants       
+INTEGER :: NSV_PPBEG = 0 ! with indices in the range :
+INTEGER :: NSV_PPEND = 0 ! NSV_PPBEG...NSV_PPEND
+!
+INTEGER :: NSV_CS    = 0 ! number of condit.samplings         
+INTEGER :: NSV_CSBEG = 0 ! with indices in the range :
+INTEGER :: NSV_CSEND = 0 ! NSV_CSBEG...NSV_CSEND
+!
+INTEGER :: NSV_LIMA     ! number of scalar in LIMA
+INTEGER :: NSV_LIMA_BEG ! with indices in the range :
+INTEGER :: NSV_LIMA_END ! NSV_LIMA_BEG_A...NSV_LIMA_END_A
+INTEGER :: NSV_LIMA_NC       !
+INTEGER :: NSV_LIMA_NR       !
+INTEGER :: NSV_LIMA_CCN_FREE !
+INTEGER :: NSV_LIMA_CCN_ACTI !
+INTEGER :: NSV_LIMA_SCAVMASS !
+INTEGER :: NSV_LIMA_NI       !
+INTEGER :: NSV_LIMA_NS       !
+INTEGER :: NSV_LIMA_NG       !
+INTEGER :: NSV_LIMA_NH       !
+INTEGER :: NSV_LIMA_IFN_FREE !
+INTEGER :: NSV_LIMA_IFN_NUCL !
+INTEGER :: NSV_LIMA_IMM_NUCL !
+INTEGER :: NSV_LIMA_HOM_HAZE !
+INTEGER :: NSV_LIMA_SPRO     !
+!
+#ifdef MNH_FOREFIRE
+INTEGER :: NSV_FF    = 0 ! number of ForeFire scalar variables
+INTEGER :: NSV_FFBEG = 0 ! with indices in the range :
+INTEGER :: NSV_FFEND = 0 ! NSV_FFBEG...NSV_FFEND
+#endif
+!
+INTEGER :: NSV_SNW     = 0 ! number of blowing snow scalar variables
+INTEGER :: NSV_SNWBEG  = 0 ! with indices in the range :
+INTEGER :: NSV_SNWEND  = 0 ! NSV_SNWBEG...NSV_SNWEND
+!
+INTEGER :: NSV_CO2     = 0  ! index for CO2
+!
+END MODULE MODD_NSV
diff --git a/src/common/micro/ini_lima.F90 b/src/common/micro/ini_lima.F90
index 54c784e641111c8f83b00b5063f2006b38eb8569..6f4bdcd0015f42e8c770bac6981c0542eb09ee4a 100644
--- a/src/common/micro/ini_lima.F90
+++ b/src/common/micro/ini_lima.F90
@@ -55,7 +55,7 @@ USE MODD_CST
 USE MODD_REF
 USE MODD_PARAM_LIMA
 USE MODD_PARAMETERS
-USE MODD_LUNIT, ONLY : TLUOUT0
+!USE MODD_LUNIT, ONLY : TLUOUT0
 !
 IMPLICIT NONE
 !
@@ -88,7 +88,7 @@ INTEGER  :: IRESP   ! Return code of FM-routines
 !
 !
 ! Init output listing
-ILUOUT0 = TLUOUT0%NLU
+!ILUOUT0 = TLUOUT0%NLU
 !
 !
 ZVTRMAX(2) = 0.3         ! Maximum cloud droplet fall speed
diff --git a/src/common/micro/ini_lima_cold_mixed.F90 b/src/common/micro/ini_lima_cold_mixed.F90
index 2e3d956a46102eb75e5707369aed815f7f9bb798..39a7246f5502e4e805e0a3d7b810e2a49ab2b1dd 100644
--- a/src/common/micro/ini_lima_cold_mixed.F90
+++ b/src/common/micro/ini_lima_cold_mixed.F90
@@ -51,7 +51,7 @@ END MODULE MODI_INI_LIMA_COLD_MIXED
 !              ------------
 !
 USE MODD_CST
-USE MODD_LUNIT, ONLY: TLUOUT0
+!USE MODD_LUNIT, ONLY: TLUOUT0
 USE MODD_PARAMETERS
 USE MODD_PARAM_LIMA
 USE MODD_PARAM_LIMA_WARM
@@ -109,9 +109,9 @@ REAL :: ZESR, ZESS            ! Mean efficiency of rain-aggregate collection, ag
 REAL :: ZFDINFTY              ! Factor used to define the "infinite" diameter
 !
 !
-INTEGER  :: ILUOUT0 ! Logical unit number for output-listing
-LOGICAL  :: GFLAG   ! Logical flag for printing the constatnts on the output
-                    ! listing
+!INTEGER  :: ILUOUT0 ! Logical unit number for output-listing
+!LOGICAL  :: GFLAG   ! Logical flag for printing the constatnts on the output
+!                    ! listing
 REAL     :: ZCONC_MAX ! Maximal concentration for snow
 REAL     :: ZFACT_NUCL! Amplification factor for the minimal ice concentration
 !  
@@ -150,7 +150,7 @@ REAL :: ZRHOIW ! ice density
 !-------------------------------------------------------------------------------
 !
 !
-ILUOUT0 = TLUOUT0%NLU
+!ILUOUT0 = TLUOUT0%NLU
 !
 !
 !*       1.     CHARACTERISTICS OF THE SPECIES
@@ -334,14 +334,14 @@ ELSE
    XLBH   = XAH * MOMG(XALPHAH,XNUH,XBH)
 END IF
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='("      Shape Parameters")')
-  WRITE(UNIT=ILUOUT0,FMT='(" XLBEXI =",E13.6," XLBI =",E13.6)') XLBEXI,XLBI
-  WRITE(UNIT=ILUOUT0,FMT='(" XLBEXS =",E13.6," XLBS =",E13.6)') XLBEXS,XLBS
-  WRITE(UNIT=ILUOUT0,FMT='(" XLBEXG =",E13.6," XLBG =",E13.6)') XLBEXG,XLBG
-  WRITE(UNIT=ILUOUT0,FMT='(" XLBEXH =",E13.6," XLBH =",E13.6)') XLBEXH,XLBH
-END IF
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("      Shape Parameters")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" XLBEXI =",E13.6," XLBI =",E13.6)') XLBEXI,XLBI
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" XLBEXS =",E13.6," XLBS =",E13.6)') XLBEXS,XLBS
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" XLBEXG =",E13.6," XLBG =",E13.6)') XLBEXG,XLBG
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" XLBEXH =",E13.6," XLBH =",E13.6)') XLBEXH,XLBH
+!!$END IF
 !
 XLBDAS_MAX = 1.E7 ! (eq to r~1E-7kg/kg) (for non MP PSD, use conversion XTRANS_MP_GAMMAS)
 XLBDAS_MIN = 1.   ! (eq to r~0.18kg/kg) (for non MP PSD, use conversion XTRANS_MP_GAMMAS)
@@ -593,14 +593,14 @@ XEX_CON    = -2.8
 !
 XMNU0 = 6.88E-13
 !
-IF (LMEYERS) THEN
-  WRITE(UNIT=ILUOUT0,FMT='("      Heterogeneous nucleation")')
-  WRITE(UNIT=ILUOUT0,FMT='(" XNUC_DEP=",E13.6," XEXSI=",E13.6," XEX=",E13.6)') &
-                                                      XNUC_DEP,XEXSI_DEP,XEX_DEP
-  WRITE(UNIT=ILUOUT0,FMT='(" XNUC_CON=",E13.6," XEXTT=",E13.6," XEX=",E13.6)') &
-                                                      XNUC_CON,XEXTT_CON,XEX_CON
-  WRITE(UNIT=ILUOUT0,FMT='(" mass of embryo XMNU0=",E13.6)') XMNU0
-END IF
+!!$IF (LMEYERS) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("      Heterogeneous nucleation")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" XNUC_DEP=",E13.6," XEXSI=",E13.6," XEX=",E13.6)') &
+!!$                                                      XNUC_DEP,XEXSI_DEP,XEX_DEP
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" XNUC_CON=",E13.6," XEXTT=",E13.6," XEX=",E13.6)') &
+!!$                                                      XNUC_CON,XEXTT_CON,XEX_CON
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" mass of embryo XMNU0=",E13.6)') XMNU0
+!!$END IF
 !
 !                 ***************** 
 !*          4.3   NUCLEATION for NMOM_I=1
@@ -655,16 +655,16 @@ ELSE
                   '/= 3. No algorithm developed for this case' )
 END IF
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='("      Homogeneous nucleation")')
-  WRITE(UNIT=ILUOUT0,FMT='(" XTEXP1_HONC=",E13.6)') XTEXP1_HONC
-  WRITE(UNIT=ILUOUT0,FMT='(" XTEXP2_HONC=",E13.6)') XTEXP2_HONC
-  WRITE(UNIT=ILUOUT0,FMT='(" XTEXP3_HONC=",E13.6)') XTEXP3_HONC
-  WRITE(UNIT=ILUOUT0,FMT='(" XTEXP4_HONC=",E13.6)') XTEXP4_HONC
-  WRITE(UNIT=ILUOUT0,FMT='(" XTEXP5_HONC=",E13.6)') XTEXP5_HONC
-  WRITE(UNIT=ILUOUT0,FMT='("XC_HONC=",E13.6," XR_HONC=",E13.6)') XC_HONC,XR_HONC
-END IF
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("      Homogeneous nucleation")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" XTEXP1_HONC=",E13.6)') XTEXP1_HONC
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" XTEXP2_HONC=",E13.6)') XTEXP2_HONC
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" XTEXP3_HONC=",E13.6)') XTEXP3_HONC
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" XTEXP4_HONC=",E13.6)') XTEXP4_HONC
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" XTEXP5_HONC=",E13.6)') XTEXP5_HONC
+!!$  WRITE(UNIT=ILUOUT0,FMT='("XC_HONC=",E13.6," XR_HONC=",E13.6)') XC_HONC,XR_HONC
+!!$END IF
 !
 !
 !*       5.2    Constants for vapor deposition on ice
@@ -756,11 +756,11 @@ XCOLEXII = 0.025   !  Temperature factor of the I+I collection efficiency
 !
 XTEXAUTI = 0.025   !  Temperature factor of the I+I collection efficiency
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='("      pristine ice autoconversion")')
-  WRITE(UNIT=ILUOUT0,FMT='(" Temp. factor    XTEXAUTI=",E13.6)') XTEXAUTI
-END IF
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("      pristine ice autoconversion")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Temp. factor    XTEXAUTI=",E13.6)') XTEXAUTI
+!!$END IF
 !
 XAUTO3 = 6.25E18*(ZGAMI(2))**(1./3.)*SQRT(ZGAMI(4))
 XAUTO4 = 0.5E6*(ZGAMI(4))**(1./6.)
@@ -780,11 +780,11 @@ XAGGS_CLARGE2 = XKER_ZRNIC_A2*ZGAMS(2)
 XAGGS_RLARGE1 = XKER_ZRNIC_A2*ZGAMI(6)*XAI
 XAGGS_RLARGE2 = XKER_ZRNIC_A2*ZGAMI(7)*ZGAMS(2)*XAI
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='("      snow aggregation")')
-  WRITE(UNIT=ILUOUT0,FMT='(" Temp. factor     XCOLEXIS=",E13.6)') XCOLEXIS
-END IF
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("      snow aggregation")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Temp. factor     XCOLEXIS=",E13.6)') XCOLEXIS
+!!$END IF
 !  
 !-------------------------------------------------------------------------------
 !
@@ -809,13 +809,13 @@ XEXSRIMCG= -XBS
 XSRIMCG2 = XAG*MOMG(XALPHAS,XNUS,XBG)
 XSRIMCG3 = 0.1
 XEXSRIMCG2=XBG
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='("      riming of the aggregates")')
-  WRITE(UNIT=ILUOUT0,FMT='(" D_cs^lim (Farley et al.) XDCSLIM=",E13.6)') XDCSLIM
-  WRITE(UNIT=ILUOUT0,FMT='(" Coll. efficiency          XCOLCS=",E13.6)') XCOLCS
-END IF
-!
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("      riming of the aggregates")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" D_cs^lim (Farley et al.) XDCSLIM=",E13.6)') XDCSLIM
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Coll. efficiency          XCOLCS=",E13.6)') XCOLCS
+!!$END IF
+!!$!
 NGAMINC = 80
 XGAMINC_BOUND_MIN = (1000.*XTRANS_MP_GAMMAS*XDCSLIM)**XALPHAS !1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha
 XGAMINC_BOUND_MAX = (50000.*XTRANS_MP_GAMMAS*XDCSLIM)**XALPHAS !1.0E7 ! Maximal value of (Lbda * D_cs^lim)**alpha
@@ -929,33 +929,33 @@ CALL NSCOLRG ( IND, XALPHAS, XNUS, XALPHAR, XNUR,                          &
                ZESR, XCS, XDS, XFVELOS, XCR, XDR,                          & 
                XACCLBDAS_MAX, XACCLBDAR_MAX, XACCLBDAS_MIN, XACCLBDAR_MIN, & 
                ZFDINFTY, XKER_N_SACCRG,XAG, XBS, XAS                       )
-WRITE(UNIT=ILUOUT0,FMT='("!")')
-WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_RACCSS) ) THEN")')          
-DO J1 = 1 , NACCLBDAS                                                    
-  DO J2 = 1 , NACCLBDAR                                                  
-  WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_RACCSS(",I3,",",I3,") = ",E13.6)') &
-                    J1,J2,XKER_N_RACCSS(J1,J2)                          
-  END DO                                                                
-END DO                                                                   
-WRITE(UNIT=ILUOUT0,FMT='("!")')                                           
-WRITE(UNIT=ILUOUT0,FMT='("!")')
-WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_RACCS) ) THEN")')          
-DO J1 = 1 , NACCLBDAS                                                    
-  DO J2 = 1 , NACCLBDAR                                                  
-  WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_RACCS(",I3,",",I3,") = ",E13.6)') &
-                    J1,J2,XKER_N_RACCS(J1,J2)                          
-  END DO                                                                
-END DO                                                                   
-WRITE(UNIT=ILUOUT0,FMT='("!")') 
-WRITE(UNIT=ILUOUT0,FMT='("!")')
-WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_SACCRG) ) THEN")')          
-DO J1 = 1 , NACCLBDAR                                                    
-  DO J2 = 1 , NACCLBDAS                                                  
-  WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_SACCRG(",I3,",",I3,") = ",E13.6)') &
-                    J1,J2,XKER_N_SACCRG(J1,J2)                          
-  END DO                                                                
-END DO                                                                   
-WRITE(UNIT=ILUOUT0,FMT='("!")') 
+!!$WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_RACCSS) ) THEN")')          
+!!$DO J1 = 1 , NACCLBDAS                                                    
+!!$  DO J2 = 1 , NACCLBDAR                                                  
+!!$  WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_RACCSS(",I3,",",I3,") = ",E13.6)') &
+!!$                    J1,J2,XKER_N_RACCSS(J1,J2)                          
+!!$  END DO                                                                
+!!$END DO                                                                   
+!!$WRITE(UNIT=ILUOUT0,FMT='("!")')                                           
+!!$WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_RACCS) ) THEN")')          
+!!$DO J1 = 1 , NACCLBDAS                                                    
+!!$  DO J2 = 1 , NACCLBDAR                                                  
+!!$  WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_RACCS(",I3,",",I3,") = ",E13.6)') &
+!!$                    J1,J2,XKER_N_RACCS(J1,J2)                          
+!!$  END DO                                                                
+!!$END DO                                                                   
+!!$WRITE(UNIT=ILUOUT0,FMT='("!")') 
+!!$WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_SACCRG) ) THEN")')          
+!!$DO J1 = 1 , NACCLBDAR                                                    
+!!$  DO J2 = 1 , NACCLBDAS                                                  
+!!$  WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_SACCRG(",I3,",",I3,") = ",E13.6)') &
+!!$                    J1,J2,XKER_N_SACCRG(J1,J2)                          
+!!$  END DO                                                                
+!!$END DO                                                                   
+!!$WRITE(UNIT=ILUOUT0,FMT='("!")') 
 
 !
 CALL LIMA_READ_XKER_RACCS (KACCLBDAS,KACCLBDAR,KND,                                        &
@@ -982,71 +982,71 @@ IF( (KACCLBDAS/=NACCLBDAS) .OR. (KACCLBDAR/=NACCLBDAR) .OR. (KND/=IND) .OR. &
                  ZESR, XBS, XCS, XDS, XFVELOS, XCR, XDR,                     &
                  XACCLBDAS_MAX, XACCLBDAR_MAX, XACCLBDAS_MIN, XACCLBDAR_MIN, &
                  ZFDINFTY, XKER_SACCRG,XAG, XBS, XAS                         )
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF RACSS KERNELS ****")')
-  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF RACS  KERNELS ****")')
-  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF SACRG KERNELS ****")')
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
-  WRITE(UNIT=ILUOUT0,FMT='("KACCLBDAS=",I3)') NACCLBDAS
-  WRITE(UNIT=ILUOUT0,FMT='("KACCLBDAR=",I3)') NACCLBDAR
-  WRITE(UNIT=ILUOUT0,FMT='("PALPHAS=",E13.6)') XALPHAS
-  WRITE(UNIT=ILUOUT0,FMT='("PNUS=",E13.6)') XNUS
-  WRITE(UNIT=ILUOUT0,FMT='("PALPHAR=",E13.6)') XALPHAR
-  WRITE(UNIT=ILUOUT0,FMT='("PNUR=",E13.6)') XNUR
-  WRITE(UNIT=ILUOUT0,FMT='("PESR=",E13.6)') ZESR
-  WRITE(UNIT=ILUOUT0,FMT='("PBS=",E13.6)') XBS
-  WRITE(UNIT=ILUOUT0,FMT='("PBR=",E13.6)') XBR
-  WRITE(UNIT=ILUOUT0,FMT='("PCS=",E13.6)') XCS
-  WRITE(UNIT=ILUOUT0,FMT='("PDS=",E13.6)') XDS
-  WRITE(UNIT=ILUOUT0,FMT='("PFVELOS=",E13.6)') XFVELOS
-  WRITE(UNIT=ILUOUT0,FMT='("PCR=",E13.6)') XCR
-  WRITE(UNIT=ILUOUT0,FMT='("PDR=",E13.6)') XDR
-  WRITE(UNIT=ILUOUT0,FMT='("PACCLBDAS_MAX=",E13.6)') &
-                                                    XACCLBDAS_MAX
-  WRITE(UNIT=ILUOUT0,FMT='("PACCLBDAR_MAX=",E13.6)') &
-                                                    XACCLBDAR_MAX
-  WRITE(UNIT=ILUOUT0,FMT='("PACCLBDAS_MIN=",E13.6)') &
-                                                    XACCLBDAS_MIN
-  WRITE(UNIT=ILUOUT0,FMT='("PACCLBDAR_MIN=",E13.6)') &
-                                                    XACCLBDAR_MIN
-  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_RACCSS) ) THEN")')
-  DO J1 = 1 , NACCLBDAS
-    DO J2 = 1 , NACCLBDAR
-    WRITE(UNIT=ILUOUT0,FMT='("  PKER_RACCSS(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_RACCSS(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_RACCS ) ) THEN")')
-  DO J1 = 1 , NACCLBDAS
-    DO J2 = 1 , NACCLBDAR
-    WRITE(UNIT=ILUOUT0,FMT='("  PKER_RACCS (",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_RACCS (J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_SACCRG) ) THEN")')
-  DO J1 = 1 , NACCLBDAR
-    DO J2 = 1 , NACCLBDAS
-    WRITE(UNIT=ILUOUT0,FMT='("  PKER_SACCRG(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_SACCRG(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF RACSS KERNELS ****")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF RACS  KERNELS ****")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF SACRG KERNELS ****")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KACCLBDAS=",I3)') NACCLBDAS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KACCLBDAR=",I3)') NACCLBDAR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PALPHAS=",E13.6)') XALPHAS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PNUS=",E13.6)') XNUS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PALPHAR=",E13.6)') XALPHAR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PNUR=",E13.6)') XNUR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PESR=",E13.6)') ZESR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PBS=",E13.6)') XBS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PBR=",E13.6)') XBR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PCS=",E13.6)') XCS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDS=",E13.6)') XDS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PFVELOS=",E13.6)') XFVELOS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PCR=",E13.6)') XCR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDR=",E13.6)') XDR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PACCLBDAS_MAX=",E13.6)') &
+!!$                                                    XACCLBDAS_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PACCLBDAR_MAX=",E13.6)') &
+!!$                                                    XACCLBDAR_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PACCLBDAS_MIN=",E13.6)') &
+!!$                                                    XACCLBDAS_MIN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PACCLBDAR_MIN=",E13.6)') &
+!!$                                                    XACCLBDAR_MIN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_RACCSS) ) THEN")')
+!!$  DO J1 = 1 , NACCLBDAS
+!!$    DO J2 = 1 , NACCLBDAR
+!!$    WRITE(UNIT=ILUOUT0,FMT='("  PKER_RACCSS(",I3,",",I3,") = ",E13.6)') &
+!!$                        J1,J2,XKER_RACCSS(J1,J2)
+!!$    END DO
+!!$  END DO
+!!$  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_RACCS ) ) THEN")')
+!!$  DO J1 = 1 , NACCLBDAS
+!!$    DO J2 = 1 , NACCLBDAR
+!!$    WRITE(UNIT=ILUOUT0,FMT='("  PKER_RACCS (",I3,",",I3,") = ",E13.6)') &
+!!$                        J1,J2,XKER_RACCS (J1,J2)
+!!$    END DO
+!!$  END DO
+!!$  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_SACCRG) ) THEN")')
+!!$  DO J1 = 1 , NACCLBDAR
+!!$    DO J2 = 1 , NACCLBDAS
+!!$    WRITE(UNIT=ILUOUT0,FMT='("  PKER_SACCRG(",I3,",",I3,") = ",E13.6)') &
+!!$                        J1,J2,XKER_SACCRG(J1,J2)
+!!$    END DO
+!!$  END DO
+!!$  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
   ELSE
   CALL LIMA_READ_XKER_RACCS (KACCLBDAS,KACCLBDAR,KND,                                        &
                              PALPHAS,PNUS,PALPHAR,PNUR,PESR,PBS,PBR,PCS,PDS,PFVELOS,PCR,PDR, &
                              PACCLBDAS_MAX,PACCLBDAR_MAX,PACCLBDAS_MIN,PACCLBDAR_MIN,        &
                              PFDINFTY,XKER_RACCSS,XKER_RACCS,XKER_SACCRG                     )
-  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_RACCSS")')
-  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_RACCS ")')
-  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_SACCRG")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_RACCSS")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_RACCS ")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_SACCRG")')
 END IF
 !
 !*       7.2N  Computations of the tabulated normalized kernels Snow Self Collection !! 
@@ -1083,31 +1083,31 @@ XSCINTP2S = 1.0 - LOG( XSCLBDAS_MIN ) / ZRATE
                XSCLBDAS_MAX, XSCLBDAS_MAX, XSCLBDAS_MIN, XSCLBDAS_MIN, & 
                ZFDINFTY, XKER_N_SSCS                                      ) 
 !
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF SSCS  KERNELS ***")')
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
-  WRITE(UNIT=ILUOUT0,FMT='("KSCLBDAS=",I3)') NSCLBDAS
-  WRITE(UNIT=ILUOUT0,FMT='("PALPHAS=",E13.6)') XALPHAS
-  WRITE(UNIT=ILUOUT0,FMT='("PNUS=",E13.6)') XNUS
-  WRITE(UNIT=ILUOUT0,FMT='("PESS=",E13.6)') ZESS
-  WRITE(UNIT=ILUOUT0,FMT='("PBS=",E13.6)') XBS
-  WRITE(UNIT=ILUOUT0,FMT='("PCS=",E13.6)') XCS
-  WRITE(UNIT=ILUOUT0,FMT='("PDS=",E13.6)') XDS
-  WRITE(UNIT=ILUOUT0,FMT='("PSCLBDAS_MAX=",E13.6)') &
-                                                  XSCLBDAS_MAX
-  WRITE(UNIT=ILUOUT0,FMT='("PSCLBDAS_MIN=",E13.6)') &
-                                                  XSCLBDAS_MIN
-  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_SSCS ) ) THEN")')           
-  DO J1 = 1 , NSCLBDAS                                                     
-    WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_SSCS (",I3,",",I3,") = ",E13.6)') & 
-                      J1,J1,XKER_N_SSCS (J1,J1)                          
-  END DO                                                                    
-  WRITE(UNIT=ILUOUT0,FMT='("!")')  
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF SSCS  KERNELS ***")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KSCLBDAS=",I3)') NSCLBDAS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PALPHAS=",E13.6)') XALPHAS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PNUS=",E13.6)') XNUS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PESS=",E13.6)') ZESS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PBS=",E13.6)') XBS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PCS=",E13.6)') XCS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDS=",E13.6)') XDS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PSCLBDAS_MAX=",E13.6)') &
+!!$                                                  XSCLBDAS_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PSCLBDAS_MIN=",E13.6)') &
+!!$                                                  XSCLBDAS_MIN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_SSCS ) ) THEN")')           
+!!$  DO J1 = 1 , NSCLBDAS                                                     
+!!$    WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_SSCS (",I3,",",I3,") = ",E13.6)') & 
+!!$                      J1,J1,XKER_N_SSCS (J1,J1)                          
+!!$  END DO                                                                    
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')  
 !
 !*       7.2N2    Constants for the 'spontaneous' break-up
 !
@@ -1123,11 +1123,11 @@ XSCINTP2S = 1.0 - LOG( XSCLBDAS_MIN ) / ZRATE
 !
 XFSCVMG = 2.0
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='("      conversion-melting of the aggregates")')
-  WRITE(UNIT=ILUOUT0,FMT='(" Conv. factor XFSCVMG=",E13.6)') XFSCVMG
-END IF
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("      conversion-melting of the aggregates")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Conv. factor XFSCVMG=",E13.6)') XFSCVMG
+!!$END IF
 !
 !
 !*       7.4 Constants for Ice-Ice collision process (CIBU)
@@ -1136,12 +1136,12 @@ XDCSLIM_CIBU_MIN = 2.0E-4 ! D_cs lim min
 XDCSLIM_CIBU_MAX = 1.0E-3 ! D_cs lim max
 XDCGLIM_CIBU_MIN = 2.0E-3 ! D_cg lim min
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='(" Ice-ice collision process")')
-  WRITE(UNIT=ILUOUT0,FMT='(" D_cs^lim min-max =",E13.6)') XDCSLIM_CIBU_MIN,XDCSLIM_CIBU_MAX
-  WRITE(UNIT=ILUOUT0,FMT='(" D_cg^lim min     =",E13.6)') XDCGLIM_CIBU_MIN
-END IF
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Ice-ice collision process")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" D_cs^lim min-max =",E13.6)') XDCSLIM_CIBU_MIN,XDCSLIM_CIBU_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" D_cg^lim min     =",E13.6)') XDCGLIM_CIBU_MIN
+!!$END IF
 !
 NGAMINC = 80
 !
@@ -1196,11 +1196,11 @@ XMOMGS_CIBU_3 = MOMG(XALPHAS,XNUS,XBS+XDS)
 !
 XDCRLIM_RDSF_MIN = 0.1E-3 ! D_cr lim min
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='(" Ice-rain collision process")')
-  WRITE(UNIT=ILUOUT0,FMT='(" D_cr^lim min     =",E13.6)') XDCRLIM_RDSF_MIN
-END IF
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Ice-rain collision process")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" D_cr^lim min     =",E13.6)') XDCRLIM_RDSF_MIN
+!!$END IF
 !
 NGAMINC = 80
 !
@@ -1246,11 +1246,11 @@ XEXICFRR  = -XDR-2.0
 XICFRR    = (XPI/4.0)*XCOLIR*XCR*(ZRHO00**XCEXVT)                  &
                                                      *MOMG(XALPHAR,XNUR,XDR+2.0)
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='("      rain contact freezing")')
-  WRITE(UNIT=ILUOUT0,FMT='(" Coll. efficiency          XCOLIR=",E13.6)') XCOLIR
-END IF
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("      rain contact freezing")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Coll. efficiency          XCOLIR=",E13.6)') XCOLIR
+!!$END IF
 !
 !
 !*       8.2    Constants for the dry growth of the graupeln
@@ -1270,16 +1270,16 @@ XCOLIG    = 0.25 ! Collection efficiency of I+G
 XCOLEXIG  = 0.05 ! Temperature factor of the I+G collection efficiency
 XCOLIG   = 0.01 ! Collection efficiency of I+G
 XCOLEXIG = 0.1  ! Temperature factor of the I+G collection efficiency
-WRITE (ILUOUT0, FMT=*) ' NEW Constants for the cloud ice collection by the graupeln'
-WRITE (ILUOUT0, FMT=*) ' XCOLIG, XCOLEXIG  = ',XCOLIG,XCOLEXIG
+!!$WRITE (ILUOUT0, FMT=*) ' NEW Constants for the cloud ice collection by the graupeln'
+!!$WRITE (ILUOUT0, FMT=*) ' XCOLIG, XCOLEXIG  = ',XCOLIG,XCOLEXIG
 XFIDRYG = (XPI/4.0)*XCOLIG*XCG*(ZRHO00**XCEXVT)*MOMG(XALPHAG,XNUG,XDG+2.0)
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='("      cloud ice collection by the graupeln")')
-  WRITE(UNIT=ILUOUT0,FMT='(" Coll. efficiency XCOLIG=",E13.6)') XCOLIG
-  WRITE(UNIT=ILUOUT0,FMT='(" Temp. factor     XCOLEXIG=",E13.6)') XCOLEXIG
-END IF
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("      cloud ice collection by the graupeln")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Coll. efficiency XCOLIG=",E13.6)') XCOLIG
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Temp. factor     XCOLEXIG=",E13.6)') XCOLEXIG
+!!$END IF
 !
 !*       8.2.3  Constants for the aggregate collection by the graupeln
 !
@@ -1287,8 +1287,8 @@ XCOLSG    = 0.25 ! Collection efficiency of S+G
 XCOLEXSG  = 0.05 ! Temperature factor of the S+G collection efficiency
 XCOLSG   = 0.01 ! Collection efficiency of S+G
 XCOLEXSG = 0.1  ! Temperature factor of the S+G collection efficiency
-WRITE (ILUOUT0, FMT=*) ' NEW Constants for the aggregate collection by the graupeln'
-WRITE (ILUOUT0, FMT=*) ' XCOLSG, XCOLEXSG  = ',XCOLSG,XCOLEXSG
+!!$WRITE (ILUOUT0, FMT=*) ' NEW Constants for the aggregate collection by the graupeln'
+!!$WRITE (ILUOUT0, FMT=*) ' XCOLSG, XCOLEXSG  = ',XCOLSG,XCOLEXSG
 XFSDRYG = XNS*(XPI/4.0)*XCOLSG*XAS*(ZRHO00**XCEXVT)
 XFNSDRYG= (XPI/4.0)*XCOLSG*(ZRHO00**XCEXVT)
 !
@@ -1299,12 +1299,12 @@ XLBSDRYG1   =    MOMG(XALPHAG,XNUG,2.)*MOMG(XALPHAS,XNUS,XBS)
 XLBSDRYG2   = 2.*MOMG(XALPHAG,XNUG,1.)*MOMG(XALPHAS,XNUS,XBS+1.)
 XLBSDRYG3   =                          MOMG(XALPHAS,XNUS,XBS+2.)
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='("      aggregate collection by the graupeln")')
-  WRITE(UNIT=ILUOUT0,FMT='(" Coll. efficiency XCOLSG=",E13.6)') XCOLSG
-  WRITE(UNIT=ILUOUT0,FMT='(" Temp. factor     XCOLEXSG=",E13.6)') XCOLEXSG
-END IF
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("      aggregate collection by the graupeln")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Coll. efficiency XCOLSG=",E13.6)') XCOLSG
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Temp. factor     XCOLEXSG=",E13.6)') XCOLEXSG
+!!$END IF
 !
 !*       8.2.4  Constants for the raindrop collection by the graupeln
 !
@@ -1352,15 +1352,15 @@ ALLOCATE( XKER_SDRYG(NDRYLBDAG,NDRYLBDAS) )
               ZEGS, XCG, XDG, 0., XCS, XDS, XFVELOS,                        & 
               XDRYLBDAG_MAX, XDRYLBDAS_MAX, XDRYLBDAG_MIN, XDRYLBDAS_MIN, & 
               ZFDINFTY, XKER_N_SDRYG                                      ) 
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_SDRYG) ) THEN")')          
-  DO J1 = 1 , NDRYLBDAG                                                    
-    DO J2 = 1 , NDRYLBDAS                                                  
-    WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_SDRYG(",I3,",",I3,") = ",E13.6)') &
-                      J1,J2,XKER_N_SDRYG(J1,J2)                          
-    END DO                                                                
-  END DO                                                                   
-  WRITE(UNIT=ILUOUT0,FMT='("!")') 
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_SDRYG) ) THEN")')          
+!!$  DO J1 = 1 , NDRYLBDAG                                                    
+!!$    DO J2 = 1 , NDRYLBDAS                                                  
+!!$    WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_SDRYG(",I3,",",I3,") = ",E13.6)') &
+!!$                      J1,J2,XKER_N_SDRYG(J1,J2)                          
+!!$    END DO                                                                
+!!$  END DO                                                                   
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")') 
 !end if
 !
 CALL LIMA_READ_XKER_SDRYG (KDRYLBDAG,KDRYLBDAS,KND,                                    &
@@ -1379,48 +1379,48 @@ IF( (KDRYLBDAG/=NDRYLBDAG) .OR. (KDRYLBDAS/=NDRYLBDAS) .OR. (KND/=IND) .OR. &
                 ZEGS, XBS, XCG, XDG, 0., XCS, XDS, XFVELOS,                 &
                 XDRYLBDAG_MAX, XDRYLBDAS_MAX, XDRYLBDAG_MIN, XDRYLBDAS_MIN, &
                 ZFDINFTY, XKER_SDRYG                                        )
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF SDRYG KERNELS ****")')
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
-  WRITE(UNIT=ILUOUT0,FMT='("KDRYLBDAG=",I3)') NDRYLBDAG
-  WRITE(UNIT=ILUOUT0,FMT='("KDRYLBDAS=",I3)') NDRYLBDAS
-  WRITE(UNIT=ILUOUT0,FMT='("PALPHAG=",E13.6)') XALPHAG
-  WRITE(UNIT=ILUOUT0,FMT='("PNUG=",E13.6)') XNUG
-  WRITE(UNIT=ILUOUT0,FMT='("PALPHAS=",E13.6)') XALPHAS
-  WRITE(UNIT=ILUOUT0,FMT='("PNUS=",E13.6)') XNUS
-  WRITE(UNIT=ILUOUT0,FMT='("PEGS=",E13.6)') ZEGS
-  WRITE(UNIT=ILUOUT0,FMT='("PBS=",E13.6)') XBS
-  WRITE(UNIT=ILUOUT0,FMT='("PCG=",E13.6)') XCG
-  WRITE(UNIT=ILUOUT0,FMT='("PDG=",E13.6)') XDG
-  WRITE(UNIT=ILUOUT0,FMT='("PCS=",E13.6)') XCS
-  WRITE(UNIT=ILUOUT0,FMT='("PDS=",E13.6)') XDS
-  WRITE(UNIT=ILUOUT0,FMT='("PFVELOS=",E13.6)') XFVELOS
-  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAG_MAX=",E13.6)') &
-                                                    XDRYLBDAG_MAX
-  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAS_MAX=",E13.6)') &
-                                                    XDRYLBDAS_MAX
-  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAG_MIN=",E13.6)') &
-                                                    XDRYLBDAG_MIN
-  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAS_MIN=",E13.6)') &
-                                                    XDRYLBDAS_MIN
-  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_SDRYG) ) THEN")')
-  DO J1 = 1 , NDRYLBDAG
-    DO J2 = 1 , NDRYLBDAS
-    WRITE(UNIT=ILUOUT0,FMT='("PKER_SDRYG(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_SDRYG(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF SDRYG KERNELS ****")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KDRYLBDAG=",I3)') NDRYLBDAG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KDRYLBDAS=",I3)') NDRYLBDAS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PALPHAG=",E13.6)') XALPHAG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PNUG=",E13.6)') XNUG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PALPHAS=",E13.6)') XALPHAS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PNUS=",E13.6)') XNUS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PEGS=",E13.6)') ZEGS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PBS=",E13.6)') XBS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PCG=",E13.6)') XCG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDG=",E13.6)') XDG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PCS=",E13.6)') XCS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDS=",E13.6)') XDS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PFVELOS=",E13.6)') XFVELOS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAG_MAX=",E13.6)') &
+!!$                                                    XDRYLBDAG_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAS_MAX=",E13.6)') &
+!!$                                                    XDRYLBDAS_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAG_MIN=",E13.6)') &
+!!$                                                    XDRYLBDAG_MIN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAS_MIN=",E13.6)') &
+!!$                                                    XDRYLBDAS_MIN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_SDRYG) ) THEN")')
+!!$  DO J1 = 1 , NDRYLBDAG
+!!$    DO J2 = 1 , NDRYLBDAS
+!!$    WRITE(UNIT=ILUOUT0,FMT='("PKER_SDRYG(",I3,",",I3,") = ",E13.6)') &
+!!$                        J1,J2,XKER_SDRYG(J1,J2)
+!!$    END DO
+!!$  END DO
+!!$  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
   ELSE
   CALL LIMA_READ_XKER_SDRYG (KDRYLBDAG,KDRYLBDAS,KND,                                    &
                              PALPHAG,PNUG,PALPHAS,PNUS,PEGS,PBS,PCG,PDG,PCS,PDS,PFVELOS, &
                              PDRYLBDAG_MAX,PDRYLBDAS_MAX,PDRYLBDAG_MIN,PDRYLBDAS_MIN,    &
                              PFDINFTY,XKER_SDRYG                                         )
-  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_SDRYG")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_SDRYG")')
 END IF
 !
 !
@@ -1435,15 +1435,15 @@ ALLOCATE( XKER_RDRYG(NDRYLBDAG,NDRYLBDAR) )
                ZEGR, XCG, XDG, 0., XCR, XDR, 0.,                            & 
                XDRYLBDAG_MAX, XDRYLBDAR_MAX, XDRYLBDAG_MIN, XDRYLBDAR_MIN, &
                ZFDINFTY, XKER_N_RDRYG                                      )
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_RDRYG) ) THEN")')          
-  DO J1 = 1 , NDRYLBDAG                                                    
-    DO J2 = 1 , NDRYLBDAR                                                  
-    WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_RDRYG(",I3,",",I3,") = ",E13.6)') &
-                      J1,J2,XKER_N_RDRYG(J1,J2)                          
-    END DO                                                                
-  END DO                                                                   
-  WRITE(UNIT=ILUOUT0,FMT='("!")') 
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_RDRYG) ) THEN")')          
+!!$  DO J1 = 1 , NDRYLBDAG                                                    
+!!$    DO J2 = 1 , NDRYLBDAR                                                  
+!!$    WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_RDRYG(",I3,",",I3,") = ",E13.6)') &
+!!$                      J1,J2,XKER_N_RDRYG(J1,J2)                          
+!!$    END DO                                                                
+!!$  END DO                                                                   
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")') 
 !end if
 !
 CALL LIMA_READ_XKER_RDRYG (KDRYLBDAG,KDRYLBDAR,KND,                                 &
@@ -1462,47 +1462,47 @@ IF( (KDRYLBDAG/=NDRYLBDAG) .OR. (KDRYLBDAR/=NDRYLBDAR) .OR. (KND/=IND) .OR. &
                 ZEGR, XBR, XCG, XDG, 0., XCR, XDR, 0.,                      &
                 XDRYLBDAG_MAX, XDRYLBDAR_MAX, XDRYLBDAG_MIN, XDRYLBDAR_MIN, &
                 ZFDINFTY, XKER_RDRYG                                        )
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF RDRYG KERNELS ****")')
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
-  WRITE(UNIT=ILUOUT0,FMT='("KDRYLBDAG=",I3)') NDRYLBDAG
-  WRITE(UNIT=ILUOUT0,FMT='("KDRYLBDAR=",I3)') NDRYLBDAR
-  WRITE(UNIT=ILUOUT0,FMT='("PALPHAG=",E13.6)') XALPHAG
-  WRITE(UNIT=ILUOUT0,FMT='("PNUG=",E13.6)') XNUG
-  WRITE(UNIT=ILUOUT0,FMT='("PALPHAR=",E13.6)') XALPHAR
-  WRITE(UNIT=ILUOUT0,FMT='("PNUR=",E13.6)') XNUR
-  WRITE(UNIT=ILUOUT0,FMT='("PEGR=",E13.6)') ZEGR
-  WRITE(UNIT=ILUOUT0,FMT='("PBR=",E13.6)') XBR
-  WRITE(UNIT=ILUOUT0,FMT='("PCG=",E13.6)') XCG
-  WRITE(UNIT=ILUOUT0,FMT='("PDG=",E13.6)') XDG
-  WRITE(UNIT=ILUOUT0,FMT='("PCR=",E13.6)') XCR
-  WRITE(UNIT=ILUOUT0,FMT='("PDR=",E13.6)') XDR
-  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAG_MAX=",E13.6)') &
-                                                    XDRYLBDAG_MAX
-  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAR_MAX=",E13.6)') &
-                                                    XDRYLBDAR_MAX
-  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAG_MIN=",E13.6)') &
-                                                    XDRYLBDAG_MIN
-  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAR_MIN=",E13.6)') &
-                                                    XDRYLBDAR_MIN
-  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_RDRYG) ) THEN")')
-  DO J1 = 1 , NDRYLBDAG
-    DO J2 = 1 , NDRYLBDAR
-    WRITE(UNIT=ILUOUT0,FMT='("PKER_RDRYG(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_RDRYG(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF RDRYG KERNELS ****")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KDRYLBDAG=",I3)') NDRYLBDAG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KDRYLBDAR=",I3)') NDRYLBDAR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PALPHAG=",E13.6)') XALPHAG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PNUG=",E13.6)') XNUG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PALPHAR=",E13.6)') XALPHAR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PNUR=",E13.6)') XNUR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PEGR=",E13.6)') ZEGR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PBR=",E13.6)') XBR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PCG=",E13.6)') XCG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDG=",E13.6)') XDG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PCR=",E13.6)') XCR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDR=",E13.6)') XDR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAG_MAX=",E13.6)') &
+!!$                                                    XDRYLBDAG_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAR_MAX=",E13.6)') &
+!!$                                                    XDRYLBDAR_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAG_MIN=",E13.6)') &
+!!$                                                    XDRYLBDAG_MIN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDRYLBDAR_MIN=",E13.6)') &
+!!$                                                    XDRYLBDAR_MIN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_RDRYG) ) THEN")')
+!!$  DO J1 = 1 , NDRYLBDAG
+!!$    DO J2 = 1 , NDRYLBDAR
+!!$    WRITE(UNIT=ILUOUT0,FMT='("PKER_RDRYG(",I3,",",I3,") = ",E13.6)') &
+!!$                        J1,J2,XKER_RDRYG(J1,J2)
+!!$    END DO
+!!$  END DO
+!!$  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
   ELSE
   CALL LIMA_READ_XKER_RDRYG (KDRYLBDAG,KDRYLBDAR,KND,                                 &
                              PALPHAG,PNUG,PALPHAR,PNUR,PEGR,PBR,PCG,PDG,PCR,PDR,      &
                              PDRYLBDAG_MAX,PDRYLBDAR_MAX,PDRYLBDAG_MIN,PDRYLBDAR_MIN, &
                              PFDINFTY,XKER_RDRYG                                      )
-  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_RDRYG")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_RDRYG")')
 END IF
 !  
 !-------------------------------------------------------------------------------
@@ -1575,15 +1575,15 @@ ZFDINFTY = 20.0  ! computing the kernels XKER_SWETH
               ZEHS, XCH, XDH, 0., XCS, XDS, XFVELOS,                       &  ! 
               XWETLBDAH_MAX, XWETLBDAS_MAX, XWETLBDAH_MIN, XWETLBDAS_MIN, &  ! 
               ZFDINFTY, XKER_N_SWETH                                        )
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_SWETH) ) THEN")')          
-  DO J1 = 1 , NWETLBDAH                                                    
-    DO J2 = 1 , NWETLBDAS                                                  
-    WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_SWETH(",I3,",",I3,") = ",E13.6)') &
-                      J1,J2,XKER_N_SWETH(J1,J2)                          
-    END DO                                                                
-  END DO                                                                   
-  WRITE(UNIT=ILUOUT0,FMT='("!")') 
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_SWETH) ) THEN")')          
+!!$  DO J1 = 1 , NWETLBDAH                                                    
+!!$    DO J2 = 1 , NWETLBDAS                                                  
+!!$    WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_SWETH(",I3,",",I3,") = ",E13.6)') &
+!!$                      J1,J2,XKER_N_SWETH(J1,J2)                          
+!!$    END DO                                                                
+!!$  END DO                                                                   
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")') 
 !end  if
 IF( .NOT.ALLOCATED(XKER_SWETH) ) ALLOCATE( XKER_SWETH(NWETLBDAH,NWETLBDAS) )
 !
@@ -1603,48 +1603,48 @@ IF( (KWETLBDAH/=NWETLBDAH) .OR. (KWETLBDAS/=NWETLBDAS) .OR. (KND/=IND) .OR. &
                 ZEHS, XBS, XCH, XDH, 0., XCS, XDS, XFVELOS,                 &
                 XWETLBDAH_MAX, XWETLBDAS_MAX, XWETLBDAH_MIN, XWETLBDAS_MIN, &
                 ZFDINFTY, XKER_SWETH                                        )
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF SWETH KERNELS ****")')
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
-  WRITE(UNIT=ILUOUT0,FMT='("KWETLBDAH=",I3)') NWETLBDAH
-  WRITE(UNIT=ILUOUT0,FMT='("KWETLBDAS=",I3)') NWETLBDAS
-  WRITE(UNIT=ILUOUT0,FMT='("PALPHAH=",E13.6)') XALPHAH
-  WRITE(UNIT=ILUOUT0,FMT='("PNUH=",E13.6)') XNUH
-  WRITE(UNIT=ILUOUT0,FMT='("PALPHAS=",E13.6)') XALPHAS
-  WRITE(UNIT=ILUOUT0,FMT='("PNUS=",E13.6)') XNUS
-  WRITE(UNIT=ILUOUT0,FMT='("PEHS=",E13.6)') ZEHS
-  WRITE(UNIT=ILUOUT0,FMT='("PBS=",E13.6)') XBS
-  WRITE(UNIT=ILUOUT0,FMT='("PCH=",E13.6)') XCH
-  WRITE(UNIT=ILUOUT0,FMT='("PDH=",E13.6)') XDH
-  WRITE(UNIT=ILUOUT0,FMT='("PCS=",E13.6)') XCS
-  WRITE(UNIT=ILUOUT0,FMT='("PDS=",E13.6)') XDS
-  WRITE(UNIT=ILUOUT0,FMT='("PFVELOS=",E13.6)') XFVELOS
-  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAH_MAX=",E13.6)') &
-                                                    XWETLBDAH_MAX
-  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAS_MAX=",E13.6)') &
-                                                    XWETLBDAS_MAX
-  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAH_MIN=",E13.6)') &
-                                                    XWETLBDAH_MIN
-  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAS_MIN=",E13.6)') &
-                                                    XWETLBDAS_MIN
-  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_SWETH) ) THEN")')
-  DO J1 = 1 , NWETLBDAH
-    DO J2 = 1 , NWETLBDAS
-    WRITE(UNIT=ILUOUT0,FMT='("PKER_SWETH(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_SWETH(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF SWETH KERNELS ****")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KWETLBDAH=",I3)') NWETLBDAH
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KWETLBDAS=",I3)') NWETLBDAS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PALPHAH=",E13.6)') XALPHAH
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PNUH=",E13.6)') XNUH
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PALPHAS=",E13.6)') XALPHAS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PNUS=",E13.6)') XNUS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PEHS=",E13.6)') ZEHS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PBS=",E13.6)') XBS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PCH=",E13.6)') XCH
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDH=",E13.6)') XDH
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PCS=",E13.6)') XCS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDS=",E13.6)') XDS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PFVELOS=",E13.6)') XFVELOS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAH_MAX=",E13.6)') &
+!!$                                                    XWETLBDAH_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAS_MAX=",E13.6)') &
+!!$                                                    XWETLBDAS_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAH_MIN=",E13.6)') &
+!!$                                                    XWETLBDAH_MIN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAS_MIN=",E13.6)') &
+!!$                                                    XWETLBDAS_MIN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_SWETH) ) THEN")')
+!!$  DO J1 = 1 , NWETLBDAH
+!!$    DO J2 = 1 , NWETLBDAS
+!!$    WRITE(UNIT=ILUOUT0,FMT='("PKER_SWETH(",I3,",",I3,") = ",E13.6)') &
+!!$                        J1,J2,XKER_SWETH(J1,J2)
+!!$    END DO
+!!$  END DO
+!!$  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
   ELSE
   CALL LIMA_READ_XKER_SWETH (KWETLBDAH,KWETLBDAS,KND,                                    &
                              PALPHAH,PNUH,PALPHAS,PNUS,PEHS,PBS,PCH,PDH,PCS,PDS,PFVELOS, &
                              PWETLBDAH_MAX,PWETLBDAS_MAX,PWETLBDAH_MIN,PWETLBDAS_MIN,    &
                              PFDINFTY,XKER_SWETH                                         )
-  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_SWETH")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_SWETH")')
 END IF
 !
 !
@@ -1658,15 +1658,15 @@ ZFDINFTY = 20.0
               ZEHG, XCH, XDH, 0., XCG, XDG, 0.,                            & 
               XWETLBDAH_MAX, XWETLBDAG_MAX, XWETLBDAH_MIN, XWETLBDAG_MIN, & 
               ZFDINFTY, XKER_N_GWETH                                      )
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_GWETH) ) THEN")')          
-  DO J1 = 1 , NWETLBDAH                                                    
-    DO J2 = 1 , NWETLBDAG                                                  
-    WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_GWETH(",I3,",",I3,") = ",E13.6)') &
-                      J1,J2,XKER_N_GWETH(J1,J2)                          
-    END DO                                                                
-  END DO                                                                   
-  WRITE(UNIT=ILUOUT0,FMT='("!")') 
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_N_GWETH) ) THEN")')          
+!!$  DO J1 = 1 , NWETLBDAH                                                    
+!!$    DO J2 = 1 , NWETLBDAG                                                  
+!!$    WRITE(UNIT=ILUOUT0,FMT='("  PKER_N_GWETH(",I3,",",I3,") = ",E13.6)') &
+!!$                      J1,J2,XKER_N_GWETH(J1,J2)                          
+!!$    END DO                                                                
+!!$  END DO                                                                   
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")') 
 !end if
 IF( .NOT.ALLOCATED(XKER_GWETH) ) ALLOCATE( XKER_GWETH(NWETLBDAH,NWETLBDAG) )
 !
@@ -1686,47 +1686,47 @@ IF( (KWETLBDAH/=NWETLBDAH) .OR. (KWETLBDAG/=NWETLBDAG) .OR. (KND/=IND) .OR. &
                 ZEHG, XBG, XCH, XDH, 0., XCG, XDG, 0.,                      &
                 XWETLBDAH_MAX, XWETLBDAG_MAX, XWETLBDAH_MIN, XWETLBDAG_MIN, &
                 ZFDINFTY, XKER_GWETH                                        )
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF GWETH KERNELS ****")')
-  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
-  WRITE(UNIT=ILUOUT0,FMT='("KWETLBDAH=",I3)') NWETLBDAH
-  WRITE(UNIT=ILUOUT0,FMT='("KWETLBDAG=",I3)') NWETLBDAG
-  WRITE(UNIT=ILUOUT0,FMT='("PALPHAH=",E13.6)') XALPHAH
-  WRITE(UNIT=ILUOUT0,FMT='("PNUH=",E13.6)') XNUH
-  WRITE(UNIT=ILUOUT0,FMT='("PALPHAG=",E13.6)') XALPHAG
-  WRITE(UNIT=ILUOUT0,FMT='("PNUG=",E13.6)') XNUG
-  WRITE(UNIT=ILUOUT0,FMT='("PEHG=",E13.6)') ZEHG
-  WRITE(UNIT=ILUOUT0,FMT='("PBG=",E13.6)') XBG
-  WRITE(UNIT=ILUOUT0,FMT='("PCH=",E13.6)') XCH
-  WRITE(UNIT=ILUOUT0,FMT='("PDH=",E13.6)') XDH
-  WRITE(UNIT=ILUOUT0,FMT='("PCG=",E13.6)') XCG
-  WRITE(UNIT=ILUOUT0,FMT='("PDG=",E13.6)') XDG
-  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAH_MAX=",E13.6)') &
-                                                    XWETLBDAH_MAX
-  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAG_MAX=",E13.6)') &
-                                                    XWETLBDAG_MAX
-  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAH_MIN=",E13.6)') &
-                                                    XWETLBDAH_MIN
-  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAG_MIN=",E13.6)') &
-                                                    XWETLBDAG_MIN
-  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
-  WRITE(UNIT=ILUOUT0,FMT='("!")')
-  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_GWETH) ) THEN")')
-  DO J1 = 1 , NWETLBDAH
-    DO J2 = 1 , NWETLBDAG
-    WRITE(UNIT=ILUOUT0,FMT='("PKER_GWETH(",I3,",",I3,") = ",E13.6)') &
-                        J1,J2,XKER_GWETH(J1,J2)
-    END DO
-  END DO
-  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("**** UPDATE NEW SET OF GWETH KERNELS ****")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("*****************************************")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KND=",I3)') IND
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KWETLBDAH=",I3)') NWETLBDAH
+!!$  WRITE(UNIT=ILUOUT0,FMT='("KWETLBDAG=",I3)') NWETLBDAG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PALPHAH=",E13.6)') XALPHAH
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PNUH=",E13.6)') XNUH
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PALPHAG=",E13.6)') XALPHAG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PNUG=",E13.6)') XNUG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PEHG=",E13.6)') ZEHG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PBG=",E13.6)') XBG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PCH=",E13.6)') XCH
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDH=",E13.6)') XDH
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PCG=",E13.6)') XCG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PDG=",E13.6)') XDG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAH_MAX=",E13.6)') &
+!!$                                                    XWETLBDAH_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAG_MAX=",E13.6)') &
+!!$                                                    XWETLBDAG_MAX
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAH_MIN=",E13.6)') &
+!!$                                                    XWETLBDAH_MIN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PWETLBDAG_MIN=",E13.6)') &
+!!$                                                    XWETLBDAG_MIN
+!!$  WRITE(UNIT=ILUOUT0,FMT='("PFDINFTY=",E13.6)') ZFDINFTY
+!!$  WRITE(UNIT=ILUOUT0,FMT='("!")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("IF( PRESENT(PKER_GWETH) ) THEN")')
+!!$  DO J1 = 1 , NWETLBDAH
+!!$    DO J2 = 1 , NWETLBDAG
+!!$    WRITE(UNIT=ILUOUT0,FMT='("PKER_GWETH(",I3,",",I3,") = ",E13.6)') &
+!!$                        J1,J2,XKER_GWETH(J1,J2)
+!!$    END DO
+!!$  END DO
+!!$  WRITE(UNIT=ILUOUT0,FMT='("END IF")')
   ELSE
   CALL LIMA_READ_XKER_GWETH (KWETLBDAH,KWETLBDAG,KND,                                 &
                              PALPHAH,PNUH,PALPHAG,PNUG,PEHG,PBG,PCH,PDH,PCG,PDG,      &
                              PWETLBDAH_MAX,PWETLBDAG_MAX,PWETLBDAH_MIN,PWETLBDAG_MIN, &
                              PFDINFTY,XKER_GWETH                                      )
-  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_GWETH")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Read XKER_GWETH")')
 END IF
 !
 !
@@ -1748,35 +1748,35 @@ XFREFFI = 0.5 * ZGAMI(8) * (1.0/XLBI)**XLBEXI
 !   	        -----------------------
 !
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  WRITE(UNIT=ILUOUT0,FMT='(" Summary of the ice particule characteristics")')
-  WRITE(UNIT=ILUOUT0,FMT='("      PRISTINE ICE")')
-  WRITE(UNIT=ILUOUT0,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
-                                                      XAI,XBI
-  WRITE(UNIT=ILUOUT0,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
-                                                      XC_I,XDI
-  WRITE(UNIT=ILUOUT0,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
-                                                      XALPHAI,XNUI
-  WRITE(UNIT=ILUOUT0,FMT='("              SNOW")')
-  WRITE(UNIT=ILUOUT0,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
-                                                      XAS,XBS
-  WRITE(UNIT=ILUOUT0,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
-                                                      XCS,XDS
-  WRITE(UNIT=ILUOUT0,FMT='("           concentration:CC=",E13.6," x=",E13.6)') &
-                                                      XCCS,XCXS
-  WRITE(UNIT=ILUOUT0,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
-                                                      XALPHAS,XNUS
-  WRITE(UNIT=ILUOUT0,FMT='("            GRAUPEL")')
-  WRITE(UNIT=ILUOUT0,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
-                                                      XAG,XBG
-  WRITE(UNIT=ILUOUT0,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
-                                                      XCG,XDG
-  WRITE(UNIT=ILUOUT0,FMT='("           concentration:CC=",E13.6," x=",E13.6)') &
-                                                      XCCG,XCXG
-  WRITE(UNIT=ILUOUT0,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
-                                                      XALPHAG,XNUG
-END IF
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Summary of the ice particule characteristics")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("      PRISTINE ICE")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
+!!$                                                      XAI,XBI
+!!$  WRITE(UNIT=ILUOUT0,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
+!!$                                                      XC_I,XDI
+!!$  WRITE(UNIT=ILUOUT0,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
+!!$                                                      XALPHAI,XNUI
+!!$  WRITE(UNIT=ILUOUT0,FMT='("              SNOW")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
+!!$                                                      XAS,XBS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
+!!$                                                      XCS,XDS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("           concentration:CC=",E13.6," x=",E13.6)') &
+!!$                                                      XCCS,XCXS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
+!!$                                                      XALPHAS,XNUS
+!!$  WRITE(UNIT=ILUOUT0,FMT='("            GRAUPEL")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
+!!$                                                      XAG,XBG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
+!!$                                                      XCG,XDG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("           concentration:CC=",E13.6," x=",E13.6)') &
+!!$                                                      XCCG,XCXG
+!!$  WRITE(UNIT=ILUOUT0,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
+!!$                                                      XALPHAG,XNUG
+!!$END IF
 !
 !------------------------------------------------------------------------------
 !
diff --git a/src/common/micro/ini_lima_warm.F90 b/src/common/micro/ini_lima_warm.F90
index aea2517cab9d168a998aa6785bd35693674050d9..c1485757f397c113484257f6849c349f240f709c 100644
--- a/src/common/micro/ini_lima_warm.F90
+++ b/src/common/micro/ini_lima_warm.F90
@@ -50,7 +50,7 @@ USE MODD_REF
 USE MODD_PARAM_LIMA
 USE MODD_PARAM_LIMA_WARM
 USE MODD_PARAMETERS
-USE MODD_LUNIT, ONLY : TLUOUT0
+!USE MODD_LUNIT, ONLY : TLUOUT0
 !
 USE MODI_LIMA_FUNCTIONS
 USE MODI_HYPGEO
@@ -85,9 +85,9 @@ REAL :: ZSMIN, ZSMAX          ! Minimal and maximal supersaturation used to
                               ! discretize the HYP functions
 !
 !
-INTEGER  :: ILUOUT0 ! Logical unit number for output-listing
-INTEGER  :: IRESP   ! Return code of FM-routines
-LOGICAL  :: GFLAG   ! Logical flag for printing the constatnts on the output
+!INTEGER  :: ILUOUT0 ! Logical unit number for output-listing
+!INTEGER  :: IRESP   ! Return code of FM-routines
+!LOGICAL  :: GFLAG   ! Logical flag for printing the constatnts on the output
                     ! listing
 !  
 !-------------------------------------------------------------------------------
@@ -448,29 +448,29 @@ XCRER = 1.0/ (ZGAMR(6) * XAR**(2.0/3.0))
 !   	        -----------------------
 !
 !
-GFLAG = .TRUE.
-IF (GFLAG) THEN
-  ILUOUT0 = TLUOUT0%NLU
-  WRITE(UNIT=ILUOUT0,FMT='(" Summary of the cloud particule characteristics")')
-  WRITE(UNIT=ILUOUT0,FMT='("             CLOUD")')
-  WRITE(UNIT=ILUOUT0,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
-                                                      XAR,XBR
-  WRITE(UNIT=ILUOUT0,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
-                                                      XCC,XDC
-  WRITE(UNIT=ILUOUT0,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
-                                                      XALPHAC,XNUC
-  WRITE(UNIT=ILUOUT0,FMT='("               RAIN")')
-  WRITE(UNIT=ILUOUT0,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
-                                                      XAR,XBR
-  WRITE(UNIT=ILUOUT0,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
-                                                      XCR,XDR
+!!$GFLAG = .TRUE.
+!!$IF (GFLAG) THEN
+!!$  ILUOUT0 = TLUOUT0%NLU
+!!$  WRITE(UNIT=ILUOUT0,FMT='(" Summary of the cloud particule characteristics")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("             CLOUD")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
+!!$                                                      XAR,XBR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
+!!$                                                      XCC,XDC
+!!$  WRITE(UNIT=ILUOUT0,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
+!!$                                                      XALPHAC,XNUC
+!!$  WRITE(UNIT=ILUOUT0,FMT='("               RAIN")')
+!!$  WRITE(UNIT=ILUOUT0,FMT='("                   masse: A=",E13.6," B=",E13.6)') &
+!!$                                                      XAR,XBR
+!!$  WRITE(UNIT=ILUOUT0,FMT='("                 vitesse: C=",E13.6," D=",E13.6)') &
+!!$                                                      XCR,XDR
 !!$  WRITE(UNIT=ILUOUT0,FMT='("            distribution:AL=",E13.6,"NU=",E13.6)') &
 !!$                                                      XALPHAR,XNUR
 !!$  WRITE(UNIT=ILUOUT0,FMT='(" Description of the nucleation spectrum")')
 !!$  WRITE(UNIT=ILUOUT0,FMT='("         C=",E13.6,"  k=",E13.6)') XCHEN, XKHEN
 !!$  WRITE(UNIT=ILUOUT0,FMT='("      Beta=",E13.6," MU=",E13.6)') XBETAHEN, XMUHEN
 !!$  WRITE(UNIT=ILUOUT0,FMT='("      CCN max=",E13.6)') XCONC_CCN
-END IF
+!!$END IF
 !
 !------------------------------------------------------------------------------
 !
diff --git a/src/common/micro/init_aerosol_properties.F90 b/src/common/micro/init_aerosol_properties.F90
index 52f7ddc882a89149d5f467797f07c70b1a9f5ba2..e1a7916408b799fa8d5eed03ce2698fb3ba9c37d 100644
--- a/src/common/micro/init_aerosol_properties.F90
+++ b/src/common/micro/init_aerosol_properties.F90
@@ -44,7 +44,7 @@ END MODULE MODI_INIT_AEROSOL_PROPERTIES
 !*       0.    DECLARATIONS
 !              ------------
 !
-USE MODD_LUNIT,           ONLY : TLUOUT0
+!USE MODD_LUNIT,           ONLY : TLUOUT0
 USE MODD_PARAM_LIMA,      ONLY : NMOD_CCN, HINI_CCN, HTYPE_CCN,        &
                                  XR_MEAN_CCN, XLOGSIG_CCN, XRHO_CCN,                 &
                                  XKHEN_MULTI, XMUHEN_MULTI, XBETAHEN_MULTI,          &
@@ -52,7 +52,8 @@ USE MODD_PARAM_LIMA,      ONLY : NMOD_CCN, HINI_CCN, HTYPE_CCN,        &
                                  XACTEMP_CCN, XFSOLUB_CCN,                           &
                                  NMOD_IFN, NSPECIE, CIFN_SPECIES,       &
                                  XMDIAM_IFN, XSIGMA_IFN, XRHO_IFN, XFRAC, XFRAC_REF, &
-                                 CINT_MIXING, NPHILLIPS
+                                 CINT_MIXING, NPHILLIPS,           &
+                                 NIMM, NMOD_IMM, NINDICE_CCN_IMM
 !
 use mode_msg
 !
@@ -84,8 +85,8 @@ REAL, DIMENSION(3) :: RHOCCN
 !
 INTEGER            :: I,J,JMOD
 !
-INTEGER  :: ILUOUT0 ! Logical unit number for output-listing
-INTEGER  :: IRESP   ! Return code of FM-routines
+!INTEGER  :: ILUOUT0 ! Logical unit number for output-listing
+!INTEGER  :: IRESP   ! Return code of FM-routines
 !
 REAL :: X1, X2, X3, X4, X5
 ! REAL, DIMENSION(7) :: diameters=(/ 0.01E-6, 0.05E-6, 0.1E-6, 0.2E-6, 0.5E-6, 1.E-6, 2.E-6 /)
@@ -97,7 +98,7 @@ INTEGER :: II, IJ, IK
 !
 !-------------------------------------------------------------------------------
 !
-ILUOUT0 = TLUOUT0%NLU
+!ILUOUT0 = TLUOUT0%NLU
 !
 !!!!!!!!!!!!!!!!
 ! CCN properties
@@ -183,13 +184,13 @@ IF ( NMOD_CCN .GE. 1 ) THEN
   IF (.NOT.(ALLOCATED(XLIMIT_FACTOR)))  ALLOCATE(XLIMIT_FACTOR(NMOD_CCN))
 !
   IF (HINI_CCN == 'CCN') THEN
-    IF (LSCAV) THEN
-! Attention !
-      WRITE(UNIT=ILUOUT0,FMT='("You are using a numerical initialization &
-        &not depending on the aerosol properties, however you need it for &
-        &scavenging.                                                      &
-        &With LSCAV = true, HINI_CCN should be set to AER for consistency")')
-    END IF
+!!$    IF (LSCAV) THEN
+!!$! Attention !
+!!$      WRITE(UNIT=ILUOUT0,FMT='("You are using a numerical initialization &
+!!$        &not depending on the aerosol properties, however you need it for &
+!!$        &scavenging.                                                      &
+!!$        &With LSCAV = true, HINI_CCN should be set to AER for consistency")')
+!!$    END IF
 ! Numerical initialization without dependence on AP physical properties
     DO JMOD = 1, NMOD_CCN
       XKHEN_MULTI(JMOD)    = XKHEN_TMP(JMOD)  
@@ -431,6 +432,22 @@ IF ( NMOD_IFN .GE. 1 ) THEN
          XFRAC_REF(4)=0.06
       END IF
 !
+! Immersion modes
+!
+   IF (.NOT.(ALLOCATED(NIMM))) ALLOCATE(NIMM(NMOD_CCN))
+   NIMM(:)=0
+   IF (ALLOCATED(NINDICE_CCN_IMM)) DEALLOCATE(NINDICE_CCN_IMM)
+   ALLOCATE(NINDICE_CCN_IMM(MAX(1,NMOD_IMM)))
+   IF (NMOD_IMM .GE. 1) THEN
+      DO J = 0, NMOD_IMM-1
+         NIMM(NMOD_CCN-J)=1
+         NINDICE_CCN_IMM(NMOD_IMM-J) = NMOD_CCN-J
+      END DO
+!   ELSE IF (NMOD_IMM == 0) THEN ! PNIS existe mais vaut 0, pour l'appel à resolved_cloud
+!      NMOD_IMM = 1
+!      NINDICE_CCN_IMM(1) = 0
+   END IF
+!
 END IF ! NMOD_IFN > 0
 ! 
 END SUBROUTINE INIT_AEROSOL_PROPERTIES
diff --git a/src/common/micro/lima_adjust_split.F90 b/src/common/micro/lima_adjust_split.F90
index 0f8aeef7151532a7011356dc4e960f92bf3a0c73..e0122fa2d37d2eff673096e7cede50f7f72dd89d 100644
--- a/src/common/micro/lima_adjust_split.F90
+++ b/src/common/micro/lima_adjust_split.F90
@@ -9,21 +9,28 @@
 !
 INTERFACE
 !
-      SUBROUTINE LIMA_ADJUST_SPLIT(D, KRR, KMI, TPFILE, HCONDENS, HLAMBDA3,        &
+   SUBROUTINE LIMA_ADJUST_SPLIT(D, CST, BUCONF, TBUDGETS, KBUDGETS, &
+                             KRR, KMI, HCONDENS, HLAMBDA3,        &
                              OSUBG_COND, OSIGMAS, PTSTEP, PSIGQSAT,             &
                              PRHODREF, PRHODJ, PEXNREF, PSIGS, PMFCONV,         &
                              PPABST, PPABSTT, PZZ, PDTHRAD, PW_NU,              &
                              PRT, PRS, PSVT, PSVS,                              &
                              PTHS, PSRCS, PCLDFR, PICEFR, PRC_MF, PRI_MF, PCF_MF)
 !
-USE MODD_IO,    ONLY: TFILEDATA
+!USE MODD_IO,    ONLY: TFILEDATA
 USE MODD_NSV,   only: NSV_LIMA_BEG
 USE MODD_DIMPHYEX,       ONLY: DIMPHYEX_t
+USE MODD_BUDGET,   ONLY: TBUDGETDATA, TBUDGETCONF_t
+USE MODD_CST,            ONLY: CST_t
 !
 TYPE(DIMPHYEX_t),         INTENT(IN)   :: D
+TYPE(CST_t),              INTENT(IN)    :: CST
+TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
+TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+INTEGER, INTENT(IN) :: KBUDGETS
+!
 INTEGER,                  INTENT(IN)   :: KRR        ! Number of moist variables
 INTEGER,                  INTENT(IN)   :: KMI        ! Model index 
-TYPE(TFILEDATA),          INTENT(IN)   :: TPFILE     ! Output file
 CHARACTER(len=80),        INTENT(IN)   :: HCONDENS
 CHARACTER(len=4),         INTENT(IN)   :: HLAMBDA3   ! formulation for lambda3 coeff
 LOGICAL,                  INTENT(IN)   :: OSUBG_COND ! Switch for Subgrid
@@ -72,7 +79,7 @@ END INTERFACE
 END MODULE MODI_LIMA_ADJUST_SPLIT
 !
 !     ###########################################################################
-      SUBROUTINE LIMA_ADJUST_SPLIT(D, KRR, KMI, TPFILE, HCONDENS, HLAMBDA3,        &
+      SUBROUTINE LIMA_ADJUST_SPLIT(D, KRR, KMI, HCONDENS, HLAMBDA3,        &
                              OSUBG_COND, OSIGMAS, PTSTEP, PSIGQSAT,             &
                              PRHODREF, PRHODJ, PEXNREF, PSIGS, PMFCONV,         &
                              PPABST, PPABSTT, PZZ, PDTHRAD, PW_NU,              &
@@ -152,15 +159,12 @@ END MODULE MODI_LIMA_ADJUST_SPLIT
 !*       0.    DECLARATIONS
 !              ------------
 !
-use modd_budget,           only: lbu_enable, nbumod,                                          &
-                                 lbudget_th, lbudget_rv, lbudget_rc, lbudget_ri, lbudget_sv,  &
-                                 NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, NBUDGET_RI, NBUDGET_SV1, &
-                                 tbudgets
+USE MODD_BUDGET,   ONLY: TBUDGETDATA, TBUDGETCONF_t
+USE MODD_CST,            ONLY: CST_t
 USE MODD_CONF
-USE MODD_CST
-use modd_field,            only: TFIELDMETADATA, TYPEREAL
-USE MODD_IO,               ONLY: TFILEDATA
-USE MODD_LUNIT_n,          ONLY: TLUOUT
+!use modd_field,            only: TFIELDDATA, TYPEREAL
+!USE MODD_IO,               ONLY: TFILEDATA
+!USE MODD_LUNIT_n,          ONLY: TLUOUT
 USE MODD_NSV
 USE MODD_PARAMETERS
 USE MODD_PARAM_LIMA
@@ -172,8 +176,8 @@ USE MODD_NEB,              ONLY: NEB
 USE MODD_TURB_n,           ONLY: TURBN
 USE MODD_DIMPHYEX,         ONLY: DIMPHYEX_t
 !
-use mode_budget,           only: Budget_store_init, Budget_store_end
-USE MODE_IO_FIELD_WRITE,   only: IO_Field_write
+use mode_budget,           only: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY
+!USE MODE_IO_FIELD_WRITE,   only: IO_Field_write
 use mode_msg
 use mode_tools,            only: Countjv
 !
@@ -188,9 +192,13 @@ IMPLICIT NONE
 !
 !
 TYPE(DIMPHYEX_t),         INTENT(IN)   :: D
+TYPE(CST_t),              INTENT(IN)    :: CST
+TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
+TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+INTEGER, INTENT(IN) :: KBUDGETS
+!
 INTEGER,                  INTENT(IN)   :: KRR        ! Number of moist variables
 INTEGER,                  INTENT(IN)   :: KMI        ! Model index 
-TYPE(TFILEDATA),          INTENT(IN)   :: TPFILE     ! Output file
 CHARACTER(len=80),        INTENT(IN)    :: HCONDENS
 CHARACTER(len=4),         INTENT(IN)    :: HLAMBDA3  ! formulation for lambda3 coeff
 LOGICAL,                  INTENT(IN)   :: OSUBG_COND ! Switch for Subgrid 
@@ -244,6 +252,7 @@ REAL, DIMENSION(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3)) &
                             PRIT,        & ! Cloud ice  m.r. at t
                             PRST,        & ! Aggregate  m.r. at t
                             PRGT,        & ! Graupel    m.r. at t
+                            PRHT,        & ! Hail       m.r. at t
 !
                             PRVS,        & ! Water vapor m.r. source
                             PRCS,        & ! Cloud water m.r. source
@@ -251,6 +260,7 @@ REAL, DIMENSION(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3)) &
                             PRIS,        & ! Cloud ice  m.r. source
                             PRSS,        & ! Aggregate  m.r. source
                             PRGS,        & ! Graupel    m.r. source
+                            PRHS,        & ! Hail       m.r. source
 !
                             PCCT,        & ! Cloud water conc. at t
                             PCIT,        & ! Cloud ice   conc. at t
@@ -292,14 +302,14 @@ REAL, DIMENSION(SIZE(PRHODJ,1),SIZE(PRHODJ,2)) :: ZSIGQSAT2D
 !
 INTEGER, DIMENSION(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3)) :: IVEC1
 !
-INTEGER                  :: IRESP      ! Return code of FM routines
+!INTEGER                  :: IRESP      ! Return code of FM routines
 INTEGER                  :: IIU,IJU,IKU! dimensions of dummy arrays
 INTEGER                  :: IKB        ! K index value of the first inner mass point
 INTEGER                  :: IKE        ! K index value of the last inner mass point
 INTEGER                  :: IIB,IJB    ! Horz index values of the first inner mass points
 INTEGER                  :: IIE,IJE    ! Horz index values of the last inner mass points
 INTEGER                  :: JITER,ITERMAX  ! iterative loop for first order adjustment
-INTEGER                  :: ILUOUT     ! Logical unit of output listing 
+!INTEGER                  :: ILUOUT     ! Logical unit of output listing 
 !
 INTEGER                           :: ISIZE
 LOGICAL                           :: G_SIGMAS, GUSERI
@@ -317,19 +327,9 @@ TYPE(TFIELDMETADATA)     :: TZFIELD
 !*       1.     PRELIMINARIES
 !               -------------
 !
-ILUOUT = TLUOUT%NLU
-!
-IIU = SIZE(PEXNREF,1)
-IJU = SIZE(PEXNREF,2)
-IKU = SIZE(PEXNREF,3)
-IIB = 1 + JPHEXT
-IIE = SIZE(PRHODJ,1) - JPHEXT
-IJB = 1 + JPHEXT
-IJE = SIZE(PRHODJ,2) - JPHEXT
-IKB = 1 + JPVEXT
-IKE = SIZE(PRHODJ,3) - JPVEXT
+!ILUOUT = TLUOUT%NLU
 !
-ZEPS= XMV / XMD
+ZEPS= CST%XMV / CST%XMD
 !
 IF (OSUBG_COND) THEN
   ITERMAX=1
@@ -363,6 +363,8 @@ PRST(:,:,:) = 0.
 PRSS(:,:,:) = 0.
 PRGT(:,:,:) = 0.
 PRGS(:,:,:) = 0.
+PRHT(:,:,:) = 0.
+PRHS(:,:,:) = 0.
 !
 IF ( KRR .GE. 2 ) PRCT(:,:,:) = PRS(:,:,:,2)*PTSTEP
 IF ( KRR .GE. 2 ) PRCS(:,:,:) = PRS(:,:,:,2)
@@ -374,6 +376,8 @@ IF ( KRR .GE. 5 ) PRST(:,:,:) = PRT(:,:,:,5)
 IF ( KRR .GE. 5 ) PRSS(:,:,:) = PRS(:,:,:,5) 
 IF ( KRR .GE. 6 ) PRGT(:,:,:) = PRT(:,:,:,6)
 IF ( KRR .GE. 6 ) PRGS(:,:,:) = PRS(:,:,:,6)
+IF ( KRR .GE. 7 ) PRHT(:,:,:) = PRT(:,:,:,7)
+IF ( KRR .GE. 7 ) PRHS(:,:,:) = PRS(:,:,:,7)
 !
 ! Prepare 3D number concentrations
 PCCT(:,:,:) = 0.
@@ -413,36 +417,36 @@ END IF
 ! END IF
 !
 !
-if ( nbumod == kmi .and. lbu_enable ) then
-  if ( lbudget_th ) call Budget_store_init( tbudgets(NBUDGET_TH), 'CEDS', pths(:, :, :) * prhodj(:, :, :) )
-  if ( lbudget_rv ) call Budget_store_init( tbudgets(NBUDGET_RV), 'CEDS', prvs(:, :, :) * prhodj(:, :, :) )
-  if ( lbudget_rc ) call Budget_store_init( tbudgets(NBUDGET_RC), 'CEDS', prcs(:, :, :) * prhodj(:, :, :) )
+if ( nbumod == kmi .and. BUCONF%lbu_enable ) then
+  if ( BUCONF%lbudget_th ) call BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'CEDS', pths(:, :, :) * prhodj(:, :, :) )
+  if ( BUCONF%lbudget_rv ) call BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RV), 'CEDS', prvs(:, :, :) * prhodj(:, :, :) )
+  if ( BUCONF%lbudget_rc ) call BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'CEDS', prcs(:, :, :) * prhodj(:, :, :) )
   !Remark: PRIS is not modified but source term kept for better coherence with lima_adjust and lima_notadjust
-  if ( lbudget_ri ) call Budget_store_init( tbudgets(NBUDGET_RI), 'CEDS', pris(:, :, :) * prhodj(:, :, :) )
-  if ( lbudget_sv ) then
+  if ( BUCONF%lbudget_ri ) call BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'CEDS', pris(:, :, :) * prhodj(:, :, :) )
+  if ( BUCONF%lbudget_sv ) then
     if ( nmom_c.ge.2) &
-      call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_lima_nc), 'CEDS', pccs(:, :, :) * prhodj(:, :, :) )
+      call BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_SV1 - 1 + nsv_lima_nc), 'CEDS', pccs(:, :, :) * prhodj(:, :, :) )
     if ( lscav .and. laero_mass ) &
-      call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_lima_scavmass), 'CEDS', pmas(:, :, :) * prhodj(:, :, :) )
+      call BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_SV1 - 1 + nsv_lima_scavmass), 'CEDS', pmas(:, :, :) * prhodj(:, :, :) )
     if ( nmom_c.ge.1 ) then
       do jl = 1, nmod_ccn
         idx = NBUDGET_SV1 - 1 + nsv_lima_ccn_free - 1 + jl
-        call Budget_store_init( tbudgets(idx), 'CEDS', pnfs(:, :, :, jl) * prhodj(:, :, :) )
+        call BUDGET_STORE_INIT_PHY(D, TBUDGETS(idx), 'CEDS', pnfs(:, :, :, jl) * prhodj(:, :, :) )
         idx = NBUDGET_SV1 - 1 + nsv_lima_ccn_acti - 1 + jl
-        call Budget_store_init( tbudgets(idx), 'CEDS', pnas(:, :, :, jl) * prhodj(:, :, :) )
+        call BUDGET_STORE_INIT_PHY(D, TBUDGETS(idx), 'CEDS', pnas(:, :, :, jl) * prhodj(:, :, :) )
       end do
     end if
 !     if ( nmom_i.ge.2 ) then
-!       call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_lima_ni), 'CEDS', pcis(:, :, :) * prhodj(:, :, :) )
+!       call BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_SV1 - 1 + nsv_lima_ni), 'CEDS', pcis(:, :, :) * prhodj(:, :, :) )
 !       do jl = 1, nmod_ifn
 !         idx = NBUDGET_SV1 - 1 + nsv_lima_ifn_free - 1 + jl
-!         call Budget_store_init( tbudgets(idx), 'CEDS', pifs(:, :, :, jl) * prhodj(:, :, :) )
+!         call BUDGET_STORE_INIT_PHY(D, TBUDGETS(idx), 'CEDS', pifs(:, :, :, jl) * prhodj(:, :, :) )
 !         idx = NBUDGET_SV1 - 1 + nsv_lima_ifn_nucl - 1 + jl
-!         call Budget_store_init( tbudgets(idx), 'CEDS', pins(:, :, :, jl) * prhodj(:, :, :) )
+!         call BUDGET_STORE_INIT_PHY(D, TBUDGETS(idx), 'CEDS', pins(:, :, :, jl) * prhodj(:, :, :) )
 !       end do
 !       do jl = 1, nmod_imm
 !         idx = NBUDGET_SV1 - 1 + nsv_lima_imm_nucl - 1 + jl
-!         call Budget_store_init( tbudgets(idx), 'CEDS', pnis(:, :, :, jl) * prhodj(:, :, :) )
+!         call BUDGET_STORE_INIT_PHY(D, TBUDGETS(idx), 'CEDS', pnis(:, :, :, jl) * prhodj(:, :, :) )
 !       end do
 !     end if
   end if
@@ -469,7 +473,7 @@ END WHERE
 !
 !*       2.2    estimate the Exner function at t+1
 !
-ZEXNS(:,:,:) = ( PPABSTT(:,:,:) / XP00 ) ** (XRD/XCPD)  
+ZEXNS(:,:,:) = ( PPABSTT(:,:,:) / CST%XP00 ) ** (CST%XRD/CST%XCPD)  
 !
 !    beginning of the iterative loop
 !
@@ -482,15 +486,15 @@ DO JITER =1,ITERMAX
 !
 !*       2.4    compute the specific heat for moist air (Cph) at t+1
 !
-   ZCPH(:,:,:) = XCPD + XCPV  *ZDT*   PRVS(:,:,:)                             &
-                      + XCL   *ZDT* ( PRCS(:,:,:) + PRRS(:,:,:) )             &
-                      + XCI   *ZDT* ( PRIS(:,:,:) + PRSS(:,:,:) + PRGS(:,:,:) )
+   ZCPH(:,:,:) = CST%XCPD + CST%XCPV  *ZDT*   PRVS(:,:,:)                             &
+                      + CST%XCL *ZDT* ( PRCS(:,:,:) + PRRS(:,:,:) )             &
+                      + CST%XCI *ZDT* ( PRIS(:,:,:) + PRSS(:,:,:) + PRGS(:,:,:) + PRHS(:,:,:) )
 !
 !*       2.5    compute the latent heat of vaporization Lv(T*) at t+1
 !               and of sublimation Ls(T*) at t+1
 !
-   ZLV(:,:,:) = XLVTT + ( XCPV - XCL ) * ( ZT(:,:,:) -XTT )
-   ZLS(:,:,:) = XLSTT + ( XCPV - XCI ) * ( ZT(:,:,:) -XTT )
+   ZLV(:,:,:) = CST%XLVTT + ( CST%XCPV - CST%XCL ) * ( ZT(:,:,:) -CST%XTT )
+   ZLS(:,:,:) = CST%XLSTT + ( CST%XCPV - CST%XCI ) * ( ZT(:,:,:) -CST%XTT )
 !
 !
 !-------------------------------------------------------------------------------
@@ -533,7 +537,7 @@ DO JITER =1,ITERMAX
    IF (OSUBG_COND .AND. NMOM_C.GE.2 .AND. LACTI) THEN
       PSRCS=Z_SRCS
       ZW_MF=0.
-      CALL LIMA_CCN_ACTIVATION (TPFILE,                          &
+      CALL LIMA_CCN_ACTIVATION (CST,                          &
            PRHODREF, PEXNREF, PPABST, ZT2, PDTHRAD, PW_NU+ZW_MF, &
            PTHT, ZRV2, ZRC2, PCCT, PRRT, PNFT, PNAT,             &
            PCLDFR                                                )      
@@ -564,7 +568,7 @@ ELSE
                ZVEC1(JI,JJ,JK) = MAX( 1.0001, MIN( FLOAT(NAHEN)-0.0001, XAHENINTP1 * ZT(JI,JJ,JK) + XAHENINTP2 ) )
                IVEC1(JI,JJ,JK) = INT( ZVEC1(JI,JJ,JK) )
                ZVEC1(JI,JJ,JK) = ZVEC1(JI,JJ,JK) - FLOAT( IVEC1(JI,JJ,JK) )
-               ZW(JI,JJ,JK)=EXP( XALPW - XBETAW/ZT(JI,JJ,JK) - XGAMW*ALOG(ZT(JI,JJ,JK) ) ) ! es_w
+               ZW(JI,JJ,JK)=EXP( CST%XALPW - CST%XBETAW/ZT(JI,JJ,JK) - CST%XGAMW*ALOG(ZT(JI,JJ,JK) ) ) ! es_w
                ZW(JI,JJ,JK)=ZEPS*ZW(JI,JJ,JK) / ( PPABST(JI,JJ,JK)-ZW(JI,JJ,JK) ) 
                ZS(JI,JJ,JK) = PRVS(JI,JJ,JK)*PTSTEP / ZW(JI,JJ,JK) - 1.
                ZW(JI,JJ,JK) = PCCS(JI,JJ,JK)*PTSTEP/(XLBC*PCCS(JI,JJ,JK)/PRCS(JI,JJ,JK))**XLBEXC
@@ -681,20 +685,20 @@ ELSE
    WHERE(PICEFR(:,:,:)<1.E-10 .AND. PRIT(:,:,:)>XRTMIN(4) .AND. PCIT(:,:,:)>XCTMIN(4)) PICEFR(:,:,:)=1.
 END IF
 !
-IF ( tpfile%lopened ) THEN
-   TZFIELD = TFIELDMETADATA(   &
-     CMNHNAME   = 'NEB',       &
-     CSTDNAME   = '',          &
-     CLONGNAME  = 'NEB',       &
-     CUNITS     = '1',         &
-     CDIR       = 'XY',        &
-     CCOMMENT   = 'X_Y_Z_NEB', &
-     NGRID      = 1,           &
-     NTYPE      = TYPEREAL,    &
-     NDIMS      = 3,           &
-     LTIMEDEP   = .TRUE.       )
-   CALL IO_Field_write(TPFILE,TZFIELD,PCLDFR)
-END IF
+!!$IF ( tpfile%lopened ) THEN
+!!$   TZFIELD = TFIELDMETADATA(   &
+!!$     CMNHNAME   = 'NEB',       &
+!!$     CSTDNAME   = '',          &
+!!$     CLONGNAME  = 'NEB',       &
+!!$     CUNITS     = '1',         &
+!!$     CDIR       = 'XY',        &
+!!$     CCOMMENT   = 'X_Y_Z_NEB', &
+!!$     NGRID      = 1,           &
+!!$     NTYPE      = TYPEREAL,    &
+!!$     NDIMS      = 3,           &
+!!$     LTIMEDEP   = .TRUE.       )
+!!$   CALL IO_Field_write(TPFILE,TZFIELD,PCLDFR)
+!!$END IF
 !
 !
 !*       6.  SAVE CHANGES IN PRS AND PSVS
@@ -707,6 +711,7 @@ IF ( KRR .GE. 3 ) PRS(:,:,:,3) = PRRS(:,:,:)
 IF ( KRR .GE. 4 ) PRS(:,:,:,4) = PRIS(:,:,:)
 IF ( KRR .GE. 5 ) PRS(:,:,:,5) = PRSS(:,:,:)
 IF ( KRR .GE. 6 ) PRS(:,:,:,6) = PRGS(:,:,:)
+IF ( KRR .GE. 7 ) PRS(:,:,:,7) = PRHS(:,:,:)
 !
 ! Prepare 3D number concentrations
 !
@@ -731,59 +736,59 @@ END IF
 !
 ! write SSI in LFI
 !
-IF ( tpfile%lopened ) THEN
-   ZT(:,:,:) = ( PTHS(:,:,:) * ZDT ) * ZEXNS(:,:,:)
-   ZW(:,:,:) = EXP( XALPI - XBETAI/ZT(:,:,:) - XGAMI*ALOG(ZT(:,:,:) ) )
-   ZW1(:,:,:)= PPABSTT(:,:,:)
-   ZW(:,:,:) = PRVT(:,:,:)*( ZW1(:,:,:)-ZW(:,:,:) ) / ( (XMV/XMD) * ZW(:,:,:) ) - 1.0
-   
-   TZFIELD = TFIELDMETADATA(   &
-     CMNHNAME   = 'SSI',       &
-     CSTDNAME   = '',          &
-     CLONGNAME  = 'SSI',       &
-     CUNITS     = '',          &
-     CDIR       = 'XY',        &
-     CCOMMENT   = 'X_Y_Z_SSI', &
-     NGRID      = 1,           &
-     NTYPE      = TYPEREAL,    &
-     NDIMS      = 3,           &
-     LTIMEDEP   = .TRUE.       )
-   CALL IO_Field_write(TPFILE,TZFIELD,ZW)
-END IF
+!!$IF ( tpfile%lopened ) THEN
+!!$   ZT(:,:,:) = ( PTHS(:,:,:) * ZDT ) * ZEXNS(:,:,:)
+!!$   ZW(:,:,:) = EXP( XALPI - XBETAI/ZT(:,:,:) - XGAMI*ALOG(ZT(:,:,:) ) )
+!!$   ZW1(:,:,:)= PPABSTT(:,:,:)
+!!$   ZW(:,:,:) = PRVT(:,:,:)*( ZW1(:,:,:)-ZW(:,:,:) ) / ( (XMV/XMD) * ZW(:,:,:) ) - 1.0
+!!$   
+!!$   TZFIELD = TFIELDMETADATA(   &
+!!$     CMNHNAME   = 'SSI',       &
+!!$     CSTDNAME   = '',          &
+!!$     CLONGNAME  = 'SSI',       &
+!!$     CUNITS     = '',          &
+!!$     CDIR       = 'XY',        &
+!!$     CCOMMENT   = 'X_Y_Z_SSI', &
+!!$     NGRID      = 1,           &
+!!$     NTYPE      = TYPEREAL,    &
+!!$     NDIMS      = 3,           &
+!!$     LTIMEDEP   = .TRUE.       )
+!!$   CALL IO_Field_write(TPFILE,TZFIELD,ZW)
+!!$END IF
 !
 !
 !*       7.  STORE THE BUDGET TERMS
 !            ----------------------
 !
-if ( nbumod == kmi .and. lbu_enable ) then
-  if ( lbudget_th ) call Budget_store_end( tbudgets(NBUDGET_TH), 'CEDS', pths(:, :, :) * prhodj(:, :, :) )
-  if ( lbudget_rv ) call Budget_store_end( tbudgets(NBUDGET_RV), 'CEDS', prvs(:, :, :) * prhodj(:, :, :) )
-  if ( lbudget_rc ) call Budget_store_end( tbudgets(NBUDGET_RC), 'CEDS', prcs(:, :, :) * prhodj(:, :, :) )
-  if ( lbudget_ri ) call Budget_store_end( tbudgets(NBUDGET_RI), 'CEDS', pris(:, :, :) * prhodj(:, :, :) )
-  if ( lbudget_sv ) then
+if ( nbumod == kmi .and. BUCONF%lbu_enable ) then
+  if ( BUCONF%lbudget_th ) call BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'CEDS', pths(:, :, :) * prhodj(:, :, :) )
+  if ( BUCONF%lbudget_rv ) call BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RV), 'CEDS', prvs(:, :, :) * prhodj(:, :, :) )
+  if ( BUCONF%lbudget_rc ) call BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'CEDS', prcs(:, :, :) * prhodj(:, :, :) )
+  if ( BUCONF%lbudget_ri ) call BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'CEDS', pris(:, :, :) * prhodj(:, :, :) )
+  if ( BUCONF%lbudget_sv ) then
     if ( nmom_c.ge.2) &
-      call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_lima_nc), 'CEDS', pccs(:, :, :) * prhodj(:, :, :) )
+      call BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_SV1 - 1 + nsv_lima_nc), 'CEDS', pccs(:, :, :) * prhodj(:, :, :) )
     if ( lscav .and. laero_mass ) &
-      call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_lima_scavmass), 'CEDS', pmas(:, :, :) * prhodj(:, :, :) )
+      call BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_SV1 - 1 + nsv_lima_scavmass), 'CEDS', pmas(:, :, :) * prhodj(:, :, :) )
     if ( nmom_c.ge.1 ) then
       do jl = 1, nmod_ccn
         idx = NBUDGET_SV1 - 1 + nsv_lima_ccn_free - 1 + jl
-        call Budget_store_end( tbudgets(idx), 'CEDS', pnfs(:, :, :, jl) * prhodj(:, :, :) )
+        call BUDGET_STORE_END_PHY(D, TBUDGETS(idx), 'CEDS', pnfs(:, :, :, jl) * prhodj(:, :, :) )
         idx = NBUDGET_SV1 - 1 + nsv_lima_ccn_acti - 1 + jl
-        call Budget_store_end( tbudgets(idx), 'CEDS', pnas(:, :, :, jl) * prhodj(:, :, :) )
+        call BUDGET_STORE_END_PHY(D, TBUDGETS(idx), 'CEDS', pnas(:, :, :, jl) * prhodj(:, :, :) )
       end do
     end if
 !     if ( nmom_i.ge.2 ) then
-!       call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_lima_ni), 'CEDS', pcis(:, :, :) * prhodj(:, :, :) )
+!       call BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_SV1 - 1 + nsv_lima_ni), 'CEDS', pcis(:, :, :) * prhodj(:, :, :) )
 !       do jl = 1, nmod_ifn
 !         idx = NBUDGET_SV1 - 1 + nsv_lima_ifn_free - 1 + jl
-!         call Budget_store_end( tbudgets(idx), 'CEDS', pifs(:, :, :, jl) * prhodj(:, :, :) )
+!         call BUDGET_STORE_END_PHY(D, TBUDGETS(idx), 'CEDS', pifs(:, :, :, jl) * prhodj(:, :, :) )
 !         idx = NBUDGET_SV1 - 1 + nsv_lima_ifn_nucl - 1 + jl
-!         call Budget_store_end( tbudgets(idx), 'CEDS', pins(:, :, :, jl) * prhodj(:, :, :) )
+!         call BUDGET_STORE_END_PHY(D, TBUDGETS(idx), 'CEDS', pins(:, :, :, jl) * prhodj(:, :, :) )
 !       end do
 !       do jl = 1, nmod_imm
 !         idx = NBUDGET_SV1 - 1 + nsv_lima_imm_nucl - 1 + jl
-!         call Budget_store_init( tbudgets(idx), 'CEDS', pnis(:, :, :, jl) * prhodj(:, :, :) )
+!         call BUDGET_STORE_INIT_PHY(D, TBUDGETS(idx), 'CEDS', pnis(:, :, :, jl) * prhodj(:, :, :) )
 !       end do
 !     end if
   end if
diff --git a/src/common/micro/lima_ccn_activation.F90 b/src/common/micro/lima_ccn_activation.F90
index a391aad68227b1e4a3e5235ab206235cf5c4a932..f94b3ec75a89781a09f9dbfaa096da8b6b373807 100644
--- a/src/common/micro/lima_ccn_activation.F90
+++ b/src/common/micro/lima_ccn_activation.F90
@@ -102,7 +102,7 @@ END MODULE MODI_LIMA_CCN_ACTIVATION
 USE MODD_CST,            ONLY: CST_t
 !use modd_field,           only: TFIELDDATA, TYPEREAL
 !USE MODD_IO,              ONLY: TFILEDATA
-USE MODD_LUNIT_n,         ONLY: TLUOUT
+!USE MODD_LUNIT_n,         ONLY: TLUOUT
 USE MODD_PARAMETERS,      ONLY: JPHEXT, JPVEXT
 USE MODD_PARAM_LIMA,      ONLY: LADJ, LACTIT, NMOD_CCN, XCTMIN, XKHEN_MULTI, XRTMIN, XLIMIT_FACTOR
 USE MODD_PARAM_LIMA_WARM, ONLY: XWMIN, NAHEN, NHYP, XAHENINTP1, XAHENINTP2, XCSTDCRIT, XHYPF12,      &
@@ -110,7 +110,7 @@ USE MODD_PARAM_LIMA_WARM, ONLY: XWMIN, NAHEN, NHYP, XAHENINTP1, XAHENINTP2, XCST
                                 XLBC, XLBEXC
 USE MODD_TURB_n,          ONLY: LSUBG_COND
 
-USE MODE_IO_FIELD_WRITE,  only: IO_Field_write
+!USE MODE_IO_FIELD_WRITE,  only: IO_Field_write
 use mode_tools,           only: Countjv
 
 USE MODI_GAMMA
@@ -183,11 +183,11 @@ REAL    :: ZS1, ZS2, ZXACC
 INTEGER :: JMOD
 INTEGER :: IIB, IIE, IJB, IJE, IKB, IKE        ! Physical domain
 !
-INTEGER                  :: ILUOUT     ! Logical unit of output listing 
-TYPE(TFIELDMETADATA) :: TZFIELD
+!!$INTEGER                  :: ILUOUT     ! Logical unit of output listing 
+!!$TYPE(TFIELDMETADATA) :: TZFIELD
 !-------------------------------------------------------------------------------
 !
-ILUOUT = TLUOUT%NLU
+!ILUOUT = TLUOUT%NLU
 !
 !*       1.     PREPARE COMPUTATIONS - PACK
 !   	        ---------------------------
diff --git a/src/common/micro/nrcolss.f90 b/src/common/micro/nrcolss.f90
new file mode 100644
index 0000000000000000000000000000000000000000..d21be2bd3b12000a5c5871c47e9ba5faa22d84f5
--- /dev/null
+++ b/src/common/micro/nrcolss.f90
@@ -0,0 +1,316 @@
+!MNH_LIC Copyright 1994-2014 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.
+!-----------------------------------------------------------------
+!--------------- special set of characters for RCS information
+!-----------------------------------------------------------------
+! $Source$ $Revision$
+! MASDEV4_7 init 2006/11/23 10:39:56
+!-----------------------------------------------------------------
+!     ###################
+      MODULE MODI_NRCOLSS
+!     ###################
+!
+INTERFACE
+!
+      SUBROUTINE NRCOLSS( KND, PALPHAS, PNUS, PALPHAR, PNUR,                 &
+                         PESR, PFALLS, PEXFALLS, PFALLEXPS, PFALLR, PEXFALLR,&
+                         PLBDASMAX, PLBDARMAX, PLBDASMIN, PLBDARMIN,         &
+                         PDINFTY, PNRCOLSS, PAG, PBS, PAS                    )
+!
+INTEGER, INTENT(IN) :: KND    ! Number of discrete size intervals in DS and DR  
+!
+REAL, INTENT(IN) :: PALPHAS   ! First shape parameter of the aggregates 
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PNUS      ! Second shape parameter of the aggregates
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PALPHAR   ! First shape parameter of the rain  
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PNUR      ! Second shape parameter of the rain 
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PESR      ! Efficiency of aggregates collecting rain 
+REAL, INTENT(IN) :: PFALLS    ! Fall speed constant of aggregates
+REAL, INTENT(IN) :: PEXFALLS  ! Fall speed exponent of aggregates
+REAL, INTENT(IN) :: PFALLEXPS ! Fall speed exponential of aggregates (Thompson 2008)
+REAL, INTENT(IN) :: PFALLR    ! Fall speed constant of rain 
+REAL, INTENT(IN) :: PEXFALLR  ! Fall speed exponent of rain 
+REAL, INTENT(IN) :: PLBDASMAX ! Maximun slope of size distribution of aggregates
+REAL, INTENT(IN) :: PLBDARMAX ! Maximun slope of size distribution of rain 
+REAL, INTENT(IN) :: PLBDASMIN ! Minimun slope of size distribution of aggregates
+REAL, INTENT(IN) :: PLBDARMIN ! Minimun slope of size distribution of rain 
+REAL, INTENT(IN) :: PDINFTY   ! Factor to define the largest diameter up to
+                              ! which the diameter integration is performed
+REAL, INTENT(IN) :: PAG, PBS, PAS
+!
+REAL, DIMENSION(:,:), INTENT(INOUT) :: PNRCOLSS! Scaled fall speed difference in
+                                               ! the mass collection kernel as a
+                                               ! function of LAMBDAX and LAMBDAZ
+!
+      END SUBROUTINE NRCOLSS
+!
+END INTERFACE
+!
+      END MODULE MODI_NRCOLSS
+!     ########################################################################
+      SUBROUTINE NRCOLSS( KND, PALPHAS, PNUS, PALPHAR, PNUR,                 &
+                         PESR, PFALLS, PEXFALLS, PFALLEXPS, PFALLR, PEXFALLR,&
+                         PLBDASMAX, PLBDARMAX, PLBDASMIN, PLBDARMIN,         &
+                         PDINFTY, PNRCOLSS, PAG, PBS, PAS                    )
+!     ########################################################################
+!
+!
+!
+!!****  * -  Build up a look-up table containing the scaled fall speed
+!!           difference between size distributed particles of aggregates and Z
+!!
+!!
+!!    PURPOSE
+!!    -------
+!!      The purpose of this routine is to integrate numerically the scaled fall
+!!      speed difference between aggregates and rain  for use in collection
+!!      kernels FOR CONCENTRATIONS. A first integral of the form
+!!
+!!       infty  Dz_max
+!!           / /
+!!           |{|                                                 }
+!!           |{| E_xz (Dx+Dz)^2 |cxDx^dx-czDz^dz| n(Dz) dDz} n(Dx) dDx
+!!           |{|                                                 }
+!!           / /
+!!          0 Dz_min
+!!
+!!      is evaluated and normalised by a second integral of the form
+!!
+!!              infty
+!!             / /
+!!             |{|                          }
+!!             |{| (Dx+Dz)^2 n(Dz) dDz} n(Dx) dDx
+!!             |{|                          }
+!!             / /
+!!              0
+!!
+!!      The result is stored in a two-dimensional array.
+!! 
+!!**  METHOD
+!!    ------
+!!      The free parameters of the size distribution function of aggregates and Z
+!!      (slope parameter LAMBDA) are discretized with a geometrical rate in a
+!!      specific range
+!!            LAMBDA = exp( (Log(LAMBDA_max) - Log(LAMBDA_min))/N_interval )
+!!      The two above integrals are performed using the trapezoidal scheme.
+!!
+!!    EXTERNAL
+!!    --------
+!!      MODI_GENERAL_GAMMA: Generalized gamma distribution law 
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      MODD_CST           : XPI,XRHOLW
+!!      MODD_RAIN_ICE_DESCR: XAS,XAS,XBS
+!!
+!!    REFERENCE
+!!    ---------
+!!      B.S. Ferrier , 1994 : A Double-Moment Multiple-Phase Four-Class
+!!                            Bulk Ice Scheme,JAS,51,249-280.
+!!
+!!    AUTHOR
+!!    ------
+!!      J.-P. Pinty     * Laboratoire d'Aerologie *
+!!
+!!    MODIFICATIONS 
+!!    -------------
+!!      Original    8/11/95
+!!      M. Taufour    03/2022  Adapted from rrcolss for concentration
+!!      J. Wurtz      03/2022  New snow characteristics
+!!
+!-------------------------------------------------------------------------------
+!
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+!
+USE MODI_GENERAL_GAMMA
+!
+USE MODD_CST
+USE MODD_RAIN_ICE_DESCR
+!
+IMPLICIT NONE
+!
+!
+!*       0.1   Declarations of dummy arguments 
+!              ------------------------------- 
+!
+!
+INTEGER, INTENT(IN) :: KND    ! Number of discrete size intervals in DS and DR  
+!
+REAL, INTENT(IN) :: PALPHAS   ! First shape parameter of the aggregates 
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PNUS      ! Second shape parameter of the aggregates
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PALPHAR   ! First shape parameter of the rain  
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PNUR      ! Second shape parameter of the rain 
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PESR      ! Efficiency of aggregates collecting rain 
+REAL, INTENT(IN) :: PFALLS    ! Fall speed constant of aggregates
+REAL, INTENT(IN) :: PEXFALLS  ! Fall speed exponent of aggregates
+REAL, INTENT(IN) :: PFALLEXPS ! Fall speed exponential of aggregates (Thompson 2008)
+REAL, INTENT(IN) :: PFALLR    ! Fall speed constant of rain 
+REAL, INTENT(IN) :: PEXFALLR  ! Fall speed exponent of rain 
+REAL, INTENT(IN) :: PLBDASMAX ! Maximun slope of size distribution of aggregates
+REAL, INTENT(IN) :: PLBDARMAX ! Maximun slope of size distribution of rain 
+REAL, INTENT(IN) :: PLBDASMIN ! Minimun slope of size distribution of aggregates
+REAL, INTENT(IN) :: PLBDARMIN ! Minimun slope of size distribution of rain 
+REAL, INTENT(IN) :: PDINFTY   ! Factor to define the largest diameter up to
+                              ! which the diameter integration is performed
+REAL, INTENT(IN) :: PAG, PBS, PAS
+!
+REAL, DIMENSION(:,:), INTENT(INOUT) :: PNRCOLSS! Scaled fall speed difference in
+                                               ! the mass collection kernel as a
+                                               ! function of LAMBDAX and LAMBDAZ
+!
+!
+!*       0.2   Declarations of local variables
+!              -------------------------------
+!
+!
+INTEGER :: JLBDAS  ! Slope index of the size distribution of aggregates
+INTEGER :: JLBDAR  ! Slope index of the size distribution of rain 
+INTEGER :: JDS     ! Diameter index of a particle of aggregates
+INTEGER :: JDR     ! Diameter index of a particle of rain 
+!
+INTEGER :: INR     ! Number of diameter step for the partial integration
+!
+!
+REAL :: ZLBDAS  ! Current slope parameter LAMBDA of aggregates
+REAL :: ZLBDAR  ! Current slope parameter LAMBDA of rain 
+REAL :: ZDLBDAS ! Growth rate of the slope parameter LAMBDA of aggregates
+REAL :: ZDLBDAR ! Growth rate of the slope parameter LAMBDA of rain 
+REAL :: ZDDS    ! Integration step of the diameter of aggregates
+REAL :: ZDDSCALR! Integration step of the diameter of rain  (scaling integral)
+REAL :: ZDDCOLLR! Integration step of the diameter of rain  (fallspe integral)
+REAL :: ZDS     ! Current diameter of the particle aggregates
+REAL :: ZDR     ! Current diameter of the rain 
+REAL :: ZDRMAX  ! Maximal diameter of the raindrops where the integration ends 
+REAL :: ZCOLLR  ! Single integral of the mass weighted fall speed difference 
+                ! over the spectrum of rain 
+REAL :: ZCOLLDRMAX ! Maximum ending point for the partial integral
+REAL :: ZCOLLSR ! Double integral of the mass weighted fall speed difference
+                ! over the spectra of aggregates and rain 
+REAL :: ZSCALR  ! Single integral of the scaling factor over 
+                ! the spectrum of rain 
+REAL :: ZSCALSR ! Double integral of the scaling factor over
+                ! the spectra of aggregates and rain 
+REAL :: ZFUNC   ! Ancillary function
+REAL :: ZCST1
+!
+!
+!-------------------------------------------------------------------------------
+!
+!
+!*       1       COMPUTE THE SCALED VELOCITY DIFFERENCE IN THE MASS
+!*                               COLLECTION KERNEL,
+!                -------------------------------------------------
+!
+!
+!
+!*       1.0     Initialization
+!
+PNRCOLSS(:,:) = 0.0
+ZCST1 = (3.0/XPI)/XRHOLW
+!
+!*       1.1     Compute the growth rate of the slope factors LAMBDA
+!
+ZDLBDAS = EXP( LOG(PLBDASMAX/PLBDASMIN)/REAL(SIZE(PNRCOLSS(:,:),1)-1) )
+ZDLBDAR = EXP( LOG(PLBDARMAX/PLBDARMIN)/REAL(SIZE(PNRCOLSS(:,:),2)-1) )
+!
+!*       1.2     Scan the slope factors LAMBDAX and LAMBDAZ
+!
+DO JLBDAS = 1,SIZE(PNRCOLSS(:,:),1)
+  ZLBDAS = PLBDASMIN * ZDLBDAS ** (JLBDAS-1) 
+!
+!*       1.3     Compute the diameter steps
+!
+  ZDDS   = PDINFTY / (REAL(KND) * ZLBDAS)
+  DO JLBDAR = 1,SIZE(PNRCOLSS(:,:),2)
+    ZLBDAR = PLBDARMIN * ZDLBDAR ** (JLBDAR-1)
+!
+!*       1.4     Initialize the collection integrals
+!
+    ZSCALSR = 0.0
+    ZCOLLSR = 0.0
+!
+!*       1.5     Compute the diameter steps
+!
+    ZDDSCALR = PDINFTY / (REAL(KND) * ZLBDAR)
+!
+!*       1.6     Scan over the diameters DS and DR
+!
+    DO JDS = 1,KND-1
+      ZDS = ZDDS * REAL(JDS)
+      ZSCALR = 0.0
+      ZCOLLR = 0.0
+      DO JDR = 1,KND-1
+        ZDR = ZDDSCALR * REAL(JDR)
+!
+!*       1.7     Compute the normalization factor by integration over the
+!                dimensional spectrum of rain   
+!
+        ZSCALR = ZSCALR + (ZDS+ZDR)**2 * GENERAL_GAMMA(PALPHAR,PNUR,ZLBDAR,ZDR)
+      END DO
+!
+!*       1.8     Compute the scaled fall speed difference by partial
+!                integration over the dimensional spectrum of rain   
+!
+      ZFUNC = PAG - PAS*ZDS**(PBS-3.0) ! approximate limit is Ds=240 microns
+      IF( ZFUNC>0.0 ) THEN
+        ZDRMAX = ZDS*( ZCST1*ZFUNC )**0.3333333
+        ELSE
+        ZDRMAX = PDINFTY / ZLBDAR
+      END IF
+      IF( ZDS>1.0E-4 ) THEN            ! allow computation if Ds>100 microns
+            ! corresponding to a maximal density of the aggregates of XRHOLW
+        IF( ZDRMAX >= 0.5*ZDDSCALR ) THEN
+          INR = CEILING( ZDRMAX/ZDDSCALR )
+          ZDDCOLLR = ZDRMAX / REAL(INR)
+          IF (INR>=KND ) THEN
+            INR = KND
+            ZDDCOLLR = ZDDSCALR
+          END IF
+          DO JDR = 1,INR-1
+            ZDR = ZDDCOLLR * REAL(JDR)
+            ZCOLLR = ZCOLLR + (ZDS+ZDR)**2                                     &
+                       * PESR * ABS(PFALLS*ZDS**PEXFALLS * EXP(-(PFALLEXPS*ZDS)**PALPHAS)-PFALLR*ZDR**PEXFALLR) &
+                                      * GENERAL_GAMMA(PALPHAR,PNUR,ZLBDAR,ZDR)
+          END DO
+          ZCOLLDRMAX = (ZDS+ZDRMAX)**2                                         &
+                    * PESR * ABS(PFALLS*ZDS**PEXFALLS* EXP(-(PFALLEXPS*ZDS)**PALPHAS)-PFALLR*ZDRMAX**PEXFALLR) &
+                                   * GENERAL_GAMMA(PALPHAR,PNUR,ZLBDAR,ZDRMAX)
+          ZCOLLR = (ZCOLLR + 0.5*ZCOLLDRMAX)*(ZDDCOLLR/ZDDSCALR)
+!
+!*       1.9     Compute the normalization factor by integration over the
+!                dimensional spectrum of aggregates
+!
+          ZFUNC   = GENERAL_GAMMA(PALPHAS,PNUS,ZLBDAS,ZDS)
+          ZSCALSR = ZSCALSR + ZSCALR * ZFUNC
+!
+!*       1.10    Compute the scaled fall speed difference by integration over
+!                the dimensional spectrum of aggregates
+!
+          ZCOLLSR = ZCOLLSR + ZCOLLR * ZFUNC
+        END IF
+!
+! Otherwise ZDRMAX = 0.0 so the density of the graupel cannot be reached 
+!                    and so PRRCOLSS(JLBDAS,JLBDAR) = 0.0        !
+!
+      END IF
+    END DO
+!
+!*       1.11    Scale the fall speed difference
+!
+    IF( ZSCALSR>0.0 ) PNRCOLSS(JLBDAS,JLBDAR) = ZCOLLSR / ZSCALSR
+  END DO
+END DO
+!
+END SUBROUTINE NRCOLSS
diff --git a/src/common/micro/nscolrg.f90 b/src/common/micro/nscolrg.f90
new file mode 100644
index 0000000000000000000000000000000000000000..790a01f76a32fef7603ff99d7ad1339a657fbb80
--- /dev/null
+++ b/src/common/micro/nscolrg.f90
@@ -0,0 +1,317 @@
+!MNH_LIC Copyright 1994-2014 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.
+!-----------------------------------------------------------------
+!--------------- special set of characters for RCS information
+!-----------------------------------------------------------------
+! $Source$ $Revision$
+! MASDEV4_7 init 2006/11/23 10:43:02
+!-----------------------------------------------------------------
+!     ###################
+      MODULE MODI_NSCOLRG
+!     ###################
+!
+INTERFACE
+!
+      SUBROUTINE NSCOLRG( KND, PALPHAS, PZNUS, PALPHAR, PNUR,                &
+                         PESR, PFALLS, PEXFALLS, PFALLEXPS, PFALLR, PEXFALLR,&
+                         PLBDASMAX, PLBDARMAX, PLBDASMIN, PLBDARMIN,         &
+                         PDINFTY, PNSCOLRG,PAG, PBS, PAS                     )
+!
+INTEGER, INTENT(IN) :: KND    ! Number of discrete size intervals in DS and DR  
+!
+REAL, INTENT(IN) :: PALPHAS   ! First shape parameter of the aggregates 
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PZNUS     ! Second shape parameter of the aggregates
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PALPHAR   ! First shape parameter of the rain  
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PNUR      ! Second shape parameter of the rain 
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PESR      ! Efficiency of the aggregates collecting rain 
+REAL, INTENT(IN) :: PFALLS    ! Fall speed constant of the aggregates
+REAL, INTENT(IN) :: PEXFALLS  ! Fall speed exponent of the aggregates
+REAL, INTENT(IN) :: PFALLEXPS  ! Fall speed exponential constant of the aggregates
+REAL, INTENT(IN) :: PFALLR    ! Fall speed constant of rain 
+REAL, INTENT(IN) :: PEXFALLR  ! Fall speed exponent of rain 
+REAL, INTENT(IN) :: PLBDASMAX ! Maximun slope of size distribution of the aggregates
+REAL, INTENT(IN) :: PLBDARMAX ! Maximun slope of size distribution of rain 
+REAL, INTENT(IN) :: PLBDASMIN ! Minimun slope of size distribution of the aggregates
+REAL, INTENT(IN) :: PLBDARMIN ! Minimun slope of size distribution of rain 
+REAL, INTENT(IN) :: PDINFTY   ! Factor to define the largest diameter up to
+                              ! which the diameter integration is performed
+REAL, INTENT(IN) :: PAG, PBS, PAS
+!
+REAL, DIMENSION(:,:), INTENT(INOUT) :: PNSCOLRG! Scaled fall speed difference in
+                                               ! the mass collection kernel as a
+                                               ! function of LAMBDAX and LAMBDAZ
+!
+      END SUBROUTINE NSCOLRG
+!
+END INTERFACE
+!
+      END MODULE MODI_NSCOLRG
+!     ########################################################################
+      SUBROUTINE NSCOLRG( KND, PALPHAS, PZNUS, PALPHAR, PNUR,                &
+                         PESR, PFALLS, PEXFALLS, PFALLEXPS, PFALLR, PEXFALLR,&
+                         PLBDASMAX, PLBDARMAX, PLBDASMIN, PLBDARMIN,         &
+                         PDINFTY, PNSCOLRG,PAG, PBS, PAS                     )
+!     ########################################################################
+!
+!
+!
+!!****  * -  Build up a look-up table containing the scaled fall speed
+!!           difference between size distributed particles of the aggregates and Z
+!!
+!!
+!!    PURPOSE
+!!    -------
+!!      The purpose of this routine is to integrate numerically the scaled fall
+!!      speed difference between aggregates and rain  for use in collection
+!!      kernels. A first integral of the form
+!!
+!!       infty  Dz_max
+!!           / /
+!!           |{|                                                 }
+!!           |{| E_xz (Dx+Dz)^2 |cxDx^dx-czDz^dz| n(Dz) dDz} n(Dx) dDx
+!!           |{|                                                 }
+!!           / /
+!!          0 Dz_min
+!!
+!!      is evaluated and normalised by a second integral of the form
+!!
+!!              infty
+!!             / /
+!!             |{|                          }
+!!             |{| (Dx+Dz)^2 n(Dz) dDz} n(Dx) dDx
+!!             |{|                          }
+!!             / /
+!!              0
+!!
+!!      The result is stored in a two-dimensional array.
+!! 
+!!**  METHOD
+!!    ------
+!!      The free parameters of the size distribution function of the aggregates
+!!      and Z (slope parameter LAMBDA) are discretized with a geometrical rate 
+!!      in a specific range
+!!            LAMBDA = exp( (Log(LAMBDA_max) - Log(LAMBDA_min))/N_interval )
+!!      The two above integrals are performed using the trapezoidal scheme.
+!!
+!!    EXTERNAL
+!!    --------
+!!      MODI_GENERAL_GAMMA: Generalized gamma distribution law 
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      MODD_CST           : XPI,XRHOLW
+!!      MODD_RAIN_ICE_DESCR: XAS,XAS,XBS
+!!
+!!    REFERENCE
+!!    ---------
+!!      B.S. Ferrier , 1994 : A Double-Moment Multiple-Phase Four-Class
+!!                            Bulk Ice Scheme,JAS,51,249-280.
+!!
+!!    AUTHOR
+!!    ------
+!!      J.-P. Pinty     * Laboratoire d'Aerologie *
+!!
+!!    MODIFICATIONS 
+!!    -------------
+!!      Original    8/11/95
+!!      M. Taufour    03/2022  Adapted from rscolrg for concentration
+!!      J. Wurtz      03/2022  New snow characteristics        
+!!
+!-------------------------------------------------------------------------------
+!
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODI_GENERAL_GAMMA
+!
+USE MODD_CST
+USE MODD_RAIN_ICE_DESCR
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments 
+!              ------------------------------- 
+!
+!
+INTEGER, INTENT(IN) :: KND    ! Number of discrete size intervals in DS and DR  
+!
+REAL, INTENT(IN) :: PALPHAS   ! First shape parameter of the aggregates 
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PZNUS     ! Second shape parameter of the aggregates
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PALPHAR   ! First shape parameter of the rain  
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PNUR      ! Second shape parameter of the rain 
+                              ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PESR      ! Efficiency of the aggregates collecting rain 
+REAL, INTENT(IN) :: PFALLS    ! Fall speed constant of the aggregates
+REAL, INTENT(IN) :: PEXFALLS  ! Fall speed exponent of the aggregates
+REAL, INTENT(IN) :: PFALLEXPS ! Fall speed exponential constant of the aggregates
+REAL, INTENT(IN) :: PFALLR    ! Fall speed constant of rain 
+REAL, INTENT(IN) :: PEXFALLR  ! Fall speed exponent of rain 
+REAL, INTENT(IN) :: PLBDASMAX ! Maximun slope of size distribution of the aggregates
+REAL, INTENT(IN) :: PLBDARMAX ! Maximun slope of size distribution of rain 
+REAL, INTENT(IN) :: PLBDASMIN ! Minimun slope of size distribution of the aggregates
+REAL, INTENT(IN) :: PLBDARMIN ! Minimun slope of size distribution of rain 
+REAL, INTENT(IN) :: PDINFTY   ! Factor to define the largest diameter up to
+                              ! which the diameter integration is performed
+REAL, INTENT(IN) :: PAG, PBS, PAS
+!
+REAL, DIMENSION(:,:), INTENT(INOUT) :: PNSCOLRG! Scaled fall speed difference in
+                                               ! the mass collection kernel as a
+                                               ! function of LAMBDAX and LAMBDAZ
+!
+!
+!*       0.2   Declarations of local variables
+!              -------------------------------
+!
+!
+INTEGER :: JLBDAS  ! Slope index of the size distribution of the aggregates
+INTEGER :: JLBDAR  ! Slope index of the size distribution of rain 
+INTEGER :: JDS     ! Diameter index of a particle of the aggregates
+INTEGER :: JDR     ! Diameter index of a particle of rain 
+!
+INTEGER :: INR     ! Number of diameter step for the partial integration
+!
+REAL :: ZLBDAS  ! Current slope parameter LAMBDA of the aggregates
+REAL :: ZLBDAR  ! Current slope parameter LAMBDA of rain 
+REAL :: ZDLBDAS ! Growth rate of the slope parameter LAMBDA of the aggregates
+REAL :: ZDLBDAR ! Growth rate of the slope parameter LAMBDA of rain 
+REAL :: ZDDS    ! Integration step of the diameter of the aggregates
+REAL :: ZDDSCALR! Integration step of the diameter of rain  (scaling integral)
+REAL :: ZDDCOLLR! Integration step of the diameter of rain  (fallspe integral)
+REAL :: ZDS     ! Current diameter of the particle aggregates
+REAL :: ZDR     ! Current diameter of the raindrops 
+REAL :: ZDRMIN  ! Minimal diameter of the raindrops where the integration starts
+REAL :: ZDRMAX  ! Maximal diameter of the raindrops where the integration ends
+REAL :: ZCOLLR  ! Single integral of the mass weighted fall speed difference 
+                ! over the spectrum of rain 
+REAL :: ZCOLLDRMIN ! Minimum ending point for the partial integral
+REAL :: ZCOLLSR ! Double integral of the mass weighted fall speed difference
+                ! over the spectra of the aggregates and rain 
+REAL :: ZSCALR  ! Single integral of the scaling factor over 
+                ! the spectrum of rain 
+REAL :: ZSCALSR ! Double integral of the scaling factor over
+                ! the spectra of the aggregates and rain 
+REAL :: ZFUNC   ! Ancillary function
+REAL :: ZCST1
+!
+!
+!-------------------------------------------------------------------------------
+!
+!
+!*       1       COMPUTE THE SCALED VELOCITY DIFFERENCE IN THE MASS
+!*                               COLLECTION KERNEL,
+!                -------------------------------------------------
+!
+!
+!*       1.0     Initialization
+!
+PNSCOLRG(:,:) = 0.0
+ZCST1  = (3.0/XPI)/XRHOLW
+!
+!*       1.1     Compute the growth rate of the slope factors LAMBDA
+!
+ZDLBDAR = EXP( LOG(PLBDARMAX/PLBDARMIN)/REAL(SIZE(PNSCOLRG(:,:),1)-1) )
+ZDLBDAS = EXP( LOG(PLBDASMAX/PLBDASMIN)/REAL(SIZE(PNSCOLRG(:,:),2)-1) )
+!
+!*       1.2     Scan the slope factors LAMBDAX and LAMBDAZ
+!
+DO JLBDAR = 1,SIZE(PNSCOLRG(:,:),1)
+  ZLBDAR = PLBDARMIN * ZDLBDAR ** (JLBDAR-1) 
+  ZDRMAX = PDINFTY / ZLBDAR
+!
+!*       1.3     Compute the diameter steps
+!
+  ZDDSCALR = PDINFTY / (REAL(KND) * ZLBDAR)
+  DO JLBDAS = 1,SIZE(PNSCOLRG(:,:),2)
+    ZLBDAS = PLBDASMIN * ZDLBDAS ** (JLBDAS-1)
+!
+!*       1.4     Initialize the collection integrals
+!
+    ZSCALSR = 0.0
+    ZCOLLSR = 0.0
+!
+!*       1.5     Compute the diameter steps
+!
+    ZDDS     = PDINFTY / (REAL(KND) * ZLBDAS)
+!
+!*       1.6     Scan over the diameters DS and DR
+!
+    DO JDS = 1,KND-1
+      ZDS = ZDDS * REAL(JDS)
+      ZSCALR = 0.0
+      ZCOLLR = 0.0
+      DO JDR = 1,KND-1
+        ZDR = ZDDSCALR * REAL(JDR)
+!
+!*       1.7     Compute the normalization factor by integration over the
+!                dimensional spectrum of rain   
+!
+        ZSCALR = ZSCALR + (ZDS+ZDR)**2 * GENERAL_GAMMA(PALPHAR,PNUR,ZLBDAR,ZDR)
+      END DO
+!
+!*       1.8     Compute the scaled fall speed difference by partial
+!                integration over the dimensional spectrum of rain   
+!
+      ZFUNC = PAG - PAS*ZDS**(PBS-3.0) ! approximate limit is Ds=240 microns
+      IF( ZFUNC>0.0 ) THEN
+        ZDRMIN = ZDS*( ZCST1*ZFUNC )**0.3333333
+        ELSE
+        ZDRMIN = 0.0
+      END IF
+      IF( ZDS>1.0E-4 ) THEN            ! allow computation if Ds>100 microns 
+            ! corresponding to a maximal density of the aggregates of XRHOLW
+        IF( (ZDRMAX-ZDRMIN) >= 0.5*ZDDSCALR ) THEN
+          INR = CEILING( (ZDRMAX-ZDRMIN)/ZDDSCALR )
+          ZDDCOLLR = (ZDRMAX-ZDRMIN) / REAL(INR)
+          DO JDR = 1,INR-1
+            ZDR = ZDDCOLLR * REAL(JDR) + ZDRMIN
+            ZCOLLR = ZCOLLR + (ZDS+ZDR)**2                                     &
+                       * GENERAL_GAMMA(PALPHAR,PNUR,ZLBDAR,ZDR)                &
+                         * PESR * ABS(PFALLS*ZDS**PEXFALLS*EXP(-(ZDS*PFALLEXPS)**PALPHAS)-PFALLR*ZDR**PEXFALLR)
+          END DO
+          IF( ZDRMIN>0.0 ) THEN
+            ZCOLLDRMIN = (ZDS+ZDRMIN)**2                                       &
+                      * GENERAL_GAMMA(PALPHAR,PNUR,ZLBDAR,ZDRMIN)              &
+                      * PESR * ABS(PFALLS*ZDS**PEXFALLS*EXP(-(ZDS*PFALLEXPS)**PALPHAS)-PFALLR*ZDRMIN**PEXFALLR)
+            ELSE
+            ZCOLLDRMIN = 0.0
+          END IF 
+          ZCOLLR = (ZCOLLR + 0.5*ZCOLLDRMIN)*(ZDDCOLLR/ZDDSCALR)
+!
+!*       1.9     Compute the normalization factor by integration over the
+!                dimensional spectrum of the aggregates
+!
+          ZFUNC   = GENERAL_GAMMA(PALPHAS,PZNUS,ZLBDAS,ZDS)  ! MTaufour : !*(ZDS**PEXMASSS)
+          ZSCALSR = ZSCALSR + ZSCALR * ZFUNC
+!
+!*       1.10    Compute the scaled fall speed difference by integration over
+!                the dimensional spectrum of the aggregates
+!
+          ZCOLLSR = ZCOLLSR + ZCOLLR * ZFUNC
+!
+! Otherwise ZDRMIN>ZDRMAX so PRRCOLSS(JLBDAS,JLBDAR) = 0.0        !
+!
+        END IF
+!
+! Otherwise ZDRMAX = 0.0 so the density of the graupel cannot be reached
+!                    and so PRRCOLSS(JLBDAS,JLBDAR) = 0.0        !
+!
+      END IF
+    END DO
+!
+!*       1.10    Scale the fall speed difference
+!
+    IF( ZSCALSR>0.0 ) PNSCOLRG(JLBDAR,JLBDAS) = ZCOLLSR / ZSCALSR
+  END DO
+END DO
+!
+END SUBROUTINE NSCOLRG
diff --git a/src/common/micro/nzcolx.f90 b/src/common/micro/nzcolx.f90
new file mode 100644
index 0000000000000000000000000000000000000000..e4493c2e60f617e81998e2466d534e887891feaf
--- /dev/null
+++ b/src/common/micro/nzcolx.f90
@@ -0,0 +1,278 @@
+!MNH_LIC Copyright 1994-2014 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.
+!-----------------------------------------------------------------
+!--------------- special set of characters for RCS information
+!-----------------------------------------------------------------
+! $Source$ $Revision$
+! MASDEV4_7 init 2006/05/18 13:07:25
+!-----------------------------------------------------------------
+!     ##################
+      MODULE MODI_NZCOLX
+!     ##################
+!
+INTERFACE
+!
+      SUBROUTINE NZCOLX( KND, PALPHAX, PNUX, PALPHAZ, PNUZ,          &
+                         PEXZ, PFALLX, PEXFALLX, PFALLEXPX,          &
+                         PFALLZ, PEXFALLZ, PFALLEXPZ,                &
+		         PLBDAXMAX, PLBDAZMAX, PLBDAXMIN, PLBDAZMIN, &
+		         PDINFTY, PNZCOLX                            )
+!
+INTEGER, INTENT(IN) :: KND    ! Number of discrete size intervals in DX and DZ  
+!
+!
+REAL, INTENT(IN) :: PALPHAX   ! First shape parameter of the specy X 
+			      ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PNUX      ! Second shape parameter of the specy X
+			      ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PALPHAZ   ! First shape parameter of the specy Z 
+			      ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PNUZ      ! Second shape parameter of the specy Z
+REAL, INTENT(IN) :: PEXZ      ! Efficiency of specy X collecting specy Z
+REAL, INTENT(IN) :: PFALLX    ! Fall speed constant of specy X
+REAL, INTENT(IN) :: PEXFALLX  ! Fall speed exponent of specy X
+REAL, INTENT(IN) :: PFALLEXPX ! Fall speed exponential constant of specy X
+REAL, INTENT(IN) :: PFALLZ    ! Fall speed constant of specy Z
+REAL, INTENT(IN) :: PEXFALLZ  ! Fall speed exponent of specy Z
+REAL, INTENT(IN) :: PFALLEXPZ ! Fall speed exponential constant of specy Z
+REAL, INTENT(IN) :: PLBDAXMAX ! Maximun slope of size distribution of specy X
+REAL, INTENT(IN) :: PLBDAZMAX ! Maximun slope of size distribution of specy Z
+REAL, INTENT(IN) :: PLBDAXMIN ! Minimun slope of size distribution of specy X
+REAL, INTENT(IN) :: PLBDAZMIN ! Minimun slope of size distribution of specy Z
+REAL, INTENT(IN) :: PDINFTY   ! Factor to define the largest diameter up to
+			      ! which the diameter integration is performed
+!
+REAL, DIMENSION(:,:), INTENT(INOUT) :: PNZCOLX ! Scaled fall speed difference in
+				               ! the mass collection kernel as a
+					       ! function of LAMBDAX and LAMBDAZ
+!
+      END SUBROUTINE NZCOLX
+!
+END INTERFACE
+!
+      END MODULE MODI_NZCOLX
+!     ################################################################
+      SUBROUTINE NZCOLX( KND, PALPHAX, PNUX, PALPHAZ, PNUZ,          &
+                         PEXZ, PFALLX, PEXFALLX, PFALLEXPX,          &
+                         PFALLZ, PEXFALLZ, PFALLEXPZ,                &
+		         PLBDAXMAX, PLBDAZMAX, PLBDAXMIN, PLBDAZMIN, &
+		         PDINFTY, PNZCOLX                            )
+!     ################################################################
+!
+!
+!
+!!****  * -  Build up a look-up table containing the scaled fall speed
+!!           difference between size distributed particles of specy X and Z
+!!
+!!
+!!    PURPOSE
+!!    -------
+!!      The purpose of this routine is to integrate numerically the scaled fall
+!!      speed difference between specy X and specy Z for use in collection
+!!      kernels. A first integral of the form
+!!
+!!        infty
+!!       / /
+!!       |{|                                                 }
+!!       |{| E_xz (Dx+Dz)^2 |cxDx^dx-czDz^dz| g(Dz) dDz} g(Dx) dDx
+!!       |{|                                                 }
+!!       / /
+!!        0
+!!
+!!      is evaluated and normalised by a second integral of the form
+!!
+!!        infty
+!!       / /
+!!       |{|                          }
+!!       |{| (Dx+Dz)^2 g(Dz) dDz} g(Dx) dDx
+!!       |{|                          }
+!!       / /
+!!        0
+!!
+!!      where E_xz is a collection efficiency, g(D) is the generalized Gamma
+!!      distribution law. The 'infty' diameter is defined according to the
+!!      current value of the Lbda that is D_x=PDINFTY/Lbda_x or
+!!      D_z=PINFTY/Lbda_z. 
+!!      The result is stored in a two-dimensional array.
+!! 
+!!**  METHOD
+!!    ------
+!!      The free parameters of the size distribution function of specy X and Z
+!!      (slope parameter LAMBDA) are discretized with a geometrical rate in a
+!!      specific range
+!!            LAMBDA = exp( (Log(LAMBDA_max) - Log(LAMBDA_min))/N_interval )
+!!      The two above integrals are performed using the trapezoidal scheme and
+!!      the [0,infty] interval is discretized over KND values of D_x or D_z.
+!!
+!!    EXTERNAL
+!!    --------
+!!      MODI_GENERAL_GAMMA: Generalized gamma distribution law 
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      None
+!!
+!!    REFERENCE
+!!    ---------
+!!      B.S. Ferrier , 1994 : A Double-Moment Multiple-Phase Four-Class
+!!                            Bulk Ice Scheme,JAS,51,249-280.
+!!
+!!    AUTHOR
+!!    ------
+!!      J.-P. Pinty     * Laboratoire d'Aerologie *
+!!
+!!    MODIFICATIONS 
+!!    -------------
+!!      Original    8/11/95
+!!      M. Taufour     03/2022: adapted from rzcolx for concentration
+!!      J. Wurtz       03/2022: new snow characteristics
+!!
+!-------------------------------------------------------------------------------
+!
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODI_GENERAL_GAMMA
+!
+IMPLICIT NONE
+!
+!
+!*       0.1   Declarations of dummy arguments 
+!              ------------------------------- 
+!
+!
+INTEGER, INTENT(IN) :: KND    ! Number of discrete size intervals in DX and DZ  
+!
+!
+REAL, INTENT(IN) :: PALPHAX   ! First shape parameter of the specy X 
+			      ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PNUX      ! Second shape parameter of the specy X
+			      ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PALPHAZ   ! First shape parameter of the specy Z 
+			      ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PNUZ      ! Second shape parameter of the specy Z
+			      ! size distribution (generalized gamma law)
+REAL, INTENT(IN) :: PEXZ      ! Efficiency of specy X collecting specy Z
+REAL, INTENT(IN) :: PFALLX    ! Fall speed constant of specy X
+REAL, INTENT(IN) :: PEXFALLX  ! Fall speed exponent of specy X
+REAL, INTENT(IN) :: PFALLEXPX ! Fall speed exponential constant of specy X
+REAL, INTENT(IN) :: PFALLZ    ! Fall speed constant of specy Z
+REAL, INTENT(IN) :: PEXFALLZ  ! Fall speed exponent of specy Z
+REAL, INTENT(IN) :: PFALLEXPZ ! Fall speed exponential constant of specy Z
+REAL, INTENT(IN) :: PLBDAXMAX ! Maximun slope of size distribution of specy X
+REAL, INTENT(IN) :: PLBDAZMAX ! Maximun slope of size distribution of specy Z
+REAL, INTENT(IN) :: PLBDAXMIN ! Minimun slope of size distribution of specy X
+REAL, INTENT(IN) :: PLBDAZMIN ! Minimun slope of size distribution of specy Z
+REAL, INTENT(IN) :: PDINFTY   ! Factor to define the largest diameter up to
+			      ! which the diameter integration is performed
+!
+REAL, DIMENSION(:,:), INTENT(INOUT) :: PNZCOLX ! Scaled fall speed difference in
+				               ! the mass collection kernel as a
+					       ! function of LAMBDAX and LAMBDAZ
+!
+!
+!*       0.2   Declarations of local variables
+!              -------------------------------
+!
+!
+INTEGER :: JLBDAX  ! Slope index of the size distribution of specy X
+INTEGER :: JLBDAZ  ! Slope index of the size distribution of specy Z
+INTEGER :: JDX     ! Diameter index of a particle of specy X
+INTEGER :: JDZ     ! Diameter index of a particle of specy Z
+!
+!
+REAL    :: ZLBDAX  ! Current slope parameter LAMBDA of specy X
+REAL    :: ZLBDAZ  ! Current slope parameter LAMBDA of specy Z
+REAL    :: ZDLBDAX ! Growth rate of the slope parameter LAMBDA of specy X
+REAL    :: ZDLBDAZ ! Growth rate of the slope parameter LAMBDA of specy Z
+REAL    :: ZDDX    ! Integration step of the diameter of specy X
+REAL    :: ZDDZ    ! Integration step of the diameter of specy Z
+REAL    :: ZDX     ! Current diameter of the particle specy X
+REAL    :: ZDZ     ! Current diameter of the particle specy Z
+REAL    :: ZCOLLZ  ! Single integral of the mass weighted fall speed difference 
+		   ! over the spectrum of specy Z
+REAL    :: ZCOLLXZ ! Double integral of the mass weighted fall speed difference
+		   ! over the spectra of specy X and specy Z
+REAL    :: ZSCALZ  ! Single integral of the scaling factor over 
+		   ! the spectrum of specy Z
+REAL    :: ZSCALXZ ! Double integral of the scaling factor over
+		   ! the spectra of specy X and specy Z
+REAL    :: ZFUNC   ! Ancillary function
+!
+!
+!-------------------------------------------------------------------------------
+!
+!
+!*       1       COMPUTE THE SCALED VELOCITZ DIFFERENCE IN THE MASS
+!*                               COLLECTION KERNEL,
+!                -------------------------------------------------
+!
+!
+!
+!*       1.1     Compute the growth rate of the slope factors LAMBDA
+!
+ZDLBDAX = EXP( LOG(PLBDAXMAX/PLBDAXMIN)/REAL(SIZE(PNZCOLX(:,:),1)-1) )
+ZDLBDAZ = EXP( LOG(PLBDAZMAX/PLBDAZMIN)/REAL(SIZE(PNZCOLX(:,:),2)-1) )
+!
+!*       1.2     Scan the slope factors LAMBDAX and LAMBDAZ
+!
+DO JLBDAX = 1,SIZE(PNZCOLX(:,:),1)
+  ZLBDAX = PLBDAXMIN * ZDLBDAX ** (JLBDAX-1) 
+  DO JLBDAZ = 1,SIZE(PNZCOLX(:,:),2)
+    ZLBDAZ = PLBDAZMIN * ZDLBDAZ ** (JLBDAZ-1)
+!
+!*       1.3     Initialize the collection integrals
+!
+    ZSCALXZ = 0.0
+    ZCOLLXZ = 0.0
+!
+!*       1.4     Compute the diameter steps
+!
+    ZDDX = PDINFTY / (REAL(KND) * ZLBDAX)
+    ZDDZ = PDINFTY / (REAL(KND) * ZLBDAZ)
+!
+!*       1.5     Scan over the diameters DX and DZ
+!
+    DO JDX = 1,KND-1
+      ZDX = ZDDX * REAL(JDX)
+!
+      ZSCALZ = 0.0
+      ZCOLLZ = 0.0
+      DO JDZ = 1,KND-1
+        ZDZ = ZDDZ * REAL(JDZ)
+!
+!*       1.6     Compute the normalization factor by integration over the
+!                dimensional spectrum of specy Z  
+!
+	ZFUNC  = (ZDX+ZDZ)**2 * GENERAL_GAMMA(PALPHAZ,PNUZ,ZLBDAZ,ZDZ)
+	ZSCALZ = ZSCALZ + ZFUNC
+!
+!*       1.7     Compute the scaled fall speed difference by integration over
+!                the dimensional spectrum of specy Z
+!
+         ZCOLLZ = ZCOLLZ + ZFUNC * PEXZ * ABS( PFALLX*ZDX**PEXFALLX * EXP(-(ZDX*PFALLEXPX)**PALPHAX) &
+                                             - PFALLZ*ZDZ**PEXFALLZ * EXP(-(ZDZ*PFALLEXPZ)**PALPHAZ))
+      END DO
+!
+!*       1.8     Compute the normalization factor by integration over the
+!                dimensional spectrum of specy X
+!
+      ZFUNC   = GENERAL_GAMMA(PALPHAX,PNUX,ZLBDAX,ZDX)
+      ZSCALXZ = ZSCALXZ + ZSCALZ * ZFUNC
+!
+!*       1.9     Compute the scaled fall speed difference by integration over
+!                the dimensional spectrum of specy X
+!
+      ZCOLLXZ = ZCOLLXZ + ZCOLLZ * ZFUNC
+    END DO
+!
+!*       1.10    Scale the fall speed difference
+!
+    PNZCOLX(JLBDAX,JLBDAZ) = ZCOLLXZ / ZSCALXZ
+  END DO
+END DO
+!
+END SUBROUTINE NZCOLX