From 52acdb96274a89128dcc2a229c80ac46f18756e9 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Wed, 5 May 2021 16:11:50 +0200 Subject: [PATCH] Philippe Wautelet 05/05/2021: add CSMASK1/2/3 variables for series --- src/MNH/ini_seriesn.f90 | 62 +++++++++++++++++++++++----------------- src/MNH/modd_seriesn.f90 | 15 +++++++++- 2 files changed, 49 insertions(+), 28 deletions(-) diff --git a/src/MNH/ini_seriesn.f90 b/src/MNH/ini_seriesn.f90 index dbb003018..45bdbdcca 100644 --- a/src/MNH/ini_seriesn.f90 +++ b/src/MNH/ini_seriesn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2021 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. @@ -43,7 +43,7 @@ ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg ! P. Wautelet 12/04/2019: use standard measurement units ! P. Wautelet 13/09/2019: budget: simplify and modernize date/time management -! +! P. Wautelet 05/05/2021: add CSMASK1/2/3 variables !------------------------------------------------------------------------------- ! !* 0. Declaration @@ -88,6 +88,7 @@ INTEGER :: IIDIM1 ! I size of the slice INTEGER :: JJ,JI ! loop indices INTEGER :: ISB1,ISB2,ISB3 INTEGER :: ISER +CHARACTER (LEN=4), DIMENSION(3) :: YMASK CHARACTER (LEN=5), DIMENSION(3) :: YSUF INTEGER :: ILUOUT ! Logical unit number for output-listing INTEGER :: IRESP ! Return code of FM-routines @@ -258,6 +259,9 @@ ALLOCATE( CSTITLE3 (NSTEMP_SERIE3) ) ALLOCATE( CSUNIT1 (NSTEMP_SERIE1) ) ALLOCATE( CSUNIT2 (NSTEMP_SERIE2) ) ALLOCATE( CSUNIT3 (NSTEMP_SERIE3) ) +ALLOCATE( CSMASK1 (NSTEMP_SERIE1) ) +ALLOCATE( CSMASK2 (NSTEMP_SERIE2) ) +! ALLOCATE( CSMASK3 (NSTEMP_SERIE3) ) ALLOCATE( NSGRIDD1 (NSTEMP_SERIE1) ) ALLOCATE( NSGRIDD2 (NSTEMP_SERIE2) ) ALLOCATE( NSGRIDD3 (NSTEMP_SERIE3) ) @@ -304,6 +308,10 @@ IF (LMASKLANDSEA) ISER=3 YSUF(1)='-GLOB' YSUF(2)='-LAND' YSUF(3)='-SEA ' + +YMASK(1) = 'GLOB' +YMASK(2) = 'LAND' +YMASK(3) = 'SEA' ! !* 2.1 Temporal series t ! ----------------- @@ -319,38 +327,38 @@ ISB1=0 DO JI=1,ISER ! total surface explicit precipitations IF (SIZE(XINPRR)/=0) THEN - ISB1=ISB1+1 ; CSTITLE1(ISB1)='INPRT'//YSUF(JI) ; CSUNIT1(ISB1)='mm day-1' - ISB1=ISB1+1 ; CSTITLE1(ISB1)='ACPRT'//YSUF(JI) ; CSUNIT1(ISB1)='mm' + ISB1=ISB1+1 ; CSTITLE1(ISB1)='INPRT'//YSUF(JI) ; CSUNIT1(ISB1)='mm day-1' ; CSMASK1(ISB1) = YMASK(JI) + ISB1=ISB1+1 ; CSTITLE1(ISB1)='ACPRT'//YSUF(JI) ; CSUNIT1(ISB1)='mm' ; CSMASK1(ISB1) = YMASK(JI) END IF ! Mixing ratios IF (LUSERV) THEN - ISB1=ISB1+1 ; CSTITLE1(ISB1)='RVT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' + ISB1=ISB1+1 ; CSTITLE1(ISB1)='RVT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' ; CSMASK1(ISB1) = YMASK(JI) END IF IF (LUSERC) THEN - ISB1=ISB1+1 ; CSTITLE1(ISB1)='RCT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' + ISB1=ISB1+1 ; CSTITLE1(ISB1)='RCT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' ; CSMASK1(ISB1) = YMASK(JI) END IF IF (LUSERR) THEN - ISB1=ISB1+1 ; CSTITLE1(ISB1)='RRT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' + ISB1=ISB1+1 ; CSTITLE1(ISB1)='RRT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' ; CSMASK1(ISB1) = YMASK(JI) ENDIF IF (LUSERI) THEN - ISB1=ISB1+1 ; CSTITLE1(ISB1)='RIT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' + ISB1=ISB1+1 ; CSTITLE1(ISB1)='RIT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' ; CSMASK1(ISB1) = YMASK(JI) END IF IF (LUSERS) THEN - ISB1=ISB1+1 ; CSTITLE1(ISB1)='RST'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' + ISB1=ISB1+1 ; CSTITLE1(ISB1)='RST'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' ; CSMASK1(ISB1) = YMASK(JI) END IF IF (LUSERG) THEN - ISB1=ISB1+1 ; CSTITLE1(ISB1)='RGT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' + ISB1=ISB1+1 ; CSTITLE1(ISB1)='RGT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' ; CSMASK1(ISB1) = YMASK(JI) END IF IF (LUSERH) THEN - ISB1=ISB1+1 ; CSTITLE1(ISB1)='RHT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' + ISB1=ISB1+1 ; CSTITLE1(ISB1)='RHT'//YSUF(JI) ; CSUNIT1(ISB1)='kg m-2' ; CSMASK1(ISB1) = YMASK(JI) END IF ! SURFACE FIELDS IF (LSURF) THEN - ISB1=ISB1+1 ; CSTITLE1(ISB1)='TS_WATER'//YSUF(JI) ; CSUNIT1(ISB1)='K' - ISB1=ISB1+1 ; CSTITLE1(ISB1)='T_MNW_WATER'//YSUF(JI) ; CSUNIT1(ISB1)='K' - ISB1=ISB1+1 ; CSTITLE1(ISB1)='T_BOT_WATER'//YSUF(JI) ; CSUNIT1(ISB1)='K' - ISB1=ISB1+1 ; CSTITLE1(ISB1)='CT_WATER'//YSUF(JI) ; CSUNIT1(ISB1)='1' - ISB1=ISB1+1 ; CSTITLE1(ISB1)='HML_WATER'//YSUF(JI) ; CSUNIT1(ISB1)='m' + ISB1=ISB1+1 ; CSTITLE1(ISB1)='TS_WATER'//YSUF(JI) ; CSUNIT1(ISB1)='K' ; CSMASK1(ISB1) = YMASK(JI) + ISB1=ISB1+1 ; CSTITLE1(ISB1)='T_MNW_WATER'//YSUF(JI) ; CSUNIT1(ISB1)='K' ; CSMASK1(ISB1) = YMASK(JI) + ISB1=ISB1+1 ; CSTITLE1(ISB1)='T_BOT_WATER'//YSUF(JI) ; CSUNIT1(ISB1)='K' ; CSMASK1(ISB1) = YMASK(JI) + ISB1=ISB1+1 ; CSTITLE1(ISB1)='CT_WATER'//YSUF(JI) ; CSUNIT1(ISB1)='1' ; CSMASK1(ISB1) = YMASK(JI) + ISB1=ISB1+1 ; CSTITLE1(ISB1)='HML_WATER'//YSUF(JI) ; CSUNIT1(ISB1)='m' ; CSMASK1(ISB1) = YMASK(JI) ENDIF ! end SURFACE FIELDS END DO @@ -358,9 +366,9 @@ END DO IF (LWMINMAX) THEN DO JI=1,ISER ! Max of vertical speed - ISB1=ISB1+1 ; CSTITLE1(ISB1)='WMAX'//YSUF(JI) ; CSUNIT1(ISB1)='m s-1' ; NSGRIDD1(ISB1)=4 + ISB1=ISB1+1 ; CSTITLE1(ISB1)='WMAX'//YSUF(JI) ; CSUNIT1(ISB1)='m s-1' ; NSGRIDD1(ISB1)=4 ; CSMASK1(ISB1) = YMASK(JI) ! Min of vertical speed - ISB1=ISB1+1 ; CSTITLE1(ISB1)='WMIN'//YSUF(JI) ; CSUNIT1(ISB1)='m s-1' ; NSGRIDD1(ISB1)=4 + ISB1=ISB1+1 ; CSTITLE1(ISB1)='WMIN'//YSUF(JI) ; CSUNIT1(ISB1)='m s-1' ; NSGRIDD1(ISB1)=4 ; CSMASK1(ISB1) = YMASK(JI) END DO END IF ! @@ -384,29 +392,29 @@ NSGRIDD2(:)=1 ISB2=0 DO JI=1,ISER ! Vertical velocity - ISB2=ISB2+1 ; CSTITLE2(ISB2)='WT'//YSUF(JI) ; CSUNIT2(ISB2)='m s-1' ; NSGRIDD2(ISB2)=4 + ISB2=ISB2+1 ; CSTITLE2(ISB2)='WT'//YSUF(JI) ; CSUNIT2(ISB2)='m s-1' ; CSMASK2(ISB2) = YMASK(JI) ; NSGRIDD2(ISB2)=4 ! Potential temperature - ISB2=ISB2+1 ; CSTITLE2(ISB2)='THT'//YSUF(JI) ; CSUNIT2(ISB2)='K' + ISB2=ISB2+1 ; CSTITLE2(ISB2)='THT'//YSUF(JI) ; CSUNIT2(ISB2)='K' ; CSMASK2(ISB2) = YMASK(JI) ! Pressure - ISB2=ISB2+1 ; CSTITLE2(ISB2)='PABST'//YSUF(JI) ; CSUNIT2(ISB2)='Pa' + ISB2=ISB2+1 ; CSTITLE2(ISB2)='PABST'//YSUF(JI) ; CSUNIT2(ISB2)='Pa' ; CSMASK2(ISB2) = YMASK(JI) ! Mixing ratios IF (LUSERV) THEN - ISB2=ISB2+1 ; CSTITLE2(ISB2)='RVT'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' + ISB2=ISB2+1 ; CSTITLE2(ISB2)='RVT'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' ; CSMASK2(ISB2) = YMASK(JI) END IF IF (LUSERC) THEN - ISB2=ISB2+1 ; CSTITLE2(ISB2)='RCT'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' + ISB2=ISB2+1 ; CSTITLE2(ISB2)='RCT'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' ; CSMASK2(ISB2) = YMASK(JI) END IF IF (LUSERR) THEN - ISB2=ISB2+1 ; CSTITLE2(ISB2)='RRT'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' + ISB2=ISB2+1 ; CSTITLE2(ISB2)='RRT'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' ; CSMASK2(ISB2) = YMASK(JI) END IF IF (LUSERI) THEN - ISB2=ISB2+1 ; CSTITLE2(ISB2)='RIT'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' + ISB2=ISB2+1 ; CSTITLE2(ISB2)='RIT'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' ; CSMASK2(ISB2) = YMASK(JI) END IF IF (LUSERS) THEN - ISB2=ISB2+1 ; CSTITLE2(ISB2)='RST'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' + ISB2=ISB2+1 ; CSTITLE2(ISB2)='RST'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' ; CSMASK2(ISB2) = YMASK(JI) END IF IF (LUSERG) THEN - ISB2=ISB2+1 ; CSTITLE2(ISB2)='RGT'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' + ISB2=ISB2+1 ; CSTITLE2(ISB2)='RGT'//YSUF(JI) ; CSUNIT2(ISB2)='kg kg-1' ; CSMASK2(ISB2) = YMASK(JI) END IF END DO ! diff --git a/src/MNH/modd_seriesn.f90 b/src/MNH/modd_seriesn.f90 index 03ab9f206..b407ae675 100644 --- a/src/MNH/modd_seriesn.f90 +++ b/src/MNH/modd_seriesn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2021 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. @@ -33,6 +33,7 @@ !! Oct. 10,1998 (Lafore) adaptation of Diagnostics !! to the sequential nesting version ! P. Wautelet 13/09/2019: budget: simplify and modernize date/time management +! P. Wautelet 05/05/2021: add CSMASK1/2/3 variables !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -79,6 +80,9 @@ TYPE SERIES_t ! associated with the 1st group CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSUNIT2=>NULL() ! with the 2nd CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSUNIT3=>NULL() ! with the 3rd + CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK1=>NULL() + CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK2=>NULL() +! CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK3=>NULL() INTEGER , DIMENSION(:) ,POINTER :: NSGRIDD1=>NULL() !grid indicator for the 1st serie INTEGER , DIMENSION(:) ,POINTER :: NSGRIDD2=>NULL() ! for the 2nd INTEGER , DIMENSION(:) ,POINTER :: NSGRIDD3=>NULL() ! for the 3rd @@ -135,6 +139,9 @@ CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSTITLE3=>NULL() CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSUNIT1=>NULL() CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSUNIT2=>NULL() CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSUNIT3=>NULL() +CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK1=>NULL() +CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK2=>NULL() +! CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK3=>NULL() INTEGER , DIMENSION(:) ,POINTER :: NSGRIDD1=>NULL() INTEGER , DIMENSION(:) ,POINTER :: NSGRIDD2=>NULL() INTEGER , DIMENSION(:) ,POINTER :: NSGRIDD3=>NULL() @@ -181,6 +188,9 @@ SERIES_MODEL(KFROM)%CSTITLE3=>CSTITLE3 SERIES_MODEL(KFROM)%CSUNIT1=>CSUNIT1 SERIES_MODEL(KFROM)%CSUNIT2=>CSUNIT2 SERIES_MODEL(KFROM)%CSUNIT3=>CSUNIT3 +SERIES_MODEL(KFROM)%CSMASK1=>CSMASK1 +SERIES_MODEL(KFROM)%CSMASK2=>CSMASK2 +! SERIES_MODEL(KFROM)%CSMASK3=>CSMASK3 SERIES_MODEL(KFROM)%NSGRIDD1=>NSGRIDD1 SERIES_MODEL(KFROM)%NSGRIDD2=>NSGRIDD2 SERIES_MODEL(KFROM)%NSGRIDD3=>NSGRIDD3 @@ -220,6 +230,9 @@ CSTITLE3=>SERIES_MODEL(KTO)%CSTITLE3 CSUNIT1=>SERIES_MODEL(KTO)%CSUNIT1 CSUNIT2=>SERIES_MODEL(KTO)%CSUNIT2 CSUNIT3=>SERIES_MODEL(KTO)%CSUNIT3 +CSMASK1=>SERIES_MODEL(KTO)%CSMASK1 +CSMASK2=>SERIES_MODEL(KTO)%CSMASK2 +! CSMASK3=>SERIES_MODEL(KTO)%CSMASK3 NSGRIDD1=>SERIES_MODEL(KTO)%NSGRIDD1 NSGRIDD2=>SERIES_MODEL(KTO)%NSGRIDD2 NSGRIDD3=>SERIES_MODEL(KTO)%NSGRIDD3 -- GitLab