Skip to content
Snippets Groups Projects
Commit 52acdb96 authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe Wautelet 05/05/2021: add CSMASK1/2/3 variables for series

parent 660bd7bf
No related branches found
No related tags found
No related merge requests found
!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
!
......
!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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment