diff --git a/src/MNH/modd_aircraft_balloon.f90 b/src/MNH/modd_aircraft_balloon.f90 index 60cc53139a13d928a01c4ccde683070a6a137620..4f71f50fcc3b61fd1118e120068a9e519641605a 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 4710e232db0755051b61d373b717b76c7944e9fa..4d89d9ad30944d5488a54df8201b034c3849c836 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 b7970e769fad6b4bd921d8d476e73eb16355bd8c..933235718d0480315b9ac08e85536388238b0e45 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 5429512384f545adcf13c63c6823996d5b12b44b..4c76f19357c32b6cd9daafee84abbe3f41a3c652 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 56bef23f4c7de161bd24606cf6c68bff5b050a77..7f397d9ae72df583a5611bdf5c751a53783db020 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 bf58e8166d649f37ca6da7e60bedd6b5a4475b8f..391430f4c41c0088c43d5679bcbe3f1e573fdfbc 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) )