diff --git a/src/arome/micro/ice4_tendencies.F90 b/src/arome/micro/ice4_tendencies.F90
deleted file mode 100644
index 32fdfd6ce5470794df73a137f874f07eb8dd3d8c..0000000000000000000000000000000000000000
--- a/src/arome/micro/ice4_tendencies.F90
+++ /dev/null
@@ -1,500 +0,0 @@
-!
-!
-!
-!
-!
-!
-!!! NOTE: quand l'array syntax sera remplacée par des boucles, en profiter
-!!!       pour supprimer les arguments PA et PB des différentes routines
-!!!       pour calquer le fonctionnement de nucleation, rimltc et rrhong
-!
-!
-!
-!
-!
-!
-SUBROUTINE ICE4_TENDENCIES(KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, &
-                          &KRR, LDSOFT, PCOMPUTE, &
-                          &OWARM, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, HSUBG_AUCV_RC, HSUBG_PR_PDF, &
-                          &PEXN, PRHODREF, PLVFACT, PLSFACT, LDMICRO, K1, K2, K3, &
-                          &PPRES, PCF, PSIGMA_RC, &
-                          &PCIT, &
-                          &PT, PTHT, &
-                          &PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PRHT, PRRT3D, &
-                          &PRVHENI_MR, PRRHONG_MR, PRIMLTC_MR, PRSRIMCG_MR, &
-                          &PRCHONI, PRVDEPS, PRIAGGS, PRIAUTS, PRVDEPG, &
-                          &PRCAUTR, PRCACCR, PRREVAV, &
-                          &PRCRIMSS, PRCRIMSG, PRSRIMCG, PRRACCSS, PRRACCSG, PRSACCRG, PRSMLTG, PRCMLTSR, &
-                          &PRICFRRG, PRRCFRIG, PRICFRR, PRCWETG, PRIWETG, PRRWETG, PRSWETG, &
-                          &PRCDRYG, PRIDRYG, PRRDRYG, PRSDRYG, PRWETGH, PRWETGH_MR, PRGMLTR, &
-                          &PRCWETH, PRIWETH, PRSWETH, PRGWETH, PRRWETH, &
-                          &PRCDRYH, PRIDRYH, PRSDRYH, PRRDRYH, PRGDRYH, PRDRYHG, PRHMLTR, &
-                          &PRCBERI, &
-                          &PRS_TEND, PRG_TEND, PRH_TEND, PSSI, &
-                          &PA_TH, PA_RV, PA_RC, PA_RR, PA_RI, PA_RS, PA_RG, PA_RH, &
-                          &PB_TH, PB_RV, PB_RC, PB_RR, PB_RI, PB_RS, PB_RG, PB_RH, &
-                          &PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, PRAINFR)
-!!
-!!**  PURPOSE
-!!    -------
-!!      Computes the tendencies
-!!
-!!    AUTHOR
-!!    ------
-!!      S. Riette from the splitting of rain_ice source code (nov. 2014)
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!
-!
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST
-USE MODD_RAIN_ICE_PARAM
-USE MODD_RAIN_ICE_DESCR
-USE MODD_PARAM_ICE, ONLY : CSNOWRIMING
-
-USE MODI_ICE4_NUCLEATION
-USE MODE_ICE4_RRHONG, ONLY: ICE4_RRHONG
-USE MODE_ICE4_RIMLTC, ONLY: ICE4_RIMLTC
-USE MODE_ICE4_RSRIMCG_OLD, ONLY: ICE4_RSRIMCG_OLD
-USE MODE_ICE4_COMPUTE_PDF, ONLY: ICE4_COMPUTE_PDF
-USE MODE_ICE4_RAINFR_VERT, ONLY: ICE4_RAINFR_VERT
-USE MODE_ICE4_SLOW, ONLY: ICE4_SLOW
-USE MODE_ICE4_WARM, ONLY: ICE4_WARM
-USE MODE_ICE4_FAST_RS, ONLY: ICE4_FAST_RS
-USE MODE_ICE4_FAST_RG, ONLY: ICE4_FAST_RG
-USE MODE_ICE4_FAST_RH, ONLY: ICE4_FAST_RH
-USE MODE_ICE4_FAST_RI, ONLY: ICE4_FAST_RI
-
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
-IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-INTEGER,                      INTENT(IN)    :: KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL
-INTEGER,                      INTENT(IN)    :: KRR
-LOGICAL,                      INTENT(IN)    :: LDSOFT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PCOMPUTE
-LOGICAL,                      INTENT(IN)    :: OWARM
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_RC_RR_ACCR
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_RR_EVAP
-CHARACTER(len=4),             INTENT(IN)    :: HSUBG_AUCV_RC
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_PR_PDF ! pdf for subgrid precipitation
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PEXN
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRHODREF
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PLVFACT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PLSFACT
-LOGICAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: LDMICRO
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K1
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K2
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K3
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PPRES
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PCF
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PSIGMA_RC
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PCIT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PTHT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRVT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRCT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRRT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRIT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRST
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRGT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRHT
-REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)    :: PRRT3D
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRVHENI_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRHONG_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIMLTC_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSRIMCG_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCHONI
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRVDEPS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIAGGS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIAUTS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRVDEPG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCAUTR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCACCR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRREVAV
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCRIMSS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCRIMSG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSRIMCG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRACCSS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRACCSG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSACCRG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSMLTG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCMLTSR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRICFRRG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRCFRIG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRICFRR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCWETG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIWETG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRWETG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSWETG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCDRYG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIDRYG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRDRYG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSDRYG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRWETGH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRWETGH_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRGMLTR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCWETH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIWETH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSWETH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRGWETH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRWETH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCDRYH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIDRYH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSDRYH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRDRYH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRGDRYH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRDRYHG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRHMLTR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCBERI
-REAL, DIMENSION(KSIZE, 8),    INTENT(INOUT) :: PRS_TEND
-REAL, DIMENSION(KSIZE, 8),    INTENT(INOUT) :: PRG_TEND
-REAL, DIMENSION(KSIZE, 10),   INTENT(INOUT) :: PRH_TEND
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PSSI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_TH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RV
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_TH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RV
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_HCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_LCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_HRC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_LRC
-REAL, DIMENSION(KIT,KJT,KKT), INTENT(OUT)   :: PRAINFR   ! Rain fraction
-!
-!*       0.2  declaration of local variables
-!
-REAL, DIMENSION(KSIZE) :: ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, &
-                        & ZT, ZTHT, &
-                        & ZZW, &
-                        & ZKA, ZDV, ZAI, ZCJ, &
-                        & ZRF, &
-                        & ZLBDAR, ZLBDAS, ZLBDAG, ZLBDAH, ZLBDAR_RF, &
-                        & ZRGSI, ZRGSI_MR
-REAL, DIMENSION(KSIZE) :: PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI
-CHARACTER(len=80) :: HSUBG_AUCV_RI='NONE'
-REAL, DIMENSION(KIT,KJT,KKT) :: ZRRT3D, ZRST3D, ZRGT3D, ZRHT3D
-INTEGER :: JL
-REAL, DIMENSION(KSIZE) :: ZWETG ! 1. if graupel growths in wet mode, 0. otherwise
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-
-IF (LHOOK) CALL DR_HOOK('ICE4_TENDENCIES', 0, ZHOOK_HANDLE)
-
-PA_TH(:)=0.
-PA_RV(:)=0.
-PA_RC(:)=0.
-PA_RR(:)=0.
-PA_RI(:)=0.
-PA_RS(:)=0.
-PA_RG(:)=0.
-PA_RH(:)=0.
-PB_TH(:)=0.
-PB_RV(:)=0.
-PB_RC(:)=0.
-PB_RR(:)=0.
-PB_RI(:)=0.
-PB_RS(:)=0.
-PB_RG(:)=0.
-PB_RH(:)=0.
-!
-DO JL=1, KSIZE
-  ZRVT(JL)=PRVT(JL)
-  ZRCT(JL)=PRCT(JL)
-  ZRRT(JL)=PRRT(JL)
-  ZRIT(JL)=PRIT(JL)
-  ZRST(JL)=PRST(JL)
-  ZRGT(JL)=PRGT(JL)
-  ZTHT(JL)=PTHT(JL)
-  ZT(JL)=PT(JL)
-ENDDO
-IF(LDSOFT) THEN
-  PRVHENI_MR(:)=0.
-  PRRHONG_MR(:)=0.
-  PRIMLTC_MR(:)=0.
-  PRSRIMCG_MR(:)=0.
-ELSE
-  !
-  !*       2.     COMPUTES THE SLOW COLD PROCESS SOURCES
-  !               --------------------------------------
-  CALL ICE4_NUCLEATION(KSIZE, LDSOFT, PCOMPUTE==1., &
-                       ZTHT, PPRES, PRHODREF, PEXN, PLSFACT, ZT, &
-                       ZRVT, &
-                       PCIT, PRVHENI_MR, PB_TH, PB_RV, PB_RI)
-  PB_RI(:)=PB_RI(:) + PRVHENI_MR(:)
-  PB_RV(:)=PB_RV(:) - PRVHENI_MR(:)
-  PB_TH(:)=PB_TH(:) + PRVHENI_MR(:)*PLSFACT(:)
-  DO JL=1, KSIZE
-    ZRIT(JL)=ZRIT(JL) + PRVHENI_MR(JL)
-    ZRVT(JL)=ZRVT(JL) - PRVHENI_MR(JL)
-    ZTHT(JL)=ZTHT(JL) + PRVHENI_MR(JL)*PLSFACT(JL)
-    ZT(JL) = ZTHT(JL) * PEXN(JL)
-  ENDDO
-  !
-  !*       3.3     compute the spontaneous freezing source: RRHONG
-  !
-  CALL ICE4_RRHONG(KSIZE, PCOMPUTE, &
-                  &PEXN, PLVFACT, PLSFACT, &
-                  &ZT,   ZRRT, &
-                  &ZTHT, &
-                  &PRRHONG_MR, PB_TH, PB_RR, PB_RG)
-  DO JL=1, KSIZE
-    PB_RG(JL) = PB_RG(JL) + PRRHONG_MR(JL)
-    PB_RR(JL) = PB_RR(JL) - PRRHONG_MR(JL)
-    PB_TH(JL) = PB_TH(JL) + PRRHONG_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
-  ENDDO
-  DO JL=1, KSIZE
-    ZRGT(JL) = ZRGT(JL) + PRRHONG_MR(JL)
-    ZRRT(JL) = ZRRT(JL) - PRRHONG_MR(JL)
-    ZTHT(JL) = ZTHT(JL) + PRRHONG_MR(JL)*(PLSFACT(JL)-PLVFACT(JL)) ! f(L_f*(RRHONG))
-    ZT(JL) = ZTHT(JL) * PEXN(JL)
-  ENDDO
-  !
-  !*       7.1    cloud ice melting
-  !
-  CALL ICE4_RIMLTC(KSIZE, PCOMPUTE, &
-                  &PEXN, PLVFACT, PLSFACT, &
-                  &ZT, &
-                  &ZTHT, ZRIT, &
-                  &PRIMLTC_MR)
-  DO JL=1, KSIZE
-    PB_RC(JL) = PB_RC(JL) + PRIMLTC_MR(JL)
-    PB_RI(JL) = PB_RI(JL) - PRIMLTC_MR(JL)
-    PB_TH(JL) = PB_TH(JL) - PRIMLTC_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
-  ENDDO
-  DO JL=1, KSIZE
-    ZRCT(JL) = ZRCT(JL) + PRIMLTC_MR(JL)
-    ZRIT(JL) = ZRIT(JL) - PRIMLTC_MR(JL)
-    ZTHT(JL) = ZTHT(JL) - PRIMLTC_MR(JL)*(PLSFACT(JL)-PLVFACT(JL)) ! f(L_f*(-RIMLTC))
-    ZT(JL) = ZTHT(JL) * PEXN(JL)
-  ENDDO
-  !
-  !        5.1.6  riming-conversion of the large sized aggregates into graupel (old parametrisation)
-  !
-  IF(CSNOWRIMING=='OLD ') THEN
-    ZLBDAS(:)=0.
-    WHERE(ZRST(:)>0.)
-      ZLBDAS(:)  = MIN(XLBDAS_MAX, XLBS*(PRHODREF(:)*MAX(ZRST(:), XRTMIN(5)))**XLBEXS)
-    END WHERE
-    CALL ICE4_RSRIMCG_OLD(KSIZE, LDSOFT, PCOMPUTE==1., &
-                         &PRHODREF, &
-                         &ZLBDAS, &
-                         &ZT, ZRCT, ZRST, &
-                         &PRSRIMCG_MR, PB_RS, PB_RG)
-    DO JL=1, KSIZE
-      ZRST(JL) = ZRST(JL) - PRSRIMCG_MR(JL)
-      ZRGT(JL) = ZRGT(JL) + PRSRIMCG_MR(JL)
-    ENDDO
-  ELSE
-    PRSRIMCG_MR(:) = 0.
-  ENDIF
-ENDIF
-!
-!* Derived fields
-!
-IF(KSIZE>0) THEN
-  IF(.NOT. LDSOFT) THEN
-    ZZW(:) = EXP(XALPI-XBETAI/ZT(:)-XGAMI*ALOG(ZT(:)))
-    DO JL=1, KSIZE
-      PSSI(JL) = ZRVT(JL)*( PPRES(JL)-ZZW(JL) ) / ( XEPSILO * ZZW(JL) ) - 1.0
-                                                        ! Supersaturation over ice
-      ZKA(JL) = 2.38E-2 + 0.0071E-2*(ZT(JL)-XTT) ! k_a
-      ZDV(JL) = 0.211E-4*(ZT(JL)/XTT)**1.94 * (XP00/PPRES(JL)) ! D_v
-      ZAI(JL) = (XLSTT+(XCPV-XCI)*(ZT(JL)-XTT))**2 / (ZKA(JL)*XRV*ZT(JL)**2) &
-                                   + ( XRV*ZT(JL) ) / (ZDV(JL)*ZZW(JL))
-      ZCJ(JL) = XSCFAC*PRHODREF(JL)**0.3 / SQRT(1.718E-5+0.0049E-5*(ZT(JL)-XTT))
-    ENDDO
-  ENDIF
-  !
-  !Cloud water split between high and low content part is done here
-  CALL ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF,&
-                        PRHODREF, ZRCT, ZRIT, PCF, ZT, PSIGMA_RC,&
-                        PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC,&
-                        PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI, ZRF)
-  IF(HSUBG_RC_RR_ACCR=='PRFR') THEN
-    !Diagnostic of precipitation fraction
-    PRAINFR(:,:,:)=UNPACK(ZRF(:), MASK=LDMICRO(:,:,:), FIELD=PRAINFR(:,:,:))
-    ZRRT3D(:,:,:)=PRRT3D(:,:,:)-UNPACK(PRRHONG_MR(:), MASK=LDMICRO(:,:,:), FIELD=0.)
-    ZRST3D(:,:,:)=0. !need phasing
-    ZRGT3D(:,:,:)=0. !need phasing
-    IF (KRR==7) ZRHT3D(:,:,:)=0. !need phasing
-    CALL ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PRAINFR(:,:,:),
-                         &ZRRT3D(:,:,:), ZRST3D(:,:,:), ZRGT3D(:,:,:), ZRHT3D(:,:,:))
-    DO JL=1,KSIZE
-      ZRF(JL)=PRAINFR(K1(JL), K2(JL), K3(JL))
-    END DO
-  ELSE
-    PRAINFR(:,:,:)=1.
-    ZRF(:)=1.
-  ENDIF
-  !
-  !*  compute the slope parameters
-  !
-  ZLBDAS(:)=0.
-  WHERE(ZRST(:)>0.)
-    ZLBDAS(:)  = MIN(XLBDAS_MAX, XLBS*(PRHODREF(:)*MAX(ZRST(:), XRTMIN(5)))**XLBEXS)
-  END WHERE
-  ZLBDAG(:)=0.
-  WHERE(ZRGT(:)>0.)
-    ZLBDAG(:)  = XLBG*(PRHODREF(:)*MAX(ZRGT(:), XRTMIN(6)))**XLBEXG
-  END WHERE
-  !ZLBDAR will be used when we consider rain diluted over the grid box
-  ZLBDAR(:)=0.
-  WHERE(ZRRT(:)>0.)
-    ZLBDAR(:)  = XLBR*( PRHODREF(:)*MAX( ZRRT(:), XRTMIN(3)))**XLBEXR
-  END WHERE
-  !ZLBDAR_RF is used when we consider rain concentrated in its fraction
-  IF (HSUBG_RC_RR_ACCR=='PRFR') THEN
-    ZLBDAR_RF(:)=0.
-    WHERE(ZRRT(:)>0. .AND. ZRF(:)>0.)
-      ZLBDAR_RF(:) = XLBR*( PRHODREF(:) *MAX( ZRRT(:)/ZRF(:) , XRTMIN(3)))**XLBEXR
-    END WHERE
-  ELSE
-    ZLBDAR_RF(:) = ZLBDAR(:)
-  ENDIF
-  IF(KRR==7) THEN
-    ZLBDAH(:)=0.
-    WHERE(PRHT(:)>0.)
-      ZLBDAH(:) = XLBH*(PRHODREF(:)*MAX(PRHT(:), XRTMIN(7)))**XLBEXH
-    END WHERE
-  ENDIF
-ENDIF
-!
-!
-PHLI_HCF=1
-CALL ICE4_SLOW(KSIZE, LDSOFT, PCOMPUTE, PRHODREF, ZT, &
-              &PSSI, PLVFACT, PLSFACT, &
-              &ZRVT, ZRCT, ZRIT, ZRST, ZRGT, &
-              &ZLBDAS, ZLBDAG, &
-              &ZAI, ZCJ, PHLI_HCF, ZRIT, &       !!!!!!!              en attendant phasage plus complet
-              &PRCHONI, PRVDEPS, PRIAGGS, PRIAUTS, PRVDEPG, &
-              &PA_TH, PA_RV, PA_RC, PA_RI, PA_RS, PA_RG)
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       3.     COMPUTES THE SLOW WARM PROCESS SOURCES
-!               --------------------------------------
-!
-!
-IF(OWARM) THEN    !  Check if the formation of the raindrops by the slow
-                  !  warm processes is allowed
-  CALL ICE4_WARM(KSIZE, LDSOFT, PCOMPUTE, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, &
-                &PRHODREF, PLVFACT, ZT, PPRES, ZTHT,&
-                &ZLBDAR, ZLBDAR_RF, ZKA, ZDV, ZCJ, &
-                &PHLC_LCF, PHLC_HCF, PHLC_LRC, PHLC_HRC, &
-                &PCF, ZRF, &
-                &ZRVT, ZRCT, ZRRT, &
-                &PRCAUTR, PRCACCR, PRREVAV, &
-                &PA_TH, PA_RV, PA_RC, PA_RR)
-ELSE
-  PRCAUTR(:)=0.
-  PRCACCR(:)=0.
-  PRREVAV(:)=0.
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       4.     COMPUTES THE FAST COLD PROCESS SOURCES FOR r_s
-!               ----------------------------------------------
-!
-CALL ICE4_FAST_RS(KSIZE, KSIZE, LDSOFT, PCOMPUTE, &
-                 &PRHODREF, PLVFACT, PLSFACT, PPRES, &
-                 &ZDV, ZKA, ZCJ, &
-                 &ZLBDAR, ZLBDAS, &
-                 &ZT, ZRVT, ZRCT, ZRRT, ZRST, &
-                 &PRIAGGS, &
-                 &PRCRIMSS, PRCRIMSG, PRSRIMCG, &
-                 &PRRACCSS, PRRACCSG, PRSACCRG, PRSMLTG, &
-                 &PRCMLTSR, &
-                 &PRS_TEND, &
-                 &PA_TH, PA_RC, PA_RR, PA_RS, PA_RG)
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       5.        COMPUTES THE FAST COLD PROCESS SOURCES FOR r_g
-!                  ------------------------------------------------------
-!
-DO JL=1, KSIZE
-  ZRGSI(JL) = PRVDEPG(JL) + PRSMLTG(JL) + PRRACCSG(JL) + &
-           & PRSACCRG(JL) + PRCRIMSG(JL) + PRSRIMCG(JL)
-  ZRGSI_MR(JL) = PRRHONG_MR(JL) + PRSRIMCG_MR(JL)
-ENDDO
-CALL ICE4_FAST_RG(KSIZE, KSIZE, LDSOFT, PCOMPUTE, KRR, &
-                 &PRHODREF, PLVFACT, PLSFACT, PPRES, &
-                 &ZDV, ZKA, ZCJ, PCIT, &
-                 &ZLBDAR, ZLBDAS, ZLBDAG, &
-                 &ZT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, &
-                 &ZRGSI, ZRGSI_MR(:), &
-                 &ZWETG, &
-                 &PRICFRRG, PRRCFRIG, PRICFRR, PRCWETG, PRIWETG, PRRWETG, PRSWETG, &
-                 &PRCDRYG, PRIDRYG, PRRDRYG, PRSDRYG, PRWETGH, PRWETGH_MR, PRGMLTR, &
-                 &PRG_TEND, &
-                 &PA_TH, PA_RC, PA_RR, PA_RI, PA_RS, PA_RG, PA_RH, PB_RG, PB_RH)
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       6.     COMPUTES THE FAST COLD PROCESS SOURCES FOR r_h
-!               ----------------------------------------------
-!
-IF (KRR==7) THEN
-  CALL ICE4_FAST_RH(KSIZE, KSIZE, LDSOFT, PCOMPUTE, ZWETG, &
-                   &PRHODREF, PLVFACT, PLSFACT, PPRES, &
-                   &ZDV, ZKA, ZCJ, &
-                   &ZLBDAS, ZLBDAG, ZLBDAR, ZLBDAH, &
-                   &ZT,  ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, PRHT, &
-                   &PRCWETH, PRIWETH, PRSWETH, PRGWETH, PRRWETH, &
-                   &PRCDRYH, PRIDRYH, PRSDRYH, PRRDRYH, PRGDRYH, PRDRYHG, PRHMLTR, &
-                   &PRH_TEND, &
-                   &PA_TH, PA_RC, PA_RR, PA_RI, PA_RS, PA_RG, PA_RH)
-ELSE
-  PRCWETH(:)=0.
-  PRIWETH(:)=0.
-  PRSWETH(:)=0.
-  PRGWETH(:)=0.
-  PRRWETH(:)=0.
-  PRCDRYH(:)=0.
-  PRIDRYH(:)=0.
-  PRSDRYH(:)=0.
-  PRRDRYH(:)=0.
-  PRGDRYH(:)=0.
-  PRDRYHG(:)=0.
-  PRHMLTR(:)=0.
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       7.     COMPUTES SPECIFIC SOURCES OF THE WARM AND COLD CLOUDY SPECIES
-!               -------------------------------------------------------------
-!
-CALL ICE4_FAST_RI(KSIZE, LDSOFT, PCOMPUTE, &
-                 &PRHODREF, PLVFACT, PLSFACT, &
-                 &ZAI, ZCJ, PCIT, &
-                 &PSSI, &
-                 &ZRCT, ZRIT, &
-                 &PRCBERI, PA_TH, PA_RC, PA_RI)
-!
-IF (LHOOK) CALL DR_HOOK('ICE4_TENDENCIES', 1, ZHOOK_HANDLE)
-!
-END SUBROUTINE ICE4_TENDENCIES
diff --git a/src/arome/micro/modi_ice4_tendencies.F90 b/src/arome/micro/modi_ice4_tendencies.F90
deleted file mode 100644
index 467d89707860c6257aea71b09d336c0000070328..0000000000000000000000000000000000000000
--- a/src/arome/micro/modi_ice4_tendencies.F90
+++ /dev/null
@@ -1,130 +0,0 @@
-MODULE MODI_ICE4_TENDENCIES
-INTERFACE
-SUBROUTINE ICE4_TENDENCIES(KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, &
-                          &KRR, LDSOFT, PCOMPUTE, &
-                          &OWARM, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, HSUBG_AUCV_RC, HSUBG_PR_PDF, &
-                          &PEXN, PRHODREF, PLVFACT, PLSFACT, LDMICRO, K1, K2, K3, &
-                          &PPRES, PCF, PSIGMA_RC, &
-                          &PCIT, &
-                          &PT, PTHT, &
-                          &PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PRHT, PRRT3D, &
-                          &PRVHENI_MR, PRRHONG_MR, PRIMLTC_MR, PRSRIMCG_MR, &
-                          &PRCHONI, PRVDEPS, PRIAGGS, PRIAUTS, PRVDEPG, &
-                          &PRCAUTR, PRCACCR, PRREVAV, &
-                          &PRCRIMSS, PRCRIMSG, PRSRIMCG, PRRACCSS, PRRACCSG, PRSACCRG, PRSMLTG, PRCMLTSR, &
-                          &PRICFRRG, PRRCFRIG, PRICFRR, PRCWETG, PRIWETG, PRRWETG, PRSWETG, &
-                          &PRCDRYG, PRIDRYG, PRRDRYG, PRSDRYG, PRWETGH, PRWETGH_MR, PRGMLTR, &
-                          &PRCWETH, PRIWETH, PRSWETH, PRGWETH, PRRWETH, &
-                          &PRCDRYH, PRIDRYH, PRSDRYH, PRRDRYH, PRGDRYH, PRDRYHG, PRHMLTR, &
-                          &PRCBERI, &
-                          &PRS_TEND, PRG_TEND, PRH_TEND, PSSI, &
-                          &PA_TH, PA_RV, PA_RC, PA_RR, PA_RI, PA_RS, PA_RG, PA_RH, &
-                          &PB_TH, PB_RV, PB_RC, PB_RR, PB_RI, PB_RS, PB_RG, PB_RH, &
-                          &PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, PRAINFR)
-IMPLICIT NONE
-INTEGER,                      INTENT(IN)    :: KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL
-INTEGER,                      INTENT(IN)    :: KRR
-LOGICAL,                      INTENT(IN)    :: LDSOFT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PCOMPUTE
-LOGICAL,                      INTENT(IN)    :: OWARM
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_RC_RR_ACCR
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_RR_EVAP
-CHARACTER(len=4),             INTENT(IN)    :: HSUBG_AUCV_RC
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_PR_PDF ! pdf for subgrid precipitation
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PEXN
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRHODREF
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PLVFACT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PLSFACT
-LOGICAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: LDMICRO
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K1
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K2
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K3
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PPRES
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PCF
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PSIGMA_RC
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PCIT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PTHT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRVT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRCT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRRT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRIT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRST
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRGT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRHT
-REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)    :: PRRT3D
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRVHENI_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRHONG_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIMLTC_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSRIMCG_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCHONI
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRVDEPS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIAGGS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIAUTS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRVDEPG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCAUTR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCACCR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRREVAV
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCRIMSS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCRIMSG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSRIMCG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRACCSS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRACCSG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSACCRG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSMLTG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCMLTSR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRICFRRG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRCFRIG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRICFRR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCWETG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIWETG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRWETG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSWETG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCDRYG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIDRYG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRDRYG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSDRYG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRWETGH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRWETGH_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRGMLTR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCWETH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIWETH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSWETH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRGWETH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRWETH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCDRYH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIDRYH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSDRYH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRDRYH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRGDRYH
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRDRYHG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRHMLTR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCBERI
-REAL, DIMENSION(KSIZE, 8),    INTENT(INOUT) :: PRS_TEND
-REAL, DIMENSION(KSIZE, 8),    INTENT(INOUT) :: PRG_TEND
-REAL, DIMENSION(KSIZE, 10),   INTENT(INOUT) :: PRH_TEND
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PSSI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_TH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RV
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_TH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RV
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_HCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_LCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_HRC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_LRC
-REAL, DIMENSION(KIT,KJT,KKT), INTENT(OUT)   :: PRAINFR   ! Rain fraction
-END SUBROUTINE ICE4_TENDENCIES
-END INTERFACE
-END MODULE MODI_ICE4_TENDENCIES
diff --git a/src/arome/micro/rain_ice.F90 b/src/arome/micro/rain_ice.F90
index 7b33f9f2a158a63c29309ec784d858feb50709be..74aa8152e665f9f7e53e83bef85ed7ef042a74a5 100644
--- a/src/arome/micro/rain_ice.F90
+++ b/src/arome/micro/rain_ice.F90
@@ -1,7 +1,12 @@
+!MNH_LIC Copyright 1995-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.
+!-----------------------------------------------------------------
 !     ######spl
       SUBROUTINE RAIN_ICE ( KIT, KJT, KKT, KSIZE,                                 &
                             OSEDIC, OCND2, HSEDIM, HSUBG_AUCV_RC, OWARM,KKA,KKU,KKL,&
-                            PTSTEP, KRR, LDMICRO, PEXN,                           &
+                            PTSTEP, KRR, ODMICRO, PEXN,                           &
                             PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,&
                             PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                   &
                             PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,       &
@@ -63,7 +68,6 @@
 !!                          'CART' for cartesian box configuration
 !!                          'MASK' for budget zone defined by a mask
 !!                          'NONE'  ' for no budget
-!!         NBUPROCCTR   : process counter used for each budget variable
 !!         LBU_RTH      : logical for budget of RTH (potential temperature)
 !!                        .TRUE. = budget of RTH
 !!                        .FALSE. = no budget of RTH
@@ -155,11 +159,21 @@
 !*       0.    DECLARATIONS
 !              ------------
 !
-USE MODD_PARAMETERS
-USE MODD_CST
-USE MODD_RAIN_ICE_DESCR
+USE MODD_CST,            ONLY: XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XTT, XRHOLW
+USE MODD_PARAMETERS,     ONLY: JPVEXT, XUNDEF
+USE MODD_PARAM_ICE,      ONLY: CSUBG_PR_PDF, CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP, LDEPOSC, LFEEDBACKT, LSEDIM_AFTER, &
+                             & NMAXITER, XMRSTEP, XTSTEP_TS, XVDEPOSC
+USE MODD_RAIN_ICE_DESCR, ONLY: XRTMIN
 USE MODD_RAIN_ICE_PARAM
-USE MODD_PARAM_ICE
+USE MODD_FIELDS_ADDRESS, ONLY : & ! common fields adress
+      & ITH,     & ! Potential temperature
+      & IRV,     & ! Water vapor
+      & IRC,     & ! Cloud water
+      & IRR,     & ! Rain water
+      & IRI,     & ! Pristine ice
+      & IRS,     & ! Snow/aggregate
+      & IRG,     & ! Graupel
+      & IRH        ! Hail
 USE MODD_BUDGET
 USE MODD_LES
 USE MODI_BUDGET
@@ -168,7 +182,7 @@ USE MODE_ICE4_SEDIMENTATION_STAT, ONLY: ICE4_SEDIMENTATION_STAT
 USE MODE_ICE4_SEDIMENTATION_SPLIT, ONLY: ICE4_SEDIMENTATION_SPLIT
 USE MODE_ICE4_SEDIMENTATION_SPLIT_MOMENTUM, ONLY: ICE4_SEDIMENTATION_SPLIT_MOMENTUM
 USE MODE_ICE4_NUCLEATION_WRAPPER, ONLY: ICE4_NUCLEATION_WRAPPER
-USE MODI_ICE4_TENDENCIES
+USE MODE_ICE4_TENDENCIES, ONLY: ICE4_TENDENCIES
 USE DDH_MIX, ONLY : TYP_DDH
 USE YOMLDDH, ONLY  : TLDDH
 USE YOMMDDH, ONLY  : TMDDH
@@ -193,7 +207,7 @@ INTEGER,                  INTENT(IN)    :: KKU   !uppest atmosphere array index
 INTEGER,                  INTENT(IN)    :: KKL   !vert. levels type 1=MNH -1=ARO
 REAL,                     INTENT(IN)    :: PTSTEP  ! Double Time step (single if cold start)
 INTEGER,                  INTENT(IN)    :: KRR     ! Number of moist variable
-LOGICAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)   :: LDMICRO ! mask to limit computation
+LOGICAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)   :: ODMICRO ! mask to limit computation
 !
 REAL, DIMENSION(KIT,KJT,KKT),   INTENT(IN)    :: PEXN    ! Exner function
 REAL, DIMENSION(KIT,KJT,KKT),   INTENT(IN)    :: PDZZ    ! Layer thikness (m)
@@ -253,7 +267,7 @@ INTEGER :: IMICRO ! Case r_x>0 locations
 INTEGER, DIMENSION(KSIZE) :: I1,I2,I3 ! Used to replace the COUNT
 INTEGER                   :: JL       ! and PACK intrinsics
 !
-!Arrays for nucleation call outisde of LDMICRO points
+!Arrays for nucleation call outisde of ODMICRO points
 REAL,    DIMENSION(KIT, KJT, KKT) :: ZW ! work array
 REAL,    DIMENSION(KIT, KJT, KKT) :: ZT ! Temperature
 REAL, DIMENSION(KIT, KJT, KKT) :: &
@@ -266,7 +280,11 @@ REAL, DIMENSION(KIT, KJT, KKT) :: ZRAINFR,   &
                                 & ZHLC_HCF3D,& ! HLCLOUDS cloud fraction in high water content part
                                 & ZHLC_LCF3D,& ! HLCLOUDS cloud fraction in low water content part
                                 & ZHLC_HRC3D,& ! HLCLOUDS cloud water content in high water content
-                                & ZHLC_LRC3D   ! HLCLOUDS cloud water content in low water content
+                                & ZHLC_LRC3D,& ! HLCLOUDS cloud water content in low water content
+                                & ZHLI_HCF3D,& ! HLCLOUDS cloud fraction in high ice content part
+                                & ZHLI_LCF3D,& ! HLCLOUDS cloud fraction in low ice content part
+                                & ZHLI_HRI3D,& ! HLCLOUDS cloud water content in high ice content
+                                & ZHLI_LRI3D   ! HLCLOUDS cloud water content in high ice content
 REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2)) :: ZINPRI ! Pristine ice instant precip
 !
 !Packed variables
@@ -291,8 +309,12 @@ REAL, DIMENSION(KSIZE) :: ZRVT,     & ! Water vapor m.r. at t
                         & ZHLC_LCF, & ! HLCLOUDS : fraction of Low  Cloud Fraction in grid
                                       !    note that ZCF = ZHLC_HCF + ZHLC_LCF
                         & ZHLC_HRC, & ! HLCLOUDS : LWC that is High LWC in grid
-                        & ZHLC_LRC    ! HLCLOUDS : LWC that is Low  LWC in grid
+                        & ZHLC_LRC, & ! HLCLOUDS : LWC that is Low  LWC in grid
                                       !    note that ZRC = ZHLC_HRC + ZHLC_LRC
+                        & ZHLI_HCF, &
+                        & ZHLI_LCF, &
+                        & ZHLI_HRI, &
+                        & ZHLI_LRI
 !
 !Output packed tendencies (for budgets only)
 REAL, DIMENSION(KSIZE) :: ZRVHENI_MR, & ! heterogeneous nucleation mixing ratio change
@@ -356,9 +378,22 @@ REAL, DIMENSION(KSIZE) :: Z0RVT,     &   ! Water vapor m.r. at the beginig of th
                         & Z0RIT,     &   ! 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
-                        & ZA_TH, ZA_RV, ZA_RC, ZA_RR, ZA_RI, ZA_RS, ZA_RG, ZA_RH, &
-                        & ZB_TH, ZB_RV, ZB_RC, ZB_RR, ZB_RI, ZB_RS, ZB_RG, ZB_RH
+                        & Z0RHT          ! Hail m.r. at the beginig of the current loop
+
+
+
+
+
+!en attendant phasage on utilise KSIZE à la place de KPROMA
+REAL, DIMENSION(KSIZE,0:7) :: &
+                        & ZVART, & !Packed variables
+                        & ZA, ZB
+
+
+
+
+
+
 !
 !To take into acount external tendencies inside the splitting
 REAL, DIMENSION(KSIZE) :: ZEXT_RV,   &   ! External tendencie for rv
@@ -370,7 +405,7 @@ REAL, DIMENSION(KSIZE) :: ZEXT_RV,   &   ! External tendencie for rv
                         & ZEXT_RH,   &   ! External tendencie for rh
                         & ZEXT_TH,   &   ! External tendencie for th
                         & ZEXT_WW        ! Working array
-LOGICAL :: LEXT_TEND
+LOGICAL :: GEXT_TEND
 !
 INTEGER, DIMENSION(KSIZE) :: IITER ! Number of iterations done (with real tendencies computation)
 INTEGER :: INB_ITER_MAX ! Maximum number of iterations (with real tendencies computation)
@@ -392,6 +427,7 @@ REAL, DIMENSION(KSIZE) :: ZSSI
 REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: &
         &ZW_RVS, ZW_RCS, ZW_RRS, ZW_RIS, ZW_RSS, ZW_RGS, ZW_RHS, ZW_THS
 !
+CHARACTER(LEN=80)        :: HSUBG_AUCV_RI='NONE'
 !-------------------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('RAIN_ICE', 0, ZHOOK_HANDLE)
 !
@@ -416,7 +452,7 @@ IKTB=1+JPVEXT
 IKTE=KKT-JPVEXT
 !
 ZINV_TSTEP=1./PTSTEP
-LEXT_TEND=.TRUE.
+GEXT_TEND=.TRUE.
 !
 ! LSFACT and LVFACT without exner
 IF(KRR==7) THEN
@@ -563,7 +599,7 @@ ENDIF
 !  the microphysical fields are larger than a minimal value only !!!
 !
 IMICRO=0
-IF(KSIZE/=0) IMICRO=RAIN_ICE_COUNTJV(LDMICRO(:,:,:), KIT, KJT, KKT, KSIZE, I1(:), I2(:), I3(:))
+IF(KSIZE/=0) IMICRO=RAIN_ICE_COUNTJV(ODMICRO(:,:,:), KIT, KJT, KKT, KSIZE, I1(:), I2(:), I3(:))
 !Packing
 IF(IMICRO>0) THEN
   DO JL=1, IMICRO
@@ -580,7 +616,7 @@ IF(IMICRO>0) THEN
     ZPRES(JL) = PPABST(I1(JL),I2(JL),I3(JL))
     ZEXN(JL) = PEXN(I1(JL),I2(JL),I3(JL))
   ENDDO
-  IF(LEXT_TEND) THEN
+  IF(GEXT_TEND) THEN
     DO JL=1, IMICRO
       ZEXT_RV(JL) = PRVS(I1(JL),I2(JL),I3(JL)) - ZRVT(JL)*ZINV_TSTEP
       ZEXT_RC(JL) = PRCS(I1(JL),I2(JL),I3(JL)) - ZRCT(JL)*ZINV_TSTEP
@@ -601,14 +637,14 @@ IF(IMICRO>0) THEN
     DO JL=1, IMICRO
       ZRHT(JL) = PRHT(I1(JL),I2(JL),I3(JL))
     ENDDO
-    IF(LEXT_TEND) THEN
+    IF(GEXT_TEND) THEN
       DO JL=1, IMICRO
         ZEXT_RH(JL) = PRHS(I1(JL),I2(JL),I3(JL)) - ZRHT(JL)*ZINV_TSTEP
       ENDDO
     ENDIF
   ELSE
     ZRHT(:)=0.
-    IF(LEXT_TEND) ZEXT_RH(:)=0.
+    IF(GEXT_TEND) ZEXT_RH(:)=0.
   ENDIF
   IF(LBU_ENABLE) THEN
     ZTOT_RVHENI(:)=0.
@@ -721,14 +757,27 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
     !***       4.1 Tendecies computation
     !
     ! Tendencies are *really* computed when LSOFT==.FALSE. and only adjusted otherwise
-    CALL ICE4_TENDENCIES(IMICRO, IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, KKT, KKL, &
+
+
+
+!KPROMA=IMICRO: temporary merging step
+ZVART(:, ITH)=ZTHT(:)
+ZVART(:, IRV)=ZRVT(:)
+ZVART(:, IRC)=ZRCT(:)
+ZVART(:, IRR)=ZRRT(:)
+ZVART(:, IRI)=ZRIT(:)
+ZVART(:, IRS)=ZRST(:)
+ZVART(:, IRG)=ZRGT(:)
+IF(KRR==7) ZVART(:, IRH)=ZRHT(:)
+
+    CALL ICE4_TENDENCIES(IMICRO, IMICRO, IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, KKT, KKL, &
                         &KRR, LSOFT, ZCOMPUTE, &
-                        &OWARM, CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP, HSUBG_AUCV_RC, CSUBG_PR_PDF, &
-                        &ZEXN, ZRHODREF, ZLVFACT, ZLSFACT, LDMICRO, I1, I2, I3, &
+                        &OWARM, CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP, &
+                        &HSUBG_AUCV_RC, HSUBG_AUCV_RI, CSUBG_PR_PDF, &
+                        &ZEXN, ZRHODREF, ZLVFACT, ZLSFACT, I1, I2, I3, &
                         &ZPRES, ZCF, ZSIGMA_RC, &
                         &ZCIT, &
-                        &ZZT, ZTHT, &
-                        &ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, ZRHT, PRRT, &
+                        &ZZT, ZVART, &
                         &ZRVHENI_MR, ZRRHONG_MR, ZRIMLTC_MR, ZRSRIMCG_MR, &
                         &ZRCHONI, ZRVDEPS, ZRIAGGS, ZRIAUTS, ZRVDEPG, &
                         &ZRCAUTR, ZRCACCR, ZRREVAV, &
@@ -739,20 +788,28 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
                         &ZRCDRYH, ZRIDRYH, ZRSDRYH, ZRRDRYH, ZRGDRYH, ZRDRYHG, ZRHMLTR, &
                         &ZRCBERI, &
                         &ZRS_TEND, ZRG_TEND, ZRH_TEND, ZSSI, &
-                        &ZA_TH, ZA_RV, ZA_RC, ZA_RR, ZA_RI, ZA_RS, ZA_RG, ZA_RH, &
-                        &ZB_TH, ZB_RV, ZB_RC, ZB_RR, ZB_RI, ZB_RS, ZB_RG, ZB_RH, &
-                        &ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC, ZRAINFR)
+                        &ZA, ZB, &
+                        &ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC, &
+                        &ZHLI_HCF, ZHLI_LCF, ZHLI_HRI, ZHLI_LRI, ZRAINFR)
+ZTHT(:)=ZVART(:, ITH)
+ZRVT(:)=ZVART(:, IRV)
+ZRCT(:)=ZVART(:, IRC)
+ZRRT(:)=ZVART(:, IRR)
+ZRIT(:)=ZVART(:, IRI)
+ZRST(:)=ZVART(:, IRS)
+ZRGT(:)=ZVART(:, IRG)
+IF(KRR==7) ZRHT(:)=ZVART(:, IRH)
     ! External tendencies
-    IF(LEXT_TEND) THEN
+    IF(GEXT_TEND) THEN
       DO JL=1, IMICRO
-        ZA_TH(JL) = ZA_TH(JL) + ZEXT_TH(JL)
-        ZA_RV(JL) = ZA_RV(JL) + ZEXT_RV(JL)
-        ZA_RC(JL) = ZA_RC(JL) + ZEXT_RC(JL)
-        ZA_RR(JL) = ZA_RR(JL) + ZEXT_RR(JL)
-        ZA_RI(JL) = ZA_RI(JL) + ZEXT_RI(JL)
-        ZA_RS(JL) = ZA_RS(JL) + ZEXT_RS(JL)
-        ZA_RG(JL) = ZA_RG(JL) + ZEXT_RG(JL)
-        ZA_RH(JL) = ZA_RH(JL) + ZEXT_RH(JL)
+        ZA(JL, ITH) = ZA(JL, ITH) + ZEXT_TH(JL)
+        ZA(JL, IRV) = ZA(JL, IRV) + ZEXT_RV(JL)
+        ZA(JL, IRC) = ZA(JL, IRC) + ZEXT_RC(JL)
+        ZA(JL, IRR) = ZA(JL, IRR) + ZEXT_RR(JL)
+        ZA(JL, IRI) = ZA(JL, IRI) + ZEXT_RI(JL)
+        ZA(JL, IRS) = ZA(JL, IRS) + ZEXT_RS(JL)
+        ZA(JL, IRG) = ZA(JL, IRG) + ZEXT_RG(JL)
+        IF(KRR==7) ZA(JL, IRH) = ZA(JL, IRH) + ZEXT_RH(JL)
       ENDDO
     ENDIF
     !
@@ -764,15 +821,15 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
     !We need to adjust tendencies when temperature reaches 0
     IF(LFEEDBACKT) THEN
       DO JL=1, IMICRO
-        !Is ZB_TH enough to change temperature sign?
-        ZW1D(JL)=(ZTHT(JL) - XTT/ZEXN(JL)) * (ZTHT(JL) + ZB_TH(JL) - XTT/ZEXN(JL))
+        !Is ZB(:, ITH) enough to change temperature sign?
+        ZW1D(JL)=(ZTHT(JL) - XTT/ZEXN(JL)) * (ZTHT(JL) + ZB(JL, ITH) - XTT/ZEXN(JL))
         ZMAXTIME(JL)=ZMAXTIME(JL)*MAX(0., SIGN(1., ZW1D(JL)))
-        !Can ZA_TH make temperature change of sign?
-        ZW1D(JL)=MAX(0., -SIGN(1., 1.E-20 - ABS(ZA_TH(JL)))) ! WHERE(ABS(ZA_TH(:))>1.E-20)
+        !Can ZA(:, ITH) make temperature change of sign?
+        ZW1D(JL)=MAX(0., -SIGN(1., 1.E-20 - ABS(ZA(JL, ITH)))) ! WHERE(ABS(ZA(:, ITH))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1. - ZW1D(JL))*(-1.) + &
                             ZW1D(JL) * &
-                            (XTT/ZEXN(JL) - ZB_TH(JL) - ZTHT(JL))/ &
-                            SIGN(MAX(ABS(ZA_TH(JL)), 1.E-20), ZA_TH(JL))
+                            (XTT/ZEXN(JL) - ZB(JL, ITH) - ZTHT(JL))/ &
+                            SIGN(MAX(ABS(ZA(JL, ITH)), 1.E-20), ZA(JL, ITH))
         ZW1D(JL)=MAX(0., -SIGN(1., -ZTIME_THRESHOLD(JL))) ! WHERE(ZTIME_THRESHOLD(:)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                      ZW1D(JL) * MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
@@ -782,43 +839,43 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
     !We need to adjust tendencies when a specy disappears
     !When a specy is missing, only the external tendencies can be negative (and we must keep track of it)
     DO JL=1, IMICRO
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RV(JL)+1.E-20)) * & ! WHERE(ZA_RV(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRV)+1.E-20)) * & ! WHERE(ZA(:, IRV)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(1)-ZRVT(JL)))   ! WHERE(ZRVT(:)>XRTMIN(1))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RV(JL)+ZRVT(JL))/MIN(ZA_RV(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRV)+ZRVT(JL))/MIN(ZA(JL, IRV), -1.E-20))
 
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RC(JL)+1.E-20)) * & ! WHERE(ZA_RC(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRC)+1.E-20)) * & ! WHERE(ZA(:, IRC)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(2)-ZRCT(JL)))   ! WHERE(ZRCT(:)>XRTMIN(2))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RC(JL)+ZRCT(JL))/MIN(ZA_RC(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRC)+ZRCT(JL))/MIN(ZA(JL, IRC), -1.E-20))
 
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RR(JL)+1.E-20)) * & ! WHERE(ZA_RR(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRR)+1.E-20)) * & ! WHERE(ZA(:, IRR)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(3)-ZRRT(JL)))   ! WHERE(ZRRT(:)>XRTMIN(3))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RR(JL)+ZRRT(JL))/MIN(ZA_RR(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRR)+ZRRT(JL))/MIN(ZA(JL, IRR), -1.E-20))
 
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RI(JL)+1.E-20)) * & ! WHERE(ZI_RV(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRI)+1.E-20)) * & ! WHERE(ZA(:, IRI)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(4)-ZRIT(JL)))   ! WHERE(ZRIT(:)>XRTMIN(4))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RI(JL)+ZRIT(JL))/MIN(ZA_RI(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRI)+ZRIT(JL))/MIN(ZA(JL, IRI), -1.E-20))
 
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RS(JL)+1.E-20)) * & ! WHERE(ZA_RS(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRS)+1.E-20)) * & ! WHERE(ZA(:, IRS)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(5)-ZRST(JL)))   ! WHERE(ZRST(:)>XRTMIN(5))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RS(JL)+ZRST(JL))/MIN(ZA_RS(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRS)+ZRST(JL))/MIN(ZA(JL, IRS), -1.E-20))
 
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RG(JL)+1.E-20)) * & ! WHERE(ZA_RG(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRG)+1.E-20)) * & ! WHERE(ZA(:, IRG)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(6)-ZRGT(JL)))   ! WHERE(ZRGT(:)>XRTMIN(6))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RG(JL)+ZRGT(JL))/MIN(ZA_RG(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRG)+ZRGT(JL))/MIN(ZA(JL, IRG), -1.E-20))
     ENDDO
 
     IF(KRR==7) THEN
       DO JL=1, IMICRO
-        ZW1D(JL)=MAX(0., -SIGN(1., ZA_RH(JL)+1.E-20)) * & ! WHERE(ZA_RH(:)<-1.E-20)
+        ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRH)+1.E-20)) * & ! WHERE(ZA(:, IRH)<-1.E-20)
                 &MAX(0., -SIGN(1., XRTMIN(7)-ZRHT(JL)))   ! WHERE(ZRHT(:)>XRTMIN(7))
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                    &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RH(JL)+ZRHT(JL))/MIN(ZA_RH(JL), -1.E-20))
+                    &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRH)+ZRHT(JL))/MIN(ZA(JL, IRH), -1.E-20))
       ENDDO
     ENDIF
 
@@ -842,79 +899,79 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
     IF(XMRSTEP/=0.) THEN
       DO JL=1, IMICRO
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RV(JL)))) ! WHERE(ABS(ZA_RV(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRV)))) ! WHERE(ABS(ZA(:, IRV))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RV(JL))*XMRSTEP+Z0RVT(JL)-ZRVT(JL)-ZB_RV(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RV(JL)), 1.E-20), ZA_RV(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRV))*XMRSTEP+Z0RVT(JL)-ZRVT(JL)-ZB(JL, IRV))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRV)), 1.E-20), ZA(JL, IRV))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRVT(JL))) + & !WHERE(ZRVT(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RV(JL))))            !WHERE(ZA_RV(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRV))))            !WHERE(ZA(:, IRV)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
 
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RC(JL)))) ! WHERE(ABS(ZA_RC(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRC)))) ! WHERE(ABS(ZA(:, IRC))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RC(JL))*XMRSTEP+Z0RCT(JL)-ZRCT(JL)-ZB_RC(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RC(JL)), 1.E-20), ZA_RC(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRC))*XMRSTEP+Z0RCT(JL)-ZRCT(JL)-ZB(JL, IRC))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRC)), 1.E-20), ZA(JL, IRC))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRCT(JL))) + & !WHERE(ZRCT(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RC(JL))))            !WHERE(ZA_RC(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRC))))            !WHERE(ZA(:, IRC)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
 
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RR(JL)))) ! WHERE(ABS(ZA_RR(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRR)))) ! WHERE(ABS(ZA(:, IRR))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RR(JL))*XMRSTEP+Z0RRT(JL)-ZRRT(JL)-ZB_RR(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RR(JL)), 1.E-20), ZA_RR(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRR))*XMRSTEP+Z0RRT(JL)-ZRRT(JL)-ZB(JL, IRR))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRR)), 1.E-20), ZA(JL, IRR))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRRT(JL))) + & !WHERE(ZRRT(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RR(JL))))            !WHERE(ZA_RR(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRR))))            !WHERE(ZA(:, IRR)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
 
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RI(JL)))) ! WHERE(ABS(ZA_RI(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRI)))) ! WHERE(ABS(ZA(:, IRI))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RI(JL))*XMRSTEP+Z0RIT(JL)-ZRIT(JL)-ZB_RI(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RI(JL)), 1.E-20), ZA_RI(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRI))*XMRSTEP+Z0RIT(JL)-ZRIT(JL)-ZB(JL, IRI))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRI)), 1.E-20), ZA(JL, IRI))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRIT(JL))) + & !WHERE(ZRIT(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RI(JL))))            !WHERE(ZA_RI(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRI))))            !WHERE(ZA(:, IRI)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
 
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RS(JL)))) ! WHERE(ABS(ZA_RS(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRS)))) ! WHERE(ABS(ZA(:, IRS))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RS(JL))*XMRSTEP+Z0RST(JL)-ZRST(JL)-ZB_RS(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RS(JL)), 1.E-20), ZA_RS(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRS))*XMRSTEP+Z0RST(JL)-ZRST(JL)-ZB(JL, IRS))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRS)), 1.E-20), ZA(JL, IRS))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRST(JL))) + & !WHERE(ZRST(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RS(JL))))            !WHERE(ZA_RS(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRS))))            !WHERE(ZA(:, IRS)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
 
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RG(JL)))) ! WHERE(ABS(ZA_RG(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRG)))) ! WHERE(ABS(ZA(:, IRG))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RG(JL))*XMRSTEP+Z0RGT(JL)-ZRGT(JL)-ZB_RG(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RG(JL)), 1.E-20), ZA_RG(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRG))*XMRSTEP+Z0RGT(JL)-ZRGT(JL)-ZB(JL, IRG))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRG)), 1.E-20), ZA(JL, IRG))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRGT(JL))) + & !WHERE(ZRGT(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RG(JL))))            !WHERE(ZA_RG(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRG))))            !WHERE(ZA(:, IRG)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
@@ -923,14 +980,14 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
       IF(KRR==7) THEN
         DO JL=1, IMICRO
           ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                  &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RH(JL)))) ! WHERE(ABS(ZA_RH(:))>1.E-20)
+                  &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRH)))) ! WHERE(ABS(ZA(:, IRH))>1.E-20)
           ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                             &ZW1D(JL)*(SIGN(1., ZA_RH(JL))*XMRSTEP+Z0RHT(JL)-ZRHT(JL)-ZB_RH(JL))/ &
-                             &SIGN(MAX(ABS(ZA_RH(JL)), 1.E-20), ZA_RH(JL))
+                             &ZW1D(JL)*(SIGN(1., ZA(JL, IRH))*XMRSTEP+Z0RHT(JL)-ZRHT(JL)-ZB(JL, IRH))/ &
+                             &SIGN(MAX(ABS(ZA(JL, IRH)), 1.E-20), ZA(JL, IRH))
           ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                   &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                   &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRHT(JL))) + & !WHERE(ZRHT(:)>XRTMIN(6)) .OR.
-                          &MAX(0., -SIGN(1., -ZA_RH(JL))))            !WHERE(ZA_RH(:)>0.)
+                          &MAX(0., -SIGN(1., -ZA(JL, IRH))))            !WHERE(ZA(:, IRH)>0.)
           ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                       &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
           ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
@@ -938,8 +995,13 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
       ENDIF
 
       DO JL=1, IMICRO
-        ZW1D(JL)=MAX(ABS(ZB_RV(JL)), ABS(ZB_RC(JL)), ABS(ZB_RR(JL)), ABS(ZB_RI(JL)), &
-                    &ABS(ZB_RS(JL)), ABS(ZB_RG(JL)), ABS(ZB_RH(JL)))
+        IF(KRR==7) THEN
+          ZW1D(JL)=MAX(ABS(ZB(JL, IRV)), ABS(ZB(JL, IRC)), ABS(ZB(JL, IRR)), ABS(ZB(JL, IRI)), &
+                      &ABS(ZB(JL, IRS)), ABS(ZB(JL, IRG)), ABS(ZB(JL, IRH)))
+        ELSE
+          ZW1D(JL)=MAX(ABS(ZB(JL, IRV)), ABS(ZB(JL, IRC)), ABS(ZB(JL, IRR)), ABS(ZB(JL, IRI)), &
+                      &ABS(ZB(JL, IRS)), ABS(ZB(JL, IRG)))
+        ENDIF
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & !WHERE(IITER(:)<INB_ITER_MAX)
                 &MAX(0., -SIGN(1., XMRSTEP-ZW1D(JL))) !WHERE(ZW1D(:)>XMRSTEP)
         ZMAXTIME(JL)=(1.-ZW1D(JL))*ZMAXTIME(JL)
@@ -950,16 +1012,16 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
     !***       4.3 New values of variables for next iteration
     !
     DO JL=1, IMICRO
-      ZTHT(JL)=ZTHT(JL)+ZA_TH(JL)*ZMAXTIME(JL)+ZB_TH(JL)
-      ZRVT(JL)=ZRVT(JL)+ZA_RV(JL)*ZMAXTIME(JL)+ZB_RV(JL)
-      ZRCT(JL)=ZRCT(JL)+ZA_RC(JL)*ZMAXTIME(JL)+ZB_RC(JL)
-      ZRRT(JL)=ZRRT(JL)+ZA_RR(JL)*ZMAXTIME(JL)+ZB_RR(JL)
-      ZRIT(JL)=ZRIT(JL)+ZA_RI(JL)*ZMAXTIME(JL)+ZB_RI(JL)
-      ZRST(JL)=ZRST(JL)+ZA_RS(JL)*ZMAXTIME(JL)+ZB_RS(JL)
-      ZRGT(JL)=ZRGT(JL)+ZA_RG(JL)*ZMAXTIME(JL)+ZB_RG(JL)
+      ZTHT(JL)=ZTHT(JL)+ZA(JL, ITH)*ZMAXTIME(JL)+ZB(JL, ITH)
+      ZRVT(JL)=ZRVT(JL)+ZA(JL, IRV)*ZMAXTIME(JL)+ZB(JL, IRV)
+      ZRCT(JL)=ZRCT(JL)+ZA(JL, IRC)*ZMAXTIME(JL)+ZB(JL, IRC)
+      ZRRT(JL)=ZRRT(JL)+ZA(JL, IRR)*ZMAXTIME(JL)+ZB(JL, IRR)
+      ZRIT(JL)=ZRIT(JL)+ZA(JL, IRI)*ZMAXTIME(JL)+ZB(JL, IRI)
+      ZRST(JL)=ZRST(JL)+ZA(JL, IRS)*ZMAXTIME(JL)+ZB(JL, IRS)
+      ZRGT(JL)=ZRGT(JL)+ZA(JL, IRG)*ZMAXTIME(JL)+ZB(JL, IRG)
       ZCIT(JL)=ZCIT(JL) * MAX(0., -SIGN(1., -ZRIT(JL))) ! WHERE(ZRIT(:)==0.) ZCIT(:) = 0.
     ENDDO
-    IF(KRR==7) ZRHT(:)=ZRHT(:)+ZA_RH(:)*ZMAXTIME(:)+ZB_RH(:)
+    IF(KRR==7) ZRHT(:)=ZRHT(:)+ZA(:, IRH)*ZMAXTIME(:)+ZB(:, IRH)
     !
     !***       4.4 Mixing ratio change due to each process
     !
@@ -1024,14 +1086,14 @@ ENDDO
 !
 IF(IMICRO>0) THEN
   ZW(:,:,:) = 0.
-  ZHLC_HCF3D(:,:,:) = UNPACK(ZHLC_HCF(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))
+  ZHLC_HCF3D(:,:,:) = UNPACK(ZHLC_HCF(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))
   ZW(:,:,:) = 0.
-  ZHLC_LCF3D(:,:,:) = UNPACK(ZHLC_LCF(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))
+  ZHLC_LCF3D(:,:,:) = UNPACK(ZHLC_LCF(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))
   ZW(:,:,:) = 0.
-  ZHLC_HRC3D(:,:,:) = UNPACK(ZHLC_HRC(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))
+  ZHLC_HRC3D(:,:,:) = UNPACK(ZHLC_HRC(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))
   ZW(:,:,:) = 0.
-  ZHLC_LRC3D(:,:,:) = UNPACK(ZHLC_LRC(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))
-  PCIT(:,:,:) = UNPACK(ZCIT(:), MASK=LDMICRO(:,:,:), FIELD=PCIT(:,:,:))
+  ZHLC_LRC3D(:,:,:) = UNPACK(ZHLC_LRC(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))
+  PCIT(:,:,:) = UNPACK(ZCIT(:), MASK=ODMICRO(:,:,:), FIELD=PCIT(:,:,:))
 ELSE
   ZRAINFR(:,:,:)=0.
   ZHLC_HCF3D(:,:,:)=0.
@@ -1042,14 +1104,14 @@ ELSE
 ENDIF
 IF(OWARM) THEN
   ZW(:,:,:)=0.
-  PEVAP3D(:,:,:)=UNPACK(ZRREVAV(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))
+  PEVAP3D(:,:,:)=UNPACK(ZRREVAV(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))
 ENDIF
 !
 !
-!*       6.     COMPUTES THE SLOW COLD PROCESS SOURCES OUTSIDE OF LDMICRO POINTS
+!*       6.     COMPUTES THE SLOW COLD PROCESS SOURCES OUTSIDE OF ODMICRO POINTS
 !               ----------------------------------------------------------------
 !
-CALL ICE4_NUCLEATION_WRAPPER(KIT, KJT, KKT, .NOT. LDMICRO, &
+CALL ICE4_NUCLEATION_WRAPPER(KIT, KJT, KKT, .NOT. ODMICRO, &
                              PTHT, PPABST, PRHODREF, PEXN, ZZ_LSFACT, ZT, &
                              PRVT, &
                              PCIT, ZZ_RVHENI_MR)
@@ -1075,7 +1137,7 @@ ENDDO
 !
 ! ZW_??S variables will contain the new S variables values
 !
-IF(LEXT_TEND) THEN
+IF(GEXT_TEND) THEN
   !Z..T variables contain the exeternal tendency, we substract it
   DO JL=1, IMICRO
     ZRVT(JL) = ZRVT(JL) - ZEXT_RV(JL) * PTSTEP
@@ -1089,14 +1151,14 @@ IF(LEXT_TEND) THEN
   IF (KRR==7) ZRHT(:) = ZRHT(:) - ZEXT_RH(:) * PTSTEP
 ENDIF
 !Tendencies computed from difference between old state and new state (can be negative)
-ZW_RVS(:,:,:) = (UNPACK(ZRVT(:), MASK=LDMICRO(:,:,:), FIELD=PRVT(:,:,:)) - PRVT(:,:,:))*ZINV_TSTEP
-ZW_RCS(:,:,:) = (UNPACK(ZRCT(:), MASK=LDMICRO(:,:,:), FIELD=PRCT(:,:,:)) - PRCT(:,:,:))*ZINV_TSTEP
-ZW_RRS(:,:,:) = (UNPACK(ZRRT(:), MASK=LDMICRO(:,:,:), FIELD=PRRT(:,:,:)) - PRRT(:,:,:))*ZINV_TSTEP
-ZW_RIS(:,:,:) = (UNPACK(ZRIT(:), MASK=LDMICRO(:,:,:), FIELD=PRIT(:,:,:)) - PRIT(:,:,:))*ZINV_TSTEP
-ZW_RSS(:,:,:) = (UNPACK(ZRST(:), MASK=LDMICRO(:,:,:), FIELD=PRST(:,:,:)) - PRST(:,:,:))*ZINV_TSTEP
-ZW_RGS(:,:,:) = (UNPACK(ZRGT(:), MASK=LDMICRO(:,:,:), FIELD=PRGT(:,:,:)) - PRGT(:,:,:))*ZINV_TSTEP
+ZW_RVS(:,:,:) = (UNPACK(ZRVT(:), MASK=ODMICRO(:,:,:), FIELD=PRVT(:,:,:)) - PRVT(:,:,:))*ZINV_TSTEP
+ZW_RCS(:,:,:) = (UNPACK(ZRCT(:), MASK=ODMICRO(:,:,:), FIELD=PRCT(:,:,:)) - PRCT(:,:,:))*ZINV_TSTEP
+ZW_RRS(:,:,:) = (UNPACK(ZRRT(:), MASK=ODMICRO(:,:,:), FIELD=PRRT(:,:,:)) - PRRT(:,:,:))*ZINV_TSTEP
+ZW_RIS(:,:,:) = (UNPACK(ZRIT(:), MASK=ODMICRO(:,:,:), FIELD=PRIT(:,:,:)) - PRIT(:,:,:))*ZINV_TSTEP
+ZW_RSS(:,:,:) = (UNPACK(ZRST(:), MASK=ODMICRO(:,:,:), FIELD=PRST(:,:,:)) - PRST(:,:,:))*ZINV_TSTEP
+ZW_RGS(:,:,:) = (UNPACK(ZRGT(:), MASK=ODMICRO(:,:,:), FIELD=PRGT(:,:,:)) - PRGT(:,:,:))*ZINV_TSTEP
 IF(KRR==7) THEN
-  ZW_RHS(:,:,:) = (UNPACK(ZRHT(:), MASK=LDMICRO(:,:,:), FIELD=PRHT(:,:,:)) - PRHT(:,:,:))*ZINV_TSTEP
+  ZW_RHS(:,:,:) = (UNPACK(ZRHT(:), MASK=ODMICRO(:,:,:), FIELD=PRHT(:,:,:)) - PRHT(:,:,:))*ZINV_TSTEP
 ELSE
   ZW_RHS(:,:,:) = 0.
 ENDIF
@@ -1127,7 +1189,7 @@ CALL CORRECT_NEGATIVITIES(KIT, KJT, KKT, KRR, ZW_RVS, ZW_RCS, ZW_RRS, &
 !
 IF(LBU_ENABLE) THEN
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RVHENI(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RVHENI(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) + ZW(:,:,:)
   PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*ZZ_LSFACT(:,:,:)
@@ -1136,7 +1198,7 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'HENU_BU_RRI',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCHONI(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCHONI(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) + ZW(:,:,:)
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
@@ -1145,7 +1207,7 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'HON_BU_RRI',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRHONG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRHONG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
@@ -1154,7 +1216,7 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'SFR_BU_RRG',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RVDEPS(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RVDEPS(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*ZZ_LSFACT(:,:,:)
@@ -1163,21 +1225,21 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'DEPS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RIAGGS(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RIAGGS(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'AGGS_BU_RRI',YDDDH, YDLDDH, YDMDDH)
   IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'AGGS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RIAUTS(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RIAUTS(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'AUTS_BU_RRI',YDDDH, YDLDDH, YDMDDH)
   IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'AUTS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RVDEPG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RVDEPG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*ZZ_LSFACT(:,:,:)
@@ -1187,21 +1249,21 @@ IF(LBU_ENABLE) THEN
 
   IF(OWARM) THEN
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RCAUTR(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RCAUTR(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
     PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'AUTO_BU_RRC',YDDDH, YDLDDH, YDMDDH)
     IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'AUTO_BU_RRR',YDDDH, YDLDDH, YDMDDH)
 
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RCACCR(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RCACCR(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
     PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'ACCR_BU_RRC',YDDDH, YDLDDH, YDMDDH)
     IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'ACCR_BU_RRR',YDDDH, YDLDDH, YDMDDH)
 
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RREVAV(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RREVAV(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
     PRVS(:,:,:) = PRVS(:,:,:) + ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*ZZ_LVFACT(:,:,:)
@@ -1211,17 +1273,17 @@ IF(LBU_ENABLE) THEN
   ENDIF
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCRIMSS(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCRIMSS(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCRIMSG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCRIMSG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RSRIMCG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RSRIMCG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'RIM_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1230,17 +1292,17 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'RIM_BU_RRG',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRACCSS(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRACCSS(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRACCSG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRACCSG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RSACCRG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RSACCRG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'ACC_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1249,11 +1311,11 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'ACC_BU_RRG',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RSMLTG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RSMLTG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCMLTSR, MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCMLTSR, MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
   IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'CMEL_BU_RRS',YDDDH, YDLDDH, YDMDDH)
@@ -1262,16 +1324,16 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'CMEL_BU_RRR',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RICFRRG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RICFRRG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRCFRIG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRCFRIG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RICFRR(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RICFRR(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
   IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'CFRZ_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1280,21 +1342,21 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'CFRZ_BU_RRG',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCWETG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCWETG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRWETG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRWETG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RIWETG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RIWETG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RSWETG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RSWETG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'WETG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1306,7 +1368,7 @@ IF(LBU_ENABLE) THEN
 
   IF(KRR==7) THEN
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RWETGH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RWETGH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'GHCV_BU_RRG',YDDDH, YDLDDH, YDMDDH)
@@ -1314,21 +1376,21 @@ IF(LBU_ENABLE) THEN
   END IF
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCDRYG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCDRYG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRDRYG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRDRYG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RIDRYG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RIDRYG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RSDRYG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RSDRYG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'DRYG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1339,7 +1401,7 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'DRYG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RGMLTR(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RGMLTR(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
@@ -1349,25 +1411,25 @@ IF(LBU_ENABLE) THEN
 
   IF(KRR==7) THEN
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RCWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RCWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RRWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RRWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RIWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RIWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RSWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RSWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RGWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RGWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'WETH_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1378,36 +1440,36 @@ IF(LBU_ENABLE) THEN
     IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'WETH_BU_RRH',YDDDH, YDLDDH, YDMDDH)
 
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RGWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RGWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'HGCV_BU_RRG',YDDDH, YDLDDH, YDMDDH)
     IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'HGCV_BU_RRH',YDDDH, YDLDDH, YDMDDH)
 
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RCDRYH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RCDRYH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RRDRYH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RRDRYH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RIDRYH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RIDRYH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RSDRYH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RSDRYH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RGDRYH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RGDRYH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RDRYHG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RDRYHG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRHS(:,:,:) = PRHS(:,:,:) - ZW(:,:,:)
     PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'DRYH_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1419,7 +1481,7 @@ IF(LBU_ENABLE) THEN
     IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'DRYH_BU_RRH',YDDDH, YDLDDH, YDMDDH)
 
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RHMLTR(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RHMLTR(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) - ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
@@ -1429,7 +1491,7 @@ IF(LBU_ENABLE) THEN
   ENDIF
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RIMLTC(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RIMLTC(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRCS(:,:,:) = PRCS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
@@ -1438,7 +1500,7 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'IMLT_BU_RRI',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCBERI(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCBERI(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRIS(:,:,:) = PRIS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
diff --git a/src/arome/modset_Ryad/mpa/micro/internals/rain_ice.F90 b/src/arome/modset_Ryad/mpa/micro/internals/rain_ice.F90
index b569d752e31c01dc0bb5809ebf3c12bf85f49422..d5f1bb22b9e1c19f130b9f3529924ceab5dff08c 100644
--- a/src/arome/modset_Ryad/mpa/micro/internals/rain_ice.F90
+++ b/src/arome/modset_Ryad/mpa/micro/internals/rain_ice.F90
@@ -1,7 +1,12 @@
+!MNH_LIC Copyright 1995-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.
+!-----------------------------------------------------------------
 !     ######spl
       SUBROUTINE RAIN_ICE ( KPROMA, KIT, KJT, KKT, KSIZE,                            &
                             OSEDIC, OCND2, HSEDIM, HSUBG_AUCV_RC, OWARM,KKA,KKU,KKL,&
-                            PTSTEP, KRR, LDMICRO, PEXN,                           &
+                            PTSTEP, KRR, ODMICRO, PEXN,                           &
                             PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,&
                             PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                   &
                             PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,       &
@@ -63,7 +68,6 @@
 !!                          'CART' for cartesian box configuration
 !!                          'MASK' for budget zone defined by a mask
 !!                          'NONE'  ' for no budget
-!!         NBUPROCCTR   : process counter used for each budget variable
 !!         LBU_RTH      : logical for budget of RTH (potential temperature)
 !!                        .TRUE. = budget of RTH
 !!                        .FALSE. = no budget of RTH
@@ -156,11 +160,12 @@
 !*       0.    DECLARATIONS
 !              ------------
 !
-USE MODD_PARAMETERS
-USE MODD_CST
-USE MODD_RAIN_ICE_DESCR
+USE MODD_CST,            ONLY: XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XTT, XRHOLW
+USE MODD_PARAMETERS,     ONLY: JPVEXT, XUNDEF
+USE MODD_PARAM_ICE,      ONLY: CSUBG_PR_PDF, CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP, LDEPOSC, LFEEDBACKT, LSEDIM_AFTER, &
+                             & NMAXITER, XMRSTEP, XTSTEP_TS, XVDEPOSC
+USE MODD_RAIN_ICE_DESCR, ONLY: XRTMIN
 USE MODD_RAIN_ICE_PARAM
-USE MODD_PARAM_ICE
 USE MODD_BUDGET
 USE MODD_LES
 USE MODD_FIELDS_ADDRESS, ONLY : & ! common fields adress
@@ -174,10 +179,11 @@ USE MODD_FIELDS_ADDRESS, ONLY : & ! common fields adress
       & IRH        ! Hail
 USE MODI_BUDGET
 USE MODI_ICE4_RAINFR_VERT
-USE MODI_ICE4_SEDIMENTATION_STAT
-USE MODI_ICE4_SEDIMENTATION_SPLIT
-USE MODI_ICE4_NUCLEATION_WRAPPER
-USE MODI_ICE4_TENDENCIES
+USE MODE_ICE4_SEDIMENTATION_STAT, ONLY: ICE4_SEDIMENTATION_STAT
+USE MODE_ICE4_SEDIMENTATION_SPLIT, ONLY: ICE4_SEDIMENTATION_SPLIT
+USE MODE_ICE4_SEDIMENTATION_SPLIT_MOMENTUM, ONLY: ICE4_SEDIMENTATION_SPLIT_MOMENTUM
+USE MODE_ICE4_NUCLEATION_WRAPPER, ONLY: ICE4_NUCLEATION_WRAPPER
+USE MODE_ICE4_TENDENCIES, ONLY: ICE4_TENDENCIES
 USE DDH_MIX, ONLY : TYP_DDH
 USE YOMLDDH, ONLY  : TLDDH
 USE YOMMDDH, ONLY  : TMDDH
@@ -203,7 +209,7 @@ INTEGER,                  INTENT(IN)    :: KKU   !uppest atmosphere array index
 INTEGER,                  INTENT(IN)    :: KKL   !vert. levels type 1=MNH -1=ARO
 REAL,                     INTENT(IN)    :: PTSTEP  ! Double Time step (single if cold start)
 INTEGER,                  INTENT(IN)    :: KRR     ! Number of moist variable
-LOGICAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)   :: LDMICRO ! mask to limit computation
+LOGICAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)   :: ODMICRO ! mask to limit computation
 !
 REAL, DIMENSION(KIT,KJT,KKT),   INTENT(IN)    :: PEXN    ! Exner function
 REAL, DIMENSION(KIT,KJT,KKT),   INTENT(IN)    :: PDZZ    ! Layer thikness (m)
@@ -265,7 +271,7 @@ INTEGER :: IKE, IKTE     !
 INTEGER :: JI, JJ, JK
 INTEGER :: ISTI, ISTJ, ISTK
 !
-!Arrays for nucleation call outisde of LDMICRO points
+!Arrays for nucleation call outisde of ODMICRO points
 REAL,    DIMENSION(KIT, KJT, KKT) :: ZW ! work array
 REAL,    DIMENSION(KIT, KJT, KKT) :: ZT ! Temperature
 REAL, DIMENSION(KIT, KJT, KKT) :: &
@@ -288,10 +294,14 @@ REAL, DIMENSION(KIT, KJT, KKT) :: &
                                 & ZHLC_HCF3D,& ! HLCLOUDS cloud fraction in high water content part
                                 & ZHLC_LCF3D,& ! HLCLOUDS cloud fraction in low water content part
                                 & ZHLC_HRC3D,& ! HLCLOUDS cloud water content in high water content
-                                & ZHLC_LRC3D   ! HLCLOUDS cloud water content in low water content
+                                & ZHLC_LRC3D,& ! HLCLOUDS cloud water content in low water content
+                                & ZHLI_HCF3D,& ! HLCLOUDS cloud fraction in high ice content part
+                                & ZHLI_LCF3D,& ! HLCLOUDS cloud fraction in low ice content part
+                                & ZHLI_HRI3D,& ! HLCLOUDS cloud water content in high ice content
+                                & ZHLI_LRI3D   ! HLCLOUDS cloud water content in high ice content
 REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2)) :: ZINPRI ! Pristine ice instant precip
 !
-LOGICAL :: LEXT_TEND
+LOGICAL :: GEXT_TEND
 LOGICAL :: LSOFT ! Must we really compute tendencies or only adjust them to new T variables
 INTEGER :: INB_ITER_MAX ! Maximum number of iterations (with real tendencies computation)
 REAL :: ZW1D
@@ -352,6 +362,10 @@ REAL,    DIMENSION(KPROMA) :: &
                         & ZHLC_HRC, & ! HLCLOUDS : LWC that is High LWC in grid
                         & ZHLC_LRC, & ! HLCLOUDS : LWC that is Low  LWC in grid
                                       !    note that ZRC = ZHLC_HRC + ZHLC_LRC
+                        & ZHLI_HCF, &
+                        & ZHLI_LCF, &
+                        & ZHLI_HRI, &
+                        & ZHLI_LRI
                         & ZRAINFR     ! rain fraction
 !
 !Output packed tendencies (for budgets only)
@@ -430,7 +444,7 @@ IKTB=1+JPVEXT
 IKTE=KKT-JPVEXT
 !
 ZINV_TSTEP=1./PTSTEP
-LEXT_TEND=.TRUE.
+GEXT_TEND=.TRUE.
 !
 ! LSFACT and LVFACT without exner
 DO JK = 1, KKT
@@ -641,7 +655,7 @@ ENDIF
 !  optimization by looking for locations where
 !  the microphysical fields are larger than a minimal value only !!!
 !
-IF (KSIZE /= COUNT(LDMICRO)) CALL ABOR1('RAIN_ICE : KSIZE /= COUNT(LDMICRO)')
+IF (KSIZE /= COUNT(ODMICRO)) CALL ABOR1('RAIN_ICE : KSIZE /= COUNT(ODMICRO)')
 
 IF (KSIZE > 0) THEN
 
@@ -676,9 +690,9 @@ IF (KSIZE > 0) THEN
     ! Setup packing parameters
     OUTER_LOOP: DO JK = ISTK, KKT
       DO JJ = ISTJ, KJT
-        IF (ANY(LDMICRO(:,JJ,JK))) THEN
+        IF (ANY(ODMICRO(:,JJ,JK))) THEN
           DO JI = ISTI, KIT
-            IF (LDMICRO(JI,JJ,JK)) THEN
+            IF (ODMICRO(JI,JJ,JK)) THEN
               IC=IC+1
               ! Initialization of variables in packed format :
               ZVART(IC,ITH)=PTHT(JI,JJ,JK)
@@ -691,7 +705,7 @@ IF (KSIZE > 0) THEN
               IF (KRR==7) THEN
                 ZVART(IC,IRH)=PRHT(JI,JJ,JK)
               ENDIF
-              IF (LEXT_TEND) THEN
+              IF (GEXT_TEND) THEN
                 ZEXTPK(IC,ITH)=PTHS(JI,JJ,JK)
                 ZEXTPK(IC,IRV)=PRVS(JI,JJ,JK)
                 ZEXTPK(IC,IRC)=PRCS(JI,JJ,JK)
@@ -751,7 +765,7 @@ IF (KSIZE > 0) THEN
       ISTJ=1
     ENDDO OUTER_LOOP
 
-    IF (LEXT_TEND) THEN
+    IF (GEXT_TEND) THEN
       DO JL = 1,IMICRO
         ZEXTPK(JL,ITH)=ZEXTPK(JL,ITH)-ZVART(JL,ITH)*ZINV_TSTEP
         ZEXTPK(JL,IRV)=ZEXTPK(JL,IRV)-ZVART(JL,IRV)*ZINV_TSTEP
@@ -818,29 +832,31 @@ IF (KSIZE > 0) THEN
         !***       4.1 Tendencies computation
         !
         ! Tendencies are *really* computed when LSOFT==.FALSE. and only adjusted otherwise
-        CALL ICE4_TENDENCIES(KPROMA,IMICRO, IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, KKT, KKL, &
-                            &KRR, LSOFT, ZCOMPUTE, &
-                            &OWARM, CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP, HSUBG_AUCV_RC, CSUBG_PR_PDF, &
-                            &ZEXN, ZRHODREF, ZLVFACT, ZLSFACT, I1, I2, I3, &
-                            &ZPRES, ZCF, ZSIGMA_RC, &
-                            &ZCIT, &
-                            &ZZT, ZVART, &
-                            &PRRT, &
-                            &ZRVHENI_MR, ZRRHONG_MR, ZRIMLTC_MR, ZRSRIMCG_MR, &
-                            &ZRCHONI, ZRVDEPS, ZRIAGGS, ZRIAUTS, ZRVDEPG, &
-                            &ZRCAUTR, ZRCACCR, ZRREVAV, &
-                            &ZRCRIMSS, ZRCRIMSG, ZRSRIMCG, ZRRACCSS, ZRRACCSG, ZRSACCRG, ZRSMLTG, ZRCMLTSR, &
-                            &ZRICFRRG, ZRRCFRIG, ZRICFRR, ZRCWETG, ZRIWETG, ZRRWETG, ZRSWETG, &
-                            &ZRCDRYG, ZRIDRYG, ZRRDRYG, ZRSDRYG, ZRWETGH, ZRWETGH_MR, ZRGMLTR, &
-                            &ZRCWETH, ZRIWETH, ZRSWETH, ZRGWETH, ZRRWETH, &
-                            &ZRCDRYH, ZRIDRYH, ZRSDRYH, ZRRDRYH, ZRGDRYH, ZRDRYHG, ZRHMLTR, &
-                            &ZRCBERI, &
-                            &ZRS_TEND, ZRG_TEND, ZRH_TEND, ZSSI, &
-                            &ZA,ZB, &
-                            &ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC)
+    CALL ICE4_TENDENCIES(KPROMA,IMICRO, IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, KKT, KKL, &
+                        &KRR, LSOFT, ZCOMPUTE, &
+                        &OWARM, CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP, &
+                        &HSUBG_AUCV_RC, HSUBG_AUCV_RI, CSUBG_PR_PDF, &
+                        &ZEXN, ZRHODREF, ZLVFACT, ZLSFACT, I1, I2, I3, &
+                        &ZPRES, ZCF, ZSIGMA_RC, &
+                        &ZCIT, &
+                        &ZZT, ZVART, &
+                        &PRRT, &
+                        &ZRVHENI_MR, ZRRHONG_MR, ZRIMLTC_MR, ZRSRIMCG_MR, &
+                        &ZRCHONI, ZRVDEPS, ZRIAGGS, ZRIAUTS, ZRVDEPG, &
+                        &ZRCAUTR, ZRCACCR, ZRREVAV, &
+                        &ZRCRIMSS, ZRCRIMSG, ZRSRIMCG, ZRRACCSS, ZRRACCSG, ZRSACCRG, ZRSMLTG, ZRCMLTSR, &
+                        &ZRICFRRG, ZRRCFRIG, ZRICFRR, ZRCWETG, ZRIWETG, ZRRWETG, ZRSWETG, &
+                        &ZRCDRYG, ZRIDRYG, ZRRDRYG, ZRSDRYG, ZRWETGH, ZRWETGH_MR, ZRGMLTR, &
+                        &ZRCWETH, ZRIWETH, ZRSWETH, ZRGWETH, ZRRWETH, &
+                        &ZRCDRYH, ZRIDRYH, ZRSDRYH, ZRRDRYH, ZRGDRYH, ZRDRYHG, ZRHMLTR, &
+                        &ZRCBERI, &
+                        &ZRS_TEND, ZRG_TEND, ZRH_TEND, ZSSI, &
+                        &ZA, ZB, &
+                        &ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC, &
+                        &ZHLI_HCF, ZHLI_LCF, ZHLI_HRI, ZHLI_LRI, PRAINFR)
 
         ! External tendencies
-        IF(LEXT_TEND) THEN
+        IF(GEXT_TEND) THEN
           DO JV=0,KRR
             DO JL=1, IMICRO
               ZA(JL,JV) = ZA(JL,JV) + ZEXTPK(JL,JV)
@@ -1007,7 +1023,7 @@ IF (KSIZE > 0) THEN
       ENDDO
     ENDDO
 
-    IF(LEXT_TEND) THEN
+    IF(GEXT_TEND) THEN
       !Z..T variables contain the external tendency, we substract it
       DO JV=0,KRR
         DO JL=1, IMICRO
@@ -1056,7 +1072,7 @@ ENDIF ! KSIZE > 0
 
 !IF (LHOOK) CALL DR_HOOK('RAIN_ICE:POST_MICRO', 0, ZHOOK_HANDLE3)
 
-!*       6.     COMPUTES THE SLOW COLD PROCESS SOURCES OUTSIDE OF LDMICRO POINTS
+!*       6.     COMPUTES THE SLOW COLD PROCESS SOURCES OUTSIDE OF ODMICRO POINTS
 !               ----------------------------------------------------------------
 !
 DO JK = 1, KKT
@@ -1075,7 +1091,7 @@ DO JK = 1, KKT
   ENDDO
 ENDDO
 !
-CALL ICE4_NUCLEATION_WRAPPER(KIT, KJT, KKT, .NOT. LDMICRO, &
+CALL ICE4_NUCLEATION_WRAPPER(KIT, KJT, KKT, .NOT. ODMICRO, &
                              PTHT, PPABST, PRHODREF, PEXN, ZZ_LSFACT/PEXN, ZT, &
                              PRVT, &
                              PCIT, ZZ_RVHENI_MR)
@@ -1116,7 +1132,7 @@ CALL CORRECT_NEGATIVITIES(KIT, KJT, KKT, KRR, ZWR(:,:,:,IRV), ZWR(:,:,:,IRC), ZW
 !
 IF(LBU_ENABLE) THEN
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RVHENI(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RVHENI(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) + ZW(:,:,:)
   PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*ZZ_LSFACT(:,:,:)
@@ -1125,7 +1141,7 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'HENU_BU_RRI',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCHONI(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCHONI(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) + ZW(:,:,:)
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
@@ -1134,7 +1150,7 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'HON_BU_RRI',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRHONG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRHONG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
@@ -1143,7 +1159,7 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'SFR_BU_RRG',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RVDEPS(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RVDEPS(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*ZZ_LSFACT(:,:,:)
@@ -1152,21 +1168,21 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'DEPS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RIAGGS(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RIAGGS(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'AGGS_BU_RRI',YDDDH, YDLDDH, YDMDDH)
   IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'AGGS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RIAUTS(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RIAUTS(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'AUTS_BU_RRI',YDDDH, YDLDDH, YDMDDH)
   IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'AUTS_BU_RRS',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RVDEPG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RVDEPG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*ZZ_LSFACT(:,:,:)
@@ -1176,21 +1192,21 @@ IF(LBU_ENABLE) THEN
 
   IF(OWARM) THEN
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RCAUTR(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RCAUTR(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
     PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'AUTO_BU_RRC',YDDDH, YDLDDH, YDMDDH)
     IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'AUTO_BU_RRR',YDDDH, YDLDDH, YDMDDH)
 
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RCACCR(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RCACCR(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
     PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_RC) CALL BUDGET(PRCS(:,:,:)*PRHODJ(:,:,:), 7, 'ACCR_BU_RRC',YDDDH, YDLDDH, YDMDDH)
     IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'ACCR_BU_RRR',YDDDH, YDLDDH, YDMDDH)
 
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RREVAV(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RREVAV(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
     PRVS(:,:,:) = PRVS(:,:,:) + ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*ZZ_LVFACT(:,:,:)
@@ -1200,17 +1216,17 @@ IF(LBU_ENABLE) THEN
   ENDIF
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCRIMSS(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCRIMSS(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCRIMSG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCRIMSG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RSRIMCG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RSRIMCG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'RIM_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1219,17 +1235,17 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'RIM_BU_RRG',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRACCSS(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRACCSS(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PRSS(:,:,:) = PRSS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRACCSG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRACCSG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RSACCRG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RSACCRG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'ACC_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1238,11 +1254,11 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'ACC_BU_RRG',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RSMLTG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RSMLTG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCMLTSR, MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCMLTSR, MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
   IF (LBUDGET_RS) CALL BUDGET(PRSS(:,:,:)*PRHODJ(:,:,:), 10,'CMEL_BU_RRS',YDDDH, YDLDDH, YDMDDH)
@@ -1251,16 +1267,16 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RR) CALL BUDGET(PRRS(:,:,:)*PRHODJ(:,:,:), 8, 'CMEL_BU_RRR',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RICFRRG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RICFRRG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRCFRIG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRCFRIG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RICFRR(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RICFRR(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
   IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'CFRZ_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1269,21 +1285,21 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'CFRZ_BU_RRG',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCWETG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCWETG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRWETG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRWETG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RIWETG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RIWETG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RSWETG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RSWETG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'WETG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1295,7 +1311,7 @@ IF(LBU_ENABLE) THEN
 
   IF(KRR==7) THEN
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RWETGH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RWETGH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'GHCV_BU_RRG',YDDDH, YDLDDH, YDMDDH)
@@ -1303,21 +1319,21 @@ IF(LBU_ENABLE) THEN
   END IF
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCDRYG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCDRYG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RRDRYG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RRDRYG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RIDRYG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RIDRYG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RSDRYG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RSDRYG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
   IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'DRYG_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1328,7 +1344,7 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'DRYG_BU_RRG',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RGMLTR(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RGMLTR(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
   PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
@@ -1338,25 +1354,25 @@ IF(LBU_ENABLE) THEN
 
   IF(KRR==7) THEN
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RCWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RCWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RRWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RRWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RIWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RIWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RSWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RSWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RGWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RGWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'WETH_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1367,36 +1383,36 @@ IF(LBU_ENABLE) THEN
     IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'WETH_BU_RRH',YDDDH, YDLDDH, YDMDDH)
 
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RGWETH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RGWETH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_RG) CALL BUDGET(PRGS(:,:,:)*PRHODJ(:,:,:), 11,'HGCV_BU_RRG',YDDDH, YDLDDH, YDMDDH)
     IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'HGCV_BU_RRH',YDDDH, YDLDDH, YDMDDH)
 
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RCDRYH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RCDRYH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RRDRYH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RRDRYH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRRS(:,:,:) = PRRS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RIDRYH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RIDRYH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RSDRYH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RSDRYH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRSS(:,:,:) = PRSS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RGDRYH(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RGDRYH(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRGS(:,:,:) = PRGS(:,:,:) - ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) + ZW(:,:,:)
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RDRYHG(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RDRYHG(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRHS(:,:,:) = PRHS(:,:,:) - ZW(:,:,:)
     PRGS(:,:,:) = PRGS(:,:,:) + ZW(:,:,:)
     IF (LBUDGET_TH) CALL BUDGET(PTHS(:,:,:)*PRHODJ(:,:,:), 4, 'DRYH_BU_RTH',YDDDH, YDLDDH, YDMDDH)
@@ -1408,7 +1424,7 @@ IF(LBU_ENABLE) THEN
     IF (LBUDGET_RH) CALL BUDGET(PRHS(:,:,:)*PRHODJ(:,:,:), 12,'DRYH_BU_RRH',YDDDH, YDLDDH, YDMDDH)
 
     ZW(:,:,:) = 0.
-    ZW(:,:,:)=UNPACK(ZTOT_RHMLTR(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+    ZW(:,:,:)=UNPACK(ZTOT_RHMLTR(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
     PRRS(:,:,:) = PRRS(:,:,:) + ZW(:,:,:)
     PRHS(:,:,:) = PRHS(:,:,:) - ZW(:,:,:)
     PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
@@ -1418,7 +1434,7 @@ IF(LBU_ENABLE) THEN
   ENDIF
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RIMLTC(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RIMLTC(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRIS(:,:,:) = PRIS(:,:,:) - ZW(:,:,:)
   PRCS(:,:,:) = PRCS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) - ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
@@ -1427,7 +1443,7 @@ IF(LBU_ENABLE) THEN
   IF (LBUDGET_RI) CALL BUDGET(PRIS(:,:,:)*PRHODJ(:,:,:), 9, 'IMLT_BU_RRI',YDDDH, YDLDDH, YDMDDH)
 
   ZW(:,:,:) = 0.
-  ZW(:,:,:)=UNPACK(ZTOT_RCBERI(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
+  ZW(:,:,:)=UNPACK(ZTOT_RCBERI(:), MASK=ODMICRO(:,:,:), FIELD=ZW(:,:,:))*ZINV_TSTEP
   PRCS(:,:,:) = PRCS(:,:,:) - ZW(:,:,:)
   PRIS(:,:,:) = PRIS(:,:,:) + ZW(:,:,:)
   PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:)*(ZZ_LSFACT(:,:,:)-ZZ_LVFACT(:,:,:))
@@ -1548,10 +1564,10 @@ IF(LSEDIM_AFTER) THEN
     !   It is initialized with the m.r. at T and is modified by two tendencies:
     !   sedimentation tendency and an external tendency which represents all other
     !   processes (mainly advection and microphysical processes). If both tendencies
-    !   are negative, sedimentation can remove a species at a given sub-timestep. From
+    !   are negative, sedimentation can remove a specie at a given sub-timestep. From
     !   this point sedimentation stops for the remaining sub-timesteps but the other tendency
     !   will be still active and will lead to negative values.
-    !   We could prevent the algorithm to not consume too much a species, instead we apply
+    !   We could prevent the algorithm to not consume too much a specie, instead we apply
     !   a correction here.
     CALL CORRECT_NEGATIVITIES(KIT, KJT, KKT, KRR, PRVS, PRCS, PRRS, &
                              &PRIS, PRSS, PRGS, &
diff --git a/src/arome/modset_Ryad/mpa/micro/module/modi_ice4_rrhong.F90 b/src/arome/modset_Ryad/mpa/micro/module/modi_ice4_rrhong.F90
deleted file mode 100644
index 24cb97d499e483220ae9159ca74fa2d2b8545d26..0000000000000000000000000000000000000000
--- a/src/arome/modset_Ryad/mpa/micro/module/modi_ice4_rrhong.F90
+++ /dev/null
@@ -1,3 +0,0 @@
-MODULE MODI_ICE4_RRHONG
-! dead code
-END MODULE MODI_ICE4_RRHONG
diff --git a/src/arome/modset_Ryad/mpa/micro/module/modi_ice4_tendencies.F90 b/src/arome/modset_Ryad/mpa/micro/module/modi_ice4_tendencies.F90
deleted file mode 100644
index 32ec019cb40ce36faf9941448df4334b443236a5..0000000000000000000000000000000000000000
--- a/src/arome/modset_Ryad/mpa/micro/module/modi_ice4_tendencies.F90
+++ /dev/null
@@ -1,106 +0,0 @@
-MODULE MODI_ICE4_TENDENCIES
-INTERFACE
-SUBROUTINE ICE4_TENDENCIES(KPROMA,KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, &
-                          &KRR, LDSOFT, PCOMPUTE, &
-                          &OWARM, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, HSUBG_AUCV_RC, HSUBG_PR_PDF, &
-                          &PEXN, PRHODREF, PLVFACT, PLSFACT, K1, K2, K3, &
-                          &PPRES, PCF, PSIGMA_RC, &
-                          &PCIT, &
-                          &PT, PVART, &
-                          &PRRT3D, &
-                          &PRVHENI_MR, PRRHONG_MR, PRIMLTC_MR, PRSRIMCG_MR, &
-                          &PRCHONI, PRVDEPS, PRIAGGS, PRIAUTS, PRVDEPG, &
-                          &PRCAUTR, PRCACCR, PRREVAV, &
-                          &PRCRIMSS, PRCRIMSG, PRSRIMCG, PRRACCSS, PRRACCSG, PRSACCRG, PRSMLTG, PRCMLTSR, &
-                          &PRICFRRG, PRRCFRIG, PRICFRR, PRCWETG, PRIWETG, PRRWETG, PRSWETG, &
-                          &PRCDRYG, PRIDRYG, PRRDRYG, PRSDRYG, PRWETGH, PRWETGH_MR, PRGMLTR, &
-                          &PRCWETH, PRIWETH, PRSWETH, PRGWETH, PRRWETH, &
-                          &PRCDRYH, PRIDRYH, PRSDRYH, PRRDRYH, PRGDRYH, PRDRYHG, PRHMLTR, &
-                          &PRCBERI, &
-                          &PRS_TEND, PRG_TEND, PRH_TEND, PSSI, &
-                          &PA, PB, &
-                          &PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC)
-IMPLICIT NONE
-INTEGER,                      INTENT(IN)    :: KPROMA,KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL
-INTEGER,                      INTENT(IN)    :: KRR
-LOGICAL,                      INTENT(IN)    :: LDSOFT
-REAL, DIMENSION(KPROMA),      INTENT(IN)    :: PCOMPUTE
-LOGICAL,                      INTENT(IN)    :: OWARM
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_RC_RR_ACCR
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_RR_EVAP
-CHARACTER(len=4),             INTENT(IN)    :: HSUBG_AUCV_RC
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_PR_PDF ! pdf for subgrid precipitation
-REAL, DIMENSION(KPROMA),      INTENT(IN)    :: PEXN
-REAL, DIMENSION(KPROMA),      INTENT(IN)    :: PRHODREF
-REAL, DIMENSION(KPROMA),      INTENT(IN)    :: PLVFACT
-REAL, DIMENSION(KPROMA),      INTENT(IN)    :: PLSFACT
-INTEGER, DIMENSION(KPROMA),   INTENT(IN)    :: K1
-INTEGER, DIMENSION(KPROMA),   INTENT(IN)    :: K2
-INTEGER, DIMENSION(KPROMA),   INTENT(IN)    :: K3
-REAL, DIMENSION(KPROMA),      INTENT(IN)    :: PPRES
-REAL, DIMENSION(KPROMA),      INTENT(IN)    :: PCF
-REAL, DIMENSION(KPROMA),      INTENT(IN)    :: PSIGMA_RC
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PCIT
-REAL, DIMENSION(KPROMA),      INTENT(IN)    :: PT
-REAL, DIMENSION(KPROMA,0:KRR),INTENT(IN)    :: PVART
-REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN)    :: PRRT3D
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRVHENI_MR
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRRHONG_MR
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRIMLTC_MR
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRSRIMCG_MR
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRCHONI
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRVDEPS
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRIAGGS
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRIAUTS
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRVDEPG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRCAUTR
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRCACCR
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRREVAV
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRCRIMSS
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRCRIMSG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRSRIMCG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRRACCSS
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRRACCSG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRSACCRG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRSMLTG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRCMLTSR
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRICFRRG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRRCFRIG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRICFRR
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRCWETG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRIWETG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRRWETG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRSWETG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRCDRYG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRIDRYG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRRDRYG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRSDRYG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRWETGH
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRWETGH_MR
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRGMLTR
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRCWETH
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRIWETH
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRSWETH
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRGWETH
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRRWETH
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRCDRYH
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRIDRYH
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRSDRYH
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRRDRYH
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRGDRYH
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRDRYHG
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRHMLTR
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PRCBERI
-REAL, DIMENSION(KPROMA, 8),   INTENT(INOUT) :: PRS_TEND
-REAL, DIMENSION(KPROMA, 8),   INTENT(INOUT) :: PRG_TEND
-REAL, DIMENSION(KPROMA, 10),  INTENT(INOUT) :: PRH_TEND
-REAL, DIMENSION(KPROMA),      INTENT(INOUT) :: PSSI
-REAL, DIMENSION(KPROMA,0:KRR),INTENT(OUT)   :: PA
-REAL, DIMENSION(KPROMA,0:KRR),INTENT(OUT)   :: PB
-REAL, DIMENSION(KPROMA),      INTENT(OUT)   :: PHLC_HCF
-REAL, DIMENSION(KPROMA),      INTENT(OUT)   :: PHLC_LCF
-REAL, DIMENSION(KPROMA),      INTENT(OUT)   :: PHLC_HRC
-REAL, DIMENSION(KPROMA),      INTENT(OUT)   :: PHLC_LRC
-END SUBROUTINE ICE4_TENDENCIES
-END INTERFACE
-END MODULE MODI_ICE4_TENDENCIES
diff --git a/src/arome/modset_Ryad/mpa/micro/module/modd_fields_address.F90 b/src/common/micro/modd_fields_address.F90
similarity index 100%
rename from src/arome/modset_Ryad/mpa/micro/module/modd_fields_address.F90
rename to src/common/micro/modd_fields_address.F90
diff --git a/src/common/micro/mode_ice4_compute_pdf.F90 b/src/common/micro/mode_ice4_compute_pdf.F90
index 2058f4e5ad7e2e3118afaca7f6b6e4a4cc415ec3..6fb091d6c2c54691f9cad6371574c0f6417049d3 100644
--- a/src/common/micro/mode_ice4_compute_pdf.F90
+++ b/src/common/micro/mode_ice4_compute_pdf.F90
@@ -248,13 +248,24 @@ ENDIF
 !Ice water split between high and low content part is done according to autoconversion option
 ZCRIAUTI(:)=MIN(XCRIAUTI,10**(XACRIAUTI*(PT(:)-XTT)+XBCRIAUTI)) ! Autoconversion ri threshold
 IF(HSUBG_AUCV_RI=='NONE') THEN
+
+
+!La raison de la non reproduction n'est pas comprise avec certitude
+!Il faudra vérifier que le code fait toujours ce qui est attendu
+!une fois tous les éléments assemblés
+#ifdef REPRO48
+  PHLI_HCF(:)=1.
+  PHLI_LCF(:)=0.
+  PHLI_HRI(:)=PRIT(:)
+  PHLI_LRI(:)=0.
+#else
   !Cloud water is entirely in low or high part
   WHERE(PRIT(:)>ZCRIAUTI(:))
     PHLI_HCF(:)=1.
     PHLI_LCF(:)=0.
     PHLI_HRI(:)=PRIT(:)
     PHLI_LRI(:)=0.
-  ELSEWHERE(PRIT(:)>XRTMIN(2))
+  ELSEWHERE(PRIT(:)>XRTMIN(4))
     PHLI_HCF(:)=0.
     PHLI_LCF(:)=1.
     PHLI_HRI(:)=0.
@@ -265,6 +276,7 @@ IF(HSUBG_AUCV_RI=='NONE') THEN
     PHLI_HRI(:)=0.
     PHLI_LRI(:)=0.
   END WHERE
+#endif
 ELSEIF(HSUBG_AUCV_RI=='CLFR') THEN
   !Cloud water is only in the cloudy part and entirely in low or high part
   WHERE(PCF(:)>0. .AND. PRIT(:)>ZCRIAUTI(:)*PCF(:))
@@ -272,7 +284,7 @@ ELSEIF(HSUBG_AUCV_RI=='CLFR') THEN
     PHLI_LCF(:)=0.
     PHLI_HRI(:)=PRIT(:)
     PHLI_LRI(:)=0.
-  ELSEWHERE(PCF(:)>0. .AND. PRIT(:)>XRTMIN(2))
+  ELSEWHERE(PCF(:)>0. .AND. PRIT(:)>XRTMIN(4))
     PHLI_HCF(:)=0.
     PHLI_LCF(:)=PCF(:)
     PHLI_HRI(:)=0.0
diff --git a/src/common/micro/mode_ice4_slow.F90 b/src/common/micro/mode_ice4_slow.F90
index 813138b9daa905df8fa831b10d4f60d982e0daec..d4282190654f60bc33f820cce7d441cc8d311a5d 100644
--- a/src/common/micro/mode_ice4_slow.F90
+++ b/src/common/micro/mode_ice4_slow.F90
@@ -168,7 +168,7 @@ ENDIF
 !
 DO JL=1, KSIZE
   ZMASK(JL)=MAX(0., -SIGN(1., XRTMIN(4)-PHLI_HRI(JL))) * & ! PHLI_HRI(:)>XRTMIN(4)
-           &MAX(0., -SIGN(1., 1.E-20-PHLI_HCF(JL))) * & ! PHLI_HCF(:) .GT. 0.
+           &MAX(0., -SIGN(1., 1.E-20-PHLI_HCF(JL))) * & ! PHLI_HCF(:) .GT. 1.E-20
            &PCOMPUTE(JL)
 ENDDO
 IF(LDSOFT) THEN
diff --git a/src/arome/modset_Ryad/mpa/micro/internals/ice4_tendencies.F90 b/src/common/micro/mode_ice4_tendencies.F90
similarity index 57%
rename from src/arome/modset_Ryad/mpa/micro/internals/ice4_tendencies.F90
rename to src/common/micro/mode_ice4_tendencies.F90
index aeffaef19e9f3c71a520be3f5366f4d12a34a8f0..766b7e4b03a296c83523ccafd857d0e7eb0db5f4 100644
--- a/src/arome/modset_Ryad/mpa/micro/internals/ice4_tendencies.F90
+++ b/src/common/micro/mode_ice4_tendencies.F90
@@ -1,11 +1,35 @@
-SUBROUTINE ICE4_TENDENCIES(KPROMA,KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, &
-                          &KRR, LDSOFT, PCOMPUTE, &
-                          &OWARM, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, HSUBG_AUCV_RC, HSUBG_PR_PDF, &
-                          &PEXN, PRHODREF, PLVFACT, PLSFACT, K1, K2, K3,&
+!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+MODULE MODE_ICE4_TENDENCIES
+IMPLICIT NONE
+CONTAINS
+!
+!
+!
+!
+!
+!
+!!! NOTE: *quand l'array syntax sera remplacée par des boucles, en profiter
+!!!        pour supprimer les arguments PA et PB des différentes routines
+!!!        pour generaliser le fonctionnement de nucleation, rimltc et rrhong
+!!!       *avec loop, pcompute *et* llcompute utiles tous les deux?
+!
+!
+!
+!
+!
+!
+SUBROUTINE ICE4_TENDENCIES(KPROMA, KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, &
+                          &KRR, ODSOFT, PCOMPUTE, &
+                          &OWARM, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, &
+                          &HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF, &
+                          &PEXN, PRHODREF, PLVFACT, PLSFACT, K1, K2, K3, &
                           &PPRES, PCF, PSIGMA_RC, &
                           &PCIT, &
                           &PT, PVART, &
-                          &PRRT3D, &
                           &PRVHENI_MR, PRRHONG_MR, PRIMLTC_MR, PRSRIMCG_MR, &
                           &PRCHONI, PRVDEPS, PRIAGGS, PRIAUTS, PRVDEPG, &
                           &PRCAUTR, PRCACCR, PRREVAV, &
@@ -17,7 +41,9 @@ SUBROUTINE ICE4_TENDENCIES(KPROMA,KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE,
                           &PRCBERI, &
                           &PRS_TEND, PRG_TEND, PRH_TEND, PSSI, &
                           &PA, PB, &
-                          &PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC)
+                          &PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, &
+                          &PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI, &
+                          &PRAINFR)
 !!
 !!**  PURPOSE
 !!    -------
@@ -30,17 +56,19 @@ SUBROUTINE ICE4_TENDENCIES(KPROMA,KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE,
 !!    MODIFICATIONS
 !!    -------------
 !!
+!  P. Wautelet 29/05/2019: remove PACK/UNPACK intrinsics (to get more performance and better OpenACC support)
 !!     R. El Khatib 24-Aug-2021 Optimizations
 !
 !
 !*      0. DECLARATIONS
 !          ------------
 !
-USE MODD_CST
-USE MODD_RAIN_ICE_PARAM
-USE MODD_RAIN_ICE_DESCR
-USE MODD_PARAM_ICE, ONLY : CSNOWRIMING, LFEEDBACKT
 USE MODD_BUDGET,    ONLY : LBU_ENABLE
+USE MODD_CST,            ONLY: XALPI, XBETAI, XCI, XCPV, XEPSILO, XGAMI, XLSTT, XMD, XMV, XP00, XRV, XTT
+USE MODD_PARAM_ICE,      ONLY: CSNOWRIMING
+USE MODD_RAIN_ICE_DESCR, ONLY: XLBDAS_MAX, XLBEXG, XLBEXH, XLBEXR, XLBEXS, XLBG, XLBH, XLBR, XLBS, XRTMIN
+USE MODD_RAIN_ICE_PARAM, ONLY: XSCFAC
+!
 USE MODD_FIELDS_ADDRESS, ONLY : & ! common fields adress
       & ITH,     & ! Potential temperature
       & IRV,     & ! Water vapor
@@ -50,17 +78,20 @@ USE MODD_FIELDS_ADDRESS, ONLY : & ! common fields adress
       & IRS,     & ! Snow/aggregate
       & IRG,     & ! Graupel
       & IRH        ! Hail
-USE MODI_ICE4_NUCLEATION
-USE MODI_ICE4_RSRIMCG_OLD
-USE MODI_ICE4_COMPUTE_PDF
-USE MODI_ICE4_RAINFR_VERT
-USE MODI_ICE4_SLOW
-USE MODI_ICE4_WARM
-USE MODI_ICE4_FAST_RS
-USE MODI_ICE4_FAST_RG
-USE MODI_ICE4_FAST_RH
-USE MODI_ICE4_FAST_RI
-
+!
+USE MODE_ICE4_NUCLEATION, ONLY: ICE4_NUCLEATION
+USE MODE_ICE4_RRHONG, ONLY: ICE4_RRHONG
+USE MODE_ICE4_RIMLTC, ONLY: ICE4_RIMLTC
+USE MODE_ICE4_RSRIMCG_OLD, ONLY: ICE4_RSRIMCG_OLD
+USE MODE_ICE4_COMPUTE_PDF, ONLY: ICE4_COMPUTE_PDF
+USE MODE_ICE4_RAINFR_VERT, ONLY: ICE4_RAINFR_VERT
+USE MODE_ICE4_SLOW, ONLY: ICE4_SLOW
+USE MODE_ICE4_WARM, ONLY: ICE4_WARM
+USE MODE_ICE4_FAST_RS, ONLY: ICE4_FAST_RS
+USE MODE_ICE4_FAST_RG, ONLY: ICE4_FAST_RG
+USE MODE_ICE4_FAST_RH, ONLY: ICE4_FAST_RH
+USE MODE_ICE4_FAST_RI, ONLY: ICE4_FAST_RI
+!
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !
@@ -68,20 +99,20 @@ IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
 !
-INTEGER,                      INTENT(IN)    :: KPROMA,KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL
+INTEGER,                      INTENT(IN)    :: KPROMA, KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL
 INTEGER,                      INTENT(IN)    :: KRR
-LOGICAL,                      INTENT(IN)    :: LDSOFT
+LOGICAL,                      INTENT(IN)    :: ODSOFT
 REAL, DIMENSION(KPROMA),       INTENT(IN)    :: PCOMPUTE
 LOGICAL,                      INTENT(IN)    :: OWARM
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_RC_RR_ACCR
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_RR_EVAP
-CHARACTER(len=4),             INTENT(IN)    :: HSUBG_AUCV_RC
-CHARACTER*80,                 INTENT(IN)    :: HSUBG_PR_PDF ! pdf for subgrid precipitation
+CHARACTER(LEN=80),            INTENT(IN)    :: HSUBG_RC_RR_ACCR
+CHARACTER(LEN=80),            INTENT(IN)    :: HSUBG_RR_EVAP
+CHARACTER(LEN=4),             INTENT(IN)    :: HSUBG_AUCV_RC
+CHARACTER(LEN=80),            INTENT(IN)    :: HSUBG_AUCV_RI
+CHARACTER(LEN=80),            INTENT(IN)    :: HSUBG_PR_PDF ! pdf for subgrid precipitation
 REAL, DIMENSION(KPROMA),       INTENT(IN)    :: PEXN
 REAL, DIMENSION(KPROMA),       INTENT(IN)    :: PRHODREF
 REAL, DIMENSION(KPROMA),       INTENT(IN)    :: PLVFACT
 REAL, DIMENSION(KPROMA),       INTENT(IN)    :: PLSFACT
-
 INTEGER, DIMENSION(KPROMA),    INTENT(IN)    :: K1
 INTEGER, DIMENSION(KPROMA),    INTENT(IN)    :: K2
 INTEGER, DIMENSION(KPROMA),    INTENT(IN)    :: K3
@@ -91,18 +122,10 @@ REAL, DIMENSION(KPROMA),       INTENT(IN)    :: PSIGMA_RC
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PCIT
 REAL, DIMENSION(KPROMA),       INTENT(IN)    :: PT
 REAL, DIMENSION(KPROMA,0:KRR), INTENT(IN)    :: PVART
-
-
-
-
-
-
-
-REAL, DIMENSION(KIT,KJT,KKT),  INTENT(IN)    :: PRRT3D
 REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRVHENI_MR
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRRHONG_MR
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRIMLTC_MR
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRSRIMCG_MR
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRRHONG_MR
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRIMLTC_MR
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRSRIMCG_MR
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRCHONI
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRVDEPS
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRIAGGS
@@ -111,65 +134,56 @@ REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRVDEPG
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRCAUTR
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRCACCR
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRREVAV
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRCRIMSS
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRCRIMSG
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRSRIMCG
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRRACCSS
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRRACCSG
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRSACCRG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRCRIMSS
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRCRIMSG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRSRIMCG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRRACCSS
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRRACCSG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRSACCRG
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRSMLTG
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRCMLTSR
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRICFRRG
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRRCFRIG
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRICFRR
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRCWETG
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRIWETG
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRRWETG
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRSWETG
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRCDRYG
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRIDRYG
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRRDRYG
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRSDRYG
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRWETGH
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRWETGH_MR
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRCWETG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRIWETG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRRWETG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRSWETG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRCDRYG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRIDRYG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRRDRYG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRSDRYG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRWETGH
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRWETGH_MR
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRGMLTR
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRCWETH
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRIWETH
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRSWETH
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRGWETH
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRRWETH
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRCDRYH
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRIDRYH
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRSDRYH
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRRDRYH
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRGDRYH
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRDRYHG
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRCWETH
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRIWETH
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRSWETH
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRGWETH
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRRWETH
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRCDRYH
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRIDRYH
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRSDRYH
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRRDRYH
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRGDRYH
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PRDRYHG
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRHMLTR
 REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PRCBERI
 REAL, DIMENSION(KPROMA, 8),    INTENT(INOUT) :: PRS_TEND
 REAL, DIMENSION(KPROMA, 8),    INTENT(INOUT) :: PRG_TEND
 REAL, DIMENSION(KPROMA, 10),   INTENT(INOUT) :: PRH_TEND
-REAL, DIMENSION(KPROMA),       INTENT(INOUT) :: PSSI
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PSSI
 REAL, DIMENSION(KPROMA,0:KRR), INTENT(OUT)   :: PA
-
-
-
-
-
-
-
 REAL, DIMENSION(KPROMA,0:KRR), INTENT(OUT)   :: PB
-
-
-
-
-
-
-
 REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PHLC_HCF
 REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PHLC_LCF
 REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PHLC_HRC
 REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PHLC_LRC
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PHLI_HCF
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PHLI_LCF
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PHLI_HRI
+REAL, DIMENSION(KPROMA),       INTENT(OUT)   :: PHLI_LRI
+REAL, DIMENSION(KIT,KJT,KKT), INTENT(OUT)   :: PRAINFR   ! Rain fraction
 !
 !*       0.2  declaration of local variables
 !
@@ -178,13 +192,13 @@ REAL, DIMENSION(KPROMA) :: ZT, ZRAINFR, &
                         & ZKA, ZDV, ZAI, ZCJ, &
                         & ZLBDAR, ZLBDAS, ZLBDAG, ZLBDAH, ZLBDAR_RF, &
                         & ZRGSI, ZRGSI_MR
-REAL, DIMENSION(KIT,KJT,KKT) :: ZRRT3D, ZRAINFR3D
+REAL, DIMENSION(KIT,KJT,KKT) :: ZRRT3D, ZRST3D, ZRGT3D, ZRHT3D
 INTEGER :: JL, JV
 REAL, DIMENSION(KPROMA) :: ZWETG ! 1. if graupel growths in wet mode, 0. otherwise
-REAL(KIND=JPRB) :: ZZW
+REAL :: ZZW
 LOGICAL :: LLRFR
 LOGICAL, DIMENSION(KPROMA) :: LLCOMPUTE
-
+!
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 
 IF (LHOOK) CALL DR_HOOK('ICE4_TENDENCIES', 0, ZHOOK_HANDLE)
@@ -195,100 +209,74 @@ LLCOMPUTE(1:KSIZE)=PCOMPUTE(1:KSIZE)==1.
 ZT(:)=PT(:)
 DO JV=0,KRR
   ZVART(:,JV)=PVART(:,JV)
-! better fill PA/PB arrays always inside this subroutine. REK.
   PA(:,JV)=0.
+  PB(:,JV)=0.
 ENDDO
-
-IF(LDSOFT) THEN
-
+!
+IF(ODSOFT) THEN
   PRVHENI_MR(:)=0.
   PRRHONG_MR(:)=0.
   PRIMLTC_MR(:)=0.
   PRSRIMCG_MR(:)=0.
-  DO JV=0,KRR
-    PB(:,JV)=0.
-  ENDDO
-
 ELSE
   !
   !*       2.     COMPUTES THE SLOW COLD PROCESS SOURCES
   !               --------------------------------------
-
   CALL ICE4_NUCLEATION(KSIZE, LLCOMPUTE, &
                        ZVART(:,ITH), PPRES, PRHODREF, PEXN, PLSFACT, ZT, &
                        ZVART(:,IRV), &
                        PCIT, PRVHENI_MR)
+  DO JL=1, KSIZE
+    ZVART(JL,ITH)=ZVART(JL,ITH) + PRVHENI_MR(JL)*PLSFACT(JL)
+    ZT(JL) = ZVART(JL,ITH) * PEXN(JL)
+    ZVART(JL,IRV)=ZVART(JL,IRV) - PRVHENI_MR(JL)
+    ZVART(JL,IRI)=ZVART(JL,IRI) + PRVHENI_MR(JL)
+  ENDDO
+  !
+  !*       3.3     compute the spontaneous freezing source: RRHONG
+  !
+  CALL ICE4_RRHONG(KSIZE, PCOMPUTE, &
+                  &PEXN, PLVFACT, PLSFACT, &
+                  &ZT, ZVART(:,IRR), &
+                  &ZVART(:,ITH), &
+                  &PRRHONG_MR)
+  DO JL=1, KSIZE
+    ZVART(JL,ITH) = ZVART(JL,ITH) + PRRHONG_MR(JL)*(PLSFACT(JL)-PLVFACT(JL)) ! f(L_f*(RRHONG))
+    ZT(JL) = ZVART(JL,ITH) * PEXN(JL)
+    ZVART(JL,IRR) = ZVART(JL,IRR) - PRRHONG_MR(JL)
+    ZVART(JL,IRG) = ZVART(JL,IRG) + PRRHONG_MR(JL)
+  ENDDO
+  !
+  !*       7.1    cloud ice melting
+  !
+  CALL ICE4_RIMLTC(KSIZE, PCOMPUTE, &
+                  &PEXN, PLVFACT, PLSFACT, &
+                  &ZT, &
+                  &ZVART(:,ITH), ZVART(:,IRI), &
+                  &PRIMLTC_MR)
+  DO JL=1, KSIZE
+    ZVART(JL,ITH) = ZVART(JL,ITH) - PRIMLTC_MR(JL)*(PLSFACT(JL)-PLVFACT(JL)) ! f(L_f*(-RIMLTC))
+    ZT(JL) = ZVART(JL,ITH) * PEXN(JL)
+    ZVART(JL,IRC) = ZVART(JL,IRC) + PRIMLTC_MR(JL)
+    ZVART(JL,IRI) = ZVART(JL,IRI) - PRIMLTC_MR(JL)
+  ENDDO
 
-    DO JL=1, KSIZE
-      ZVART(JL,ITH)=ZVART(JL,ITH) + PRVHENI_MR(JL)*PLSFACT(JL)
-      ZT(JL) = ZVART(JL,ITH) * PEXN(JL)
-      ZVART(JL,IRV)=ZVART(JL,IRV) - PRVHENI_MR(JL)
-      ZVART(JL,IRI)=ZVART(JL,IRI) + PRVHENI_MR(JL)
-    ENDDO
-    !
-    !*       3.3     compute the spontaneous freezing source: RRHONG
-    !
-    DO JL=1, KSIZE
-      IF (ZT(JL)<XTT-35.0 .AND. ZVART(JL,IRR)>XRTMIN(3) .AND. LLCOMPUTE(JL)) THEN
-        PRRHONG_MR(JL)=ZVART(JL,IRR)
-      ELSE
-        PRRHONG_MR(JL) = 0.
-      ENDIF
-    ENDDO
-    IF (LFEEDBACKT) THEN
-      DO JL=1, KSIZE
-        !Limitation due to -35 crossing of temperature
-        PRRHONG_MR(JL)=MIN(PRRHONG_MR(JL), MAX(0., ((XTT-35.)/PEXN(JL)-ZVART(JL,ITH))/(PLSFACT(JL)-PLVFACT(JL))))
-      ENDDO
-    ENDIF
-    DO JL=1, KSIZE
-      ZVART(JL,ITH) = ZVART(JL,ITH) + PRRHONG_MR(JL)*(PLSFACT(JL)-PLVFACT(JL)) ! f(L_f*(RRHONG))
-      ZT  (JL) = ZVART(JL,ITH) * PEXN(JL)
-      ZVART(JL,IRR) = ZVART(JL,IRR) - PRRHONG_MR(JL)
-      ZVART(JL,IRG) = ZVART(JL,IRG) + PRRHONG_MR(JL)
-    ENDDO
-    !
-    !*       7.1    cloud ice melting
-    !
-    DO JL=1, KSIZE
-      IF (ZVART(JL,IRI)>0. .AND. ZT(JL)>XTT .AND. LLCOMPUTE(JL)) THEN
-        PRIMLTC_MR(JL)=ZVART(JL,IRI)
-      ELSE
-        PRIMLTC_MR(JL)=0.
-      ENDIF
-    ENDDO
-    IF(LFEEDBACKT) THEN
-      DO JL=1, KSIZE
-        !Limitation due to 0 crossing of temperature
-        PRIMLTC_MR(JL)=MIN(PRIMLTC_MR(JL), MAX(0., (ZVART(JL,ITH)-XTT/PEXN(JL)) / (PLSFACT(JL)-PLVFACT(JL))))
-      ENDDO
-    ENDIF
-    DO JL=1, KSIZE
-      ZVART(JL,ITH) = ZVART(JL,ITH) - PRIMLTC_MR(JL)*(PLSFACT(JL)-PLVFACT(JL)) ! f(L_f*(-RIMLTC))
-      ZT  (JL) = ZVART(JL,ITH) * PEXN(JL)
-      ZVART(JL,IRC) = ZVART(JL,IRC) + PRIMLTC_MR(JL)
-      ZVART(JL,IRI) = ZVART(JL,IRI) - PRIMLTC_MR(JL)
-    ENDDO
-
-    DO JL=1, KSIZE
-      PB(JL,ITH) = PRVHENI_MR(JL)*PLSFACT(JL)
-      PB(JL,ITH) = PB(JL,ITH) + PRRHONG_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
-      PB(JL,ITH) = PB(JL,ITH) - PRIMLTC_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
-
-      PB(JL,IRV) = - PRVHENI_MR(JL)
+  DO JL=1, KSIZE
+    PB(JL, ITH)=PB(JL, ITH) + PRVHENI_MR(JL)*PLSFACT(JL)
+    PB(JL, ITH)=PB(JL, ITH) + PRRHONG_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
+    PB(JL, ITH)=PB(JL, ITH) - PRIMLTC_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
 
-      PB(JL,IRC) = + PRIMLTC_MR(JL)
+    PB(JL, IRV)=PB(JL, IRV) - PRVHENI_MR(JL)
 
-      PB(JL,IRR) = - PRRHONG_MR(JL)
+    PB(JL, IRC)=PB(JL, IRC) + PRIMLTC_MR(JL)
 
-      PB(JL,IRI) = + PRVHENI_MR(JL)
-      PB(JL,IRI) = PB(JL,IRI) - PRIMLTC_MR(JL)
+    PB(JL, IRR)=PB(JL, IRR) - PRRHONG_MR(JL)
 
-      PB(JL,IRS) = 0.
+    PB(JL, IRI)=PB(JL, IRI) + PRVHENI_MR(JL)
+    PB(JL, IRI)=PB(JL, IRI) - PRIMLTC_MR(JL)
 
-      PB(JL,IRG) = + PRRHONG_MR(JL)
-    ENDDO
-    IF (KRR==7) PB(:,IRH)=0.
+    PB(JL, IRG)=PB(JL, IRG) + PRRHONG_MR(JL)
+  ENDDO
   !
   !        5.1.6  riming-conversion of the large sized aggregates into graupel (old parametrisation)
   !
@@ -297,11 +285,11 @@ ELSE
     WHERE(ZVART(1:KSIZE,IRS)>0.)
       ZLBDAS(1:KSIZE)  = MIN(XLBDAS_MAX, XLBS*(PRHODREF(1:KSIZE)*MAX(ZVART(1:KSIZE,IRS), XRTMIN(5)))**XLBEXS)
     END WHERE
-    CALL ICE4_RSRIMCG_OLD(KSIZE, LDSOFT, LLCOMPUTE, &
+    CALL ICE4_RSRIMCG_OLD(KSIZE, ODSOFT, LLCOMPUTE, &
                          &PRHODREF, &
                          &ZLBDAS, &
                          &ZT, ZVART(:,IRC), ZVART(:,IRS), &
-                         &PRSRIMCG_MR, PB(:,IRS), PB(:,IRG))
+                         &PRSRIMCG_MR, PB(:, IRS), PB(:, IRG))
     DO JL=1, KSIZE
       ZVART(JL,IRS) = ZVART(JL,IRS) - PRSRIMCG_MR(JL)
       ZVART(JL,IRG) = ZVART(JL,IRG) + PRSRIMCG_MR(JL)
@@ -309,10 +297,9 @@ ELSE
   ELSE
     PRSRIMCG_MR(:) = 0.
   ENDIF
-
-!
-!* Derived fields
-!
+  !
+  !* Derived fields
+  !
   DO JL=1, KSIZE
     ZZW = EXP(XALPI-XBETAI/ZT(JL)-XGAMI*ALOG(ZT(JL)))
     PSSI(JL) = ZVART(JL,IRV)*( PPRES(JL)-ZZW ) / ( XEPSILO * ZZW ) - 1.0
@@ -323,30 +310,39 @@ ELSE
                                  + ( XRV*ZT(JL) ) / (ZDV(JL)*ZZW)
     ZCJ(JL) = XSCFAC*PRHODREF(JL)**0.3 / SQRT(1.718E-5+0.0049E-5*(ZT(JL)-XTT))
   ENDDO
-
-ENDIF ! LDSOFT
+ENDIF ! ODSOFT
 !
 !Cloud water split between high and low content part is done here
-CALL ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV_RC, HSUBG_PR_PDF,&
-                      PRHODREF, ZVART(:,IRC), PCF, PSIGMA_RC,&
-                      PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, ZRAINFR)
-! ZRAINFR is computed above, then overwritten below :-( .REK.
-
-
-j ai des doutes sur le codage de Ryad, normalement zrainfr sert à remplir prainfr qui remplit à son tour zrainfr
-
-LLRFR=HSUBG_RC_RR_ACCR=='PRFR'
+CALL ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF,&
+                      PRHODREF, ZVART(:,IRC), ZVART(:,IRI), PCF, ZT, PSIGMA_RC, &
+                      PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, &
+                      PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI, ZRAINFR)
+LLRFR=HSUBG_RC_RR_ACCR=='PRFR' .OR. HSUBG_RR_EVAP=='PRFR'
 IF (LLRFR) THEN
   !Diagnostic of precipitation fraction
-  ZRRT3D(:,:,:)=PRRT3D(:,:,:)
+  PRAINFR(:,:,:) = 0.
+  ZRRT3D (:,:,:) = 0.
+  ZRST3D (:,:,:) = 0.
+  ZRGT3D (:,:,:) = 0.
+  ZRHT3D (:,:,:) = 0.
   DO JL=1,KSIZE
-    ZRRT3D (K1(JL),K2(JL),K3(JL))=PVART(JL,IRR)-PRRHONG_MR(JL)
-  ENDDO
-  CALL ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, ZRAINFR3D(:,:,:), ZRRT3D(:,:,:))
+    PRAINFR(K1(JL), K2(JL), K3(JL)) = ZRAINFR(JL)
+    ZRRT3D (K1(JL), K2(JL), K3(JL)) = ZVART(JL,IRR)
+    ZRST3D (K1(JL), K2(JL), K3(JL)) = ZVART(JL,IRS)
+    ZRGT3D (K1(JL), K2(JL), K3(JL)) = ZVART(JL,IRG)
+  END DO
+  IF (KRR==7) THEN
+    DO JL=1,KSIZE    
+      ZRHT3D (K1(JL), K2(JL), K3(JL)) = ZVART(JL,IRH)
+    ENDDO
+  ENDIF
+  CALL ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PRAINFR(:,:,:), &
+                       &ZRRT3D(:,:,:), ZRST3D(:,:,:), ZRGT3D(:,:,:), ZRHT3D(:,:,:))
   DO JL=1,KSIZE
-    ZRAINFR(JL)=ZRAINFR3D(K1(JL), K2(JL), K3(JL))
-  ENDDO
+    ZRAINFR(JL)=PRAINFR(K1(JL), K2(JL), K3(JL))
+  END DO
 ELSE
+  PRAINFR(:,:,:)=1.
   ZRAINFR(:)=1.
 ENDIF
 !
@@ -354,34 +350,34 @@ ENDIF
 !
 DO JL=1, KSIZE
   !ZLBDAR will be used when we consider rain diluted over the grid box
-  IF (ZVART(JL,IRR)>0.) THEN
-    ZLBDAR(JL)  = XLBR*( PRHODREF(JL)*MAX(ZVART(JL,IRR), XRTMIN(3)))**XLBEXR
+  IF(ZVART(JL,IRR)>0.) THEN
+    ZLBDAR(JL)=XLBR*(PRHODREF(JL)*MAX(ZVART(JL,IRR), XRTMIN(3)))**XLBEXR
   ELSE
     ZLBDAR(JL)=0.
   ENDIF
   !ZLBDAR_RF is used when we consider rain concentrated in its fraction
-  IF (LLRFR) THEN
-    IF (ZVART(JL,IRR)>0. .AND. ZRAINFR(JL)>0.) THEN
-      ZLBDAR_RF(JL) = XLBR*( PRHODREF(JL)*MAX(ZVART(JL,IRR)/ZRAINFR(JL), XRTMIN(3)))**XLBEXR
+  IF(LLRFR) THEN
+    IF(ZVART(JL,IRR)>0. .AND. ZRAINFR(JL)>0.) THEN
+      ZLBDAR_RF(JL)=XLBR*(PRHODREF(JL)*MAX(ZVART(JL,IRR)/ZRAINFR(JL), XRTMIN(3)))**XLBEXR
     ELSE
       ZLBDAR_RF(JL)=0.
     ENDIF
   ELSE
-    ZLBDAR_RF(JL) = ZLBDAR(JL)
+    ZLBDAR_RF(JL)=ZLBDAR(JL)
   ENDIF
-  IF (ZVART(JL,IRS)>0.) THEN
-    ZLBDAS(JL)  = MIN(XLBDAS_MAX, XLBS*(PRHODREF(JL)*MAX(ZVART(JL,IRS), XRTMIN(5)))**XLBEXS)
+  IF(ZVART(JL,IRS)>0.) THEN
+    ZLBDAS(JL)=MIN(XLBDAS_MAX, XLBS*(PRHODREF(JL)*MAX(ZVART(JL,IRS), XRTMIN(5)))**XLBEXS)
   ELSE
     ZLBDAS(JL)=0.
   ENDIF
-  IF (ZVART(JL,IRG)>0.) THEN
-    ZLBDAG(JL)  = XLBG*(PRHODREF(JL)*MAX(ZVART(JL,IRG), XRTMIN(6)))**XLBEXG
+  IF(ZVART(JL,IRG)>0.) THEN
+    ZLBDAG(JL)=XLBG*(PRHODREF(JL)*MAX(ZVART(JL,IRG), XRTMIN(6)))**XLBEXG
   ELSE
     ZLBDAG(JL)=0.
   ENDIF
-  IF (KRR==7) THEN
-    IF (PVART(JL,IRH)>0.) THEN
-      ZLBDAH(JL) = XLBH*(PRHODREF(JL)*MAX(PVART(JL,IRH), XRTMIN(7)))**XLBEXH
+  IF(KRR==7) THEN
+    IF(ZVART(JL,IRH)>0.) THEN
+      ZLBDAH(JL)=XLBH*(PRHODREF(JL)*MAX(ZVART(JL,IRH), XRTMIN(7)))**XLBEXH
     ELSE
       ZLBDAH(JL)=0.
     ENDIF
@@ -389,13 +385,13 @@ DO JL=1, KSIZE
 ENDDO
 !
 !
-CALL ICE4_SLOW(KSIZE, LDSOFT, PCOMPUTE, PRHODREF, ZT, &
+CALL ICE4_SLOW(KSIZE, ODSOFT, PCOMPUTE, PRHODREF, ZT, &
               &PSSI, PLVFACT, PLSFACT, &
               &ZVART(:,IRV), ZVART(:,IRC), ZVART(:,IRI), ZVART(:,IRS), ZVART(:,IRG), &
               &ZLBDAS, ZLBDAG, &
-              &ZAI, ZCJ, &
+              &ZAI, ZCJ, PHLI_HCF, PHLI_HRI, &
               &PRCHONI, PRVDEPS, PRIAGGS, PRIAUTS, PRVDEPG, &
-              &PA(:,ITH), PA(:,IRV), PA(:,IRC), PA(:,IRI), PA(:,IRS), PA(:,IRG))
+              &PA(:, ITH), PA(:, IRV), PA(:, IRC), PA(:, IRI), PA(:, IRS), PA(:, IRG))
 !
 !-------------------------------------------------------------------------------
 !
@@ -406,7 +402,7 @@ CALL ICE4_SLOW(KSIZE, LDSOFT, PCOMPUTE, PRHODREF, ZT, &
 !
 IF(OWARM) THEN    !  Check if the formation of the raindrops by the slow
                   !  warm processes is allowed
-  CALL ICE4_WARM(KSIZE, LDSOFT, PCOMPUTE, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, &
+  CALL ICE4_WARM(KSIZE, ODSOFT, PCOMPUTE, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, &
                 &PRHODREF, PLVFACT, ZT, PPRES, ZVART(:,ITH),&
                 &ZLBDAR, ZLBDAR_RF, ZKA, ZDV, ZCJ, &
                 &PHLC_LCF, PHLC_HCF, PHLC_LRC, PHLC_HRC, &
@@ -426,7 +422,7 @@ END IF
 !*       4.     COMPUTES THE FAST COLD PROCESS SOURCES FOR r_s
 !               ----------------------------------------------
 !
-CALL ICE4_FAST_RS(KPROMA,KSIZE, LDSOFT, PCOMPUTE, &
+CALL ICE4_FAST_RS(KPROMA, KSIZE, ODSOFT, PCOMPUTE, &
                  &PRHODREF, PLVFACT, PLSFACT, PPRES, &
                  &ZDV, ZKA, ZCJ, &
                  &ZLBDAR, ZLBDAS, &
@@ -444,13 +440,12 @@ CALL ICE4_FAST_RS(KPROMA,KSIZE, LDSOFT, PCOMPUTE, &
 !*       5.        COMPUTES THE FAST COLD PROCESS SOURCES FOR r_g
 !                  ------------------------------------------------------
 !
-! Move these inits inside. REK
 DO JL=1, KSIZE
   ZRGSI(JL) = PRVDEPG(JL) + PRSMLTG(JL) + PRRACCSG(JL) + &
            & PRSACCRG(JL) + PRCRIMSG(JL) + PRSRIMCG(JL)
   ZRGSI_MR(JL) = PRRHONG_MR(JL) + PRSRIMCG_MR(JL)
 ENDDO
-CALL ICE4_FAST_RG(KPROMA,KSIZE, LDSOFT, PCOMPUTE, KRR, &
+CALL ICE4_FAST_RG(KPROMA, KSIZE, ODSOFT, PCOMPUTE, KRR, &
                  &PRHODREF, PLVFACT, PLSFACT, PPRES, &
                  &ZDV, ZKA, ZCJ, PCIT, &
                  &ZLBDAR, ZLBDAS, ZLBDAG, &
@@ -469,11 +464,11 @@ CALL ICE4_FAST_RG(KPROMA,KSIZE, LDSOFT, PCOMPUTE, KRR, &
 !               ----------------------------------------------
 !
 IF (KRR==7) THEN
-  CALL ICE4_FAST_RH(KPROMA,KSIZE, LDSOFT, PCOMPUTE, ZWETG, &
+  CALL ICE4_FAST_RH(KPROMA, KSIZE, ODSOFT, PCOMPUTE, ZWETG, &
                    &PRHODREF, PLVFACT, PLSFACT, PPRES, &
                    &ZDV, ZKA, ZCJ, &
                    &ZLBDAS, ZLBDAG, ZLBDAR, ZLBDAH, &
-                   &ZT,  ZVART(:,IRV), ZVART(:,IRC), ZVART(:,IRR), ZVART(:,IRI), ZVART(:,IRS), ZVART(:,IRG), PVART(:,IRH), &
+                   &ZT,  ZVART(:,IRV), ZVART(:,IRC), ZVART(:,IRR), ZVART(:,IRI), ZVART(:,IRS), ZVART(:,IRG), ZVART(:,IRH), &
                    &PRCWETH, PRIWETH, PRSWETH, PRGWETH, PRRWETH, &
                    &PRCDRYH, PRIDRYH, PRSDRYH, PRRDRYH, PRGDRYH, PRDRYHG, PRHMLTR, &
                    &PRH_TEND, &
@@ -499,7 +494,7 @@ END IF
 !*       7.     COMPUTES SPECIFIC SOURCES OF THE WARM AND COLD CLOUDY SPECIES
 !               -------------------------------------------------------------
 !
-CALL ICE4_FAST_RI(KSIZE, LDSOFT, PCOMPUTE, &
+CALL ICE4_FAST_RI(KSIZE, ODSOFT, PCOMPUTE, &
                  &PRHODREF, PLVFACT, PLSFACT, &
                  &ZAI, ZCJ, PCIT, &
                  &PSSI, &
@@ -509,3 +504,4 @@ CALL ICE4_FAST_RI(KSIZE, LDSOFT, PCOMPUTE, &
 IF (LHOOK) CALL DR_HOOK('ICE4_TENDENCIES', 1, ZHOOK_HANDLE)
 !
 END SUBROUTINE ICE4_TENDENCIES
+END MODULE MODE_ICE4_TENDENCIES
diff --git a/src/mesonh/micro/ice4_tendencies.f90 b/src/mesonh/micro/ice4_tendencies.f90
deleted file mode 100644
index b7de7efd33a076a697204550d3233bc67e540b70..0000000000000000000000000000000000000000
--- a/src/mesonh/micro/ice4_tendencies.f90
+++ /dev/null
@@ -1,633 +0,0 @@
-!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-MODULE MODI_ICE4_TENDENCIES
-INTERFACE
-SUBROUTINE ICE4_TENDENCIES(KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, &
-                          &KRR, ODSOFT, PCOMPUTE, &
-                          &OWARM, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, &
-                          &HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF, &
-                          &PEXN, PRHODREF, PLVFACT, PLSFACT, K1, K2, K3, &
-                          &PPRES, PCF, PSIGMA_RC, &
-                          &PCIT, &
-                          &PT, PTHT, &
-                          &PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PRHT, &
-                          &PRVHENI_MR, PRRHONG_MR, PRIMLTC_MR, PRSRIMCG_MR, &
-                          &PRCHONI, PRVDEPS, PRIAGGS, PRIAUTS, PRVDEPG, &
-                          &PRCAUTR, PRCACCR, PRREVAV, &
-                          &PRCRIMSS, PRCRIMSG, PRSRIMCG, PRRACCSS, PRRACCSG, PRSACCRG, PRSMLTG, PRCMLTSR, &
-                          &PRICFRRG, PRRCFRIG, PRICFRR, PRCWETG, PRIWETG, PRRWETG, PRSWETG, &
-                          &PRCDRYG, PRIDRYG, PRRDRYG, PRSDRYG, PRWETGH, PRWETGH_MR, PRGMLTR, &
-                          &PRCWETH, PRIWETH, PRSWETH, PRGWETH, PRRWETH, &
-                          &PRCDRYH, PRIDRYH, PRSDRYH, PRRDRYH, PRGDRYH, PRDRYHG, PRHMLTR, &
-                          &PRCBERI, &
-                          &PRS_TEND, PRG_TEND, PRH_TEND, PSSI, &
-                          &PA_TH, PA_RV, PA_RC, PA_RR, PA_RI, PA_RS, PA_RG, PA_RH, &
-                          &PB_TH, PB_RV, PB_RC, PB_RR, PB_RI, PB_RS, PB_RG, PB_RH, &
-                          &PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, &
-                          &PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI, PRAINFR)
-IMPLICIT NONE
-INTEGER,                      INTENT(IN)    :: KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL
-INTEGER,                      INTENT(IN)    :: KRR
-LOGICAL,                      INTENT(IN)    :: ODSOFT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PCOMPUTE
-LOGICAL,                      INTENT(IN)    :: OWARM
-CHARACTER(len=80),            INTENT(IN)    :: HSUBG_RC_RR_ACCR
-CHARACTER(len=80),            INTENT(IN)    :: HSUBG_RR_EVAP
-CHARACTER(len=4),             INTENT(IN)    :: HSUBG_AUCV_RC
-CHARACTER(len=80),            INTENT(IN)    :: HSUBG_AUCV_RI
-CHARACTER(len=80),            INTENT(IN)    :: HSUBG_PR_PDF ! pdf for subgrid precipitation
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PEXN
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRHODREF
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PLVFACT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PLSFACT
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K1
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K2
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K3
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PPRES
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PCF
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PSIGMA_RC
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PCIT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PTHT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRVT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRCT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRRT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRIT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRST
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRGT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRHT
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRVHENI_MR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRHONG_MR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRIMLTC_MR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSRIMCG_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCHONI
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRVDEPS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIAGGS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIAUTS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRVDEPG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCAUTR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCACCR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRREVAV
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCRIMSS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCRIMSG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSRIMCG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRACCSS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRACCSG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSACCRG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSMLTG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCMLTSR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRICFRRG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRCFRIG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRICFRR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCWETG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRIWETG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRWETG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSWETG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCDRYG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRIDRYG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRDRYG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSDRYG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRWETGH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRWETGH_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRGMLTR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCWETH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRIWETH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSWETH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRGWETH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRWETH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCDRYH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRIDRYH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSDRYH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRDRYH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRGDRYH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRDRYHG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRHMLTR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCBERI
-REAL, DIMENSION(KSIZE, 8),    INTENT(INOUT) :: PRS_TEND
-REAL, DIMENSION(KSIZE, 8),    INTENT(INOUT) :: PRG_TEND
-REAL, DIMENSION(KSIZE, 10),   INTENT(INOUT) :: PRH_TEND
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PSSI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_TH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RV
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_TH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RV
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_HCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_LCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_HRC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_LRC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLI_HCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLI_LCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLI_HRI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLI_LRI
-REAL, DIMENSION(KIT,KJT,KKT), INTENT(OUT)   :: PRAINFR   ! Rain fraction
-END SUBROUTINE ICE4_TENDENCIES
-END INTERFACE
-END MODULE MODI_ICE4_TENDENCIES
-SUBROUTINE ICE4_TENDENCIES(KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, &
-                          &KRR, ODSOFT, PCOMPUTE, &
-                          &OWARM, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, &
-                          &HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF, &
-                          &PEXN, PRHODREF, PLVFACT, PLSFACT, K1, K2, K3, &
-                          &PPRES, PCF, PSIGMA_RC, &
-                          &PCIT, &
-                          &PT, PTHT, &
-                          &PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PRHT, &
-                          &PRVHENI_MR, PRRHONG_MR, PRIMLTC_MR, PRSRIMCG_MR, &
-                          &PRCHONI, PRVDEPS, PRIAGGS, PRIAUTS, PRVDEPG, &
-                          &PRCAUTR, PRCACCR, PRREVAV, &
-                          &PRCRIMSS, PRCRIMSG, PRSRIMCG, PRRACCSS, PRRACCSG, PRSACCRG, PRSMLTG, PRCMLTSR, &
-                          &PRICFRRG, PRRCFRIG, PRICFRR, PRCWETG, PRIWETG, PRRWETG, PRSWETG, &
-                          &PRCDRYG, PRIDRYG, PRRDRYG, PRSDRYG, PRWETGH, PRWETGH_MR, PRGMLTR, &
-                          &PRCWETH, PRIWETH, PRSWETH, PRGWETH, PRRWETH, &
-                          &PRCDRYH, PRIDRYH, PRSDRYH, PRRDRYH, PRGDRYH, PRDRYHG, PRHMLTR, &
-                          &PRCBERI, &
-                          &PRS_TEND, PRG_TEND, PRH_TEND, PSSI, &
-                          &PA_TH, PA_RV, PA_RC, PA_RR, PA_RI, PA_RS, PA_RG, PA_RH, &
-                          &PB_TH, PB_RV, PB_RC, PB_RR, PB_RI, PB_RS, PB_RG, PB_RH, &
-                          &PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, &
-                          &PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI, PRAINFR)
-!!
-!!**  PURPOSE
-!!    -------
-!!      Computes the tendencies
-!!
-!!    AUTHOR
-!!    ------
-!!      S. Riette from the splitting of rain_ice source code (nov. 2014)
-!!
-!!    MODIFICATIONS
-!!    -------------
-!
-!  P. Wautelet 29/05/2019: remove PACK/UNPACK intrinsics (to get more performance and better OpenACC support)
-!
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST,            ONLY: XALPI,XBETAI,XCI,XCPV,XEPSILO,XGAMI,XLSTT,XMD,XMV,XP00,XRV,XTT
-USE MODD_PARAM_ICE,      ONLY: CSNOWRIMING
-USE MODD_RAIN_ICE_DESCR, ONLY: XLBDAS_MAX,XLBEXG,XLBEXH,XLBEXR,XLBEXS,XLBG,XLBH,XLBR,XLBS,XRTMIN
-USE MODD_RAIN_ICE_PARAM, ONLY: XSCFAC
-!
-USE MODE_ICE4_COMPUTE_PDF
-USE MODE_ICE4_FAST_RG
-USE MODE_ICE4_FAST_RH
-USE MODE_ICE4_FAST_RI
-USE MODE_ICE4_FAST_RS
-USE MODE_ICE4_NUCLEATION
-USE MODE_ICE4_RAINFR_VERT
-USE MODE_ICE4_RIMLTC
-USE MODE_ICE4_RRHONG
-USE MODE_ICE4_RSRIMCG_OLD
-USE MODE_ICE4_SLOW
-USE MODE_ICE4_WARM
-!
-IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-INTEGER,                      INTENT(IN)    :: KSIZE, KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL
-INTEGER,                      INTENT(IN)    :: KRR
-LOGICAL,                      INTENT(IN)    :: ODSOFT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PCOMPUTE
-LOGICAL,                      INTENT(IN)    :: OWARM
-CHARACTER(len=80),            INTENT(IN)    :: HSUBG_RC_RR_ACCR
-CHARACTER(len=80),            INTENT(IN)    :: HSUBG_RR_EVAP
-CHARACTER(len=4),             INTENT(IN)    :: HSUBG_AUCV_RC
-CHARACTER(len=80),            INTENT(IN)    :: HSUBG_AUCV_RI
-CHARACTER(len=80),            INTENT(IN)    :: HSUBG_PR_PDF ! pdf for subgrid precipitation
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PEXN
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRHODREF
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PLVFACT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PLSFACT
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K1
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K2
-INTEGER, DIMENSION(KSIZE),    INTENT(IN)    :: K3
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PPRES
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PCF
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PSIGMA_RC
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PCIT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PTHT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRVT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRCT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRRT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRIT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRST
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRGT
-REAL, DIMENSION(KSIZE),       INTENT(IN)    :: PRHT
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRVHENI_MR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRHONG_MR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRIMLTC_MR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSRIMCG_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCHONI
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRVDEPS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIAGGS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRIAUTS
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRVDEPG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCAUTR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCACCR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRREVAV
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCRIMSS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCRIMSG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSRIMCG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRACCSS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRACCSG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSACCRG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRSMLTG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCMLTSR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRICFRRG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRRCFRIG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRICFRR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCWETG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRIWETG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRWETG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSWETG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCDRYG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRIDRYG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRDRYG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSDRYG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRWETGH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRWETGH_MR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRGMLTR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCWETH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRIWETH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSWETH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRGWETH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRWETH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRCDRYH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRIDRYH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRSDRYH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRRDRYH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRGDRYH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PRDRYHG
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRHMLTR
-REAL, DIMENSION(KSIZE),       INTENT(INOUT) :: PRCBERI
-REAL, DIMENSION(KSIZE, 8),    INTENT(INOUT) :: PRS_TEND
-REAL, DIMENSION(KSIZE, 8),    INTENT(INOUT) :: PRG_TEND
-REAL, DIMENSION(KSIZE, 10),   INTENT(INOUT) :: PRH_TEND
-REAL, DIMENSION(KSIZE),       INTENT(OUT) :: PSSI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_TH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RV
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PA_RH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_TH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RV
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RR
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RS
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RG
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PB_RH
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_HCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_LCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_HRC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLC_LRC
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLI_HCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLI_LCF
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLI_HRI
-REAL, DIMENSION(KSIZE),       INTENT(OUT)   :: PHLI_LRI
-REAL, DIMENSION(KIT,KJT,KKT), INTENT(OUT)   :: PRAINFR   ! Rain fraction
-!
-!*       0.2  declaration of local variables
-!
-REAL, DIMENSION(KSIZE) :: ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, &
-                        & ZT, ZTHT, ZRHT, &
-                        & ZZW, &
-                        & ZKA, ZDV, ZAI, ZCJ, &
-                        & ZRF, &
-                        & ZLBDAR, ZLBDAS, ZLBDAG, ZLBDAH, ZLBDAR_RF, &
-                        & ZRGSI, ZRGSI_MR
-REAL, DIMENSION(KIT,KJT,KKT) :: ZRRT3D, ZRST3D, ZRGT3D, ZRHT3D
-INTEGER :: JL
-REAL, DIMENSION(KSIZE) :: ZWETG ! 1. if graupel growths in wet mode, 0. otherwise
-
-PA_TH(:)=0.
-PA_RV(:)=0.
-PA_RC(:)=0.
-PA_RR(:)=0.
-PA_RI(:)=0.
-PA_RS(:)=0.
-PA_RG(:)=0.
-PA_RH(:)=0.
-PB_TH(:)=0.
-PB_RV(:)=0.
-PB_RC(:)=0.
-PB_RR(:)=0.
-PB_RI(:)=0.
-PB_RS(:)=0.
-PB_RG(:)=0.
-PB_RH(:)=0.
-!
-DO JL=1, KSIZE
-  ZRVT(JL)=PRVT(JL)
-  ZRCT(JL)=PRCT(JL)
-  ZRRT(JL)=PRRT(JL)
-  ZRIT(JL)=PRIT(JL)
-  ZRST(JL)=PRST(JL)
-  ZRGT(JL)=PRGT(JL)
-  ZTHT(JL)=PTHT(JL)
-  ZRHT(JL)=PRHT(JL)
-  ZT(JL)=PT(JL)
-ENDDO
-IF(ODSOFT) THEN
-  PRVHENI_MR(:)=0.
-  PRRHONG_MR(:)=0.
-  PRIMLTC_MR(:)=0.
-  PRSRIMCG_MR(:)=0.
-ELSE
-  !
-  !*       2.     COMPUTES THE SLOW COLD PROCESS SOURCES
-  !               --------------------------------------
-  CALL ICE4_NUCLEATION(KSIZE, PCOMPUTE==1., &
-                       ZTHT, PPRES, PRHODREF, PEXN, PLSFACT, ZT, &
-                       ZRVT, &
-                       PCIT, PRVHENI_MR)
-  PB_RI(:)=PB_RI(:) + PRVHENI_MR(:)
-  PB_RV(:)=PB_RV(:) - PRVHENI_MR(:)
-  PB_TH(:)=PB_TH(:) + PRVHENI_MR(:)*PLSFACT(:)
-  DO JL=1, KSIZE
-    ZRIT(JL)=ZRIT(JL) + PRVHENI_MR(JL)
-    ZRVT(JL)=ZRVT(JL) - PRVHENI_MR(JL)
-    ZTHT(JL)=ZTHT(JL) + PRVHENI_MR(JL)*PLSFACT(JL)
-    ZT(JL) = ZTHT(JL) * PEXN(JL)
-  ENDDO
-  !
-  !*       3.3     compute the spontaneous freezing source: RRHONG
-  !
-  CALL ICE4_RRHONG(KSIZE, PCOMPUTE, &
-                  &PEXN, PLVFACT, PLSFACT, &
-                  &ZT,   ZRRT, &
-                  &ZTHT, &
-                  &PRRHONG_MR)
-  DO JL=1, KSIZE
-    PB_RG(JL) = PB_RG(JL) + PRRHONG_MR(JL)
-    PB_RR(JL) = PB_RR(JL) - PRRHONG_MR(JL)
-    PB_TH(JL) = PB_TH(JL) + PRRHONG_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
-  END DO
-  DO JL=1, KSIZE
-    ZRGT(JL) = ZRGT(JL) + PRRHONG_MR(JL)
-    ZRRT(JL) = ZRRT(JL) - PRRHONG_MR(JL)
-    ZTHT(JL) = ZTHT(JL) + PRRHONG_MR(JL)*(PLSFACT(JL)-PLVFACT(JL)) ! f(L_f*(RRHONG))
-    ZT(JL) = ZTHT(JL) * PEXN(JL)
-  ENDDO
-  !
-  !*       7.1    cloud ice melting
-  !
-  CALL ICE4_RIMLTC(KSIZE, PCOMPUTE, &
-                  &PEXN, PLVFACT, PLSFACT, &
-                  &ZT, &
-                  &ZTHT, ZRIT, &
-                  &PRIMLTC_MR)
-  DO JL=1, KSIZE
-    PB_RC(JL) = PB_RC(JL) + PRIMLTC_MR(JL)
-    PB_RI(JL) = PB_RI(JL) - PRIMLTC_MR(JL)
-    PB_TH(JL) = PB_TH(JL) - PRIMLTC_MR(JL)*(PLSFACT(JL)-PLVFACT(JL))
-  END DO
-  DO JL=1, KSIZE
-    ZRCT(JL) = ZRCT(JL) + PRIMLTC_MR(JL)
-    ZRIT(JL) = ZRIT(JL) - PRIMLTC_MR(JL)
-    ZTHT(JL) = ZTHT(JL) - PRIMLTC_MR(JL)*(PLSFACT(JL)-PLVFACT(JL)) ! f(L_f*(-RIMLTC))
-    ZT(JL) = ZTHT(JL) * PEXN(JL)
-  ENDDO
-  !
-  !        5.1.6  riming-conversion of the large sized aggregates into graupel (old parametrisation)
-  !
-  IF(CSNOWRIMING=='OLD ') THEN
-    ZLBDAS(:)=0.
-    WHERE(ZRST(:)>0.)
-      ZLBDAS(:)  = MIN(XLBDAS_MAX, XLBS*(PRHODREF(:)*MAX(ZRST(:), XRTMIN(5)))**XLBEXS)
-    END WHERE
-    CALL ICE4_RSRIMCG_OLD(KSIZE, ODSOFT, PCOMPUTE==1., &
-                         &PRHODREF, &
-                         &ZLBDAS, &
-                         &ZT, ZRCT, ZRST, &
-                         &PRSRIMCG_MR, PB_RS, PB_RG)
-    DO JL=1, KSIZE
-      ZRST(JL) = ZRST(JL) - PRSRIMCG_MR(JL)
-      ZRGT(JL) = ZRGT(JL) + PRSRIMCG_MR(JL)
-    ENDDO
-  ELSE
-    PRSRIMCG_MR(:) = 0.
-  ENDIF
-ENDIF
-!
-!* Derived fields
-!
-IF(KSIZE>0) THEN
-  IF(.NOT. ODSOFT) THEN
-    ZZW(:) = EXP(XALPI-XBETAI/ZT(:)-XGAMI*ALOG(ZT(:)))
-    DO JL=1, KSIZE
-      PSSI(JL) = ZRVT(JL)*( PPRES(JL)-ZZW(JL) ) / ( XEPSILO * ZZW(JL) ) - 1.0
-                                                        ! Supersaturation over ice
-      ZKA(JL) = 2.38E-2 + 0.0071E-2*(ZT(JL)-XTT) ! k_a
-      ZDV(JL) = 0.211E-4*(ZT(JL)/XTT)**1.94 * (XP00/PPRES(JL)) ! D_v
-      ZAI(JL) = (XLSTT+(XCPV-XCI)*(ZT(JL)-XTT))**2 / (ZKA(JL)*XRV*ZT(JL)**2) &
-                                   + ( XRV*ZT(JL) ) / (ZDV(JL)*ZZW(JL))
-      ZCJ(JL) = XSCFAC*PRHODREF(JL)**0.3 / SQRT(1.718E-5+0.0049E-5*(ZT(JL)-XTT))
-    ENDDO
-  ENDIF
-  !
-  !Cloud water split between high and low content part is done here
-  CALL ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF,&
-                        PRHODREF, ZRCT, ZRIT, PCF, ZT, PSIGMA_RC,&
-                        PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC,&
-                        PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI, ZRF)
-  IF(HSUBG_RC_RR_ACCR=='PRFR' .OR. HSUBG_RR_EVAP=='PRFR') THEN
-    !Diagnostic of precipitation fraction
-    PRAINFR(:,:,:) = 0.
-    ZRRT3D (:,:,:) = 0.
-    ZRST3D (:,:,:) = 0.
-    ZRGT3D (:,:,:) = 0.
-    ZRHT3D (:,:,:) = 0.
-    DO JL=1,KSIZE
-      PRAINFR(K1(JL), K2(JL), K3(JL)) = ZRF(JL)
-      ZRRT3D (K1(JL), K2(JL), K3(JL)) = ZRRT(JL)
-      ZRST3D (K1(JL), K2(JL), K3(JL)) = ZRST(JL)
-      ZRGT3D (K1(JL), K2(JL), K3(JL)) = ZRGT(JL)
-    END DO
-    IF (KRR==7) THEN
-      DO JL=1,KSIZE    
-        ZRHT3D (K1(JL), K2(JL), K3(JL)) = ZRHT(JL)
-      ENDDO
-    ENDIF
-    CALL ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PRAINFR(:,:,:), ZRRT3D(:,:,:), &
-                         &ZRST3D(:,:,:), ZRGT3D(:,:,:), ZRHT3D(:,:,:))
-    DO JL=1,KSIZE
-      ZRF(JL)=PRAINFR(K1(JL), K2(JL), K3(JL))
-    END DO
-  ELSE
-    PRAINFR(:,:,:)=1.
-    ZRF(:)=1.
-  ENDIF
-  !
-  !*  compute the slope parameters
-  !
-  ZLBDAS(:)=0.
-  WHERE(ZRST(:)>0.)
-    ZLBDAS(:)  = MIN(XLBDAS_MAX, XLBS*(PRHODREF(:)*MAX(ZRST(:), XRTMIN(5)))**XLBEXS)
-  END WHERE
-  ZLBDAG(:)=0.
-  WHERE(ZRGT(:)>0.)
-    ZLBDAG(:)  = XLBG*(PRHODREF(:)*MAX(ZRGT(:), XRTMIN(6)))**XLBEXG
-  END WHERE
-  !ZLBDAR will be used when we consider rain diluted over the grid box
-  ZLBDAR(:)=0.
-  WHERE(ZRRT(:)>0.)
-    ZLBDAR(:)  = XLBR*( PRHODREF(:)*MAX( ZRRT(:), XRTMIN(3)))**XLBEXR
-  END WHERE
-  !ZLBDAR_RF is used when we consider rain concentrated in its fraction
-  IF (HSUBG_RC_RR_ACCR=='PRFR' .OR. HSUBG_RR_EVAP=='PRFR') THEN
-    ZLBDAR_RF(:)=0.
-    WHERE(ZRRT(:)>0. .AND. ZRF(:)>0.)
-      ZLBDAR_RF(:) = XLBR*( PRHODREF(:) *MAX( ZRRT(:)/ZRF(:) , XRTMIN(3)))**XLBEXR
-    END WHERE
-  ELSE
-    ZLBDAR_RF(:) = ZLBDAR(:)
-  ENDIF
-  IF(KRR==7) THEN
-    ZLBDAH(:)=0.
-    WHERE(PRHT(:)>0.)
-      ZLBDAH(:) = XLBH*(PRHODREF(:)*MAX(PRHT(:), XRTMIN(7)))**XLBEXH
-    END WHERE
-  ENDIF
-ENDIF
-!
-!
-CALL ICE4_SLOW(KSIZE, ODSOFT, PCOMPUTE, PRHODREF, ZT, &
-              &PSSI, PLVFACT, PLSFACT, &
-              &ZRVT, ZRCT, ZRIT, ZRST, ZRGT, &
-              &ZLBDAS, ZLBDAG, &
-              &ZAI, ZCJ, PHLI_HCF, PHLI_HRI, &
-              &PRCHONI, PRVDEPS, PRIAGGS, PRIAUTS, PRVDEPG, &
-              &PA_TH, PA_RV, PA_RC, PA_RI, PA_RS, PA_RG)
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       3.     COMPUTES THE SLOW WARM PROCESS SOURCES
-!               --------------------------------------
-!
-!
-IF(OWARM) THEN    !  Check if the formation of the raindrops by the slow
-                  !  warm processes is allowed
-  CALL ICE4_WARM(KSIZE, ODSOFT, PCOMPUTE, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, &
-                &PRHODREF, PLVFACT, ZT, PPRES, ZTHT,&
-                &ZLBDAR, ZLBDAR_RF, ZKA, ZDV, ZCJ, &
-                &PHLC_LCF, PHLC_HCF, PHLC_LRC, PHLC_HRC, &
-                &PCF, ZRF, &
-                &ZRVT, ZRCT, ZRRT, &
-                &PRCAUTR, PRCACCR, PRREVAV, &
-                &PA_TH, PA_RV, PA_RC, PA_RR)
-ELSE
-  PRCAUTR(:)=0.
-  PRCACCR(:)=0.
-  PRREVAV(:)=0.
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       4.     COMPUTES THE FAST COLD PROCESS SOURCES FOR r_s
-!               ----------------------------------------------
-!
-CALL ICE4_FAST_RS(KSIZE, KSIZE, ODSOFT, PCOMPUTE, &
-                 &PRHODREF, PLVFACT, PLSFACT, PPRES, &
-                 &ZDV, ZKA, ZCJ, &
-                 &ZLBDAR, ZLBDAS, &
-                 &ZT, ZRVT, ZRCT, ZRRT, ZRST, &
-                 &PRIAGGS, &
-                 &PRCRIMSS, PRCRIMSG, PRSRIMCG, &
-                 &PRRACCSS, PRRACCSG, PRSACCRG, PRSMLTG, &
-                 &PRCMLTSR, &
-                 &PRS_TEND, &
-                 &PA_TH, PA_RC, PA_RR, PA_RS, PA_RG)
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       5.        COMPUTES THE FAST COLD PROCESS SOURCES FOR r_g
-!                  ------------------------------------------------------
-!
-DO JL=1, KSIZE
-  ZRGSI(JL) = PRVDEPG(JL) + PRSMLTG(JL) + PRRACCSG(JL) + &
-           & PRSACCRG(JL) + PRCRIMSG(JL) + PRSRIMCG(JL)
-  ZRGSI_MR(JL) = PRRHONG_MR(JL) + PRSRIMCG_MR(JL)
-ENDDO
-CALL ICE4_FAST_RG(KSIZE, KSIZE, ODSOFT, PCOMPUTE, KRR, &
-                 &PRHODREF, PLVFACT, PLSFACT, PPRES, &
-                 &ZDV, ZKA, ZCJ, PCIT, &
-                 &ZLBDAR, ZLBDAS, ZLBDAG, &
-                 &ZT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, &
-                 &ZRGSI, ZRGSI_MR(:), &
-                 &ZWETG, &
-                 &PRICFRRG, PRRCFRIG, PRICFRR, PRCWETG, PRIWETG, PRRWETG, PRSWETG, &
-                 &PRCDRYG, PRIDRYG, PRRDRYG, PRSDRYG, PRWETGH, PRWETGH_MR, PRGMLTR, &
-                 &PRG_TEND, &
-                 &PA_TH, PA_RC, PA_RR, PA_RI, PA_RS, PA_RG, PA_RH, PB_RG, PB_RH)
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       6.     COMPUTES THE FAST COLD PROCESS SOURCES FOR r_h
-!               ----------------------------------------------
-!
-IF (KRR==7) THEN
-  CALL ICE4_FAST_RH(KSIZE, KSIZE, ODSOFT, PCOMPUTE, ZWETG, &
-                   &PRHODREF, PLVFACT, PLSFACT, PPRES, &
-                   &ZDV, ZKA, ZCJ, &
-                   &ZLBDAS, ZLBDAG, ZLBDAR, ZLBDAH, &
-                   &ZT,  ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, PRHT, &
-                   &PRCWETH, PRIWETH, PRSWETH, PRGWETH, PRRWETH, &
-                   &PRCDRYH, PRIDRYH, PRSDRYH, PRRDRYH, PRGDRYH, PRDRYHG, PRHMLTR, &
-                   &PRH_TEND, &
-                   &PA_TH, PA_RC, PA_RR, PA_RI, PA_RS, PA_RG, PA_RH)
-ELSE
-  PRCWETH(:)=0.
-  PRIWETH(:)=0.
-  PRSWETH(:)=0.
-  PRGWETH(:)=0.
-  PRRWETH(:)=0.
-  PRCDRYH(:)=0.
-  PRIDRYH(:)=0.
-  PRSDRYH(:)=0.
-  PRRDRYH(:)=0.
-  PRGDRYH(:)=0.
-  PRDRYHG(:)=0.
-  PRHMLTR(:)=0.
-END IF
-!
-!-------------------------------------------------------------------------------
-!
-!
-!*       7.     COMPUTES SPECIFIC SOURCES OF THE WARM AND COLD CLOUDY SPECIES
-!               -------------------------------------------------------------
-!
-CALL ICE4_FAST_RI(KSIZE, ODSOFT, PCOMPUTE, &
-                 &PRHODREF, PLVFACT, PLSFACT, &
-                 &ZAI, ZCJ, PCIT, &
-                 &PSSI, &
-                 &ZRCT, ZRIT, &
-                 &PRCBERI, PA_TH, PA_RC, PA_RI)
-!
-!
-END SUBROUTINE ICE4_TENDENCIES
diff --git a/src/mesonh/micro/rain_ice_red.f90 b/src/mesonh/micro/rain_ice_red.f90
index 718410e3c1481b8f7f1525b4befa79e30a7ae372..5a2bca895b0eee03a5494f79d38cefa5332338be 100644
--- a/src/mesonh/micro/rain_ice_red.f90
+++ b/src/mesonh/micro/rain_ice_red.f90
@@ -269,23 +269,33 @@ use modd_budget,         only: lbu_enable,
                                lbudget_th, lbudget_rv, lbudget_rc, lbudget_rr, lbudget_ri, lbudget_rs, lbudget_rg, lbudget_rh, &
                                NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH, &
                                tbudgets
-USE MODD_CST,            ONLY: XCI,XCL,XCPD,XCPV,XLSTT,XLVTT,XTT
-USE MODD_PARAMETERS,     ONLY: JPVEXT,XUNDEF
-USE MODD_PARAM_ICE,      ONLY: CSUBG_PR_PDF,CSUBG_RC_RR_ACCR,CSUBG_RR_EVAP,LDEPOSC,LFEEDBACKT,LSEDIM_AFTER, &
-                               NMAXITER,XMRSTEP,XTSTEP_TS,XVDEPOSC
+USE MODD_CST,            ONLY: XCI, XCL, XCPD, XCPV, XLSTT, XLVTT, XTT, XRHOLW
+USE MODD_PARAMETERS,     ONLY: JPVEXT, XUNDEF
+USE MODD_PARAM_ICE,      ONLY: CSUBG_PR_PDF, CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP, LDEPOSC, LFEEDBACKT, LSEDIM_AFTER, &
+                             & NMAXITER, XMRSTEP, XTSTEP_TS, XVDEPOSC
 USE MODD_RAIN_ICE_DESCR, ONLY: XRTMIN
 USE MODD_VAR_ll,         ONLY: IP
-
+USE MODD_FIELDS_ADDRESS, ONLY : & ! common fields adress
+      & ITH,     & ! Potential temperature
+      & IRV,     & ! Water vapor
+      & IRC,     & ! Cloud water
+      & IRR,     & ! Rain water
+      & IRI,     & ! Pristine ice
+      & IRS,     & ! Snow/aggregate
+      & IRG,     & ! Graupel
+      & IRH        ! Hail
 use mode_budget,         only: Budget_store_add, Budget_store_init, Budget_store_end
 USE MODE_ll
 USE MODE_MSG
 use mode_tools,          only: Countjv
 
-USE MODE_ICE4_NUCLEATION_WRAPPER
 USE MODE_ICE4_RAINFR_VERT
 USE MODE_ICE4_SEDIMENTATION_STAT, ONLY: ICE4_SEDIMENTATION_STAT
 USE MODE_ICE4_SEDIMENTATION_SPLIT, ONLY: ICE4_SEDIMENTATION_SPLIT
 USE MODE_ICE4_SEDIMENTATION_SPLIT_MOMENTUM, ONLY: ICE4_SEDIMENTATION_SPLIT_MOMENTUM
+USE MODE_ICE4_NUCLEATION_WRAPPER, ONLY: ICE4_NUCLEATION_WRAPPER
+USE MODE_ICE4_TENDENCIES, ONLY: ICE4_TENDENCIES
+
 IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
@@ -369,7 +379,7 @@ INTEGER :: IMICRO ! Case r_x>0 locations
 INTEGER, DIMENSION(KSIZE) :: I1,I2,I3 ! Used to replace the COUNT
 INTEGER                   :: JL       ! and PACK intrinsics
 !
-!Arrays for nucleation call outisde of LDMICRO points
+!Arrays for nucleation call outisde of ODMICRO points
 REAL,    DIMENSION(KIT, KJT, KKT) :: ZW ! work array
 REAL,    DIMENSION(KIT, KJT, KKT) :: ZT ! Temperature
 REAL, DIMENSION(KIT, KJT, KKT) :: &
@@ -389,7 +399,6 @@ REAL, DIMENSION(KIT, KJT, KKT) :: &
                                 & ZHLI_LCF3D,& ! HLCLOUDS cloud fraction in low ice content part
                                 & ZHLI_HRI3D,& ! HLCLOUDS cloud water content in high ice content
                                 & ZHLI_LRI3D   ! HLCLOUDS cloud water content in high ice content
-
 REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2)) :: ZINPRI ! Pristine ice instant precip
 !
 !Packed variables
@@ -484,9 +493,22 @@ REAL, DIMENSION(KSIZE) :: Z0RVT,     &   ! Water vapor m.r. at the beginig of th
                         & Z0RIT,     &   ! 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
-                        & ZA_TH, ZA_RV, ZA_RC, ZA_RR, ZA_RI, ZA_RS, ZA_RG, ZA_RH, &
-                        & ZB_TH, ZB_RV, ZB_RC, ZB_RR, ZB_RI, ZB_RS, ZB_RG, ZB_RH
+                        & Z0RHT          ! Hail m.r. at the beginig of the current loop
+
+
+
+
+
+!en attendant phasage on utilise KSIZE à la place de KPROMA
+REAL, DIMENSION(KSIZE,0:7) :: &
+                        & ZVART, & !Packed variables
+                        & ZA, ZB
+
+
+
+
+
+
 !
 !To take into acount external tendencies inside the splitting
 REAL, DIMENSION(KSIZE) :: ZEXT_RV,   &   ! External tendencie for rv
@@ -629,7 +651,7 @@ IF(.NOT. LSEDIM_AFTER) THEN
                                    &PTSTEP, KRR, OSEDIC, PDZZ, &
                                    &PRHODREF, PPABST, PTHT, PRHODJ, &
                                    &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,&
-                                   &PINPRC,  PINPRR, ZINPRI, PINPRS, PINPRG, &
+                                   &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, &
                                    &PSEA=PSEA, PTOWN=PTOWN, &
                                    &PFPR=PFPR)
     ENDIF
@@ -849,15 +871,27 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
     !***       4.1 Tendecies computation
     !
     ! Tendencies are *really* computed when LSOFT==.FALSE. and only adjusted otherwise
-    CALL ICE4_TENDENCIES(IMICRO, IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, KKT, KKL, &
+
+
+
+!KPROMA=IMICRO: temporary merging step
+ZVART(:, ITH)=ZTHT(:)
+ZVART(:, IRV)=ZRVT(:)
+ZVART(:, IRC)=ZRCT(:)
+ZVART(:, IRR)=ZRRT(:)
+ZVART(:, IRI)=ZRIT(:)
+ZVART(:, IRS)=ZRST(:)
+ZVART(:, IRG)=ZRGT(:)
+IF(KRR==7) ZVART(:, IRH)=ZRHT(:)
+
+    CALL ICE4_TENDENCIES(IMICRO, IMICRO, IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, KKT, KKL, &
                         &KRR, LSOFT, ZCOMPUTE, &
                         &OWARM, CSUBG_RC_RR_ACCR, CSUBG_RR_EVAP, &
                         &HSUBG_AUCV_RC, HSUBG_AUCV_RI, CSUBG_PR_PDF, &
                         &ZEXN, ZRHODREF, ZLVFACT, ZLSFACT, I1, I2, I3, &
-                        &ZPRES, ZCF, ZSIGMA_RC,&
+                        &ZPRES, ZCF, ZSIGMA_RC, &
                         &ZCIT, &
-                        &ZZT, ZTHT, &
-                        &ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, ZRHT, &
+                        &ZZT, ZVART, &
                         &ZRVHENI_MR, ZRRHONG_MR, ZRIMLTC_MR, ZRSRIMCG_MR, &
                         &ZRCHONI, ZRVDEPS, ZRIAGGS, ZRIAUTS, ZRVDEPG, &
                         &ZRCAUTR, ZRCACCR, ZRREVAV, &
@@ -868,21 +902,28 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
                         &ZRCDRYH, ZRIDRYH, ZRSDRYH, ZRRDRYH, ZRGDRYH, ZRDRYHG, ZRHMLTR, &
                         &ZRCBERI, &
                         &ZRS_TEND, ZRG_TEND, ZRH_TEND, ZSSI, &
-                        &ZA_TH, ZA_RV, ZA_RC, ZA_RR, ZA_RI, ZA_RS, ZA_RG, ZA_RH, &
-                        &ZB_TH, ZB_RV, ZB_RC, ZB_RR, ZB_RI, ZB_RS, ZB_RG, ZB_RH, &
+                        &ZA, ZB, &
                         &ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC, &
                         &ZHLI_HCF, ZHLI_LCF, ZHLI_HRI, ZHLI_LRI, PRAINFR)
+ZTHT(:)=ZVART(:, ITH)
+ZRVT(:)=ZVART(:, IRV)
+ZRCT(:)=ZVART(:, IRC)
+ZRRT(:)=ZVART(:, IRR)
+ZRIT(:)=ZVART(:, IRI)
+ZRST(:)=ZVART(:, IRS)
+ZRGT(:)=ZVART(:, IRG)
+IF(KRR==7) ZRHT(:)=ZVART(:, IRH)
     ! External tendencies
     IF(GEXT_TEND) THEN
       DO JL=1, IMICRO
-        ZA_TH(JL) = ZA_TH(JL) + ZEXT_TH(JL)
-        ZA_RV(JL) = ZA_RV(JL) + ZEXT_RV(JL)
-        ZA_RC(JL) = ZA_RC(JL) + ZEXT_RC(JL)
-        ZA_RR(JL) = ZA_RR(JL) + ZEXT_RR(JL)
-        ZA_RI(JL) = ZA_RI(JL) + ZEXT_RI(JL)
-        ZA_RS(JL) = ZA_RS(JL) + ZEXT_RS(JL)
-        ZA_RG(JL) = ZA_RG(JL) + ZEXT_RG(JL)
-        ZA_RH(JL) = ZA_RH(JL) + ZEXT_RH(JL)
+        ZA(JL, ITH) = ZA(JL, ITH) + ZEXT_TH(JL)
+        ZA(JL, IRV) = ZA(JL, IRV) + ZEXT_RV(JL)
+        ZA(JL, IRC) = ZA(JL, IRC) + ZEXT_RC(JL)
+        ZA(JL, IRR) = ZA(JL, IRR) + ZEXT_RR(JL)
+        ZA(JL, IRI) = ZA(JL, IRI) + ZEXT_RI(JL)
+        ZA(JL, IRS) = ZA(JL, IRS) + ZEXT_RS(JL)
+        ZA(JL, IRG) = ZA(JL, IRG) + ZEXT_RG(JL)
+        ZA(JL, IRH) = ZA(JL, IRH) + ZEXT_RH(JL)
       ENDDO
     ENDIF
     !
@@ -894,15 +935,15 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
     !We need to adjust tendencies when temperature reaches 0
     IF(LFEEDBACKT) THEN
       DO JL=1, IMICRO
-        !Is ZB_TH enough to change temperature sign?
-        ZW1D(JL)=(ZTHT(JL) - XTT/ZEXN(JL)) * (ZTHT(JL) + ZB_TH(JL) - XTT/ZEXN(JL))
+        !Is ZB(:, ITH) enough to change temperature sign?
+        ZW1D(JL)=(ZTHT(JL) - XTT/ZEXN(JL)) * (ZTHT(JL) + ZB(JL, ITH) - XTT/ZEXN(JL))
         ZMAXTIME(JL)=ZMAXTIME(JL)*MAX(0., SIGN(1., ZW1D(JL)))
-        !Can ZA_TH make temperature change of sign?
-        ZW1D(JL)=MAX(0., -SIGN(1., 1.E-20 - ABS(ZA_TH(JL)))) ! WHERE(ABS(ZA_TH(:))>1.E-20)
+        !Can ZA(:, ITH) make temperature change of sign?
+        ZW1D(JL)=MAX(0., -SIGN(1., 1.E-20 - ABS(ZA(JL, ITH)))) ! WHERE(ABS(ZA(:, ITH))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1. - ZW1D(JL))*(-1.) + &
                             ZW1D(JL) * &
-                            (XTT/ZEXN(JL) - ZB_TH(JL) - ZTHT(JL))/ &
-                            SIGN(MAX(ABS(ZA_TH(JL)), 1.E-20), ZA_TH(JL))
+                            (XTT/ZEXN(JL) - ZB(JL, ITH) - ZTHT(JL))/ &
+                            SIGN(MAX(ABS(ZA(JL, ITH)), 1.E-20), ZA(JL, ITH))
         ZW1D(JL)=MAX(0., -SIGN(1., 1.E-20 - ZTIME_THRESHOLD(JL))) ! WHERE(ZTIME_THRESHOLD(:)>1.E-20)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                      ZW1D(JL) * MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
@@ -912,43 +953,43 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
     !We need to adjust tendencies when a specy disappears
     !When a species is missing, only the external tendencies can be negative (and we must keep track of it)
     DO JL=1, IMICRO
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RV(JL)+1.E-20)) * & ! WHERE(ZA_RV(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRV)+1.E-20)) * & ! WHERE(ZA(:, IRV)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(1)-ZRVT(JL)))   ! WHERE(ZRVT(:)>XRTMIN(1))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RV(JL)+ZRVT(JL))/MIN(ZA_RV(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRV)+ZRVT(JL))/MIN(ZA(JL, IRV), -1.E-20))
 
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RC(JL)+1.E-20)) * & ! WHERE(ZA_RC(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRC)+1.E-20)) * & ! WHERE(ZA(:, IRC)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(2)-ZRCT(JL)))   ! WHERE(ZRCT(:)>XRTMIN(2))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RC(JL)+ZRCT(JL))/MIN(ZA_RC(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRC)+ZRCT(JL))/MIN(ZA(JL, IRC), -1.E-20))
 
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RR(JL)+1.E-20)) * & ! WHERE(ZA_RR(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRR)+1.E-20)) * & ! WHERE(ZA(:, IRR)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(3)-ZRRT(JL)))   ! WHERE(ZRRT(:)>XRTMIN(3))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RR(JL)+ZRRT(JL))/MIN(ZA_RR(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRR)+ZRRT(JL))/MIN(ZA(JL, IRR), -1.E-20))
 
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RI(JL)+1.E-20)) * & ! WHERE(ZI_RV(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRI)+1.E-20)) * & ! WHERE(ZA(:, IRI)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(4)-ZRIT(JL)))   ! WHERE(ZRIT(:)>XRTMIN(4))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RI(JL)+ZRIT(JL))/MIN(ZA_RI(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRI)+ZRIT(JL))/MIN(ZA(JL, IRI), -1.E-20))
 
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RS(JL)+1.E-20)) * & ! WHERE(ZA_RS(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRS)+1.E-20)) * & ! WHERE(ZA(:, IRS)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(5)-ZRST(JL)))   ! WHERE(ZRST(:)>XRTMIN(5))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RS(JL)+ZRST(JL))/MIN(ZA_RS(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRS)+ZRST(JL))/MIN(ZA(JL, IRS), -1.E-20))
 
-      ZW1D(JL)=MAX(0., -SIGN(1., ZA_RG(JL)+1.E-20)) * & ! WHERE(ZA_RG(:)<-1.E-20)
+      ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRG)+1.E-20)) * & ! WHERE(ZA(:, IRG)<-1.E-20)
               &MAX(0., -SIGN(1., XRTMIN(6)-ZRGT(JL)))   ! WHERE(ZRGT(:)>XRTMIN(6))
       ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RG(JL)+ZRGT(JL))/MIN(ZA_RG(JL), -1.E-20))
+                  &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRG)+ZRGT(JL))/MIN(ZA(JL, IRG), -1.E-20))
     ENDDO
 
     IF(KRR==7) THEN
       DO JL=1, IMICRO
-        ZW1D(JL)=MAX(0., -SIGN(1., ZA_RH(JL)+1.E-20)) * & ! WHERE(ZA_RH(:)<-1.E-20)
+        ZW1D(JL)=MAX(0., -SIGN(1., ZA(JL, IRH)+1.E-20)) * & ! WHERE(ZA(:, IRH)<-1.E-20)
                 &MAX(0., -SIGN(1., XRTMIN(7)-ZRHT(JL)))   ! WHERE(ZRHT(:)>XRTMIN(7))
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
-                    &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB_RH(JL)+ZRHT(JL))/MIN(ZA_RH(JL), -1.E-20))
+                    &ZW1D(JL) * MIN(ZMAXTIME(JL), -(ZB(JL, IRH)+ZRHT(JL))/MIN(ZA(JL, IRH), -1.E-20))
       ENDDO
     ENDIF
 
@@ -972,79 +1013,79 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
     IF(XMRSTEP/=0.) THEN
       DO JL=1, IMICRO
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RV(JL)))) ! WHERE(ABS(ZA_RV(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRV)))) ! WHERE(ABS(ZA(:, IRV))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RV(JL))*XMRSTEP+Z0RVT(JL)-ZRVT(JL)-ZB_RV(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RV(JL)), 1.E-20), ZA_RV(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRV))*XMRSTEP+Z0RVT(JL)-ZRVT(JL)-ZB(JL, IRV))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRV)), 1.E-20), ZA(JL, IRV))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRVT(JL))) + & !WHERE(ZRVT(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RV(JL))))            !WHERE(ZA_RV(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRV))))            !WHERE(ZA(:, IRV)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
 
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RC(JL)))) ! WHERE(ABS(ZA_RC(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRC)))) ! WHERE(ABS(ZA(:, IRC))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RC(JL))*XMRSTEP+Z0RCT(JL)-ZRCT(JL)-ZB_RC(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RC(JL)), 1.E-20), ZA_RC(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRC))*XMRSTEP+Z0RCT(JL)-ZRCT(JL)-ZB(JL, IRC))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRC)), 1.E-20), ZA(JL, IRC))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRCT(JL))) + & !WHERE(ZRCT(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RC(JL))))            !WHERE(ZA_RC(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRC))))            !WHERE(ZA(:, IRC)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
 
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RR(JL)))) ! WHERE(ABS(ZA_RR(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRR)))) ! WHERE(ABS(ZA(:, IRR))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RR(JL))*XMRSTEP+Z0RRT(JL)-ZRRT(JL)-ZB_RR(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RR(JL)), 1.E-20), ZA_RR(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRR))*XMRSTEP+Z0RRT(JL)-ZRRT(JL)-ZB(JL, IRR))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRR)), 1.E-20), ZA(JL, IRR))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRRT(JL))) + & !WHERE(ZRRT(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RR(JL))))            !WHERE(ZA_RR(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRR))))            !WHERE(ZA(:, IRR)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
 
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RI(JL)))) ! WHERE(ABS(ZA_RI(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRI)))) ! WHERE(ABS(ZA(:, IRI))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RI(JL))*XMRSTEP+Z0RIT(JL)-ZRIT(JL)-ZB_RI(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RI(JL)), 1.E-20), ZA_RI(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRI))*XMRSTEP+Z0RIT(JL)-ZRIT(JL)-ZB(JL, IRI))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRI)), 1.E-20), ZA(JL, IRI))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRIT(JL))) + & !WHERE(ZRIT(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RI(JL))))            !WHERE(ZA_RI(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRI))))            !WHERE(ZA(:, IRI)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
 
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RS(JL)))) ! WHERE(ABS(ZA_RS(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRS)))) ! WHERE(ABS(ZA(:, IRS))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RS(JL))*XMRSTEP+Z0RST(JL)-ZRST(JL)-ZB_RS(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RS(JL)), 1.E-20), ZA_RS(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRS))*XMRSTEP+Z0RST(JL)-ZRST(JL)-ZB(JL, IRS))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRS)), 1.E-20), ZA(JL, IRS))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRST(JL))) + & !WHERE(ZRST(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RS(JL))))            !WHERE(ZA_RS(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRS))))            !WHERE(ZA(:, IRS)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
 
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RG(JL)))) ! WHERE(ABS(ZA_RG(:))>1.E-20)
+                &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRG)))) ! WHERE(ABS(ZA(:, IRG))>1.E-20)
         ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                           &ZW1D(JL)*(SIGN(1., ZA_RG(JL))*XMRSTEP+Z0RGT(JL)-ZRGT(JL)-ZB_RG(JL))/ &
-                           &SIGN(MAX(ABS(ZA_RG(JL)), 1.E-20), ZA_RG(JL))
+                           &ZW1D(JL)*(SIGN(1., ZA(JL, IRG))*XMRSTEP+Z0RGT(JL)-ZRGT(JL)-ZB(JL, IRG))/ &
+                           &SIGN(MAX(ABS(ZA(JL, IRG)), 1.E-20), ZA(JL, IRG))
         ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                 &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                 &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRGT(JL))) + & !WHERE(ZRGT(:)>XRTMIN(6)) .OR.
-                        &MAX(0., -SIGN(1., -ZA_RG(JL))))            !WHERE(ZA_RG(:)>0.)
+                        &MAX(0., -SIGN(1., -ZA(JL, IRG))))            !WHERE(ZA(:, IRG)>0.)
         ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                     &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
         ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
@@ -1053,14 +1094,14 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
       IF(KRR==7) THEN
         DO JL=1, IMICRO
           ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & ! WHERE(IITER(:)<INB_ITER_MAX)
-                  &MAX(0., -SIGN(1., 1.E-20-ABS(ZA_RH(JL)))) ! WHERE(ABS(ZA_RH(:))>1.E-20)
+                  &MAX(0., -SIGN(1., 1.E-20-ABS(ZA(JL, IRH)))) ! WHERE(ABS(ZA(:, IRH))>1.E-20)
           ZTIME_THRESHOLD(JL)=(1.-ZW1D(JL))*(-1.) + &
-                             &ZW1D(JL)*(SIGN(1., ZA_RH(JL))*XMRSTEP+Z0RHT(JL)-ZRHT(JL)-ZB_RH(JL))/ &
-                             &SIGN(MAX(ABS(ZA_RH(JL)), 1.E-20), ZA_RH(JL))
+                             &ZW1D(JL)*(SIGN(1., ZA(JL, IRH))*XMRSTEP+Z0RHT(JL)-ZRHT(JL)-ZB(JL, IRH))/ &
+                             &SIGN(MAX(ABS(ZA(JL, IRH)), 1.E-20), ZA(JL, IRH))
           ZW1D(JL)=MAX(0., SIGN(1., ZTIME_THRESHOLD(JL))) * & !WHERE(ZTIME_THRESHOLD(:)>=0.)
                   &MAX(0., -SIGN(1., ZTIME_THRESHOLD(JL)-ZMAXTIME(JL))) * & !WHERE(ZTIME_THRESHOLD(:)<ZMAXTIME(:))
                   &MIN(1., MAX(0., -SIGN(1., XRTMIN(6)-ZRHT(JL))) + & !WHERE(ZRHT(:)>XRTMIN(6)) .OR.
-                          &MAX(0., -SIGN(1., -ZA_RH(JL))))            !WHERE(ZA_RH(:)>0.)
+                          &MAX(0., -SIGN(1., -ZA(JL, IRH))))            !WHERE(ZA(:, IRH)>0.)
           ZMAXTIME(JL)=(1.-ZW1D(JL)) * ZMAXTIME(JL) + &
                       &ZW1D(JL)*MIN(ZMAXTIME(JL), ZTIME_THRESHOLD(JL))
           ZCOMPUTE(JL)=ZCOMPUTE(JL) * (1. - ZW1D(JL))
@@ -1068,8 +1109,13 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
       ENDIF
 
       DO JL=1, IMICRO
-        ZW1D(JL)=MAX(ABS(ZB_RV(JL)), ABS(ZB_RC(JL)), ABS(ZB_RR(JL)), ABS(ZB_RI(JL)), &
-                    &ABS(ZB_RS(JL)), ABS(ZB_RG(JL)), ABS(ZB_RH(JL)))
+        IF(KRR==7) THEN
+          ZW1D(JL)=MAX(ABS(ZB(JL, IRV)), ABS(ZB(JL, IRC)), ABS(ZB(JL, IRR)), ABS(ZB(JL, IRI)), &
+                      &ABS(ZB(JL, IRS)), ABS(ZB(JL, IRG)), ABS(ZB(JL, IRH)))
+        ELSE
+          ZW1D(JL)=MAX(ABS(ZB(JL, IRV)), ABS(ZB(JL, IRC)), ABS(ZB(JL, IRR)), ABS(ZB(JL, IRI)), &
+                      &ABS(ZB(JL, IRS)), ABS(ZB(JL, IRG)))
+        ENDIF
         ZW1D(JL)=MAX(0., -SIGN(1., IITER(JL)-INB_ITER_MAX+0.)) * & !WHERE(IITER(:)<INB_ITER_MAX)
                 &MAX(0., -SIGN(1., XMRSTEP-ZW1D(JL))) !WHERE(ZW1D(:)>XMRSTEP)
         ZMAXTIME(JL)=(1.-ZW1D(JL))*ZMAXTIME(JL)
@@ -1080,16 +1126,16 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies
     !***       4.3 New values of variables for next iteration
     !
     DO JL=1, IMICRO
-      ZTHT(JL)=ZTHT(JL)+ZA_TH(JL)*ZMAXTIME(JL)+ZB_TH(JL)
-      ZRVT(JL)=ZRVT(JL)+ZA_RV(JL)*ZMAXTIME(JL)+ZB_RV(JL)
-      ZRCT(JL)=ZRCT(JL)+ZA_RC(JL)*ZMAXTIME(JL)+ZB_RC(JL)
-      ZRRT(JL)=ZRRT(JL)+ZA_RR(JL)*ZMAXTIME(JL)+ZB_RR(JL)
-      ZRIT(JL)=ZRIT(JL)+ZA_RI(JL)*ZMAXTIME(JL)+ZB_RI(JL)
-      ZRST(JL)=ZRST(JL)+ZA_RS(JL)*ZMAXTIME(JL)+ZB_RS(JL)
-      ZRGT(JL)=ZRGT(JL)+ZA_RG(JL)*ZMAXTIME(JL)+ZB_RG(JL)
+      ZTHT(JL)=ZTHT(JL)+ZA(JL, ITH)*ZMAXTIME(JL)+ZB(JL, ITH)
+      ZRVT(JL)=ZRVT(JL)+ZA(JL, IRV)*ZMAXTIME(JL)+ZB(JL, IRV)
+      ZRCT(JL)=ZRCT(JL)+ZA(JL, IRC)*ZMAXTIME(JL)+ZB(JL, IRC)
+      ZRRT(JL)=ZRRT(JL)+ZA(JL, IRR)*ZMAXTIME(JL)+ZB(JL, IRR)
+      ZRIT(JL)=ZRIT(JL)+ZA(JL, IRI)*ZMAXTIME(JL)+ZB(JL, IRI)
+      ZRST(JL)=ZRST(JL)+ZA(JL, IRS)*ZMAXTIME(JL)+ZB(JL, IRS)
+      ZRGT(JL)=ZRGT(JL)+ZA(JL, IRG)*ZMAXTIME(JL)+ZB(JL, IRG)
       ZCIT(JL)=ZCIT(JL) * MAX(0., -SIGN(1., -ZRIT(JL))) ! WHERE(ZRIT(:)==0.) ZCIT(:) = 0.
     ENDDO
-    IF(KRR==7) ZRHT(:)=ZRHT(:)+ZA_RH(:)*ZMAXTIME(:)+ZB_RH(:)
+    IF(KRR==7) ZRHT(:)=ZRHT(:)+ZA(:, IRH)*ZMAXTIME(:)+ZB(:, IRH)
     !
     !***       4.4 Mixing ratio change due to each process
     !
@@ -1679,20 +1725,22 @@ IF(LSEDIM_AFTER) THEN
     !SR: It *seems* that we must have two separate calls for ifort
     IF(KRR==7) THEN
       CALL ICE4_SEDIMENTATION_STAT(IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, IKTB, IKTE, KKT, KKL, &
-                                  &PTSTEP, KRR, OSEDIC, PDZZ, &
+                                  &PTSTEP, KRR, OSEDIC, &
+                                  &PDZZ, &
                                   &PRHODREF, PPABST, PTHT, PRHODJ, &
                                   &PRCS, PRCS*PTSTEP, PRRS, PRRS*PTSTEP, PRIS, PRIS*PTSTEP,&
                                   &PRSS, PRSS*PTSTEP, PRGS, PRGS*PTSTEP,&
-                                  &PINPRC,  PINPRR, ZINPRI, PINPRS, PINPRG, &
+                                  &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, &
                                   &PSEA=PSEA, PTOWN=PTOWN, &
                                   &PINPRH=PINPRH, PRHT=PRHS*PTSTEP, PRHS=PRHS, PFPR=PFPR)
     ELSE
       CALL ICE4_SEDIMENTATION_STAT(IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, IKTB, IKTE, KKT, KKL, &
-                                  &PTSTEP, KRR, OSEDIC, PDZZ,&
+                                  &PTSTEP, KRR, OSEDIC, &
+                                  &PDZZ, &
                                   &PRHODREF, PPABST, PTHT, PRHODJ, &
                                   &PRCS, PRCS*PTSTEP, PRRS, PRRS*PTSTEP, PRIS, PRIS*PTSTEP,&
                                   &PRSS, PRSS*PTSTEP, PRGS, PRGS*PTSTEP,&
-                                  &PINPRC,  PINPRR, ZINPRI, PINPRS, PINPRG, &
+                                  &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, &
                                   &PSEA=PSEA, PTOWN=PTOWN, &
                                   &PFPR=PFPR)
     ENDIF
@@ -1702,18 +1750,20 @@ IF(LSEDIM_AFTER) THEN
     !SR: It *seems* that we must have two separate calls for ifort
     IF(KRR==7) THEN
       CALL ICE4_SEDIMENTATION_SPLIT(IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, IKTB, IKTE, KKT, KKL, &
-                                   &PTSTEP, KRR, OSEDIC, PDZZ, &
+                                   &PTSTEP, KRR, OSEDIC, &
+                                   &PDZZ, &
                                    &PRHODREF, PPABST, PTHT, PRHODJ, &
                                    &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,&
-                                   &PINPRC,  PINPRR, ZINPRI, PINPRS, PINPRG, &
+                                   &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, &
                                    &PSEA=PSEA, PTOWN=PTOWN, &
                                    &PINPRH=PINPRH, PRHT=PRHT, PRHS=PRHS, PFPR=PFPR)
     ELSE
       CALL ICE4_SEDIMENTATION_SPLIT(IIB, IIE, KIT, IJB, IJE, KJT, IKB, IKE, IKTB, IKTE, KKT, KKL, &
-                                   &PTSTEP, KRR, OSEDIC, PDZZ, &
+                                   &PTSTEP, KRR, OSEDIC, &
+                                   &PDZZ, &
                                    &PRHODREF, PPABST, PTHT, PRHODJ, &
                                    &PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,&
-                                   &PINPRC,  PINPRR, ZINPRI, PINPRS, PINPRG, &
+                                   &PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, &
                                    &PSEA=PSEA, PTOWN=PTOWN, &
                                    &PFPR=PFPR)
     ENDIF