!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- !--------------- special set of characters for RCS information !----------------------------------------------------------------- ! $Source$ $Revision$ ! MASDEV4_7 series 2006/10/16 14:23:23 !----------------------------------------------------------------- ! ################### SUBROUTINE SERIES_n ! ################### ! !!**** *SERIES* - routine to compute diagnostics for diachro files (temporal series) !! !! !! PURPOSE !! ------- ! !!** METHOD !! ------ !! !! !! EXTERNAL !! -------- !! NONE !! !! IMPLICIT ARGUMENTS !! ------------------ !! !! REFERENCE !! --------- !! !! !! AUTHOR !! ------ ! V. Ducrocq from contributions of M. Tomasini, S. Donier,... * Meteo France * !! !! MODIFICATIONS !! ------------- !! Original 4/03/2002 !! Oct. 2011 : (P.Le Moigne) Surface series !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! USE MODD_SERIES USE MODD_SERIES_n USE MODD_PARAMETERS USE MODD_CONF, ONLY: NVERB USE MODD_REF, ONLY: XRHODREFZ USE MODD_TIME, ONLY: TDTEXP USE MODD_TYPE_DATE USE MODD_CONF_n, ONLY: LUSERV,LUSERC,LUSERR,LUSERI,LUSERS,LUSERG,LUSERH USE MODD_FIELD_n, ONLY: XTHT,XWT,XUT,XPABST,XRT USE MODD_GRID_n, ONLY: XZZ USE MODD_LUNIT_n, ONLY: CLUOUT USE MODD_PRECIP_n, ONLY: XINPRC,XINPRR,XINPRS,XINPRG,XINPRH, & XACPRC,XACPRR,XACPRS,XACPRG,XACPRH USE MODD_TIME_n, ONLY: TDTCUR ! SURFACE FIELDS USE MODI_GET_SURF_VAR_n ! USE MODE_ll USE MODE_IO_ll ! USE MODI_TEMPORAL_DIST ! IMPLICIT NONE ! !* 0.1 declarations of arguments ! !* 0.2 Local variables ! INTEGER :: IIB,IJB,IKB ! Begin of physical dimensions INTEGER :: IIE,IJE,IKE ! End of physical dimensions INTEGER :: IIU,IJU,IKU INTEGER :: IKMAX ! INTEGER :: IISL, IISH ! Lower and upper limits along x axis ! of y-slice for the sub-domain INTEGER :: IJSL, IJSH ! Lower and upper limits along y axis ! of y-slice for the sub-domain INTEGER :: IIDIM1,IKM INTEGER :: JI,JK,JS ! Loop indices INTEGER :: ISB1,ISB2,ISB3 ! the current process for ! 1st,2nd and 3rd group respectively REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2)) :: ZDIA INTEGER :: ILUOUT ! Logical unit number for output-listing INTEGER :: IRESP ! Return code of FM-routines INTEGER :: ISER CHARACTER (LEN=5), DIMENSION(3) :: YSUF LOGICAL, DIMENSION(SIZE(LINBOX,1),SIZE(LINBOX,2),3) :: GINBOX TYPE (DATE_TIME) :: TZDTCUR ! current date and time !SURFACE FIELDS REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2)) :: ZTS, ZTMNW, ZTBOT, ZCT,ZHML INTEGER :: ILOOP, JLOOP, KI REAL, DIMENSION(:,:), ALLOCATABLE :: ZSERIES ! !------------------------------------------------------------------------------- ! !* 1. INITIALIZATIONS ! --------------- ! CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) ! IKU=SIZE(XTHT,3) CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) CALL GET_DIM_EXT_ll ('B', IIU,IJU) IKB=1+JPVEXT IKE = IKU - JPVEXT IKMAX= IKU - 2*JPVEXT ! ISER=1 WRITE(ILUOUT,*)'LMASKLANDSEA=',LMASKLANDSEA IF (LMASKLANDSEA) ISER=3 YSUF(1)='-GLOB' YSUF(2)='-LAND' YSUF(3)='-SEA ' WRITE(ILUOUT,*)'YSUF=',YSUF GINBOX(:,:,1)=LINBOX(:,:) IF (LMASKLANDSEA) THEN GINBOX(:,:,2)=LINBOXL(:,:) GINBOX(:,:,3)=LINBOXS(:,:) END IF !SURFACE FIELDS IF (LSURF) THEN KI=(IIE-IIB+1)*(IJE-IJB+1) ALLOCATE(ZSERIES(KI,5)) CALL GET_SURF_VAR_n('MESONH',KI,5,PSERIES=ZSERIES) ZTS(:,:)=0. ZTMNW(:,:)=0. ZTBOT(:,:)=0. ZCT(:,:)=0. ZHML(:,:)=0. DO JLOOP=IJB,IJE DO ILOOP=IIB,IIE ZTS(ILOOP,JLOOP)=ZSERIES(ILOOP-1+(IIE-1)*(JLOOP-2),1) ZTMNW(ILOOP,JLOOP)=ZSERIES(ILOOP-1+(IIE-1)*(JLOOP-2),2) ZTBOT(ILOOP,JLOOP)=ZSERIES(ILOOP-1+(IIE-1)*(JLOOP-2),3) ZCT(ILOOP,JLOOP)=ZSERIES(ILOOP-1+(IIE-1)*(JLOOP-2),4) ZHML(ILOOP,JLOOP)=ZSERIES(ILOOP-1+(IIE-1)*(JLOOP-2),5) ENDDO ENDDO print*,'seriesn : MINVAL(ZTS)=', MINVAL(ZTS),'MAXVAL(ZTS)=', MAXVAL(ZTS) IF(NVERB==10) THEN DO JLOOP=IJB-1,IJE+1 DO ILOOP=IIB-1,IIE+1 WRITE(ILUOUT,*)'TS : ',ILOOP,JLOOP,ZTS(ILOOP,JLOOP) WRITE(ILUOUT,*)'TMNW : ',ILOOP,JLOOP,ZTMNW(ILOOP,JLOOP) WRITE(ILUOUT,*)'TBOT : ',ILOOP,JLOOP,ZTBOT(ILOOP,JLOOP) WRITE(ILUOUT,*)'CT : ',ILOOP,JLOOP,ZCT(ILOOP,JLOOP) WRITE(ILUOUT,*)'HML : ',ILOOP,JLOOP,ZHML(ILOOP,JLOOP) ENDDO ENDDO ENDIF ENDIF !end SURFACE FIELDS ! IF(NVERB>=5) WRITE(ILUOUT,*) & 'SERIESn: sizes ', IIB,IJB,IIE,IJE,IKB,IKE,IIU,IJU,IKU,IKMAX ! !* 1.1 initializes current time and time counter ! NSCOUNTD=NSCOUNTD+1 ! TZDTCUR=TDTCUR ! CALL TEMPORAL_DIST(TZDTCUR%TDATE%YEAR,TZDTCUR%TDATE%MONTH,TZDTCUR%TDATE%DAY, & TZDTCUR%TIME,TDTEXP%TDATE%YEAR,TDTEXP%TDATE%MONTH,TDTEXP%TDATE%DAY, & TDTEXP%TIME,XSTRAJT(NSCOUNTD,1)) XSDATIME(13,NSCOUNTD)= TZDTCUR%TDATE%YEAR XSDATIME(14,NSCOUNTD)= TZDTCUR%TDATE%MONTH XSDATIME(15,NSCOUNTD)= TZDTCUR%TDATE%DAY XSDATIME(16,NSCOUNTD)= TZDTCUR%TIME ! !------------------------------------------------------------------------------- ! !* 2. Temporal series t ! ----------------- ! IF (LSERIES1) THEN ISB1=0 DO JI=1,ISER ! !* 2.1 Instant total explicit precipitation (conversion: m/s -> mm/day) ! IF (SIZE(XINPRR)/= 0) THEN ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='INPRT'//YSUF(JI)) THEN XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM( XINPRR(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) & * 3.6E6*24. IF (SIZE(XINPRS)/= 0) XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) = & XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) + & (SUM( XINPRS(IIB:IIE,IJB:IJE), MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) & ) * 3.6E6*24. IF (SIZE(XINPRG)/= 0) XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) = & XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) + & (SUM( XINPRG(IIB:IIE,IJB:IJE), MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) & ) * 3.6E6*24. IF (SIZE(XINPRH)/= 0) XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) = & XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) + & (SUM( XINPRH(IIB:IIE,IJB:IJE), MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) & ) * 3.6E6*24. IF (SIZE(XINPRC)/= 0) XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) = & XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) + & (SUM( XINPRC(IIB:IIE,IJB:IJE), MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) & ) * 3.6E6*24. ELSE WRITE(UNIT=ILUOUT,FMT=1) 'INPRT','1',CSTITLE1(ISB1) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! !* 2.2 Accumulated total explicit precipitation (conversion: m -> mm) ! IF (SIZE(XINPRR)/= 0) THEN ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='ACPRT'//YSUF(JI)) THEN XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM( XACPRR(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) & * 1000. IF (SIZE(XINPRS)/= 0) XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) = & XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) + & SUM( XACPRS(IIB:IIE,IJB:IJE), MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) & * 1000. IF (SIZE(XINPRG)/= 0) XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) = & XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) + & SUM( XACPRG(IIB:IIE,IJB:IJE), MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) & * 1000. IF (SIZE(XINPRH)/= 0) XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) = & XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) + & SUM( XACPRH(IIB:IIE,IJB:IJE), MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) & * 1000. IF (SIZE(XINPRC)/= 0) XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) = & XSSERIES1(1,1,1,NSCOUNTD,1,ISB1) + & SUM( XACPRC(IIB:IIE,IJB:IJE), MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) & * 1000. ELSE WRITE(UNIT=ILUOUT,FMT=1) 'ACPRT','1',CSTITLE1(ISB1) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! !* 2.3 Mixing ratios ! IF (LUSERV) THEN ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='RVT'//YSUF(JI)) THEN ZDIA (:,:) =0. ! Average RV DO JK=IKB,IKE ZDIA(:,:)= XRT(:,:,JK,1)*(XZZ(:,:,JK+1)-XZZ(:,:,JK))*XRHODREFZ(JK)& +ZDIA(:,:) END DO XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM( ZDIA(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RVT ','1',CSTITLE1(ISB1) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! IF (LUSERC) THEN ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='RCT'//YSUF(JI)) THEN ZDIA (:,:) =0. ! Average RC DO JK=IKB,IKE ZDIA(:,:)= XRT(:,:,JK,2)*(XZZ(:,:,JK+1)-XZZ(:,:,JK))*XRHODREFZ(JK)& +ZDIA(:,:) END DO XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM( ZDIA(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RCT ','1',CSTITLE1(ISB1) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! IF (LUSERR) THEN ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='RRT'//YSUF(JI)) THEN ZDIA (:,:) =0. ! Average RR DO JK=IKB,IKE ZDIA(:,:)= XRT(:,:,JK,3)*(XZZ(:,:,JK+1)-XZZ(:,:,JK))*XRHODREFZ(JK)& +ZDIA(:,:) END DO XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM( ZDIA(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RRT ','1',CSTITLE1(ISB1) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! IF (LUSERI) THEN ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='RIT'//YSUF(JI)) THEN ZDIA (:,:) =0. ! Average RI DO JK=IKB,IKE ZDIA(:,:)= XRT(:,:,JK,4)*(XZZ(:,:,JK+1)-XZZ(:,:,JK))*XRHODREFZ(JK)& +ZDIA(:,:) END DO XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM( ZDIA(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RIT ','1',CSTITLE1(ISB1) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! IF (LUSERS) THEN ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='RST'//YSUF(JI)) THEN ZDIA (:,:) =0. ! Average RS DO JK=IKB,IKE ZDIA(:,:)= XRT(:,:,JK,5)*(XZZ(:,:,JK+1)-XZZ(:,:,JK))*XRHODREFZ(JK)& +ZDIA(:,:) END DO XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM( ZDIA(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RST ','1',CSTITLE1(ISB1) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! IF (LUSERG) THEN ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='RGT'//YSUF(JI)) THEN ZDIA (:,:) =0. ! Average RG DO JK=IKB,IKE ZDIA(:,:)= XRT(:,:,JK,6)*(XZZ(:,:,JK+1)-XZZ(:,:,JK))*XRHODREFZ(JK)& +ZDIA(:,:) END DO XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM( ZDIA(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RGT ','1',CSTITLE1(ISB1) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! IF (LUSERH) THEN ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='RHT'//YSUF(JI)) THEN ZDIA (:,:) =0. ! Average RG DO JK=IKB,IKE ZDIA(:,:)= XRT(:,:,JK,7)*(XZZ(:,:,JK+1)-XZZ(:,:,JK))*XRHODREFZ(JK)& +ZDIA(:,:) END DO XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM( ZDIA(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RHT ','1',CSTITLE1(ISB1) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF !SURFACE FIELDS IF (LSURF) THEN ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='TS_WATER'//YSUF(JI)) THEN XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM(ZTS(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) END IF ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='T_MNW_WATER'//YSUF(JI)) THEN XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM(ZTMNW(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) END IF ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='T_BOT_WATER'//YSUF(JI)) THEN XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM(ZTBOT(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) END IF ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='CT_WATER'//YSUF(JI)) THEN XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM(ZCT(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) END IF ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='HML_WATER'//YSUF(JI)) THEN XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)= SUM(ZHML(IIB:IIE,IJB:IJE), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI) ) END IF ENDIF !end SURFACE FIELDS END DO ! !* 2.4 Vertical velocity ! DO JI=1,ISER IF (LWMINMAX) THEN ! Max vertical velocity ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='WMAX'//YSUF(JI)) THEN XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)=MAXVAL(XWT(IIB:IIE,IJB:IJE,IKB:IKE), & MASK=SPREAD(GINBOX(IIB:IIE,IJB:IJE,JI),DIM=3,NCOPIES=IKMAX)) ELSE WRITE(UNIT=ILUOUT,FMT=1) 'WMAX ','1',CSTITLE1(ISB1) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF ! Min vertical velocity ISB1=ISB1+1 IF (TRIM(CSTITLE1(ISB1))=='WMIN'//YSUF(JI)) THEN XSSERIES1(1,1,1,NSCOUNTD,1,ISB1)=MINVAL(XWT(IIB:IIE,IJB:IJE,IKB:IKE), & MASK=SPREAD(GINBOX(IIB:IIE,IJB:IJE,JI),DIM=3,NCOPIES=IKMAX)) ELSE WRITE(UNIT=ILUOUT,FMT=1) 'WMIN ','1',CSTITLE1(ISB1) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF ENDIF END DO ! ENDIF ! !------------------------------------------------------------------------------- ! !* 3. Temporal series (z,t) ! --------------------- ! IF (LSERIES2) THEN ISB2=0 DO JI=1,ISER ! !* 3.1 Vertical velocity ! ISB2=ISB2+1 IF (TRIM(CSTITLE2(ISB2))=='WT'//YSUF(JI)) THEN DO JK=IKB,IKE IKM=JK-IKB +1 XSSERIES2(1,1,IKM,NSCOUNTD,1,ISB2)=SUM( XWT (IIB:IIE,IJB:IJE,JK ), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI)) END DO ELSE WRITE(UNIT=ILUOUT,FMT=1) 'WT ','2',CSTITLE2(ISB2) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF ! !* 3.2 Potential Temperature ! ISB2=ISB2+1 IF (TRIM(CSTITLE2(ISB2))=='THT'//YSUF(JI)) THEN DO JK=IKB,IKE IKM=JK-IKB +1 XSSERIES2(1,1,IKM,NSCOUNTD,1,ISB2)=SUM( XTHT (IIB:IIE,IJB:IJE,JK ), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI)) END DO ELSE WRITE(UNIT=ILUOUT,FMT=1) 'THT ','2',CSTITLE2(ISB2) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF ! !* 3.3 Pressure ! ISB2=ISB2+1 IF (TRIM(CSTITLE2(ISB2))=='PABST'//YSUF(JI)) THEN DO JK=IKB,IKE IKM=JK-IKB +1 XSSERIES2(1,1,IKM,NSCOUNTD,1,ISB2)=SUM(XPABST (IIB:IIE,IJB:IJE,JK ), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI)) END DO ELSE WRITE(UNIT=ILUOUT,FMT=1) 'PASBT','2',CSTITLE2(ISB2) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF ! !* 3.4 Vapor ! IF (LUSERV) THEN ISB2=ISB2+1 IF (TRIM(CSTITLE2(ISB2))=='RVT'//YSUF(JI)) THEN DO JK=IKB,IKE IKM=JK-IKB +1 XSSERIES2(1,1,IKM,NSCOUNTD,1,ISB2)=SUM( XRT (IIB:IIE,IJB:IJE,JK,1),& MASK=GINBOX(IIB:IIE,IJB:IJE,JI)) END DO ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RVT ','2',CSTITLE2(ISB2) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! !* 3.5 Cloud water ! IF (LUSERC) THEN ISB2=ISB2+1 IF (TRIM(CSTITLE2(ISB2))=='RCT'//YSUF(JI)) THEN DO JK=IKB,IKE IKM=JK-IKB +1 XSSERIES2(1,1,IKM,NSCOUNTD,1,ISB2)=SUM( XRT (IIB:IIE,IJB:IJE,JK,2),& MASK=GINBOX(IIB:IIE,IJB:IJE,JI)) END DO ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RCT ','2',CSTITLE2(ISB2) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! !* 3.6 Rainwater ! IF (LUSERR) THEN ISB2=ISB2+1 IF (TRIM(CSTITLE2(ISB2))=='RRT'//YSUF(JI)) THEN DO JK=IKB,IKE IKM=JK-IKB +1 XSSERIES2(1,1,IKM,NSCOUNTD,1,ISB2)=SUM( XRT (IIB:IIE,IJB:IJE,JK,3),& MASK=GINBOX(IIB:IIE,IJB:IJE,JI)) END DO ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RRT ','2',CSTITLE2(ISB2) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! !* 3.7 Primary ice ! IF (LUSERI) THEN ISB2=ISB2+1 IF (TRIM(CSTITLE2(ISB2))=='RIT'//YSUF(JI)) THEN DO JK=IKB,IKE IKM=JK-IKB +1 XSSERIES2(1,1,IKM,NSCOUNTD,1,ISB2)=SUM( XRT (IIB:IIE,IJB:IJE,JK,4), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI)) END DO ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RIT ','2',CSTITLE2(ISB2) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! !* 3.7 Snow ! IF (LUSERS) THEN ISB2=ISB2+1 IF (TRIM(CSTITLE2(ISB2))=='RST'//YSUF(JI)) THEN DO JK=IKB,IKE IKM=JK-IKB +1 XSSERIES2(1,1,IKM,NSCOUNTD,1,ISB2)=SUM( XRT (IIB:IIE,IJB:IJE,JK,5), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI)) END DO ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RST ','2',CSTITLE2(ISB2) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! !* 3.8 Graupel ! IF (LUSERG) THEN ISB2=ISB2+1 IF (TRIM(CSTITLE2(ISB2))=='RGT'//YSUF(JI)) THEN DO JK=IKB,IKE IKM=JK-IKB +1 XSSERIES2(1,1,IKM,NSCOUNTD,1,ISB2)=SUM( XRT (IIB:IIE,IJB:IJE,JK,6), & MASK=GINBOX(IIB:IIE,IJB:IJE,JI)) END DO ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RGT ','2',CSTITLE2(ISB2) !callabortstop CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) CALL ABORT STOP END IF END IF ! END DO END IF ! 1 FORMAT("SERIES: ORDER IS NOT CORRECT FOR ",A5,".CSTITLE",A1,'=',A10) !------------------------------------------------------------------------------- ! !* 4. Temporal series (x,t) ! --------------------- ! IIDIM1=0 IF (NBJSLICE > 0 ) THEN ! DO JS=1,NBJSLICE IF (LSERIES3(JS)) THEN IIDIM1=NISH(JS) - NISL(JS) + 1 IISL=NISL(JS) IISH=NISH(JS) IJSL=NJSLICESL(JS) IJSH=NJSLICESH(JS) ! ISB3= (JS-1) * NSTEMP_SERIE3 ! !* 4.1 U at level KCLS ! ISB3=ISB3+1 XSSERIES3(1:IIDIM1,1,1,NSCOUNTD,1,ISB3)= & SUM( XUT (IISL:IISH,IJSL:IJSH,NKCLS+JPVEXT), DIM=2 ) ! !* 4.2 W at level KCLA ! ISB3=ISB3+1 XSSERIES3(1:IIDIM1,1,1,NSCOUNTD,1,ISB3)= & SUM( XWT (IISL:IISH,IJSL:IJSH,NKCLA+JPVEXT), DIM=2 ) ! !* 4.3 Mean W between KLOW and KUP ! ISB3=ISB3+1 ZDIA (:,:)=0. DO JK=NKLOW+JPVEXT,NKUP+JPVEXT ZDIA(:,:)= XWT(:,:,JK)*(XZZ(:,:,JK+1)-XZZ(:,:,JK)) + ZDIA(:,:) END DO ZDIA(:,:)= ZDIA(:,:)/(XZZ(:,:,NKUP+JPVEXT+1)-XZZ(:,:,NKLOW+JPVEXT)) XSSERIES3(1:IIDIM1,1,1,NSCOUNTD,1,ISB3)= & SUM( ZDIA (IISL:IISH,IJSL:IJSH) , DIM=2 ) ! IF (LUSERV) THEN ! !* 4.4 RV at level KCLS ! ISB3=ISB3+1 XSSERIES3(1:IIDIM1,1,1,NSCOUNTD,1,ISB3)= & SUM( XRT (IISL:IISH,IJSL:IJSH,NKCLS+JPVEXT,1),DIM=2 ) ! !* 4.5 Rv at level KMID ! ISB3=ISB3+1 XSSERIES3(1:IIDIM1,1,1,NSCOUNTD,1,ISB3)= & SUM( XRT (IISL:IISH,IJSL:IJSH,NKMID+JPVEXT,1),DIM=2 ) ! END IF ! !* 4.6 Mean rc between 0 and KUP ! IF (LUSERC) THEN ISB3=ISB3+1 ZDIA (:,:)=0. DO JK=IKB,NKUP+JPVEXT ZDIA(:,:)= XRT(:,:,JK,2)*(XZZ(:,:,JK+1)-XZZ(:,:,JK)) + ZDIA(:,:) END DO ZDIA(:,:)= ZDIA(:,:)/(XZZ(:,:,NKUP+JPVEXT+1)-XZZ(:,:,IKB)) XSSERIES3(1:IIDIM1,1,1,NSCOUNTD,1,ISB3)= & SUM( ZDIA (IISL:IISH,IJSL:IJSH) , DIM=2 ) END IF ! !* 4.7 Rr at level KCLS ! IF (LUSERR) THEN ISB3=ISB3+1 XSSERIES3(1:IIDIM1,1,1,NSCOUNTD,1,ISB3)= & SUM( XRT(IISL:IISH,IJSL:IJSH,NKCLS+JPVEXT,3) , DIM=2 ) END IF END IF END DO ! ENDIF ! !------------------------------------------------------------------------------- ! END SUBROUTINE SERIES_n