diff --git a/src/arome/ext/apl_arome.F90 b/src/arome/ext/apl_arome.F90
index 7e421c6d8bc7158d4e7e0f6cd3d5f56ebc7605f0..0467649b260f778b817c8fb054c0884619d10074 100644
--- a/src/arome/ext/apl_arome.F90
+++ b/src/arome/ext/apl_arome.F90
@@ -392,6 +392,8 @@ REAL(KIND=JPRB) :: ZZRV_UP_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),    ZTKES_(YDCPG
 REAL(KIND=JPRB) :: ZDZZ_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),       ZZZ_F_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),      ZDZZ_F_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
 REAL(KIND=JPRB) :: ZCIT_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),       ZMFM_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),       ZEXNREFM_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
 REAL(KIND=JPRB) :: ZSIGM_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),      ZNEBMNH_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),    ZEVAP_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
+! additions for future ice cloud fraction and precipitation fraction
+REAL(KIND=JPRB) :: ZICEFR_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),     ZPRCFR_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
 ! additions for MF scheme (Pergaud et al)
 REAL(KIND=JPRB) :: ZSIGMF_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),     ZRC_MF_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),     ZRI_MF_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
 REAL(KIND=JPRB) :: ZCF_MF_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),     ZAERD_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG),      ZCVTENDT_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
@@ -655,6 +657,7 @@ LOGICAL :: LLRAD
 LOGICAL :: LLSWAP_THS, LLSWAP_RS, LLSWAP_SVS, LLSWAP_SVM, LLSWAP_LIMAS ! logical to swap or not pointers in and out
 LOGICAL :: LLHN(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG)
 LOGICAL :: LNUDGLHNREAD
+LOGICAL :: LLIMAINIT
 
 !       Characters
 CHARACTER(LEN=11) :: CLNAME
@@ -1061,6 +1064,17 @@ ZINVDT=1/YDCPG_OPTS%ZDTPHY
 
 ZINVG=1._JPRB/RG 
 
+!set concentration for LIMA
+LLIMAINIT=.FALSE.
+IF (YDCPG_OPTS%KSTEP==0) THEN
+  LLIMAINIT=.TRUE.
+  ZP1EZDIAG(:,:,1)=0._JPRB
+  ZP1EZDIAG(:,:,2)=0._JPRB
+  ZP1EZDIAG(:,:,3)=0._JPRB
+  ZP1EZDIAG(:,:,4)=0._JPRB
+  ZP1EZDIAG(:,:,5)=0._JPRB
+ENDIF
+
 ! initialisation de ZDTMSE
 IF (LLXFUMSE) THEN
   ZDTMSE=0.01_JPRB
@@ -1117,6 +1131,8 @@ IF (INIT0 >= 0) THEN
   ZMFM_(:,:)=ZVALUE
   ZSIGM_(:,:)=ZVALUE
   ZNEBMNH_(:,:)=ZVALUE
+  ZICEFR_(:,:)=ZVALUE
+  ZPRCFR_(:,:)=ZVALUE
   ZICLDFR_(:,:)=ZVALUE
   ZWCLDFR_(:,:)=ZVALUE
   ZSSIO_(:,:)=ZVALUE
@@ -1597,8 +1613,8 @@ IF (LMICRO) THEN
     & NLIMA, YDCPG_OPTS%KSTEP+1, LOSUBG_COND, LOSIGMAS, LOCND2, CCONDENS, CLAMBDA3, ZDT, VSIGQSAT, ZZZ_F_, ZRHODJM__(:, 1:YDCPG_OPTS%KFLEVG), &
     & ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG), ZEXNREFM_, ZPABSM__(:, 1:YDCPG_OPTS%KFLEVG), ZTHM__(:, 1:YDCPG_OPTS%KFLEVG),   &
     & ZRM_, ZLIMAM_, ZSIGM_, ZPTRWNU_, ZDTHRAD_, ZMFM_, ZRC_MF_, ZRI_MF_, ZCF_MF_, ZTHS__(:, 1:YDCPG_OPTS%KFLEVG), ZRS_,                      &
-    & ZLIMAS_, ZSRCS__(:, 1:YDCPG_OPTS%KFLEVG), ZNEBMNH_, YDDDH, YDMODEL%YRML_DIAG%YRLDDH, YDMODEL%YRML_DIAG%YRMDDH       &
-    &                               )
+    & ZLIMAS_, ZSRCS__(:, 1:YDCPG_OPTS%KFLEVG), ZNEBMNH_, ZICEFR_, ZPRCFR_, YDDDH, YDMODEL%YRML_DIAG%YRLDDH, YDMODEL%YRML_DIAG%YRMDDH,       &
+    & LLIMAINIT                              )
   ELSE
 
 !    CALL ARO_ADJUST (KLON,KIDIA,KFDIA,KLEV,NRR,& !this is the target version
@@ -3195,7 +3211,7 @@ IF (LMICRO) THEN
     & NSPLITR, NSPLITG, ZDT, ZDZZ_, ZRHODJM__(:, 1:YDCPG_OPTS%KFLEVG), ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG),               &
     & ZEXNREFM_, ZPABSM__(:, 1:YDCPG_OPTS%KFLEVG), ZPTRWNU_, ZDTHRAD_, ZTHM__(:, 1:YDCPG_OPTS%KFLEVG), ZRM_,                     &
     & ZLIMAM_, ZTHS__(:, 1:YDCPG_OPTS%KFLEVG), ZRS_, ZLIMAS_, ZEVAP_, ZINPRR_NOTINCR_,                                    &
-    & ZINPRS_NOTINCR_, ZINPRG_NOTINCR_, ZINPRH_NOTINCR_, ZPFPR_, ZNEBMNH_, YDDDH, YDMODEL%YRML_DIAG%YRLDDH,               &
+    & ZINPRS_NOTINCR_, ZINPRG_NOTINCR_, ZINPRH_NOTINCR_, ZPFPR_, ZNEBMNH_, ZICEFR_, ZPRCFR_, YDDDH, YDMODEL%YRML_DIAG%YRLDDH,               &
     & YDMODEL%YRML_DIAG%YRMDDH)
   ELSE
     !CALL ARO_RAIN_ICE (NPROMICRO,KLEV,IKU,IKL,KLON,KLEV,KFDIA,NRR,KSTEP+1,&      !this is the target version
diff --git a/src/arome/ext/aro_adjust_lima.F90 b/src/arome/ext/aro_adjust_lima.F90
index 6d9ace01553087525291bac6a394c65387f0af53..b7854d832bc629ca86ec37bb54e7266f26dafa66 100644
--- a/src/arome/ext/aro_adjust_lima.F90
+++ b/src/arome/ext/aro_adjust_lima.F90
@@ -6,8 +6,8 @@
                                   PPABSM, PTHT, PRT, PSVT, PSIGS, &
                                   PW_NU, PDTHRAD, &
                                   PMFCONV, PRC_MF, PRI_MF, PCF_MF, &
-                                  PTHS, PRS,  PSVS, PSRCS, PCLDFR, &
-                                  YDDDH, YDLDDH, YDMDDH)
+                                  PTHS, PRS,  PSVS, PSRCS, PCLDFR, PICEFR, PPRCFR, &
+                                  YDDDH, YDLDDH, YDMDDH, LLIMAINIT )
       USE PARKIND1, ONLY : JPRB
       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     ##########################################################################
@@ -88,6 +88,8 @@ USE MODD_PARAM_LIMA
 USE MODD_NSV
 !
 USE MODI_LIMA_ADJUST_SPLIT
+USE MODE_SET_CONC_LIMA
+USE MODE_SET_CONC_LIMA_LBC
 USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX
 !USE MODE_BUDGET, ONLY: BUDGET_DDH
 !
@@ -152,12 +154,16 @@ REAL, DIMENSION(KLON,1,KLEV),   INTENT(OUT)   :: PSRCS ! Second-order flux
                                                  ! s'rc'/2Sigma_s2 at time t+1
                                                  ! multiplied by Lambda_3
 REAL, DIMENSION(KLON,1,KLEV), INTENT(INOUT)   :: PCLDFR! Cloud fraction
+REAL, DIMENSION(KLON,1,KLEV), INTENT(INOUT)   :: PICEFR! Cloud fraction
+REAL, DIMENSION(KLON,1,KLEV), INTENT(INOUT)   :: PPRCFR! Cloud fraction
 !
 !
 TYPE(TYP_DDH), INTENT(INOUT), TARGET :: YDDDH
 TYPE(TLDDH), INTENT(IN), TARGET :: YDLDDH
 TYPE(TMDDH), INTENT(IN), TARGET :: YDMDDH
 !
+LOGICAL,                  INTENT(IN)    :: LLIMAINIT
+!
 !*       0.2   Declarations of local variables :
 
 CHARACTER(LEN=4)          :: HCLOUD   ! kind of cloud
@@ -178,7 +184,6 @@ REAL, DIMENSION(SIZE(PZZF,1),SIZE(PZZF,2),SIZE(PZZF,3)):: ZCOR
                                     ! for the correction of negative rv
 REAL, DIMENSION(SIZE(PZZF,1),SIZE(PZZF,2),SIZE(PZZF,3)):: ZZZ
                                     ! model layer height
-REAL, DIMENSION(KLON,1,KLEV):: ZICEFR
 REAL  :: ZMASSTOT                   ! total mass  for one water category
                                     ! including the negative values
 REAL  :: ZMASSPOS                   ! total mass  for one water category
@@ -218,7 +223,21 @@ ZT(:,:,:)= PTHT(:,:,:)*PEXNREF(:,:,:)
 ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
 ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZT(:,:,:)-XTT)
 ZCPH(:,:,:)=XCPD +XCPV*2.*PTSTEP*PRS(:,:,:,1)
-!
+
+!set concentration for LIMA
+PRS = PRS * PTSTEP
+PSVS = PSVS * PTSTEP
+IF (LLIMAINIT) THEN
+   CALL SET_CONC_LIMA (1,'ICE3',PRHODREF,PRT,PSVT)
+   CALL SET_CONC_LIMA (1,'ICE3',PRHODREF,PRS,PSVS)
+ELSE
+   CALL SET_CONC_LIMA_LBC (1,'ICE3',PRHODREF,PRT,PSVT)
+   CALL SET_CONC_LIMA_LBC (1,'ICE3',PRHODREF,PRS,PSVS)
+END IF
+PRS = PRS / PTSTEP
+PSVS = PSVS / PTSTEP
+
+!print *, "aro_adjust_lima 2"
 !
 !*       3.     REMOVE NEGATIVE VALUES
 !               ----------------------
@@ -339,7 +358,7 @@ ENDDO
          PRHODREF=PRHODREF, PRHODJ=PRHODJ, PEXNREF=PEXNREF, PSIGS=PSIGS, PMFCONV=PMFCONV, &
          PPABST=PPABSM, PPABSTT=PPABSM, PZZ=ZZZ, PDTHRAD=PDTHRAD, PW_NU=PW_NU, &
          PRT=PRT, PRS=PRS, PSVT=PSVT, PSVS=PSVS, &
-         PTHS=PTHS, PSRCS=PSRCS, PCLDFR=PCLDFR, PICEFR=ZICEFR, PRC_MF=PRC_MF, PRI_MF=PRI_MF, PCF_MF=PCF_MF )
+         PTHS=PTHS, PSRCS=PSRCS, PCLDFR=PCLDFR, PICEFR=PICEFR, PRC_MF=PRC_MF, PRI_MF=PRI_MF, PCF_MF=PCF_MF )
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/arome/ext/aro_adjust_lima.h b/src/arome/ext/aro_adjust_lima.h
index dd691848aa46f305fcca6fbeeea105811c533f91..1686f98b2e16439bc664fa27bfe8a97ca12a5274 100644
--- a/src/arome/ext/aro_adjust_lima.h
+++ b/src/arome/ext/aro_adjust_lima.h
@@ -6,8 +6,8 @@ SUBROUTINE ARO_ADJUST_LIMA(KKA,KKU,KKL,KLON,KLEV,KFDIA, KRR, KSV, KTCOUNT,&
  & PPABSM, PTHT, PRT, PSVT, PSIGS,&
  & PW_NU, PDTHRAD,&
  & PMFCONV, PRC_MF, PRI_MF, PCF_MF,&
- & PTHS, PRS, PSVS, PSRCS, PCLDFR,&
- & YDDDH,YDLDDH,YDMDDH) 
+ & PTHS, PRS, PSVS, PSRCS, PCLDFR, PICEFR, PPRCFR, &
+ & YDDDH,YDLDDH,YDMDDH, LLIMAINIT) 
 USE PARKIND1  ,ONLY : JPIM     ,JPRB
 USE DDH_MIX, ONLY : TYP_DDH
 USE YOMLDDH, ONLY : TLDDH
@@ -46,8 +46,11 @@ REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KRR), INTENT(INOUT) :: PRS
 REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KSV), INTENT(INOUT) :: PSVS
 REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(OUT) :: PSRCS
 REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PCLDFR
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PICEFR
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PPRCFR
 TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
 TYPE(TLDDH), INTENT(IN) :: YDLDDH
 TYPE(TMDDH), INTENT(IN) :: YDMDDH
+LOGICAL, INTENT(IN)    :: LLIMAINIT
 END SUBROUTINE ARO_ADJUST_LIMA
 END INTERFACE
diff --git a/src/arome/ext/aro_lima.F90 b/src/arome/ext/aro_lima.F90
index cbe7032178219aa8234d3de4702683ad8bbc3ebf..edef5e82779c4dfc8784d9ed5ca29077fd226722 100644
--- a/src/arome/ext/aro_lima.F90
+++ b/src/arome/ext/aro_lima.F90
@@ -5,7 +5,7 @@
                                   PTHS, PRS, PSVS, PEVAP,  &
                                   PINPRR,PINPRS,                 &
                                   PINPRG,PINPRH,PFPR,     &
-                                  PCLDFR,         &
+                                  PCLDFR,PICEFR,PPRCFR,         &
                                   YDDDH, YDLDDH, YDMDDH    )
 
       USE PARKIND1, ONLY : JPRB
@@ -114,7 +114,10 @@ REAL, DIMENSION(KLON,1), INTENT(INOUT)     :: PINPRG! Graupel instant precip
 REAL, DIMENSION(KLON,1), INTENT(INOUT)     :: PINPRH! Hail instant precip
 REAL, DIMENSION(KLON,1,KLEV,KRR), INTENT(INOUT) :: PFPR ! upper-air precip
 !
-REAL, DIMENSION(KLON,1,KLEV),   INTENT(INOUT)   :: PCLDFR ! ice cloud fraction
+REAL, DIMENSION(KLON,1,KLEV),   INTENT(INOUT)   :: PCLDFR ! liquid cloud fraction
+REAL, DIMENSION(KLON,1,KLEV),   INTENT(INOUT)   :: PICEFR ! ice cloud fraction
+REAL, DIMENSION(KLON,1,KLEV),   INTENT(INOUT)   :: PPRCFR ! precipitation fraction
+!
 TYPE(TYP_DDH), INTENT(INOUT), TARGET :: YDDDH
 TYPE(TLDDH), INTENT(IN), TARGET :: YDLDDH
 TYPE(TMDDH), INTENT(IN), TARGET :: YDMDDH
@@ -139,7 +142,6 @@ REAL, DIMENSION(KLON,1,KLEV):: &
 REAL, DIMENSION(KLON,1):: ZINPRC    ! surf cloud sedimentation
                                     ! for the correction of negative rv
 REAL, DIMENSION(KLON,1):: ZINPRI, ZINDEP    ! surf cloud ice sedimentation
-REAL, DIMENSION(KLON,1,KLEV):: ZICEFR, ZPRCFR
 REAL  :: ZMASSTOT                   ! total mass  for one water category
                                     ! including the negative values
 REAL  :: ZMASSPOS                   ! total mass  for one water category
@@ -310,7 +312,7 @@ CALL LIMA (D=YLDIMPHYEX, CST=CST, BUCONF=TBUCONF, TBUDGETS=YLBUDGET, KBUDGETS=SI
            PDTHRAD=PDTHRAD, PTHT=PTHT, PRT=PRT, PSVT=PSVT, PW_NU=PW_NU,                  &
            PTHS=PTHS, PRS=PRS, PSVS=PSVS,                                &
            PINPRC=ZINPRC, PINDEP=ZINDEP, PINPRR=PINPRR, PINPRI=ZINPRI, PINPRS=PINPRS, PINPRG=PINPRG, PINPRH=PINPRH, &
-           PEVAP3D=PEVAP, PCLDFR=PCLDFR, PICEFR=ZICEFR, PPRCFR=ZPRCFR, PFPR=PFPR )
+           PEVAP3D=PEVAP, PCLDFR=PCLDFR, PICEFR=PICEFR, PPRCFR=PPRCFR, PFPR=PFPR )
 !add ZINPRC in PINPRR
 PINPRR=PINPRR+ZINPRC
 !-------------------------------------------------------------------------------
diff --git a/src/arome/ext/aro_lima.h b/src/arome/ext/aro_lima.h
index 44b20abcfc97c29f86dd73af2835f425011c5e8c..82f32109aa6ee135e9dde8f7d75e4612e38179a6 100644
--- a/src/arome/ext/aro_lima.h
+++ b/src/arome/ext/aro_lima.h
@@ -5,7 +5,7 @@ SUBROUTINE ARO_LIMA(KKA,KKU,KKL,KLON,KLEV, KFDIA, KRR, KSV, KTCOUNT, KSPLITR, KS
  & PTHS, PRS, PSVS, PEVAP,&
  & PINPRR,PINPRS,&
  & PINPRG,PINPRH,PFPR,&
- & PCLDFR,&
+ & PCLDFR,PICEFR,PPRCFR,&
  & YDDDH,YDLDDH,YDMDDH)
 USE PARKIND1  ,ONLY : JPIM     ,JPRB
 USE DDH_MIX, ONLY : TYP_DDH
@@ -43,6 +43,8 @@ REAL(KIND=JPRB), DIMENSION(KLON,1), INTENT(INOUT) :: PINPRG
 REAL(KIND=JPRB), DIMENSION(KLON,1), INTENT(INOUT) :: PINPRH
 REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KRR), INTENT(INOUT) :: PFPR
 REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PCLDFR
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PICEFR
+REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PPRCFR
 TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
 TYPE(TLDDH), INTENT(IN) :: YDLDDH
 TYPE(TMDDH), INTENT(IN) :: YDMDDH
diff --git a/src/arome/micro/set_conc_lima_lbc.F90 b/src/arome/micro/set_conc_lima_lbc.F90
new file mode 100644
index 0000000000000000000000000000000000000000..99fe74a52891aac1083ddd1a271c9db67ae87049
--- /dev/null
+++ b/src/arome/micro/set_conc_lima_lbc.F90
@@ -0,0 +1,226 @@
+!MNH_LIC Copyright 2000-2020 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_set_conc_lima_lbc
+!#######################################
+
+implicit none
+
+contains
+
+!     ###########################################################################
+      SUBROUTINE SET_CONC_LIMA_LBC( kmi, HGETCLOUD, PRHODREF, PRT, PSVT )
+!     ###########################################################################
+!
+!!****  *SET_CONC_LIMA * - initialize droplet, raindrop and ice
+!!                   concentration for a RESTArt simulation of the LIMA scheme
+!!
+!!
+!!    PURPOSE
+!!    -------
+!!      The purpose of this routine is to initialize cloud droplet and rain drop
+!!    concentrations when the cloud droplet and rain drop mixing ratios are
+!!    only available (generally from a previous run using the Kessler scheme).
+!!      This routine is used to initialize the droplet/drop concentrations
+!!    using the r_c and r_r of a previous REVE or KESS run but also to compute
+!!    the LB tendencies in ONE_WAY$n in case of grid-nesting when the optional
+!!    argument PTIME is set (a LIMA run embedded in a KESS or REVE run).
+!!
+!!**  METHOD
+!!    ------
+!!      The method assumes a Csk law for the activation of aerososl with "s"
+!!    the supersaturation (here 0.05 % is chosen). A Marshall-Palmer law with
+!!    N_o=10**(-7) m**(-4) is assumed for the rain drop concentration.
+!!      The initialization of the PSVT is straightforward for the cloud droplets
+!!    while N_r=N_0/Lambda_r with Rho*r_r=Pi*Rho_w*N_0/(Lambda_r**4) is used for
+!!    the rain drops. The HGETCLOUD test is used to discriminate between the
+!!    'REVE' and 'KESS' options for CCLOUD in the previous run (from which
+!!     PRT was calculated).
+!!
+!!    EXTERNAL
+!!    --------
+!!      None
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      Module MODD_RAIN_C2R2_DESCR, ONLY : XRTMIN, XCTMIN
+!!      Module MODD_RAIN_C2R2_KHKO_PARAM, ONLY : XCONCC_INI, XCONCR_PARAM_INI
+!!      Module MODD_CONF,            ONLY : NVERB
+!!
+!!    REFERENCE
+!!    ---------
+!!      Book2 of documentation ( routine SET_CONC_RAIN_C2R2 )
+!!
+!!    AUTHOR
+!!    ------
+!!      J.-P. Pinty      * Laboratoire d'Aerologie*
+!!      P. Jabouille     * CNRM/GMME *
+!!      B. Vié           * CNRM/GMME *
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original    15/11/00
+!!                        2014 G.Delautier : remplace MODD_RAIN_C2R2_PARAM par MODD_RAIN_C2R2_KHKO_PARAM        *
+!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  B. Vié      03/03/2020: secure physical tests
+!  P. Wautelet 04/06/2020: correct array start for microphys. concentrations + add kmi dummy argument
+!                          (this subroutine is also called for other models)
+!-------------------------------------------------------------------------------
+!
+!*       0.    DECLARATIONS
+!              ------------
+!
+USE MODD_PARAM_LIMA,      ONLY : XRTMIN, XCTMIN, NMOD_CCN, NMOD_IFN, &
+                                 NMOM_C, NMOM_R, NMOM_I
+USE MODD_PARAM_LIMA_COLD, ONLY : XAI, XBI, XAS, XBS
+USE MODD_PARAM_LIMA_MIXED,ONLY : XAG, XBG, XAH, XBH
+USE MODD_NSV,             ONLY : NSV_LIMA_BEG_A, NSV_LIMA_NC_A, NSV_LIMA_NR_A, NSV_LIMA_CCN_ACTI_A, &
+                                 NSV_LIMA_NI_A, NSV_LIMA_NS_A, NSV_LIMA_NG_A, NSV_LIMA_NH_A, NSV_LIMA_IFN_NUCL_A
+USE MODD_CST,             ONLY : XPI, XRHOLW, XRHOLI
+USE MODD_CONF,            ONLY : NVERB
+!
+IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+integer,                   intent(in) :: kmi        ! Model number
+CHARACTER (LEN=4),         INTENT(IN) :: HGETCLOUD  ! Get indicator
+REAL, DIMENSION(:,:,:),    INTENT(IN) :: PRHODREF   ! Reference density
+!
+REAL, DIMENSION(:,:,:,:),  INTENT(INOUT) :: PRT     ! microphysical mixing ratios
+!
+REAL,  DIMENSION(:,:,:,NSV_LIMA_BEG_A(kmi):), INTENT(INOUT):: PSVT     ! microphys. concentrations
+!
+!
+!*       0.2   Declarations of local variables :
+!
+REAL       :: ZCONC
+!
+!-------------------------------------------------------------------------------
+!*       1.    RETRIEVE LOGICAL UNIT NUMBER
+!              ----------------------------
+!
+!
+!*       2.    INITIALIZATION
+!              --------------
+!
+IF (NMOM_C.GE.2) THEN
+!
+!  droplets
+!
+   ZCONC = 300.E6 ! droplet concentration set at 300 cm-3
+   WHERE ( PRT(:,:,:,2) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NC_A(kmi))<1.E-11)
+      PSVT(:,:,:,NSV_LIMA_NC_A(kmi)) = ZCONC
+   END WHERE
+   WHERE ( PRT(:,:,:,2) <= 1.E-11  .AND. PSVT(:,:,:,NSV_LIMA_NC_A(kmi))<1.E-11)
+      PRT(:,:,:,2)  = 0.0
+      PSVT(:,:,:,NSV_LIMA_NC_A(kmi)) = 0.0
+   END WHERE
+   
+   IF (NMOD_CCN .GE. 1) THEN
+      WHERE ( PRT(:,:,:,2) > 1.E-11  .AND. PSVT(:,:,:,NSV_LIMA_NC_A(kmi))<1.E-11)
+         PSVT(:,:,:,NSV_LIMA_CCN_ACTI_A(kmi)) = ZCONC
+      END WHERE
+      WHERE ( PRT(:,:,:,2) <= 1.E-11  .AND. PSVT(:,:,:,NSV_LIMA_NC_A(kmi))<1.E-11)
+         PSVT(:,:,:,NSV_LIMA_CCN_ACTI_A(kmi)) = 0.0
+      END WHERE
+   END IF
+   
+END IF
+!
+IF (NMOM_R.GE.2) THEN
+!
+!  drops
+!
+   ZCONC = (1.E7)**3/(XPI*XRHOLW) ! cf XCONCR_PARAM_INI in ini_rain_c2r2.f90
+   IF (HGETCLOUD == 'INI1') THEN ! init from REVE scheme
+      PSVT(:,:,:,NSV_LIMA_NR_A(kmi)) = 0.0
+   ELSE ! init from KESS, ICE3...
+      WHERE ( PRT(:,:,:,3) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NR_A(kmi))<1.E-11 )
+         PSVT(:,:,:,NSV_LIMA_NR_A(kmi)) = MAX( SQRT(SQRT(PRHODREF(:,:,:)*PRT(:,:,:,3) &
+              *ZCONC)),1. )
+      END WHERE
+      WHERE ( PRT(:,:,:,3) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NR_A(kmi))<1.E-11 )
+         PRT(:,:,:,3)  = 0.0
+         PSVT(:,:,:,NSV_LIMA_NR_A(kmi)) = 0.0
+      END WHERE
+   END IF
+END IF
+!
+IF (NMOM_I.GE.2) THEN
+!
+! ice crystals
+!
+   ZCONC = 100.E3 ! maximum ice concentration set at 100/L
+   WHERE ( PRT(:,:,:,4) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NI_A(kmi))<1.E-11 )
+!
+!      PSVT(:,:,:,NSV_LIMA_NI_A(kmi)) = MIN( PRHODREF(:,:,:) /                                     &
+!           ( XRHOLI * XAI*(10.E-06)**XBI * PRT(:,:,:,4) ), &
+!           ZCONC )
+! Correction
+      PSVT(:,:,:,NSV_LIMA_NI_A(kmi)) = MIN(PRT(:,:,:,4)/(0.82*(10.E-06)**2.5),ZCONC )
+   END WHERE
+   WHERE ( PRT(:,:,:,4) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NI_A(kmi))<1.E-11 )
+      PRT(:,:,:,4)  = 0.0
+      PSVT(:,:,:,NSV_LIMA_NI_A(kmi)) = 0.0
+   END WHERE
+
+   IF (NMOD_IFN .GE. 1) THEN
+      WHERE ( PRT(:,:,:,4) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NI_A(kmi))<1.E-11 )
+         PSVT(:,:,:,NSV_LIMA_IFN_NUCL_A(kmi)) = PSVT(:,:,:,NSV_LIMA_NI_A(kmi))
+      END WHERE
+      WHERE ( PRT(:,:,:,4) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NI_A(kmi))<1.E-11 )
+         PSVT(:,:,:,NSV_LIMA_IFN_NUCL_A(kmi)) = 0.0
+      END WHERE
+   END IF
+
+END IF
+!
+IF (NSV_LIMA_NS_A(KMI).GE.1) THEN
+!
+!  snow
+!
+   ZCONC = 1./ (XAS*0.001**XBS) ! 1mm particle size
+   WHERE ( PRT(:,:,:,5) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NS_A(kmi))<1.E-11 )
+      PSVT(:,:,:,NSV_LIMA_NS_A(KMI)) = PRT(:,:,:,5) * ZCONC
+   END WHERE
+   WHERE ( PRT(:,:,:,5) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NS_A(kmi))<1.E-11 )
+      PRT(:,:,:,5)  = 0.0
+      PSVT(:,:,:,NSV_LIMA_NS_A(KMI)) = 0.0
+   END WHERE
+END IF
+!
+IF (NSV_LIMA_NG_A(KMI).GE.1) THEN
+!
+!  graupel
+!
+   ZCONC = 1./ (XAG*0.001**XBG) ! 1mm particle size
+   WHERE ( PRT(:,:,:,6) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NG_A(kmi))<1.E-11 )
+      PSVT(:,:,:,NSV_LIMA_NG_A(KMI)) = PRT(:,:,:,6) * ZCONC
+   END WHERE
+   WHERE ( PRT(:,:,:,6) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NG_A(kmi))<1.E-11 )
+      PRT(:,:,:,6)  = 0.0
+      PSVT(:,:,:,NSV_LIMA_NG_A(KMI)) = 0.0
+   END WHERE
+END IF
+!
+IF (NSV_LIMA_NH_A(KMI).GE.1) THEN
+!
+!  hail
+!
+   ZCONC = 1./ (XAH*0.001**XBH) ! 1mm particle size
+   WHERE ( PRT(:,:,:,7) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NH_A(kmi))<1.E-11 )
+      PSVT(:,:,:,NSV_LIMA_NH_A(KMI)) = PRT(:,:,:,7) * ZCONC
+   END WHERE
+   WHERE ( PRT(:,:,:,7) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NH_A(kmi))<1.E-11 )
+      PRT(:,:,:,7)  = 0.0
+      PSVT(:,:,:,NSV_LIMA_NH_A(KMI)) = 0.0
+   END WHERE
+END IF
+!
+END SUBROUTINE SET_CONC_LIMA_LBC
+
+end module mode_set_conc_lima_lbc
diff --git a/src/mesonh/micro/set_conc_lima.f90 b/src/common/micro/set_conc_lima.f90
similarity index 89%
rename from src/mesonh/micro/set_conc_lima.f90
rename to src/common/micro/set_conc_lima.f90
index a92baca70e88e95aefd62dbd60464f9d9355570e..1a439bafcf36c03bb0f5afe28b8d639f4a823fe0 100644
--- a/src/mesonh/micro/set_conc_lima.f90
+++ b/src/common/micro/set_conc_lima.f90
@@ -81,8 +81,6 @@ USE MODD_NSV,             ONLY : NSV_LIMA_BEG_A, NSV_LIMA_NC_A, NSV_LIMA_NR_A, N
                                  NSV_LIMA_NI_A, NSV_LIMA_NS_A, NSV_LIMA_NG_A, NSV_LIMA_NH_A, NSV_LIMA_IFN_NUCL_A
 USE MODD_CST,             ONLY : XPI, XRHOLW, XRHOLI
 USE MODD_CONF,            ONLY : NVERB
-USE MODD_CONF_n,          ONLY : NRR
-USE MODD_LUNIT_n,         ONLY : TLUOUT
 !
 IMPLICIT NONE
 !
@@ -99,20 +97,17 @@ REAL,  DIMENSION(:,:,:,NSV_LIMA_BEG_A(kmi):), INTENT(INOUT):: PSVT     ! microph
 !
 !*       0.2   Declarations of local variables :
 !
-INTEGER    :: IRESP   ! Return code of FM routines
-INTEGER    :: ILUOUT  ! Logical unit number of output-listing
 REAL       :: ZCONC
 !
 !-------------------------------------------------------------------------------
 !*       1.    RETRIEVE LOGICAL UNIT NUMBER
 !              ----------------------------
 !
-ILUOUT = TLUOUT%NLU
 !
 !*       2.    INITIALIZATION
 !              --------------
 !
-IF (NRR.GE.2 .AND. NMOM_C.GE.2) THEN
+IF (NMOM_C.GE.2) THEN
 !
 !  droplets
 !
@@ -134,13 +129,9 @@ IF (NRR.GE.2 .AND. NMOM_C.GE.2) THEN
       END WHERE
    END IF
    
-!   IF( NVERB >= 5 ) THEN
-!      WRITE (UNIT=ILUOUT,FMT=*) "!INI_MODEL$n: The droplet concentration has "
-!      WRITE (UNIT=ILUOUT,FMT=*) "been roughly initialised"
-!   END IF
 END IF
 !
-IF (NRR.GE.3 .AND. NMOM_R.GE.2) THEN
+IF (NMOM_R.GE.2) THEN
 !
 !  drops
 !
@@ -156,14 +147,10 @@ IF (NRR.GE.3 .AND. NMOM_R.GE.2) THEN
          PRT(:,:,:,3)  = 0.0
          PSVT(:,:,:,NSV_LIMA_NR_A(kmi)) = 0.0
       END WHERE
-!      IF( NVERB >= 5 ) THEN
-!         WRITE (UNIT=ILUOUT,FMT=*) "!INI_MODEL$n: The raindrop concentration has "
-!         WRITE (UNIT=ILUOUT,FMT=*) "been roughly initialised"
-!      END IF
    END IF
 END IF
 !
-IF (NRR.GE.4 .AND. NMOM_I.GE.2) THEN
+IF (NMOM_I.GE.2) THEN
 !
 ! ice crystals
 !
@@ -190,11 +177,6 @@ IF (NRR.GE.4 .AND. NMOM_I.GE.2) THEN
       END WHERE
    END IF
 
-!   IF( NVERB >= 5 ) THEN
-!      WRITE (UNIT=ILUOUT,FMT=*) "!INI_MODEL$n: The cloud ice concentration has "
-!      WRITE (UNIT=ILUOUT,FMT=*) "been roughly initialised"
-!   END IF
-!
 END IF
 !
 IF (NSV_LIMA_NS_A(KMI).GE.1) THEN