diff --git a/gmkpack_ignored_files b/gmkpack_ignored_files
new file mode 100644
index 0000000000000000000000000000000000000000..0ab93b55c13479ac3bf56b430354acc3586bf3b6
--- /dev/null
+++ b/gmkpack_ignored_files
@@ -0,0 +1,48 @@
+phyex/micro/lima_bergeron.F90
+phyex/micro/lima_ccn_activation.F90
+phyex/micro/lima_ccn_hom_freezing.F90
+phyex/micro/lima_collisional_ice_breakup.F90
+phyex/micro/lima_compute_cloud_fractions.F90
+phyex/micro/lima_conversion_melting_snow.F90
+phyex/micro/lima_droplets_accretion.F90
+phyex/micro/lima_droplets_autoconversion.F90
+phyex/micro/lima_droplets_hom_freezing.F90
+phyex/micro/lima_droplets_riming_snow.F90
+phyex/micro/lima_droplets_self_collection.F90
+phyex/micro/lima_drops_break_up.F90
+phyex/micro/lima_drops_hom_freezing.F90
+phyex/micro/lima_drops_self_collection.F90
+phyex/micro/lima_drops_to_droplets_conv.F90
+phyex/micro/lima_functions.F90
+phyex/micro/lima_graupel.F90
+phyex/micro/lima_graupel_deposition.F90
+phyex/micro/lima_hail.F90
+phyex/micro/lima_hail_deposition.F90
+phyex/micro/lima_ice4_nucleation.F90
+phyex/micro/lima_ice_aggregation_snow.F90
+phyex/micro/lima_ice_deposition.F90
+phyex/micro/lima_ice_melting.F90
+phyex/micro/lima_init_ccn_activation_spectrum.F90
+phyex/micro/lima_inst_procs.F90
+phyex/micro/lima_meyers_nucleation.F90
+phyex/micro/lima_nucleation_procs.F90
+phyex/micro/lima_phillips_ifn_nucleation.F90
+phyex/micro/lima_phillips_integ.F90
+phyex/micro/lima_phillips_ref_spectrum.F90
+phyex/micro/lima_rain_accr_snow.F90
+phyex/micro/lima_rain_evaporation.F90
+phyex/micro/lima_rain_freezing.F90
+phyex/micro/lima_raindrop_shattering_freezing.F90
+phyex/micro/lima_read_xker_gweth.F90
+phyex/micro/lima_read_xker_raccs.F90
+phyex/micro/lima_read_xker_rdryg.F90
+phyex/micro/lima_read_xker_sdryg.F90
+phyex/micro/lima_read_xker_sweth.F90
+phyex/micro/lima_sedimentation.F90
+phyex/micro/lima_snow_deposition.F90
+phyex/micro/lima_snow_self_collection.F90
+phyex/micro/lima_tendencies.F90
+phyex/micro/nrcolss.f90
+phyex/micro/nscolrg.f90
+phyex/micro/nzcolx.f90
+phyex/micro/set_conc_lima.f90
diff --git a/src/arome/micro/lima_functions.F90 b/src/arome/micro/lima_functions.F90
deleted file mode 100644
index 00bd01a6adb7f0ce8d097d200abd4af2a805a0c9..0000000000000000000000000000000000000000
--- a/src/arome/micro/lima_functions.F90
+++ /dev/null
@@ -1,380 +0,0 @@
-!#################################
-        MODULE MODI_LIMA_FUNCTIONS
-!#################################
-!
-INTERFACE
-!
-FUNCTION COUNTJV(LTAB,I1,I2,I3) RESULT(IC)
-  LOGICAL, DIMENSION(:,:,:),   INTENT(IN)           :: LTAB 
-  INTEGER, DIMENSION(:),       INTENT(INOUT)        :: I1,I2,I3 
-  INTEGER                                           :: IC
-END FUNCTION COUNTJV
-!
-FUNCTION MOMG (PALPHA,PNU,PP) RESULT (PMOMG)
-  REAL,                        INTENT(IN)           :: PALPHA 
-  REAL,                        INTENT(IN)           :: PNU    
-  REAL,                        INTENT(IN)           :: PP     
-  REAL                                              :: PMOMG  
-END FUNCTION MOMG
-!
-FUNCTION RECT(PA,PB,PX,PX1,PX2)  RESULT(PRECT)
-  REAL,                        INTENT(IN)           :: PA
-  REAL,                        INTENT(IN)           :: PB
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX
-  REAL,                        INTENT(IN)           :: PX1
-  REAL,                        INTENT(IN)           :: PX2
-  REAL, DIMENSION(SIZE(PX,1))                       :: PRECT
-END FUNCTION RECT
-!
-FUNCTION DELTA(PA,PB,PX,PX1,PX2)  RESULT(PDELTA)
-  REAL,                        INTENT(IN)           :: PA
-  REAL,                        INTENT(IN)           :: PB
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX
-  REAL,                        INTENT(IN)           :: PX1
-  REAL,                        INTENT(IN)           :: PX2
-  REAL, DIMENSION(SIZE(PX,1))                       :: PDELTA
-END FUNCTION DELTA
-!
-FUNCTION DELTA_VEC(PA,PB,PX,PX1,PX2)  RESULT(PDELTA_VEC)
-  REAL,                        INTENT(IN)           :: PA
-  REAL,                        INTENT(IN)           :: PB
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX1
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX2
-  REAL, DIMENSION(SIZE(PX,1))                       :: PDELTA_VEC
-END FUNCTION DELTA_VEC
-!
-FUNCTION ARTH(FIRST,INCREMENT,N) RESULT(PARTH)
-  REAL,                        INTENT(IN)           :: FIRST,INCREMENT
-  INTEGER,                     INTENT(IN)           :: N
-  REAL, DIMENSION(N)                                :: PARTH
-END FUNCTION ARTH
-!
-FUNCTION gammln(xx) RESULT(pgammln)
-  REAL,                        INTENT(IN)           :: xx
-  REAL                                              :: pgammln
-END FUNCTION gammln
-!
-SUBROUTINE GAULAG(x,w,n,alf)
-  INTEGER,                     INTENT(IN)           :: n
-  REAL,                        INTENT(IN)           :: alf
-  REAL, DIMENSION(n),          INTENT(INOUT)        :: w, x
-END SUBROUTINE GAULAG
-!
-SUBROUTINE GAUHER(x,w,n)
-  INTEGER,                     INTENT(IN)           :: n
-  REAL, DIMENSION(n),          INTENT(INOUT)        :: w, x
-END SUBROUTINE GAUHER
-!
-END INTERFACE
-!
-END MODULE MODI_LIMA_FUNCTIONS
-!
-!------------------------------------------------------------------------------
-!
-!#########################################
-FUNCTION COUNTJV(LTAB,I1,I2,I3) RESULT(IC)
-!#########################################
-!
-  IMPLICIT NONE
-!
-  LOGICAL, DIMENSION(:,:,:),   INTENT(IN)           :: LTAB     ! Mask
-  INTEGER, DIMENSION(:),       INTENT(INOUT)        :: I1,I2,I3 ! Used to replace the COUNT and PACK
-  INTEGER :: JI,JJ,JK,IC
-!
-  IC = 0
-  DO JK = 1,SIZE(LTAB,3)
-     DO JJ = 1,SIZE(LTAB,2)
-        DO JI = 1,SIZE(LTAB,1)
-           IF( LTAB(JI,JJ,JK) ) THEN
-              IC = IC +1
-              I1(IC) = JI
-              I2(IC) = JJ
-              I3(IC) = JK
-           END IF
-        END DO
-     END DO
-  END DO
-!
-END FUNCTION COUNTJV
-!
-!------------------------------------------------------------------------------
-!
-!###########################################
-FUNCTION MOMG (PALPHA,PNU,PP) RESULT (PMOMG)
-!###########################################
-!
-! auxiliary routine used to compute the Pth moment order of the generalized
-! gamma law
-!
-  USE MODI_GAMMA
-!
-  IMPLICIT NONE
-!
-  REAL, INTENT(IN)     :: PALPHA ! first shape parameter of the dimensionnal distribution
-  REAL, INTENT(IN)     :: PNU    ! second shape parameter of the dimensionnal distribution
-  REAL, INTENT(IN)     :: PP     ! order of the moment
-  REAL     :: PMOMG  ! result: moment of order ZP
-!
-  PMOMG = GAMMA_X0D(PNU+PP/PALPHA)/GAMMA_X0D(PNU)
-!
-END FUNCTION MOMG
-!
-!------------------------------------------------------------------------------
-!
-!#############################################
-FUNCTION RECT(PA,PB,PX,PX1,PX2)  RESULT(PRECT)
-!#############################################
-!
-!     PRECT takes the value PA if PX1<=PX<PX2, and PB outside the [PX1;PX2[ interval
-!
-  IMPLICIT NONE
-!
-  REAL,                        INTENT(IN)           :: PA
-  REAL,                        INTENT(IN)           :: PB
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX
-  REAL,                        INTENT(IN)           :: PX1
-  REAL,                        INTENT(IN)           :: PX2
-  REAL, DIMENSION(SIZE(PX,1))                       :: PRECT
-!
-  PRECT(:) = PB
-  WHERE (PX(:).GE.PX1 .AND. PX(:).LT.PX2)
-     PRECT(:) = PA
-  END WHERE
-  RETURN
-!
-END FUNCTION RECT
-!
-!-------------------------------------------------------------------------------
-!
-!###############################################
-FUNCTION DELTA(PA,PB,PX,PX1,PX2)  RESULT(PDELTA)
-!###############################################
-!
-!     PDELTA takes the value PA if PX<PX1, and PB if PX>=PX2
-!     PDELTA is a cubic interpolation between PA and PB for PX between PX1 and PX2 
-!
-  IMPLICIT NONE
-!
-  REAL,                        INTENT(IN)           :: PA
-  REAL,                        INTENT(IN)           :: PB
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX
-  REAL,                        INTENT(IN)           :: PX1
-  REAL,                        INTENT(IN)           :: PX2
-  REAL, DIMENSION(SIZE(PX,1))                       :: PDELTA
-!
-!*       local variable
-!
-  REAL                                              :: ZA
-!
-  ZA = 6.0*(PA-PB)/(PX2-PX1)**3
-  WHERE     (PX(:).LT.PX1)
-     PDELTA(:) = PA
-  ELSEWHERE (PX(:).GE.PX2)
-     PDELTA(:) = PB
-  ELSEWHERE
-     PDELTA(:) =   PA + ZA*PX1**2*(PX1/6.0 - 0.5*PX2)              &
-          + ZA*PX1*PX2*                          (PX(:))    &
-          - (0.5*ZA*(PX1+PX2))*                  (PX(:)**2) & 
-          + (ZA/3.0)*                            (PX(:)**3)
-  END WHERE
-  RETURN
-!
-END FUNCTION DELTA
-!
-!-------------------------------------------------------------------------------
-!
-!#######################################################
-FUNCTION DELTA_VEC(PA,PB,PX,PX1,PX2)  RESULT(PDELTA_VEC)
-!#######################################################
-!
-!    Same as DELTA for vectorized PX1 and PX2 arguments
-!
-  IMPLICIT NONE
-!
-  REAL,                        INTENT(IN)           :: PA
-  REAL,                        INTENT(IN)           :: PB
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX1
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX2
-  REAL, DIMENSION(SIZE(PX,1))                       :: PDELTA_VEC
-!
-!*       local variable
-!
-  REAL, DIMENSION(SIZE(PX,1))                       :: ZA
-!
-  ZA(:) = 0.0
-  wHERE     (PX(:)<=PX1(:))
-     PDELTA_VEC(:) = PA
-  ELSEWHERE (PX(:)>=PX2(:))
-     PDELTA_VEC(:) = PB
-  ELSEWHERE
-     ZA(:)         = 6.0*(PA-PB)/(PX2(:)-PX1(:))**3
-     PDELTA_VEC(:) =   PA + ZA(:)*PX1(:)**2*(PX1(:)/6.0 - 0.5*PX2(:))           &
-          + ZA(:)*PX1(:)*PX2(:)*                          (PX(:))    &
-          - (0.5*ZA(:)*(PX1(:)+PX2(:)))*                  (PX(:)**2) & 
-          + (ZA(:)/3.0)*                                  (PX(:)**3)
-  END WHERE
-  RETURN
-!
-END FUNCTION DELTA_VEC
-!
-!-------------------------------------------------------------------------------
-!
-!#######################################################
-FUNCTION ARTH(FIRST,INCREMENT,N) RESULT(PARTH)
-!#######################################################
-  REAL,INTENT(IN) :: FIRST,INCREMENT
-  INTEGER,INTENT(IN) :: N
-  REAL,DIMENSION(N) :: PARTH
-  INTEGER :: K
-  
-  DO K=1,N
-     PARTH(K)=FIRST+INCREMENT*(K-1)
-  END DO
-END FUNCTION ARTH
-!
-!-------------------------------------------------------------------------------
-!
-!#######################################################
-FUNCTION gammln(xx) RESULT(pgammln)
-!#######################################################
-
-  USE MODI_LIMA_FUNCTIONS, ONLY: ARTH
-
-  IMPLICIT NONE
-  REAL, INTENT(IN) :: xx
-  REAL :: pgammln
-  REAL :: tmp,x
-  REAL :: stp = 2.5066282746310005
-  REAL, DIMENSION(6) :: coef = (/76.18009172947146,& 
-       -86.50532032941677,24.01409824083091,& 
-       -1.231739572450155,0.1208650973866179e-2,&
-       -0.5395239384953e-5/)
-  x=xx
-  tmp=x+5.5
-  tmp=(x+0.5)*log(tmp)-tmp
-  pgammln=tmp+log(stp*(1.000000000190015+&
-       sum(coef(:)/arth(x+1.,1.,size(coef))))/x)
-!
-END FUNCTION gammln
-!
-!-------------------------------------------------------------------------------
-!
-!###########################
-SUBROUTINE gaulag(x,w,n,alf)
-!###########################
-  INTEGER,                     INTENT(IN)           :: n
-  REAL,                        INTENT(IN)           :: alf
-  INTEGER MAXIT
-  REAL w(n),x(n)
-  DOUBLE PRECISION EPS
-  PARAMETER (EPS=3.D-14,MAXIT=10)
-  INTEGER i,its,j
-  REAL ai
-  DOUBLE PRECISION p1,p2,p3,pp,z,z1
-!
-  REAL SUMW
-!
-  do 13 i=1,n
-     if(i.eq.1)then
-        z=(1.+alf)*(3.+.92*alf)/(1.+2.4*n+1.8*alf)
-     else if(i.eq.2)then
-        z=z+(15.+6.25*alf)/(1.+.9*alf+2.5*n)
-     else
-        ai=i-2
-        z=z+((1.+2.55*ai)/(1.9*ai)+1.26*ai*alf/(1.+3.5*ai))* &
-             (z-x(i-2))/(1.+.3*alf)
-     endif
-     do 12 its=1,MAXIT
-        p1=1.d0
-        p2=0.d0
-        do 11 j=1,n
-           p3=p2
-           p2=p1
-           p1=((2*j-1+alf-z)*p2-(j-1+alf)*p3)/j
-11      continue
-        pp=(n*p1-(n+alf)*p2)/z
-        z1=z
-        z=z1-p1/pp
-        if(abs(z-z1).le.EPS)goto 1
-12   continue
-1    x(i)=z
-     w(i)=-exp(gammln(alf+n)-gammln(float(n)))/(pp*n*p2)
-13 continue
-!
-! NORMALISATION
-!
-  SUMW = 0.0
-  DO 14 I=1,N
-     SUMW = SUMW + W(I)
-14 CONTINUE
-  DO 15 I=1,N
-     W(I) = W(I)/SUMW
-15 CONTINUE
-!
-  return
-END SUBROUTINE gaulag
-!
-!------------------------------------------------------------------------------
-!
-!##########################################
-SUBROUTINE gauher(x,w,n)
-!##########################################
-  INTEGER, INTENT(IN) ::  n
-  INTEGER MAXIT
-  REAL w(n),x(n)
-  DOUBLE PRECISION EPS,PIM4
-  PARAMETER (EPS=3.D-14,PIM4=.7511255444649425D0,MAXIT=10)
-  INTEGER i,its,j,m
-  DOUBLE PRECISION p1,p2,p3,pp,z,z1
-!
-  REAL SUMW
-!
-  m=(n+1)/2
-  do 13 i=1,m
-     if(i.eq.1)then
-        z=sqrt(float(2*n+1))-1.85575*(2*n+1)**(-.16667)
-     else if(i.eq.2)then
-        z=z-1.14*n**.426/z
-     else if (i.eq.3)then
-        z=1.86*z-.86*x(1)
-     else if (i.eq.4)then
-        z=1.91*z-.91*x(2)
-     else
-        z=2.*z-x(i-2)
-     endif
-     do 12 its=1,MAXIT
-        p1=PIM4
-        p2=0.d0
-        do 11 j=1,n
-           p3=p2
-           p2=p1
-           p1=z*sqrt(2.d0/j)*p2-sqrt(dble(j-1)/dble(j))*p3
-11      continue
-        pp=sqrt(2.d0*n)*p2
-        z1=z
-        z=z1-p1/pp
-        if(abs(z-z1).le.EPS)goto 1
-12   continue
-1    x(i)=z
-     x(n+1-i)=-z
-     pp=pp/PIM4 ! NORMALIZATION
-     w(i)=2.0/(pp*pp)
-     w(n+1-i)=w(i)
-13 continue
-!
-! NORMALISATION
-!
-  SUMW = 0.0
-  DO 14 I=1,N
-     SUMW = SUMW + W(I)
-14 CONTINUE
-  DO 15 I=1,N
-     W(I) = W(I)/SUMW
-15 CONTINUE
-!
-  return
-END SUBROUTINE gauher
-!
-!------------------------------------------------------------------------------
diff --git a/src/arome/micro/lima_precip_scavenging.F90 b/src/arome/micro/lima_precip_scavenging.F90
deleted file mode 100644
index ad63b968348186447f7a3c7aaa39900ad8345810..0000000000000000000000000000000000000000
--- a/src/arome/micro/lima_precip_scavenging.F90
+++ /dev/null
@@ -1,848 +0,0 @@
-!      ##################################
-       MODULE MODI_LIMA_PRECIP_SCAVENGING
-!      ##################################
-!
-INTERFACE
-   SUBROUTINE LIMA_PRECIP_SCAVENGING (HCLOUD, KLUOUT, KTCOUNT, PTSTEP,        &
-                                      PRRT, PRHODREF, PRHODJ, PZZ,            & 
-                                      PPABST, PTHT, PSVT, PRSVS, PINPAP, &
-                            YDDDH, YDLDDH, YDMDDH )
-!
-USE DDH_MIX, ONLY  : TYP_DDH
-USE YOMLDDH, ONLY  : TLDDH
-USE YOMMDDH, ONLY  : TMDDH
-!
-CHARACTER(LEN=4),       INTENT(IN)    :: HCLOUD   ! cloud paramerization
-INTEGER,                INTENT(IN)    :: KLUOUT   ! unit for output listing
-INTEGER,                INTENT(IN)    :: KTCOUNT  ! iteration count
-REAL,                   INTENT(IN)    :: PTSTEP   ! Double timestep except 
-                                                  ! for the first time step
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRRT     ! Rain mixing ratio at t
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRHODREF ! Air Density [kg/m**3]
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRHODJ   ! Dry Density [kg]
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PZZ      ! Altitude
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PPABST   ! Absolute pressure at t
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PTHT     ! Theta at time t 
-!
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT   ! Particle Concentration [kg-1]
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS  ! Total Number Scavenging Rate
-!
-REAL, DIMENSION(:,:),   INTENT(INOUT) :: PINPAP
-!
-TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
-TYPE(TLDDH), INTENT(IN) :: YDLDDH
-TYPE(TMDDH), INTENT(IN) :: YDMDDH
-!
-END SUBROUTINE LIMA_PRECIP_SCAVENGING
-END INTERFACE
-END MODULE MODI_LIMA_PRECIP_SCAVENGING
-!
-!########################################################################
-   SUBROUTINE LIMA_PRECIP_SCAVENGING (HCLOUD, KLUOUT, KTCOUNT, PTSTEP,        &
-                                      PRRT, PRHODREF, PRHODJ, PZZ,            &
-                                      PPABST, PTHT, PSVT, PRSVS, PINPAP , &
-                            YDDDH, YDLDDH, YDMDDH)
-!########################################################################x
-!
-!!    PURPOSE
-!!    -------
-!!      The purpose of this routine is to compute the total number
-!!      below-cloud scavenging rate. 
-!!
-!!
-!!**  METHOD
-!!    ------
-!!      We assume a generalized gamma distribution law for the raindrop.
-!!      The aerosols particles distribution follows a log-normal law.
-!!      First, we have to compute the Collision Efficiency, which takes 
-!!      account of the three most important wet removal mechanism : 
-!!      Brownian diffusion, interception and inertial impaction. 
-!!      It is a function of several number (like Reynolds, Schmidt 
-!!      or Stokes number for instance). Consequently,
-!!      we need first to calculate these numbers. 
-!!
-!!      Then the scavenging coefficient is deduced from the integration 
-!!      of the droplet size distribution, the falling velocity of 
-!!      raindrop and aerosol, their diameter, and the collision 
-!!      (or collection) efficiency, over the spectrum of droplet
-!!      diameters.
-!!
-!!      The total scavenging rate of aerosol is computed from the 
-!!      integration, over all the spectrum of particles aerosols 
-!!      diameters, of the scavenging coefficient.
-!! 
-!!
-!!    EXTERNAL
-!!    --------
-!!      Subroutine SCAV_MASS_SEDIMENTATION
-!!
-!!      Function COLL_EFFIC    : computes the collision efficiency
-!!
-!!      Function CONTJV   |
-!!      Function GAUHER   |
-!!      Function GAULAG   |-> in lima_functions.f90
-!!      Function GAMMLN   |
-!!     
-!!
-!!   REFERENCES
-!!   ----------
-!!   Seinfeld and Pandis
-!!   Andronache
-!!   
-!!   AUTHOR
-!!   ------
-!!      J.-P. Pinty      * Laboratoire d'Aerologie*
-!!      S.    Berthet    * Laboratoire d'Aerologie*
-!!      B.    Vié        * Laboratoire d'Aerologie*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original             ??/??/13 
-!!
-!-------------------------------------------------------------------------------
-!
-!*                  0.DECLARATIONS          
-!                   --------------
-!
-USE MODD_NSV
-USE MODD_CST
-USE MODD_PARAMETERS
-USE MODI_GAMMA
-USE MODI_LIMA_FUNCTIONS
-!
-USE DDH_MIX, ONLY  : TYP_DDH
-USE YOMLDDH, ONLY  : TLDDH
-USE YOMMDDH, ONLY  : TMDDH
-!
-! Previous versions by S. Berthet were compatible with all schemes
-! Here : Compatibility with LIMA only
-USE MODD_PARAM_LIMA,      ONLY : NMOD_IFN, NSPECIE, XFRAC,                         &
-                                 XMDIAM_IFN, XSIGMA_IFN, XRHO_IFN,                 &
-                                 NMOD_CCN, XR_MEAN_CCN, XLOGSIG_CCN, XRHO_CCN,     &
-                                 XALPHAR, XNUR,                                    &
-                                 LAERO_MASS, NDIAMR, NDIAMP, XT0SCAV, XTREF, XNDO, &
-                                 XMUA0, XT_SUTH_A, XMFPA0, XVISCW, XRHO00,         &
-                                 XRTMIN, XCTMIN
-USE MODD_PARAM_LIMA_WARM, ONLY : XCR, XDR
-!
-USE MODD_BUDGET
-USE MODE_BUDGET, ONLY: BUDGET_DDH
-!
-IMPLICIT NONE
-!
-!*                 0.1 declarations of dummy arguments :
-!
-CHARACTER(LEN=4),       INTENT(IN)    :: HCLOUD   ! cloud paramerization
-INTEGER,                INTENT(IN)    :: KLUOUT   ! unit for output listing
-INTEGER,                INTENT(IN)    :: KTCOUNT  ! iteration count
-REAL,                   INTENT(IN)    :: PTSTEP   ! Double timestep except 
-                                                  ! for the first time step
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRRT     ! Rain mixing ratio at t
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRHODREF ! Air Density [kg/m**3]
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRHODJ   ! Dry Density [kg]
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PZZ      ! Altitude
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PPABST   ! Absolute pressure at t
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PTHT     ! Theta at time t 
-!
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT   ! Particle Concentration [/m**3]
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS  ! Total Number Scavenging Rate
-!
-REAL, DIMENSION(:,:),   INTENT(INOUT) :: PINPAP
-!
-TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
-TYPE(TLDDH), INTENT(IN) :: YDLDDH
-TYPE(TMDDH), INTENT(IN) :: YDMDDH
-!
-!*       0.2   Declarations of local variables :
-!
-INTEGER :: IIB           !  Define the domain where is 
-INTEGER :: IIE           !  the microphysical sources have to be computed
-INTEGER :: IJB           ! 
-INTEGER :: IJE           !
-INTEGER :: IKB           ! 
-INTEGER :: IKE           !
-!
-INTEGER :: JSV               ! CCN or IFN mode 
-INTEGER :: J1, J2, IJ, JMOD
-!
-LOGICAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) &
-                                 :: GRAIN,  &! Test where rain is present
-                                    GSCAV    ! Test where rain is present
-INTEGER , DIMENSION(SIZE(GSCAV)) :: I1,I2,I3 ! Used to replace the COUNT
-INTEGER                          :: JL       ! and PACK intrinsics
-INTEGER                          :: ISCAV
-!
-REAL                     :: ZDENS_RATIO, & !density ratio 
-                            ZNUM,        & !PNU-1.               
-                            ZSHAPE_FACTOR
-!
-REAL,    DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3))  :: ZW     ! work array
-REAL,    DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3))  :: PCRT   ! cloud droplet conc.
-!
-REAL, DIMENSION(:), ALLOCATABLE :: ZLAMBDAR,      &  !slope parameter of the 
-                                                     ! generalized Gamma 
-                                                     !distribution law for the 
-                                                     !raindrop
-                                   ZVISC_RATIO,   &  !viscosity ratio 
-                                   ZMFPA,         &  !Mean Free Path
-                                   ZRHODREF,      &  !Air Density [kg/m**3]
-                                   ZVISCA,        &  !Viscosity of Air [kg/(m*s)]
-                                   ZT,            &  !Absolute Temperature
-                                   ZPABST,        &
-                                   ZRRT,          &
-                                   ZCONCP,        &
-                                   ZCONCR,        &
-                                   ZTOT_SCAV_RATE,&
-                                   ZTOT_MASS_RATE,&
-                                   ZMEAN_SCAV_COEF
-!
-REAL, DIMENSION(:,:), ALLOCATABLE :: &
-                      ZVOLDR,        &  !Mean volumic Raindrop diameter [m]
-                      ZBC_SCAV_COEF, &
-                      ZCUNSLIP,      &  !CUnningham SLIP correction factor 
-                      ZST_STAR,      &  !critical Stokes number for impaction
-                      ZSC,           &  !aerosol particle Schmidt number
-                      ZRE,           &  !raindrop Reynolds number (for radius)
-                      ZFVELR,        &  !Falling VELocity of the Raindrop
-                      ZRELT,         &  !RELaxation Time of the particle [s]
-                      ZDIFF             !Particle Diffusivity
-!
-REAL, DIMENSION(NDIAMP) :: ZVOLDP,          & !Mean volumic diameter [m]
-                           ZABSCISSP,       & !Aerosol Abscisses
-                           ZWEIGHTP           !Aerosol Weights
-REAL, DIMENSION(NDIAMR) :: ZABSCISSR,       & !Raindrop Abscisses
-                           ZWEIGHTR           !Raindrop Weights
-!
-REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZCOL_EF,     &! Collision efficiency
-                                       ZSIZE_RATIO, &! Size Ratio
-                                       ZST           ! Stokes number
-!
-REAL, DIMENSION(SIZE(PRRT,1),SIZE(PRRT,2),SIZE(PRRT,3)) :: ZRRS          
-!
-REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) &
-                                    :: PMEAN_SCAV_COEF, & !Mean Scavenging 
-                                                          ! Coefficient
-                                       PTOT_SCAV_RATE,  & !Total Number 
-                                                          ! Scavenging Rate
-                                       PTOT_MASS_RATE     !Total Mass
-                                                          ! Scavenging Rate
-REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3),NDIAMP) &
-                                    ::PBC_SCAV_COEF  !Scavenging Coefficient
-REAL, DIMENSION(:), ALLOCATABLE :: ZKNUDSEN ! Knuudsen number
-!
-! Opt. BVIE
-REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3))        &
-                   :: ZT_3D, ZCONCR_3D, ZVISCA_3D, ZMFPA_3D,               &
-                      ZVISC_RATIO_3D, ZLAMBDAR_3D, FACTOR_3D
-REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3),NDIAMP) &
-                   :: ZVOLDR_3D, ZVOLDR_3D_INV, ZVOLDR_3D_POW,             &
-                      ZFVELR_3D, ZRE_3D, ZRE_3D_SQRT, ZST_STAR_3D
-REAL, DIMENSION(:), ALLOCATABLE   :: FACTOR 
-REAL, DIMENSION(:,:), ALLOCATABLE ::     &
-                      ZRE_SQRT,          &  ! SQRT of raindrop Reynolds number
-                      ZRE_INV,           &  ! INV of raindrop Reynolds number
-                      ZSC_INV,           &  ! INV of aerosol particle Schmidt number
-                      ZSC_SQRT,          &  ! SQRT of aerosol particle Schmidt number
-                      ZSC_3SQRT,         &  ! aerosol particle Schmidt number**(1./3.)
-                      ZVOLDR_POW,        &  ! Mean volumic Raindrop diameter [m] **(2+ZDR)
-                      ZVOLDR_INV            ! INV of Mean volumic Raindrop diameter [m]
-REAL               :: ZDENS_RATIO_SQRT 
-INTEGER :: SV_VAR, NM, JM
-REAL :: XMDIAMP 
-REAL :: XSIGMAP  
-REAL :: XRHOP   
-REAL :: XFRACP
-!
-!
-!
-!------------------------------------------------------------------------------
-!
-!
-!*       1.     PRELIMINARY COMPUTATIONS
-!   	        ------------------------
-!
-!
-IIB=1+JPHEXT
-IIE=SIZE(PRHODREF,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PRHODREF,2) - JPHEXT
-IKB=1+JPVEXT
-IKE=SIZE(PRHODREF,3) - JPVEXT
-!
-! PCRT
-PCRT(:,:,:)=PSVT(:,:,:,NSV_LIMA_NR)
-!
-! Rain mask 
-GRAIN(:,:,:) = .FALSE.
-GRAIN(IIB:IIE,IJB:IJE,IKB:IKE) = (PRRT(IIB:IIE,IJB:IJE,IKB:IKE)>XRTMIN(3) &
-                            .AND. PCRT(IIB:IIE,IJB:IJE,IKB:IKE)>XCTMIN(3) )
-!
-! Initialize the total mass scavenging rate if LAERO_MASS=T
-IF (LAERO_MASS) PTOT_MASS_RATE(:,:,:)  = 0.
-!
-! Quadrature method: compute absissae and weights
-CALL GAUHER(ZABSCISSP,ZWEIGHTP,NDIAMP)
-ZNUM = XNUR-1.0E0
-CALL GAULAG(ZABSCISSR,ZWEIGHTR,NDIAMR,ZNUM)
-!
-!
-!------------------------------------------------------------------------------
-!
-!
-!*       2.     NUMERICAL OPTIMIZATION
-!   	        ----------------------
-!
-!
-! Optimization : compute in advance parameters depending on rain particles and
-! environment conditions only, to avoid multiple identical computations in loops
-!
-!
-ZSHAPE_FACTOR = GAMMA_X0D(XNUR+3./XALPHAR)/GAMMA_X0D(XNUR) 
-!
-WHERE ( GRAIN(:,:,:) )
-   !
-   ZT_3D(:,:,:)      = PTHT(:,:,:) * ( PPABST(:,:,:)/XP00 )**(XRD/XCPD)
-   ZCONCR_3D(:,:,:)  = PCRT(:,:,:) * PRHODREF(:,:,:)                    ![/m3]
-   ! Sutherland law for viscosity of air
-   ZVISCA_3D(:,:,:)  = XMUA0*(ZT_3D(:,:,:)/XTREF)**(3/2)*(XTREF+XT_SUTH_A) &
-                                                        /(XT_SUTH_A+ZT_3D(:,:,:))
-   ! Air mean free path
-   ZMFPA_3D(:,:,:)   = XMFPA0*(XP00*ZT_3D(:,:,:))/(PPABST(:,:,:)*XT0SCAV)           
-   ! Viscosity ratio
-   ZVISC_RATIO_3D(:,:,:) = ZVISCA_3D(:,:,:)/XVISCW   !!!!! inversé par rapport à orig. !
-   ! Rain drops parameters
-   ZLAMBDAR_3D(:,:,:) = ( ((XPI/6.)*ZSHAPE_FACTOR*XRHOLW*ZCONCR_3D(:,:,:))  &
-                          /(PRHODREF(:,:,:)*PRRT(:,:,:)) )**(1./3.)         ![/m]
-   FACTOR_3D(:,:,:) = XPI*0.25*ZCONCR_3D(:,:,:)*XCR*(XRHO00/PRHODREF(:,:,:))**(0.4)
-   !
-END WHERE
-!
-DO J2=1,NDIAMR
-   WHERE ( GRAIN(:,:,:) )
-      ! exchange of variables: [m]
-      ZVOLDR_3D(:,:,:,J2) = ZABSCISSR(J2)**(1./XALPHAR)/ZLAMBDAR_3D(:,:,:)
-      ZVOLDR_3D_INV(:,:,:,J2) = 1./ZVOLDR_3D(:,:,:,J2)
-      ZVOLDR_3D_POW(:,:,:,J2) = ZVOLDR_3D(:,:,:,J2)**(2.+XDR)
-      ! Raindrop Falling VELocity [m/s]
-      ZFVELR_3D(:,:,:,J2) = XCR*(ZVOLDR_3D(:,:,:,J2)**XDR)*(XRHO00/PRHODREF(:,:,:))**(0.4)
-      ! Reynolds number
-      ZRE_3D(:,:,:,J2) = ZVOLDR_3D(:,:,:,J2)*ZFVELR_3D(:,:,:,J2)          &
-                                            *PRHODREF(:,:,:)/(2.0*ZVISCA_3D(:,:,:))   
-      ZRE_3D_SQRT(:,:,:,J2) = SQRT( ZRE_3D(:,:,:,J2) )   
-      ! Critical Stokes number
-      ZST_STAR_3D(:,:,:,J2) = (1.2+(LOG(1.+ZRE_3D(:,:,:,J2)))/12.)        &
-                                           /(1.+LOG(1.+ZRE_3D(:,:,:,J2)))
-   END WHERE
-END DO
-!
-!
-!------------------------------------------------------------------------------
-!
-!
-!*       3.     AEROSOL SCAVENGING
-!   	        ------------------
-!
-!
-! Iteration over the aerosol type and mode
-!
-DO JSV = 1, NMOD_CCN+NMOD_IFN
-!
-   IF (JSV .LE. NMOD_CCN) THEN
-      JMOD = JSV
-      SV_VAR = NSV_LIMA_CCN_FREE -1 + JMOD ! Variable number in PSVT
-      NM = 1                               ! Number of species (for IFN int. mixing)
-   ELSE
-      JMOD = JSV - NMOD_CCN
-      SV_VAR = NSV_LIMA_IFN_FREE -1 + JMOD
-      NM = NSPECIE
-   END IF
-!
-   PBC_SCAV_COEF(:,:,:,:) = 0. 
-   PMEAN_SCAV_COEF(:,:,:) = 0.
-   PTOT_SCAV_RATE(:,:,:)  = 0.
-!
-   GSCAV(:,:,:) = .FALSE.
-   GSCAV(IIB:IIE,IJB:IJE,IKB:IKE) =GRAIN(IIB:IIE,IJB:IJE,IKB:IKE) .AND.        &
-        (PSVT(IIB:IIE,IJB:IJE,IKB:IKE,SV_VAR)>1.0E-2)
-   ISCAV = COUNTJV(GSCAV(:,:,:),I1(:),I2(:),I3(:))
-!
-   IF( ISCAV>=1 ) THEN
-      ALLOCATE(ZVISC_RATIO(ISCAV))
-      ALLOCATE(ZRHODREF(ISCAV))
-      ALLOCATE(ZVISCA(ISCAV))
-      ALLOCATE(ZT(ISCAV))
-      ALLOCATE(ZRRT(ISCAV))
-      ALLOCATE(ZCONCR(ISCAV))
-      ALLOCATE(ZLAMBDAR(ISCAV))  
-      ALLOCATE(ZCONCP(ISCAV))
-      ALLOCATE(ZMFPA(ISCAV))
-      ALLOCATE(ZTOT_SCAV_RATE(ISCAV))
-      ALLOCATE(ZTOT_MASS_RATE(ISCAV))
-      ALLOCATE(ZMEAN_SCAV_COEF(ISCAV))
-      ALLOCATE(ZPABST(ISCAV))
-      ALLOCATE(ZKNUDSEN(ISCAV))
-      ALLOCATE(FACTOR(ISCAV))
-!
-      ALLOCATE(ZCUNSLIP(ISCAV,NDIAMP))
-      ALLOCATE(ZBC_SCAV_COEF(ISCAV,NDIAMP))
-      ALLOCATE(ZSC(ISCAV,NDIAMP))
-      ALLOCATE(ZSC_INV(ISCAV,NDIAMP))
-      ALLOCATE(ZSC_SQRT(ISCAV,NDIAMP))
-      ALLOCATE(ZSC_3SQRT(ISCAV,NDIAMP))
-      ALLOCATE(ZRELT(ISCAV,NDIAMP))
-      ALLOCATE(ZDIFF(ISCAV,NDIAMP))
-      ALLOCATE(ZVOLDR(ISCAV,NDIAMR))
-      ALLOCATE(ZVOLDR_POW(ISCAV,NDIAMR))
-      ALLOCATE(ZVOLDR_INV(ISCAV,NDIAMR))
-      ALLOCATE(ZRE(ISCAV,NDIAMR))
-      ALLOCATE(ZRE_INV(ISCAV,NDIAMR))
-      ALLOCATE(ZRE_SQRT(ISCAV,NDIAMR))
-      ALLOCATE(ZST_STAR(ISCAV,NDIAMR))
-      ALLOCATE(ZFVELR(ISCAV,NDIAMR)) 
-      ALLOCATE(ZST(ISCAV,NDIAMP,NDIAMR))
-      ALLOCATE(ZCOL_EF(ISCAV,NDIAMP,NDIAMR))
-      ALLOCATE(ZSIZE_RATIO(ISCAV,NDIAMP,NDIAMR))
-!
-      ZMEAN_SCAV_COEF(:)=0.
-      ZTOT_SCAV_RATE(:) =0.
-      ZTOT_MASS_RATE(:) =0.
-      DO JL=1,ISCAV
-         ZRHODREF(JL) =  PRHODREF(I1(JL),I2(JL),I3(JL))
-         ZT(JL)       =     ZT_3D(I1(JL),I2(JL),I3(JL))
-         ZRRT(JL)     =      PRRT(I1(JL),I2(JL),I3(JL))
-         ZPABST(JL)   =    PPABST(I1(JL),I2(JL),I3(JL))
-         ZCONCP(JL)   =      PSVT(I1(JL),I2(JL),I3(JL),SV_VAR)*ZRHODREF(JL)![/m3]
-         ZCONCR(JL)   = ZCONCR_3D(I1(JL),I2(JL),I3(JL))                       ![/m3]
-         ZVISCA(JL)   = ZVISCA_3D(I1(JL),I2(JL),I3(JL))
-         ZMFPA(JL)    =  ZMFPA_3D(I1(JL),I2(JL),I3(JL))
-         ZVISC_RATIO(JL) = ZVISC_RATIO_3D(I1(JL),I2(JL),I3(JL))
-         ZLAMBDAR(JL) = ZLAMBDAR_3D(I1(JL),I2(JL),I3(JL))
-         FACTOR(JL)   = FACTOR_3D(I1(JL),I2(JL),I3(JL))
-         ZVOLDR(JL,:) = ZVOLDR_3D(I1(JL),I2(JL),I3(JL),:)
-         ZVOLDR_POW(JL,:) = ZVOLDR_3D_POW(I1(JL),I2(JL),I3(JL),:)
-         ZVOLDR_INV(JL,:) = ZVOLDR_3D_INV(I1(JL),I2(JL),I3(JL),:)
-         ZFVELR(JL,:) = ZFVELR_3D(I1(JL),I2(JL),I3(JL),:)
-         ZRE(JL,:)    = ZRE_3D(I1(JL),I2(JL),I3(JL),:)
-         ZRE_SQRT(JL,:) = ZRE_3D_SQRT(I1(JL),I2(JL),I3(JL),:)
-         ZST_STAR(JL,:) = ZST_STAR_3D(I1(JL),I2(JL),I3(JL),:)
-      ENDDO
-      ZRE_INV(:,:) = 1./ZRE(:,:)
-
-      IF (ANY(ZCONCR .eq. 0.)) print *, 'valeur nulle dans ZLAMBDAR !' 
-      IF (ANY(ZLAMBDAR .eq. 0.)) print *, 'valeur nulle dans ZLAMBDAR !' 
-!
-!------------------------------------------------------------------------------------
-!
-! Loop over the different species (for IFN int. mixing)
-!
-      DO JM = 1, NM  ! species (DM1,DM2,BC,O) for IFN
-         IF ( JSV .LE. NMOD_CCN ) THEN          ! CCN case
-            XRHOP   = XRHO_CCN(JMOD)
-            XMDIAMP = 2*XR_MEAN_CCN(JMOD)
-            XSIGMAP = EXP(XLOGSIG_CCN(JMOD))
-            XFRACP  = 1.0
-         ELSE                                   ! IFN case
-            XRHOP   = XRHO_IFN(JM)
-            XMDIAMP = XMDIAM_IFN(JM)
-            XSIGMAP = XSIGMA_IFN(JM)
-            XFRACP  = XFRAC(JM,JMOD)
-         END IF
-      !-----------------------------------------------------------------------------
-      ! Loop over the aerosols particles diameters (log normal distribution law) :
-      ! 
-         DO J1=1,NDIAMP                        
-            ! exchange of variables: [m]
-            ZVOLDP(J1) = XMDIAMP * EXP(ZABSCISSP(J1)*SQRT(2.)*LOG(XSIGMAP))
-            ! Cunningham slip correction factor (1+alpha*Knudsen) 
-            ZKNUDSEN(:) = MIN( 20.,ZVOLDP(J1)/ZMFPA(:) )
-            ZCUNSLIP(:,J1) = 1.0+2.0/ZKNUDSEN(:)*(1.257+0.4*EXP(-0.55*ZKNUDSEN(:)))
-            ! Diffusion coefficient
-            ZDIFF(:,J1) = XBOLTZ*ZT(:)*ZCUNSLIP(:,J1)/(3.*XPI*ZVISCA(:)*ZVOLDP(J1))
-            ! Schmidt number
-            ZSC(:,J1)       = ZVISCA(:)/(ZRHODREF(:)*ZDIFF(:,J1))  
-            ZSC_INV(:,J1)   = 1./ZSC(:,J1)
-            ZSC_SQRT(:,J1)  = SQRT( ZSC(:,J1) ) 
-            ZSC_3SQRT(:,J1) = ZSC(:,J1)**(1./3.)  
-            ! Characteristic Time Required for reaching terminal velocity 
-            ZRELT(:,J1) = (ZVOLDP(J1)**2)*ZCUNSLIP(:,J1)*XRHOP/(18.*ZVISCA(:))
-            ! Density number
-            ZDENS_RATIO = XRHOP/XRHOLW
-            ZDENS_RATIO_SQRT = SQRT(ZDENS_RATIO)
-            ! Initialisation
-            ZBC_SCAV_COEF(:,J1)=0.
-         !-------------------------------------------------------------------------
-         ! Loop over the drops diameters (generalized Gamma distribution) :
-         !
-            DO J2=1,NDIAMR
-               ! Stokes number
-               ZST(:,J1,J2) = 2.*ZRELT(:,J1)*(ZFVELR(:,J2)-ZRELT(1,J1)*XG)          &
-                                            *ZVOLDR_INV(:,J2)
-               ! Size Ratio
-               ZSIZE_RATIO(:,J1,J2) = ZVOLDP(J1)*ZVOLDR_INV(:,J2)
-               ! Collision Efficiency
-               ZCOL_EF(:,J1,J2) = COLL_EFFI(ZRE, ZRE_INV, ZRE_SQRT, ZSC, ZSC_INV,   &
-                                       ZSC_SQRT, ZSC_3SQRT, ZST, ZST_STAR,          &
-                                       ZSIZE_RATIO, ZVISC_RATIO, ZDENS_RATIO_SQRT) 
-               ! Below-Cloud Scavenging Coefficient for a fixed ZVOLDP: [/s]
-               ZBC_SCAV_COEF(:,J1) = ZBC_SCAV_COEF(:,J1) +                          &
-                                     ZCOL_EF(:,J1,J2) * ZWEIGHTR(J2) * FACTOR(:) * ZVOLDR_POW(:,J2)
-            END DO 
-         ! End of the loop over the drops diameters
-         !--------------------------------------------------------------------------
-
-            ! Total NUMBER Scavenging Rate of aerosol [m**-3.s**-1]
-            ZTOT_SCAV_RATE(:) = ZTOT_SCAV_RATE(:) -                                 &
-                                ZWEIGHTP(J1)*XFRACP*ZCONCP(:)*ZBC_SCAV_COEF(:,J1)
-            ! Total MASS Scavenging Rate of aerosol [kg.m**-3.s**-1]
-            ZTOT_MASS_RATE(:) = ZTOT_MASS_RATE(:) +                                 &
-                                ZWEIGHTP(J1)*XFRACP*ZCONCP(:)*ZBC_SCAV_COEF(:,J1)   &
-                                *XPI/6.*XRHOP*(ZVOLDP(J1)**3)  
-         END DO
-      ! End of the loop over the drops diameters
-      !--------------------------------------------------------------------------
-
-         ! Total NUMBER Scavenging Rate of aerosol [m**-3.s**-1]
-         PTOT_SCAV_RATE(:,:,:)=UNPACK(ZTOT_SCAV_RATE(:),MASK=GSCAV(:,:,:),FIELD=0.0)
-         ! Free particles (CCN or IFN) [/s]:
-         PRSVS(:,:,:,SV_VAR) = max(PRSVS(:,:,:,SV_VAR)+PTOT_SCAV_RATE(:,:,:)  &
-                                         * PRHODJ(:,:,:)/PRHODREF(:,:,:) , 0.0 )
-         ! Total MASS Scavenging Rate of aerosol which REACH THE FLOOR because of 
-         ! rain sedimentation [kg.m**-3.s**-1]
-         IF (LAERO_MASS)THEN
-            PTOT_MASS_RATE(:,:,:) = PTOT_MASS_RATE(:,:,:) +                         &
-                 UNPACK(ZTOT_MASS_RATE(:), MASK=GSCAV(:,:,:), FIELD=0.0)
-            CALL SCAV_MASS_SEDIMENTATION( HCLOUD, PTSTEP, KTCOUNT, PZZ, PRHODJ,     &
-                                      PRHODREF, PRRT, PSVT(:,:,:,NSV_LIMA_SCAVMASS),&
-                                      PRSVS(:,:,:,NSV_LIMA_SCAVMASS), PINPAP        )
-            PRSVS(:,:,:,NSV_LIMA_SCAVMASS)=PRSVS(:,:,:,NSV_LIMA_SCAVMASS) +         &
-                             PTOT_MASS_RATE(:,:,:)*PRHODJ(:,:,:)/PRHODREF(:,:,:)
-         END IF
-      ENDDO
-! End of the loop over the aerosol species
-!--------------------------------------------------------------------------
-!
-!
-!
-      DEALLOCATE(FACTOR)
-      DEALLOCATE(ZSC_INV)
-      DEALLOCATE(ZSC_SQRT)
-      DEALLOCATE(ZSC_3SQRT)
-      DEALLOCATE(ZRE_INV)
-      DEALLOCATE(ZRE_SQRT)
-      DEALLOCATE(ZVOLDR_POW)
-      DEALLOCATE(ZVOLDR_INV)
-!
-      DEALLOCATE(ZFVELR)
-      DEALLOCATE(ZRE)
-      DEALLOCATE(ZST_STAR)
-      DEALLOCATE(ZST)
-      DEALLOCATE(ZSIZE_RATIO)
-      DEALLOCATE(ZCOL_EF)
-      DEALLOCATE(ZVOLDR)
-      DEALLOCATE(ZDIFF)
-      DEALLOCATE(ZRELT)
-      DEALLOCATE(ZSC)
-      DEALLOCATE(ZCUNSLIP)
-      DEALLOCATE(ZBC_SCAV_COEF)
-!
-      DEALLOCATE(ZTOT_SCAV_RATE)
-      DEALLOCATE(ZTOT_MASS_RATE)
-      DEALLOCATE(ZMEAN_SCAV_COEF)
-!
-      DEALLOCATE(ZRRT)
-      DEALLOCATE(ZCONCR)
-      DEALLOCATE(ZLAMBDAR)
-      DEALLOCATE(ZCONCP)
-      DEALLOCATE(ZVISC_RATIO)
-      DEALLOCATE(ZRHODREF)
-      DEALLOCATE(ZVISCA)
-      DEALLOCATE(ZPABST)
-      DEALLOCATE(ZKNUDSEN)
-      DEALLOCATE(ZT)
-      DEALLOCATE(ZMFPA)
-   ENDIF
-ENDDO
-!
-IF (LBUDGET_SV) THEN
-   IF (NMOD_CCN.GE.1) THEN
-      DO JL=1, NMOD_CCN
-         CALL BUDGET_DDH ( PRSVS(:,:,:,NSV_LIMA_CCN_FREE+JL-1), &
-              12+NSV_LIMA_CCN_FREE+JL-1,'SCAV_BU_RSV',YDDDH, YDLDDH, YDMDDH) 
-      END DO
-   END IF
-   IF (NMOD_IFN.GE.1) THEN
-      DO JL=1, NMOD_IFN
-         CALL BUDGET_DDH ( PRSVS(:,:,:,NSV_LIMA_IFN_FREE+JL-1), &
-              12+NSV_LIMA_IFN_FREE+JL-1,'SCAV_BU_RSV',YDDDH, YDLDDH, YDMDDH) 
-      END DO
-   END IF
-END IF
-!
-!------------------------------------------------------------------------------
-!
-!
-!*       3.     SUBROUTINE AND FUNCTION
-!   	        -----------------------
-!
-!
-CONTAINS
-!
-!------------------------------------------------------------------------------
-!     ##########################################################################
-      SUBROUTINE SCAV_MASS_SEDIMENTATION( HCLOUD, PTSTEP, KTCOUNT, PZZ, PRHODJ,&
-                                PRHODREF, PRAIN, PSVT_MASS, PRSVS_MASS, PINPAP )
-!     ##########################################################################
-!
-!!
-!!    PURPOSE
-!!    -------
-!!      The purpose of this routine is to compute the total mass of aerosol 
-!!    scavenged by precipitations
-!!
-!!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!      None
-!!     
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!      Module MODD_PARAMETERS
-!!          JPHEXT       : Horizontal external points number
-!!          JPVEXT       : Vertical external points number
-!!      Module MODD_CONF :
-!!          CCONF configuration of the model for the first time step
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book1 of the documentation ( routine CH_AQUEOUS_SEDIMENTATION )
-!!
-!!    AUTHOR
-!!    ------
-!!      J.-P. Pinty      * Laboratoire d'Aerologie*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    22/07/07
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!              ------------
-!
-USE MODD_PARAMETERS
-USE MODD_CONF
-!
-USE MODD_PARAM_LIMA,      ONLY : XCEXVT, XRTMIN
-USE MODD_PARAM_LIMA_WARM, ONLY : XBR, XDR, XFSEDRR
-!
-IMPLICIT NONE
-!
-!*       0.1   Declarations of dummy arguments :
-!
-!
-CHARACTER (LEN=4),        INTENT(IN)    :: HCLOUD  ! Cloud parameterization
-REAL,                     INTENT(IN)    :: PTSTEP  ! Time step  
-INTEGER,                  INTENT(IN)    :: KTCOUNT ! Current time step number
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ     ! Height (z)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ  ! Dry Density [kg]
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF! Reference density
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRAIN   ! Rain water m.r. source
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PSVT_MASS  ! Precip. aerosols at t
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRSVS_MASS ! Precip. aerosols source
-!
-REAL, DIMENSION(:,:),     INTENT(INOUT) :: PINPAP
-!
-!*       0.2   Declarations of local variables :
-!
-INTEGER :: JJ, JK, JN, JRR                ! Loop indexes 
-INTEGER :: IIB, IIE, IJB, IJE, IKB, IKE   ! Physical domain
-!
-REAL    :: ZTSPLITR      ! Small time step for rain sedimentation
-REAL    :: ZTSTEP        ! Large time step for rain sedimentation
-!
-!
-LOGICAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)) &
-                                :: GSEDIM   ! where to compute the SED processes
-INTEGER :: ISEDIM 
-INTEGER , DIMENSION(SIZE(GSEDIM)) :: I1,I2,I3 ! Used to replace the COUNT
-INTEGER                           :: JL       ! and PACK intrinsics
-!
-!
-REAL,    DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3))   &
-                                :: ZW,    & ! work array
-                                   ZWSED, & ! sedimentation fluxes
-                                   ZZS      ! Rain water m.r. source
-!
-REAL, DIMENSION(:), ALLOCATABLE :: ZRRS,     & ! Rain water m.r. source
-                                   ZRHODREF, & ! RHO Dry REFerence
-                                   ZZW         ! Work array
-!
-REAL, DIMENSION(3)              :: ZRTMIN
-!
-!
-REAL                            :: ZVTRMAX, ZDZMIN, ZT
-REAL,    SAVE                   :: ZEXSEDR
-LOGICAL, SAVE                   :: GSFIRSTCALL = .TRUE.
-INTEGER, SAVE                   :: ISPLITR
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.     COMPUTE THE LOOP BOUNDS
-!   	        -----------------------
-!
-IIB=1+JPHEXT
-IIE=SIZE(PZZ,1) - JPHEXT
-IJB=1+JPHEXT
-IJE=SIZE(PZZ,2) - JPHEXT
-IKB=1+JPVEXT
-IKE=SIZE(PZZ,3) - JPVEXT
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.     COMPUTE THE SEDIMENTATION (RS) SOURCE
-!	        -------------------------------------
-!
-!*       2.1    splitting factor for high Courant number C=v_fall*(del_Z/del_T)
-!  
-firstcall : IF (GSFIRSTCALL) THEN
-   GSFIRSTCALL = .FALSE.
-   ZVTRMAX = 10.                          
-   ZDZMIN = MINVAL(PZZ(IIB:IIE,IJB:IJE,IKB+1:IKE+1)-PZZ(IIB:IIE,IJB:IJE,IKB:IKE))
-   ISPLITR = 1
-   SPLIT : DO
-      ZT = 2.* PTSTEP / FLOAT(ISPLITR)
-      IF ( ZT * ZVTRMAX / ZDZMIN .LT. 1.) EXIT SPLIT
-      ISPLITR = ISPLITR + 1
-   END DO SPLIT
-!
-   ZEXSEDR = (XBR+XDR+1.0)/(XBR+1.0) 
-!
-END IF firstcall
-!
-!*       2.2    time splitting loop initialization        
-!
-IF( (KTCOUNT==1) .AND. (CCONF=='START') ) THEN
-  ZTSPLITR = PTSTEP / FLOAT(ISPLITR)       ! Small time step
-  ZTSTEP   = PTSTEP                        ! Large time step
-  ELSE
-  ZTSPLITR= 2. * PTSTEP / FLOAT(ISPLITR)
-  ZTSTEP  = 2. * PTSTEP
-END IF
-!
-!*       2.3    compute the fluxes
-! 
-!  optimization by looking for locations where
-!  the precipitating fields are larger than a minimal value only !!!
-!
-ZRTMIN(:) = XRTMIN(:) / ZTSTEP
-ZZS(:,:,:) = PRAIN(:,:,:)
-DO JN = 1 , ISPLITR
-   GSEDIM(:,:,:) = .FALSE.
-   GSEDIM(IIB:IIE,IJB:IJE,IKB:IKE) = ZZS(IIB:IIE,IJB:IJE,IKB:IKE) > ZRTMIN(3)
-! 
-   ISEDIM = COUNTJV( GSEDIM(:,:,:),I1(:),I2(:),I3(:))
-   IF( ISEDIM >= 1 ) THEN
-      IF( JN==1 ) THEN
-         ZZS(:,:,:) = ZZS(:,:,:) * ZTSTEP
-         DO JK = IKB , IKE-1
-            ZW(:,:,JK) =ZTSPLITR*2./(PRHODREF(:,:,JK)*(PZZ(:,:,JK+2)-PZZ(:,:,JK)))
-         END DO
-         ZW(:,:,IKE)  =ZTSPLITR/(PRHODREF(:,:,IKE)*(PZZ(:,:,IKE+1)-PZZ(:,:,IKE)))
-      END IF
-      ALLOCATE(ZRRS(ISEDIM)) 
-      ALLOCATE(ZRHODREF(ISEDIM))
-      DO JL=1,ISEDIM
-         ZRRS(JL) = ZZS(I1(JL),I2(JL),I3(JL))
-         ZRHODREF(JL) =  PRHODREF(I1(JL),I2(JL),I3(JL))
-      ENDDO
-      ALLOCATE(ZZW(ISEDIM)) ; ZZW(:) = 0.0
-!
-!*       2.2.1   for rain
-!
-      ZZW(:) = XFSEDRR * ZRRS(:)**(ZEXSEDR) * ZRHODREF(:)**(ZEXSEDR-XCEXVT)
-      ZWSED(:,:,:) = UNPACK( ZZW(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
-      DO JK = IKB , IKE
-         ZZS(:,:,JK) = ZZS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+1)-ZWSED(:,:,JK))
-      END DO
-      IF( JN==1 ) THEN
-         PINPAP(:,:) = ZWSED(:,:,IKB)*                                            &
-                             ( PSVT_MASS(:,:,IKB)/MAX(ZRTMIN(3),PRRT(:,:,IKB)) )
-      END IF
-      DEALLOCATE(ZRHODREF)
-      DEALLOCATE(ZRRS)
-      DEALLOCATE(ZZW)
-      IF( JN==ISPLITR ) THEN
-         GSEDIM(:,:,:) = .FALSE.
-         GSEDIM(IIB:IIE,IJB:IJE,IKB:IKE) = ZZS(IIB:IIE,IJB:IJE,IKB:IKE) > ZRTMIN(3)
-         ZWSED(:,:,:) = 0.0
-         WHERE( GSEDIM(:,:,:) ) 
-            ZWSED(:,:,:) = 1.0/ZTSTEP - PRAIN(:,:,:)/ZZS(:,:,:)
-         END WHERE
-      END IF
-   END IF
-END DO
-!
-! Apply the rain sedimentation rate to the WR_xxx aqueous species
-!
-PRSVS_MASS(:,:,:) = PRSVS_MASS(:,:,:) + ZWSED(:,:,:)*PSVT_MASS(:,:,:)
-!
-END SUBROUTINE SCAV_MASS_SEDIMENTATION
-!
-!------------------------------------------------------------------------------
-!
-!###################################################################
-  FUNCTION COLL_EFFI (PRE, PRE_INV, PRE_SQRT, PSC, PSC_INV, PSC_SQRT, &
-                      PSC_3SQRT, PST, PST_STAR, PSIZE_RATIO,          &
-                      PVISC_RATIO, PDENS_RATIO_SQRT) RESULT(PCOL_EF)
-!###################################################################
-!
-!Compute the Raindrop-Aerosol Collision Efficiency
-!
-!*             0. DECLARATIONS  
-!              ---------------
-!
-  IMPLICIT NONE
-!
-  INTEGER :: I
-!
-  REAL, DIMENSION(:,:), INTENT(IN)    :: PRE         
-  REAL, DIMENSION(:,:), INTENT(IN)    :: PRE_INV         
-  REAL, DIMENSION(:,:), INTENT(IN)    :: PRE_SQRT         
-  REAL, DIMENSION(:,:), INTENT(IN)    :: PSC     
-  REAL, DIMENSION(:,:), INTENT(IN)    :: PSC_INV    
-  REAL, DIMENSION(:,:), INTENT(IN)    :: PSC_SQRT     
-  REAL, DIMENSION(:,:), INTENT(IN)    :: PSC_3SQRT     
-  REAL, DIMENSION(:,:), INTENT(IN)    :: PST_STAR   
-!
-  REAL, DIMENSION(:,:,:), INTENT(IN)  :: PST         
-  REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSIZE_RATIO 
-!
-  REAL, DIMENSION(:), INTENT(IN)    :: PVISC_RATIO 
-  REAL,               INTENT(IN)    :: PDENS_RATIO_SQRT 
-!
-  REAL, DIMENSION(SIZE(ZRE,1))      :: PCOL_EF   !result : collision efficiency
-!
-!-------------------------------------------------------------------------------
-!
-  PCOL_EF(:) = (4.*PSC_INV(:,J1)*PRE_INV(:,J2)*(1.+0.4*PRE_SQRT(:,J2)              &
-                  *PSC_3SQRT(:,J1)+0.16*PRE_SQRT(:,J2)*PSC_SQRT(:,J1)))      &
-              +(4.*PSIZE_RATIO(:,J1,J2)*(PVISC_RATIO(:)                    & 
-              +(1.+2.*PRE_SQRT(:,J2))*PSIZE_RATIO(:,J1,J2)))  
-  DO I=1,ISCAV
-    IF (PST(I,J1,J2)>PST_STAR(I,J2)) THEN            
-            PCOL_EF(I) = PCOL_EF(I)                                           &
-                    +(PDENS_RATIO_SQRT*((PST(I,J1,J2)-PST_STAR(I,J2))        &
-                    /(PST(I,J1,J2)-PST_STAR(I,J2)+2./3.))**(3./2.))
-    ENDIF
-  ENDDO
-  END FUNCTION COLL_EFFI
-!
-!------------------------------------------------------------------------------
-!
-END SUBROUTINE LIMA_PRECIP_SCAVENGING
diff --git a/src/arome/micro/modd_lima_precip_scavengingn.F90 b/src/arome/micro/modd_lima_precip_scavengingn.F90
deleted file mode 100644
index a0866da9d6041ab3a6dedaef08223e9196d63d7a..0000000000000000000000000000000000000000
--- a/src/arome/micro/modd_lima_precip_scavengingn.F90
+++ /dev/null
@@ -1,59 +0,0 @@
-!     ####################################
-      MODULE MODD_LIMA_PRECIP_SCAVENGING_n
-!     ####################################
-!
-!!****  *MODD_PRECIP_SCAVENGING$n* - declaration of scavenged aerosols 
-!!                                   precipitating fields
-!!
-!!    PURPOSE
-!!    -------
-!       Stores the INstantaneous and ACcumulated PRecipitating fields of 
-!!      scavenged aerosol by rain
-!!
-!!    AUTHOR
-!!    ------
-!!      J.-P. Pinty      * Laboratoire d'Aerologie*
-!!      S.    Berthet    * Laboratoire d'Aerologie*
-!!      B.    Vié        * Laboratoire d'Aerologie*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original             ??/??/13 
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-USE MODD_PARAMETERS, ONLY: JPMODELMAX
-!
-IMPLICIT NONE
-!
-TYPE LIMA_PRECIP_SCAVENGING_t
-   REAL, DIMENSION(:,:), POINTER :: XINPAP=>NULL(), XACPAP=>NULL()
-                                         ! Instant and cumul of ground
-                                         ! precipitation fields of Scavenged
-                                         ! Aerosol Particles
-END TYPE LIMA_PRECIP_SCAVENGING_t
-
-TYPE(LIMA_PRECIP_SCAVENGING_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: PRECIP_SCAVENGING_MODEL
-
-REAL, DIMENSION(:,:), POINTER :: XINPAP=>NULL(), XACPAP=>NULL()
-
-CONTAINS
-
-SUBROUTINE LIMA_PRECIP_SCAVENGING_GOTO_MODEL(KFROM, KTO)
-  INTEGER, INTENT(IN) :: KFROM, KTO
-  !
-  ! Save current state for allocated arrays
-  PRECIP_SCAVENGING_MODEL(KFROM)%XINPAP=>XINPAP
-  PRECIP_SCAVENGING_MODEL(KFROM)%XACPAP=>XACPAP
-  !
-  ! Current model is set to model KTO
-  XINPAP=>PRECIP_SCAVENGING_MODEL(KTO)%XINPAP
-  XACPAP=>PRECIP_SCAVENGING_MODEL(KTO)%XACPAP
-  !
-END SUBROUTINE LIMA_PRECIP_SCAVENGING_GOTO_MODEL
-!
-!
-END MODULE MODD_LIMA_PRECIP_SCAVENGING_n
diff --git a/src/common/micro/ini_lima_cold_mixed.F90 b/src/common/micro/ini_lima_cold_mixed.F90
index a493f28ee15f1ebe1c524b650e40667a87cb05b7..55303431f6c033e1ae31ab923f02f13b7570af5a 100644
--- a/src/common/micro/ini_lima_cold_mixed.F90
+++ b/src/common/micro/ini_lima_cold_mixed.F90
@@ -70,11 +70,11 @@ USE MODE_RSCOLRG, ONLY: RSCOLRG
 USE MODE_NRCOLSS, ONLY: NRCOLSS
 USE MODE_NZCOLX, ONLY: NZCOLX 
 USE MODE_NSCOLRG, ONLY: NSCOLRG
-USE MODI_LIMA_READ_XKER_RACCS, ONLY: LIMA_READ_XKER_RACCS
-USE MODI_LIMA_READ_XKER_SDRYG, ONLY: LIMA_READ_XKER_SDRYG
-USE MODI_LIMA_READ_XKER_RDRYG, ONLY: LIMA_READ_XKER_RDRYG
-USE MODI_LIMA_READ_XKER_SWETH, ONLY: LIMA_READ_XKER_SWETH
-USE MODI_LIMA_READ_XKER_GWETH, ONLY: LIMA_READ_XKER_GWETH
+USE MODE_LIMA_READ_XKER_RACCS, ONLY: LIMA_READ_XKER_RACCS
+USE MODE_LIMA_READ_XKER_SDRYG, ONLY: LIMA_READ_XKER_SDRYG
+USE MODE_LIMA_READ_XKER_RDRYG, ONLY: LIMA_READ_XKER_RDRYG
+USE MODE_LIMA_READ_XKER_SWETH, ONLY: LIMA_READ_XKER_SWETH
+USE MODE_LIMA_READ_XKER_GWETH, ONLY: LIMA_READ_XKER_GWETH
 !
 IMPLICIT NONE
 !
diff --git a/src/common/micro/lima_adjust_split.F90 b/src/common/micro/lima_adjust_split.F90
index 0b59012332465225b9908870b0f22b152d05f5e2..f85bde85b19f4019847185e086d78cae47ad1762 100644
--- a/src/common/micro/lima_adjust_split.F90
+++ b/src/common/micro/lima_adjust_split.F90
@@ -109,7 +109,7 @@ use mode_msg
 use mode_tools,            only: Countjv
 !
 USE MODI_CONDENSATION
-USE MODI_LIMA_CCN_ACTIVATION
+USE MODE_LIMA_CCN_ACTIVATION, ONLY: LIMA_CCN_ACTIVATION
 !
 IMPLICIT NONE
 !
diff --git a/src/mesonh/micro/lima_precip_scavenging.f90 b/src/common/micro/lima_precip_scavenging.f90
similarity index 90%
rename from src/mesonh/micro/lima_precip_scavenging.f90
rename to src/common/micro/lima_precip_scavenging.f90
index aaabf3f298cc30a22fab869f8602151d82e12897..7739ef866e5effb35e51a415f2b6376e391dc631 100644
--- a/src/mesonh/micro/lima_precip_scavenging.f90
+++ b/src/common/micro/lima_precip_scavenging.f90
@@ -3,42 +3,10 @@
 !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_LIMA_PRECIP_SCAVENGING
-!      ##################################
-!
-INTERFACE
-   SUBROUTINE LIMA_PRECIP_SCAVENGING (HCLOUD, KLUOUT, KTCOUNT, PTSTEP,        &
-                                      PRRT, PRHODREF, PRHODJ, PZZ,            & 
-                                      PPABST, PTHT, PSVT, PRSVS, PINPAP )
-
-use modd_nsv, only: nsv_lima_beg
-
-CHARACTER(LEN=4),       INTENT(IN)    :: HCLOUD   ! cloud paramerization
-INTEGER,                INTENT(IN)    :: KLUOUT   ! unit for output listing
-INTEGER,                INTENT(IN)    :: KTCOUNT  ! iteration count
-REAL,                   INTENT(IN)    :: PTSTEP   ! Double timestep except 
-                                                  ! for the first time step
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRRT     ! Rain mixing ratio at t
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRHODREF ! Air Density [kg/m**3]
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PRHODJ   ! Dry Density [kg]
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PZZ      ! Altitude
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PPABST   ! Absolute pressure at t
-REAL, DIMENSION(:,:,:), INTENT(IN)    :: PTHT     ! Theta at time t 
-!
-REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT   ! Particle Concentration [kg-1]
-REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PRSVS  ! Total Number Scavenging Rate
-!
-REAL, DIMENSION(:,:),   INTENT(INOUT) :: PINPAP
-!
-END SUBROUTINE LIMA_PRECIP_SCAVENGING
-END INTERFACE
-END MODULE MODI_LIMA_PRECIP_SCAVENGING
-!
 !########################################################################
-   SUBROUTINE LIMA_PRECIP_SCAVENGING (HCLOUD, KLUOUT, KTCOUNT, PTSTEP,        &
-                                      PRRT, PRHODREF, PRHODJ, PZZ,            &
+   SUBROUTINE LIMA_PRECIP_SCAVENGING (D, CST, BUCONF, TBUDGETS, KBUDGETS, &
+                                      HCLOUD, KLUOUT, KTCOUNT, PTSTEP,    &
+                                      PRRT, PRHODREF, PRHODJ, PZZ,        &
                                       PPABST, PTHT, PSVT, PRSVS, PINPAP )
 !########################################################################x
 !
@@ -109,8 +77,9 @@ END MODULE MODI_LIMA_PRECIP_SCAVENGING
 !*                  0.DECLARATIONS          
 !                   --------------
 !
-use modd_budget,          only: lbudget_sv, NBUDGET_SV1, tbudgets
-USE MODD_CST
+USE MODD_DIMPHYEX,        ONLY: DIMPHYEX_t
+use modd_budget,          only: TBUDGETDATA, TBUDGETCONF_t, NBUDGET_SV1
+USE MODD_CST,             ONLY: CST_t
 USE MODD_NSV
 USE MODD_PARAMETERS
 USE MODD_PARAM_LIMA,      ONLY: NMOD_IFN, NSPECIE, XFRAC,                         &
@@ -122,17 +91,23 @@ USE MODD_PARAM_LIMA,      ONLY: NMOD_IFN, NSPECIE, XFRAC,
                                 XRTMIN, XCTMIN
 USE MODD_PARAM_LIMA_WARM, ONLY: XCR, XDR
 
-use mode_budget,          only: Budget_store_init, Budget_store_end
+use mode_budget,          only: Budget_store_init_phy, Budget_store_end_phy
 use mode_tools,           only: Countjv
 
 USE MODI_GAMMA
 USE MODI_INI_NSV
-USE MODI_LIMA_FUNCTIONS
+USE MODE_LIMA_FUNCTIONS, ONLY: GAUHER, GAULAG
 
 IMPLICIT NONE
 !
 !*                 0.1 declarations of dummy arguments :
 !
+TYPE(DIMPHYEX_t),         INTENT(IN)    :: D
+TYPE(CST_t),              INTENT(IN)    :: CST
+TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
+TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+INTEGER,                  INTENT(IN)    :: KBUDGETS
+!
 CHARACTER(LEN=4),       INTENT(IN)    :: HCLOUD   ! cloud paramerization
 INTEGER,                INTENT(IN)    :: KLUOUT   ! unit for output listing
 INTEGER,                INTENT(IN)    :: KTCOUNT  ! iteration count
@@ -146,8 +121,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN)    :: PZZ      ! Altitude
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PPABST   ! Absolute pressure at t
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PTHT     ! Theta at time t 
 !
-REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(IN)    :: PSVT   ! Particle Concentration [/m**3]
-REAL, DIMENSION(:,:,:,NSV_LIMA_BEG:), INTENT(INOUT) :: PRSVS  ! Total Number Scavenging Rate
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT   ! Particle Concentration [/m**3]
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS  ! Total Number Scavenging Rate
 !
 REAL, DIMENSION(:,:),   INTENT(INOUT) :: PINPAP
 !
@@ -252,21 +227,24 @@ REAL :: XSIGMAP
 REAL :: XRHOP   
 REAL :: XFRACP
 !
-!
+INTEGER :: ISV_LIMA_NR
+INTEGER :: ISV_LIMA_SCAVMASS
 !
 !------------------------------------------------------------------------------
+ISV_LIMA_NR       = NSV_LIMA_NR       - NSV_LIMA_BEG + 1
+ISV_LIMA_SCAVMASS = NSV_LIMA_SCAVMASS - NSV_LIMA_BEG + 1
 
-if ( lbudget_sv ) then
+if ( BUCONF%lbudget_sv ) then
   do jl = 1, nmod_ccn
     idx = nsv_lima_ccn_free - 1 + jl
-    call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + idx), 'SCAV', prsvs(:, :, :, idx) )
+    call Budget_store_init_phy(D,  tbudgets(NBUDGET_SV1 - 1 + idx), 'SCAV', prsvs(:, :, :, idx) )
   end do
   do jl = 1, nmod_ifn
     idx = nsv_lima_ifn_free - 1 + jl
-    call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + idx), 'SCAV', prsvs(:, :, :, idx) )
+    call Budget_store_init_phy(D,  tbudgets(NBUDGET_SV1 - 1 + idx), 'SCAV', prsvs(:, :, :, idx) )
   end do
   if ( laero_mass ) then
-    call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + nsv_lima_scavmass), 'SCAV', prsvs(:, :, :, nsv_lima_scavmass) )
+    call Budget_store_init_phy(D,  tbudgets(NBUDGET_SV1 - 1 + nsv_lima_scavmass), 'SCAV', prsvs(:, :, :, nsv_lima_scavmass) )
   end if
 end if
 !
@@ -282,7 +260,7 @@ IKB=1+JPVEXT
 IKE=SIZE(PRHODREF,3) - JPVEXT
 !
 ! PCRT
-PCRT(:,:,:)=PSVT(:,:,:,NSV_LIMA_NR)
+PCRT(:,:,:)=PSVT(:,:,:,ISV_LIMA_NR)
 !
 ! Rain mask 
 GRAIN(:,:,:) = .FALSE.
@@ -313,19 +291,19 @@ ZSHAPE_FACTOR = GAMMA_X0D(XNUR+3./XALPHAR)/GAMMA_X0D(XNUR)
 !
 WHERE ( GRAIN(:,:,:) )
    !
-   ZT_3D(:,:,:)      = PTHT(:,:,:) * ( PPABST(:,:,:)/XP00 )**(XRD/XCPD)
+   ZT_3D(:,:,:)      = PTHT(:,:,:) * ( PPABST(:,:,:)/CST%XP00 )**(CST%XRD/CST%XCPD)
    ZCONCR_3D(:,:,:)  = PCRT(:,:,:) * PRHODREF(:,:,:)                    ![/m3]
    ! Sutherland law for viscosity of air
    ZVISCA_3D(:,:,:)  = XMUA0*(ZT_3D(:,:,:)/XTREF)**1.5*(XTREF+XT_SUTH_A) &
                                                         /(XT_SUTH_A+ZT_3D(:,:,:))
    ! Air mean free path
-   ZMFPA_3D(:,:,:)   = XMFPA0*(XP00*ZT_3D(:,:,:))/(PPABST(:,:,:)*XT0SCAV)           
+   ZMFPA_3D(:,:,:)   = XMFPA0*(CST%XP00*ZT_3D(:,:,:))/(PPABST(:,:,:)*XT0SCAV)           
    ! Viscosity ratio
    ZVISC_RATIO_3D(:,:,:) = ZVISCA_3D(:,:,:)/XVISCW   !!!!! inversé par rapport à orig. !
    ! Rain drops parameters
-   ZLAMBDAR_3D(:,:,:) = ( ((XPI/6.)*ZSHAPE_FACTOR*XRHOLW*ZCONCR_3D(:,:,:))  &
+   ZLAMBDAR_3D(:,:,:) = ( ((CST%XPI/6.)*ZSHAPE_FACTOR*CST%XRHOLW*ZCONCR_3D(:,:,:))  &
                           /(PRHODREF(:,:,:)*PRRT(:,:,:)) )**(1./3.)         ![/m]
-   FACTOR_3D(:,:,:) = XPI*0.25*ZCONCR_3D(:,:,:)*XCR*(XRHO00/PRHODREF(:,:,:))**(0.4)
+   FACTOR_3D(:,:,:) = CST%XPI*0.25*ZCONCR_3D(:,:,:)*XCR*(XRHO00/PRHODREF(:,:,:))**(0.4)
    !
 END WHERE
 !
@@ -361,11 +339,11 @@ DO JSV = 1, NMOD_CCN+NMOD_IFN
 !
    IF (JSV .LE. NMOD_CCN) THEN
       JMOD = JSV
-      SV_VAR = NSV_LIMA_CCN_FREE -1 + JMOD ! Variable number in PSVT
+      SV_VAR = NSV_LIMA_CCN_FREE - NSV_LIMA_BEG + JMOD ! Variable number in PSVT
       NM = 1                               ! Number of species (for IFN int. mixing)
    ELSE
       JMOD = JSV - NMOD_CCN
-      SV_VAR = NSV_LIMA_IFN_FREE -1 + JMOD
+      SV_VAR = NSV_LIMA_IFN_FREE - NSV_LIMA_BEG + JMOD
       NM = NSPECIE
    END IF
 !
@@ -469,7 +447,7 @@ DO JSV = 1, NMOD_CCN+NMOD_IFN
             ZKNUDSEN(:) = MIN( 20.,ZVOLDP(J1)/ZMFPA(:) )
             ZCUNSLIP(:,J1) = 1.0+2.0/ZKNUDSEN(:)*(1.257+0.4*EXP(-0.55*ZKNUDSEN(:)))
             ! Diffusion coefficient
-            ZDIFF(:,J1) = XBOLTZ*ZT(:)*ZCUNSLIP(:,J1)/(3.*XPI*ZVISCA(:)*ZVOLDP(J1))
+            ZDIFF(:,J1) = CST%XBOLTZ*ZT(:)*ZCUNSLIP(:,J1)/(3.*CST%XPI*ZVISCA(:)*ZVOLDP(J1))
             ! Schmidt number
             ZSC(:,J1)       = ZVISCA(:)/(ZRHODREF(:)*ZDIFF(:,J1))  
             ZSC_INV(:,J1)   = 1./ZSC(:,J1)
@@ -478,7 +456,7 @@ DO JSV = 1, NMOD_CCN+NMOD_IFN
             ! Characteristic Time Required for reaching terminal velocity 
             ZRELT(:,J1) = (ZVOLDP(J1)**2)*ZCUNSLIP(:,J1)*XRHOP/(18.*ZVISCA(:))
             ! Density number
-            ZDENS_RATIO = XRHOP/XRHOLW
+            ZDENS_RATIO = XRHOP/CST%XRHOLW
             ZDENS_RATIO_SQRT = SQRT(ZDENS_RATIO)
             ! Initialisation
             ZBC_SCAV_COEF(:,J1)=0.
@@ -487,7 +465,7 @@ DO JSV = 1, NMOD_CCN+NMOD_IFN
          !
             DO J2=1,NDIAMR
                ! Stokes number
-               ZST(:,J1,J2) = 2.*ZRELT(:,J1)*(ZFVELR(:,J2)-ZRELT(1,J1)*XG)          &
+               ZST(:,J1,J2) = 2.*ZRELT(:,J1)*(ZFVELR(:,J2)-ZRELT(1,J1)*CST%XG)          &
                                             *ZVOLDR_INV(:,J2)
                ! Size Ratio
                ZSIZE_RATIO(:,J1,J2) = ZVOLDP(J1)*ZVOLDR_INV(:,J2)
@@ -508,7 +486,7 @@ DO JSV = 1, NMOD_CCN+NMOD_IFN
             ! Total MASS Scavenging Rate of aerosol [kg.m**-3.s**-1]
             ZTOT_MASS_RATE(:) = ZTOT_MASS_RATE(:) +                                 &
                                 ZWEIGHTP(J1)*XFRACP*ZCONCP(:)*ZBC_SCAV_COEF(:,J1)   &
-                                *XPI/6.*XRHOP*(ZVOLDP(J1)**3)  
+                                *CST%XPI/6.*XRHOP*(ZVOLDP(J1)**3)  
          END DO
       ! End of the loop over the drops diameters
       !--------------------------------------------------------------------------
@@ -524,9 +502,9 @@ DO JSV = 1, NMOD_CCN+NMOD_IFN
             PTOT_MASS_RATE(:,:,:) = PTOT_MASS_RATE(:,:,:) +                         &
                  UNPACK(ZTOT_MASS_RATE(:), MASK=GSCAV(:,:,:), FIELD=0.0)
             CALL SCAV_MASS_SEDIMENTATION( HCLOUD, PTSTEP, KTCOUNT, PZZ, PRHODJ,     &
-                                      PRHODREF, PRRT, PSVT(:,:,:,NSV_LIMA_SCAVMASS),&
-                                      PRSVS(:,:,:,NSV_LIMA_SCAVMASS), PINPAP        )
-            PRSVS(:,:,:,NSV_LIMA_SCAVMASS)=PRSVS(:,:,:,NSV_LIMA_SCAVMASS) +         &
+                                      PRHODREF, PRRT, PSVT(:,:,:,ISV_LIMA_SCAVMASS),&
+                                      PRSVS(:,:,:,ISV_LIMA_SCAVMASS), PINPAP        )
+            PRSVS(:,:,:,ISV_LIMA_SCAVMASS)=PRSVS(:,:,:,ISV_LIMA_SCAVMASS) +         &
                              PTOT_MASS_RATE(:,:,:)*PRHODJ(:,:,:)/PRHODREF(:,:,:)
          END IF
       ENDDO
@@ -575,17 +553,17 @@ DO JSV = 1, NMOD_CCN+NMOD_IFN
    ENDIF
 ENDDO
 !
-if ( lbudget_sv ) then
+if ( BUCONF%lbudget_sv ) then
   do jl = 1, nmod_ccn
     idx = nsv_lima_ccn_free - 1 + jl
-    call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + idx), 'SCAV', prsvs(:, :, :, idx) )
+    call Budget_store_end_phy(D,  tbudgets(NBUDGET_SV1 - 1 + idx), 'SCAV', prsvs(:, :, :, idx) )
   end do
   do jl = 1, nmod_ifn
     idx = nsv_lima_ifn_free - 1 + jl
-    call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + idx), 'SCAV', prsvs(:, :, :, idx) )
+    call Budget_store_end_phy(D,  tbudgets(NBUDGET_SV1 - 1 + idx), 'SCAV', prsvs(:, :, :, idx) )
   end do
   if ( laero_mass ) then
-    call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + nsv_lima_scavmass), 'SCAV', prsvs(:, :, :, nsv_lima_scavmass) )
+    call Budget_store_end_phy(D,  tbudgets(NBUDGET_SV1 - 1 + nsv_lima_scavmass), 'SCAV', prsvs(:, :, :, nsv_lima_scavmass) )
   end if
 end if
 !------------------------------------------------------------------------------
diff --git a/src/mesonh/micro/modd_lima_precip_scavengingn.f90 b/src/common/micro/modd_lima_precip_scavengingn.f90
similarity index 100%
rename from src/mesonh/micro/modd_lima_precip_scavengingn.f90
rename to src/common/micro/modd_lima_precip_scavengingn.f90
diff --git a/src/common/micro/mode_lima_functions.F90 b/src/common/micro/mode_lima_functions.F90
index e68fa3e7a3128ba430621d6cd7cf1a73b64ea5b2..c65e6e23cbca066c1e02102e150f1284118134eb 100644
--- a/src/common/micro/mode_lima_functions.F90
+++ b/src/common/micro/mode_lima_functions.F90
@@ -12,132 +12,97 @@
 MODULE MODE_LIMA_FUNCTIONS
   IMPLICIT NONE
 CONTAINS
-!###########################################
-FUNCTION MOMG (PALPHA,PNU,PP) RESULT (PMOMG)
-!###########################################
 !
-! auxiliary routine used to compute the Pth moment order of the generalized
-! gamma law
-!
-  USE MODI_GAMMA
-!
-  IMPLICIT NONE
-!
-  REAL     :: PALPHA ! first shape parameter of the dimensionnal distribution
-  REAL     :: PNU    ! second shape parameter of the dimensionnal distribution
-  REAL     :: PP     ! order of the moment
-  REAL     :: PMOMG  ! result: moment of order ZP
-!
-  PMOMG = GAMMA_X0D(PNU+PP/PALPHA)/GAMMA_X0D(PNU)
+!------------------------------------------------------------------------------
 !
-END FUNCTION MOMG
+  FUNCTION MOMG (PALPHA,PNU,PP) RESULT (PMOMG)
+! Pth moment order of the generalized gamma law
+    USE MODI_GAMMA
+    IMPLICIT NONE
+    REAL     :: PALPHA ! first shape parameter of the dimensionnal distribution
+    REAL     :: PNU    ! second shape parameter of the dimensionnal distribution
+    REAL     :: PP     ! order of the moment
+    REAL     :: PMOMG  ! result: moment of order ZP
+    PMOMG = GAMMA_X0D(PNU+PP/PALPHA)/GAMMA_X0D(PNU)
+  END FUNCTION MOMG
 !
 !------------------------------------------------------------------------------
 !
-!#############################################
-FUNCTION RECT(PA,PB,PX,PX1,PX2)  RESULT(PRECT)
-!#############################################
-!
+  FUNCTION RECT(PA,PB,PX,PX1,PX2)  RESULT(PRECT)
 !     PRECT takes the value PA if PX1<=PX<PX2, and PB outside the [PX1;PX2[ interval
-!
-  IMPLICIT NONE
-!
-  REAL,                        INTENT(IN)           :: PA
-  REAL,                        INTENT(IN)           :: PB
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX
-  REAL,                        INTENT(IN)           :: PX1
-  REAL,                        INTENT(IN)           :: PX2
-  REAL, DIMENSION(SIZE(PX,1))                       :: PRECT
-!
-  PRECT(:) = PB
-  WHERE (PX(:).GE.PX1 .AND. PX(:).LT.PX2)
-     PRECT(:) = PA
-  END WHERE
-  RETURN
-!
-END FUNCTION RECT
+    IMPLICIT NONE
+    REAL,                        INTENT(IN) :: PA
+    REAL,                        INTENT(IN) :: PB
+    REAL, DIMENSION(:),          INTENT(IN) :: PX
+    REAL,                        INTENT(IN) :: PX1
+    REAL,                        INTENT(IN) :: PX2
+    REAL, DIMENSION(SIZE(PX,1))             :: PRECT
+    PRECT(:) = PB
+    WHERE (PX(:).GE.PX1 .AND. PX(:).LT.PX2)
+       PRECT(:) = PA
+    END WHERE
+    RETURN
+  END FUNCTION RECT
 !
 !-------------------------------------------------------------------------------
 !
-!###############################################
-FUNCTION DELTA(PA,PB,PX,PX1,PX2)  RESULT(PDELTA)
-!###############################################
-!
+  FUNCTION DELTA(PA,PB,PX,PX1,PX2)  RESULT(PDELTA)
 !     PDELTA takes the value PA if PX<PX1, and PB if PX>=PX2
 !     PDELTA is a cubic interpolation between PA and PB for PX between PX1 and PX2 
-!
-  IMPLICIT NONE
-!
-  REAL,                        INTENT(IN)           :: PA
-  REAL,                        INTENT(IN)           :: PB
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX
-  REAL,                        INTENT(IN)           :: PX1
-  REAL,                        INTENT(IN)           :: PX2
-  REAL, DIMENSION(SIZE(PX,1))                       :: PDELTA
-!
-!*       local variable
-!
-  REAL                                              :: ZA
-!
-  ZA = 6.0*(PA-PB)/(PX2-PX1)**3
-  WHERE     (PX(:).LT.PX1)
-     PDELTA(:) = PA
-  ELSEWHERE (PX(:).GE.PX2)
-     PDELTA(:) = PB
-  ELSEWHERE
-     PDELTA(:) =   PA + ZA*PX1**2*(PX1/6.0 - 0.5*PX2)              &
-          + ZA*PX1*PX2*                          (PX(:))    &
-          - (0.5*ZA*(PX1+PX2))*                  (PX(:)**2) & 
-          + (ZA/3.0)*                            (PX(:)**3)
-  END WHERE
-  RETURN
-!
-END FUNCTION DELTA
+    IMPLICIT NONE
+    REAL,                        INTENT(IN) :: PA
+    REAL,                        INTENT(IN) :: PB
+    REAL, DIMENSION(:),          INTENT(IN) :: PX
+    REAL,                        INTENT(IN) :: PX1
+    REAL,                        INTENT(IN) :: PX2
+    REAL, DIMENSION(SIZE(PX,1))             :: PDELTA
+    REAL                                    :: ZA
+    ZA = 6.0*(PA-PB)/(PX2-PX1)**3
+    WHERE     (PX(:).LT.PX1)
+       PDELTA(:) = PA
+    ELSEWHERE (PX(:).GE.PX2)
+       PDELTA(:) = PB
+    ELSEWHERE
+       PDELTA(:) =   PA + ZA*PX1**2*(PX1/6.0 - 0.5*PX2)              &
+            + ZA*PX1*PX2*                          (PX(:))    &
+            - (0.5*ZA*(PX1+PX2))*                  (PX(:)**2) & 
+            + (ZA/3.0)*                            (PX(:)**3)
+    END WHERE
+    RETURN
+!
+  END FUNCTION DELTA
 !
 !-------------------------------------------------------------------------------
 !
-!#######################################################
-FUNCTION DELTA_VEC(PA,PB,PX,PX1,PX2)  RESULT(PDELTA_VEC)
-!#######################################################
-!
+  FUNCTION DELTA_VEC(PA,PB,PX,PX1,PX2)  RESULT(PDELTA_VEC)
 !    Same as DELTA for vectorized PX1 and PX2 arguments
-!
-  IMPLICIT NONE
-!
-  REAL,                        INTENT(IN)           :: PA
-  REAL,                        INTENT(IN)           :: PB
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX1
-  REAL, DIMENSION(:),          INTENT(IN)           :: PX2
-  REAL, DIMENSION(SIZE(PX,1))                       :: PDELTA_VEC
-!
-!*       local variable
-!
-  REAL, DIMENSION(SIZE(PX,1))                       :: ZA
-!
-  ZA(:) = 0.0
-  wHERE     (PX(:)<=PX1(:))
-     PDELTA_VEC(:) = PA
-  ELSEWHERE (PX(:)>=PX2(:))
-     PDELTA_VEC(:) = PB
-  ELSEWHERE
-     ZA(:)         = 6.0*(PA-PB)/(PX2(:)-PX1(:))**3
-     PDELTA_VEC(:) =   PA + ZA(:)*PX1(:)**2*(PX1(:)/6.0 - 0.5*PX2(:))           &
-          + ZA(:)*PX1(:)*PX2(:)*                          (PX(:))    &
-          - (0.5*ZA(:)*(PX1(:)+PX2(:)))*                  (PX(:)**2) & 
-          + (ZA(:)/3.0)*                                  (PX(:)**3)
-  END WHERE
-  RETURN
-!
-END FUNCTION DELTA_VEC
+    IMPLICIT NONE
+    REAL,                        INTENT(IN) :: PA
+    REAL,                        INTENT(IN) :: PB
+    REAL, DIMENSION(:),          INTENT(IN) :: PX
+    REAL, DIMENSION(:),          INTENT(IN) :: PX1
+    REAL, DIMENSION(:),          INTENT(IN) :: PX2
+    REAL, DIMENSION(SIZE(PX,1))             :: PDELTA_VEC
+    REAL, DIMENSION(SIZE(PX,1))             :: ZA
+    ZA(:) = 0.0
+    wHERE     (PX(:)<=PX1(:))
+       PDELTA_VEC(:) = PA
+    ELSEWHERE (PX(:)>=PX2(:))
+       PDELTA_VEC(:) = PB
+    ELSEWHERE
+       ZA(:)         = 6.0*(PA-PB)/(PX2(:)-PX1(:))**3
+       PDELTA_VEC(:) =   PA + ZA(:)*PX1(:)**2*(PX1(:)/6.0 - 0.5*PX2(:))           &
+            + ZA(:)*PX1(:)*PX2(:)*                          (PX(:))    &
+            - (0.5*ZA(:)*(PX1(:)+PX2(:)))*                  (PX(:)**2) & 
+            + (ZA(:)/3.0)*                                  (PX(:)**3)
+    END WHERE
+    RETURN
+  END FUNCTION DELTA_VEC
 !
 !-------------------------------------------------------------------------------
 !
-!###########################
 SUBROUTINE gaulag(x,w,n,alf)
-!###########################
   use modd_precision, only: MNHREAL64
-
   INTEGER n,MAXIT
   REAL alf,w(n),x(n)
   REAL(kind=MNHREAL64) :: EPS
@@ -174,9 +139,7 @@ SUBROUTINE gaulag(x,w,n,alf)
 1    x(i)=z
      w(i)=-exp(gammln(alf+n)-gammln(real(n)))/(pp*n*p2)
 13 continue
-!
 ! NORMALISATION
-!
   SUMW = 0.0
   DO 14 I=1,N
      SUMW = SUMW + W(I)
@@ -190,11 +153,8 @@ END SUBROUTINE gaulag
 !
 !------------------------------------------------------------------------------
 !
-!##########################################
 SUBROUTINE gauher(x,w,n)
-!##########################################
   use modd_precision, only: MNHREAL64
-
   INTEGER n,MAXIT
   REAL w(n),x(n)
   REAL(kind=MNHREAL64) :: EPS,PIM4
@@ -236,9 +196,7 @@ SUBROUTINE gauher(x,w,n)
      w(i)=2.0/(pp*pp)
      w(n+1-i)=w(i)
 13 continue
-!
 ! NORMALISATION
-!
   SUMW = 0.0
   DO 14 I=1,N
      SUMW = SUMW + W(I)
@@ -251,4 +209,36 @@ SUBROUTINE gauher(x,w,n)
 END SUBROUTINE gauher
 !
 !------------------------------------------------------------------------------
+!
+FUNCTION ARTH(FIRST,INCREMENT,N)
+  REAL,INTENT(IN) :: FIRST,INCREMENT
+  INTEGER,INTENT(IN) :: N
+  REAL,DIMENSION(N) :: ARTH
+  INTEGER :: K
+  DO K=1,N
+     ARTH(K)=FIRST+INCREMENT*(K-1)
+  END DO
+END FUNCTION ARTH
+!
+!------------------------------------------------------------------------------
+!
+FUNCTION gammln(xx)
+  IMPLICIT NONE
+  REAL, INTENT(IN) :: xx
+  REAL :: gammln
+  REAL :: tmp,x
+  REAL :: stp = 2.5066282746310005
+  REAL, DIMENSION(6) :: coef = (/76.18009172947146,& 
+       -86.50532032941677,24.01409824083091,& 
+       -1.231739572450155,0.1208650973866179e-2,&
+       -0.5395239384953e-5/)
+  x=xx
+  tmp=x+5.5
+  tmp=(x+0.5)*log(tmp)-tmp
+  gammln=tmp+log(stp*(1.000000000190015+&
+       sum(coef(:)/arth(x+1.,1.,size(coef))))/x)
+END FUNCTION gammln
+!
+!------------------------------------------------------------------------------
+!
 END MODULE MODE_LIMA_FUNCTIONS
diff --git a/src/common/micro/modi_lima_precip_scavenging.f90 b/src/common/micro/modi_lima_precip_scavenging.f90
new file mode 100644
index 0000000000000000000000000000000000000000..918e2982eba4d565648da504c0051aa88922fb34
--- /dev/null
+++ b/src/common/micro/modi_lima_precip_scavenging.f90
@@ -0,0 +1,40 @@
+!#################################
+MODULE MODI_LIMA_PRECIP_SCAVENGING
+!#################################
+!
+  INTERFACE
+!
+     SUBROUTINE LIMA_PRECIP_SCAVENGING (D, CST, BUCONF, TBUDGETS, KBUDGETS, &
+                                        HCLOUD, KLUOUT, KTCOUNT, PTSTEP,    &
+                                        PRRT, PRHODREF, PRHODJ, PZZ,        &
+                                        PPABST, PTHT, PSVT, PRSVS, PINPAP )
+       USE MODD_DIMPHYEX,        ONLY: DIMPHYEX_t
+       use modd_budget,          only: TBUDGETDATA,TBUDGETCONF_t
+       USE MODD_CST,             ONLY: CST_t
+!
+       TYPE(DIMPHYEX_t),         INTENT(IN)    :: D
+       TYPE(CST_t),              INTENT(IN)    :: CST
+       TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
+       TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
+       INTEGER,                  INTENT(IN)    :: KBUDGETS
+!
+       CHARACTER(LEN=4),       INTENT(IN)      :: HCLOUD   ! cloud paramerization
+       INTEGER,                INTENT(IN)      :: KLUOUT   ! unit for output listing
+       INTEGER,                INTENT(IN)      :: KTCOUNT  ! iteration count
+       REAL,                   INTENT(IN)      :: PTSTEP   ! Double timestep except 
+                                                           ! for the first time step
+!
+       REAL, DIMENSION(:,:,:), INTENT(IN)      :: PRRT     ! Rain mixing ratio at t
+       REAL, DIMENSION(:,:,:), INTENT(IN)      :: PRHODREF ! Air Density [kg/m**3]
+       REAL, DIMENSION(:,:,:), INTENT(IN)      :: PRHODJ   ! Dry Density [kg]
+       REAL, DIMENSION(:,:,:), INTENT(IN)      :: PZZ      ! Altitude
+       REAL, DIMENSION(:,:,:), INTENT(IN)      :: PPABST   ! Absolute pressure at t
+       REAL, DIMENSION(:,:,:), INTENT(IN)      :: PTHT     ! Theta at time t 
+!
+       REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSVT   ! Particle Concentration [/m**3]
+       REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS  ! Total Number Scavenging Rate
+!
+       REAL, DIMENSION(:,:),   INTENT(INOUT)   :: PINPAP
+     END SUBROUTINE LIMA_PRECIP_SCAVENGING
+  END INTERFACE
+END MODULE MODI_LIMA_PRECIP_SCAVENGING
diff --git a/src/mesonh/ext/modeln.f90 b/src/mesonh/ext/modeln.f90
index d1f6da84bd60cf9771f89e13f426e058d8284ba9..555b3cef2c31dbba4a3d3e383c3ba258813b5b46 100644
--- a/src/mesonh/ext/modeln.f90
+++ b/src/mesonh/ext/modeln.f90
@@ -298,7 +298,7 @@ USE MODD_BLOWSNOW
 USE MODD_BLOWSNOW_n
 use modd_budget,          only: cbutype, lbu_ru, lbu_rv, lbu_rw, lbudget_u, lbudget_v, lbudget_w, lbudget_sv, lbu_enable, &
                                 NBUDGET_U, NBUDGET_V, NBUDGET_W, NBUDGET_SV1, nbumod, nbutime,                            &
-                                tbudgets, tburhodj,                                                                       &
+                                tbudgets, tbuconf, tburhodj,                                                                       &
                                 xtime_bu, xtime_bu_process
 USE MODD_CH_AERO_n,      ONLY: XSOLORG, XMI
 USE MODD_CH_MNHC_n,      ONLY: LUSECHEM,LCH_CONV_LINOX,LUSECHAQ,LUSECHIC, &
@@ -307,9 +307,11 @@ USE MODD_CLOUD_MF_n
 USE MODD_CLOUDPAR_n
 USE MODD_CONF
 USE MODD_CONF_n
+USE MODD_CST,            ONLY: CST
 USE MODD_CURVCOR_n
 USE MODD_DEEP_CONVECTION_n
 USE MODD_DIM_n
+USE MODD_DIMPHYEX,       ONLY: DIMPHYEX_t
 USE MODD_DRAG_n
 USE MODD_DUST,           ONLY: LDUST
 USE MODD_DYN
@@ -567,6 +569,7 @@ REAL, DIMENSION(SIZE(XRSVS,1), SIZE(XRSVS,2), SIZE(XRSVS,3), NSV_AER)  :: ZWETDE
 !
 TYPE(TFILEDATA),POINTER :: TZOUTFILE
 ! TYPE(TFILEDATA),SAVE    :: TZDIACFILE
+TYPE(DIMPHYEX_t) :: YLDIMPHYEX
 !-------------------------------------------------------------------------------
 !
 TPBAKFILE=> NULL()
@@ -2005,10 +2008,11 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
 ! Lessivage des CCN et IFN nucléables par Slinn
 !
     IF (LSCAV .AND. (CCLOUD == 'LIMA')) THEN
-      CALL LIMA_PRECIP_SCAVENGING(CCLOUD, ILUOUT, KTCOUNT,XTSTEP,XRT(:,:,:,3), &
-                              XRHODREF, XRHODJ, XZZ, XPABST, XTHT,             &
-                              XSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),           &
-                              XRSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), XINPAP   )
+       CALL LIMA_PRECIP_SCAVENGING( YLDIMPHYEX,CST,TBUCONF,TBUDGETS,SIZE(TBUDGETS), &
+                                    CCLOUD, ILUOUT, KTCOUNT,XTSTEP,XRT(:,:,:,3),    &
+                                    XRHODREF, XRHODJ, XZZ, XPABST, XTHT,            &
+                                    XSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),          &
+                                    XRSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), XINPAP  )
 !
       XACPAP(:,:) = XACPAP(:,:) + XINPAP(:,:) * XTSTEP
     END IF
diff --git a/src/mesonh/micro/lima_adjust.f90 b/src/mesonh/micro/lima_adjust.f90
index da2ff335af989658c42a05c28a96e4a863e96c6e..abfe49fb7ebc640c3de1588cc78a245db2e6745a 100644
--- a/src/mesonh/micro/lima_adjust.f90
+++ b/src/mesonh/micro/lima_adjust.f90
@@ -168,8 +168,8 @@ use mode_tools,            only: Countjv
 !
 USE MODI_CONDENS
 USE MODI_CONDENSATION
-USE MODI_LIMA_FUNCTIONS
-USE MODI_LIMA_CCN_ACTIVATION
+USE MODE_LIMA_FUNCTIONS
+USE MODE_LIMA_CCN_ACTIVATION, ONLY: LIMA_CCN_ACTIVATION
 !
 IMPLICIT NONE
 !
diff --git a/src/mesonh/micro/lima_phillips.f90 b/src/mesonh/micro/lima_phillips.f90
index c3d084599b9499941fbaf1f2fa742fc8e64b1d93..2374f6725e657d915e3dce6501dab6ff527b0025 100644
--- a/src/mesonh/micro/lima_phillips.f90
+++ b/src/mesonh/micro/lima_phillips.f90
@@ -142,8 +142,8 @@ USE MODD_PARAM_LIMA_COLD, ONLY : XMNU0
 use mode_budget,          only: Budget_store_init, Budget_store_end
 use mode_tools,           only: Countjv
 
-USE MODI_LIMA_PHILLIPS_INTEG
-USE MODI_LIMA_PHILLIPS_REF_SPECTRUM
+USE MODE_LIMA_PHILLIPS_INTEG, ONLY: LIMA_PHILLIPS_INTEG
+USE MODE_LIMA_PHILLIPS_REF_SPECTRUM, ONLY: LIMA_PHILLIPS_REF_SPECTRUM
 
 IMPLICIT NONE
 !