From 4599a365d6c5fb2c1b3eb4b07e4edfc7e06e5486 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Thu, 20 Jul 2023 09:39:30 +0200
Subject: [PATCH] Philippe 20/07/2023: sensors: put XCIZ, XCCZ and XCRZ in
 TSENSOR + compute them for profilers if LIMA

---
 src/MNH/modd_aircraft_balloon.f90  | 30 +-----------------
 src/MNH/modd_sensor.f90            | 50 ++++++++++++++++++++++++++++--
 src/MNH/modd_type_statprof.f90     | 14 ---------
 src/MNH/profilern.f90              |  9 ++++--
 src/MNH/write_aircraft_balloon.f90 |  2 +-
 src/MNH/write_profilern.f90        | 10 ++++--
 6 files changed, 64 insertions(+), 51 deletions(-)

diff --git a/src/MNH/modd_aircraft_balloon.f90 b/src/MNH/modd_aircraft_balloon.f90
index 60cc53139..4f71f50fc 100644
--- a/src/MNH/modd_aircraft_balloon.f90
+++ b/src/MNH/modd_aircraft_balloon.f90
@@ -101,9 +101,6 @@ TYPE, EXTENDS(TSENSOR), ABSTRACT :: TFLYERDATA
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XRTZ       ! tot hydrometeor mixing ratio
   REAL, DIMENSION(:,:,:), ALLOCATABLE :: XRZ        ! water vapour mixing ratio
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XFFZ       ! horizontal wind
-  REAL, DIMENSION(:,:),   ALLOCATABLE :: XCIZ       ! Ice concentration
-  REAL, DIMENSION(:,:),   ALLOCATABLE :: XCCZ       ! Cloud concentration (LIMA)
-  REAL, DIMENSION(:,:),   ALLOCATABLE :: XCRZ       ! Rain concentration (LIMA)
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XWZ        ! vertical profile of vertical velocity
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XZZ        ! vertical profile of mass point altitude (above sea)
   REAL, DIMENSION(:),     ALLOCATABLE :: XZS        ! zs(n)
@@ -267,17 +264,8 @@ SUBROUTINE DATA_ARRAYS_ALLOCATE_FLYER( TPSENSOR, KSTORE )
   ALLOCATE( TPSENSOR%XRTZ (IKU, ISTORE) )
   ALLOCATE( TPSENSOR%XRZ  (IKU, ISTORE, NRR) )
   ALLOCATE( TPSENSOR%XFFZ (IKU, ISTORE) )
-  ALLOCATE( TPSENSOR%XCIZ (IKU, ISTORE) )
-  IVARSIZE = IVARSIZE + IKU * ( 3 + NRR )
+  IVARSIZE = IVARSIZE + IKU * ( 2 + NRR )
 
-  IF ( CCLOUD == 'LIMA' ) THEN
-    ALLOCATE( TPSENSOR%XCCZ(IKU, ISTORE) )
-    ALLOCATE( TPSENSOR%XCRZ(IKU, ISTORE) )
-    IVARSIZE = IVARSIZE + IKU * 2
-  ELSE
-    ALLOCATE( TPSENSOR%XCCZ(0, 0) )
-    ALLOCATE( TPSENSOR%XCRZ(0, 0) )
-  ENDIF
   ALLOCATE( TPSENSOR%XWZ       (IKU, ISTORE) )
   ALLOCATE( TPSENSOR%XZZ       (IKU, ISTORE) )
   ALLOCATE( TPSENSOR%XTKE_DISS(ISTORE) )
@@ -301,9 +289,6 @@ SUBROUTINE DATA_ARRAYS_ALLOCATE_FLYER( TPSENSOR, KSTORE )
   TPSENSOR%XRTZ  = XUNDEF
   TPSENSOR%XRZ   = XUNDEF
   TPSENSOR%XFFZ  = XUNDEF
-  TPSENSOR%XCIZ  = XUNDEF
-  TPSENSOR%XCCZ  = XUNDEF
-  TPSENSOR%XCRZ  = XUNDEF
   TPSENSOR%XWZ        = XUNDEF
   TPSENSOR%XZZ        = XUNDEF
   TPSENSOR%XTKE_DISS  = XUNDEF
@@ -337,9 +322,6 @@ SUBROUTINE DATA_ARRAYS_DEALLOCATE_FLYER( TPSENSOR )
   DEALLOCATE( TPSENSOR%XRTZ       )
   DEALLOCATE( TPSENSOR%XRZ        )
   DEALLOCATE( TPSENSOR%XFFZ       )
-  DEALLOCATE( TPSENSOR%XCIZ       )
-  DEALLOCATE( TPSENSOR%XCCZ       )
-  DEALLOCATE( TPSENSOR%XCRZ       )
   DEALLOCATE( TPSENSOR%XWZ        )
   DEALLOCATE( TPSENSOR%XZZ        )
   DEALLOCATE( TPSENSOR%XTKE_DISS  )
@@ -525,11 +507,6 @@ SUBROUTINE BUFFER_PACK_FLYER( TPSENSOR, PBUFFER, KPOS, KSTORE_CURRENT )
   KPOS = KPOS + IKU * ISTORES * NRR
 
   PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XFFZ (1:IKU,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
-  PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XCIZ (1:IKU,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
-  IF ( CCLOUD == 'LIMA' ) THEN
-    PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XCCZ(1:IKU,1:ISTORES), [IKU*ISTORES] ) ;KPOS = KPOS + IKU * ISTORES
-    PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XCRZ(1:IKU,1:ISTORES), [IKU*ISTORES] ) ;KPOS = KPOS + IKU * ISTORES
-  END IF
 
   PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XWZ(1:IKU,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
   PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XZZ(1:IKU,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
@@ -744,11 +721,6 @@ SUBROUTINE BUFFER_UNPACK_FLYER( TPSENSOR, PBUFFER, KPOS, KSTORE )
   KPOS = KPOS + KSTORE * IKU * NRR
 
   TPSENSOR%XFFZ (1:IKU,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+KSTORE*IKU-1), [IKU,KSTORE] ) ;  KPOS = KPOS + KSTORE * IKU
-  TPSENSOR%XCIZ (1:IKU,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+KSTORE*IKU-1), [IKU,KSTORE] ) ;  KPOS = KPOS + KSTORE * IKU
-  IF ( CCLOUD == 'LIMA' ) THEN
-    TPSENSOR%XCCZ(1:IKU,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+KSTORE*IKU-1), [IKU,KSTORE] );  KPOS = KPOS + KSTORE * IKU
-    TPSENSOR%XCRZ(1:IKU,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+KSTORE*IKU-1), [IKU,KSTORE] );  KPOS = KPOS + KSTORE * IKU
-  END IF
 
   TPSENSOR%XWZ(1:IKU,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+KSTORE*IKU-1), [IKU,KSTORE] ) ;  KPOS = KPOS + KSTORE * IKU
   TPSENSOR%XZZ(1:IKU,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+KSTORE*IKU-1), [IKU,KSTORE] ) ;  KPOS = KPOS + KSTORE * IKU
diff --git a/src/MNH/modd_sensor.f90 b/src/MNH/modd_sensor.f90
index 4710e232d..4d89d9ad3 100644
--- a/src/MNH/modd_sensor.f90
+++ b/src/MNH/modd_sensor.f90
@@ -102,6 +102,9 @@ MODULE MODD_SENSOR
       REAL, DIMENSION(:,:,:), ALLOCATABLE :: XSV     ! Sv*(n)
       REAL, DIMENSION(:),     ALLOCATABLE :: XTSRAD  ! surface temperature Ts(n)
 
+      REAL, DIMENSION(:,:),   ALLOCATABLE :: XCIZ       ! Ice concentration
+      REAL, DIMENSION(:,:),   ALLOCATABLE :: XCCZ       ! Cloud concentration (LIMA)
+      REAL, DIMENSION(:,:),   ALLOCATABLE :: XCRZ       ! Rain concentration (LIMA)
       REAL, DIMENSION(:,:),   ALLOCATABLE :: XIWCZ      ! ice water content
       REAL, DIMENSION(:,:),   ALLOCATABLE :: XLWCZ      ! liquid water content
       REAL, DIMENSION(:,:),   ALLOCATABLE :: XCRARE     ! cloud radar reflectivity
@@ -169,7 +172,7 @@ MODULE MODD_SENSOR
       USE MODD_DIM_N,            ONLY: NKMAX
       USE MODD_NSV,              ONLY: NSV
       USE MODD_PARAMETERS,       ONLY: JPVEXT
-      USE MODD_PARAM_N,          ONLY: CRAD, CTURB
+      USE MODD_PARAM_N,          ONLY: CCLOUD, CRAD, CTURB
 
       USE MODE_MSG
 
@@ -213,11 +216,28 @@ MODULE MODD_SENSOR
       END IF
 
       IF ( OVERTPROF ) THEN
+        IF ( CCLOUD == 'LIMA') THEN
+          ALLOCATE( TPSENSOR%XCIZ    (IKU, KSTORE) ) ; IVARSIZE = IVARSIZE + IKU
+          ALLOCATE( TPSENSOR%XCCZ    (IKU, KSTORE) ) ; IVARSIZE = IVARSIZE + IKU
+          ALLOCATE( TPSENSOR%XCRZ    (IKU, KSTORE) ) ; IVARSIZE = IVARSIZE + IKU
+        ELSE IF ( CCLOUD(1:3) == 'ICE') THEN
+          ALLOCATE( TPSENSOR%XCIZ    (IKU, KSTORE) ) ; IVARSIZE = IVARSIZE + IKU
+          ALLOCATE( TPSENSOR%XCCZ    (0, 0) )
+          ALLOCATE( TPSENSOR%XCRZ    (0, 0) )
+        ELSE
+          ALLOCATE( TPSENSOR%XCIZ    (0, 0) )
+          ALLOCATE( TPSENSOR%XCCZ    (0, 0) )
+          ALLOCATE( TPSENSOR%XCRZ    (0, 0) )
+        END IF
+
         ALLOCATE( TPSENSOR%XIWCZ     (IKU, KSTORE) ) ; IVARSIZE = IVARSIZE + IKU
         ALLOCATE( TPSENSOR%XLWCZ     (IKU, KSTORE) ) ; IVARSIZE = IVARSIZE + IKU
         ALLOCATE( TPSENSOR%XCRARE    (IKU, KSTORE) ) ; IVARSIZE = IVARSIZE + IKU
         ALLOCATE( TPSENSOR%XCRARE_ATT(IKU, KSTORE) ) ; IVARSIZE = IVARSIZE + IKU
       ELSE
+        ALLOCATE( TPSENSOR%XCIZ    (0, 0) )
+        ALLOCATE( TPSENSOR%XCCZ    (0, 0) )
+        ALLOCATE( TPSENSOR%XCRZ    (0, 0) )
         ALLOCATE( TPSENSOR%XIWCZ     (0, 0) )
         ALLOCATE( TPSENSOR%XLWCZ     (0, 0) )
         ALLOCATE( TPSENSOR%XCRARE    (0, 0) )
@@ -225,6 +245,8 @@ MODULE MODD_SENSOR
       END IF
 
       TPSENSOR%NBUFFER_VARSIZE = TPSENSOR%NBUFFER_VARSIZE + IVARSIZE
+PRINT *,'PW: Data_arrays_allocate_sensor: ',TPSENSOR%CNAME,' :' ,KLEVELS,IKU,KSTORE,IVARSIZE
+
       TPSENSOR%XZON      (:,:)   = XUNDEF
       TPSENSOR%XMER      (:,:)   = XUNDEF
       TPSENSOR%XW        (:,:)   = XUNDEF
@@ -234,6 +256,9 @@ MODULE MODD_SENSOR
       TPSENSOR%XR        (:,:,:) = XUNDEF
       TPSENSOR%XSV       (:,:,:) = XUNDEF
       TPSENSOR%XTSRAD    (:)     = XUNDEF_SFX
+      TPSENSOR%XCIZ      (:,:)   = XUNDEF
+      TPSENSOR%XCCZ      (:,:)   = XUNDEF
+      TPSENSOR%XCRZ      (:,:)   = XUNDEF
       TPSENSOR%XIWCZ     (:,:)   = XUNDEF
       TPSENSOR%XLWCZ     (:,:)   = XUNDEF
       TPSENSOR%XCRARE    (:,:)   = XUNDEF
@@ -264,6 +289,9 @@ MODULE MODD_SENSOR
       DEALLOCATE( TPSENSOR%XR         )
       DEALLOCATE( TPSENSOR%XSV        )
       DEALLOCATE( TPSENSOR%XTSRAD     )
+      DEALLOCATE( TPSENSOR%XCIZ       )
+      DEALLOCATE( TPSENSOR%XCCZ       )
+      DEALLOCATE( TPSENSOR%XCRZ       )
       DEALLOCATE( TPSENSOR%XIWCZ      )
       DEALLOCATE( TPSENSOR%XLWCZ      )
       DEALLOCATE( TPSENSOR%XCRARE     )
@@ -860,7 +888,7 @@ MODULE MODD_SENSOR
       USE MODD_DIM_N,      ONLY: NKMAX
       USE MODD_NSV,        ONLY: NSV
       USE MODD_PARAMETERS, ONLY: JPVEXT
-      USE MODD_PARAM_N,    ONLY: CRAD, CTURB
+      USE MODD_PARAM_N,    ONLY: CCLOUD, CRAD, CTURB
 
       USE MODE_MSG
 
@@ -977,6 +1005,14 @@ MODULE MODD_SENSOR
       END IF
 
       IF ( SIZE( TPSENSOR%XIWCZ ) > 0 ) THEN
+        IF ( CCLOUD(1:3) == 'ICE') THEN
+          PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XCIZ    (:,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
+        END IF
+        IF ( CCLOUD == 'LIMA') THEN
+          PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XCIZ    (:,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
+          PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XCCZ    (:,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
+          PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XCRZ    (:,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
+        END IF
         PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XIWCZ     (:,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
         PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XLWCZ     (:,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
         PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XCRARE    (:,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
@@ -994,7 +1030,7 @@ MODULE MODD_SENSOR
       USE MODD_DIM_N,      ONLY: NKMAX
       USE MODD_NSV,        ONLY: NSV
       USE MODD_PARAMETERS, ONLY: JPVEXT
-      USE MODD_PARAM_N,    ONLY: CRAD, CTURB
+      USE MODD_PARAM_N,    ONLY: CCLOUD, CRAD, CTURB
 
       USE MODE_MSG
 
@@ -1094,6 +1130,14 @@ MODULE MODD_SENSOR
       END IF
 
       IF ( SIZE( TPSENSOR%XIWCZ ) > 0 ) THEN
+        IF ( CCLOUD(1:3) == 'ICE' ) THEN
+          TPSENSOR%XCIZ    (:,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+IKU*KSTORE-1), [ IKU, KSTORE ] ) ; KPOS = KPOS + IKU * KSTORE
+        END IF
+        IF ( CCLOUD == 'LIMA' ) THEN
+          TPSENSOR%XCIZ    (:,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+IKU*KSTORE-1), [ IKU, KSTORE ] ) ; KPOS = KPOS + IKU * KSTORE
+          TPSENSOR%XCCZ    (:,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+IKU*KSTORE-1), [ IKU, KSTORE ] ) ; KPOS = KPOS + IKU * KSTORE
+          TPSENSOR%XCRZ    (:,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+IKU*KSTORE-1), [ IKU, KSTORE ] ) ; KPOS = KPOS + IKU * KSTORE
+        END IF
         TPSENSOR%XIWCZ     (:,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+IKU*KSTORE-1), [ IKU, KSTORE ] ) ; KPOS = KPOS + IKU * KSTORE
         TPSENSOR%XLWCZ     (:,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+IKU*KSTORE-1), [ IKU, KSTORE ] ) ; KPOS = KPOS + IKU * KSTORE
         TPSENSOR%XCRARE    (:,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+IKU*KSTORE-1), [ IKU, KSTORE ] ) ; KPOS = KPOS + IKU * KSTORE
diff --git a/src/MNH/modd_type_statprof.f90 b/src/MNH/modd_type_statprof.f90
index b7970e769..933235718 100644
--- a/src/MNH/modd_type_statprof.f90
+++ b/src/MNH/modd_type_statprof.f90
@@ -110,7 +110,6 @@ TYPE, EXTENDS( TSTATPROFDATA ) ::  TPROFILERDATA
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XTHV       ! thv(n)
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XVISIGUL   ! VISI GULTEPE(n)
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XVISIKUN   ! VISI KUNKEL(n)
-  REAL, DIMENSION(:,:),   ALLOCATABLE :: XCIZ       ! Ice number concentration ICE3 (n)
   REAL, DIMENSION(:,:),   ALLOCATABLE :: XRHOD      ! density of dry air/moist air
   REAL, DIMENSION(:,:,:), ALLOCATABLE :: XAER       ! AER*(n) aerosol extinction
 
@@ -323,11 +322,6 @@ SUBROUTINE DATA_ARRAYS_ALLOCATE_PROFILER( TPSENSOR, KSTORE )
     ELSE
       ALLOCATE( TPSENSOR%XVISIKUN  (0, 0) )
     END IF
-    IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) THEN
-      ALLOCATE( TPSENSOR%XCIZ    (IKU, KSTORE) ) ; IVARSIZE = IVARSIZE + IKU
-    ELSE
-      ALLOCATE( TPSENSOR%XCIZ    (0, 0) )
-    END IF
     ALLOCATE( TPSENSOR%XRHOD     (IKU, KSTORE) )        ; IVARSIZE = IVARSIZE + IKU
     ALLOCATE( TPSENSOR%XAER      (IKU, KSTORE, NAER ) ) ; IVARSIZE = IVARSIZE + IKU * NAER
 
@@ -347,7 +341,6 @@ SUBROUTINE DATA_ARRAYS_ALLOCATE_PROFILER( TPSENSOR, KSTORE )
     TPSENSOR%XTHV      (:,:) = XUNDEF
     IF ( CCLOUD == 'C2R2' .OR. CCLOUD == 'KHKO' )  TPSENSOR%XVISIGUL(:,:) = XUNDEF
     IF ( CCLOUD /= 'NONE' .AND. CCLOUD /= 'REVE' ) TPSENSOR%XVISIKUN(:,:) = XUNDEF
-    IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) TPSENSOR%XCIZ      (:,:) = XUNDEF
     TPSENSOR%XRHOD     (:,:) = XUNDEF
     TPSENSOR%XAER      (:,:,:) = XUNDEF
 
@@ -377,7 +370,6 @@ SUBROUTINE DATA_ARRAYS_ALLOCATE_PROFILER( TPSENSOR, KSTORE )
     DEALLOCATE( TPSENSOR%XTHV       )
     DEALLOCATE( TPSENSOR%XVISIGUL   )
     DEALLOCATE( TPSENSOR%XVISIKUN   )
-    DEALLOCATE( TPSENSOR%XCIZ       )
     DEALLOCATE( TPSENSOR%XRHOD      )
     DEALLOCATE( TPSENSOR%XAER       )
 
@@ -532,9 +524,6 @@ SUBROUTINE DATA_ARRAYS_ALLOCATE_PROFILER( TPSENSOR, KSTORE )
     IF ( CCLOUD /= 'NONE' .AND. CCLOUD /= 'REVE' ) THEN
       PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XVISIKUN(:,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
     END IF
-    IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) THEN
-      PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XCIZ(:,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
-    END IF
     PBUFFER(KPOS:KPOS+IKU*ISTORES-1) = RESHAPE( TPSENSOR%XRHOD(:,1:ISTORES), [IKU*ISTORES] ) ; KPOS = KPOS + IKU * ISTORES
     PBUFFER(KPOS:KPOS+IKU*ISTORES*NAER-1) = RESHAPE( TPSENSOR%XAER(:,1:ISTORES,:), [IKU*ISTORES*NAER] )
     KPOS = KPOS + IKU * ISTORES * NAER
@@ -661,9 +650,6 @@ SUBROUTINE DATA_ARRAYS_ALLOCATE_PROFILER( TPSENSOR, KSTORE )
     IF ( CCLOUD /= 'NONE' .AND. CCLOUD /= 'REVE' ) THEN
       TPSENSOR%XVISIKUN(:,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+IKU*KSTORE-1), [ IKU, KSTORE ] ) ; KPOS = KPOS + IKU * KSTORE
     END IF
-    IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) THEN
-      TPSENSOR%XCIZ(:,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+IKU*KSTORE-1), [ IKU, KSTORE ] ) ; KPOS = KPOS + IKU * KSTORE
-    END IF
     TPSENSOR%XRHOD(:,1:KSTORE) = RESHAPE( PBUFFER(KPOS:KPOS+IKU*KSTORE-1), [ IKU, KSTORE ] ) ; KPOS = KPOS + IKU * KSTORE
     TPSENSOR%XAER(:,1:KSTORE,:) = RESHAPE( PBUFFER(KPOS:KPOS+IKU*KSTORE*NAER-1), [ IKU, KSTORE, NAER ] )
     KPOS = KPOS + IKU * KSTORE * NAER
diff --git a/src/MNH/profilern.f90 b/src/MNH/profilern.f90
index 542951238..4c76f1935 100644
--- a/src/MNH/profilern.f90
+++ b/src/MNH/profilern.f90
@@ -93,7 +93,7 @@ USE MODD_ALLPROFILER_n,    ONLY: LDIAG_SURFRAD_PROF
 USE MODD_CST,              ONLY: XCPD, XG, XP00, XPI, XRD, XRV
 USE MODD_DIAG_IN_RUN
 USE MODD_GRID,             ONLY: XBETA, XLON0, XRPK
-USE MODD_NSV,              ONLY: NSV_C2R2BEG
+USE MODD_NSV,              ONLY: NSV_C2R2BEG, NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_NI
 USE MODD_PARAMETERS,       ONLY: JPVEXT, XUNDEF
 USE MODD_PARAM_n,          ONLY: CCLOUD, CRAD
 USE MODD_PROFILER_n
@@ -336,8 +336,13 @@ PROFILER: DO JP = 1, NUMBPROFILER_LOC
     TPROFILERS(JP)%XVISIKUN(:,IN) = TPROFILERS(JP)%INTERP_HOR_FROM_MASSPOINT( ZVISIKUN )
   TPROFILERS(JP)%XZZ  (:,IN) = ZZ(:)
   TPROFILERS(JP)%XRHOD(:,IN) = ZRHOD(:)
-  IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) &
+  IF (CCLOUD=="LIMA") THEN
+    TPROFILERS(JP)%XCIZ(:,IN) = TPROFILERS(JP)%INTERP_HOR_FROM_MASSPOINT( PSV(:,:,:,NSV_LIMA_NI) )
+    TPROFILERS(JP)%XCCZ(:,IN) = TPROFILERS(JP)%INTERP_HOR_FROM_MASSPOINT( PSV(:,:,:,NSV_LIMA_NC) )
+    TPROFILERS(JP)%XCRZ(:,IN) = TPROFILERS(JP)%INTERP_HOR_FROM_MASSPOINT( PSV(:,:,:,NSV_LIMA_NR) )
+  ELSE IF ( CCLOUD=="ICE3" .OR. CCLOUD=="ICE4" ) THEN
     TPROFILERS(JP)%XCIZ(:,IN) = TPROFILERS(JP)%INTERP_HOR_FROM_MASSPOINT( PCIT )
+  END IF
 
   CALL Sensor_wc_compute(   TPROFILERS(JP), IN, PR, PRHODREF )
   CALL Sensor_rare_compute( TPROFILERS(JP), IN, PR, PSV, PRHODREF, PCIT, ZTEMP, ZZ, PSEA )
diff --git a/src/MNH/write_aircraft_balloon.f90 b/src/MNH/write_aircraft_balloon.f90
index 56bef23f4..7f397d9ae 100644
--- a/src/MNH/write_aircraft_balloon.f90
+++ b/src/MNH/write_aircraft_balloon.f90
@@ -625,7 +625,7 @@ IF ( CCLOUD == 'LIMA' ) THEN
   call Add_profile( 'CRAINT',  'Rain concentration',         'kg-1', tpflyer%xcrz(:,:) )
   call Add_profile( 'CICET',   'Ice concentration',          'kg-1', tpflyer%xciz(:,:) )
 ELSE IF ( CCLOUD == 'ICE3' .OR. CCLOUD == 'ICE4' ) THEN
-  call Add_profile( 'CIT', 'Ice concentration', 'm-3', tpflyer%xciz(:,:) )
+  call Add_profile( 'CIT',     'Ice concentration',           'm-3', tpflyer%xciz(:,:) )
 END IF
 
 call Add_profile( 'RARE',    '1D cloud radar reflectivity',            'dBZ', tpflyer%xcrare(:,:) )
diff --git a/src/MNH/write_profilern.f90 b/src/MNH/write_profilern.f90
index bf58e8166..391430f4c 100644
--- a/src/MNH/write_profilern.f90
+++ b/src/MNH/write_profilern.f90
@@ -98,6 +98,7 @@ IPROC = 13 + NRR + NSV
 if ( ccloud == 'C2R2' .or. ccloud == 'KHKO' )  IPROC = IPROC + 1
 if ( ccloud /= 'NONE' .and. ccloud /= 'REVE' ) IPROC = IPROC + 1
 if ( ccloud == 'ICE3' .or. ccloud == 'ICE4' )  IPROC = IPROC + 1
+if ( ccloud == 'LIMA' )  IPROC = IPROC + 3
 IF (LORILAM) IPROC = IPROC + JPMODE * 3
 IF (LDUST) IPROC = IPROC + NMODE_DST * 3
 IF (LDUST .OR. LORILAM .OR. LSALT) IPROC=IPROC+NAER
@@ -136,8 +137,13 @@ jproc_w = jproc
 
 call Add_profile( 'TKE_DISS', 'TKE dissipation rate', 'm2 s-2', tpprofiler%xtke_diss )
 
-if ( ccloud == 'ICE3' .or. ccloud == 'ICE4' ) &
-  call Add_profile( 'CIT',      'Ice concentration',    'kg-3',   tpprofiler%xciz )
+if ( ccloud == 'LIMA' ) then
+  call Add_profile( 'CCLOUDT', 'liquid cloud concentration', 'kg-1', tpprofiler%xccz(:,:) )
+  call Add_profile( 'CRAINT',  'Rain concentration',         'kg-1', tpprofiler%xcrz(:,:) )
+  call Add_profile( 'CICET',   'Ice concentration',          'kg-1', tpprofiler%xciz(:,:) )
+else if ( ccloud == 'ICE3' .or. ccloud == 'ICE4' ) then
+  call Add_profile( 'CIT',     'Ice concentration',           'm-3', tpprofiler%xciz(:,:) )
+end if
 
 if ( nrr >= 1 ) call Add_profile( 'Rv', 'Water vapor mixing ratio',        'kg kg-1', tpprofiler%xr(:,:,1) )
 if ( nrr >= 2 ) call Add_profile( 'Rc', 'Liquid cloud water mixing ratio', 'kg kg-1', tpprofiler%xr(:,:,2) )
-- 
GitLab