-
WAUTELET Philippe authoredWAUTELET Philippe authored
write_lesn.f90 60.56 KiB
!MNH_LIC Copyright 2000-2020 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.
!-----------------------------------------------------------------
!######################
module mode_write_les_n
!######################
use modd_field, only: tfield_metadata_base
implicit none
private
public :: Write_les_n
type(tfield_metadata_base) :: tfieldx
type(tfield_metadata_base) :: tfieldy
contains
!###################################
subroutine Write_les_n( tpdiafile )
!###################################
!
!
!!**** *WRITE_LES_n* writes the LES final diagnostics for model _n
!!
!!
!! PURPOSE
!! -------
!!
!! EXTERNAL
!! --------
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!! REFERENCE
!! ---------
!!
!! AUTHOR
!! ------
!! V. Masson
!!
!! MODIFICATIONS
!! -------------
!! Original 07/02/00
!! 01/02/01 (D. Gazen) add module MODD_NSV for NSV variable
!! 06/11/02 (V. Masson) some minor bugs
!! 01/04/03 (V. Masson) idem
!! 10/10/09 (P. Aumond) Add user multimaskS
!! 11/15 (C.Lac) Add production terms of TKE
!! 10/2016 (C.Lac) Add droplet deposition
! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
! C. Lac 02/2019: add rain fraction as a LES diagnostic
! P. Wautelet 13/09/2019: budget: simplify and modernize date/time management
! P. Wautelet 12/10/2020: remove HLES_AVG dummy argument and group all 4 calls
! P. Wautelet 10/2020: restructure subroutines to use tfield_metadata_base type
! --------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_CST
USE MODD_IO, ONLY: TFILEDATA
USE MODD_LES
USE MODD_LES_n
USE MODD_FIELD_n
USE MODD_CONF_n
USE MODD_PARAM_n
USE MODD_TURB_n
USE MODD_GRID_n
USE MODD_NSV, ONLY : NSV
USE MODD_PARAM_ICE, ONLY : LDEPOSC
USE MODD_PARAM_C2R2, ONLY : LDEPOC
!
USE MODE_ll
!
USE MODE_LES_DIACHRO
use mode_les_spec_n, only: Les_spec_n
USE MODE_MODELN_HANDLER
use mode_write_les_budget_n, only: Write_les_budget_n
use mode_write_les_rt_budget_n, only: Write_les_rt_budget_n
use mode_write_les_sv_budget_n, only: Write_les_sv_budget_n
!
!
IMPLICIT NONE
!
!
!* 0.1 declarations of arguments
!
TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write
!
!
!* 0.2 declaration of local variables
!
INTEGER :: IMASK
!
INTEGER :: JSV ! scalar loop counter
INTEGER :: JI ! loop counter
INTEGER :: JPDF ! pdf loop counter
!
CHARACTER(len=9), DIMENSION(NLES_MASKS) :: YSUBTITLE
CHARACTER(len=5) :: YGROUP
!
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZAVG_PTS_ll
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZUND_PTS_ll
REAL :: ZCART_PTS_ll
INTEGER :: IMI ! Current model inde
CHARACTER(LEN=1) :: HLES_AVG
character(len=1),DIMENSION(4) :: yles_avg
integer :: javg
!
!
!-------------------------------------------------------------------------------
!
IF (.NOT. LLES) RETURN
!
!* 1. Initializations
! ---------------
!
IMI = GET_CURRENT_MODEL_INDEX()
!
!
!* 1.1 Normalization variables
! -----------------------
!
IF (CLES_NORM_TYPE/='NONE' ) THEN
ALLOCATE(XLES_NORM_M (NLES_TIMES))
ALLOCATE(XLES_NORM_S (NLES_TIMES))
ALLOCATE(XLES_NORM_K (NLES_TIMES))
ALLOCATE(XLES_NORM_RHO(NLES_TIMES))
ALLOCATE(XLES_NORM_RV (NLES_TIMES))
ALLOCATE(XLES_NORM_SV (NLES_TIMES,NSV))
ALLOCATE(XLES_NORM_P (NLES_TIMES))
!
IF (CLES_NORM_TYPE=='CONV') THEN
WHERE (XLES_WSTAR(:)>0.)
XLES_NORM_M(:) = XLES_BL_HEIGHT(:)
XLES_NORM_S(:) = XLES_NORM_M(:) / XLES_WSTAR(:)
XLES_NORM_K(:) = XLES_Q0(:) / XLES_WSTAR(:)
XLES_NORM_RHO(:) = XLES_MEAN_RHO(1,:,1)
XLES_NORM_RV(:) = XLES_E0(:) / XLES_WSTAR(:)
XLES_NORM_P(:) = XLES_MEAN_RHO(1,:,1) * XLES_WSTAR(:)**2
ELSEWHERE
XLES_NORM_M(:) = 0.
XLES_NORM_S(:) = 0.
XLES_NORM_K(:) = 0.
XLES_NORM_RHO(:) = 0.
XLES_NORM_RV(:) = 0.
XLES_NORM_P(:) = 0.
END WHERE
DO JSV=1,NSV
WHERE (XLES_WSTAR(:)>0.)
XLES_NORM_SV(:,JSV)= XLES_SV0(:,JSV) / XLES_WSTAR(:)
ELSEWHERE
XLES_NORM_SV(:,JSV)= 0.
END WHERE
END DO
ELSE IF (CLES_NORM_TYPE=='EKMA') THEN
WHERE (XLES_USTAR(:)>0.)
XLES_NORM_M(:) = XLES_BL_HEIGHT(:)
XLES_NORM_S(:) = XLES_NORM_M(:) / XLES_USTAR(:)
XLES_NORM_K(:) = XLES_Q0(:) / XLES_USTAR(:)
XLES_NORM_RHO(:) = XLES_MEAN_RHO(1,:,1)
XLES_NORM_RV(:) = XLES_E0(:) / XLES_USTAR(:)
XLES_NORM_P(:) = XLES_MEAN_RHO(1,:,1) * XLES_USTAR(:)**2
ELSEWHERE
XLES_NORM_M(:) = 0.
XLES_NORM_S(:) = 0.
XLES_NORM_K(:) = 0.
XLES_NORM_RHO(:) = 0.
XLES_NORM_RV(:) = 0.
XLES_NORM_P(:) = 0.
END WHERE
DO JSV=1,NSV
WHERE (XLES_USTAR(:)>0.)
XLES_NORM_SV(:,JSV)= XLES_SV0(:,JSV) / XLES_USTAR(:)
ELSEWHERE
XLES_NORM_SV(:,JSV)= 0.
END WHERE
END DO
ELSE IF (CLES_NORM_TYPE=='MOBU') THEN
XLES_NORM_M(:) = XLES_MO_LENGTH(:)
WHERE (XLES_USTAR(:)>0.)
XLES_NORM_S(:) = XLES_NORM_M(:) / XLES_USTAR(:)
XLES_NORM_K(:) = XLES_Q0(:) / XLES_USTAR(:)
XLES_NORM_RHO(:) = XLES_MEAN_RHO(1,:,1)
XLES_NORM_RV(:) = XLES_E0(:) / XLES_USTAR(:)
XLES_NORM_P(:) = XLES_MEAN_RHO(1,:,1) * XLES_USTAR(:)**2
ELSEWHERE
XLES_NORM_S(:) = 0.
XLES_NORM_K(:) = 0.
XLES_NORM_RHO(:) = 0.
XLES_NORM_RV(:) = 0.
XLES_NORM_P(:) = 0.
END WHERE
DO JSV=1,NSV
WHERE (XLES_USTAR(:)>0.)
XLES_NORM_SV(:,JSV)= XLES_SV0(:,JSV) / XLES_USTAR(:)
ELSEWHERE
XLES_NORM_SV(:,JSV)= 0.
END WHERE
END DO
END IF
END IF
!
!* 1.2 Initializations for WRITE_DIACHRO
! ---------------------------------
!
NLES_CURRENT_TIMES=NLES_TIMES
!
ALLOCATE(XLES_CURRENT_Z(NLES_K))
XLES_CURRENT_Z(:) = XLES_Z(:)
!
XLES_CURRENT_ZS = XLES_ZS
!
NLES_CURRENT_IINF=NLESn_IINF(IMI)
NLES_CURRENT_ISUP=NLESn_ISUP(IMI)
NLES_CURRENT_JINF=NLESn_JINF(IMI)
NLES_CURRENT_JSUP=NLESn_JSUP(IMI)
!
XLES_CURRENT_DOMEGAX=XDXHAT(1)
XLES_CURRENT_DOMEGAY=XDYHAT(1)
!
!
!
!* 2. (z,t) profiles (all masks)
! --------------
IMASK = 1
YSUBTITLE(IMASK) = " (cart)"
IF (LLES_NEB_MASK) THEN
IMASK=IMASK+1
YSUBTITLE(IMASK) = " (neb)"
IMASK=IMASK+1
YSUBTITLE(IMASK) = " (clear)"
END IF
IF (LLES_CORE_MASK) THEN
IMASK=IMASK+1
YSUBTITLE(IMASK) = " (core)"
IMASK=IMASK+1
YSUBTITLE(IMASK) = " (env)"
END IF
IF (LLES_MY_MASK) THEN
DO JI=1,NLES_MASKS_USER
IMASK=IMASK+1
YSUBTITLE(IMASK) = " (user)"
END DO
END IF
IF (LLES_CS_MASK) THEN
IMASK=IMASK+1
YSUBTITLE(IMASK) = " (cs1)"
IMASK=IMASK+1
YSUBTITLE(IMASK) = " (cs2)"
IMASK=IMASK+1
YSUBTITLE(IMASK) = " (cs3)"
END IF
yles_avg(1) = ' '
yles_avg(2) = 'A'
yles_avg(3) = 'E'
yles_avg(4) = 'H'
AVG: do javg = 1, 4
hles_avg = yles_avg(javg)
IF (HLES_AVG=='A' &
.AND. (XLES_TEMP_MEAN_START==XUNDEF .OR. XLES_TEMP_MEAN_END==XUNDEF)) cycle
IF (HLES_AVG=='E' .AND. CLES_NORM_TYPE=='NONE' ) cycle
IF (HLES_AVG=='H' .AND. (CLES_NORM_TYPE=='NONE' &
.OR. XLES_TEMP_MEAN_START==XUNDEF .OR. XLES_TEMP_MEAN_END==XUNDEF)) cycle
!
!* 2.0 averaging diagnostics
! ---------------------
!
IF (HLES_AVG==' ' .OR. HLES_AVG=='A') THEN
ALLOCATE(ZAVG_PTS_ll (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(ZUND_PTS_ll (NLES_K,NLES_TIMES,NLES_MASKS))
!
ZAVG_PTS_ll(:,:,:) = NLES_AVG_PTS_ll(:,:,:)
ZUND_PTS_ll(:,:,:) = NLES_UND_PTS_ll(:,:,:)
ZCART_PTS_ll = (NLESn_ISUP(IMI)-NLESn_IINF(IMI)+1) * (NLESn_JSUP(IMI)-NLESn_JINF(IMI)+1)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"AVG_PTS ",YSUBTITLE(:), &
"number of points used for averaging"//YSUBTITLE(:),"1",ZAVG_PTS_ll,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"AVG_PTSF",YSUBTITLE(:), &
"fraction of points used for averaging"//YSUBTITLE(:),"1",ZAVG_PTS_ll/ZCART_PTS_ll,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"UND_PTS ",YSUBTITLE(:), &
"number of points below orography"//YSUBTITLE(:),"1",ZUND_PTS_ll,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"UND_PTSF",YSUBTITLE(:), &
"fraction of points below orography"//YSUBTITLE(:),"1",ZUND_PTS_ll/ZCART_PTS_ll,HLES_AVG)
!
DEALLOCATE(ZAVG_PTS_ll)
DEALLOCATE(ZUND_PTS_ll)
END IF
!
!
!* 2.1 mean quantities
! ---------------
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_U ",YSUBTITLE(:), &
"Mean U Profile"//YSUBTITLE(:),"m s-1",XLES_MEAN_U,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_V ",YSUBTITLE(:), &
"Mean V Profile"//YSUBTITLE(:),"m s-1",XLES_MEAN_V,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_W ",YSUBTITLE(:), &
"Mean W Profile"//YSUBTITLE(:),"m s-1",XLES_MEAN_W,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_PRE",YSUBTITLE(:), &
"Mean pressure Profile"//YSUBTITLE(:),"Pa",XLES_MEAN_P,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_DP",YSUBTITLE(:), &
"Mean Dyn production TKE Profile"//YSUBTITLE(:),"m2 s-3",XLES_MEAN_DP,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_TP",YSUBTITLE(:), &
"Mean Thermal production TKE Profile "//YSUBTITLE(:),"m2 s-3",XLES_MEAN_TP,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_TR",YSUBTITLE(:), &
"Mean transport production TKE Profile"//YSUBTITLE(:),"m2 s-3",XLES_MEAN_TR,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_DISS",YSUBTITLE(:), &
"Mean Dissipation TKE Profile"//YSUBTITLE(:),"m2 s-3",XLES_MEAN_DISS,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_LM",YSUBTITLE(:), &
"Mean mixing length Profile"//YSUBTITLE(:),"m",XLES_MEAN_LM,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RHO",YSUBTITLE(:), &
"Mean density Profile"//YSUBTITLE(:),"kg m-3",XLES_MEAN_RHO,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_TH ",YSUBTITLE(:),&
"Mean potential temperature Profile"//YSUBTITLE(:),"K",XLES_MEAN_Th,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_MF ",YSUBTITLE(:),&
"Mass-flux Profile"//YSUBTITLE(:),"m s-1",XLES_MEAN_Mf,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_THL",YSUBTITLE(:), &
"Mean liquid potential temperature Profile"//YSUBTITLE(:),"K",XLES_MEAN_Thl,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_THV",YSUBTITLE(:), &
"Mean virtual potential temperature Profile"//YSUBTITLE(:),"K",XLES_MEAN_Thv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RT ",YSUBTITLE(:), &
"Mean Rt Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Rt,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RV ",YSUBTITLE(:), &
"Mean Rv Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Rv,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_REHU ",YSUBTITLE(:), &
"Mean Rh Profile"//YSUBTITLE(:),"percent",XLES_MEAN_Rehu,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_QS ",YSUBTITLE(:), &
"Mean Qs Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Qs,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_KHT ",YSUBTITLE(:),&
"Eddy-diffusivity (temperature) Profile"//YSUBTITLE(:),"m2 s-1",XLES_MEAN_KHt,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_KHR ",YSUBTITLE(:),&
"Eddy-diffusivity (wvapor) Profile"//YSUBTITLE(:),"m2 s-1",XLES_MEAN_KHr,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RC ",YSUBTITLE(:), &
"Mean Rc Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Rc,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_CF ",YSUBTITLE(:), &
"Mean Cf Profile"//YSUBTITLE(:),"1",XLES_MEAN_Cf,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_INDCF ",YSUBTITLE(:), &
"Mean Cf>1-6 Profile (0 ou 1)"//YSUBTITLE(:),"1",XLES_MEAN_INDCf,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_INDCF2 ",YSUBTITLE(:), &
"Mean Cf>1-5 Profile (0 ou 1)"//YSUBTITLE(:),"1",XLES_MEAN_INDCf2,HLES_AVG)
IF (LUSERR) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RR ",YSUBTITLE(:), &
"Mean Rr Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Rr,HLES_AVG)
IF (LUSERR) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RF ",YSUBTITLE(:), &
"Mean RF Profile"//YSUBTITLE(:),"1",XLES_MEAN_RF,HLES_AVG)
IF (LUSERI) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RI ",YSUBTITLE(:), &
"Mean Ri Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Ri,HLES_AVG)
IF (LUSERS) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RS ",YSUBTITLE(:), &
"Mean Rs Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Rs,HLES_AVG)
IF (LUSERG) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RG ",YSUBTITLE(:), &
"Mean Rg Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Rg,HLES_AVG)
IF (LUSERH) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RH ",YSUBTITLE(:), &
"Mean Rh Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Rh,HLES_AVG)
IF (NSV>0) &
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"MEAN_SV ",YSUBTITLE(:), &
"Mean Sv Profiles"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Sv,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEANWIND",YSUBTITLE(:), &
"Profile of Mean Modulus of Wind"//YSUBTITLE(:),"m s-1",XLES_MEAN_WIND,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEANMSFX",YSUBTITLE(:), &
"Total updraft mass flux"//YSUBTITLE(:),"kg m-2 s-1",XLES_RESOLVED_MASSFX ,HLES_AVG)
!
IF (LLES_PDF) THEN
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_TH ",YSUBTITLE(:), &
"Pdf potential temperature Profiles"//YSUBTITLE(:),"1",XLES_PDF_TH,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_W ",YSUBTITLE(:), &
"Pdf vertical velocity Profiles"//YSUBTITLE(:),"1",XLES_PDF_W,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_THV ",YSUBTITLE(:), &
"Pdf virtual pot. temp. Profiles"//YSUBTITLE(:),"1",XLES_PDF_THV,HLES_AVG)
IF (LUSERV) THEN
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RV ",YSUBTITLE(:), &
"Pdf Rv Profiles"//YSUBTITLE(:),"1",XLES_PDF_RV,HLES_AVG)
END IF
IF (LUSERC) THEN
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RC ",YSUBTITLE(:), &
"Pdf Rc Profiles"//YSUBTITLE(:),"1",XLES_PDF_RC,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RT ",YSUBTITLE(:), &
"Pdf Rt Profiles"//YSUBTITLE(:),"1",XLES_PDF_RT,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_THL ",YSUBTITLE(:), &
"Pdf Thl Profiles"//YSUBTITLE(:),"1",XLES_PDF_THL,HLES_AVG)
END IF
IF (LUSERR) &
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RR ",YSUBTITLE(:), &
"Pdf Rr Profiles"//YSUBTITLE(:),"1",XLES_PDF_RR,HLES_AVG)
IF (LUSERI) &
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RI ",YSUBTITLE(:), &
"Pdf Ri Profiles"//YSUBTITLE(:),"1",XLES_PDF_RI,HLES_AVG)
IF (LUSERS) &
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RS ",YSUBTITLE(:), &
"Pdf Rs Profiles"//YSUBTITLE(:),"1",XLES_PDF_RS,HLES_AVG)
IF (LUSERG) &
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RG ",YSUBTITLE(:), &
"Pdf Rg Profiles"//YSUBTITLE(:),"1",XLES_PDF_RG,HLES_AVG)
END IF
!
!* 2.2 resolved quantities
! -------------------
!
IF (LLES_RESOLVED) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_U2 ",YSUBTITLE(:), &
"Resolved <u2> variance "//YSUBTITLE(:),"m2 s-2",XLES_RESOLVED_U2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_V2 ",YSUBTITLE(:), &
"Resolved <v2> variance"//YSUBTITLE(:),"m2 s-2",XLES_RESOLVED_V2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2 ",YSUBTITLE(:), &
"Resolved <w2> variance"//YSUBTITLE(:),"m2 s-2",XLES_RESOLVED_W2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UV ",YSUBTITLE(:), &
"Resolved <uv> Flux"//YSUBTITLE(:),"m2 s-2",XLES_RESOLVED_UV,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WU ",YSUBTITLE(:), &
"Resolved <wu> Flux"//YSUBTITLE(:),"m2 s-2",XLES_RESOLVED_WU,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WV ",YSUBTITLE(:), &
"Resolved <wv> Flux"//YSUBTITLE(:),"m2 s-2",XLES_RESOLVED_WV,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_KE ",YSUBTITLE(:), &
"Resolved TKE Profile"//YSUBTITLE(:),"m2 s-2",XLES_RESOLVED_Ke,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_P2 ",YSUBTITLE(:), &
"Resolved pressure variance"//YSUBTITLE(:),"Pa2",XLES_RESOLVED_P2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UPZ ",YSUBTITLE(:), &
"Resolved <up> horizontal Flux"//YSUBTITLE(:),"Pa s-1",XLES_RESOLVED_UP,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VPZ ",YSUBTITLE(:), &
"Resolved <vp> horizontal Flux"//YSUBTITLE(:),"Pa s-1",XLES_RESOLVED_VP,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WPZ ",YSUBTITLE(:), &
"Resolved <wp> vertical Flux"//YSUBTITLE(:),"Pa s-1",XLES_RESOLVED_WP,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_THTV ",YSUBTITLE(:), &
"Resolved potential temperature - virtual potential temperature covariance"//YSUBTITLE(:), &
"K2",XLES_RESOLVED_ThThv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TLTV ",YSUBTITLE(:), &
"Resolved liquid potential temperature - virtual potential temperature covariance"//YSUBTITLE(:), &
"K2",XLES_RESOLVED_ThlThv,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TH2 ",YSUBTITLE(:), &
"Resolved potential temperature variance"//YSUBTITLE(:),"K2",XLES_RESOLVED_Th2,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_THL2",YSUBTITLE(:), &
"Resolved liquid potential temperature variance"//YSUBTITLE(:),"K2",XLES_RESOLVED_Thl2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UTH ",YSUBTITLE(:), &
"Resolved <uth> horizontal Flux"//YSUBTITLE(:),"m K s-1",XLES_RESOLVED_UTh,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VTH ",YSUBTITLE(:), &
"Resolved <vth> horizontal Flux"//YSUBTITLE(:),"m K s-1",XLES_RESOLVED_VTh,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WTH ",YSUBTITLE(:), &
"Resolved <wth> vertical Flux"//YSUBTITLE(:),"m K s-1",XLES_RESOLVED_WTh,HLES_AVG)
IF (LUSERC) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UTHL",YSUBTITLE(:), &
"Resolved <uthl> horizontal Flux"//YSUBTITLE(:),"m K s-1",XLES_RESOLVED_UThl,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VTHL",YSUBTITLE(:), &
"Resolved <vthl> horizontal Flux"//YSUBTITLE(:),"m K s-1",XLES_RESOLVED_VThl,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WTHL",YSUBTITLE(:), &
"Resolved <wthl> vertical Flux "//YSUBTITLE(:),"m K s-1",XLES_RESOLVED_WThl,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RT2 ",YSUBTITLE(:), &
"Resolved total water variance"//YSUBTITLE(:),"kg2 kg-2",XLES_RESOLVED_Rt2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRT ",YSUBTITLE(:), &
"Resolved <wrt> vertical Flux "//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_WRt,HLES_AVG)
END IF
IF (LUSERV) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UTHV",YSUBTITLE(:), &
"Resolved <uthv> horizontal Flux"//YSUBTITLE(:),"m K s-1",XLES_RESOLVED_UThv,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VTHV",YSUBTITLE(:), &
"Resolved <vthl> horizontal Flux"//YSUBTITLE(:),"m K s-1",XLES_RESOLVED_VThv,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WTHV",YSUBTITLE(:), &
"Resolved <wthv> vertical Flux "//YSUBTITLE(:),"m K s-1",XLES_RESOLVED_WThv,HLES_AVG)
END IF
!
IF (LUSERV) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RV2 ",YSUBTITLE(:), &
"Resolved water vapor variance"//YSUBTITLE(:),"kg2 kg-2",XLES_RESOLVED_Rv2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_THRV",YSUBTITLE(:), &
"Resolved <thrv> covariance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThRv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TLRV",YSUBTITLE(:), &
"Resolved <thlrv> covariance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThlRv,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TVRV",YSUBTITLE(:), &
"Resolved <thvrv> covariance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThvRv,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_URV ", YSUBTITLE(:), &
"Resolved <urv> horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_URv,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VRV ", YSUBTITLE(:), &
"Resolved <vrv> horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_VRv,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRV ", YSUBTITLE(:), &
"Resolved <wrv> vertical flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_WRv,HLES_AVG)
END IF
IF (LUSERC) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RC2 ", YSUBTITLE(:), &
"Resolved cloud water variance"//YSUBTITLE(:),"kg2 kg-2",XLES_RESOLVED_Rc2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_THRC", YSUBTITLE(:), &
"Resolved <thrc> covariance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThRc,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TLRC", YSUBTITLE(:), &
"Resolved <thlrc> covariance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThlRc,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TVRC", YSUBTITLE(:), &
"Resolved <thvrc> covariance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThvRc,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_URC ", YSUBTITLE(:), &
"Resolved <urc> horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_URc,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VRC ", YSUBTITLE(:), &
"Resolved <vrc> horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_VRc,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRC ", YSUBTITLE(:), &
"Resolved <wrc> vertical flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_WRc,HLES_AVG)
END IF
IF (LUSERI) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RI2 ", YSUBTITLE(:), &
"Resolved cloud ice variance"//YSUBTITLE(:),"kg2 kg-2",XLES_RESOLVED_Ri2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_THRI", YSUBTITLE(:), &
"Resolved <thri> covariance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThRi,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TLRI", YSUBTITLE(:), &
"Resolved <thlri> covariance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThlRi,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TVRI", YSUBTITLE(:), &
"Resolved <thvri> covariance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThvRi,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_URI ", YSUBTITLE(:), &
"Resolved <uri> horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_URi,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VRI ", YSUBTITLE(:), &
"Resolved <vri> horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_VRi,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRI ", YSUBTITLE(:), &
"Resolved <wri> vertical flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_WRi,HLES_AVG)
END IF
IF (LUSERR) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRR ", YSUBTITLE(:), &
"Resolved <wrr> vertical flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_WRr,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"INPRR3D ", YSUBTITLE(:), &
"Precipitation flux"//YSUBTITLE(:),"m s-1",XLES_INPRR3D,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MAXINPR3D ", YSUBTITLE(:), &
"Max Precip flux"//YSUBTITLE(:),"m s-1",XLES_MAX_INPRR3D,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"EVAP3D ", YSUBTITLE(:), &
"Evaporation profile"//YSUBTITLE(:),"kg kg-1 s-1",XLES_EVAP3D,HLES_AVG)
ENDIF
IF (NSV>0) THEN
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_SV2 ", YSUBTITLE(:), &
"Resolved scalar variables variances"//YSUBTITLE(:),"kg2 kg-2",XLES_RESOLVED_Sv2,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_THSV", YSUBTITLE(:), &
"Resolved <ThSv> variance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThSv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_TLSV", YSUBTITLE(:), &
"Resolved <ThlSv> variance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThlSv,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_TVSV", YSUBTITLE(:), &
"Resolved <ThvSv> variance"//YSUBTITLE(:),"K kg kg-1",XLES_RESOLVED_ThvSv,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_USV ", YSUBTITLE(:), &
"Resolved <uSv> horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_USv,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_VSV ", YSUBTITLE(:), &
"Resolved <vSv> horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_VSv,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_WSV ", YSUBTITLE(:), &
"Resolved <wSv> vertical flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_RESOLVED_WSv,HLES_AVG)
END IF
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_U3 ",YSUBTITLE(:), &
"Resolved <w3>"//YSUBTITLE(:),"m3 s-3",XLES_RESOLVED_U3,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_V3 ",YSUBTITLE(:), &
"Resolved <w3>"//YSUBTITLE(:),"m3 s-3",XLES_RESOLVED_V3,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W3 ",YSUBTITLE(:), &
"Resolved <w3>"//YSUBTITLE(:),"m3 s-3",XLES_RESOLVED_W3,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_U4 ",YSUBTITLE(:), &
"Resolved <w3>"//YSUBTITLE(:),"m4 s-4",XLES_RESOLVED_U4,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_V4 ",YSUBTITLE(:), &
"Resolved <w3>"//YSUBTITLE(:),"m4 s-4",XLES_RESOLVED_V4,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W4 ",YSUBTITLE(:), &
"Resolved <w3>"//YSUBTITLE(:),"m4 s-4",XLES_RESOLVED_W4,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WTL2",YSUBTITLE(:), &
"Resolved <wThl2>"//YSUBTITLE(:),"m K2 s-1",XLES_RESOLVED_WThl2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2TL",YSUBTITLE(:), &
"Resolved <w2Thl>"//YSUBTITLE(:),"m2 K s-2",XLES_RESOLVED_W2Thl,HLES_AVG)
IF (LUSERV) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRV2",YSUBTITLE(:), &
"Resolved <wRv2>"//YSUBTITLE(:),"m kg2 kg-2 s-1",XLES_RESOLVED_WRv2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2RV",YSUBTITLE(:), &
"Resolved <w2Rv>"//YSUBTITLE(:),"m2 kg kg-1 s-2",XLES_RESOLVED_W2Rv,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRT2",YSUBTITLE(:), &
"Resolved <wRt2>"//YSUBTITLE(:),"m kg2 kg-2 s-1",XLES_RESOLVED_WRt2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2RT",YSUBTITLE(:), &
"Resolved <w2Rt>"//YSUBTITLE(:),"m2 kg kg-1 s-2",XLES_RESOLVED_W2Rt,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WTLRV",YSUBTITLE(:), &
"Resolved <wThlRv>"//YSUBTITLE(:),"m K kg kg-1 s-1",XLES_RESOLVED_WThlRv,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WTLRT",YSUBTITLE(:), &
"Resolved <wThlRt>"//YSUBTITLE(:),"m K kg kg-1 s-1",XLES_RESOLVED_WThlRt,HLES_AVG)
END IF
IF (LUSERC) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRC2",YSUBTITLE(:), &
"Resolved <wRc2>"//YSUBTITLE(:),"m kg2 kg-2 s-1",XLES_RESOLVED_WRc2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2RC",YSUBTITLE(:), &
"Resolved <w2Rc>"//YSUBTITLE(:),"m2 kg kg-1 s-2",XLES_RESOLVED_W2Rc,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WTLRC",YSUBTITLE(:), &
"Resolved <wThlRc>"//YSUBTITLE(:),"m K kg kg-1 s-1",XLES_RESOLVED_WThlRc,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WRVRC",YSUBTITLE(:), &
"Resolved <wRvRc>"//YSUBTITLE(:),"m kg2 kg-2 s-1",XLES_RESOLVED_WRvRc,HLES_AVG)
END IF
IF (LUSERI) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRI2",YSUBTITLE(:), &
"Resolved <wRi2>"//YSUBTITLE(:),"m kg2 kg-2 s-1",XLES_RESOLVED_WRi2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2RI",YSUBTITLE(:), &
"Resolved <w2Ri>"//YSUBTITLE(:),"m2 kg kg-1 s-2",XLES_RESOLVED_W2Ri,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WTLRI",YSUBTITLE(:), &
"Resolved <wThlRi>"//YSUBTITLE(:),"m K kg kg-1 s-1",XLES_RESOLVED_WThlRi,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WRVRI",YSUBTITLE(:), &
"Resolved <wRvRi>"//YSUBTITLE(:),"m kg2 kg-2 s-1",XLES_RESOLVED_WRvRi,HLES_AVG)
END IF
IF (NSV>0) THEN
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_WSV2",YSUBTITLE(:), &
"Resolved <wSv2>"//YSUBTITLE(:),"m kg2 kg-2 s-1",XLES_RESOLVED_WSv2,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_W2SV",YSUBTITLE(:), &
"Resolved <w2Sv>"//YSUBTITLE(:),"m2 kg kg-1 s-2",XLES_RESOLVED_W2Sv,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RE_WTLSV",YSUBTITLE(:), &
"Resolved <wThlSv>"//YSUBTITLE(:),"m K kg kg-1 s-1",XLES_RESOLVED_WThlSv,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RE_WRVSV",YSUBTITLE(:), &
"Resolved <wRvSv>"//YSUBTITLE(:),"m kg2 kg-2 s-1",XLES_RESOLVED_WRvSv,HLES_AVG)
END IF
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TLPZ",YSUBTITLE(:), &
"Resolved <Thldp/dz>"//YSUBTITLE(:),"K Pa m-1",XLES_RESOLVED_ThlPz,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RVPZ",YSUBTITLE(:), &
"Resolved <Rvdp/dz>"//YSUBTITLE(:),"kg2 kg-2 Pa m-1",XLES_RESOLVED_RvPz,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RCPZ",YSUBTITLE(:), &
"Resolved <Rcdp/dz>"//YSUBTITLE(:),"kg2 kg-2 Pa m-1",XLES_RESOLVED_RcPz,HLES_AVG)
IF (LUSERI) &
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RIPZ",YSUBTITLE(:), &
"Resolved <Ridp/dz>"//YSUBTITLE(:),"kg2 kg-2 Pa m-1",XLES_RESOLVED_RiPz,HLES_AVG)
IF (NSV>0) THEN
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_SVPZ",YSUBTITLE(:), &
"Resolved <Svdp/dz>"//YSUBTITLE(:),"kg2 kg-2 Pa m-1",XLES_RESOLVED_SvPz,HLES_AVG)
END IF
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UKE ", YSUBTITLE(:), &
"Resolved flux of resolved kinetic energy"//YSUBTITLE(:),"m3 s-3",XLES_RESOLVED_UKe,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VKE ", YSUBTITLE(:), &
"Resolved flux of resolved kinetic energy"//YSUBTITLE(:),"m3 s-3",XLES_RESOLVED_VKe,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WKE ", YSUBTITLE(:), &
"Resolved flux of resolved kinetic energy"//YSUBTITLE(:),"m3 s-3",XLES_RESOLVED_WKe,HLES_AVG)
END IF
!
!
!* 2.3 subgrid quantities
! ------------------
!
IF (LLES_SUBGRID) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_TKE ",YSUBTITLE(:), &
"Subgrid TKE"//YSUBTITLE(:),"m2 s-2",XLES_SUBGRID_Tke,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_U2 ", YSUBTITLE(:), &
"Subgrid <u2> variance"//YSUBTITLE(:),"m2 s-2",XLES_SUBGRID_U2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_V2 ", YSUBTITLE(:), &
"Subgrid <v2> variance"//YSUBTITLE(:),"m2 s-2",XLES_SUBGRID_V2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_W2 ", YSUBTITLE(:), &
"Subgrid <w2> variance"//YSUBTITLE(:),"m2 s-2",XLES_SUBGRID_W2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_UV ", YSUBTITLE(:), &
"Subgrid <uv> flux"//YSUBTITLE(:),"m2 s-2",XLES_SUBGRID_UV,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WU ", YSUBTITLE(:), &
"Subgrid <wu> flux"//YSUBTITLE(:),"m2 s-2",XLES_SUBGRID_WU,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WV ", YSUBTITLE(:), &
"Subgrid <wv> flux"//YSUBTITLE(:),"m2 s-2",XLES_SUBGRID_WV,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_THL2", YSUBTITLE(:), &
"Subgrid liquid potential temperature variance"//YSUBTITLE(:),"K2",XLES_SUBGRID_Thl2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_UTHL", YSUBTITLE(:), &
"Subgrid hor. flux of liquid potential temperature"//YSUBTITLE(:),"m K s-1",XLES_SUBGRID_UThl,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_VTHL", YSUBTITLE(:), &
"Subgrid hor. flux of liquid potential temperature"//YSUBTITLE(:),"m K s-1",XLES_SUBGRID_VThl,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WTHL", YSUBTITLE(:), &
"Subgrid vert. flux of liquid potential temperature"//YSUBTITLE(:),"m K s-1",XLES_SUBGRID_WThl,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WP ",YSUBTITLE(:), &
"Subgrid <wp> vertical Flux"//YSUBTITLE(:),"m Pa s-1",XLES_SUBGRID_WP,HLES_AVG)
!!
!!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"THLUP_MF",YSUBTITLE(:), &
"Subgrid <thl> of updraft"//YSUBTITLE(:),"K",XLES_SUBGRID_THLUP_MF,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RTUP_MF ",YSUBTITLE(:), &
"Subgrid <rt> of updraft"//YSUBTITLE(:),"kg kg-1",XLES_SUBGRID_RTUP_MF,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RVUP_MF ",YSUBTITLE(:), &
"Subgrid <rv> of updraft"//YSUBTITLE(:),"kg kg-1",XLES_SUBGRID_RVUP_MF,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RCUP_MF ",YSUBTITLE(:), &
"Subgrid <rc> of updraft"//YSUBTITLE(:),"kg kg-1",XLES_SUBGRID_RCUP_MF,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"RIUP_MF ",YSUBTITLE(:), &
"Subgrid <ri> of updraft"//YSUBTITLE(:),"kg kg-1",XLES_SUBGRID_RIUP_MF,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"WUP_MF ",YSUBTITLE(:), &
"Subgrid <w> of updraft"//YSUBTITLE(:),"m s-1",XLES_SUBGRID_WUP_MF,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"MAFLX_MF",YSUBTITLE(:), &
"Subgrid <MF> of updraft"//YSUBTITLE(:),"kg m-2 s-1",XLES_SUBGRID_MASSFLUX,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"DETR_MF ",YSUBTITLE(:), &
"Subgrid <detr> of updraft"//YSUBTITLE(:),"kg m-3 s-1",XLES_SUBGRID_DETR,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"ENTR_MF ",YSUBTITLE(:), &
"Subgrid <entr> of updraft"//YSUBTITLE(:),"kg m-3 s-1",XLES_SUBGRID_ENTR,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"FRCUP_MF",YSUBTITLE(:), &
"Subgrid <FracUp> of updraft"//YSUBTITLE(:),"1",XLES_SUBGRID_FRACUP,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"THVUP_MF",YSUBTITLE(:), &
"Subgrid <thv> of updraft"//YSUBTITLE(:),"K",&
XLES_SUBGRID_THVUP_MF,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"WTHL_MF ",YSUBTITLE(:), &
"Subgrid <wthl> of mass flux convection scheme"//YSUBTITLE(:),"m K s-1",&
XLES_SUBGRID_WTHLMF,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"WRT_MF ",YSUBTITLE(:), &
"Subgrid <wrt> of mass flux convection scheme"//YSUBTITLE(:),"m kg kg-1 s-1",&
XLES_SUBGRID_WRTMF,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"WTHV_MF ",YSUBTITLE(:), &
"Subgrid <wthv> of mass flux convection scheme"//YSUBTITLE(:),"m K s-1",&
XLES_SUBGRID_WTHVMF,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"WU_MF ",YSUBTITLE(:), &
"Subgrid <wu> of mass flux convection scheme"//YSUBTITLE(:),"m2 s-2",&
XLES_SUBGRID_WUMF,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"WV_MF ",YSUBTITLE(:), &
"Subgrid <wv> of mass flux convection scheme"//YSUBTITLE(:),"m2 s-2",&
XLES_SUBGRID_WVMF,HLES_AVG)
!!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_PHI3",YSUBTITLE(:), &
"Subgrid Phi3 function"//YSUBTITLE(:),"1",XLES_SUBGRID_PHI3,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_LMIX",YSUBTITLE(:), &
"Subgrid Mixing Length"//YSUBTITLE(:),"1",XLES_SUBGRID_LMix,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_LDIS",YSUBTITLE(:), &
"Subgrid Dissipation Length"//YSUBTITLE(:),"1",XLES_SUBGRID_LDiss,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_KM ",YSUBTITLE(:), &
"Eddy diffusivity for momentum"//YSUBTITLE(:),"m2 s-1",XLES_SUBGRID_Km,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_KH ",YSUBTITLE(:), &
"Eddy diffusivity for heat"//YSUBTITLE(:),"m2 s-1",XLES_SUBGRID_Kh,HLES_AVG)
!
IF (LUSERV) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WTHV", YSUBTITLE(:), &
"Subgrid vert. flux of liquid potential temperature"//YSUBTITLE(:),"m K s-1",XLES_SUBGRID_WThv,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_RT2 ", YSUBTITLE(:), &
"Subgrid total water variance"//YSUBTITLE(:),"kg2 kg-2",XLES_SUBGRID_Rt2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_TLRT", YSUBTITLE(:), &
"Subgrid <thlrt> covariance"//YSUBTITLE(:),"K kg kg-1",XLES_SUBGRID_ThlRt,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_URT ", YSUBTITLE(:), &
"Subgrid total water horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_SUBGRID_URt,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_VRT ", YSUBTITLE(:), &
"Subgrid total water horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_SUBGRID_VRt,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WRT ", YSUBTITLE(:), &
"Subgrid total water vertical flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_SUBGRID_WRt,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_PSI3",YSUBTITLE(:), &
"Subgrid Psi3 function"//YSUBTITLE(:),"1",XLES_SUBGRID_PSI3,HLES_AVG)
END IF
IF (LUSERC) THEN
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_RC2 ", YSUBTITLE(:), &
"Subgrid cloud water variance"//YSUBTITLE(:),"kg2 kg-2",XLES_SUBGRID_Rc2,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_URC ", YSUBTITLE(:), &
"Subgrid cloud water horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_SUBGRID_URc,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_VRC ", YSUBTITLE(:), &
"Subgrid cloud water horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_SUBGRID_VRc,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WRC ", YSUBTITLE(:), &
"Subgrid cloud water vertical flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_SUBGRID_WRc,HLES_AVG)
END IF
IF (NSV>0) THEN
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"SBG_USV ", YSUBTITLE(:), &
"Subgrid <uSv> horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_SUBGRID_USv,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"SBG_VSV ", YSUBTITLE(:), &
"Subgrid <vSv> horizontal flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_SUBGRID_VSv,HLES_AVG)
CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"SBG_WSV ", YSUBTITLE(:), &
"Subgrid <wSv> vertical flux"//YSUBTITLE(:),"m kg kg-1 s-1",XLES_SUBGRID_WSv,HLES_AVG)
END IF
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_UTKE", YSUBTITLE(:), &
"Subgrid flux of subgrid kinetic energy"//YSUBTITLE(:),"m3 s-3",XLES_SUBGRID_UTke,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_VTKE", YSUBTITLE(:), &
"Subgrid flux of subgrid kinetic energy"//YSUBTITLE(:),"m3 s-3",XLES_SUBGRID_VTke,HLES_AVG)
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WTKE",YSUBTITLE(:), &
"Subgrid flux of subgrid kinetic energy"//YSUBTITLE(:),"m3 s-3",XLES_SUBGRID_WTke,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_W2TL",YSUBTITLE(:), &
"Subgrid flux of subgrid kinetic energy"//YSUBTITLE(:),"m2 K s-2",XLES_SUBGRID_W2Thl,HLES_AVG)
!
CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WTL2",YSUBTITLE(:), &
"Subgrid flux of subgrid kinetic energy"//YSUBTITLE(:),"m K2 s-1",XLES_SUBGRID_WThl2,HLES_AVG)
!
END IF
!
!* 2.4 Updraft quantities
! ------------------
!
IF (LLES_UPDRAFT) THEN
CALL LES_DIACHRO(TPDIAFILE,"UP_FRAC ", &
"Updraft fraction","1",XLES_UPDRAFT,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_W ", &
"Updraft W mean value","m s-1",XLES_UPDRAFT_W,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_TH ", &
"Updraft potential temperature mean value","K",XLES_UPDRAFT_Th,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"UP_THL ", &
"Updraft liquid potential temperature mean value","K",XLES_UPDRAFT_Thl,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO(TPDIAFILE,"UP_THV ", &
"Updraft virutal potential temperature mean value","K",XLES_UPDRAFT_Thv,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_KE ", &
"Updraft resolved TKE mean value","m2 s-2",XLES_UPDRAFT_Ke,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_TKE ", &
"Updraft subgrid TKE mean value","m2 s-2",XLES_UPDRAFT_Tke,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO(TPDIAFILE,"UP_RV ", &
"Updraft water vapor mean value","kg kg-1",XLES_UPDRAFT_Rv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"UP_RC ", &
"Updraft cloud water mean value","kg kg-1",XLES_UPDRAFT_Rc,HLES_AVG)
IF (LUSERR) &
CALL LES_DIACHRO(TPDIAFILE,"UP_RR ", &
"Updraft rain mean value","kg kg-1",XLES_UPDRAFT_Rr,HLES_AVG)
IF (LUSERI) &
CALL LES_DIACHRO(TPDIAFILE,"UP_RI ", &
"Updraft ice mean value","kg kg-1",XLES_UPDRAFT_Ri,HLES_AVG)
IF (LUSERS) &
CALL LES_DIACHRO(TPDIAFILE,"UP_RS ", &
"Updraft snow mean value","kg kg-1",XLES_UPDRAFT_Rs,HLES_AVG)
IF (LUSERG) &
CALL LES_DIACHRO(TPDIAFILE,"UP_RG ", &
"Updraft graupel mean value","kg kg-1",XLES_UPDRAFT_Rg,HLES_AVG)
IF (LUSERH) &
CALL LES_DIACHRO(TPDIAFILE,"UP_RH ", &
"Updraft hail mean value","kg kg-1",XLES_UPDRAFT_Rh,HLES_AVG)
IF (NSV>0) &
CALL LES_DIACHRO_SV(TPDIAFILE,"UP_SV ", &
"Updraft scalar variables mean values","kg kg-1",XLES_UPDRAFT_Sv,HLES_AVG)
!
CALL LES_DIACHRO(TPDIAFILE,"UP_TH2 ", &
"Updraft resolved Theta variance ","K2",XLES_UPDRAFT_Th2,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"UP_THL2", &
"Updraft resolved Theta_l variance ","K2",XLES_UPDRAFT_Thl2,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO(TPDIAFILE,"UP_THTV", &
"Updraft resolved Theta Theta_v covariance ","K2",XLES_UPDRAFT_ThThv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"UP_TLTV", &
"Updraft resolved Theta_l Theta_v covariance ","K2",XLES_UPDRAFT_ThlThv,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_WTH ", &
"Updraft resolved WTh flux","m K s-1",XLES_UPDRAFT_WTh,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"UP_WTHL ", &
"Updraft resolved WThl flux","m K s-1",XLES_UPDRAFT_WThl,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO(TPDIAFILE,"UP_WTHV ", &
"Updraft resolved WThv flux","m K s-1",XLES_UPDRAFT_WThv,HLES_AVG)
!
IF (LUSERV) THEN
CALL LES_DIACHRO(TPDIAFILE,"UP_RV2 ", &
"Updraft resolved water vapor variance","kg2 kg-2",XLES_UPDRAFT_Rv2,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_THRV ", &
"Updraft resolved <thrv> covariance","K kg kg-1",XLES_UPDRAFT_ThRv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"UP_THLRV", &
"Updraft resolved <thlrv> covariance","K kg kg-1",XLES_UPDRAFT_ThlRv,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_THVRV", &
"Updraft resolved <thvrv> covariance","K kg kg-1",XLES_UPDRAFT_ThvRv,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_WRV ", &
"Updraft resolved <wrv> vertical flux","m kg kg-1 s-1",XLES_UPDRAFT_WRv,HLES_AVG)
END IF
IF (LUSERC) THEN
CALL LES_DIACHRO(TPDIAFILE,"UP_RC2 ", &
"Updraft resolved cloud water variance","kg2 kg-2",XLES_UPDRAFT_Rc2,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_THRC ", &
"Updraft resolved <thrc> covariance","K kg kg-1",XLES_UPDRAFT_ThRc,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_THLRC", &
"Updraft resolved <thlrc> covariance","K kg kg-1",XLES_UPDRAFT_ThlRc,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_THVRC", &
"Updraft resolved <thvrc> covariance","K kg kg-1",XLES_UPDRAFT_ThvRc,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_WRC ", &
"Updraft resolved <wrc> vertical flux","m kg kg-1 s-1",XLES_UPDRAFT_WRc,HLES_AVG)
END IF
IF (LUSERI) THEN
CALL LES_DIACHRO(TPDIAFILE,"UP_RI2 ", &
"Updraft resolved cloud ice variance","kg2 kg-2",XLES_UPDRAFT_Ri2,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_THRI ", &
"Updraft resolved <thri> covariance","K kg kg-1",XLES_UPDRAFT_ThRi,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_THLRI", &
"Updraft resolved <thlri> covariance","K kg kg-1",XLES_UPDRAFT_ThlRi,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_THVRI", &
"Updraft resolved <thvri> covariance","K kg kg-1",XLES_UPDRAFT_ThvRi,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"UP_WRI ", &
"Updraft resolved <wri> vertical flux","m kg kg-1 s-1",XLES_UPDRAFT_WRi,HLES_AVG)
END IF
IF (NSV>0) THEN
CALL LES_DIACHRO_SV(TPDIAFILE,"UP_SV2 ", &
"Updraft resolved scalar variables variances","kg2 kg-2",XLES_UPDRAFT_Sv2,HLES_AVG)
CALL LES_DIACHRO_SV(TPDIAFILE,"UP_THSV ", &
"Updraft resolved <ThSv> variance","K kg kg-1",XLES_UPDRAFT_ThSv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_SV(TPDIAFILE,"UP_THLSV", &
"Updraft resolved <ThlSv> variance","K kg kg-1",XLES_UPDRAFT_ThlSv,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO_SV(TPDIAFILE,"UP_THVSV", &
"Updraft resolved <ThvSv> variance","K kg kg-1",XLES_UPDRAFT_ThvSv,HLES_AVG)
CALL LES_DIACHRO_SV(TPDIAFILE,"UP_WSV ", &
"Updraft resolved <wSv> vertical flux","m kg kg-1 s-1",XLES_UPDRAFT_WSv,HLES_AVG)
END IF
END IF
!
!
!* 2.5 Downdraft quantities
! --------------------
!
IF (LLES_DOWNDRAFT) THEN
CALL LES_DIACHRO(TPDIAFILE,"DW_FRAC ", &
"Downdraft fraction","1",XLES_DOWNDRAFT,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_W ", &
"Downdraft W mean value","m s-1",XLES_DOWNDRAFT_W,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_TH ", &
"Downdraft potential temperature mean value","K",XLES_DOWNDRAFT_Th,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"DW_THL ", &
"Downdraft liquid potential temperature mean value","K",XLES_DOWNDRAFT_Thl,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO(TPDIAFILE,"DW_THV ", &
"Downdraft virtual potential temperature mean value","K",XLES_DOWNDRAFT_Thv,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_KE ", &
"Downdraft resolved TKE mean value","m2 s-2",XLES_DOWNDRAFT_Ke,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_TKE ", &
"Downdraft subgrid TKE mean value","m2 s-2",XLES_DOWNDRAFT_Tke,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO(TPDIAFILE,"DW_RV ", &
"Downdraft water vapor mean value","kg kg-1",XLES_DOWNDRAFT_Rv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"DW_RC ", &
"Downdraft cloud water mean value","kg kg-1",XLES_DOWNDRAFT_Rc,HLES_AVG)
IF (LUSERR) &
CALL LES_DIACHRO(TPDIAFILE,"DW_RR ", &
"Downdraft rain mean value","kg kg-1",XLES_DOWNDRAFT_Rr,HLES_AVG)
IF (LUSERI) &
CALL LES_DIACHRO(TPDIAFILE,"DW_RI ", &
"Downdraft ice mean value","kg kg-1",XLES_DOWNDRAFT_Ri,HLES_AVG)
IF (LUSERS) &
CALL LES_DIACHRO(TPDIAFILE,"DW_RS ", &
"Downdraft snow mean value","kg kg-1",XLES_DOWNDRAFT_Rs,HLES_AVG)
IF (LUSERG) &
CALL LES_DIACHRO(TPDIAFILE,"DW_RG ", &
"Downdraft graupel mean value","kg kg-1",XLES_DOWNDRAFT_Rg,HLES_AVG)
IF (LUSERH) &
CALL LES_DIACHRO(TPDIAFILE,"DW_RH ", &
"Downdraft hail mean value","kg kg-1",XLES_DOWNDRAFT_Rh,HLES_AVG)
IF (NSV>0) &
CALL LES_DIACHRO_SV(TPDIAFILE,"DW_SV ", &
"Downdraft scalar variables mean values","kg kg-1",XLES_DOWNDRAFT_Sv,HLES_AVG)
!
CALL LES_DIACHRO(TPDIAFILE,"DW_TH2 ", &
"Downdraft resolved Theta variance ","K2",XLES_DOWNDRAFT_Th2,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"DW_THL2", &
"Downdraft resolved Theta_l variance ","K2",XLES_DOWNDRAFT_Thl2,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO(TPDIAFILE,"DW_THTV ", &
"Downdraft resolved Theta Theta_v covariance ","K2",XLES_DOWNDRAFT_ThThv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"DW_TLTV ", &
"Downdraft resolved Theta_l Theta_v covariance ","K2",XLES_DOWNDRAFT_ThlThv,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_WTH ", &
"Downdraft resolved WTh flux","m K s-1",XLES_DOWNDRAFT_WTh,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"DW_WTHL ", &
"Downdraft resolved WThl flux","m K s-1",XLES_DOWNDRAFT_WThl,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO(TPDIAFILE,"DW_WTHV ", &
"Downdraft resolved WThv flux","m K s-1",XLES_DOWNDRAFT_WThv,HLES_AVG)
!
IF (LUSERV) THEN
CALL LES_DIACHRO(TPDIAFILE,"DW_RV2 ", &
"Downdraft resolved water vapor variance","kg2 kg-2",XLES_DOWNDRAFT_Rv2,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_THRV ", &
"Downdraft resolved <thrv> covariance","K kg kg-1",XLES_DOWNDRAFT_ThRv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO(TPDIAFILE,"DW_THLRV", &
"Downdraft resolved <thlrv> covariance","K kg kg-1",XLES_DOWNDRAFT_ThlRv,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_THVRV", &
"Downdraft resolved <thvrv> covariance","K kg kg-1",XLES_DOWNDRAFT_ThvRv,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_WRV ", &
"Downdraft resolved <wrv> vertical flux","m kg kg-1 s-1",XLES_DOWNDRAFT_WRv,HLES_AVG)
END IF
IF (LUSERC) THEN
CALL LES_DIACHRO(TPDIAFILE,"DW_RC2 ", &
"Downdraft resolved cloud water variance","kg2 kg-2",XLES_DOWNDRAFT_Rc2,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_THRC ", &
"Downdraft resolved <thrc> covariance","K kg kg-1",XLES_DOWNDRAFT_ThRc,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_THLRC", &
"Downdraft resolved <thlrc> covariance","K kg kg-1",XLES_DOWNDRAFT_ThlRc,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_THVRC", &
"Downdraft resolved <thvrc> covariance","K kg kg-1",XLES_DOWNDRAFT_ThvRc,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_WRC ", &
"Downdraft resolved <wrc> vertical flux","m kg kg-1 s-1",XLES_DOWNDRAFT_WRc,HLES_AVG)
END IF
IF (LUSERI) THEN
CALL LES_DIACHRO(TPDIAFILE,"DW_RI2 ", &
"Downdraft resolved cloud ice variance","kg2 kg-2",XLES_DOWNDRAFT_Ri2,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_THRI ", &
"Downdraft resolved <thri> covariance","K kg kg-1",XLES_DOWNDRAFT_ThRi,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_THLRI", &
"Downdraft resolved <thlri> covariance","K kg kg-1",XLES_DOWNDRAFT_ThlRi,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_THVRI", &
"Downdraft resolved <thvri> covariance","K kg kg-1",XLES_DOWNDRAFT_ThvRi,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DW_WRI ", &
"Downdraft resolved <wri> vertical flux","m kg kg-1 s-1",XLES_DOWNDRAFT_WRi,HLES_AVG)
END IF
IF (NSV>0) THEN
CALL LES_DIACHRO_SV(TPDIAFILE,"DW_SV2 ", &
"Downdraft resolved scalar variables variances","kg2 kg-2",XLES_DOWNDRAFT_Sv2,HLES_AVG)
CALL LES_DIACHRO_SV(TPDIAFILE,"DW_THSV ", &
"Downdraft resolved <ThSv> variance","K kg kg-1",XLES_DOWNDRAFT_ThSv,HLES_AVG)
IF (LUSERC) &
CALL LES_DIACHRO_SV(TPDIAFILE,"DW_THLSV", &
"Downdraft resolved <ThlSv> variance","K kg kg-1",XLES_DOWNDRAFT_ThlSv,HLES_AVG)
IF (LUSERV) &
CALL LES_DIACHRO_SV(TPDIAFILE,"DW_THVSV", &
"Downdraft resolved <ThvSv> variance","K kg kg-1",XLES_DOWNDRAFT_ThvSv,HLES_AVG)
CALL LES_DIACHRO_SV(TPDIAFILE,"DW_WSV ", &
"Downdraft resolved <wSv> vertical flux","m kg kg-1 s-1",XLES_DOWNDRAFT_WSv,HLES_AVG)
END IF
END IF
!
!-------------------------------------------------------------------------------
!
!* 3. surface normalization parameters
! --------------------------------
!
IF (HLES_AVG==' ' .OR. HLES_AVG=='A') THEN
CALL LES_DIACHRO(TPDIAFILE,"SWU ", &
"sw_up ","W m-2 ",XLES_SWU,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"SWD ", &
"sw_down ","W m-2 ",XLES_SWD,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"LWU ", &
"lw_up ","W m-2 ",XLES_LWU,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"LWD ", &
"lw_down ","W m-2 ",XLES_LWD,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DTHRADSW ", &
"dthrad_sw ","K s-1 ",XLES_DTHRADSW,HLES_AVG)
CALL LES_DIACHRO(TPDIAFILE,"DTHRADLW ", &
"dthrad_lw ","K s-1 ",XLES_DTHRADLW,HLES_AVG)
!writes mean_effective radius at all levels
CALL LES_DIACHRO(TPDIAFILE,"RADEFF ", &
"mean effective radius ","microm ",XLES_RADEFF,HLES_AVG)
IF (NSV>0) &
CALL LES_DIACHRO_SURF_SV(TPDIAFILE,"SV0 ", &
"Scalar variable fluxes at the surface","kg kg-1 m s-1",XLES_SV0,HLES_AVG)
END IF
end do AVG
!Prepare metadate (used in Les_diachro_write calls)
tfield%ngrid = 0 !Not on the Arakawa grid
tfield%ntype = TYPEREAL
tfield%ndims = 1
tfield%ndimlist(1) = NMNHDIM_BUDGET_LES_TIME
tfield%ndimlist(2:) = NMNHDIM_UNUSED
ldoavg = xles_temp_mean_start /= XUNDEF .and. xles_temp_mean_end /= XUNDEF
ldonorm = .false.
call Les_diachro_write( tpdiafile, xles_e0, 'Q0', 'Sensible heat flux at the surface', 'm K s-1' )
if ( luserv ) &
call Les_diachro_write( tpdiafile, xles_e0, 'E0', 'Latent heat flux at the surface', 'kg kg-1 m s-1' )
call Les_diachro_write( tpdiafile, xles_ustar, 'U*', 'Friction velocity', 'm s-1' )
call Les_diachro_write( tpdiafile, xles_wstar, 'W*', 'Convective velocity', 'm s-1' )
call Les_diachro_write( tpdiafile, xles_bl_height, 'BL_H', 'Boundary Layer Height', 'm' )
call Les_diachro_write( tpdiafile, xles_mo_length, 'L_MO', 'Monin-Obukhov length', 'm' )
call Les_diachro_write( tpdiafile, xles_int_tke, 'INT_TKE', 'Vertical integrated tke', 'm2 s-2' )
if ( luserc ) &
call Les_diachro_write( tpdiafile, xles_zcb, 'ZCB', 'Cloud base Height', 'm' )
if ( luserc ) &
call Les_diachro_write( tpdiafile, xles_cftot, 'ZCFTOT', 'Total Cloud cover', '1' )
if ( luserc ) &
call Les_diachro_write( tpdiafile, xles_cf2tot, 'ZCF2TOT', 'Total Cloud cove 2r', '1' )
if ( luserc ) &
call Les_diachro_write( tpdiafile, xles_lwp, 'LWP', 'Liquid Water path', 'kg m-2' )
if ( luserc ) &
call Les_diachro_write( tpdiafile, xles_lwpvar, 'LWPVAR', 'Liquid Water path variance', 'kg m-4' )
if ( luserr ) &
call Les_diachro_write( tpdiafile, xles_rwp, 'RWP', 'Rain Water path', 'kg m-2' )
if ( luseri ) &
call Les_diachro_write( tpdiafile, xles_iwp, 'IWP', 'Ice Water path', 'kg m-2' )
if ( lusers ) &
call Les_diachro_write( tpdiafile, xles_swp, 'SWP', 'Snow Water path', 'kg m-2' )
if ( luserg ) &
call Les_diachro_write( tpdiafile, xles_gwp, 'GWP', 'Graupel Water path', 'kg m-2' )
if ( luserh ) &
call Les_diachro_write( tpdiafile, xles_hwp, 'HWP', 'Hail Water path', 'kg m-2' )
if ( luserr ) &
call Les_diachro_write( tpdiafile, xles_precfr, 'PREC_FRAC', 'Fract of col where rain at surface', '1' )
if ( luserr ) &
call Les_diachro_write( tpdiafile, xles_inprr, 'INST_PREC', 'Inst precip rate', 'mm day-1' )
if ( luserc ) &
call Les_diachro_write( tpdiafile, xles_inprc, 'INST_SEDIM', 'Inst cloud precip rate', 'mm day-1' )
if ( luserc .and. ( ldeposc .or. ldepoc ) ) &
call Les_diachro_write( tpdiafile, xles_indep, 'INST_DEPOS', 'Inst cloud deposi rate', 'mm day-1' )
if ( luserr ) &
call Les_diachro_write( tpdiafile, xles_rain_inprr, 'RAIN_PREC', 'Inst pr. rate over rainy grid cells', 'mm day-1' )
if ( luserr ) &
call Les_diachro_write( tpdiafile, xles_acprr, 'ACCU_PREC', 'Accu precip rate', 'mm' )
if ( luserc ) &
call Les_diachro_write( tpdiafile, xles_zmaxcf, 'ZMAXCF', 'Height of Cloud fraction max', 'm' )
if ( luserc ) &
call Les_diachro_write( tpdiafile, xles_zmaxcf2, 'ZMAXCF2', 'Height of Cloud fraction2max', 'm' )
!-------------------------------------------------------------------------------
!
!* 4. LES budgets
! -----------
!
call Write_les_budget_n( tpdiafile )
if ( luserv ) call Write_les_rt_budget_n( tpdiafile )
if ( nsv > 0 ) call Write_les_sv_budget_n( tpdiafile )
!
!-------------------------------------------------------------------------------
!
!* 5. (ni,z,t) and (nj,z,t) 2points correlations
! ------------------------------------------
!
if ( nspectra_k > 0 ) then
tfieldx%cstdname = ''
tfieldx%ngrid = 0 !Not on the Arakawa grid
tfieldx%ntype = TYPEREAL
tfieldx%ndims = 3
tfieldx%ndimlist(1) = NMNHDIM_SPECTRA_2PTS_NI
tfieldx%ndimlist(2) = NMNHDIM_SPECTRA_LEVEL
tfieldx%ndimlist(3) = NMNHDIM_BUDGET_LES_TIME
tfieldx%ndimlist(4:) = NMNHDIM_UNUSED
tfieldy%cstdname = ''
tfieldy%ngrid = 0 !Not on the Arakawa grid
tfieldy%ntype = TYPEREAL
tfieldy%ndims = 3
tfieldy%ndimlist(1) = NMNHDIM_SPECTRA_2PTS_NJ
tfieldy%ndimlist(2) = NMNHDIM_SPECTRA_LEVEL
tfieldy%ndimlist(3) = NMNHDIM_BUDGET_LES_TIME
tfieldy%ndimlist(4:) = NMNHDIM_UNUSED
call Les_diachro_2pt_write( tpdiafile, XCORRi_UU, XCORRj_UU, 'UU', 'U*U 2 points correlations', 'm2 s-2' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_VV, XCORRj_VV, 'VV', 'V*V 2 points correlations', 'm2 s-2' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_WW, XCORRj_WW, 'WW', 'W*W 2 points correlations', 'm2 s-2' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_UV, XCORRj_UV, 'UV', 'U*V 2 points correlations', 'm2 s-2' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_WU, XCORRj_WU, 'WU', 'W*U 2 points correlations', 'm2 s-2' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_WV, XCORRj_WV, 'WV', 'W*V 2 points correlations', 'm2 s-2' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_ThTh, XCORRj_ThTh, 'THTH', 'Th*Th 2 points correlations', 'K2' )
if ( luserc ) &
call Les_diachro_2pt_write( tpdiafile, XCORRi_ThlThl, XCORRj_ThlThl, 'TLTL', 'Thl*Thl 2 points correlations', 'K2' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_WTh, XCORRj_WTh, 'WTH', 'W*Th 2 points correlations', 'm K s-1' )
if ( luserc ) &
call Les_diachro_2pt_write( tpdiafile, XCORRi_WThl, XCORRj_WThl, 'WTHL', 'W*Thl 2 points correlations', 'm K s-1' )
if ( luserv ) then
call Les_diachro_2pt_write( tpdiafile, XCORRi_RvRv, XCORRj_RvRv, 'RVRV', 'rv*rv 2 points correlations', 'kg2 kg-2' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_ThRv, XCORRj_ThRv, 'THRV', 'TH*RV 2 points correlations', 'K kg kg-1' )
if ( luserc ) &
call Les_diachro_2pt_write( tpdiafile, XCORRi_ThlRv, XCORRj_ThlRv, 'TLRV', 'thl*rv 2 points correlations', 'K kg kg-1' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_WRv, XCORRj_WRv, 'WRV', 'W*rv 2 points correlations', 'm kg s-1 kg-1' )
end if
if ( luserc ) then
call Les_diachro_2pt_write( tpdiafile, XCORRi_RcRc, XCORRj_RcRc, 'RCRC', 'rc*rc 2 points correlations', 'kg2 kg-2' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_ThRc, XCORRj_ThRc, 'THRC', 'th*rc 2 points correlations', 'K kg kg-1' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_ThlRc, XCORRj_ThlRc, 'TLRC', 'thl*rc 2 points correlations', 'K kg kg-1' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_WRc, XCORRj_WRc, 'WRC', 'W*rc 2 points correlations', 'm kg s-1 kg-1' )
end if
if ( luseri ) then
call Les_diachro_2pt_write( tpdiafile, XCORRi_RiRi, XCORRj_RiRi, 'RIRI', 'ri*ri 2 points correlations', 'kg2 kg-2' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_ThRi, XCORRj_ThRi, 'THRI', 'th*ri 2 points correlations', 'K kg kg-1' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_ThlRi, XCORRj_ThlRi, 'TLRI', 'thl*ri 2 points correlations', 'K kg kg-1' )
call Les_diachro_2pt_write( tpdiafile, XCORRi_WRi, XCORRj_WRi, 'WRI', 'W*ri 2 points correlations', 'm kg s-1 kg-1' )
end if
do jsv = 1, nsv
Write( ygroup, fmt = "( a2, i3.3 )" ) "SS", jsv
call Les_diachro_2pt_write( tpdiafile, XCORRi_SvSv(:,:,:,JSV), XCORRj_SvSv(:,:,:,JSV), ygroup, &
'Sv*Sv 2 points correlations','kg2 kg-2' )
end do
do jsv = 1, nsv
Write( ygroup, fmt = "( a2, i3.3 )" ) "WS", jsv
call Les_diachro_2pt_write( tpdiafile, XCORRi_WSv(:,:,:,JSV), XCORRj_WSv(:,:,:,JSV), ygroup, &
'W*Sv 2 points correlations','m kg s-1 kg-1' )
end do
end if
!
!-------------------------------------------------------------------------------
!
!* 6. spectra and time-averaged profiles (if first call to WRITE_LES_n)
! ----------------------------------
!
call Les_spec_n( tpdiafile )
!
!-------------------------------------------------------------------------------
!
!* 7. deallocations
! -------------
!
DEALLOCATE(XLES_CURRENT_Z )
IF (CLES_NORM_TYPE/='NONE' ) THEN
DEALLOCATE(XLES_NORM_M )
DEALLOCATE(XLES_NORM_S )
DEALLOCATE(XLES_NORM_K )
DEALLOCATE(XLES_NORM_RHO)
DEALLOCATE(XLES_NORM_RV )
DEALLOCATE(XLES_NORM_SV )
DEALLOCATE(XLES_NORM_P )
END IF
end subroutine Write_les_n
!------------------------------------------------------------------------------
subroutine Les_diachro_write( tpdiafile, zcorr, ymnhname, ycomment, yunits )
use modd_io, only: tfiledata
use mode_les_diachro, only: Les_diachro
type(tfiledata), intent(in) :: tpdiafile ! file to write
real, dimension(:), intent(in) :: zcorr
character(len=*), intent(in) :: ymnhname
character(len=*), intent(in) :: ycomment
character(len=*), intent(in) :: yunits
tfield%cmnhname = ymnhname
tfield%clongname = ymnhname
tfield%ccomment = ycomment
tfield%cunits = yunits
call Les_diachro( tpdiafile, tfield, ldoavg, ldonorm, zcorr )
end subroutine Les_diachro_write
!------------------------------------------------------------------------------
subroutine Les_diachro_2pt_write( tpdiafile, zcorri, zcorrj, ymnhname, ycomment, yunits )
use modd_io, only: tfiledata
use mode_les_diachro, only: Les_diachro_2pt
type(tfiledata), intent(in) :: tpdiafile ! file to write
real, dimension(:,:,:), intent(in) :: zcorri ! 2 pts correlation data
real, dimension(:,:,:), intent(in) :: zcorrj ! 2 pts correlation data
character(len=*), intent(in) :: ymnhname
character(len=*), intent(in) :: ycomment
character(len=*), intent(in) :: yunits
tfieldx%cmnhname = ymnhname
tfieldx%clongname = ymnhname
tfieldx%ccomment = ycomment
tfieldx%cunits = yunits
tfieldy%cmnhname = ymnhname
tfieldy%clongname = ymnhname
tfieldy%ccomment = ycomment
tfieldy%cunits = yunits
call Les_diachro_2pt( tpdiafile, tfieldx, tfieldy, zcorri, zcorrj )
end subroutine Les_diachro_2pt_write
!------------------------------------------------------------------------------
end module mode_write_les_n