From b91b4caa0fcc81da6d8dde3b5cb30d24a359d27e Mon Sep 17 00:00:00 2001
From: Gaelle Tanguy <gaelle.tanguy@meteo.fr>
Date: Mon, 27 Jul 2015 13:51:36 +0000
Subject: [PATCH] Gaelle 27/07/2015 : add microphysic diagnostics for
 aircaraft,ballon and profiler

---
 src/MNH/aircraft_balloon.f90       |  57 ++++++++-
 src/MNH/aircraft_balloon_evol.f90  | 178 ++++++++++++++++++----------
 src/MNH/diag.f90                   |   8 +-
 src/MNH/ini_aircraft_balloon.f90   |  20 ++++
 src/MNH/ini_posprofilern.f90       |  34 ++++++
 src/MNH/ini_profilern.f90          |  15 +++
 src/MNH/modd_aircraft_balloon.f90  |  11 ++
 src/MNH/modd_type_profiler.f90     |  21 +++-
 src/MNH/modeln.f90                 |  45 +++++--
 src/MNH/profilern.f90              | 183 ++++++++++++++++++++++++++---
 src/MNH/rain_ice.f90               | 110 ++++++++++++++---
 src/MNH/resolved_cloud.f90         |  48 ++++++--
 src/MNH/write_aircraft_balloon.f90 |  90 +++++++++++++-
 src/MNH/write_profilern.f90        |  99 +++++++++++++++-
 14 files changed, 795 insertions(+), 124 deletions(-)

diff --git a/src/MNH/aircraft_balloon.f90 b/src/MNH/aircraft_balloon.f90
index 7f15a0535..972dfeb9f 100644
--- a/src/MNH/aircraft_balloon.f90
+++ b/src/MNH/aircraft_balloon.f90
@@ -19,7 +19,8 @@ INTERFACE
                                   PXHAT, PYHAT, PZ,                     &
                                   PMAP, PLONOR, PLATOR,                 &
                                   PU, PV, PW, PP, PTH, PR, PSV, PTKE,   &
-                                  PTS, PRHODREF, PCIT, PSEA             )
+                                  PTS, PRHODREF, PCIT, PSPEEDC, PSPEEDR,&
+                                  PSPEEDS, PSPEEDG, PSPEEDH, PSEA)
 !
 USE MODD_TYPE_DATE
 CHARACTER(LEN=*),         INTENT(IN)     :: HLUOUT ! output listing
@@ -46,6 +47,11 @@ REAL, DIMENSION(:,:),     INTENT(IN)     :: PTS    ! surface temperature
 ! ++ OC
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PRHODREF ! dry air density of the reference state
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PCIT     ! pristine ice concentration
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDC ! Cloud sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDR ! Rain sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDS ! Snow sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDG ! Graupel sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDH ! Hail sedimentation speed
 REAL, DIMENSION(:,:),INTENT(IN) :: PSEA
 ! -- OC
 !
@@ -63,7 +69,8 @@ END MODULE MODI_AIRCRAFT_BALLOON
                                   PXHAT, PYHAT, PZ,                     &
                                   PMAP, PLONOR, PLATOR,                 &
                                   PU, PV, PW, PP, PTH, PR, PSV, PTKE,   &
-                                  PTS, PRHODREF, PCIT, PSEA             )
+                                  PTS, PRHODREF, PCIT, PSPEEDC, PSPEEDR,&
+                                  PSPEEDS, PSPEEDG, PSPEEDH, PSEA)
 !     ###################################################################
 !
 !
@@ -96,6 +103,8 @@ END MODULE MODI_AIRCRAFT_BALLOON
 !!     Original 15/05/2000
 !!
 !!              March, 2008 (P.Lacarrere) Add 3D fluxes
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !! --------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
@@ -138,6 +147,11 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PTKE   ! turbulent kinetic energy
 REAL, DIMENSION(:,:),     INTENT(IN)     :: PTS    ! surface temperature
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PRHODREF ! dry air density of the reference state
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PCIT     ! pristine ice concentration
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDC ! Cloud sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDR ! Rain sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDS ! Snow sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDG ! Graupel sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDH ! Hail sedimentation speed
 REAL, DIMENSION(:,:),INTENT(IN) :: PSEA
 !
 !-------------------------------------------------------------------------------
@@ -157,54 +171,63 @@ IF (TBALLOON1%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,                    &
                            TBALLOON1, PSEA                                            )
 ENDIF
 IF (TBALLOON2%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TBALLOON2, PSEA                                            )
 ENDIF
 IF (TBALLOON3%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TBALLOON3, PSEA                                            )
 ENDIF
 IF (TBALLOON4%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TBALLOON4, PSEA                                            )
 ENDIF
 IF (TBALLOON5%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TBALLOON5, PSEA                                            )
 ENDIF
 IF (TBALLOON6%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TBALLOON6, PSEA                                            )
 ENDIF
 IF (TBALLOON7%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TBALLOON7, PSEA                                            )
 ENDIF
 IF (TBALLOON8%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TBALLOON8, PSEA                                            )
 ENDIF
 IF (TBALLOON9%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TBALLOON9, PSEA                                            )
 ENDIF
 !
@@ -212,180 +235,210 @@ IF (TAIRCRAFT1%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT1, PSEA                                           )
 ENDIF
 IF (TAIRCRAFT2%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT2, PSEA                                           )
 ENDIF
 IF (TAIRCRAFT3%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT3, PSEA                                           )
 ENDIF
 IF (TAIRCRAFT4%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT4, PSEA                                           )
 ENDIF
 IF (TAIRCRAFT5%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT5, PSEA                                           )
 ENDIF
 IF (TAIRCRAFT6%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT6, PSEA                                           )
 ENDIF
 IF (TAIRCRAFT7%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT7, PSEA                                           )
 ENDIF
 IF (TAIRCRAFT8%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT8, PSEA                                           )
 ENDIF
 IF (TAIRCRAFT9%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT9, PSEA                                           )
 ENDIF
 IF (TAIRCRAFT10%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT10, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT11%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT11, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT12%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT12, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT13%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT13, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT14%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT14, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT15%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT15, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT16%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT16, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT17%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT17, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT18%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT18, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT19%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT19, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT20%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT20, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT21%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT21, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT22%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT22, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT23%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT23, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT24%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT24, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT25%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT25, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT26%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT26, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT27%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT27, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT28%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT28, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT29%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT29, PSEA                                          )
 ENDIF
 IF (TAIRCRAFT30%NMODEL /= 0) THEN
 CALL AIRCRAFT_BALLOON_EVOL(HLUOUT, PTSTEP, TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,        &
                            PXHAT, PYHAT, PZ, PMAP, PLONOR, PLATOR,                    &
                            PU, PV, PW, PP, PTH, PR, PSV, PTKE, PTS, PRHODREF, PCIT,   &
+                           PSPEEDC,PSPEEDR,PSPEEDS,PSPEEDG,PSPEEDH,           &
                            TAIRCRAFT30, PSEA                                          )
 ENDIF
 !
diff --git a/src/MNH/aircraft_balloon_evol.f90 b/src/MNH/aircraft_balloon_evol.f90
index e4c5267af..39ae67b11 100644
--- a/src/MNH/aircraft_balloon_evol.f90
+++ b/src/MNH/aircraft_balloon_evol.f90
@@ -20,6 +20,8 @@ INTERFACE
                        PMAP, PLONOR, PLATOR,                 &
                        PU, PV, PW, PP, PTH, PR, PSV, PTKE,   &
                        PTS, PRHODREF, PCIT,                  &
+                       PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG,   &
+                       PSPEEDH,                              &
                        TPFLYER, PSEA                         )
 !
 USE MODD_TYPE_DATE
@@ -48,6 +50,11 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PTKE   ! turbulent kinetic energy
 REAL, DIMENSION(:,:),     INTENT(IN)     :: PTS    ! surface temperature
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PRHODREF ! dry air density of the reference state
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PCIT     ! pristine ice concentration
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDC  ! Cloud sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDR  ! Rain sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDS  ! Snow sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDG  ! Graupel sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDH  ! Hail sedimentation speed
 !
 TYPE(FLYER),              INTENT(INOUT)  :: TPFLYER! balloon/aircraft
 REAL, DIMENSION(:,:),     INTENT(IN)     :: PSEA
@@ -67,6 +74,8 @@ END MODULE MODI_AIRCRAFT_BALLOON_EVOL
                        PMAP, PLONOR, PLATOR,                 &
                        PU, PV, PW, PP, PTH, PR, PSV, PTKE,   &
                        PTS, PRHODREF, PCIT,                  &
+                       PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG,   &
+                       PSPEEDH,                              &                       
                        TPFLYER, PSEA                         )
 !     ########################################################
 !
@@ -131,7 +140,8 @@ END MODULE MODI_AIRCRAFT_BALLOON_EVOL
 !!     May, 2014 (O.Caumont) modify RARE for hydrometeors containing ice
 !!                           add bright band calculation for RARE
 !!     Feb, 2015 (C.Lac) Correction to prevent aircraft crash
-!!
+!!     July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -148,7 +158,20 @@ USE MODD_TIME
 USE MODD_CONF
 USE MODD_DIAG_IN_RUN
 USE MODD_TURB_FLUX_AIRCRAFT_BALLOON
-USE MODD_RAIN_ICE_DESCR
+USE MODD_PARAM_n, ONLY : CCLOUD
+!
+USE MODD_RAIN_ICE_DESCR, ONLY: XALPHAR_I=>XALPHAR,XNUR_I=>XNUR,XLBEXR_I=>XLBEXR,&
+                               XLBR_I=>XLBR,XCCR_I=>XCCR,XBR_I=>XBR,XAR_I=>XAR,&
+                               XALPHAC_I=>XALPHAC,XNUC_I=>XNUC,&
+                               XLBC_I=>XLBC,XBC_I=>XBC,XAC_I=>XAC,&
+                               XALPHAC2_I=>XALPHAC2,XNUC2_I=>XNUC2,&
+                               XALPHAS_I=>XALPHAS,XNUS_I=>XNUS,XLBEXS_I=>XLBEXS,&
+                               XLBS_I=>XLBS,XCCS_I=>XCCS,XAS_I=>XAS,XBS_I=>XBS,XCXS_I=>XCXS,&
+                               XALPHAG_I=>XALPHAG,XNUG_I=>XNUG,XDG_I=>XDG,XLBEXG_I=>XLBEXG,&
+                               XLBG_I=>XLBG,XCCG_I=>XCCG,XAG_I=>XAG,XBG_I=>XBG,XCXG_I=>XCXG,XCG_I=>XCG,&
+                               XALPHAI_I=>XALPHAI,XNUI_I=>XNUI,XDI_I=>XDI,XLBEXI_I=>XLBEXI,&
+                               XLBI_I=>XLBI,XAI_I=>XAI,XBI_I=>XBI,XC_I_I=>XC_I,&
+                               XRTMIN_I=>XRTMIN,XCONC_LAND,XCONC_SEA
 USE MODE_FSCATTER,ONLY : QEPSW,QEPSI,BHMIE,MOMG,MG
 USE MODE_FGAU,    ONLY : GAULAG
 USE MODD_REF_n,   ONLY : XRHODREF
@@ -192,6 +215,11 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PTKE   ! turbulent kinetic energy
 REAL, DIMENSION(:,:),     INTENT(IN)     :: PTS    ! surface temperature
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PRHODREF ! dry air density of the reference state
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PCIT     ! pristine ice concentration
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDC  ! Cloud sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDR  ! Rain sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDS  ! Snow sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDG  ! Graupel sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDH  ! Hail sedimentation speed
 !
 TYPE(FLYER),              INTENT(INOUT)  :: TPFLYER! balloon/aircraft
 REAL, DIMENSION(:,:),     INTENT(IN)     :: PSEA
@@ -278,7 +306,7 @@ REAL :: ZVCOEF10    ! Z direction interpolation coefficient for II+1, IV
 REAL :: ZVCOEF11    ! Z direction interpolation coefficient for II+1, IV+1
 !
 INTEGER :: IN       ! time index
-INTEGER :: JLOOP    ! loop counter
+INTEGER :: JLOOP,JLOOP2    ! loop counter
 !
 REAL    :: ZU_BAL   ! horizontal wind speed at balloon location (along x)
 REAL    :: ZV_BAL   ! horizontal wind speed at balloon location (along y)
@@ -977,12 +1005,24 @@ IF ( TPFLYER%FLY) THEN
           TPFLYER%SV  (IN,JLOOP) = FLYER_INTERP(PSV(:,:,:,JLOOP))
         END DO
         TPFLYER%RTZ  (IN,:) = FLYER_INTERPZ(ZR(:,:,:))
-        TPFLYER%FFZ  (IN,:) = FLYER_INTERPZ(SQRT(PU**2+PV**2))                               
+        DO JLOOP=1,SIZE(PR,4)
+          TPFLYER%RZ  (IN,:,JLOOP) = FLYER_INTERPZ(PR(:,:,:,JLOOP))
+        END DO
+        TPFLYER%CIZ  (IN,:) = FLYER_INTERPZ(PCIT(:,:,:))         
+        TPFLYER%FFZ  (IN,:) = FLYER_INTERPZ(SQRT(PU**2+PV**2)) 
+        TPFLYER%CIZ  (IN,:) = FLYER_INTERPZ(PCIT(:,:,:))                               
+        TPFLYER%SPEEDCZ  (IN,:) = FLYER_INTERPZ(PSPEEDC(:,:,:))                               
+        TPFLYER%SPEEDRZ  (IN,:) = FLYER_INTERPZ(PSPEEDR(:,:,:))                               
+        TPFLYER%SPEEDSZ  (IN,:) = FLYER_INTERPZ(PSPEEDS(:,:,:))                               
+        TPFLYER%SPEEDGZ  (IN,:) = FLYER_INTERPZ(PSPEEDG(:,:,:))
         ! initialization CRARE and CRARE_ATT
         TPFLYER%CRARE(IN,:) = 0.
         TPFLYER%CRARE_ATT(IN,:) = 0.
-
-      IF (SIZE(PR,4) == 6 ) THEN ! only for ICE3
+        TPFLYER%LWCZ  (IN,:) = 0.
+        TPFLYER%IWCZ  (IN,:) = 0.
+      IF (CCLOUD=="ICE3") THEN ! only for ICE3
+        TPFLYER%LWCZ  (IN,:) = FLYER_INTERPZ((PR(:,:,:,2)+PR(:,:,:,3))*PRHODREF(:,:,:))
+        TPFLYER%IWCZ  (IN,:) = FLYER_INTERPZ((PR(:,:,:,4)+PR(:,:,:,5)+PR(:,:,:,6))*PRHODREF(:,:,:))
         ZTEMPZ(:)=FLYER_INTERPZ(PTH(II:II+1,IJ:IJ+1,:) * ZEXN(:,:,:))
         ZRHODREFZ(:)=FLYER_INTERPZ(PRHODREF(:,:,:))
         ZCIT(:)=FLYER_INTERPZ(PCIT(:,:,:))
@@ -1001,14 +1041,13 @@ IF ( TPFLYER%FLY) THEN
         CALL GAULAG(JPTS_GAULAG,ZX,ZW) ! for integration over diameters
         ! initialize minimum values
         ALLOCATE(ZRTMIN(SIZE(PR,4)+1))
-        ZRTMIN(2)=XRTMIN(2) ! cloud water over sea
-        ZRTMIN(3)=XRTMIN(3)
-        ZRTMIN(4)=XRTMIN(4)
+        ZRTMIN(2)=XRTMIN_I(2) ! cloud water over sea
+        ZRTMIN(3)=XRTMIN_I(3)
+        ZRTMIN(4)=XRTMIN_I(4)
         ZRTMIN(5)=1E-10
-        ZRTMIN(6)=XRTMIN(6)
-        ZRTMIN(7)=XRTMIN(2) ! cloud water over land
+        ZRTMIN(6)=XRTMIN_I(6)
+        ZRTMIN(7)=XRTMIN_I(2) ! cloud water over land        ZRTMIN(2)=XRTMIN(2) ! cloud water over sea
         ! compute cloud radar reflectivity from vertical profiles of temperature and mixing ratios
-!        print *,"cest parti !!!"
         DO JK=1,IKU
           QMW=SQRT(QEPSW(ZTEMPZ(JK),XLIGHTSPEED/XLAM_CRAD))
           QMI=SQRT(QEPSI(ZTEMPZ(JK),XLIGHTSPEED/XLAM_CRAD))
@@ -1016,69 +1055,69 @@ IF ( TPFLYER%FLY) THEN
             IF(ZRZ(JK,JLOOP)>ZRTMIN(JLOOP).AND.(JLOOP.NE.4.OR.ZCIT(JK)>0.)) THEN
               SELECT CASE(JLOOP)
                 CASE(2) ! cloud water over sea
-                  ZA=XAC
-                  ZB=XBC
-                  ZCC=XCONC_SEA
-                  ZCX=0.
-                  ZALPHA=XALPHAC2
-                  ZNU=XNUC2
-                  ZLBEX=1.0/(ZCX-ZB)
-                  ZLB=( ZA*ZCC*MOMG(ZALPHA,ZNU,ZB) )**(-ZLBEX)
+                    ZA=XAC_I
+                    ZB=XBC_I
+                    ZCC=XCONC_SEA
+                    ZCX=0.
+                    ZALPHA=XALPHAC2_I
+                    ZNU=XNUC2_I
+                    ZLBEX=1.0/(ZCX-ZB)
+                    ZLB=( ZA*ZCC*MOMG(ZALPHA,ZNU,ZB) )**(-ZLBEX)
                 CASE(3) ! rain water
-                  ZA=XAR
-                  ZB=XBR
-                  ZCC=XCCR
-                  ZCX=-1.
-                  ZALPHA=1.
-                  ZNU=XNUR
-                  ZLB=XLBR
-                  ZLBEX=XLBEXR
+                    ZA=XAR_I
+                    ZB=XBR_I
+                    ZCC=XCCR_I
+                    ZCX=-1.
+                    ZALPHA=XALPHAR_I
+                    ZNU=XNUR_I
+                    ZLB=XLBR_I
+                    ZLBEX=XLBEXR_I
                 CASE(4) ! pristine ice
-                  ZA=XAI
-                  ZB=XBI
-                  ZCC=ZCIT(JK)
-                  ZCX=0.
-                  ZALPHA=XALPHAI
-                  ZNU=XNUI
-                  ZLBEX=XLBEXI
-                  ZLB=XLBI*ZCC**(-ZLBEX) ! because ZCC not included in XLBI
-                  ZFW=0
+                    ZA=XAI_I
+                    ZB=XBI_I
+                    ZCC=ZCIT(JK)
+                    ZCX=0.
+                    ZALPHA=XALPHAI_I
+                    ZNU=XNUI_I
+                    ZLBEX=XLBEXI_I
+                    ZLB=XLBI_I*ZCC**(-ZLBEX) ! because ZCC not included in XLBI
+                    ZFW=0
                 CASE(5) ! snow
-                  ZA=XAS
-                  ZB=XBS
-                  ZCC=XCCS
-                  ZCX=XCXS
-                  ZALPHA=XALPHAS
-                  ZNU=XNUS
-                  ZLB=XLBS
-                  ZLBEX=XLBEXS
-                  ZFW=0
+                    ZA=XAS_I
+                    ZB=XBS_I
+                    ZCC=XCCS_I
+                    ZCX=XCXS_I
+                    ZALPHA=XALPHAS_I
+                    ZNU=XNUS_I
+                    ZLB=XLBS_I
+                    ZLBEX=XLBEXS_I
+                    ZFW=0
                 CASE(6) ! graupel
                   !If temperature between -10 and 10°C and Mr and Mg over min threshold: melting graupel
                   ! with liquid water fraction Fw=Mr/(Mr+Mg) else dry graupel (Fw=0)    
                   IF( ZTEMPZ(JK) > XTT-10 .AND. ZTEMPZ(JK) < XTT+10 &
-                    .AND. ZRZ(JK,3) > XRTMIN(3) ) THEN
+                    .AND. ZRZ(JK,3) > ZRTMIN(3) ) THEN
                     ZFW=ZRZ(JK,3)/(ZRZ(JK,3)+ZRZ(JK,JLOOP))
                   ELSE
                     ZFW=0
                   ENDIF
-                  ZA=XAG
-                  ZB=XBG
-                  ZCC=XCCG
-                  ZCX=XCXG
-                  ZALPHA=XALPHAG
-                  ZNU=XNUG
-                  ZLB=XLBG
-                  ZLBEX=XLBEXG
+                    ZA=XAG_I
+                    ZB=XBG_I
+                    ZCC=XCCG_I
+                    ZCX=XCXG_I
+                    ZALPHA=XALPHAG_I
+                    ZNU=XNUG_I
+                    ZLB=XLBG_I
+                    ZLBEX=XLBEXG_I
                 CASE(7) ! cloud water over land
-                  ZA=XAC
-                  ZB=XBC
-                  ZCC=XCONC_LAND
-                  ZCX=0.
-                  ZALPHA=XALPHAC
-                  ZNU=XNUC
-                  ZLBEX=1.0/(ZCX-ZB)
-                  ZLB=( ZA*ZCC*MOMG(ZALPHA,ZNU,ZB) )**(-ZLBEX)
+                    ZA=XAC_I
+                    ZB=XBC_I
+                    ZCC=XCONC_LAND
+                    ZCX=0.
+                    ZALPHA=XALPHAC_I
+                    ZNU=XNUC_I
+                    ZLBEX=1.0/(ZCX-ZB)
+                    ZLB=( ZA*ZCC*MOMG(ZALPHA,ZNU,ZB) )**(-ZLBEX)
               END SELECT
               ZLBDA=ZLB*(ZRHODREFZ(JK)*ZRZ(JK,JLOOP))**ZLBEX
               ZREFLOC=0.
@@ -1161,7 +1200,7 @@ IF ( TPFLYER%FLY) THEN
           END IF
           TPFLYER%CRARE_ATT(IN,JK)=TPFLYER%CRARE(IN,JK)*ZAETOT
         END DO
-
+        TPFLYER%ZZ  (IN,:) = ZZMZ(:)
         DEALLOCATE(ZZMZ,ZAELOC)
         ! m^3 → mm^6/m^3 → dBZ
         WHERE(TPFLYER%CRARE(IN,:)>0)
@@ -1342,10 +1381,21 @@ IF ( GSTORE ) THEN
   END DO
   DO JLOOP=1,IKU              
     CALL DISTRIBUTE_FLYER(TPFLYER%RTZ (IN,JLOOP))
+    DO JLOOP2=1,SIZE(PR,4)
+      CALL DISTRIBUTE_FLYER(TPFLYER%RZ (IN,JLOOP,JLOOP2))
+    ENDDO
     CALL DISTRIBUTE_FLYER(TPFLYER%FFZ (IN,JLOOP))
+    CALL DISTRIBUTE_FLYER(TPFLYER%CIZ (IN,JLOOP))
+    CALL DISTRIBUTE_FLYER(TPFLYER%IWCZ (IN,JLOOP))
+    CALL DISTRIBUTE_FLYER(TPFLYER%LWCZ (IN,JLOOP))
+    CALL DISTRIBUTE_FLYER(TPFLYER%SPEEDCZ (IN,JLOOP))
+    CALL DISTRIBUTE_FLYER(TPFLYER%SPEEDRZ (IN,JLOOP))
+    CALL DISTRIBUTE_FLYER(TPFLYER%SPEEDSZ (IN,JLOOP))
+    CALL DISTRIBUTE_FLYER(TPFLYER%SPEEDGZ (IN,JLOOP))    
     CALL DISTRIBUTE_FLYER(TPFLYER%CRARE (IN,JLOOP))
     CALL DISTRIBUTE_FLYER(TPFLYER%CRARE_ATT (IN,JLOOP))
     CALL DISTRIBUTE_FLYER(TPFLYER%WZ (IN,JLOOP))
+    CALL DISTRIBUTE_FLYER(TPFLYER%ZZ (IN,JLOOP))
   END DO
   IF (SIZE(PTKE)>0) CALL DISTRIBUTE_FLYER(TPFLYER%TKE  (IN))
   IF (SIZE(PTS) >0) CALL DISTRIBUTE_FLYER(TPFLYER%TSRAD(IN))
diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90
index 7d991a701..ad2367b83 100644
--- a/src/MNH/diag.f90
+++ b/src/MNH/diag.f90
@@ -68,6 +68,8 @@
 !!  03/2013     (C. Augros)    Add variables for radar simulator in NAMELIST:
 !!                             NBAZIM,LSNRT,XSNRMIN
 !!       D.Ricard 2015 : add LMOIST_ES
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !
 !
 !-------------------------------------------------------------------------------
@@ -191,6 +193,7 @@ LOGICAL, DIMENSION(:,:),ALLOCATABLE     :: GMASKkids ! kids domains mask
 INTEGER :: IIU, IJU, IKU
 INTEGER :: IINFO_ll               ! return code for _ll routines 
 REAL, DIMENSION(:,:),ALLOCATABLE          :: ZSEA,ZTOWN
+REAL, DIMENSION(:,:,:),ALLOCATABLE        :: ZWORK
 !
 NAMELIST/NAM_DIAG/ CISO, LVAR_RS, LVAR_LS,   &
                    NCONV_KF, NRAD_3D, CRAD_SAT, NRTTOVINFO, LRAD_SUBG_COND,  &
@@ -539,8 +542,9 @@ IF ( LAIRCRAFT_BALLOON ) THEN
                       TDTEXP, TDTMOD, TDTCUR, TXDTBAL, &
                       XXHAT, XYHAT, XZZ, XMAP, XLONORI, XLATORI, &
                       XUT, XVT, XWT, XPABST, XTHT, XRT, XSVT,    &
-                      XTKET, XTSRAD, XRHODREF,XCIT,ZSEA)
-  DEALLOCATE (ZSEA,ZTOWN)
+                      XTKET, XTSRAD, XRHODREF,XCIT,    &
+                      ZWORK,ZWORK,ZWORK,ZWORK,ZWORK,ZSEA)
+  DEALLOCATE (ZSEA,ZTOWN,ZWORK)
 !
 !-----------------------------
 !
diff --git a/src/MNH/ini_aircraft_balloon.f90 b/src/MNH/ini_aircraft_balloon.f90
index 13178a1bc..2a93c0d80 100644
--- a/src/MNH/ini_aircraft_balloon.f90
+++ b/src/MNH/ini_aircraft_balloon.f90
@@ -77,6 +77,8 @@ END MODULE MODI_INI_AIRCRAFT_BALLOON
 !!     Original 15/05/2000
 !!               Apr, 20 2001: G.Jaubert: use in diag  with stationnary fields
 !!               March, 2013 : O.Caumont, C.Lac : add vertical profiles
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !!
 !! --------------------------------------------------------------------------
 !
@@ -378,10 +380,19 @@ ALLOCATE(TPFLYER%TH  (ISTORE))
 ALLOCATE(TPFLYER%R   (ISTORE,KRR))
 ALLOCATE(TPFLYER%SV  (ISTORE,KSV))
 ALLOCATE(TPFLYER%RTZ (ISTORE,KKU))
+ALLOCATE(TPFLYER%RZ (ISTORE,KKU,KRR))
 ALLOCATE(TPFLYER%FFZ (ISTORE,KKU))
+ALLOCATE(TPFLYER%IWCZ (ISTORE,KKU))
+ALLOCATE(TPFLYER%LWCZ (ISTORE,KKU))
+ALLOCATE(TPFLYER%CIZ (ISTORE,KKU))
+ALLOCATE(TPFLYER%SPEEDCZ (ISTORE,KKU))
+ALLOCATE(TPFLYER%SPEEDRZ (ISTORE,KKU))
+ALLOCATE(TPFLYER%SPEEDSZ (ISTORE,KKU))
+ALLOCATE(TPFLYER%SPEEDGZ (ISTORE,KKU))
 ALLOCATE(TPFLYER%CRARE(ISTORE,KKU))
 ALLOCATE(TPFLYER%CRARE_ATT(ISTORE,KKU))
 ALLOCATE(TPFLYER%WZ(ISTORE,KKU))
+ALLOCATE(TPFLYER%ZZ(ISTORE,KKU))
 IF (OUSETKE) THEN
   ALLOCATE(TPFLYER%TKE (ISTORE))
 ELSE
@@ -410,11 +421,20 @@ TPFLYER%TH       = XUNDEF
 TPFLYER%R        = XUNDEF
 TPFLYER%SV       = XUNDEF
 TPFLYER%RTZ      = XUNDEF
+TPFLYER%RZ       = XUNDEF
 TPFLYER%FFZ      = XUNDEF
+TPFLYER%CIZ      = XUNDEF
+TPFLYER%IWCZ     = XUNDEF
+TPFLYER%LWCZ     = XUNDEF
+TPFLYER%SPEEDCZ  = XUNDEF
+TPFLYER%SPEEDRZ  = XUNDEF
+TPFLYER%SPEEDSZ  = XUNDEF
+TPFLYER%SPEEDGZ  = XUNDEF
 XLAM_CRAD        = 3.154E-3 ! (in m) <=> 95.04 GHz = Rasta cloud radar frequency
 TPFLYER%CRARE    = XUNDEF
 TPFLYER%CRARE_ATT= XUNDEF
 TPFLYER%WZ= XUNDEF
+TPFLYER%ZZ= XUNDEF
 TPFLYER%TKE      = XUNDEF
 TPFLYER%TSRAD    = XUNDEF
 TPFLYER%ZS       = XUNDEF
diff --git a/src/MNH/ini_posprofilern.f90 b/src/MNH/ini_posprofilern.f90
index 77d9e7338..84e954110 100644
--- a/src/MNH/ini_posprofilern.f90
+++ b/src/MNH/ini_posprofilern.f90
@@ -72,6 +72,8 @@ END MODULE MODI_INI_POSPROFILER_n
 !!    MODIFICATIONS
 !!    -------------
 !!     P. Tulet 15/01/2002  
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -178,9 +180,21 @@ ALLOCATE(TPROFILER%FF    (ISTORE,IKU,NUMBPROFILER))
 ALLOCATE(TPROFILER%DD    (ISTORE,IKU,NUMBPROFILER))
 ALLOCATE(TPROFILER%W     (ISTORE,IKU,NUMBPROFILER))
 ALLOCATE(TPROFILER%P     (ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%ZZ    (ISTORE,IKU,NUMBPROFILER))
 ALLOCATE(TPROFILER%TH    (ISTORE,IKU,NUMBPROFILER))
 ALLOCATE(TPROFILER%THV   (ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%RHOD  (ISTORE,IKU,NUMBPROFILER))
 ALLOCATE(TPROFILER%RARE  (ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%SPEEDC(ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%SPEEDR(ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%SPEEDS(ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%SPEEDG(ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%SPEEDH(ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%INPRC3D(ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%INPRR3D(ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%INPRS3D(ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%INPRG3D(ISTORE,IKU,NUMBPROFILER))
+ALLOCATE(TPROFILER%INPRH3D(ISTORE,IKU,NUMBPROFILER))
 ALLOCATE(TPROFILER%R     (ISTORE,IKU,NUMBPROFILER,KRR))
 ALLOCATE(TPROFILER%SV    (ISTORE,IKU,NUMBPROFILER,KSV))
 ALLOCATE(TPROFILER%AER   (ISTORE,IKU,NUMBPROFILER,NAER))
@@ -202,6 +216,10 @@ ALLOCATE(TPROFILER%LEI     (ISTORE,NUMBPROFILER))
 ALLOCATE(TPROFILER%GFLUX   (ISTORE,NUMBPROFILER))
 ALLOCATE(TPROFILER%LW      (ISTORE,NUMBPROFILER))
 ALLOCATE(TPROFILER%SW      (ISTORE,NUMBPROFILER))
+ALLOCATE(TPROFILER%IWV   (ISTORE,NUMBPROFILER))
+ALLOCATE(TPROFILER%ZTD   (ISTORE,NUMBPROFILER))
+ALLOCATE(TPROFILER%ZWD   (ISTORE,NUMBPROFILER))
+ALLOCATE(TPROFILER%ZHD   (ISTORE,NUMBPROFILER))
 ALLOCATE(TPROFILER%TKE_DISS(ISTORE,IKU,NUMBPROFILER))
 !
 !
@@ -213,9 +231,25 @@ TPROFILER%FF   = XUNDEF
 TPROFILER%DD   = XUNDEF
 TPROFILER%W    = XUNDEF
 TPROFILER%P    = XUNDEF
+TPROFILER%ZZ   = XUNDEF
 TPROFILER%TH   = XUNDEF
 TPROFILER%THV  = XUNDEF
+TPROFILER%RHOD = XUNDEF
 TPROFILER%RARE = XUNDEF
+TPROFILER%SPEEDC = XUNDEF
+TPROFILER%SPEEDR = XUNDEF
+TPROFILER%SPEEDS = XUNDEF
+TPROFILER%SPEEDG = XUNDEF
+TPROFILER%SPEEDG = XUNDEF
+TPROFILER%INPRC3D= XUNDEF
+TPROFILER%INPRR3D= XUNDEF
+TPROFILER%INPRS3D= XUNDEF
+TPROFILER%INPRG3D= XUNDEF
+TPROFILER%INPRH3D= XUNDEF
+TPROFILER%IWV  = XUNDEF
+TPROFILER%ZTD  = XUNDEF
+TPROFILER%ZWD  = XUNDEF
+TPROFILER%ZHD  = XUNDEF
 TPROFILER%R    = XUNDEF
 TPROFILER%SV   = XUNDEF
 TPROFILER%AER  = XUNDEF
diff --git a/src/MNH/ini_profilern.f90 b/src/MNH/ini_profilern.f90
index 390ca20d4..e2888785f 100644
--- a/src/MNH/ini_profilern.f90
+++ b/src/MNH/ini_profilern.f90
@@ -64,6 +64,8 @@
 !!    MODIFICATIONS
 !!    -------------
 !!     Original 15/01/2002
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -94,11 +96,13 @@ NUMBPROFILER             = 0
 IF (NUMBPROFILER > 0) THEN
 ALLOCATE(TPROFILER%LAT (NUMBPROFILER))
 ALLOCATE(TPROFILER%LON (NUMBPROFILER))
+ALLOCATE(TPROFILER%ALT (NUMBPROFILER))
 ALLOCATE(TPROFILER%NAME(NUMBPROFILER))
 ALLOCATE(TPROFILER%TYPE(NUMBPROFILER))
 !
 TPROFILER%LON = XUNDEF
 TPROFILER%LAT = XUNDEF
+TPROFILER%ALT = XUNDEF
 TPROFILER%NAME = "    "
 TPROFILER%TYPE = "         "
 !
@@ -130,6 +134,17 @@ TPROFILER%LON                = (/ 5.3790, 4.8200, 5.2000, 6.0986, 5.4100, &
                                   5.3951, 5.4842, 5.4054, 5.4253, 5.4113, &
                                   5.4369, 5.3893, 5.5114, 5.3788, 5.4611, &
                                   5.3994, 5.3538, 5.3674 /)
+TPROFILER%ALT                = (/ 2.,2.,2.,2.,2.,&
+                                  2.,2.,2.,2.,2.,&
+                                  2.,2.,2.,2.,2.,&
+                                  2.,2.,         &
+                                  2.,2.,2.,2.,2.,&
+                                  2.,2.,2.,2.,2.,&
+                                  2.,            &
+                                  2.,2.,2.,2.,2.,&
+                                  2.,2.,2.,2.,2.,&
+                                  2.,2.,2.,2.,2.,&
+                                  2.,2.,2.       /)                          
 !
 TPROFILER%NAME               = (/ 'CAAM    ', 'CRAU    ', 'BARD    ', 'MONT    ', 'IUTF    ', &
                                   'OBSF    ', 'VALF    ', 'LUBE    ', 'VENT    ', 'DENT    ', &
diff --git a/src/MNH/modd_aircraft_balloon.f90 b/src/MNH/modd_aircraft_balloon.f90
index c49cf85de..676092e19 100644
--- a/src/MNH/modd_aircraft_balloon.f90
+++ b/src/MNH/modd_aircraft_balloon.f90
@@ -36,6 +36,8 @@
 !!      Original    15/05/00
 !!              Apr,19, 2001 (G.Jaubert) add CVBALL type
 !!              March, 2013 : O.Caumont, C.Lac : add vertical profiles
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -128,10 +130,19 @@ REAL, DIMENSION(:),   POINTER :: TH       ! th(n)
 REAL, DIMENSION(:,:), POINTER :: R        ! r*(n)
 REAL, DIMENSION(:,:), POINTER :: SV       ! Sv*(n)
 REAL, DIMENSION(:,:), POINTER :: RTZ      ! tot hydrometeor mixing ratio
+REAL, DIMENSION(:,:,:), POINTER :: RZ      ! water vapour mixing ratio
 REAL, DIMENSION(:,:), POINTER :: FFZ      ! horizontal wind                
+REAL, DIMENSION(:,:), POINTER :: IWCZ     ! ice water content              
+REAL, DIMENSION(:,:), POINTER :: LWCZ     ! liquid water content              
+REAL, DIMENSION(:,:), POINTER :: CIZ      ! Ice concentration
+REAL, DIMENSION(:,:), POINTER :: SPEEDCZ  ! Cloud fall velocity 
+REAL, DIMENSION(:,:), POINTER :: SPEEDRZ  ! Rain fall velocity
+REAL, DIMENSION(:,:), POINTER :: SPEEDSZ  ! Snow fall velocity
+REAL, DIMENSION(:,:), POINTER :: SPEEDGZ  ! Graupel fall velocity
 REAL, DIMENSION(:,:), POINTER :: CRARE     ! cloud radar reflectivity
 REAL, DIMENSION(:,:), POINTER :: CRARE_ATT ! attenuated (= more realistic) cloud radar reflectivity
 REAL, DIMENSION(:,:), POINTER :: WZ        ! vertical profile of vertical velocity
+REAL, DIMENSION(:,:), POINTER :: ZZ        ! vertical profile of mass point altitude (above sea)
 REAL, DIMENSION(:,:), POINTER :: AER      ! Extinction at 550 nm
 REAL, DIMENSION(:,:), POINTER :: DST_WL   ! Extinction by wavelength
 REAL, DIMENSION(:),   POINTER :: ZS       ! zs(n)
diff --git a/src/MNH/modd_type_profiler.f90 b/src/MNH/modd_type_profiler.f90
index 3cd32f7cf..9a5fc0cdc 100644
--- a/src/MNH/modd_type_profiler.f90
+++ b/src/MNH/modd_type_profiler.f90
@@ -36,7 +36,9 @@ IMPLICIT NONE
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    15/01/02
-!-------------------------------------------------------------------------------
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profile
+r!-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
 !             ------------
@@ -66,16 +68,29 @@ REAL, DIMENSION(:),       POINTER :: X=>NULL()        ! X(n)
 REAL, DIMENSION(:),       POINTER :: Y=>NULL()        ! Y(n)
 REAL, DIMENSION(:),       POINTER :: LON=>NULL()      ! longitude(n)
 REAL, DIMENSION(:),       POINTER :: LAT=>NULL()      ! latitude (n)
+REAL, DIMENSION(:),       POINTER :: ALT=>NULL()      ! altitude (n)
 REAL, DIMENSION(:,:,:),   POINTER :: ZON=>NULL()      ! zonal wind(n)
 REAL, DIMENSION(:,:,:),   POINTER :: MER=>NULL()      ! meridian wind(n)
 REAL, DIMENSION(:,:,:),   POINTER :: FF=>NULL()       ! wind intensity  
 REAL, DIMENSION(:,:,:),   POINTER :: DD=>NULL()       ! wind direction
 REAL, DIMENSION(:,:,:),   POINTER :: W=>NULL()        ! w(n)  (air vertical speed)
 REAL, DIMENSION(:,:,:),   POINTER :: P=>NULL()        ! p(n)
+REAL, DIMENSION(:,:,:),   POINTER :: ZZ=>NULL()       ! altitude(n)
 REAL, DIMENSION(:,:,:),   POINTER :: TKE=>NULL()      ! tke(n)
 REAL, DIMENSION(:,:,:),   POINTER :: TH=>NULL()       ! th(n)
 REAL, DIMENSION(:,:,:),   POINTER :: THV=>NULL()      ! thv(n)
 REAL, DIMENSION(:,:,:),   POINTER :: RARE=>NULL()     ! radar reflectivity (n)
+REAL, DIMENSION(:,:,:),   POINTER :: SPEEDC=>NULL()   ! cloud sedim speed  (n)
+REAL, DIMENSION(:,:,:),   POINTER :: SPEEDR=>NULL()   ! rain  sedim speed  (n)
+REAL, DIMENSION(:,:,:),   POINTER :: SPEEDS=>NULL()   ! snow  sedim speed  (n)
+REAL, DIMENSION(:,:,:),   POINTER :: SPEEDG=>NULL()   ! graup sedim speed  (n)
+REAL, DIMENSION(:,:,:),   POINTER :: SPEEDH=>NULL()   ! hail sedim speed  (n)
+REAL, DIMENSION(:,:,:),   POINTER :: INPRC3D=>NULL()  ! sedimentation rate(n)
+REAL, DIMENSION(:,:,:),   POINTER :: INPRR3D=>NULL()  ! sedimentation rate(n)
+REAL, DIMENSION(:,:,:),   POINTER :: INPRS3D=>NULL()  ! sedimentation rate(n)
+REAL, DIMENSION(:,:,:),   POINTER :: INPRG3D=>NULL()  ! sedimentation rate(n)
+REAL, DIMENSION(:,:,:),   POINTER :: INPRH3D=>NULL()  ! sedimentation rate(n)
+REAL, DIMENSION(:,:,:),   POINTER :: RHOD=>NULL()     ! density of dry air/moist air
 REAL, DIMENSION(:,:,:,:), POINTER :: R=>NULL()        ! r*(n)
 REAL, DIMENSION(:,:,:,:), POINTER :: SV=>NULL()       ! Sv*(n)
 REAL, DIMENSION(:,:,:,:), POINTER :: AER=>NULL()      ! AER*(n) aerosol extinction
@@ -93,6 +108,10 @@ REAL, DIMENSION(:,:),     POINTER :: LEI=>NULL()      ! Solid latent heat flux (
 REAL, DIMENSION(:,:),     POINTER :: GFLUX=>NULL()    ! storage heat flux (W m2)
 REAL, DIMENSION(:,:),     POINTER :: LW=>NULL()       ! IR downward radiation (W m2)
 REAL, DIMENSION(:,:),     POINTER :: SW=>NULL()       ! solar downward radiation (W m2)
+REAL, DIMENSION(:,:),   POINTER :: IWV=>NULL()      ! integrated water vpour(n)
+REAL, DIMENSION(:,:),   POINTER :: ZTD=>NULL()      ! GPS zenith tropo delay(n)
+REAL, DIMENSION(:,:),   POINTER :: ZWD=>NULL()      ! GPS zenith wet delay(n)
+REAL, DIMENSION(:,:),   POINTER :: ZHD=>NULL()      ! GPS zenith hydro delay(n)
 !
 REAL, DIMENSION(:,:,:),   POINTER :: TKE_DISS=>NULL() ! TKE dissipation rate
 !
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index a8fc1fab3..6f2dca219 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -229,6 +229,8 @@ END MODULE MODI_MODEL_n
 !!       P. Tulet      Nov 2014 accumulated moles of aqueous species that fall at the surface   
 !!                   Dec 2014 (C.Lac) : For reproducibility START/RESTA
 !!      J.Escobar 20/04/2015: missing UPDATE_HALO before UPDATE_HALO2
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !!-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -482,6 +484,17 @@ REAL, DIMENSION(:,:,:,:), POINTER :: DPTR_XRM,DPTR_XSVM,DPTR_XRRS,DPTR_XRSVS
 REAL, DIMENSION(:,:), POINTER :: DPTR_XINPRC,DPTR_XINPRR,DPTR_XINPRS,DPTR_XINPRG
 REAL, DIMENSION(:,:), POINTER :: DPTR_XINPRH,DPTR_XPRCONV,DPTR_XPRSCONV
 LOGICAL, DIMENSION(:,:),POINTER :: DPTR_GMASKkids
+!
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))           :: ZSPEEDC
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))           :: ZSPEEDR
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))           :: ZSPEEDS
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))           :: ZSPEEDG
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))           :: ZSPEEDH
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))           :: ZINPRC3D
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))           :: ZINPRS3D
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))           :: ZINPRG3D
+REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))           :: ZINPRH3D
+!
 REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZRUS,ZRVS,ZRWS
 !
 ! for various testing
@@ -1631,8 +1644,11 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC,LACTIT, LSEDC, LSEDI, LRAIN, LWARM, LHHONI,   &
                           LCONVHG, XCF_MF,XRC_MF, XRI_MF,                      &
-                          XINPRC,XINPRR, XINPRR3D, XEVAP3D,                    &
-                          XINPRS, XINPRG, XINPRH, XSOLORG , XMI, ZSEA, ZTOWN    )
+                          XINPRC,ZINPRC3D,XINPRR, XINPRR3D, XEVAP3D,           &
+                          XINPRS,ZINPRS3D, XINPRG,ZINPRG3D,                    &
+                          XINPRH,ZINPRH3D, XSOLORG , XMI,                      &
+                          ZSPEEDC, ZSPEEDR, ZSPEEDS, ZSPEEDG, ZSPEEDH,         &
+                          ZSEA, ZTOWN    )
     DEF_NC=.TRUE.
 #else    
     CALL RESOLVED_CLOUD ( CCLOUD, CACTCCN, CSCONV, CMF_CLOUD, NRR, NSPLITR,    &
@@ -1646,8 +1662,11 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC,LACTIT, LSEDC, LSEDI, LRAIN, LWARM, LHHONI,   &
                           LCONVHG, XCF_MF,XRC_MF, XRI_MF,                      &
-                          XINPRC,XINPRR, XINPRR3D, XEVAP3D,                    &
-                          XINPRS, XINPRG, XINPRH, XSOLORG , XMI, ZSEA, ZTOWN    )
+                          XINPRC,ZINPRC3D,XINPRR, XINPRR3D, XEVAP3D,           &
+                          XINPRS,ZINPRS3D, XINPRG,ZINPRG3D, XINPRH,ZINPRH3D,   &
+                          XSOLORG , XMI,                                       &
+                          ZSPEEDC, ZSPEEDR, ZSPEEDS, ZSPEEDG, ZSPEEDH,         &
+                          ZSEA, ZTOWN    )
 #endif
     DEALLOCATE(ZTOWN)
   ELSE
@@ -1665,8 +1684,9 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC, LACTIT, LSEDC, LSEDI, LRAIN, LWARM, LHHONI,  &
                           LCONVHG, XCF_MF,XRC_MF, XRI_MF,                      &
-                          XINPRC,XINPRR, XINPRR3D, XEVAP3D,                    &
-                          XINPRS, XINPRG, XINPRH, XSOLORG, XMI                 )
+                          XINPRC,ZINPRC3D,XINPRR, XINPRR3D, XEVAP3D,             &
+                          XINPRS,ZINPRS3D, XINPRG,ZINPRG3D, XINPRH,ZINPRH3D,   &
+                          XSOLORG, XMI,ZSPEEDC, ZSPEEDR, ZSPEEDS, ZSPEEDG, ZSPEEDH)
     DEF_NC=.TRUE.
 #else
     CALL RESOLVED_CLOUD ( CCLOUD, CACTCCN, CSCONV, CMF_CLOUD, NRR, NSPLITR,    &
@@ -1680,8 +1700,10 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           XSRCT, XCLDFR,XCIT,                                  &
                           LSEDIC, LACTIT, LSEDC, LSEDI, LRAIN, LWARM, LHHONI,  &
                           LCONVHG, XCF_MF,XRC_MF, XRI_MF,                      &
-                          XINPRC,XINPRR, XINPRR3D, XEVAP3D,                    &
-                          XINPRS, XINPRG, XINPRH, XSOLORG, XMI                 )
+                          XINPRC,ZINPRC3D,XINPRR, XINPRR3D, XEVAP3D,             &
+                          XINPRS,ZINPRS3D, XINPRG,ZINPRG3D, XINPRH,ZINPRH3D,   &
+                          XSOLORG, XMI,                             &
+                          ZSPEEDC, ZSPEEDR, ZSPEEDS, ZSPEEDG, ZSPEEDH          )
 #endif
   END IF
   XRTHS_CLD  = XRTHS - XRTHS_CLD
@@ -1866,7 +1888,8 @@ IF (LFLYER)                                                                   &
                       TDTEXP, TDTMOD, TDTSEG, TDTCUR,                         &
                       XXHAT, XYHAT, XZZ, XMAP, XLONORI, XLATORI,              &
                       XUT, XVT, XWT, XPABST, XTHT, XRT, XSVT, XTKET, XTSRAD,  &
-                      XRHODREF,XCIT,PSEA=ZSEA(:,:))
+                      XRHODREF,XCIT,ZSPEEDC, ZSPEEDR, ZSPEEDS, ZSPEEDG,       &
+                      ZSPEEDH,PSEA=ZSEA(:,:))
 
 
 !-------------------------------------------------------------------------------
@@ -1890,7 +1913,9 @@ IF (LPROFILER)                                                           &
                   TDTEXP, TDTMOD, TDTSEG, TDTCUR,                        &
                   XXHAT, XYHAT, XZZ,XRHODREF,                            &
                   XUT, XVT, XWT, XTHT, XRT, XSVT, XTKET, XTSRAD, XPABST, &
-                  XAER, XCLDFR, XCIT                                     )
+                  XAER, XCLDFR, XCIT ,                                   &
+                  ZSPEEDC, ZSPEEDR, ZSPEEDS, ZSPEEDG, ZSPEEDH,           &
+                  ZINPRC3D,XINPRR3D,ZINPRS3D,ZINPRG3D,ZINPRH3D           )
 !
 !
 CALL SECOND_MNH2(ZTIME2)
diff --git a/src/MNH/profilern.f90 b/src/MNH/profilern.f90
index 0e3383523..7b3174c29 100644
--- a/src/MNH/profilern.f90
+++ b/src/MNH/profilern.f90
@@ -18,7 +18,9 @@ INTERFACE
                             TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,   &
                             PXHAT, PYHAT, PZ,PRHODREF,            &
                             PU, PV, PW, PTH, PR, PSV, PTKE,       &
-                            PTS,PP, PAER, PCLDFR, PCIT ) 
+                            PTS,PP, PAER, PCLDFR, PCIT,                 &
+                            PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,&
+                            PINPRC3D,PINPRR3D,PINPRS3D,PINPRG3D,PINPRH3D)
 !
 USE MODD_TYPE_DATE
 !
@@ -44,6 +46,16 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PP     ! pressure
 REAL, DIMENSION(:,:,:,:), INTENT(IN)     :: PAER   ! aerosol extinction
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PCLDFR ! cloud fraction
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PCIT   ! ice concentration
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDC ! Cloud sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDR ! Rain sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDS ! Snow sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDG ! Graupel sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDH ! Hail sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PINPRC3D! 3D sedimentation rate     
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PINPRR3D! 3D sedimentation rate     
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PINPRS3D! 3D sedimentation rate     
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PINPRG3D! 3D sedimentation rate     
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PINPRH3D! 3D sedimentation rate     
 !
 !-------------------------------------------------------------------------------
 !
@@ -58,7 +70,9 @@ END MODULE MODI_PROFILER_n
                             TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR,   &
                             PXHAT, PYHAT, PZ,PRHODREF,            &
                             PU, PV, PW, PTH, PR, PSV, PTKE,       &
-                            PTS, PP, PAER, PCLDFR, PCIT           )
+                            PTS, PP, PAER, PCLDFR, PCIT,          &
+                            PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,&
+                            PINPRC3D,PINPRR3D,PINPRS3D,PINPRG3D,PINPRH3D)
 !     ########################################################
 !
 !
@@ -93,6 +107,8 @@ END MODULE MODI_PROFILER_n
 !!     Original 15/02/2002
 !!     March 2013 : C.Lac : Corrections for 1D + new fields (RARE,THV,DD,FF)
 !!     April 2014 : C.Lac : Call RADAR only if ICE3   
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !!
 !!
 !! --------------------------------------------------------------------------
@@ -115,7 +131,10 @@ USE MODE_ll
 USE MODI_WATER_SUM
 USE MODI_TEMPORAL_DIST
 USE MODI_RADAR_RAIN_ICE
+USE MODI_LIDAR
 USE MODI_WATER_SUM
+USE MODI_GPS_ZENITH_GRID
+USE MODD_PARAM_n, ONLY : CCLOUD
 !
 !
 IMPLICIT NONE
@@ -146,6 +165,16 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PP     ! pressure
 REAL, DIMENSION(:,:,:,:), INTENT(IN)     :: PAER   ! aerosol extinction
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PCLDFR ! cloud fraction
 REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PCIT   ! ice concentration
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDC ! Cloud sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDR ! Rain sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDS ! Snow sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDG ! Graupel sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PSPEEDH ! Hail sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PINPRC3D! 3D sedimentation rate     
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PINPRR3D! 3D sedimentation rate     
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PINPRS3D! 3D sedimentation rate     
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PINPRG3D! 3D sedimentation rate     
+REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PINPRH3D! 3D sedimentation rate  
 !
 !-------------------------------------------------------------------------------
 !
@@ -154,8 +183,10 @@ REAL, DIMENSION(:,:,:),   INTENT(IN)     :: PCIT   ! ice concentration
 !
 INTEGER :: IIB        ! current processor domain sizes
 INTEGER :: IJB
+INTEGER :: IKB
 INTEGER :: IIE
 INTEGER :: IJE
+INTEGER :: IKE
 INTEGER :: IIU
 INTEGER :: IJU
 INTEGER :: IKU
@@ -175,19 +206,43 @@ INTEGER :: JSV    ! loop counter
 INTEGER :: JK     ! loop
 INTEGER :: IKRAD
 !
-REAL,DIMENSION(SIZE(PZ,3)) :: ZU_PROFILER ! horizontal wind speed at station location (along x)
-REAL,DIMENSION(SIZE(PZ,3)) :: ZV_PROFILER ! horizontal wind speed at station location (along y)
-REAL,DIMENSION(SIZE(PZ,3)) :: ZFF         ! horizontal wind speed at station location 
-REAL,DIMENSION(SIZE(PZ,3)) :: ZDD         ! horizontal wind speed at station location 
+REAL,DIMENSION(SIZE(PZ,3)) :: ZU_PROFILER ! horizontal wind speed profile at station location (along x)
+REAL,DIMENSION(SIZE(PZ,3)) :: ZV_PROFILER ! horizontal wind speed profile at station location (along y)
+REAL,DIMENSION(SIZE(PZ,3)) :: ZFF         ! horizontal wind speed profile at station location 
+REAL,DIMENSION(SIZE(PZ,3)) :: ZDD         ! horizontal wind speed profile at station location 
+REAL,DIMENSION(SIZE(PZ,3)) :: ZRHOD       ! dry air density in moist mixing profile at station location
+REAL,DIMENSION(SIZE(PZ,3)) :: ZRV         ! water vapour mixing ratio profile at station location
+REAL,DIMENSION(SIZE(PZ,3)) :: ZT          ! temperature profile at station location
+REAL,DIMENSION(SIZE(PZ,3)) :: ZTV         ! virtual temperature profile at station location
+REAL,DIMENSION(SIZE(PZ,3)) :: ZPRES       ! pressure profile at station location
+REAL,DIMENSION(SIZE(PZ,3)) :: ZE          ! water vapour partial pressure profile at station location
+REAL,DIMENSION(SIZE(PZ,3)) :: ZZ          ! altitude of model levels at station location
+REAL,DIMENSION(SIZE(PZ,3)-1) :: ZZHATM      ! altitude of mass point levels at station location
 REAL                       :: ZGAM        ! rotation between meso-nh base and spherical lat-lon base.
 !
+REAL                       :: XZS_GPS       ! GPS station altitude
+REAL                       :: ZIWV        ! integrated water vapour at station location
+REAL                       :: ZZM_STAT      ! altitude at station location
+REAL                       :: ZTM_STAT      ! temperature at station location
+REAL                       :: ZTV_STAT      ! virtual temperature at station location
+REAL                       :: ZPM_STAT      ! pressure at station location
+REAL                       :: ZEM_STAT      ! water vapour partial pressure at station location
+REAL                       :: ZZTD_PROFILER ! ZTD at station location
+REAL                       :: ZZHD_PROFILER ! ZHD at station location
+REAL                       :: ZZWD_PROFILER ! ZWD at station location
+REAL                       :: ZZHDR         ! ZHD correction at station location
+REAL                       :: ZZWDR         ! ZWD correction at station location
+!
 INTEGER                    :: IINFO_ll    ! return code
 INTEGER                    :: ILUOUT      ! logical unit
 INTEGER                    :: IRESP       ! return code
 INTEGER                    :: I           ! loop for stations
 !
-REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3))  :: ZTEMP,ZRARE,ZWORK32,ZTHV
-REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3))  :: ZWORK33,ZWORK34
+REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2))              :: ZZTD,ZZHD,ZZWD
+REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3))  :: ZTEMP,ZRARE,ZTHV,ZTEMPV
+REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3))  :: ZWORK32,ZWORK33,ZWORK34,ZCIT
+REAL ::  ZK1,ZK2,ZK3            ! k1, k2 and K3 atmospheric refractivity constants
+REAL  :: ZRDSRV                 ! XRD/XRV
 !----------------------------------------------------------------------------
 !
 !*      2.   PRELIMINARIES
@@ -195,11 +250,20 @@ REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3))  :: ZWORK33,ZWORK34
 !
 CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
 !
+!*      2.0   Refractivity coeficients
+!             ------------------------
+! Bevis et al. (1994)
+ZK1 = 0.776       ! K/Pa
+ZK2 = 0.704       ! K/Pa
+ZK3 = 3739.       ! K2/Pa
+ZRDSRV=XRD/XRV
 !*      2.1  Indices
 !            -------
 !
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 IKU =   SIZE(PZ,3)     ! nombre de niveaux sur la verticale
+IKB = JPVEXT+1
+IKE = IKU-JPVEXT
 !
 !
 !*      2.2  Interpolations of model variables to mass points
@@ -358,15 +422,21 @@ END IF
 !            --------------
 !
 ZTEMP(:,:,:)=PTH(:,:,:)*(PP(:,:,:)/ XP00) **(XRD/XCPD)
-IF (SIZE(PR,4) == 6) CALL RADAR_RAIN_ICE (PR, PCIT, PRHODREF, ZTEMP, ZRARE, ZWORK32, &
+IF (CCLOUD(1:3)=="ICE") CALL RADAR_RAIN_ICE (PR, PCIT, PRHODREF, ZTEMP, ZRARE, ZWORK32, &
                                                          ZWORK33, ZWORK34 )
 ! Theta_v
-ZTHV(:,:,:) = PTH(:,:,:) / (1.+WATER_SUM(PR(:,:,:,:)))*(1.+XRV/XRD*PR(:,:,:,1))
+ZTHV(:,:,:) = PTH(:,:,:) / (1.+WATER_SUM(PR(:,:,:,:)))*(1.+PR(:,:,:,1)/ZRDSRV)
+! virtual temperature
+ZTEMPV(:,:,:)=ZTHV(:,:,:)*(PP(:,:,:)/ XP00) **(XRD/XCPD)
+CALL GPS_ZENITH_GRID(PR(:,:,:,1),ZTEMP,PP,ZZTD,ZZHD,ZZWD)
 IF (GSTORE) THEN
  IF (TPROFILER%TIME(IN) /= XUNDEF) THEN
   DO I=1,NUMBPROFILER
     IF ((ZTHIS_PROCS(I)==1.).AND.(.NOT. TPROFILER%ERROR(I))) THEN
       !
+      ZZ(:)                  = PROFILER_INTERP(PZ)
+      ZRHOD(:)               = PROFILER_INTERP(PRHODREF)
+      ZPRES(:)               = PROFILER_INTERP(PP)
       ZU_PROFILER(:)         = PROFILER_INTERP_U(PU)
       ZV_PROFILER(:)         = PROFILER_INTERP_V(PV)
       ZGAM                   = (XRPK * (TPROFILER%LON(I) - XLON0) - XBETA)*(XPI/180.)
@@ -381,9 +451,66 @@ IF (GSTORE) THEN
        IF (ZU_PROFILER(JK) <0. .AND. ZV_PROFILER(JK) >= 0.) &
          ZDD(JK) = ATAN(ABS(ZV_PROFILER(JK)/ZU_PROFILER(JK))) * 180./XPI + 90.
        IF (ZU_PROFILER(JK) == 0. .AND. ZV_PROFILER(JK) == 0.) &
-         ZDD(JK) = XUNDEF                                                         
+         ZDD(JK) = XUNDEF
       END DO
-      !
+      ! GPS IWV and ZTD
+      XZS_GPS=TPROFILER%ALT(I)
+      IF ( ABS( ZZ(IKB)-XZS_GPS ) < 150 ) THEN ! distance between real and model orography ok
+        ZRV(:)                 = PROFILER_INTERP(PR(:,:,:,1))
+        ZT(:)                  = PROFILER_INTERP(ZTEMP)
+        ZE(:)                  = ZPRES(:)*ZRV(:)/(ZRDSRV+ZRV(:))
+        ZTV(:)                 = PROFILER_INTERP(ZTEMPV)
+        ZZTD_PROFILER          = PROFILER_INTERP_2D(ZZTD)
+        ZZHD_PROFILER          = PROFILER_INTERP_2D(ZZHD)
+        ZZWD_PROFILER          = PROFILER_INTERP_2D(ZZWD)
+        ZIWV = 0.
+        DO JK=IKB,IKE
+         ZIWV=ZIWV+ZRHOD(JK)*ZRV(JK)*(ZZ(JK+1)-ZZ(JK))
+        END DO
+        IF (ZZ(IKB) < XZS_GPS) THEN ! station above the model orography     
+          DO JK=IKB+1,IKE
+            IF ( ZZ(JK) < XZS_GPS) THEN ! whole layer to remove
+              ZZHDR=( 1.E-6 * ZK1 * ZPRES(JK-1) * ( ZZ(JK) - ZZ(JK-1) ) / ZTV(JK-1))
+              ZZWDR=( 1.E-6 *  ( (ZK2-ZRDSRV*ZK1) + ( ZK3/ZT(JK-1) ) ) * &
+                 ZE(JK-1)* ( ZZ(JK) - ZZ(JK-1) ) / ZT(JK-1) )
+              ZZHD_PROFILER=ZZHD_PROFILER-ZZHDR
+              ZZWD_PROFILER=ZZWD_PROFILER-ZZWDR
+              ZZTD_PROFILER=ZZTD_PROFILER-ZZHDR-ZZWDR
+            ELSE                       ! partial layer to remove
+              ZZHDR=( 1.E-6 * ZK1 * ZPRES(JK-1) * ( XZS_GPS - ZZ(JK-1) ) / ZTV(JK-1)) 
+              ZZWDR=( 1.E-6 *  ( (ZK2-ZRDSRV*ZK1) + ( ZK3/ZT(JK-1) ) ) * &
+                 ZE(JK-1)* ( XZS_GPS - ZZ(JK-1) ) / ZT(JK-1) ) 
+              ZZHD_PROFILER=ZZHD_PROFILER-ZZHDR
+              ZZWD_PROFILER=ZZWD_PROFILER-ZZWDR
+              ZZTD_PROFILER=ZZTD_PROFILER-ZZHDR-ZZWDR
+              EXIT
+            END IF
+          END DO 
+        ELSE ! station below the model orography
+! Extrapolate variables below the model orography assuming constant T&Tv gradients,
+! constant rv and hydrostatic law
+          ZZHATM(:)=0.5*(ZZ(1:IKU-1)+ZZ(2:IKU))
+          ZZM_STAT=0.5*(XZS_GPS+ZZ(IKB))
+          ZTM_STAT=ZT(IKB) + ( (ZZM_STAT-ZZHATM(IKB))*&
+             ( ZT(IKB)- ZT(IKB+1) )/(ZZHATM(IKB)-ZZHATM(IKB+1)) )
+          ZTV_STAT=ZTV(IKB) + ( (ZZM_STAT-ZZHATM(IKB))*&
+             ( ZTV(IKB)- ZTV(IKB+1) )/(ZZHATM(IKB)-ZZHATM(IKB+1)) )
+          ZPM_STAT = ZPRES(IKB) * EXP(XG *(ZZM_STAT-ZZHATM(IKB))&
+             /(XRD* 0.5 *(ZTV_STAT+ZTV(IKB))))
+          ZEM_STAT = ZPM_STAT * ZRV(IKB) / ( ZRDSRV + ZRV(IKB) )
+! add contribution below the model orography        
+          ZZHDR=( 1.E-6 * ZK1 * ZPM_STAT * ( ZZ(IKB) - XZS_GPS ) / ZTV_STAT )
+          ZZWDR=( 1.E-6 * ( (ZK2-ZRDSRV*ZK1) + (ZK3/ZTM_STAT) )&
+             * ZEM_STAT* ( ZZ(IKB) - XZS_GPS ) / ZTM_STAT )
+          ZZHD_PROFILER=ZZHD_PROFILER+ZZHDR
+          ZZWD_PROFILER=ZZWD_PROFILER+ZZWDR
+          ZZTD_PROFILER=ZZTD_PROFILER+ZZHDR+ZZWDR
+        END IF
+        TPROFILER%IWV(IN,I)= ZIWV
+        TPROFILER%ZTD(IN,I)= ZZTD_PROFILER
+        TPROFILER%ZWD(IN,I)= ZZWD_PROFILER
+        TPROFILER%ZHD(IN,I)= ZZHD_PROFILER
+      END IF
       TPROFILER%ZON (IN,:,I) = ZU_PROFILER(:) * COS(ZGAM) + ZV_PROFILER(:) * SIN(ZGAM)
       TPROFILER%MER (IN,:,I) = - ZU_PROFILER(:) * SIN(ZGAM) + ZV_PROFILER(:) * COS(ZGAM)
       TPROFILER%FF  (IN,:,I) = ZFF(:)                                                     
@@ -391,7 +518,19 @@ IF (GSTORE) THEN
       TPROFILER%W   (IN,:,I) = PROFILER_INTERP(PW)
       TPROFILER%TH  (IN,:,I) = PROFILER_INTERP(PTH)
       TPROFILER%THV (IN,:,I) = PROFILER_INTERP(ZTHV)
-      TPROFILER%RARE(IN,:,I) = PROFILER_INTERP(ZRARE)
+      TPROFILER%ZZ  (IN,:,I) = ZZ(:)
+      TPROFILER%RHOD(IN,:,I) = ZRHOD(:)
+      IF (SIZE(PR,4) == 6) TPROFILER%RARE(IN,:,I) = PROFILER_INTERP(ZRARE)
+      TPROFILER%SPEEDC(IN,:,I) = PROFILER_INTERP(PSPEEDC)
+      TPROFILER%SPEEDR(IN,:,I) = PROFILER_INTERP(PSPEEDR)
+      TPROFILER%SPEEDS(IN,:,I) = PROFILER_INTERP(PSPEEDS)
+      TPROFILER%SPEEDG(IN,:,I) = PROFILER_INTERP(PSPEEDG)
+      TPROFILER%SPEEDH(IN,:,I) = PROFILER_INTERP(PSPEEDH)
+      TPROFILER%INPRC3D(IN,:,I) = PROFILER_INTERP(PINPRC3D)*3.6E6
+      TPROFILER%INPRR3D(IN,:,I) = PROFILER_INTERP(PINPRR3D)*3.6E6
+      TPROFILER%INPRS3D(IN,:,I) = PROFILER_INTERP(PINPRS3D)*3.6E6
+      TPROFILER%INPRG3D(IN,:,I) = PROFILER_INTERP(PINPRG3D)*3.6E6
+      TPROFILER%INPRH3D(IN,:,I) = PROFILER_INTERP(PINPRH3D)*3.6E6
       IF (.NOT. L1D) THEN
         TPROFILER%P   (IN,:,I) = PROFILER_INTERP(PP(II(I):II(I)+1,IJ(I):IJ(I)+1,:))
       ELSE
@@ -407,7 +546,7 @@ IF (GSTORE) THEN
         TPROFILER%SV  (IN,:,I,JSV) = PROFILER_INTERP(ZWORK(:,:,:,JSV))
       END DO
       ZWORK2(:,:,:,:) = 0.
-      DO JK=1+JPVEXT,IKU-JPVEXT
+      DO JK=IKB,IKE
         IKRAD = JK - JPVEXT
         ZWORK2(:,:,JK,:)=PAER(:,:,IKRAD,:)
       ENDDO
@@ -467,9 +606,25 @@ IF (GSTORE) THEN
   CALL DISTRIBUTE_PROFILER(TPROFILER%DD  (IN,JK,I))
   CALL DISTRIBUTE_PROFILER(TPROFILER%W   (IN,JK,I))
   CALL DISTRIBUTE_PROFILER(TPROFILER%P   (IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%ZZ  (IN,JK,I))
   CALL DISTRIBUTE_PROFILER(TPROFILER%TH  (IN,JK,I))
   CALL DISTRIBUTE_PROFILER(TPROFILER%THV (IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%RHOD(IN,JK,I))
   CALL DISTRIBUTE_PROFILER(TPROFILER%RARE(IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%SPEEDC(IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%SPEEDR(IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%SPEEDS(IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%SPEEDG(IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%SPEEDH(IN,JK,I))  
+  CALL DISTRIBUTE_PROFILER(TPROFILER%INPRC3D(IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%INPRR3D(IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%INPRS3D(IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%INPRG3D(IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%INPRH3D(IN,JK,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%IWV(IN,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%ZTD(IN,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%ZHD(IN,I))
+  CALL DISTRIBUTE_PROFILER(TPROFILER%ZWD(IN,I))
   !
   IF (LDIAG_IN_RUN) CALL DISTRIBUTE_PROFILER(TPROFILER%TKE_DISS(IN,JK,I))
   !
diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90
index 18e9e3b50..1a323ab7c 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -13,14 +13,16 @@
 !      ####################
 !
 INTERFACE
-      SUBROUTINE RAIN_ICE ( OSEDIC,HSEDIM, HSUBG_AUCV, OWARM, KKA, KKU, KKL,          &
-                            KSPLITR, PTSTEP, KMI, KRR,                                &
-                            PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,    &
-                            PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                       &
-                            PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,           &
-                            PINPRC, PINPRR, PINPRR3D, PEVAP3D,                        &
-                            PINPRS, PINPRG, PSIGS, PSEA, PTOWN,                       &
-                            PRHT, PRHS, PINPRH, OCONVHG                               )
+      SUBROUTINE RAIN_ICE ( OSEDIC,HSEDIM, HSUBG_AUCV, OWARM, KKA, KKU, KKL,      &
+                            KSPLITR, PTSTEP, KMI, KRR,                            &
+                            PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,&
+                            PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                   &
+                            PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,       &
+                            PINPRC,PINPRC3D, PINPRR, PINPRR3D, PEVAP3D,           &
+                            PINPRS,PINPRS3D, PINPRG,PINPRG3D, PSIGS,              &
+                            PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,          &
+                            PSEA, PTOWN,                                          &
+                            PRHT,  PRHS, PINPRH,PINPRH3D,OCONVHG             )
 !
 !
 LOGICAL,                  INTENT(IN)    :: OSEDIC ! Switch for droplet sedim.
@@ -68,18 +70,27 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRIS    ! Pristine ice m.r. source
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRSS    ! Snow/aggregate m.r. source
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRGS    ! Graupel m.r. source
 
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDC ! Cloud sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDR ! Rain sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDS ! Snow sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDG ! Graupel sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDH ! Hail sedimentation speed
 !
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRC! Cloud instant precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRC3D! Cloud inst precip 3D
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRR! Rain instant precip
 REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRR3D! Rain inst precip 3D
 REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PEVAP3D! Rain evap profile
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRS! Snow instant precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRS3D! Snow inst precip 3D
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRG! Graupel instant precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRG3D! Graupel inst precip 3D
 REAL, DIMENSION(:,:),OPTIONAL,INTENT(IN)         :: PSEA
 REAL, DIMENSION(:,:),OPTIONAL,INTENT(IN)         :: PTOWN
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(IN)    :: PRHT    ! Hail m.r. at t
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(INOUT) :: PRHS    ! Hail m.r. source
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(INOUT)    :: PINPRH! Hail instant precip
+REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(INOUT)     :: PINPRH3D! Hail instant precip 3D
 LOGICAL, OPTIONAL,                 INTENT(IN)    :: OCONVHG! Switch for conversion from
                                                   ! hail to graupel
 
@@ -93,10 +104,12 @@ END MODULE MODI_RAIN_ICE
                             PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,    &
                             PTHT, PRVT, PRCT, PRRT, PRIT, PRST,                       &
                             PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS,           &
-                            PINPRC, PINPRR, PINPRR3D, PEVAP3D,                        &
-                            PINPRS, PINPRG, PSIGS, PSEA, PTOWN,                       &
-                            PRHT, PRHS, PINPRH, OCONVHG                               )
-!     ######################################################################
+                            PINPRC,PINPRC3D, PINPRR, PINPRR3D, PEVAP3D,               &
+                            PINPRS,PINPRS3D, PINPRG,PINPRG3D, PSIGS,                  &
+                            PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,              &
+                            PSEA, PTOWN,                                              &
+                            PRHT,  PRHS, PINPRH,PINPRH3D,OCONVHG                 )
+!     #####################################################################
 !
 !!****  * -  compute the explicit microphysical sources
 !!
@@ -232,6 +245,8 @@ END MODULE MODI_RAIN_ICE
 !!      Juan 24/09/2012: for BUG Pgi rewrite PACK function on mode_pack_pgi
 !!      (C. Lac) FIT temporal scheme : instant M removed
 !!      (JP Pinty), 01-2014 : ICE4 : partial reconversion of hail to graupel
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -303,17 +318,27 @@ REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRIS    ! Pristine ice m.r. source
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRSS    ! Snow/aggregate m.r. source
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRGS    ! Graupel m.r. source
 !
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDC ! Cloud sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDR ! Rain sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDS ! Snow sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDG ! Graupel sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDH ! Hail sedimentation speed
+!
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRC! Cloud instant precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRC3D! Cloud inst precip 3D
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRR! Rain instant precip
 REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRR3D! Rain inst precip 3D
 REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PEVAP3D! Rain evap profile
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRS! Snow instant precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRS3D! Snow inst precip 3D
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRG! Graupel instant precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRG3D! Graupel inst precip 3D
 REAL, DIMENSION(:,:),OPTIONAL,INTENT(IN)         :: PSEA
 REAL, DIMENSION(:,:),OPTIONAL,INTENT(IN)         :: PTOWN
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(IN)    :: PRHT    ! Hail m.r. at t
 REAL, DIMENSION(:,:,:), OPTIONAL,  INTENT(INOUT) :: PRHS    ! Hail m.r. source
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(INOUT)    :: PINPRH! Hail instant precip
+REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(INOUT)     :: PINPRH3D! Hail instant precip 3D
 LOGICAL, OPTIONAL,                 INTENT(IN)    :: OCONVHG! Switch for conversion from
                                                   ! hail to graupel
 !
@@ -861,11 +886,20 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZCONC3D !
 !        O. Initialization of for sedimentation                  
 !
 IF (OSEDIC) PINPRC (:,:) = 0.
+IF (OSEDIC) PINPRC3D (:,:,:) = 0.
 PINPRR (:,:) = 0.
 PINPRR3D (:,:,:) = 0.
 PINPRS (:,:) = 0.
+PINPRS3D (:,:,:) = 0.
 PINPRG (:,:) = 0.
-IF ( KRR == 7 ) PINPRH (:,:) = 0.          
+PINPRG3D (:,:,:) = 0.
+IF ( KRR == 7 ) PINPRH (:,:) = 0.   
+IF ( KRR == 7 ) PINPRH3D (:,:,:) = 0.
+PSPEEDC(:,:,:) = 0.
+PSPEEDR(:,:,:) = 0.
+PSPEEDS(:,:,:) = 0.
+PSPEEDG(:,:,:) = 0.
+PSPEEDH(:,:,:) = 0.
 !
 !*       1. Parameters for cloud sedimentation
 !
@@ -1033,6 +1067,9 @@ DO JN = 1 , KSPLITR
          PRCS(:,:,JK) = PRCS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
        END DO
       PINPRC(:,:) = PINPRC(:,:) + ZWSED(:,:,IKB) / XRHOLW / KSPLITR 
+      PINPRC3D(:,:,:) = PINPRC3D(:,:,:) + ZWSED(:,:,:) / XRHOLW / KSPLITR 
+      WHERE (PRCT(:,:,:) > 1.E-04 ) &
+           PSPEEDC(:,:,:) = ZWSED(:,:,:) / (PRCT(:,:,:) * PRHODREF(:,:,:))
       IF( JN==KSPLITR ) THEN
         PRCS(:,:,:) = PRCS(:,:,:) * ZINVTSTEP
       END IF
@@ -1075,6 +1112,8 @@ DO JN = 1 , KSPLITR
        END DO
        PINPRR(:,:) = PINPRR(:,:) + ZWSED(:,:,IKB)/XRHOLW/KSPLITR
        PINPRR3D(:,:,:) = PINPRR3D(:,:,:) + ZWSED(:,:,1:IKT)/XRHOLW/KSPLITR 
+      WHERE (PRRT(:,:,:) > 1.E-04 ) &
+           PSPEEDR(:,:,:) = ZWSED(:,:,:) / (PRRT(:,:,:) * PRHODREF(:,:,:))
       IF( JN==KSPLITR ) THEN
         PRRS(:,:,:) = PRRS(:,:,:) * ZINVTSTEP
       END IF
@@ -1156,6 +1195,9 @@ DO JN = 1 , KSPLITR
          PRSS(:,:,JK) = PRSS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
        END DO
        PINPRS(:,:) = PINPRS(:,:) + ZWSED(:,:,IKB)/XRHOLW/KSPLITR
+       PINPRS3D(:,:,:) = PINPRS3D(:,:,:) + ZWSED(:,:,:)/XRHOLW/KSPLITR
+      WHERE (PRST(:,:,:) > 1.E-04 ) &
+           PSPEEDS(:,:,:) = ZWSED(:,:,:) / (PRST(:,:,:) * PRHODREF(:,:,:))
       IF( JN==KSPLITR ) THEN
         PRSS(:,:,:) = PRSS(:,:,:) * ZINVTSTEP
       END IF
@@ -1196,7 +1238,10 @@ END IF
          PRGS(:,:,JK) = PRGS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
        END DO
        PINPRG(:,:) = PINPRG(:,:) + ZWSED(:,:,IKB)/XRHOLW/KSPLITR                             
-      IF( JN==KSPLITR ) THEN
+       PINPRG3D(:,:,:) = PINPRG3D(:,:,:) + ZWSED(:,:,:)/XRHOLW/KSPLITR                             
+       WHERE (PRGT(:,:,:) > 1.E-04 ) &
+           PSPEEDG(:,:,:) = ZWSED(:,:,:) / (PRGT(:,:,:) * PRHODREF(:,:,:))
+       IF( JN==KSPLITR ) THEN
         PRGS(:,:,:) = PRGS(:,:,:) * ZINVTSTEP
       END IF
 !
@@ -1237,7 +1282,10 @@ END IF
          PRHS(:,:,JK) = PRHS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
        END DO
        PINPRH(:,:) = PINPRH(:,:) + ZWSED(:,:,IKB)/XRHOLW/KSPLITR
-      IF( JN==KSPLITR ) THEN
+       PINPRH3D(:,:,:) = PINPRH3D(:,:,:) + ZWSED(:,:,:)/XRHOLW/KSPLITR
+       WHERE (PRHT(:,:,:) > 1.E-04 ) &
+           PSPEEDH(:,:,:) = ZWSED(:,:,:) / (PRHT(:,:,:) * PRHODREF(:,:,:))
+       IF( JN==KSPLITR ) THEN
         PRHS(:,:,:) = PRHS(:,:,:) * ZINVTSTEP
       END IF
  END IF
@@ -1289,6 +1337,21 @@ INTEGER, DIMENSION(SIZE(PRHODREF,1)*SIZE(PRHODREF,2)) :: I1, I2
 REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZCONC3D !  droplet condensation
 !-------------------------------------------------------------------------------
 !
+PSPEEDC(:,:,:) = 0.
+PSPEEDR(:,:,:) = 0.
+PSPEEDS(:,:,:) = 0.
+PSPEEDG(:,:,:) = 0.
+PSPEEDH(:,:,:) = 0.
+IF (OSEDIC) PINPRC (:,:) = 0.
+IF (OSEDIC) PINPRC3D (:,:,:) = 0.
+PINPRR (:,:) = 0.
+PINPRR3D (:,:,:) = 0.
+PINPRS (:,:) = 0.
+PINPRS3D (:,:,:) = 0.
+PINPRG (:,:) = 0.
+PINPRG3D (:,:,:) = 0.
+IF ( KRR == 7 ) PINPRH (:,:) = 0.          
+IF ( KRR == 7 ) PINPRH3D (:,:,:) = 0.   
 ! 
 !
 !*       1. Parameters for cloud sedimentation
@@ -1414,8 +1477,11 @@ END DO
      DO JK = IKTB , IKTE
        PRCS(:,:,JK) = PRCS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
      END DO
+     WHERE (PRCT(:,:,:) > 1.E-04 ) &
+              PSPEEDC(:,:,:) = ZWSED(:,:,:) / (PRCT(:,:,:) * PRHODREF(:,:,:))      
 
      PINPRC(:,:) = ZWSED(:,:,IKB)/XRHOLW                        ! in m/s
+     PINPRC3D(:,:,:) = ZWSED(:,:,:)/XRHOLW                        ! in m/s
      PRCS(:,:,:) = PRCS(:,:,:) * ZINVTSTEP
  ENDIF
 
@@ -1468,6 +1534,8 @@ END DO
    DO JK = IKTB , IKTE
      PRRS(:,:,JK) = PRRS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
    ENDDO
+   WHERE (PRRT(:,:,:) > 1.E-04 ) &
+           PSPEEDR(:,:,:) = ZWSED(:,:,:) / (PRRT(:,:,:) * PRHODREF(:,:,:)) 
    PINPRR(:,:) = ZWSED(:,:,IKB)/XRHOLW                        ! in m/s
    PINPRR3D(:,:,:) = ZWSED(:,:,1:IKT)/XRHOLW                        ! in m/s
    PRRS(:,:,:) = PRRS(:,:,:) * ZINVTSTEP
@@ -1577,9 +1645,11 @@ END DO
    DO JK = IKTB , IKTE
      PRSS(:,:,JK) = PRSS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
    ENDDO
+   WHERE (PRST(:,:,:) > 1.E-04 ) &
+     PSPEEDS(:,:,:) = ZWSED(:,:,:) / (PRST(:,:,:) * PRHODREF(:,:,:)) 
 
    PINPRS(:,:) = ZWSED(:,:,IKB)/XRHOLW                        ! in m/s
-
+   PINPRS3D(:,:,:) = ZWSED(:,:,:)/XRHOLW                        ! in m/s
    PRSS(:,:,:) = PRSS(:,:,:) * ZINVTSTEP
 
 
@@ -1633,8 +1703,10 @@ END DO
          PRGS(:,:,JK) = PRGS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
    ENDDO
 
+   WHERE (PRGT(:,:,:) > 1.E-04 ) &
+     PSPEEDG(:,:,:) = ZWSED(:,:,:) / (PRGT(:,:,:) * PRHODREF(:,:,:)) 
    PINPRG(:,:) = ZWSED(:,:,IKB)/XRHOLW                        ! in m/s
-
+   PINPRG3D(:,:,:) = ZWSED(:,:,:)/XRHOLW                        ! in m/s
    PRGS(:,:,:) = PRGS(:,:,:) * ZINVTSTEP
 
 !
@@ -1686,8 +1758,10 @@ END DO
        PRHS(:,:,JK) = PRHS(:,:,JK) + ZW(:,:,JK)*(ZWSED(:,:,JK+KKL)-ZWSED(:,:,JK))
      ENDDO
 
+     WHERE (PRHT(:,:,:) > 1.E-04 ) &
+       PSPEEDH(:,:,:) = ZWSED(:,:,:) / (PRHT(:,:,:) * PRHODREF(:,:,:)) 
      PINPRH(:,:) = ZWSED(:,:,IKB)/XRHOLW                        ! in m/s
-
+     PINPRH3D(:,:,:) = ZWSED(:,:,:)/XRHOLW                        ! in m/s
      PRHS(:,:,:) = PRHS(:,:,:) * ZINVTSTEP
 
  ENDIF
diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90
index fc67d9d99..c2a03f97c 100644
--- a/src/MNH/resolved_cloud.f90
+++ b/src/MNH/resolved_cloud.f90
@@ -19,8 +19,11 @@ INTERFACE
                                   PCIT, OSEDIC, OACTIT, OSEDC, OSEDI,                  &
                                   ORAIN, OWARM, OHHONI, OCONVHG,                       &
                                   PCF_MF,PRC_MF, PRI_MF,                               &
-                                  PINPRC,PINPRR,PINPRR3D, PEVAP3D,                     &
-                                  PINPRS,PINPRG,PINPRH,PSOLORG,PMI,PSEA,PTOWN          )   
+                                  PINPRC,PINPRC3D,PINPRR,PINPRR3D, PEVAP3D,            &
+                                  PINPRS,PINPRS3D,PINPRG,PINPRG3D,PINPRH,PINPRH3D,     &
+                                  PSOLORG,PMI,                                         &
+                                  PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,         &
+                                  PSEA,PTOWN          )   
 !
 CHARACTER(LEN=4),         INTENT(IN)   :: HCLOUD   ! kind of cloud
 CHARACTER(LEN=4),         INTENT(IN)   :: HACTCCN  ! kind of CCN activation scheme
@@ -113,8 +116,17 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PEVAP3D  ! evap profile
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRS! Snow instant precip
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRG! Graupel instant precip
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRH! Hail instant precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRC3D ! sed flux of precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRS3D ! sed flux of precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRG3D ! sed flux of precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRH3D ! sed flux of precip
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSOLORG ![%] solubility fraction of soa
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PMI !
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDC ! Cloud sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDR ! Rain sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDS ! Snow sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDG ! Graupel sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDH ! Hail sedimentation speed
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA      ! Land Sea mask
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN      ! Town fraction
 !
@@ -134,8 +146,11 @@ END MODULE MODI_RESOLVED_CLOUD
                                   PCIT, OSEDIC, OACTIT, OSEDC, OSEDI,                  &
                                   ORAIN, OWARM, OHHONI, OCONVHG,                       &
                                   PCF_MF,PRC_MF, PRI_MF,                               &
-                                  PINPRC,PINPRR,PINPRR3D, PEVAP3D,                     &
-                                  PINPRS,PINPRG,PINPRH,PSOLORG,PMI,PSEA,PTOWN          )   
+                                  PINPRC,PINPRC3D,PINPRR,PINPRR3D, PEVAP3D,            &
+                                  PINPRS,PINPRS3D,PINPRG,PINPRG3D,PINPRH,PINPRH3D,     &
+                                  PSOLORG,PMI,                                         &
+                                  PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,         &
+                                  PSEA,PTOWN          )   
 !     ##########################################################################
 !
 !!****  * -  compute the  resolved clouds and precipitation
@@ -232,6 +247,8 @@ END MODULE MODI_RESOLVED_CLOUD
 !!                                  Add KHKO scheme
 !!      Modifications : March 2013  (O.Thouron)
 !!                                  Add prognostic supersaturation
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -361,8 +378,17 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PEVAP3D  ! evap profile
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRS! Snow instant precip
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRG! Graupel instant precip
 REAL, DIMENSION(:,:), INTENT(INOUT)     :: PINPRH! Hail instant precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRC3D ! sed flux of precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRS3D ! sed flux of precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRG3D ! sed flux of precip
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   :: PINPRH3D ! sed flux of precip
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PSOLORG ![%] solubility fraction of soa
 REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PMI !
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDC ! Cloud sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDR ! Rain sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDS ! Snow sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDG ! Graupel sedimentation speed
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PSPEEDH ! Hail sedimentation speed
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA      ! Land Sea mask
 REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN      ! Town fraction
 !
@@ -770,8 +796,10 @@ SELECT CASE ( HCLOUD )
                     PRT(:,:,:,5), PRT(:,:,:,6),                          &
                     PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),      &
                     PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),            &
-                    PINPRC,PINPRR, PINPRR3D, PEVAP3D,                    &
-                    PINPRS, PINPRG, PSIGS, PSEA,PTOWN)
+                    PINPRC,PINPRC3D,PINPRR, PINPRR3D, PEVAP3D,           &
+                    PINPRS,PINPRS3D, PINPRG,PINPRG3D, PSIGS,             &
+                    PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,         &
+                    PSEA,PTOWN)
 !
 !*       9.2    Perform the saturation adjustment over cloud ice and cloud water
 !
@@ -808,9 +836,11 @@ SELECT CASE ( HCLOUD )
                     PRT(:,:,:,5), PRT(:,:,:,6),                           &
                     PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3),       &
                     PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6),             &
-                    PINPRC, PINPRR, PINPRR3D, PEVAP3D,                    &
-                    PINPRS, PINPRG, PSIGS, PSEA, PTOWN,                   &
-                    PRT(:,:,:,7), PRS(:,:,:,7), PINPRH, OCONVHG           )
+                    PINPRC,PINPRC3D, PINPRR, PINPRR3D, PEVAP3D,           &
+                    PINPRS,PINPRS3D, PINPRG,PINPRG3D, PSIGS,              &
+                    PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH,          &
+                    PSEA, PTOWN,                                          &
+                    PRT(:,:,:,7),  PRS(:,:,:,7), PINPRH,PINPRH3D,OCONVHG  )
 
 !
 !*       10.2   Perform the saturation adjustment over cloud ice and cloud water
diff --git a/src/MNH/write_aircraft_balloon.f90 b/src/MNH/write_aircraft_balloon.f90
index 4cff17517..3060afd81 100644
--- a/src/MNH/write_aircraft_balloon.f90
+++ b/src/MNH/write_aircraft_balloon.f90
@@ -61,6 +61,8 @@ END MODULE MODI_WRITE_AIRCRAFT_BALLOON
 !!     Original 15/05/2000
 !!     10/01/2011 adding IMI, the model number
 !!     March, 2013 :  C.Lac : add vertical profiles
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -191,6 +193,9 @@ INTEGER :: JRR      ! loop counter
 INTEGER :: JSV      ! loop counter
 INTEGER :: JPT      ! loop counter
 INTEGER :: IKU, IK
+CHARACTER(LEN=2)  :: INDICE
+INTEGER           :: I
+INTEGER :: JLOOP
 !
 !----------------------------------------------------------------------------
 !
@@ -203,8 +208,12 @@ IF ( IMI /= TPFLYER%NMODEL ) RETURN
 !
 IPROC = 20 + SIZE(TPFLYER%R,2) + SIZE(TPFLYER%SV,2) &
        + 2 + SIZE(TPFLYER%SVW_FLUX,2)
-IPROCZ = SIZE(TPFLYER%RTZ,2)+SIZE(TPFLYER%CRARE,2)+SIZE(TPFLYER%CRARE_ATT,2)+ &
-         SIZE(TPFLYER%WZ,2) + SIZE(TPFLYER%FFZ,2)
+IPROCZ = SIZE(TPFLYER%RTZ,2)+ SIZE(TPFLYER%RZ,2)+ SIZE(TPFLYER%RZ,3)+  SIZE(TPFLYER%CRARE,2)+ &
+         SIZE(TPFLYER%CRARE_ATT,2)+ SIZE(TPFLYER%WZ,2) + SIZE(TPFLYER%FFZ,2)+ &
+         SIZE(TPFLYER%IWCZ,2)+ SIZE(TPFLYER%LWCZ,2) + SIZE(TPFLYER%CIZ,2) + &
+         SIZE(TPFLYER%ZZ,2) + SIZE(TPFLYER%SPEEDCZ,2) + &
+         SIZE(TPFLYER%SPEEDRZ,2) + SIZE(TPFLYER%SPEEDSZ,2)+ &
+         SIZE(TPFLYER%SPEEDGZ,2)
 IF (SIZE(TPFLYER%TKE  )>0) IPROC = IPROC + 1
 IF (LDIAG_IN_RUN) IPROC = IPROC + 1
 IF (LORILAM) IPROC = IPROC + JPMODE*3
@@ -566,13 +575,83 @@ DO IK=1, IKU
   YUNITZ   (JPROCZ) = 'kg/kg'
   YCOMMENTZ(JPROCZ) = '1D Total hydrometeor mixing ratio'
   ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%RTZ(:,IK)
+!
+  DO JRR=1,SIZE(TPFLYER%RZ,3)
+    JPROCZ = JPROCZ+1
+    YUNITZ    (JPROCZ) = 'kg/kg'
+    ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%RZ(:,IK,JRR)
+    IF (JRR==1) THEN
+      YTITLEZ   (JPROCZ) = 'Rv'
+      YCOMMENTZ (JPROCZ) = '1D water vapor mixing ratio' 
+    ELSE IF (JRR==2) THEN
+      YTITLEZ   (JPROCZ) = 'Rc'
+      YCOMMENTZ (JPROCZ) = '1D liquid cloud water mixing ratio' 
+    ELSE IF (JRR==3) THEN
+      YTITLEZ   (JPROCZ) = 'Rr'
+      YCOMMENTZ (JPROCZ) = '1D Rain water mixing ratio' 
+    ELSE IF (JRR==4) THEN
+      YTITLEZ   (JPROCZ) = 'Ri'
+      YCOMMENTZ (JPROCZ) = '1D Ice cloud water mixing ratio' 
+    ELSE IF (JRR==5) THEN
+      YTITLEZ   (JPROCZ) = 'Rs'
+      YCOMMENTZ (JPROCZ) = '1D Snow mixing ratio' 
+    ELSE IF (JRR==6) THEN
+      YTITLEZ   (JPROCZ) = 'Rg'
+      YCOMMENTZ (JPROCZ) = '1D Graupel mixing ratio' 
+    ELSE IF (JRR==7) THEN
+      YTITLEZ   (JPROCZ) = 'Rh'
+      YCOMMENTZ (JPROCZ) = '1D Hail mixing ratio' 
+    END IF
+  END DO
 !
   JPROCZ = JPROCZ + 1
   YTITLEZ  (JPROCZ) = 'FF'
   YUNITZ   (JPROCZ) = 'm/s'         
   YCOMMENTZ(JPROCZ) = 'Horizontal wind'                     
   ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%FFZ(:,IK)
-! ++ OC
+!
+  JPROCZ = JPROCZ + 1
+  YTITLEZ  (JPROCZ) = 'IWC'
+  YUNITZ   (JPROCZ) = 'kg/m3'         
+  YCOMMENTZ(JPROCZ) = 'Ice water content'                   
+  ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%IWCZ(:,IK)
+!
+  JPROCZ = JPROCZ + 1
+  YTITLEZ  (JPROCZ) = 'LWC'
+  YUNITZ   (JPROCZ) = 'kg/m3'         
+  YCOMMENTZ(JPROCZ) = 'Liquid water content'                
+  ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%LWCZ(:,IK)
+!
+  JPROCZ = JPROCZ + 1
+  YTITLEZ  (JPROCZ) = 'CIT'
+  YUNITZ   (JPROCZ) = '/m3'         
+  YCOMMENTZ(JPROCZ) = 'Ice concentration'                   
+  ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%CIZ(:,IK)
+!
+  JPROCZ = JPROCZ + 1
+  YTITLEZ  (JPROCZ) = 'SPEEDC'
+  YUNITZ   (JPROCZ) = 'm/s'         
+  YCOMMENTZ(JPROCZ) = 'Cloud fall speed'                    
+  ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%SPEEDCZ(:,IK)
+!
+  JPROCZ = JPROCZ + 1
+  YTITLEZ  (JPROCZ) = 'SPEEDR'
+  YUNITZ   (JPROCZ) = 'm/s'         
+  YCOMMENTZ(JPROCZ) = 'Rain fall speed'                    
+  ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%SPEEDRZ(:,IK)
+!
+  JPROCZ = JPROCZ + 1
+  YTITLEZ  (JPROCZ) = 'SPEEDS'
+  YUNITZ   (JPROCZ) = 'm/s'         
+  YCOMMENTZ(JPROCZ) = 'Snow  fall speed'                    
+  ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%SPEEDSZ(:,IK)
+!
+  JPROCZ = JPROCZ + 1
+  YTITLEZ  (JPROCZ) = 'SPEEDG'
+  YUNITZ   (JPROCZ) = 'm/s'         
+  YCOMMENTZ(JPROCZ) = 'Graupel fall speed'                    
+  ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%SPEEDGZ(:,IK)
+!
   JPROCZ = JPROCZ + 1
   YTITLEZ  (JPROCZ) = 'RARE'
   YUNITZ   (JPROCZ) = 'dBZ'
@@ -588,6 +667,11 @@ DO IK=1, IKU
   YUNITZ   (JPROCZ) = 'm/s'
   YCOMMENTZ(JPROCZ) = '1D vertical velocity' 
   ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%WZ(:,IK)
+  JPROCZ = JPROCZ + 1
+  YTITLEZ  (JPROCZ) = 'Z'
+  YUNITZ   (JPROCZ) = 'm'
+  YCOMMENTZ(JPROCZ) = '1D altitude above sea'
+  ZWORKZ6 (1,1,IK,:,1,JPROCZ) = TPFLYER%ZZ(:,IK)
 END DO
 !----------------------------------------------------------------------------
 !
diff --git a/src/MNH/write_profilern.f90 b/src/MNH/write_profilern.f90
index ef825e27e..4a03174e9 100644
--- a/src/MNH/write_profilern.f90
+++ b/src/MNH/write_profilern.f90
@@ -59,6 +59,8 @@ END MODULE MODI_WRITE_PROFILER_n
 !!    MODIFICATIONS
 !!    -------------
 !!     Original 15/02/2002
+!!              July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for
+!!                                      aircraft, ballon and profiler
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -147,7 +149,7 @@ IF (TPROFILER%X(II)==XUNDEF) RETURN
 IF (TPROFILER%Y(II)==XUNDEF) RETURN
 IKU = SIZE(TPROFILER%W,2)    !nbre de niveaux sur la verticale SIZE(TPROFILER%W,2)
 !
-IPROC = 11 + SIZE(TPROFILER%R,4) + SIZE(TPROFILER%SV,4)
+IPROC = 27 + SIZE(TPROFILER%R,4) + SIZE(TPROFILER%SV,4)
 IF (LDIAG_IN_RUN) IPROC = IPROC + 13
 IF (LORILAM) IPROC = IPROC + JPMODE*3
 IF (LDUST) IPROC = IPROC + NMODE_DST*3
@@ -190,12 +192,78 @@ YCOMMENT (JPROC) = 'Radar reflectivity'
 ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%RARE(:,IK,II)
 !
 JPROC = JPROC + 1
+YTITLE   (JPROC) = 'SPEEDC'
+YUNIT    (JPROC) = 'm/s'
+YCOMMENT (JPROC) = 'Cloud sedimentation speed'
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%SPEEDC(:,IK,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'SPEEDR'
+YUNIT    (JPROC) = 'm/s'
+YCOMMENT (JPROC) = 'Rain sedimentation speed'
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%SPEEDR(:,IK,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'SPEEDS'
+YUNIT    (JPROC) = 'm/s'
+YCOMMENT (JPROC) = 'Snow sedimentation speed'
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%SPEEDS(:,IK,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'SPEEDG'
+YUNIT    (JPROC) = 'm/s'
+YCOMMENT (JPROC) = 'Graupel sedimentation speed'
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%SPEEDG(:,IK,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'SPEEDH'
+YUNIT    (JPROC) = 'm/s'
+YCOMMENT (JPROC) = 'Hail sedimentation speed'
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%SPEEDH(:,IK,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'INPRC3D'
+YUNIT    (JPROC) = 'mm/h'
+YCOMMENT (JPROC) = 'Cloud sedimentation rate'   
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%INPRC3D(:,IK,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'INPRR3D'
+YUNIT    (JPROC) = 'mm/h'
+YCOMMENT (JPROC) = 'Rain sedimentation rate'   
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%INPRR3D(:,IK,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'INPRS3D'
+YUNIT    (JPROC) = 'mm/h'
+YCOMMENT (JPROC) = 'Snow sedimentation rate'   
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%INPRS3D(:,IK,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'INPRG3D'
+YUNIT    (JPROC) = 'mm/h'
+YCOMMENT (JPROC) = 'Graupel sedimentation rate'   
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%INPRG3D(:,IK,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'INPRH3D'
+YUNIT    (JPROC) = 'mm/h'
+YCOMMENT (JPROC) = 'Hail sedimentation rate'   
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%INPRH3D(:,IK,II)
+!
+JPROC = JPROC + 1
 YTITLE   (JPROC) = 'P'
 YUNIT    (JPROC) = 'Pascal'
 YCOMMENT (JPROC) = 'Pressure' 
 ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%P(:,IK,II)
 !
 JPROC = JPROC + 1
+YTITLE   (JPROC) = 'ALT'
+YUNIT    (JPROC) = 'm'
+YCOMMENT (JPROC) = 'Altitude' 
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%ZZ(:,IK,II)
+!
+JPROC = JPROC + 1
 YTITLE   (JPROC) = 'LON'
 YUNIT    (JPROC) = 'decimal degree'
 YCOMMENT (JPROC) = 'Longitude'
@@ -346,6 +414,11 @@ DO JRR=1,SIZE(TPROFILER%R,4)
     YCOMMENT (JPROC) = 'Hail mixing ratio' 
   END IF
 END DO
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'Rhod'
+YUNIT    (JPROC) = 'kg/m3'
+YCOMMENT (JPROC) = 'Density of dry air in moist' 
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%RHOD(:,IK,II)
 !
 IF (SIZE(TPROFILER%TKE,1)>0) THEN
   JPROC = JPROC+1
@@ -355,6 +428,30 @@ IF (SIZE(TPROFILER%TKE,1)>0) THEN
   ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%TKE(:,IK,II)
 END IF
 !
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'IWV'
+YUNIT    (JPROC) = 'kg/m2'
+YCOMMENT (JPROC) = 'Integrated Water Vapour' 
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%IWV(:,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'ZTD'
+YUNIT    (JPROC) = 'm'
+YCOMMENT (JPROC) = 'Zenith Tropospheric Delay' 
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%ZTD(:,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'ZWD'
+YUNIT    (JPROC) = 'm'
+YCOMMENT (JPROC) = 'Zenith Wet Delay' 
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%ZWD(:,II)
+!
+JPROC = JPROC + 1
+YTITLE   (JPROC) = 'ZHD'
+YUNIT    (JPROC) = 'm'
+YCOMMENT (JPROC) = 'Zenith Hydrostatic Delay' 
+ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%ZHD(:,II)
+!
 IF (SIZE(TPROFILER%SV,4)>=1) THEN
   ! User scalar variables
   DO JSV = 1,NSV_USER
-- 
GitLab