diff --git a/src/MNH/ini_lesn.f90 b/src/MNH/ini_lesn.f90
index d2c4d2801d397f62740d6d97973416325b3abae3..538042c95e6cf121c954ba5f23647acf5a5ea90a 100644
--- a/src/MNH/ini_lesn.f90
+++ b/src/MNH/ini_lesn.f90
@@ -1700,6 +1700,10 @@ ALLOCATE(XLES_CF2tot    (NLES_TIMES))
 ALLOCATE(XLES_LWP       (NLES_TIMES))
 ALLOCATE(XLES_LWPVAR    (NLES_TIMES))
 ALLOCATE(XLES_RWP       (NLES_TIMES))
+ALLOCATE(XLES_IWP       (NLES_TIMES))
+ALLOCATE(XLES_SWP       (NLES_TIMES))
+ALLOCATE(XLES_GWP       (NLES_TIMES))
+ALLOCATE(XLES_HWP       (NLES_TIMES))
 ALLOCATE(XLES_INT_TKE   (NLES_TIMES))
 ALLOCATE(XLES_ZMAXCF    (NLES_TIMES))
 ALLOCATE(XLES_ZMAXCF2   (NLES_TIMES))  
@@ -1730,6 +1734,10 @@ XLES_CF2tot    = XUNDEF
 XLES_LWP       = XUNDEF
 XLES_LWPVAR    = XUNDEF
 XLES_RWP       = XUNDEF
+XLES_IWP       = XUNDEF
+XLES_SWP       = XUNDEF
+XLES_GWP       = XUNDEF
+XLES_HWP       = XUNDEF
 XLES_INT_TKE   = XUNDEF
 XLES_ZMAXCF    = XUNDEF
 XLES_ZMAXCF2   = XUNDEF  
diff --git a/src/MNH/lesn.f90 b/src/MNH/lesn.f90
index dce40e30c4946e0cb5da6d26c392c464e13bdc8b..139d5aa95096f649ebf8b229ec0f920471061c95 100644
--- a/src/MNH/lesn.f90
+++ b/src/MNH/lesn.f90
@@ -153,6 +153,7 @@ REAL, DIMENSION(:),       ALLOCATABLE :: ZLES_MEAN_DRtDZ! drt/dz mean    on LES
 REAL, DIMENSION(:),       ALLOCATABLE :: ZLES_MEAN_DTHDZ! dth/dz mean    on LES vertical grid
 REAL, DIMENSION(:,:),     ALLOCATABLE :: ZLES_MEAN_DSVDZ! drt/dz mean    on LES vertical grid
 REAL, DIMENSION(:,:),     ALLOCATABLE :: ZLWP_LES, ZRWP_LES, ZTKET_LES
+REAL, DIMENSION(:,:),     ALLOCATABLE :: ZIWP_LES, ZSWP_LES, ZGWP_LES, ZHWP_LES
 REAL, DIMENSION(:,:),     ALLOCATABLE :: ZINDCLD2D  !
 REAL, DIMENSION(:,:),     ALLOCATABLE :: ZINDCLD2D2 !
 REAL, DIMENSION(:,:),     ALLOCATABLE :: ZLWP_ANOM ! lwp anomaly
@@ -323,23 +324,31 @@ ELSE
 END IF
 IF (LUSERI) THEN
   ALLOCATE(ZRI_LES    (IIU,IJU,NLES_K))
+  ALLOCATE(ZIWP_LES(IIU,IJU))
 ELSE
   ALLOCATE(ZRI_LES    (0,0,0))
+  ALLOCATE(ZIWP_LES(0,0))
 END IF
 IF (LUSERS) THEN
   ALLOCATE(ZRS_LES  (IIU,IJU,NLES_K))
+  ALLOCATE(ZSWP_LES(IIU,IJU))
 ELSE
   ALLOCATE(ZRS_LES  (0,0,0))
+  ALLOCATE(ZSWP_LES(0,0))
 END IF
 IF (LUSERG) THEN
   ALLOCATE(ZRG_LES  (IIU,IJU,NLES_K))
+  ALLOCATE(ZGWP_LES(IIU,IJU))
 ELSE
   ALLOCATE(ZRG_LES  (0,0,0))
+  ALLOCATE(ZGWP_LES(0,0))
 END IF
 IF (LUSERH) THEN
   ALLOCATE(ZRH_LES  (IIU,IJU,NLES_K))
+  ALLOCATE(ZHWP_LES(IIU,IJU))
 ELSE
   ALLOCATE(ZRH_LES  (0,0,0))
+  ALLOCATE(ZHWP_LES(0,0))
 END IF
 IF (NSV>0) THEN
   ALLOCATE(ZSV_LES  (IIU,IJU,NLES_K,NSV))
@@ -556,18 +565,46 @@ ENDIF
 IF (LUSERI) THEN
   IRR = IRR + 1
   CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRI_LES )
+  ZIWP_LES(:,:)=0.
+  DO JK=1,NLES_K-1
+    ZIWP_LES(:,:) = ZIWP_LES(:,:) + (ZZZ_LES(:,:,JK+1)-ZZZ_LES(:,:,JK))      &
+                    * (ZRI_LES(:,:,JK)) * ZRHO_LES(:,:,JK)
+  END DO
+  CALL LES_MEAN_ll ( ZIWP_LES, LLES_CURRENT_CART_MASK(:,:,1),               &
+                    XLES_IWP(NLES_CURRENT_TCOUNT)     )
 END IF
 IF (LUSERS) THEN
   IRR = IRR + 1
   CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRS_LES )
+  ZSWP_LES(:,:)=0.
+  DO JK=1,NLES_K-1
+    ZSWP_LES(:,:) = ZSWP_LES(:,:) + (ZZZ_LES(:,:,JK+1)-ZZZ_LES(:,:,JK))      &
+                    * (ZRS_LES(:,:,JK)) * ZRHO_LES(:,:,JK)
+  END DO
+  CALL LES_MEAN_ll ( ZSWP_LES, LLES_CURRENT_CART_MASK(:,:,1),               &
+                    XLES_SWP(NLES_CURRENT_TCOUNT)     )
 END IF
 IF (LUSERG) THEN
   IRR = IRR + 1
   CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRG_LES )
+  ZGWP_LES(:,:)=0.
+  DO JK=1,NLES_K-1
+    ZGWP_LES(:,:) = ZGWP_LES(:,:) + (ZZZ_LES(:,:,JK+1)-ZZZ_LES(:,:,JK))      &
+                    * (ZRG_LES(:,:,JK)) * ZRHO_LES(:,:,JK)
+  END DO
+  CALL LES_MEAN_ll ( ZGWP_LES, LLES_CURRENT_CART_MASK(:,:,1),               &
+                    XLES_GWP(NLES_CURRENT_TCOUNT)     )
 END IF
 IF (LUSERH) THEN
   IRR = IRR + 1
   CALL LES_VER_INT(     XRT(:,:,:,IRR)  ,ZRH_LES )
+  ZHWP_LES(:,:)=0.
+  DO JK=1,NLES_K-1
+    ZHWP_LES(:,:) = ZHWP_LES(:,:) + (ZZZ_LES(:,:,JK+1)-ZZZ_LES(:,:,JK))      &
+                    * (ZRH_LES(:,:,JK)) * ZRHO_LES(:,:,JK)
+  END DO
+  CALL LES_MEAN_ll ( ZHWP_LES, LLES_CURRENT_CART_MASK(:,:,1),               &
+                    XLES_HWP(NLES_CURRENT_TCOUNT)     )
 END IF
 IF (NSV>0) THEN
   DO JSV=1,NSV
@@ -986,6 +1023,10 @@ DEALLOCATE(ZRR_LES  )
 DEALLOCATE(ZZZ_LES)
 DEALLOCATE(ZLWP_LES )
 DEALLOCATE(ZRWP_LES )
+DEALLOCATE(ZIWP_LES )
+DEALLOCATE(ZSWP_LES )
+DEALLOCATE(ZGWP_LES )
+DEALLOCATE(ZHWP_LES )
 DEALLOCATE(ZINPRR3D_LES)
 DEALLOCATE(ZEVAP3D_LES)
 DEALLOCATE(ZRI_LES  )
diff --git a/src/MNH/modd_lesn.f90 b/src/MNH/modd_lesn.f90
index 2dc9a03c5dffd39e184349e1037a765344c756a3..1bf463e9edb2527279913cc84bde71c915cb35bf 100644
--- a/src/MNH/modd_lesn.f90
+++ b/src/MNH/modd_lesn.f90
@@ -563,6 +563,10 @@ TYPE LES_t
   REAL, DIMENSION(:), POINTER :: XLES_LWP=>NULL()       ! lwpath
   REAL, DIMENSION(:), POINTER :: XLES_LWPVAR=>NULL()    ! lwpath variance
   REAL, DIMENSION(:), POINTER :: XLES_RWP=>NULL()       ! rain w path
+  REAL, DIMENSION(:), POINTER :: XLES_IWP=>NULL()       ! ice  w path
+  REAL, DIMENSION(:), POINTER :: XLES_SWP=>NULL()       ! snow w path
+  REAL, DIMENSION(:), POINTER :: XLES_GWP=>NULL()       ! graupel w path
+  REAL, DIMENSION(:), POINTER :: XLES_HWP=>NULL()       ! hail w path
   REAL, DIMENSION(:), POINTER :: XLES_INT_TKE=>NULL()   ! vert. integratedtke
   REAL, DIMENSION(:), POINTER :: XLES_INPRR=>NULL()     ! inst precip rate
   REAL, DIMENSION(:), POINTER :: XLES_RAIN_INPRR=>NULL()!flux prec rainy cell
@@ -1007,6 +1011,10 @@ REAL, DIMENSION(:), POINTER :: XLES_CF2tot=>NULL()
 REAL, DIMENSION(:), POINTER :: XLES_LWP=>NULL()
 REAL, DIMENSION(:), POINTER :: XLES_LWPVAR=>NULL()
 REAL, DIMENSION(:), POINTER :: XLES_RWP=>NULL()
+REAL, DIMENSION(:), POINTER :: XLES_IWP=>NULL()
+REAL, DIMENSION(:), POINTER :: XLES_SWP=>NULL()
+REAL, DIMENSION(:), POINTER :: XLES_GWP=>NULL()
+REAL, DIMENSION(:), POINTER :: XLES_HWP=>NULL()
 REAL, DIMENSION(:), POINTER :: XLES_INT_TKE=>NULL()
 REAL, DIMENSION(:), POINTER :: XLES_INPRR=>NULL()
 REAL, DIMENSION(:), POINTER :: XLES_RAIN_INPRR=>NULL()
@@ -1423,6 +1431,10 @@ LES_MODEL(KFROM)%XLES_CF2tot=>XLES_CF2tot
 LES_MODEL(KFROM)%XLES_LWP=>XLES_LWP
 LES_MODEL(KFROM)%XLES_LWPVAR=>XLES_LWPVAR
 LES_MODEL(KFROM)%XLES_RWP=>XLES_RWP
+LES_MODEL(KFROM)%XLES_IWP=>XLES_IWP
+LES_MODEL(KFROM)%XLES_SWP=>XLES_SWP
+LES_MODEL(KFROM)%XLES_GWP=>XLES_GWP
+LES_MODEL(KFROM)%XLES_HWP=>XLES_HWP
 LES_MODEL(KFROM)%XLES_INT_TKE=>XLES_INT_TKE
 LES_MODEL(KFROM)%XLES_INPRR=>XLES_INPRR
 LES_MODEL(KFROM)%XLES_RAIN_INPRR=>XLES_RAIN_INPRR
@@ -1840,6 +1852,10 @@ XLES_CF2tot=>LES_MODEL(KTO)%XLES_CF2tot
 XLES_LWP=>LES_MODEL(KTO)%XLES_LWP
 XLES_LWPVAR=>LES_MODEL(KTO)%XLES_LWPVAR
 XLES_RWP=>LES_MODEL(KTO)%XLES_RWP
+XLES_IWP=>LES_MODEL(KTO)%XLES_IWP
+XLES_SWP=>LES_MODEL(KTO)%XLES_SWP
+XLES_GWP=>LES_MODEL(KTO)%XLES_GWP
+XLES_HWP=>LES_MODEL(KTO)%XLES_HWP
 XLES_INT_TKE=>LES_MODEL(KTO)%XLES_INT_TKE
 XLES_INPRR=>LES_MODEL(KTO)%XLES_INPRR
 XLES_RAIN_INPRR=>LES_MODEL(KTO)%XLES_RAIN_INPRR
diff --git a/src/MNH/write_lesn.f90 b/src/MNH/write_lesn.f90
index 30952eacd3ff159a5f8f5a9ab6fb5af593b7b75b..8b03a32f2d7a1ee74ff2ac059a14c05a8dbb503b 100644
--- a/src/MNH/write_lesn.f90
+++ b/src/MNH/write_lesn.f90
@@ -1322,6 +1322,22 @@ IF (HLES_AVG==' ' .OR. HLES_AVG=='A') THEN
   CALL LES_DIACHRO_SURF("RWP    ",  &
      "Rain Water path","kg/m2",XLES_RWP,HLES_AVG)   
 
+  IF (LUSERI) &
+  CALL LES_DIACHRO_SURF("IWP    ",  &
+     "Ice Water path","kg/m2",XLES_IWP,HLES_AVG)   
+
+  IF (LUSERS) &
+  CALL LES_DIACHRO_SURF("SWP    ",  &
+     "Snow Water path","kg/m2",XLES_SWP,HLES_AVG)   
+
+  IF (LUSERG) &
+  CALL LES_DIACHRO_SURF("GWP    ",  &
+     "Graupel Water path","kg/m2",XLES_GWP,HLES_AVG)   
+
+  IF (LUSERH) &
+  CALL LES_DIACHRO_SURF("HWP    ",  &
+     "Hail Water path","kg/m2",XLES_HWP,HLES_AVG)   
+
   IF (LUSERR) &
   CALL LES_DIACHRO_SURF("PREC_FRAC    ",  &
   "Fract of col where rain at surface","",XLES_PRECFR,HLES_AVG)