diff --git a/src/MNH/aer2lima.f90 b/src/MNH/aer2lima.f90
index e53c2c91d1157053aae740a38236ee066765c4b5..2c38baf74abdd4c5db5cebcc108e4c67d5e55ac1 100644
--- a/src/MNH/aer2lima.f90
+++ b/src/MNH/aer2lima.f90
@@ -77,7 +77,6 @@ USE MODD_CH_M9_n, ONLY : CNAMES
 USE MODE_AERO_PSD
 USE MODE_SALT_PSD
 USE MODE_DUST_PSD
-USE MODI_CH_AER_EQSAM
 USE MODI_DUSTLFI_n
 USE MODI_SALTLFI_n
 !
@@ -93,6 +92,7 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODREF, PRV, PPABST, PTHT, PZZ
 
 REAL, DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3), NSP+NCARB+NSOA,JPMODE) :: ZCTOTA
 REAL, DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3))   :: ZSUM, ZSUM2, ZRATH2O, ZRATSO4, ZRATDST
+REAL, DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3))   :: ZRATBC, ZRATOC
 REAL, DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3),JPMODE) :: ZSIG_AER, ZRG_AER, ZN0_AER
 REAL, DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3),NMODE_SLT) :: ZSIG_SLT, ZRG_SLT, ZN0_SLT
 REAL, DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3),NMODE_DST) :: ZSIG_DST, ZRG_DST, ZN0_DST
@@ -102,25 +102,14 @@ REAL, DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3))   :: ZPKM, ZPKH2O, ZTE
 REAL, DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3),6) :: ZAER
 REAL, DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3),NSV) :: ZTOT
 REAL, DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3),JPMODE) :: ZOM
+REAL, DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2), SIZE(PSVT,3)) :: ZU, ZN0_CCN
 REAL, DIMENSION(NSV) :: ZMI
 INTEGER :: JSV, JJ, JI, II, IJ, IK, JK, IDX
-REAL :: ZCCNRADIUS, ZRATMASSH2O
-
-ZCCNRADIUS = 0.02 ! to suppress the aitken mode  (µm)
+REAL :: ZCCNRADIUS, ZRATMASSH2O, ZIFNRADIUS
 
-IF ((CPROGRAM=="REAL  ").OR.(CPROGRAM=="IDEAL ")) CMINERAL = "EQSAM"
-
-IF (CMINERAL == 'EQSAM') THEN
-     ZRATMASSH2O = 0.02
-ELSE
-     ZRATMASSH2O = 0.
-END IF
+ZCCNRADIUS = 0.04 ! to suppress the aitken mode  (µm)
+ZIFNRADIUS = 0.03 !
 !
-ZMI(:) = 250.
-ZMI(JP_AER_SO4)  = 98.
-ZMI(JP_AER_NO3)  = 63.
-ZMI(JP_AER_NH3)  = 17.
-ZMI(JP_AER_H2O)  = 18.
 ZCCN_SUM(:,:,:,:) = 0.
 ZIFN_SUM(:,:,:,:) = 0.
 !
@@ -132,83 +121,17 @@ IF (LORILAM) THEN
 CALL PPP2AERO(PSVT(:,:,:,NSV_AERBEG:NSV_AEREND),PRHODREF,&
               PSIG3D=ZSIG_AER,PRG3D=ZRG_AER,PN3D=ZN0_AER,PCTOTA=ZCTOTA)
 
-ZCTOTA=MAX(ZCTOTA,XMNH_TINY)
 
-  IF ((CPROGRAM=="REAL  ").OR.(CPROGRAM=="IDEAL ")) THEN
-   JP_CH_HNO3 = 0
-   JP_CH_NH3  = 0
-  DO JJ=1,SIZE(CNAMES)
-    IF (CNAMES(JJ) == "HNO3") JP_CH_HNO3  = JJ
-    IF (CNAMES(JJ) == "NH3")  JP_CH_NH3   = JJ
-  END DO
-  ZPKM(:,:,:) = 1E-3*PRHODREF(:,:,:) * 6.0221367E+23 / 28.9644
-  ZPKH2O(:,:,:) = ZPKM(:,:,:)*1.6077*PRV(:,:,:)
-!
-! compute air temperature
-  ZTEMP(:,:,:)   = PTHT(:,:,:)*((PPABST(:,:,:)/XP00)**(XRD/XCPD))
-
-! compute relative humidity
-  ZSAT(:,:,:)=0.611*EXP(17.2694*(ZTEMP(:,:,:)-273.16)/(ZTEMP(:,:,:)-35.86))
-  ZSAT(:,:,:)=ZSAT(:,:,:)*1000.
-  ZRH(:,:,:)=(ZPKH2O(:,:,:)/(ZPKM(:,:,:)*1.6077))*PPABST(:,:,:)/&
-         &(0.622+(ZPKH2O(:,:,:)/(ZPKM(:,:,:)*1.6077)))/ZSAT(:,:,:)
-  ZRH(:,:,:) = MIN(0.95, MAX(ZRH(:,:,:), .01)) ! until 0.95 thermodynamic code is not valid
-
-!  Gas-particles equilibrium => H2O, SO4 aerosol mass
-  DO JI=1,NSP
-    ZTOT(:,:,:,JI)=ZCTOTA(:,:,:,JI,1)+ZCTOTA(:,:,:,JI,2)
-    ZTOT(:,:,:,JI) = MAX(ZTOT(:,:,:,JI),XMNH_TINY)
-  ENDDO
-!
-  ZAER(:,:,:,:) = 0.
-  ZAER(:,:,:,1)=ZTOT(:,:,:,JP_AER_SO4)
-
-! conversion ppp to µg/m3
-  IF (JP_CH_NH3 .NE. 0) ZAER(:,:,:,2)=PSVT(:,:,:,NSV_CHEMBEG-1+JP_CH_NH3)*XNH3*1E-3*PRHODREF(:,:,:)/XMD
-! conversion ppp to µg/m3
-  IF (JP_CH_HNO3 .NE. 0) ZAER(:,:,:,3)=PSVT(:,:,:,NSV_CHEMBEG-1+JP_CH_HNO3)*XHNO3*1E-3*PRHODREF(:,:,:)/XMD
-  ZAER(:,:,:,4)=ZTOT(:,:,:,JP_AER_H2O)
-  ZAER(:,:,:,5)=ZTOT(:,:,:,JP_AER_NO3)
-  ZAER(:,:,:,6)=ZTOT(:,:,:,JP_AER_NH3)
-  ZAER(:,:,:,:)=MAX(ZAER(:,:,:,:),0.)
-
-  DO IK=1,SIZE(PSVT,3)
-    DO IJ=1,SIZE(PSVT,2)
-      CALL CH_AER_EQSAM(ZAER(:,IJ,IK,:),ZRH(:,IJ,IK),PPABST(:,IJ,IK),ZTEMP(:,IJ,IK))
-    END DO
-  END DO
-  ZTOT(:,:,:,JP_AER_SO4) = ZAER(:,:,:,1)
-  ZTOT(:,:,:,JP_AER_H2O) = ZAER(:,:,:,4)
-  ZTOT(:,:,:,JP_AER_NO3) = ZAER(:,:,:,5)
-  ZTOT(:,:,:,JP_AER_NH3) = ZAER(:,:,:,6)
-
-! Balance the mass according to size
-  ZSUM(:,:,:) = 0.
-  ZOM(:,:,:,:) = 0.
-  DO JSV=1,JPMODE
-    DO JJ=1,NSP
-      ZSUM(:,:,:) = ZSUM(:,:,:) + ZCTOTA(:,:,:,JJ,JSV)
-      ZOM(:,:,:,JSV) = ZOM(:,:,:,JSV) + ZCTOTA(:,:,:,JJ,JSV)
-    ENDDO
-  ENDDO
-
-  DO JSV=1,JPMODE
-      ZOM(:,:,:,JSV) = ZOM(:,:,:,JSV) / ZSUM(:,:,:)
-  ENDDO
-
-  DO JSV=1,JPMODE
-    DO JJ=1,NSP
-      ZCTOTA(:,:,:,JJ,JSV)=MAX(XMNH_TINY,ZTOT(:,:,:,JJ)*ZOM(:,:,:,JSV))
-    END DO
-  END DO
+ZCTOTA=MAX(ZCTOTA,XMNH_TINY)
 
-END IF !end part of init in case of IDEAL or REAL
 
 ! Compute mass ratio of sulfates, water and dusts
 DO JSV=1,JPMODE
   ZRATH2O(:,:,:) = 0.
   ZRATSO4(:,:,:) = 0.
   ZRATDST(:,:,:) = 0.
+  ZRATBC(:,:,:) = 0.
+  ZRATOC(:,:,:) = 0.
   ZSUM(:,:,:)    = 0.
   ZSUM2(:,:,:)   = 0.
 
@@ -230,50 +153,50 @@ DO JSV=1,JPMODE
     ZRATDST(:,:,:) = ZCTOTA(:,:,:,JP_AER_DST,JSV) / ZSUM2(:,:,:)
   END WHERE
 
+  WHERE (ZSUM2(:,:,:) .GT. 0.)
+    ZRATBC(:,:,:) = ZCTOTA(:,:,:,JP_AER_BC,JSV) / ZSUM2(:,:,:)
+  END WHERE
+
+  WHERE (ZSUM2(:,:,:) .GT. 0.)
+    ZRATOC(:,:,:) = ZCTOTA(:,:,:,JP_AER_OC,JSV) / ZSUM2(:,:,:)
+  END WHERE
+
 ! #/m3 --> #/kg
   ZN0_AER(:,:,:,JSV) = ZN0_AER(:,:,:,JSV) / PRHODREF(:,:,:)
 
 ! CCN_FREE initialization
 ! aerosol radius greater than ZCCNRADIUS µm to be considers as CCN 
-! water mass greater than ZRATMASSH2O %
+! Von der Emde and Wacker, 1993
+ZU(:,:,:)=LOG(ZCCNRADIUS/ZRG_AER(:,:,:,JSV)) / (SQRT(2.)*LOG(ZSIG_AER(:,:,:,JSV)))
+ZN0_CCN(:,:,:) = 0.5*ZN0_AER(:,:,:,JSV) * (1 - ERFA(ZU(:,:,:)))
 
   IF (CACTCCN=="ABRK") THEN
 ! only one CCN_FREE mode (activation is not performed upon aerosol class but by physical paramters)
 !
-   WHERE (ZRG_AER(:,:,:,JSV) .GT. ZCCNRADIUS)
-     ZCCN_SUM(:,:,:,1) =   ZCCN_SUM(:,:,:,1) + ZN0_AER(:,:,:,JSV) 
-   END WHERE
+!   WHERE (ZRG_AER(:,:,:,JSV) .GT. ZCCNRADIUS)
+     ZCCN_SUM(:,:,:,1) =   ZCCN_SUM(:,:,:,1) + ZN0_CCN(:,:,:) 
+!   END WHERE
 
   ELSE
   ! Sulfates 
   IF (NMOD_CCN .GE. 2) THEN
-   WHERE ((ZRG_AER(:,:,:,JSV) .GT. ZCCNRADIUS).AND.(ZRATH2O(:,:,:).GT.ZRATMASSH2O)) 
-     ZCCN_SUM(:,:,:,2) = ZCCN_SUM(:,:,:,2) + ZN0_AER(:,:,:,JSV) * ZRATSO4(:,:,:)
-   END WHERE
+ !  WHERE (ZRG_AER(:,:,:,JSV) .GT. ZCCNRADIUS) 
+     ZCCN_SUM(:,:,:,2) = ZCCN_SUM(:,:,:,2) + ZN0_CCN(:,:,:) * ZRATSO4(:,:,:)
+ !  END WHERE
   END IF
 
-  ! Hyrdophylic aerosols
+  ! Hydrophylic aerosols
   IF (NMOD_CCN .GE. 3) THEN
-   WHERE ((ZRG_AER(:,:,:,JSV) .GT. ZCCNRADIUS).AND.(ZRATH2O(:,:,:).GT.ZRATMASSH2O)) 
-     ZCCN_SUM(:,:,:,3) = ZCCN_SUM(:,:,:,3) + ZN0_AER(:,:,:,JSV) * (1.-ZRATSO4(:,:,:))
-   END WHERE
+  ! WHERE (ZRG_AER(:,:,:,JSV) .GT. ZCCNRADIUS)
+     ZCCN_SUM(:,:,:,3) = ZCCN_SUM(:,:,:,3) + ZN0_CCN(:,:,:) * &
+                                       (1.-ZRATSO4(:,:,:)-ZRATDST(:,:,:)-ZRATBC(:,:,:))
+  !  END WHERE
   END IF
 
 END IF
 
 ! IFN_FREE initialization
-  IF (LDUST) THEN
-    IDX=MIN(NMODE_DST,NMOD_IFN)+JSV
-  ELSE
-    IDX= 1 + JSV
-  END IF 
-
-  IF (IDX .LE. NMOD_IFN) THEN
-   ZIFN_SUM(:,:,:,IDX) = 0.
-   WHERE (ZRATH2O(:,:,:) .LE. ZRATMASSH2O) ! fraction of dust if low water
-     ZIFN_SUM(:,:,:,IDX) = ZIFN_SUM(:,:,:,IDX) + ZN0_AER(:,:,:,JSV) * ZRATDST(:,:,:)
-   END WHERE
-  END IF
+  ZIFN_SUM(:,:,:,2) = ZIFN_SUM(:,:,:,2) + ZN0_AER(:,:,:,JSV) * ZRATBC(:,:,:)
 END DO
 
 ELSE ! keep lima class intiatialization
@@ -293,13 +216,7 @@ ELSE ! keep lima class intiatialization
      END IF
    END IF 
 
-   IF (LDUST) THEN
-    IDX =MIN(NMODE_DST,NMOD_IFN)+1
-   ELSE
-    IDX = 2
-   END IF
-
-   DO JI = IDX, NMOD_IFN
+   DO JI = 2, NMOD_IFN
      ZIFN_SUM(:,:,:,JI) = PSVT(:,:,:,NSV_LIMA_IFN_FREE+JI-1) + PSVT(:,:,:,NSV_LIMA_IFN_NUCL+JI-1)
    END DO
 
@@ -318,14 +235,14 @@ IF (LSALT) THEN
                 PSIG3D=ZSIG_SLT,PRG3D=ZRG_SLT,PN3D=ZN0_SLT)
 !
   DO JSV=1,NMODE_SLT
+   ZU(:,:,:)=LOG(ZCCNRADIUS/ZRG_SLT(:,:,:,JSV)) / (SQRT(2.)*LOG(ZSIG_SLT(:,:,:,JSV)))
+   ZN0_CCN(:,:,:) = 0.5*ZN0_SLT(:,:,:,JSV) * (1 - ERFA(ZU(:,:,:)))
 ! #/m3 --> #/kg
-    ZN0_SLT(:,:,:,JSV) = ZN0_SLT(:,:,:,JSV) / PRHODREF(:,:,:)
+   ZN0_CCN(:,:,:) = ZN0_CCN(:,:,:) / PRHODREF(:,:,:)
 
 ! CCN_FREE initialization
 !
-    WHERE (ZRG_SLT(:,:,:,JSV) .GT. ZCCNRADIUS)
-     ZCCN_SUM(:,:,:,1) =  ZCCN_SUM(:,:,:,1) + ZN0_SLT(:,:,:,JSV)
-    END WHERE
+   ZCCN_SUM(:,:,:,1) =  ZCCN_SUM(:,:,:,1) + ZN0_CCN(:,:,:)
   END DO
 
 ELSE ! keep lima class intiatialization for sea salt + ccn from orilam
@@ -347,9 +264,15 @@ IF (LDUST) THEN
   CALL PPP2DUST(PSVT(:,:,:,NSV_DSTBEG:NSV_DSTEND),PRHODREF,&
                 PSIG3D=ZSIG_DST,PRG3D=ZRG_DST,PN3D=ZN0_DST)
 !
-  IDX = MIN(NMODE_DST-1,NMOD_IFN)
-  ZIFN_SUM(:,:,:,1) = ZN0_DST(:,:,:,2)  / PRHODREF(:,:,:)
-  ZIFN_SUM(:,:,:,2) = ZN0_DST(:,:,:,3)  / PRHODREF(:,:,:)
+  DO JSV=1,NMODE_DST
+    ZU(:,:,:)=LOG(ZIFNRADIUS/ZRG_DST(:,:,:,JSV)) / (SQRT(2.)*LOG(ZSIG_DST(:,:,:,JSV)))
+    ZN0_DST(:,:,:,JSV) = 0.5*ZN0_DST(:,:,:,JSV) * (1 - ERFA(ZU(:,:,:)))
+! #/m3 --> #/kg
+    ZN0_DST(:,:,:,JSV) = ZN0_DST(:,:,:,JSV) / PRHODREF(:,:,:)
+! IFN_FREE initialization (all dusts)
+    ZIFN_SUM(:,:,:,1) = ZIFN_SUM(:,:,:,1) + ZN0_DST(:,:,:,JSV)
+
+  END DO
 
 ELSE ! keep lima class intiatialization
    IF (NMOD_IFN.GE.1) &
@@ -368,5 +291,22 @@ IF (NMOD_IFN .GE. 1) THEN
       PSVT(:,:,:,NSV_LIMA_IFN_FREE+JI-1)   = MAX(ZIFN_SUM(:,:,:,JI) - PSVT(:,:,:,NSV_LIMA_IFN_NUCL+JI-1), 0.)
    END DO
 END IF
+!
+CONTAINS
+
+FUNCTION ERFA(X) RESULT(PERF)
+USE MODI_ERF
+REAL, DIMENSION(:,:,:), INTENT(IN) :: X
+REAL, DIMENSION(SIZE(X,1),SIZE(X,2),SIZE(X,3)) :: PERF
+INTEGER :: II,IJ,IK
+DO II=1,SIZE(X,1)
+DO IJ=1,SIZE(X,2)
+DO IK=1,SIZE(X,3)
+  PERF(II,IJ,IK) = erf(X(II,IJ,IK))
+ENDDO
+ENDDO
+ENDDO
+END FUNCTION ERFA
+
 !
 END SUBROUTINE AER2LIMA
diff --git a/src/MNH/mode_aero_psd.f90 b/src/MNH/mode_aero_psd.f90
index f03bdfcee1b9b84623a350d908857a96eff8ec4d..a5bf879e03c1d2b05586181bbb3ee903065d891c 100644
--- a/src/MNH/mode_aero_psd.f90
+++ b/src/MNH/mode_aero_psd.f90
@@ -257,7 +257,8 @@ END IF
 
 IF (LVARSIGI) THEN ! set M6 variable standard deviation
   IF ((CPROGRAM=="REAL  ").OR.(CPROGRAM=="IDEAL ")) THEN
-  ZM(:,:,:,3)= ZM(:,:,:,1) * (ZINIRADIUSJ**6)*EXP(18. * LOG(XINISIGJ)**2)
+  ZM(:,:,:,3)= ZM(:,:,:,1) * (ZINIRADIUSI**6)*EXP(18. * LOG(XINISIGI)**2)
+  ZSIGMA(:,:,:) = XINISIGI
   ELSE
   ZM(:,:,:,3) = MAX(ZSV(:,:,:,JP_CH_M6i), XMNH_TINY)
 
@@ -287,6 +288,7 @@ END IF
 IF (LVARSIGJ) THEN ! set M6 variable standard deviation
   IF ((CPROGRAM=="REAL  ").OR.(CPROGRAM=="IDEAL ")) THEN
   ZM(:,:,:,6)= ZM(:,:,:,4) * (ZINIRADIUSJ**6)*EXP(18. * LOG(XINISIGJ)**2)
+  ZSIGMA(:,:,:) = XINISIGJ
   ELSE
   ZM(:,:,:,6) = MAX(ZSV(:,:,:,JP_CH_M6j), XMNH_TINY)
 
@@ -313,7 +315,6 @@ ELSE ! fixed standard deviation
   IF(PRESENT(PSIG3D)) PSIG3D(:,:,:,2) = XINISIGJ
 END IF
 
-
 !-------------------------------------------------------------------------------
 !
 !*       6    calculate modal parameters from moments
diff --git a/src/MNH/saltcamsn.f90 b/src/MNH/saltcamsn.f90
index 8e16d07f19c8afda78d5c2114fab13b8e9c116ab..f569a4b5c72562d9ffb522c10ca49f0c1d3a6748 100644
--- a/src/MNH/saltcamsn.f90
+++ b/src/MNH/saltcamsn.f90
@@ -161,14 +161,14 @@ ZMASS(:,:,:,5) = (PMASSCAMS(:,:,:,3) * RATIO_6) + ZMASS(:,:,:,5) ! Attribution M
 
 !========================================================
 ! Adjust the mass / SSA emissions after a few hours
-ZMASS(:,:,:,1) = MAX(ZMASS(:,:,:,1) * 0.3, 1E-18)
-ZMASS(:,:,:,2) = MAX(ZMASS(:,:,:,2) * 0.1, 1E-17)
-ZMASS(:,:,:,3) = MAX(ZMASS(:,:,:,3) * 0.5, 1E-16)
-ZMASS(:,:,:,4) = MAX(ZMASS(:,:,:,4) * 0.3, 1E-15)
-ZMASS(:,:,:,5) = MAX(ZMASS(:,:,:,5) * 0.1, 1E-14) 
+ZMASS(:,:,:,1) = MAX(ZMASS(:,:,:,1), 1E-18)
+ZMASS(:,:,:,2) = MAX(ZMASS(:,:,:,2), 1E-17)
+ZMASS(:,:,:,3) = MAX(ZMASS(:,:,:,3), 1E-16)
+ZMASS(:,:,:,4) = MAX(ZMASS(:,:,:,4), 1E-15)
+ZMASS(:,:,:,5) = MAX(ZMASS(:,:,:,5), 1E-14) 
 IF (NMODE_SLT >= 6) ZMASS(:,:,:,6) = MAX(ZMASS(:,:,:,5) * 0.1, 1E-14)
-IF (NMODE_SLT >= 7) ZMASS(:,:,:,7) = MAX(ZMASS(:,:,:,5) * 0.1, 1E-14)
-IF (NMODE_SLT >= 8) ZMASS(:,:,:,8) = MAX(ZMASS(:,:,:,5) * 0.1, 1E-14)
+IF (NMODE_SLT >= 7) ZMASS(:,:,:,7) = MAX(ZMASS(:,:,:,5) * 0.01, 1E-14)
+IF (NMODE_SLT >= 8) ZMASS(:,:,:,8) = MAX(ZMASS(:,:,:,5) * 0.001, 1E-14)
 
 !========================================================
 
diff --git a/src/PHYEX/micro/mode_init_aerosol_properties.f90 b/src/PHYEX/micro/mode_init_aerosol_properties.f90
index 26c8babf6de20304a71d5d6fe3e0f6672348c288..d6920ff167d96a8bd1ef1b10ccccf9b50f7ff21a 100644
--- a/src/PHYEX/micro/mode_init_aerosol_properties.f90
+++ b/src/PHYEX/micro/mode_init_aerosol_properties.f90
@@ -165,7 +165,7 @@ IF (LORILAM) THEN   ! for sulphates and hydrophilic aerosols
   XRHOI(JP_AER_H2O) = 1.0e3   ! water
   XRHOI(JP_AER_DST) = XDENSITY_DUST   ! water
 
-  ! assumption: we choose to put sulfates in mode J and hydrophilics compounds in mode I
+  ! assumption: we choose to put sulfates and hydrophilics compounds in mode J (accumulation)
   IF (CRGUNIT=="MASS") THEN
   RCCN(2)   = XINIRADIUSJ * EXP(-3.*(LOG(XINISIGJ))**2) * 1E-6 ! Sulfates
   RCCN(3)   = XINIRADIUSJ * EXP(-3.*(LOG(XINISIGJ))**2) * 1E-6 ! Hydrophilic
@@ -177,7 +177,7 @@ IF (LORILAM) THEN   ! for sulphates and hydrophilic aerosols
   LOGSIGCCN(2) = LOG(XINISIGJ)
   LOGSIGCCN(3) = LOG(XINISIGJ)
   RHOCCN(2)    = XRHOI(JP_AER_SO4) 
-  RHOCCN(3)    = XRHOI(JP_AER_BC)
+  RHOCCN(3)    = XRHOI(JP_AER_OC)
 END IF
 IF (LSALT) THEN ! for sea salts
   JMOD = 1
@@ -341,6 +341,14 @@ IF ( NMOD_IFN .GE. 1 ) THEN
          XMDIAM_IFN = (/ 0.05E-6 , 3.E-6 , 0.016E-6 , 0.016E-6 /)
          XSIGMA_IFN = (/ 2.4 , 1.6 , 2.5 , 2.5 /)
          XRHO_IFN   = (/ 2650. , 2650. , 1000. , 1000. /)
+   CASE ('CAMS_PT')
+      NSPECIE = 4 ! Dust, Hydrophilic mixture , BC, BIO+(O)
+      IF (.NOT.(ASSOCIATED(XMDIAM_IFN))) CALL PARAM_LIMA_ALLOCATE('XMDIAM_IFN', NSPECIE)
+      IF (.NOT.(ASSOCIATED(XSIGMA_IFN))) CALL PARAM_LIMA_ALLOCATE('XSIGMA_IFN', NSPECIE)
+      IF (.NOT.(ASSOCIATED(XRHO_IFN)))   CALL PARAM_LIMA_ALLOCATE('XRHO_IFN', NSPECIE)
+      XMDIAM_IFN = (/0.09E-6, 3.0E-6, 0.025E-6, 0.2E-6/)
+      XSIGMA_IFN = (/1.75, 2.15, 2.0, 1.6 /)
+      XRHO_IFN   = (/1800., 2600., 1000., 1500./) 
    CASE ('CAMS_JPP')
 ! sea-salt, sulfate, hydrophilic (GADS data)
 ! 2 species, dust-metallic and hydrophobic (as BC)
@@ -397,17 +405,13 @@ IF ( NMOD_IFN .GE. 1 ) THEN
    ENDSELECT
 
 IF (LORILAM) THEN
-  IF (LDUST) THEN
-    IDX=MIN(NMODE_DST-1,NMOD_IFN)
-  ELSE
-    IDX= 2
-  END IF
+  IDX=1
 
   IF ((IDX+1) .LE. NMOD_IFN) THEN
   IF (CRGUNIT=="MASS") THEN
-   XMDIAM_IFN(IDX+1)   = 2 * XINIRADIUSI * EXP(-3.*(LOG(XINISIGI))**2) * 1E-6
+   XMDIAM_IFN(IDX+1)   = 2 * XINIRADIUSJ * EXP(-3.*(LOG(XINISIGJ))**2) * 1E-6
   ELSE
-   XMDIAM_IFN(IDX+1)   = 2 * XINIRADIUSI * 1E-6
+   XMDIAM_IFN(IDX+1)   = 2 * XINIRADIUSJ * 1E-6
   END IF
   XRHO_IFN(IDX+1)    = XRHOI(JP_AER_BC)
   XSIGMA_IFN(IDX+1)  = XINISIGI
@@ -423,28 +427,18 @@ IF (LORILAM) THEN
   XSIGMA_IFN(IDX+2)  = XINISIGJ
   END IF
 END IF
-
 IF (LDUST) THEN
-  DO JMOD = 1,NMODE_DST
-    IF (CRGUNITD=="MASS") THEN
-     ZINIRADIUS(JMOD) = XINIRADIUS(JPDUSTORDER(JMOD)) * EXP(-3.*(LOG(XINISIG(JPDUSTORDER(JMOD))))**2)
-    ELSE
-     ZINIRADIUS(JMOD) = XINIRADIUS(JPDUSTORDER(JMOD))
-    END IF
-  ENDDO
-  IDX = MIN(NMODE_DST-1,NMOD_IFN)
-  DO JMOD = 1,IDX
-   IF (JMOD==1) THEN
-     XMDIAM_IFN(JMOD) = 2 * ZINIRADIUS(2) * 1E-6
-     XSIGMA_IFN(JMOD) = XINISIG(JPDUSTORDER(2))
+   IF (CRGUNITD=="MASS") THEN
+     XMDIAM_IFN(1) = 2.*XINIRADIUS(JPDUSTORDER(3))*EXP(-3.*(LOG(XINISIG(JPDUSTORDER(3))))**2)
     ELSE
-     XMDIAM_IFN(JMOD) = 2 * ZINIRADIUS(3) * 1E-6 
-     XSIGMA_IFN(JMOD) = XINISIG(JPDUSTORDER(3))
+     XMDIAM_IFN(1) = 2.*XINIRADIUS(JPDUSTORDER(3))
     END IF
+  XSIGMA_IFN(1)  = XINISIG(JPDUSTORDER(3))
+  XRHO_IFN(1) = XDENSITY_DUST
+  
 
-  ENDDO
 END IF
-!
+
 ! internal mixing
 !
    IF (.NOT.(ASSOCIATED(XFRAC))) CALL PARAM_LIMA_ALLOCATE('XFRAC', NSPECIE,NMOD_IFN)
@@ -458,11 +452,15 @@ END IF
       XFRAC(3,:)=1.
    CASE ('O')
       XFRAC(4,:)=1.
-   CASE ('TULP')
-      XFRAC(1,1)=1.
-      XFRAC(1,2)=1.
-      XFRAC(3,3)=0.5
-      XFRAC(4,3)=0.5
+   CASE ('CAMS_PT')
+      XFRAC(1,1)=0.99
+      XFRAC(2,1)=0.01
+      XFRAC(3,1)=0.0
+      XFRAC(4,1)=0.0
+      XFRAC(1,2)=0.
+      XFRAC(2,2)=0.
+      XFRAC(3,2)=0.5
+      XFRAC(4,2)=0.5
    CASE ('CAMS')
       XFRAC(1,1)=0.99
       XFRAC(2,1)=0.01