Forked from
Méso-NH / Méso-NH code
3065 commits behind the upstream repository.
-
WAUTELET Philippe authoredWAUTELET Philippe authored
ini_lesn.f90 69.68 KiB
!MNH_LIC Copyright 2000-2019 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.
!-----------------------------------------------------------------
! ####################
SUBROUTINE INI_LES_n
! ####################
!
!
!!**** *INI_LES_n* initializes the LES variables for model _n
!!
!! PURPOSE
!! -------
!!
!! EXTERNAL
!! --------
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!! REFERENCE
!! ---------
!!
!! AUTHOR
!! ------
!! V. Masson
!!
!! MODIFICATIONS
!! -------------
!! Original 07/02/00
!! Modification 01/02/01 (D.Gazen) add module MODD_NSV for NSV variable
!! 06/11/02 (V. Masson) add LES budgets
!! 10/2016 (C.Lac) Add droplet deposition
!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
!! 02/2019 (C. Lac) Add rain fraction as a LES diagnostic
! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
! P. Wautelet 13/09/2019: budget: simplify and modernize date/time management
!! --------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODE_ll
USE MODE_GATHER_ll
USE MODE_MSG
USE MODE_MODELN_HANDLER
!
USE MODD_LES
USE MODD_LES_BUDGET
USE MODD_LES_n
!
USE MODD_CONF
USE MODD_PARAMETERS
USE MODD_NESTING
!
USE MODD_LUNIT_n
USE MODD_GRID_n
USE MODD_DYN_n
USE MODD_TIME_n
USE MODD_DIM_n
USE MODD_TURB_n
USE MODD_CONF_n
USE MODD_LBC_n
USE MODD_PARAM_n
USE MODD_DYN
USE MODD_NSV, ONLY: NSV ! update_nsv is done in INI_MODEL
USE MODD_CONDSAMP, ONLY : LCONDSAMP
!
USE MODI_INI_LES_CART_MASKn
USE MODI_COEF_VER_INTERP_LIN
!
IMPLICIT NONE
!
!
!* 0.1 declarations of arguments
!
!
!
!
! 0.2 declaration of local variables
!
!
!
INTEGER :: ILUOUT, IRESP
INTEGER :: JI,JJ, JK ! loop counters
INTEGER :: IIU_ll ! total domain I size
INTEGER :: IJU_ll ! total domain J size
INTEGER :: IIMAX_ll ! total physical domain I size
INTEGER :: IJMAX_ll ! total physical domain J size
!
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZZ_LES ! LES altitudes 3D array
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZZ_SPEC! " for spectra
!
!
REAL, DIMENSION(:), ALLOCATABLE :: ZXHAT_ll ! father model coordinates
REAL, DIMENSION(:), ALLOCATABLE :: ZYHAT_ll !
INTEGER :: IMI
!
!-------------------------------------------------------------------------------
IMI = GET_CURRENT_MODEL_INDEX()
!
CALL GET_GLOBALDIMS_ll(IIMAX_ll,IJMAX_ll)
IIU_ll = IIMAX_ll+2*JPHEXT
IJU_ll = IJMAX_ll+2*JPHEXT
!
ILUOUT = TLUOUT%NLU
!
!-------------------------------------------------------------------------------
!
!* 1. Does LES computations are used?
! ------------------------------
!
LLES = LLES_MEAN .OR. LLES_RESOLVED .OR. LLES_SUBGRID .OR. LLES_UPDRAFT &
.OR. LLES_DOWNDRAFT .OR. LLES_SPECTRA
!
!
IF (.NOT. LLES) RETURN
!
IF (L1D) THEN
LLES_RESOLVED = .FALSE.
LLES_UPDRAFT = .FALSE.
LLES_DOWNDRAFT = .FALSE.
LLES_SPECTRA = .FALSE.
LLES_NEB_MASK = .FALSE.
LLES_CORE_MASK = .FALSE.
LLES_CS_MASK = .FALSE.
LLES_MY_MASK = .FALSE.
END IF
!
IF (LLES_RESOLVED ) LLES_MEAN = .TRUE.
IF (LLES_SUBGRID ) LLES_MEAN = .TRUE.
IF (LLES_UPDRAFT ) LLES_MEAN = .TRUE.
IF (LLES_DOWNDRAFT) LLES_MEAN = .TRUE.
IF (LLES_SPECTRA ) LLES_MEAN = .TRUE.
!
IF (CTURB=='NONE') THEN
WRITE(ILUOUT,FMT=*) 'LES diagnostics cannot be done without subgrid turbulence.'
WRITE(ILUOUT,FMT=*) 'You have chosen CTURB="NONE". You must choose a turbulence scheme.'
call Print_msg( NVERB_FATAL, 'GEN', 'WRITE_LB_n', 'LES diagnostics cannot be done without subgrid turbulence' )
END IF
!-------------------------------------------------------------------------------
!
!* 2. Number and definition of masks
! ------------------------------
!
!-------------------------------------------------------------------------------
!
!* 2.1 Cartesian (sub-)domain
! ----------------------
!
!* updates number of masks
! -----------------------
!
NLES_MASKS = 1
!
!* For model 1, set default values of cartesian mask, and defines cartesian mask
! -----------------------------------------------------------------------------
!
IF (IMI==1) THEN
NLESn_IINF(1)= NUNDEF
NLESn_ISUP(1)= NUNDEF
NLESn_JINF(1)= NUNDEF
NLESn_JSUP(1)= NUNDEF
!
IF (LLES_CART_MASK) THEN
IF (NLES_IINF==NUNDEF) NLES_IINF=JPHEXT+1
IF (NLES_JINF==NUNDEF) NLES_JINF=JPHEXT+1
IF (NLES_ISUP==NUNDEF) NLES_ISUP=IIU_ll-JPHEXT
IF (NLES_JSUP==NUNDEF) NLES_JSUP=IJU_ll-JPHEXT
END IF
!
IF ( NLES_IINF==JPHEXT+1 .AND. NLES_JINF==JPHEXT+1 &
.AND. NLES_ISUP==IIU_ll-JPHEXT .AND. NLES_ISUP==IJU_ll-JPHEXT ) THEN
LLES_CART_MASK=.FALSE.
END IF
!
IF (.NOT. LLES_CART_MASK) THEN
NLES_IINF=JPHEXT+1
NLES_JINF=JPHEXT+1
NLES_ISUP=IIU_ll-JPHEXT
NLES_JSUP=IJU_ll-JPHEXT
END IF
!
NLESn_IINF(1)= NLES_IINF
NLESn_ISUP(1)= NLES_ISUP
NLESn_JINF(1)= NLES_JINF
NLESn_JSUP(1)= NLES_JSUP
!
!* For other models, fits cartesian mask on model 1 mask
! -----------------------------------------------------
!
ELSE
ALLOCATE(ZXHAT_ll(IIU_ll))
ALLOCATE(ZYHAT_ll(IJU_ll))
CALL GATHERALL_FIELD_ll('XX',XXHAT,ZXHAT_ll,IRESP)
CALL GATHERALL_FIELD_ll('YY',XYHAT,ZYHAT_ll,IRESP)
!
CALL GOTO_MODEL(NDAD(IMI))
CALL INI_LES_CART_MASK_n(IMI,ZXHAT_ll,ZYHAT_ll, &
NLESn_IINF(IMI),NLESn_JINF(IMI), &
NLESn_ISUP(IMI),NLESn_JSUP(IMI) )
CALL GOTO_MODEL(IMI)
!
DEALLOCATE(ZXHAT_ll)
DEALLOCATE(ZYHAT_ll)
END IF
!
!* in non cyclic boundary conditions, limitiation of masks due to u and v grids
! ----------------------------------------------------------------------------
!
IF ( (.NOT. L1D) .AND. CLBCX(1)/='CYCL') THEN
NLESn_IINF(IMI) = MAX(NLESn_IINF(IMI),JPHEXT+2)
END IF
IF ( (.NOT. L1D) .AND. (.NOT. L2D) .AND. CLBCY(1)/='CYCL') THEN
NLESn_JINF(IMI) = MAX(NLESn_JINF(IMI),JPHEXT+2)
END IF
!
!* X boundary conditions for 2points correlations computations
! -----------------------------------------------------------
!
IF ( NLESn_IINF(IMI)==JPHEXT+1 .AND. NLESn_ISUP(IMI)==IIU_ll-JPHEXT &
.AND. CLBCX(1)=='CYCL' ) THEN
CLES_LBCX(:,IMI) = 'CYCL'
ELSE
CLES_LBCX(:,IMI) = 'OPEN'
END IF
!
!* Y boundary conditions for 2points correlations computations
! -----------------------------------------------------------
!
IF ( NLESn_JINF(IMI)==JPHEXT+1 .AND. NLESn_JSUP(IMI)==IJU_ll-JPHEXT &
.AND. CLBCY(1)=='CYCL' ) THEN
CLES_LBCY(:,IMI) = 'CYCL'
ELSE
CLES_LBCY(:,IMI) = 'OPEN'
END IF
!
!-------------------------------------------------------------------------------
!
!* 2.2 Nebulosity mask
! ---------------
!
IF (.NOT. LUSERC .AND. .NOT. LUSERI) LLES_NEB_MASK = .FALSE.
!
IF (LLES_NEB_MASK) NLES_MASKS = NLES_MASKS + 2
!
!-------------------------------------------------------------------------------
!
!* 2.3 Cloud core mask
! ---------------
!
IF (.NOT. LUSERC .AND. .NOT. LUSERI) LLES_CORE_MASK = .FALSE.
!
IF (LLES_CORE_MASK) NLES_MASKS = NLES_MASKS + 2
!
!-------------------------------------------------------------------------------
!
!* 2.4 Conditional sampling mask
! -------------------------
!
IF (.NOT. LUSERC .AND. .NOT. LCONDSAMP) LLES_CS_MASK = .FALSE.
!
IF (LLES_CS_MASK) NLES_MASKS = NLES_MASKS + 3
!
!-------------------------------------------------------------------------------
!
!* 2.5 User mask
! ---------
!
IF (LLES_MY_MASK) NLES_MASKS = NLES_MASKS + NLES_MASKS_USER
!
!-------------------------------------------------------------------------------
!
!* 3. Number of temporal LES samplings
! --------------------------------
!
!* 3.1 Default value
! -------------
!
IF (XLES_TEMP_SAMPLING == XUNDEF) THEN
IF (CTURBDIM=='3DIM') THEN
XLES_TEMP_SAMPLING = 60.
ELSE
XLES_TEMP_SAMPLING = 300.
END IF
END IF
!
!* 3.2 Number of time steps between two calls
! --------------------------------------
!
NLES_DTCOUNT = MAX( NINT( XLES_TEMP_SAMPLING / XTSTEP ) , 1)
!
!* 3.3 Redefinition of the LES sampling time coherent with model time-step
! -------------------------------------------------------------------
!
! Note that this modifies XLES_TEMP_SAMPLING only for father model (model number 1)
! For nested models (for which integration time step is an integer part of father model)
! the following operation does not change XLES_TEMP_SAMPLING. This way, LEs
! sampling is done at the same instants for all models.
!
XLES_TEMP_SAMPLING = XTSTEP * NLES_DTCOUNT
!
!
!* 3.4 number of temporal calls to LES routines
! ----------------------------------------
!
!
NLES_TIMES = ( INT( (XSEGLEN-XTSTEP+1.E-6) / XTSTEP ) ) / NLES_DTCOUNT
!
!* 3.5 current LES time counter
! ------------------------
!
NLES_TCOUNT = 0
!
!* 3.6 dates array for diachro
! ----------------------
!
allocate( xles_dates( nles_times ) )
allocate( xles_times( nles_times ) )
!
!* 3.7 No data
! -------
!
IF (NLES_TIMES==0) THEN
LLES=.FALSE.
RETURN
END IF
!
!-------------------------------------------------------------------------------
!
!* 4. Number of vertical levels for local diagnostics
! -----------------------------------------------
!
NLES_K = 0
!
!* 4.1 Case of altitude levels (lowest priority)
! -----------------------
!
IF (ANY(XLES_ALTITUDES(:)/=XUNDEF)) THEN
NLES_K = COUNT (XLES_ALTITUDES(:)/=XUNDEF)
CLES_LEVEL_TYPE='Z'
!
ALLOCATE(XCOEFLIN_LES(SIZE(XZZ,1),SIZE(XZZ,2),NLES_K))
ALLOCATE(NKLIN_LES (SIZE(XZZ,1),SIZE(XZZ,2),NLES_K))
!
ALLOCATE(ZZ_LES (SIZE(XZZ,1),SIZE(XZZ,2),NLES_K))
DO JK=1,NLES_K
DO JJ=1,SIZE(XZZ,2)
DO JI=1,SIZE(XZZ,1)
ZZ_LES(JI,JJ,JK) = XLES_ALTITUDES(JK)
END DO
END DO
END DO
CALL COEF_VER_INTERP_LIN(XZZ,ZZ_LES,NKLIN_LES,XCOEFLIN_LES)
!
DEALLOCATE(ZZ_LES)
END IF
!
!
!* 4.2 Case of model levels (highest priority)
! --------------------
!
IF (ANY(NLES_LEVELS(:)/=NUNDEF)) THEN
NLES_K = COUNT (NLES_LEVELS(:)/=XUNDEF)
CLES_LEVEL_TYPE='K'
ELSE
IF (NLES_K==0) THEN
NLES_K = MIN(SIZE(NLES_LEVELS),NKMAX)
CLES_LEVEL_TYPE='K'
DO JK=1,NLES_K
NLES_LEVELS(JK) = JK + JPVEXT
END DO
END IF
END IF
!
!-------------------------------------------------------------------------------
!
!* 5. Number of vertical levels for non-local diagnostics
! ---------------------------------------------------
!
NSPECTRA_K = 0
CSPECTRA_LEVEL_TYPE='N'
!
!
!* 5.1 Case of altitude levels (medium priority)
! -----------------------
!
IF (ANY(XSPECTRA_ALTITUDES(:)/=XUNDEF)) THEN
NSPECTRA_K = COUNT (XSPECTRA_ALTITUDES(:)/=XUNDEF)
CSPECTRA_LEVEL_TYPE='Z'
!
ALLOCATE(XCOEFLIN_SPEC(SIZE(XZZ,1),SIZE(XZZ,2),NSPECTRA_K))
ALLOCATE(NKLIN_SPEC (SIZE(XZZ,1),SIZE(XZZ,2),NSPECTRA_K))
!
ALLOCATE(ZZ_SPEC (SIZE(XZZ,1),SIZE(XZZ,2),NSPECTRA_K))
DO JK=1,NLES_K
DO JJ=1,SIZE(XZZ,2)
DO JI=1,SIZE(XZZ,1)
ZZ_SPEC(JI,JJ,JK) = XSPECTRA_ALTITUDES(JK)
END DO
END DO
END DO
CALL COEF_VER_INTERP_LIN(XZZ,ZZ_SPEC,NKLIN_SPEC,XCOEFLIN_SPEC)
!
DEALLOCATE(ZZ_SPEC)
END IF
!
!
!* 5.2 Case of model levels (highest priority)
! --------------------
!
IF (ANY(NSPECTRA_LEVELS(:)/=XUNDEF)) THEN
NSPECTRA_K = COUNT (NSPECTRA_LEVELS(:)/=XUNDEF)
CSPECTRA_LEVEL_TYPE='K'
END IF
!
!-------------------------------------------------------------------------------
!
!* 6. Number of horizontal wavelengths for non-local diagnostics
! ----------------------------------------------------------
!
NSPECTRA_NI = NLESn_ISUP(IMI) - NLESn_IINF(IMI) + 1
NSPECTRA_NJ = NLESn_JSUP(IMI) - NLESn_JINF(IMI) + 1
!
!
!-------------------------------------------------------------------------------
!
!* 7. Allocations of temporal series of local diagnostics
! ---------------------------------------------------
!
!* 7.0 Altitude levels
! ---------------
!
ALLOCATE(XLES_Z (NLES_K))
!
!* 7.1 Averaging control variables
! ---------------------------
!
ALLOCATE(NLES_AVG_PTS_ll (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(NLES_UND_PTS_ll (NLES_K,NLES_TIMES,NLES_MASKS))
!
NLES_AVG_PTS_ll = NUNDEF
NLES_UND_PTS_ll = NUNDEF
!
!
!* 7.2 Horizontally mean variables
! ---------------------------
!
ALLOCATE(XLES_MEAN_U (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_V (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_W (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_P (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_DP (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_TP (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_TR (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_DISS(NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_LM (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_RHO(NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_Th (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_Mf (NLES_K,NLES_TIMES,NLES_MASKS))
IF (LUSERC ) THEN
ALLOCATE(XLES_MEAN_Thl(NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_Rt (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_KHt(NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_KHr(NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Thl(0,0,0))
ALLOCATE(XLES_MEAN_Rt (0,0,0))
ALLOCATE(XLES_MEAN_KHt(0,0,0))
ALLOCATE(XLES_MEAN_KHr(0,0,0))
END IF
IF (LUSERV) THEN
ALLOCATE(XLES_MEAN_Thv(NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Thv(0,0,0))
END IF
!
IF (LUSERV ) THEN
ALLOCATE(XLES_MEAN_Rv (NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Rv (0,0,0))
END IF
IF (LUSERV ) THEN
ALLOCATE(XLES_MEAN_Rehu (NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Rehu (0,0,0))
ENDIF
IF (LUSERV ) THEN
ALLOCATE(XLES_MEAN_Qs (NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Qs (0,0,0))
END IF
IF (LUSERC ) THEN
ALLOCATE(XLES_MEAN_Rc (NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Rc (0,0,0))
END IF
IF (LUSERC ) THEN
ALLOCATE(XLES_MEAN_Cf (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_INDCf (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_INDCf2 (NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Cf (0,0,0))
ALLOCATE(XLES_MEAN_INDCf (0,0,0))
ALLOCATE(XLES_MEAN_INDCf2(0,0,0))
END IF
IF (LUSERR ) THEN
ALLOCATE(XLES_MEAN_Rr (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_RF (NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Rr (0,0,0))
ALLOCATE(XLES_MEAN_RF (0,0,0))
END IF
IF (LUSERI ) THEN
ALLOCATE(XLES_MEAN_Ri (NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Ri (0,0,0))
END IF
IF (LUSERS ) THEN
ALLOCATE(XLES_MEAN_Rs (NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Rs (0,0,0))
END IF
IF (LUSERG ) THEN
ALLOCATE(XLES_MEAN_Rg (NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Rg (0,0,0))
END IF
IF (LUSERH ) THEN
ALLOCATE(XLES_MEAN_Rh (NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_Rh (0,0,0))
END IF
IF (NSV>0 ) THEN
ALLOCATE(XLES_MEAN_Sv (NLES_K,NLES_TIMES,NLES_MASKS,NSV))
ELSE
ALLOCATE(XLES_MEAN_Sv (0,0,0,0))
END IF
ALLOCATE(XLES_MEAN_WIND (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_dUdz (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_dVdz (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_dWdz (NLES_K,NLES_TIMES,NLES_MASKS))
ALLOCATE(XLES_MEAN_dThldz(NLES_K,NLES_TIMES,NLES_MASKS))
IF (LUSERV) THEN
ALLOCATE(XLES_MEAN_dRtdz(NLES_K,NLES_TIMES,NLES_MASKS))
ELSE
ALLOCATE(XLES_MEAN_dRtdz(0,0,0))
END IF
IF (NSV>0) THEN
ALLOCATE(XLES_MEAN_dSvdz(NLES_K,NLES_TIMES,NLES_MASKS,NSV))
ELSE
ALLOCATE(XLES_MEAN_dSvdz(0,0,0,0))
END IF
!
IF (LLES_PDF) THEN
!pdf distributions and jpdf distributions
ALLOCATE(XLES_PDF_TH (NLES_K,NLES_TIMES,NLES_MASKS,NPDF))
ALLOCATE(XLES_PDF_W (NLES_K,NLES_TIMES,NLES_MASKS,NPDF))
ALLOCATE(XLES_PDF_THV (NLES_K,NLES_TIMES,NLES_MASKS,NPDF))
IF (LUSERV) THEN
ALLOCATE(XLES_PDF_RV (NLES_K,NLES_TIMES,NLES_MASKS,NPDF))
ELSE
ALLOCATE(XLES_PDF_RV (0,0,0,0))
END IF
IF (LUSERC) THEN
ALLOCATE(XLES_PDF_RC (NLES_K,NLES_TIMES,NLES_MASKS,NPDF))
ALLOCATE(XLES_PDF_RT (NLES_K,NLES_TIMES,NLES_MASKS,NPDF))
ALLOCATE(XLES_PDF_THL(NLES_K,NLES_TIMES,NLES_MASKS,NPDF))
ELSE
ALLOCATE(XLES_PDF_RC (0,0,0,0))
ALLOCATE(XLES_PDF_RT (0,0,0,0))
ALLOCATE(XLES_PDF_THL(0,0,0,0))
ENDIF
IF (LUSERR) THEN
ALLOCATE(XLES_PDF_RR (NLES_K,NLES_TIMES,NLES_MASKS,NPDF))
ELSE
ALLOCATE(XLES_PDF_RR (0,0,0,0))
ENDIF
IF (LUSERI) THEN
ALLOCATE(XLES_PDF_RI (NLES_K,NLES_TIMES,NLES_MASKS,NPDF))
ELSE
ALLOCATE(XLES_PDF_RI (0,0,0,0))
END IF
IF (LUSERS) THEN
ALLOCATE(XLES_PDF_RS (NLES_K,NLES_TIMES,NLES_MASKS,NPDF))
ELSE
ALLOCATE(XLES_PDF_RS (0,0,0,0))
END IF
IF (LUSERG) THEN
ALLOCATE(XLES_PDF_RG (NLES_K,NLES_TIMES,NLES_MASKS,NPDF))
ELSE
ALLOCATE(XLES_PDF_RG (0,0,0,0))
END IF
ENDIF
!
XLES_MEAN_U = XUNDEF
XLES_MEAN_V = XUNDEF
XLES_MEAN_W = XUNDEF
XLES_MEAN_P = XUNDEF
XLES_MEAN_DP = XUNDEF
XLES_MEAN_TP = XUNDEF
XLES_MEAN_TR = XUNDEF
XLES_MEAN_DISS= XUNDEF
XLES_MEAN_LM = XUNDEF
XLES_MEAN_RHO= XUNDEF
XLES_MEAN_Th = XUNDEF
XLES_MEAN_Mf = XUNDEF
IF (LUSERC ) XLES_MEAN_Thl= XUNDEF
IF (LUSERV ) XLES_MEAN_Thv= XUNDEF
IF (LUSERV ) XLES_MEAN_Rv = XUNDEF
IF (LUSERV ) XLES_MEAN_Rehu = XUNDEF
IF (LUSERV ) XLES_MEAN_Qs = XUNDEF
IF (LUSERC ) XLES_MEAN_KHr = XUNDEF
IF (LUSERC ) XLES_MEAN_KHt = XUNDEF
IF (LUSERC ) XLES_MEAN_Rt = XUNDEF
IF (LUSERC ) XLES_MEAN_Rc = XUNDEF
IF (LUSERC ) XLES_MEAN_Cf = XUNDEF
IF (LUSERC ) XLES_MEAN_RF = XUNDEF
IF (LUSERC ) XLES_MEAN_INDCf = XUNDEF
IF (LUSERC ) XLES_MEAN_INDCf2 = XUNDEF
IF (LUSERR ) XLES_MEAN_Rr = XUNDEF
IF (LUSERI ) XLES_MEAN_Ri = XUNDEF
IF (LUSERS ) XLES_MEAN_Rs = XUNDEF
IF (LUSERG ) XLES_MEAN_Rg = XUNDEF
IF (LUSERH ) XLES_MEAN_Rh = XUNDEF
IF (NSV>0 ) XLES_MEAN_Sv = XUNDEF
XLES_MEAN_WIND = XUNDEF
XLES_MEAN_WIND = XUNDEF
XLES_MEAN_dUdz = XUNDEF
XLES_MEAN_dVdz = XUNDEF
XLES_MEAN_dWdz = XUNDEF
XLES_MEAN_dThldz= XUNDEF
IF (LUSERV) XLES_MEAN_dRtdz = XUNDEF
IF (NSV>0) XLES_MEAN_dSvdz = XUNDEF
!
IF (LLES_PDF) THEN
XLES_PDF_TH = XUNDEF
XLES_PDF_W = XUNDEF
XLES_PDF_THV = XUNDEF
IF (LUSERV) THEN
XLES_PDF_RV = XUNDEF
END IF
IF (LUSERC) THEN
XLES_PDF_RC = XUNDEF
XLES_PDF_RT = XUNDEF
XLES_PDF_THL = XUNDEF
END IF
IF (LUSERR) THEN
XLES_PDF_RR = XUNDEF
END IF
IF (LUSERI) THEN
XLES_PDF_RI = XUNDEF
END IF
IF (LUSERS) THEN
XLES_PDF_RS = XUNDEF
END IF
IF (LUSERG) THEN
XLES_PDF_RG = XUNDEF
END IF
END IF
!
!
!
!* 7.3 Resolved quantities
! -------------------
!
ALLOCATE(XLES_RESOLVED_U2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'2>
ALLOCATE(XLES_RESOLVED_V2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'2>
ALLOCATE(XLES_RESOLVED_W2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'2>
ALLOCATE(XLES_RESOLVED_P2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <p'2>
ALLOCATE(XLES_RESOLVED_Th2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Th'2>
IF (LUSERV) THEN
ALLOCATE(XLES_RESOLVED_ThThv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Th'Thv'>
ELSE
ALLOCATE(XLES_RESOLVED_ThThv (0,0,0))
END IF
IF (LUSERC) THEN
ALLOCATE(XLES_RESOLVED_Thl2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thl'2>
ALLOCATE(XLES_RESOLVED_ThlThv(NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thl'Thv'>
ELSE
ALLOCATE(XLES_RESOLVED_Thl2 (0,0,0))
ALLOCATE(XLES_RESOLVED_ThlThv(0,0,0))
END IF
ALLOCATE(XLES_RESOLVED_Ke (NLES_K,NLES_TIMES,NLES_MASKS)) ! 0.5 <u'2+v'2+w'2>
ALLOCATE(XLES_RESOLVED_UV (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'v'>
ALLOCATE(XLES_RESOLVED_WU (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'u'>
ALLOCATE(XLES_RESOLVED_WV (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'v'>
ALLOCATE(XLES_RESOLVED_UP (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'p'>
ALLOCATE(XLES_RESOLVED_VP (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'p'>
ALLOCATE(XLES_RESOLVED_WP (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'p'>
ALLOCATE(XLES_RESOLVED_UTh (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'Th'>
ALLOCATE(XLES_RESOLVED_VTh (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'Th'>
ALLOCATE(XLES_RESOLVED_WTh (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Th'>
IF (LUSERC) THEN
ALLOCATE(XLES_RESOLVED_UThl (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'Thl'>
ALLOCATE(XLES_RESOLVED_VThl (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'Thl'>
ALLOCATE(XLES_RESOLVED_WThl (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Thl'>
ELSE
ALLOCATE(XLES_RESOLVED_UThl(0,0,0))
ALLOCATE(XLES_RESOLVED_VThl(0,0,0))
ALLOCATE(XLES_RESOLVED_WThl(0,0,0))
END IF
IF (LUSERV) THEN
ALLOCATE(XLES_RESOLVED_UThv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'Thv'>
ALLOCATE(XLES_RESOLVED_VThv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'Thv'>
ALLOCATE(XLES_RESOLVED_WThv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Thv'>
ELSE
ALLOCATE(XLES_RESOLVED_UThv(0,0,0))
ALLOCATE(XLES_RESOLVED_VThv(0,0,0))
ALLOCATE(XLES_RESOLVED_WThv(0,0,0))
END IF
ALLOCATE(XLES_RESOLVED_U3 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'3>
ALLOCATE(XLES_RESOLVED_V3 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'3>
ALLOCATE(XLES_RESOLVED_W3 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'3>
ALLOCATE(XLES_RESOLVED_U4 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'4>
ALLOCATE(XLES_RESOLVED_V4 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'4>
ALLOCATE(XLES_RESOLVED_W4 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'4>
ALLOCATE(XLES_RESOLVED_Ua_ddxa_P(NLES_K,NLES_TIMES,NLES_MASKS)) ! <ua'dp'/dxa>
ALLOCATE(XLES_RESOLVED_ThlPz (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thv'dp'/dz>
ALLOCATE(XLES_RESOLVED_WThl2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Thl'2>
ALLOCATE(XLES_RESOLVED_W2Thl (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'2Thl'>
ALLOCATE(XLES_RESOLVED_MASSFX(NLES_K,NLES_TIMES,NLES_MASKS)) ! <upward mass flux>
ALLOCATE(XLES_RESOLVED_UKe (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'(u'2+v'2+w'2)>
ALLOCATE(XLES_RESOLVED_VKe (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'(u'2+v'2+w'2)>
ALLOCATE(XLES_RESOLVED_WKe (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'(u'2+v'2+w'2)>
IF (LUSERV ) THEN
ALLOCATE(XLES_RESOLVED_Rv2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Rv'2>
ALLOCATE(XLES_RESOLVED_ThRv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Th'Rv'>
ALLOCATE(XLES_RESOLVED_ThvRv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thv'Rv'>
ALLOCATE(XLES_RESOLVED_URv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'Rv'>
ALLOCATE(XLES_RESOLVED_VRv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'Rv'>
ALLOCATE(XLES_RESOLVED_WRv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rv'>
ALLOCATE(XLES_RESOLVED_WRv2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rv'2>
ALLOCATE(XLES_RESOLVED_W2Rv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'2Rv'>
ALLOCATE(XLES_RESOLVED_W2Rt (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'2Rt'>
ALLOCATE(XLES_RESOLVED_WRt2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rt2'>
ALLOCATE(XLES_RESOLVED_RvPz (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Rv'dp'/dz>
ALLOCATE(XLES_RESOLVED_WThlRv(NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Thl'Rv'>
ALLOCATE(XLES_RESOLVED_WThlRt(NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Thl'Rt'>
ELSE
ALLOCATE(XLES_RESOLVED_Rv2 (0,0,0))
ALLOCATE(XLES_RESOLVED_ThRv (0,0,0))
ALLOCATE(XLES_RESOLVED_ThvRv (0,0,0))
ALLOCATE(XLES_RESOLVED_URv (0,0,0))
ALLOCATE(XLES_RESOLVED_VRv (0,0,0))
ALLOCATE(XLES_RESOLVED_WRv (0,0,0))
ALLOCATE(XLES_RESOLVED_WRv2 (0,0,0))
ALLOCATE(XLES_RESOLVED_W2Rv (0,0,0))
ALLOCATE(XLES_RESOLVED_W2Rt (0,0,0))
ALLOCATE(XLES_RESOLVED_WRt2 (0,0,0))
ALLOCATE(XLES_RESOLVED_RvPz (0,0,0))
ALLOCATE(XLES_RESOLVED_WThlRv(0,0,0))
ALLOCATE(XLES_RESOLVED_WThlRt(0,0,0))
END IF
IF (LUSERC ) THEN
ALLOCATE(XLES_RESOLVED_ThlRv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thl'Rv'>
!
ALLOCATE(XLES_RESOLVED_Rc2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Rc'2>
ALLOCATE(XLES_RESOLVED_ThRc (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Th'Rc'>
ALLOCATE(XLES_RESOLVED_ThlRc (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thl'Rc'>
ALLOCATE(XLES_RESOLVED_ThvRc (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thv'Rc'>
ALLOCATE(XLES_RESOLVED_URc (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'Rc'>
ALLOCATE(XLES_RESOLVED_VRc (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'Rc'>
ALLOCATE(XLES_RESOLVED_WRc (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rc'>
ALLOCATE(XLES_RESOLVED_WRc2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rc'2>
ALLOCATE(XLES_RESOLVED_W2Rc (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'2Rc'>
ALLOCATE(XLES_RESOLVED_RcPz (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Rc'dp'/dz>
ALLOCATE(XLES_RESOLVED_WThlRc(NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Thl'Rc'>
ALLOCATE(XLES_RESOLVED_WRvRc (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rv'Rc'>
ALLOCATE(XLES_RESOLVED_WRt (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rt'>
ALLOCATE(XLES_RESOLVED_Rt2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Rt'2>
ALLOCATE(XLES_RESOLVED_RtPz (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Rv'dp'/dz>
ELSE
ALLOCATE(XLES_RESOLVED_ThlRv (0,0,0))
!
ALLOCATE(XLES_RESOLVED_Rc2 (0,0,0))
ALLOCATE(XLES_RESOLVED_ThRc (0,0,0))
ALLOCATE(XLES_RESOLVED_ThlRc (0,0,0))
ALLOCATE(XLES_RESOLVED_ThvRc (0,0,0))
ALLOCATE(XLES_RESOLVED_URc (0,0,0))
ALLOCATE(XLES_RESOLVED_VRc (0,0,0))
ALLOCATE(XLES_RESOLVED_WRc (0,0,0))
ALLOCATE(XLES_RESOLVED_WRc2 (0,0,0))
ALLOCATE(XLES_RESOLVED_W2Rc (0,0,0))
ALLOCATE(XLES_RESOLVED_RcPz (0,0,0))
ALLOCATE(XLES_RESOLVED_WThlRc(0,0,0))
ALLOCATE(XLES_RESOLVED_WRvRc (0,0,0))
ALLOCATE(XLES_RESOLVED_WRt (0,0,0))
ALLOCATE(XLES_RESOLVED_Rt2 (0,0,0))
ALLOCATE(XLES_RESOLVED_RtPz (0,0,0))
END IF
IF (LUSERI ) THEN
ALLOCATE(XLES_RESOLVED_Ri2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Ri'2>
ALLOCATE(XLES_RESOLVED_ThRi (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Th'Ri'>
ALLOCATE(XLES_RESOLVED_ThlRi (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thl'Ri'>
ALLOCATE(XLES_RESOLVED_ThvRi (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thv'Ri'>
ALLOCATE(XLES_RESOLVED_URi (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'Ri'>
ALLOCATE(XLES_RESOLVED_VRi (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'Ri'>
ALLOCATE(XLES_RESOLVED_WRi (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Ri'>
ALLOCATE(XLES_RESOLVED_WRi2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Ri'2>
ALLOCATE(XLES_RESOLVED_W2Ri (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'2Ri'>
ALLOCATE(XLES_RESOLVED_RiPz (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Ri'dp'/dz>
ALLOCATE(XLES_RESOLVED_WThlRi(NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Thl'Ri'>
ALLOCATE(XLES_RESOLVED_WRvRi (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rv'Ri'>
ELSE
ALLOCATE(XLES_RESOLVED_Ri2 (0,0,0))
ALLOCATE(XLES_RESOLVED_ThRi (0,0,0))
ALLOCATE(XLES_RESOLVED_ThlRi (0,0,0))
ALLOCATE(XLES_RESOLVED_ThvRi (0,0,0))
ALLOCATE(XLES_RESOLVED_URi (0,0,0))
ALLOCATE(XLES_RESOLVED_VRi (0,0,0))
ALLOCATE(XLES_RESOLVED_WRi (0,0,0))
ALLOCATE(XLES_RESOLVED_WRi2 (0,0,0))
ALLOCATE(XLES_RESOLVED_W2Ri (0,0,0))
ALLOCATE(XLES_RESOLVED_RiPz (0,0,0))
ALLOCATE(XLES_RESOLVED_WThlRi(0,0,0))
ALLOCATE(XLES_RESOLVED_WRvRi (0,0,0))
END IF
!
IF (LUSERR) THEN
ALLOCATE(XLES_RESOLVED_WRr (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rr'>
ALLOCATE(XLES_INPRR3D (NLES_K,NLES_TIMES,NLES_MASKS)) !precip flux
ALLOCATE(XLES_MAX_INPRR3D (NLES_K,NLES_TIMES,NLES_MASKS)) !precip flux
ALLOCATE(XLES_EVAP3D (NLES_K,NLES_TIMES,NLES_MASKS)) ! evap
ELSE
ALLOCATE(XLES_RESOLVED_WRr (0,0,0))
ALLOCATE(XLES_INPRR3D (0,0,0))
ALLOCATE(XLES_MAX_INPRR3D (0,0,0))
ALLOCATE(XLES_EVAP3D (0,0,0))
END IF
IF (NSV>0 ) THEN
ALLOCATE(XLES_RESOLVED_Sv2 (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Sv'2>
ALLOCATE(XLES_RESOLVED_ThSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Th'Sv>
ALLOCATE(XLES_RESOLVED_USv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <u'Sv'>
ALLOCATE(XLES_RESOLVED_VSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <v'Sv'>
ALLOCATE(XLES_RESOLVED_WSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Sv'>
ALLOCATE(XLES_RESOLVED_WSv2 (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Sv'2>
ALLOCATE(XLES_RESOLVED_W2Sv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'2Sv'>
ALLOCATE(XLES_RESOLVED_SvPz (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Sv'dp'/dz>
ALLOCATE(XLES_RESOLVED_WThlSv(NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Thl'Sv'>
IF (LUSERV) THEN
ALLOCATE(XLES_RESOLVED_ThvSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Thv'Sv>
ALLOCATE(XLES_RESOLVED_WRvSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Rv'Sv'>
ELSE
ALLOCATE(XLES_RESOLVED_ThvSv (0,0,0,0))
ALLOCATE(XLES_RESOLVED_WRvSv (0,0,0,0))
END IF
IF (LUSERC) THEN
ALLOCATE(XLES_RESOLVED_ThlSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Thl'Sv>
ELSE
ALLOCATE(XLES_RESOLVED_ThlSv (0,0,0,0))
END IF
ELSE
ALLOCATE(XLES_RESOLVED_Sv2 (0,0,0,0))
ALLOCATE(XLES_RESOLVED_ThSv (0,0,0,0))
ALLOCATE(XLES_RESOLVED_USv (0,0,0,0))
ALLOCATE(XLES_RESOLVED_VSv (0,0,0,0))
ALLOCATE(XLES_RESOLVED_WSv (0,0,0,0))
ALLOCATE(XLES_RESOLVED_WSv2 (0,0,0,0))
ALLOCATE(XLES_RESOLVED_W2Sv (0,0,0,0))
ALLOCATE(XLES_RESOLVED_SvPz (0,0,0,0))
ALLOCATE(XLES_RESOLVED_ThvSv (0,0,0,0))
ALLOCATE(XLES_RESOLVED_ThlSv (0,0,0,0))
ALLOCATE(XLES_RESOLVED_WThlSv(0,0,0,0))
ALLOCATE(XLES_RESOLVED_WRvSv (0,0,0,0))
END IF
!
!
XLES_RESOLVED_U2 = XUNDEF
XLES_RESOLVED_V2 = XUNDEF
XLES_RESOLVED_W2 = XUNDEF
XLES_RESOLVED_P2 = XUNDEF
XLES_RESOLVED_Th2 = XUNDEF
IF( LUSERC) THEN
XLES_RESOLVED_Thl2= XUNDEF
XLES_RESOLVED_ThlThv= XUNDEF
END IF
IF (LUSERV) THEN
XLES_RESOLVED_ThThv = XUNDEF
END IF
XLES_RESOLVED_Ke = XUNDEF
XLES_RESOLVED_UV = XUNDEF
XLES_RESOLVED_WU = XUNDEF
XLES_RESOLVED_WV = XUNDEF
XLES_RESOLVED_UP = XUNDEF
XLES_RESOLVED_VP = XUNDEF
XLES_RESOLVED_WP = XUNDEF
XLES_RESOLVED_UTh = XUNDEF
XLES_RESOLVED_VTh = XUNDEF
XLES_RESOLVED_WTh = XUNDEF
IF (LUSERC) THEN
XLES_RESOLVED_UThl= XUNDEF
XLES_RESOLVED_VThl= XUNDEF
XLES_RESOLVED_WThl= XUNDEF
END IF
IF (LUSERV) THEN
XLES_RESOLVED_UThv= XUNDEF
XLES_RESOLVED_VThv= XUNDEF
XLES_RESOLVED_WThv= XUNDEF
END IF
XLES_RESOLVED_U3 = XUNDEF
XLES_RESOLVED_V3 = XUNDEF
XLES_RESOLVED_W3 = XUNDEF
XLES_RESOLVED_U4 = XUNDEF
XLES_RESOLVED_V4 = XUNDEF
XLES_RESOLVED_W4 = XUNDEF
XLES_RESOLVED_Ua_ddxa_P = XUNDEF
XLES_RESOLVED_WThl2 = XUNDEF
XLES_RESOLVED_W2Thl = XUNDEF
XLES_RESOLVED_ThlPz = XUNDEF
!
XLES_RESOLVED_MASSFX = XUNDEF
XLES_RESOLVED_UKe = XUNDEF
XLES_RESOLVED_VKe = XUNDEF
XLES_RESOLVED_WKe = XUNDEF
IF (LUSERV ) THEN
XLES_RESOLVED_Rv2 = XUNDEF
XLES_RESOLVED_ThRv = XUNDEF
IF (LUSERC) XLES_RESOLVED_ThlRv= XUNDEF
XLES_RESOLVED_ThvRv= XUNDEF
XLES_RESOLVED_URv = XUNDEF
XLES_RESOLVED_VRv = XUNDEF
XLES_RESOLVED_WRv = XUNDEF
XLES_RESOLVED_WRv2 = XUNDEF
XLES_RESOLVED_W2Rv = XUNDEF
XLES_RESOLVED_WRt2 = XUNDEF
XLES_RESOLVED_W2Rt = XUNDEF
XLES_RESOLVED_WThlRv= XUNDEF
XLES_RESOLVED_WThlRt= XUNDEF
XLES_RESOLVED_RvPz = XUNDEF
END IF
IF (LUSERC ) THEN
XLES_RESOLVED_Rc2 = XUNDEF
XLES_RESOLVED_ThRc = XUNDEF
XLES_RESOLVED_ThlRc= XUNDEF
XLES_RESOLVED_ThvRc= XUNDEF
XLES_RESOLVED_URc = XUNDEF
XLES_RESOLVED_VRc = XUNDEF
XLES_RESOLVED_WRc = XUNDEF
XLES_RESOLVED_WRc2 = XUNDEF
XLES_RESOLVED_W2Rc = XUNDEF
XLES_RESOLVED_WThlRc= XUNDEF
XLES_RESOLVED_WRvRc = XUNDEF
XLES_RESOLVED_RcPz = XUNDEF
XLES_RESOLVED_RtPz = XUNDEF
XLES_RESOLVED_WRt = XUNDEF
XLES_RESOLVED_Rt2 = XUNDEF
END IF
IF (LUSERI ) THEN
XLES_RESOLVED_Ri2 = XUNDEF
XLES_RESOLVED_ThRi = XUNDEF
XLES_RESOLVED_ThlRi= XUNDEF
XLES_RESOLVED_ThvRi= XUNDEF
XLES_RESOLVED_URi = XUNDEF
XLES_RESOLVED_VRi = XUNDEF
XLES_RESOLVED_WRi = XUNDEF
XLES_RESOLVED_WRi2 = XUNDEF
XLES_RESOLVED_W2Ri = XUNDEF
XLES_RESOLVED_WThlRi= XUNDEF
XLES_RESOLVED_WRvRi = XUNDEF
XLES_RESOLVED_RiPz = XUNDEF
END IF
!
IF (LUSERR) XLES_RESOLVED_WRr = XUNDEF
IF (LUSERR) XLES_MAX_INPRR3D = XUNDEF
IF (LUSERR) XLES_INPRR3D = XUNDEF
IF (LUSERR) XLES_EVAP3D = XUNDEF
IF (NSV>0 ) THEN
XLES_RESOLVED_Sv2 = XUNDEF
XLES_RESOLVED_ThSv = XUNDEF
IF (LUSERC) XLES_RESOLVED_ThlSv= XUNDEF
IF (LUSERV) XLES_RESOLVED_ThvSv= XUNDEF
XLES_RESOLVED_USv = XUNDEF
XLES_RESOLVED_VSv = XUNDEF
XLES_RESOLVED_WSv = XUNDEF
XLES_RESOLVED_WSv2 = XUNDEF
XLES_RESOLVED_W2Sv = XUNDEF
XLES_RESOLVED_WThlSv= XUNDEF
IF (LUSERV) XLES_RESOLVED_WRvSv = XUNDEF
XLES_RESOLVED_SvPz = XUNDEF
END IF
!
!
!* 7.4 interactions of resolved and subgrid quantities
! -----------------------------------------------
!
ALLOCATE(XLES_RES_U_SBG_Tke (NLES_K,NLES_TIMES,NLES_MASKS))! <u'Tke>
ALLOCATE(XLES_RES_V_SBG_Tke (NLES_K,NLES_TIMES,NLES_MASKS))! <v'Tke>
ALLOCATE(XLES_RES_W_SBG_Tke (NLES_K,NLES_TIMES,NLES_MASKS))! <w'Tke>
! ______
ALLOCATE(XLES_RES_W_SBG_WThl (NLES_K,NLES_TIMES,NLES_MASKS))! <w'w'Thl'>
! _____
ALLOCATE(XLES_RES_W_SBG_Thl2 (NLES_K,NLES_TIMES,NLES_MASKS))! <w'Thl'2>
! _____
ALLOCATE(XLES_RES_ddxa_U_SBG_UaU (NLES_K,NLES_TIMES,NLES_MASKS))! <du'/dxa ua'u'>
! _____
ALLOCATE(XLES_RES_ddxa_V_SBG_UaV (NLES_K,NLES_TIMES,NLES_MASKS))! <dv'/dxa ua'v'>
! _____
ALLOCATE(XLES_RES_ddxa_W_SBG_UaW (NLES_K,NLES_TIMES,NLES_MASKS))! <dw'/dxa ua'w'>
! _______
ALLOCATE(XLES_RES_ddxa_W_SBG_UaThl (NLES_K,NLES_TIMES,NLES_MASKS))! <dw'/dxa ua'Thl'>
! _____
ALLOCATE(XLES_RES_ddxa_Thl_SBG_UaW (NLES_K,NLES_TIMES,NLES_MASKS))! <dThl'/dxa ua'w'>
! ___
ALLOCATE(XLES_RES_ddz_Thl_SBG_W2 (NLES_K,NLES_TIMES,NLES_MASKS))! <dThl'/dz w'2>
! _______
ALLOCATE(XLES_RES_ddxa_Thl_SBG_UaThl(NLES_K,NLES_TIMES,NLES_MASKS))! <dThl'/dxa ua'Thl'>
!
IF (LUSERV) THEN
! _____
ALLOCATE(XLES_RES_W_SBG_WRt (NLES_K,NLES_TIMES,NLES_MASKS))! <w'w'Rt'>
! ____
ALLOCATE(XLES_RES_W_SBG_Rt2 (NLES_K,NLES_TIMES,NLES_MASKS))! <w'Rt'2>
! _______
ALLOCATE(XLES_RES_W_SBG_ThlRt (NLES_K,NLES_TIMES,NLES_MASKS))! <w'Thl'Rt'>
! ______
ALLOCATE(XLES_RES_ddxa_W_SBG_UaRt (NLES_K,NLES_TIMES,NLES_MASKS))! <dw'/dxa ua'Rt'>
! _____
ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaW (NLES_K,NLES_TIMES,NLES_MASKS))! <dRt'/dxa ua'w'>
! ___
ALLOCATE(XLES_RES_ddz_Rt_SBG_W2 (NLES_K,NLES_TIMES,NLES_MASKS))! <dRt'/dz w'2>
! ______
ALLOCATE(XLES_RES_ddxa_Thl_SBG_UaRt (NLES_K,NLES_TIMES,NLES_MASKS))! <dThl'/dxa ua'Rt'>
! _______
ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaThl (NLES_K,NLES_TIMES,NLES_MASKS))! <dRt'/dxa ua'Thl'>
! ______
ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaRt (NLES_K,NLES_TIMES,NLES_MASKS)) ! <dRt'/dxa ua'Rt'>
ELSE
ALLOCATE(XLES_RES_W_SBG_WRt (0,0,0))
ALLOCATE(XLES_RES_W_SBG_Rt2 (0,0,0))
ALLOCATE(XLES_RES_W_SBG_ThlRt (0,0,0))
ALLOCATE(XLES_RES_ddxa_W_SBG_UaRt (0,0,0))
ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaW (0,0,0))
ALLOCATE(XLES_RES_ddz_Rt_SBG_W2 (0,0,0))
ALLOCATE(XLES_RES_ddxa_Thl_SBG_UaRt (0,0,0))
ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaThl (0,0,0))
ALLOCATE(XLES_RES_ddxa_Rt_SBG_UaRt (0,0,0))
END IF
!
! ______
ALLOCATE(XLES_RES_ddxa_W_SBG_UaSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <dw'/dxa ua'Sv'>
! _____
ALLOCATE(XLES_RES_ddxa_Sv_SBG_UaW (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <dSv'/dxa ua'w'>
! ___
ALLOCATE(XLES_RES_ddz_Sv_SBG_W2 (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <dSv'/dz w'2>
! ______
ALLOCATE(XLES_RES_ddxa_Sv_SBG_UaSv(NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <dSv'/dxa ua'Sv'>
! _____
ALLOCATE(XLES_RES_W_SBG_WSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'w'Sv'>
! ____
ALLOCATE(XLES_RES_W_SBG_Sv2 (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Sv'2>
!
XLES_RES_U_SBG_Tke= XUNDEF
XLES_RES_V_SBG_Tke= XUNDEF
XLES_RES_W_SBG_Tke= XUNDEF
XLES_RES_W_SBG_WThl = XUNDEF
XLES_RES_W_SBG_Thl2 = XUNDEF
XLES_RES_ddxa_U_SBG_UaU = XUNDEF
XLES_RES_ddxa_V_SBG_UaV = XUNDEF
XLES_RES_ddxa_W_SBG_UaW = XUNDEF
XLES_RES_ddxa_W_SBG_UaThl = XUNDEF
XLES_RES_ddxa_Thl_SBG_UaW = XUNDEF
XLES_RES_ddz_Thl_SBG_W2 = XUNDEF
XLES_RES_ddxa_Thl_SBG_UaThl = XUNDEF
IF (LUSERV) THEN
XLES_RES_W_SBG_WRt = XUNDEF
XLES_RES_W_SBG_Rt2 = XUNDEF
XLES_RES_W_SBG_ThlRt = XUNDEF
XLES_RES_ddxa_W_SBG_UaRt = XUNDEF
XLES_RES_ddxa_Rt_SBG_UaW = XUNDEF
XLES_RES_ddz_Rt_SBG_W2 = XUNDEF
XLES_RES_ddxa_Thl_SBG_UaRt= XUNDEF
XLES_RES_ddxa_Rt_SBG_UaThl= XUNDEF
XLES_RES_ddxa_Rt_SBG_UaRt = XUNDEF
END IF
IF (NSV>0) THEN
XLES_RES_ddxa_W_SBG_UaSv = XUNDEF
XLES_RES_ddxa_Sv_SBG_UaW = XUNDEF
XLES_RES_ddz_Sv_SBG_W2 = XUNDEF
XLES_RES_ddxa_Sv_SBG_UaSv= XUNDEF
XLES_RES_W_SBG_WSv = XUNDEF
XLES_RES_W_SBG_Sv2 = XUNDEF
END IF
!
!
!* 7.5 subgrid quantities
! ------------------
!
ALLOCATE(XLES_SUBGRID_U2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'2>
ALLOCATE(XLES_SUBGRID_V2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'2>
ALLOCATE(XLES_SUBGRID_W2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'2>
ALLOCATE(XLES_SUBGRID_Tke (NLES_K,NLES_TIMES,NLES_MASKS)) ! <e>
ALLOCATE(XLES_SUBGRID_Thl2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thl'2>
ALLOCATE(XLES_SUBGRID_UV (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'v'>
ALLOCATE(XLES_SUBGRID_WU (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'u'>
ALLOCATE(XLES_SUBGRID_WV (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'v'>
ALLOCATE(XLES_SUBGRID_UThl (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'Thl'>
ALLOCATE(XLES_SUBGRID_VThl (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'Thl'>
ALLOCATE(XLES_SUBGRID_WThl (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Thl'>
ALLOCATE(XLES_SUBGRID_WThv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Thv'>
ALLOCATE(XLES_SUBGRID_ThlThv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thl'Thv'>
ALLOCATE(XLES_SUBGRID_W2Thl (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'2Thl>
ALLOCATE(XLES_SUBGRID_WThl2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Thl'2>
ALLOCATE(XLES_SUBGRID_DISS_Tke (NLES_K,NLES_TIMES,NLES_MASKS)) ! <epsilon>
ALLOCATE(XLES_SUBGRID_DISS_Thl2(NLES_K,NLES_TIMES,NLES_MASKS)) ! <epsilon_Thl2>
ALLOCATE(XLES_SUBGRID_WP (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'p'>
ALLOCATE(XLES_SUBGRID_PHI3 (NLES_K,NLES_TIMES,NLES_MASKS)) ! phi3
ALLOCATE(XLES_SUBGRID_LMix (NLES_K,NLES_TIMES,NLES_MASKS)) ! mixing length
ALLOCATE(XLES_SUBGRID_LDiss (NLES_K,NLES_TIMES,NLES_MASKS)) ! dissipative length
ALLOCATE(XLES_SUBGRID_Km (NLES_K,NLES_TIMES,NLES_MASKS)) ! Km
ALLOCATE(XLES_SUBGRID_Kh (NLES_K,NLES_TIMES,NLES_MASKS)) ! Kh
ALLOCATE(XLES_SUBGRID_ThlPz (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thl'dp'/dz>
ALLOCATE(XLES_SUBGRID_UTke (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'Tke>
ALLOCATE(XLES_SUBGRID_VTke (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'Tke>
ALLOCATE(XLES_SUBGRID_WTke (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Tke>
ALLOCATE(XLES_SUBGRID_ddz_WTke (NLES_K,NLES_TIMES,NLES_MASKS)) ! <dw'Tke/dz>
ALLOCATE(XLES_SUBGRID_THLUP_MF(NLES_K,NLES_TIMES,NLES_MASKS)) ! Thl of the Updraft
ALLOCATE(XLES_SUBGRID_RTUP_MF (NLES_K,NLES_TIMES,NLES_MASKS)) ! Rt of the Updraft
ALLOCATE(XLES_SUBGRID_RVUP_MF (NLES_K,NLES_TIMES,NLES_MASKS)) ! Rv of the Updraft
ALLOCATE(XLES_SUBGRID_RCUP_MF (NLES_K,NLES_TIMES,NLES_MASKS)) ! Rc of the Updraft
ALLOCATE(XLES_SUBGRID_RIUP_MF (NLES_K,NLES_TIMES,NLES_MASKS)) ! Ri of the Updraft
ALLOCATE(XLES_SUBGRID_WUP_MF (NLES_K,NLES_TIMES,NLES_MASKS)) ! Thl of the Updraft
ALLOCATE(XLES_SUBGRID_MASSFLUX(NLES_K,NLES_TIMES,NLES_MASKS)) ! Mass Flux
ALLOCATE(XLES_SUBGRID_DETR (NLES_K,NLES_TIMES,NLES_MASKS)) ! Detrainment
ALLOCATE(XLES_SUBGRID_ENTR (NLES_K,NLES_TIMES,NLES_MASKS)) ! Entrainment
ALLOCATE(XLES_SUBGRID_FRACUP (NLES_K,NLES_TIMES,NLES_MASKS)) ! Updraft Fraction
ALLOCATE(XLES_SUBGRID_THVUP_MF(NLES_K,NLES_TIMES,NLES_MASKS)) ! Thv of the Updraft
ALLOCATE(XLES_SUBGRID_WTHLMF (NLES_K,NLES_TIMES,NLES_MASKS)) ! Flux of thl
ALLOCATE(XLES_SUBGRID_WRTMF (NLES_K,NLES_TIMES,NLES_MASKS)) ! Flux of rt
ALLOCATE(XLES_SUBGRID_WTHVMF (NLES_K,NLES_TIMES,NLES_MASKS)) ! Flux of thv
ALLOCATE(XLES_SUBGRID_WUMF (NLES_K,NLES_TIMES,NLES_MASKS))! Flux of u
ALLOCATE(XLES_SUBGRID_WVMF (NLES_K,NLES_TIMES,NLES_MASKS))! Flux of v
IF (LUSERV ) THEN
ALLOCATE(XLES_SUBGRID_Rt2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Rt'2>
ALLOCATE(XLES_SUBGRID_ThlRt (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Thl'Rt'>
ALLOCATE(XLES_SUBGRID_URt (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'Rt'>
ALLOCATE(XLES_SUBGRID_VRt (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'Rt'>
ALLOCATE(XLES_SUBGRID_WRt (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rt'>
ALLOCATE(XLES_SUBGRID_RtThv (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Rt'Thv'>
ALLOCATE(XLES_SUBGRID_W2Rt (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'2Rt'>
ALLOCATE(XLES_SUBGRID_WThlRt(NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Thl'Rt'>
ALLOCATE(XLES_SUBGRID_WRt2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rt'2>
ALLOCATE(XLES_SUBGRID_DISS_Rt2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <epsilon_Rt2>
ALLOCATE(XLES_SUBGRID_DISS_ThlRt(NLES_K,NLES_TIMES,NLES_MASKS)) ! <epsilon_ThlRt>
ALLOCATE(XLES_SUBGRID_RtPz (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Rt'dp'/dz>
ALLOCATE(XLES_SUBGRID_PSI3 (NLES_K,NLES_TIMES,NLES_MASKS)) ! psi3
ELSE
ALLOCATE(XLES_SUBGRID_Rt2 (0,0,0))
ALLOCATE(XLES_SUBGRID_ThlRt (0,0,0))
ALLOCATE(XLES_SUBGRID_URt (0,0,0))
ALLOCATE(XLES_SUBGRID_VRt (0,0,0))
ALLOCATE(XLES_SUBGRID_WRt (0,0,0))
ALLOCATE(XLES_SUBGRID_RtThv (0,0,0))
ALLOCATE(XLES_SUBGRID_W2Rt (0,0,0))
ALLOCATE(XLES_SUBGRID_WThlRt(0,0,0))
ALLOCATE(XLES_SUBGRID_WRt2 (0,0,0))
ALLOCATE(XLES_SUBGRID_DISS_Rt2 (0,0,0))
ALLOCATE(XLES_SUBGRID_DISS_ThlRt(0,0,0))
ALLOCATE(XLES_SUBGRID_RtPz (0,0,0))
ALLOCATE(XLES_SUBGRID_PSI3 (0,0,0))
END IF
IF (LUSERC ) THEN
ALLOCATE(XLES_SUBGRID_Rc2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Rc'2>
ALLOCATE(XLES_SUBGRID_URc (NLES_K,NLES_TIMES,NLES_MASKS)) ! <u'Rc'>
ALLOCATE(XLES_SUBGRID_VRc (NLES_K,NLES_TIMES,NLES_MASKS)) ! <v'Rc'>
ALLOCATE(XLES_SUBGRID_WRc (NLES_K,NLES_TIMES,NLES_MASKS)) ! <w'Rc'>
ELSE
ALLOCATE(XLES_SUBGRID_Rc2 (0,0,0))
ALLOCATE(XLES_SUBGRID_URc (0,0,0))
ALLOCATE(XLES_SUBGRID_VRc (0,0,0))
ALLOCATE(XLES_SUBGRID_WRc (0,0,0))
END IF
IF (LUSERI ) THEN
ALLOCATE(XLES_SUBGRID_Ri2 (NLES_K,NLES_TIMES,NLES_MASKS)) ! <Ri'2>
ELSE
ALLOCATE(XLES_SUBGRID_Ri2 (0,0,0))
END IF
IF (NSV>0 ) THEN
ALLOCATE(XLES_SUBGRID_USv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <u'Sv'>
ALLOCATE(XLES_SUBGRID_VSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <v'Sv'>
ALLOCATE(XLES_SUBGRID_WSv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Sv'>
ALLOCATE(XLES_SUBGRID_Sv2 (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Sv'2>
ALLOCATE(XLES_SUBGRID_SvThv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Sv'Thv'>
ALLOCATE(XLES_SUBGRID_W2Sv (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'2Sv'>
ALLOCATE(XLES_SUBGRID_WSv2 (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <w'Sv'2>
ALLOCATE(XLES_SUBGRID_DISS_Sv2 (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <epsilon_Sv2>
ALLOCATE(XLES_SUBGRID_SvPz (NLES_K,NLES_TIMES,NLES_MASKS,NSV)) ! <Sv'dp'/dz>
ELSE
ALLOCATE(XLES_SUBGRID_USv (0,0,0,0))
ALLOCATE(XLES_SUBGRID_VSv (0,0,0,0))
ALLOCATE(XLES_SUBGRID_WSv (0,0,0,0))
ALLOCATE(XLES_SUBGRID_Sv2 (0,0,0,0))
ALLOCATE(XLES_SUBGRID_SvThv (0,0,0,0))
ALLOCATE(XLES_SUBGRID_W2Sv (0,0,0,0))
ALLOCATE(XLES_SUBGRID_WSv2 (0,0,0,0))
ALLOCATE(XLES_SUBGRID_DISS_Sv2(0,0,0,0))
ALLOCATE(XLES_SUBGRID_SvPz (0,0,0,0))
END IF
!
XLES_SUBGRID_U2 = XUNDEF
XLES_SUBGRID_V2 = XUNDEF
XLES_SUBGRID_W2 = XUNDEF
XLES_SUBGRID_Tke = XUNDEF
XLES_SUBGRID_Thl2= XUNDEF
XLES_SUBGRID_UV = XUNDEF
XLES_SUBGRID_WU = XUNDEF
XLES_SUBGRID_WV = XUNDEF
XLES_SUBGRID_UThl= XUNDEF
XLES_SUBGRID_VThl= XUNDEF
XLES_SUBGRID_WThl= XUNDEF
XLES_SUBGRID_WThv= XUNDEF
XLES_SUBGRID_ThlThv= XUNDEF
XLES_SUBGRID_W2Thl= XUNDEF
XLES_SUBGRID_WThl2 = XUNDEF
XLES_SUBGRID_DISS_Tke = XUNDEF
XLES_SUBGRID_DISS_Thl2= XUNDEF
XLES_SUBGRID_WP = XUNDEF
XLES_SUBGRID_PHI3 = XUNDEF
XLES_SUBGRID_LMix = XUNDEF
XLES_SUBGRID_LDiss = XUNDEF
XLES_SUBGRID_Km = XUNDEF
XLES_SUBGRID_Kh = XUNDEF
XLES_SUBGRID_ThlPz = XUNDEF
XLES_SUBGRID_UTke= XUNDEF
XLES_SUBGRID_VTke= XUNDEF
XLES_SUBGRID_WTke= XUNDEF
XLES_SUBGRID_ddz_WTke = XUNDEF
XLES_SUBGRID_THLUP_MF = XUNDEF
XLES_SUBGRID_RTUP_MF = XUNDEF
XLES_SUBGRID_RVUP_MF = XUNDEF
XLES_SUBGRID_RCUP_MF = XUNDEF
XLES_SUBGRID_RIUP_MF = XUNDEF
XLES_SUBGRID_WUP_MF = XUNDEF
XLES_SUBGRID_MASSFLUX = XUNDEF
XLES_SUBGRID_DETR = XUNDEF
XLES_SUBGRID_ENTR = XUNDEF
XLES_SUBGRID_FRACUP = XUNDEF
XLES_SUBGRID_THVUP_MF = XUNDEF
XLES_SUBGRID_WTHLMF = XUNDEF
XLES_SUBGRID_WRTMF = XUNDEF
XLES_SUBGRID_WTHVMF = XUNDEF
XLES_SUBGRID_WUMF = XUNDEF
XLES_SUBGRID_WVMF = XUNDEF
IF (LUSERV ) THEN
XLES_SUBGRID_Rt2 = XUNDEF
XLES_SUBGRID_ThlRt= XUNDEF
XLES_SUBGRID_URt = XUNDEF
XLES_SUBGRID_VRt = XUNDEF
XLES_SUBGRID_WRt = XUNDEF
XLES_SUBGRID_RtThv = XUNDEF
XLES_SUBGRID_W2Rt = XUNDEF
XLES_SUBGRID_WThlRt = XUNDEF
XLES_SUBGRID_WRt2 = XUNDEF
XLES_SUBGRID_DISS_Rt2= XUNDEF
XLES_SUBGRID_DISS_ThlRt= XUNDEF
XLES_SUBGRID_RtPz = XUNDEF
XLES_SUBGRID_PSI3 = XUNDEF
END IF
IF (LUSERC ) THEN
XLES_SUBGRID_Rc2 = XUNDEF
XLES_SUBGRID_URc = XUNDEF
XLES_SUBGRID_VRc = XUNDEF
XLES_SUBGRID_WRc = XUNDEF
END IF
IF (LUSERI ) THEN
XLES_SUBGRID_Ri2 = XUNDEF
END IF
IF (NSV>0 ) THEN
XLES_SUBGRID_USv = XUNDEF
XLES_SUBGRID_VSv = XUNDEF
XLES_SUBGRID_WSv = XUNDEF
XLES_SUBGRID_Sv2 = XUNDEF
XLES_SUBGRID_SvThv = XUNDEF
XLES_SUBGRID_W2Sv = XUNDEF
XLES_SUBGRID_WSv2 = XUNDEF
XLES_SUBGRID_DISS_Sv2= XUNDEF
XLES_SUBGRID_SvPz = XUNDEF
END IF
!
!
!* 7.6 updraft quantities (only on the cartesian mask)
! ------------------
!
ALLOCATE(XLES_UPDRAFT (NLES_K,NLES_TIMES)) ! updraft fraction
ALLOCATE(XLES_UPDRAFT_W (NLES_K,NLES_TIMES)) ! <w>
ALLOCATE(XLES_UPDRAFT_Th (NLES_K,NLES_TIMES)) ! <theta>
ALLOCATE(XLES_UPDRAFT_Ke (NLES_K,NLES_TIMES)) ! <E>
ALLOCATE(XLES_UPDRAFT_WTh (NLES_K,NLES_TIMES)) ! <w'theta'>
ALLOCATE(XLES_UPDRAFT_Th2 (NLES_K,NLES_TIMES)) ! <th'2>
ALLOCATE(XLES_UPDRAFT_Tke (NLES_K,NLES_TIMES)) ! <e>
IF (LUSERV) THEN
ALLOCATE(XLES_UPDRAFT_Thv (NLES_K,NLES_TIMES)) ! <thetav>
ALLOCATE(XLES_UPDRAFT_WThv (NLES_K,NLES_TIMES)) ! <w'thv'>
ALLOCATE(XLES_UPDRAFT_ThThv (NLES_K,NLES_TIMES)) ! <th'thv'>
ELSE
ALLOCATE(XLES_UPDRAFT_Thv (0,0))
ALLOCATE(XLES_UPDRAFT_WThv (0,0))
ALLOCATE(XLES_UPDRAFT_ThThv (0,0))
END IF
!
IF (LUSERC) THEN
ALLOCATE(XLES_UPDRAFT_Thl (NLES_K,NLES_TIMES)) ! <thetal>
ALLOCATE(XLES_UPDRAFT_WThl (NLES_K,NLES_TIMES)) ! <w'thetal'>
ALLOCATE(XLES_UPDRAFT_Thl2 (NLES_K,NLES_TIMES)) ! <thl'2>
ALLOCATE(XLES_UPDRAFT_ThlThv(NLES_K,NLES_TIMES)) ! <thl'thv'>
ELSE
ALLOCATE(XLES_UPDRAFT_Thl (0,0))
ALLOCATE(XLES_UPDRAFT_WThl (0,0))
ALLOCATE(XLES_UPDRAFT_Thl2 (0,0))
ALLOCATE(XLES_UPDRAFT_ThlThv(0,0))
END IF
IF (LUSERV ) THEN
ALLOCATE(XLES_UPDRAFT_Rv (NLES_K,NLES_TIMES)) ! <Rv>
ALLOCATE(XLES_UPDRAFT_WRv (NLES_K,NLES_TIMES)) ! <w'Rv'>
ALLOCATE(XLES_UPDRAFT_Rv2 (NLES_K,NLES_TIMES)) ! <Rv'2>
ALLOCATE(XLES_UPDRAFT_ThRv (NLES_K,NLES_TIMES)) ! <Th'Rv'>
ALLOCATE(XLES_UPDRAFT_ThvRv (NLES_K,NLES_TIMES)) ! <Thv'Rv'>
IF (LUSERC) THEN
ALLOCATE(XLES_UPDRAFT_ThlRv (NLES_K,NLES_TIMES)) ! <Thl'Rv'>
ELSE
ALLOCATE(XLES_UPDRAFT_ThlRv (0,0))
END IF
ELSE
ALLOCATE(XLES_UPDRAFT_Rv (0,0))
ALLOCATE(XLES_UPDRAFT_WRv (0,0))
ALLOCATE(XLES_UPDRAFT_Rv2 (0,0))
ALLOCATE(XLES_UPDRAFT_ThRv (0,0))
ALLOCATE(XLES_UPDRAFT_ThvRv (0,0))
ALLOCATE(XLES_UPDRAFT_ThlRv (0,0))
END IF
IF (LUSERC ) THEN
ALLOCATE(XLES_UPDRAFT_Rc (NLES_K,NLES_TIMES)) ! <Rc>
ALLOCATE(XLES_UPDRAFT_WRc (NLES_K,NLES_TIMES)) ! <w'Rc'>
ALLOCATE(XLES_UPDRAFT_Rc2 (NLES_K,NLES_TIMES)) ! <Rc'2>
ALLOCATE(XLES_UPDRAFT_ThRc (NLES_K,NLES_TIMES)) ! <Th'Rc'>
ALLOCATE(XLES_UPDRAFT_ThvRc (NLES_K,NLES_TIMES)) ! <Thv'Rc'>
ALLOCATE(XLES_UPDRAFT_ThlRc (NLES_K,NLES_TIMES)) ! <Thl'Rc'>
ELSE
ALLOCATE(XLES_UPDRAFT_Rc (0,0))
ALLOCATE(XLES_UPDRAFT_WRc (0,0))
ALLOCATE(XLES_UPDRAFT_Rc2 (0,0))
ALLOCATE(XLES_UPDRAFT_ThRc (0,0))
ALLOCATE(XLES_UPDRAFT_ThvRc (0,0))
ALLOCATE(XLES_UPDRAFT_ThlRc (0,0))
END IF
IF (LUSERR ) THEN
ALLOCATE(XLES_UPDRAFT_Rr (NLES_K,NLES_TIMES)) ! <Rr>
ELSE
ALLOCATE(XLES_UPDRAFT_Rr (0,0))
END IF
IF (LUSERI ) THEN
ALLOCATE(XLES_UPDRAFT_Ri (NLES_K,NLES_TIMES)) ! <Ri>
ALLOCATE(XLES_UPDRAFT_WRi (NLES_K,NLES_TIMES)) ! <w'Ri'>
ALLOCATE(XLES_UPDRAFT_Ri2 (NLES_K,NLES_TIMES)) ! <Ri'2>
ALLOCATE(XLES_UPDRAFT_ThRi (NLES_K,NLES_TIMES)) ! <Th'Ri'>
ALLOCATE(XLES_UPDRAFT_ThvRi (NLES_K,NLES_TIMES)) ! <Thv'Ri'>
ALLOCATE(XLES_UPDRAFT_ThlRi (NLES_K,NLES_TIMES)) ! <Thl'Ri'>
ELSE
ALLOCATE(XLES_UPDRAFT_Ri (0,0))
ALLOCATE(XLES_UPDRAFT_WRi (0,0))
ALLOCATE(XLES_UPDRAFT_Ri2 (0,0))
ALLOCATE(XLES_UPDRAFT_ThRi (0,0))
ALLOCATE(XLES_UPDRAFT_ThvRi (0,0))
ALLOCATE(XLES_UPDRAFT_ThlRi (0,0))
END IF
IF (LUSERS ) THEN
ALLOCATE(XLES_UPDRAFT_Rs (NLES_K,NLES_TIMES)) ! <Rs>
ELSE
ALLOCATE(XLES_UPDRAFT_Rs (0,0))
END IF
IF (LUSERG ) THEN
ALLOCATE(XLES_UPDRAFT_Rg (NLES_K,NLES_TIMES)) ! <Rg>
ELSE
ALLOCATE(XLES_UPDRAFT_Rg (0,0))
END IF
IF (LUSERH ) THEN
ALLOCATE(XLES_UPDRAFT_Rh (NLES_K,NLES_TIMES)) ! <Rh>
ELSE
ALLOCATE(XLES_UPDRAFT_Rh (0,0))
END IF
IF (NSV>0 ) THEN
ALLOCATE(XLES_UPDRAFT_Sv (NLES_K,NLES_TIMES,NSV))! <Sv>
ALLOCATE(XLES_UPDRAFT_WSv (NLES_K,NLES_TIMES,NSV))! <w'Sv'>
ALLOCATE(XLES_UPDRAFT_Sv2 (NLES_K,NLES_TIMES,NSV))! <Sv'2>
ALLOCATE(XLES_UPDRAFT_ThSv (NLES_K,NLES_TIMES,NSV))! <Th'Sv'>
IF (LUSERV) THEN
ALLOCATE(XLES_UPDRAFT_ThvSv (NLES_K,NLES_TIMES,NSV))! <Thv'Sv'>
ELSE
ALLOCATE(XLES_UPDRAFT_ThvSv (0,0,0))
END IF
IF (LUSERC) THEN
ALLOCATE(XLES_UPDRAFT_ThlSv (NLES_K,NLES_TIMES,NSV))! <Thl'Sv'>
ELSE
ALLOCATE(XLES_UPDRAFT_ThlSv (0,0,0))
END IF
ELSE
ALLOCATE(XLES_UPDRAFT_Sv (0,0,0))
ALLOCATE(XLES_UPDRAFT_WSv (0,0,0))
ALLOCATE(XLES_UPDRAFT_Sv2 (0,0,0))
ALLOCATE(XLES_UPDRAFT_ThSv (0,0,0))
ALLOCATE(XLES_UPDRAFT_ThvSv (0,0,0))
ALLOCATE(XLES_UPDRAFT_ThlSv (0,0,0))
END IF
!
!
XLES_UPDRAFT = XUNDEF
XLES_UPDRAFT_W = XUNDEF
XLES_UPDRAFT_Th = XUNDEF
XLES_UPDRAFT_Thl = XUNDEF
XLES_UPDRAFT_Tke = XUNDEF
IF (LUSERV ) XLES_UPDRAFT_Thv = XUNDEF
IF (LUSERC ) XLES_UPDRAFT_Thl = XUNDEF
IF (LUSERV ) XLES_UPDRAFT_Rv = XUNDEF
IF (LUSERC ) XLES_UPDRAFT_Rc = XUNDEF
IF (LUSERR ) XLES_UPDRAFT_Rr = XUNDEF
IF (LUSERI ) XLES_UPDRAFT_Ri = XUNDEF
IF (LUSERS ) XLES_UPDRAFT_Rs = XUNDEF
IF (LUSERG ) XLES_UPDRAFT_Rg = XUNDEF
IF (LUSERH ) XLES_UPDRAFT_Rh = XUNDEF
IF (NSV>0 ) XLES_UPDRAFT_Sv = XUNDEF
XLES_UPDRAFT_Ke = XUNDEF
XLES_UPDRAFT_WTh = XUNDEF
IF (LUSERV ) XLES_UPDRAFT_WThv = XUNDEF
IF (LUSERC ) XLES_UPDRAFT_WThl = XUNDEF
IF (LUSERV ) XLES_UPDRAFT_WRv = XUNDEF
IF (LUSERC ) XLES_UPDRAFT_WRc = XUNDEF
IF (LUSERI ) XLES_UPDRAFT_WRi = XUNDEF
IF (NSV>0 ) XLES_UPDRAFT_WSv = XUNDEF
XLES_UPDRAFT_Th2 = XUNDEF
IF (LUSERV ) THEN
XLES_UPDRAFT_ThThv = XUNDEF
END IF
IF (LUSERC ) THEN
XLES_UPDRAFT_Thl2 = XUNDEF
XLES_UPDRAFT_ThlThv = XUNDEF
END IF
IF (LUSERV ) XLES_UPDRAFT_Rv2 = XUNDEF
IF (LUSERC ) XLES_UPDRAFT_Rc2 = XUNDEF
IF (LUSERI ) XLES_UPDRAFT_Ri2 = XUNDEF
IF (NSV>0 ) XLES_UPDRAFT_Sv2 = XUNDEF
IF (LUSERV ) XLES_UPDRAFT_ThRv = XUNDEF
IF (LUSERC ) XLES_UPDRAFT_ThRc = XUNDEF
IF (LUSERI ) XLES_UPDRAFT_ThRi = XUNDEF
IF (LUSERC ) XLES_UPDRAFT_ThlRv= XUNDEF
IF (LUSERC ) XLES_UPDRAFT_ThlRc= XUNDEF
IF (LUSERI ) XLES_UPDRAFT_ThlRi= XUNDEF
IF (NSV>0 ) XLES_UPDRAFT_ThSv = XUNDEF
IF (LUSERV ) XLES_UPDRAFT_ThvRv= XUNDEF
IF (LUSERC ) XLES_UPDRAFT_ThvRc= XUNDEF
IF (LUSERI ) XLES_UPDRAFT_ThvRi= XUNDEF
IF (NSV>0 .AND. LUSERV) XLES_UPDRAFT_ThvSv = XUNDEF
IF (NSV>0 .AND. LUSERC) XLES_UPDRAFT_ThlSv = XUNDEF
!
!
!* 7.7 downdraft quantities (only on the cartesian mask)
! --------------------
!
ALLOCATE(XLES_DOWNDRAFT (NLES_K,NLES_TIMES)) ! updraft fraction
ALLOCATE(XLES_DOWNDRAFT_W (NLES_K,NLES_TIMES)) ! <w>
ALLOCATE(XLES_DOWNDRAFT_Th (NLES_K,NLES_TIMES)) ! <theta>
ALLOCATE(XLES_DOWNDRAFT_Ke (NLES_K,NLES_TIMES)) ! <E>
ALLOCATE(XLES_DOWNDRAFT_WTh (NLES_K,NLES_TIMES)) ! <w'theta'>
ALLOCATE(XLES_DOWNDRAFT_Th2 (NLES_K,NLES_TIMES)) ! <th'2>
ALLOCATE(XLES_DOWNDRAFT_Tke (NLES_K,NLES_TIMES)) ! <e>
IF (LUSERV) THEN
ALLOCATE(XLES_DOWNDRAFT_Thv (NLES_K,NLES_TIMES)) ! <thetav>
ALLOCATE(XLES_DOWNDRAFT_WThv (NLES_K,NLES_TIMES)) ! <w'thv'>
ALLOCATE(XLES_DOWNDRAFT_ThThv (NLES_K,NLES_TIMES)) ! <th'thv'>
ELSE
ALLOCATE(XLES_DOWNDRAFT_Thv (0,0))
ALLOCATE(XLES_DOWNDRAFT_WThv (0,0))
ALLOCATE(XLES_DOWNDRAFT_ThThv (0,0))
END IF
!
IF (LUSERC) THEN
ALLOCATE(XLES_DOWNDRAFT_Thl (NLES_K,NLES_TIMES)) ! <thetal>
ALLOCATE(XLES_DOWNDRAFT_WThl (NLES_K,NLES_TIMES)) ! <w'thetal'>
ALLOCATE(XLES_DOWNDRAFT_Thl2 (NLES_K,NLES_TIMES)) ! <thl'2>
ALLOCATE(XLES_DOWNDRAFT_ThlThv(NLES_K,NLES_TIMES)) ! <thl'thv'>
ELSE
ALLOCATE(XLES_DOWNDRAFT_Thl (0,0))
ALLOCATE(XLES_DOWNDRAFT_WThl (0,0))
ALLOCATE(XLES_DOWNDRAFT_Thl2 (0,0))
ALLOCATE(XLES_DOWNDRAFT_ThlThv(0,0))
END IF
IF (LUSERV ) THEN
ALLOCATE(XLES_DOWNDRAFT_Rv (NLES_K,NLES_TIMES)) ! <Rv>
ALLOCATE(XLES_DOWNDRAFT_WRv (NLES_K,NLES_TIMES)) ! <w'Rv'>
ALLOCATE(XLES_DOWNDRAFT_Rv2 (NLES_K,NLES_TIMES)) ! <Rv'2>
ALLOCATE(XLES_DOWNDRAFT_ThRv (NLES_K,NLES_TIMES)) ! <Th'Rv'>
ALLOCATE(XLES_DOWNDRAFT_ThvRv (NLES_K,NLES_TIMES)) ! <Thv'Rv'>
IF (LUSERC) THEN
ALLOCATE(XLES_DOWNDRAFT_ThlRv (NLES_K,NLES_TIMES)) ! <Thl'Rv'>
ELSE
ALLOCATE(XLES_DOWNDRAFT_ThlRv (0,0))
END IF
ELSE
ALLOCATE(XLES_DOWNDRAFT_Rv (0,0))
ALLOCATE(XLES_DOWNDRAFT_WRv (0,0))
ALLOCATE(XLES_DOWNDRAFT_Rv2 (0,0))
ALLOCATE(XLES_DOWNDRAFT_ThRv (0,0))
ALLOCATE(XLES_DOWNDRAFT_ThvRv (0,0))
ALLOCATE(XLES_DOWNDRAFT_ThlRv (0,0))
END IF
IF (LUSERC ) THEN
ALLOCATE(XLES_DOWNDRAFT_Rc (NLES_K,NLES_TIMES)) ! <Rc>
ALLOCATE(XLES_DOWNDRAFT_WRc (NLES_K,NLES_TIMES)) ! <w'Rc'>
ALLOCATE(XLES_DOWNDRAFT_Rc2 (NLES_K,NLES_TIMES)) ! <Rc'2>
ALLOCATE(XLES_DOWNDRAFT_ThRc (NLES_K,NLES_TIMES)) ! <Th'Rc'>
ALLOCATE(XLES_DOWNDRAFT_ThvRc (NLES_K,NLES_TIMES)) ! <Thv'Rc'>
ALLOCATE(XLES_DOWNDRAFT_ThlRc (NLES_K,NLES_TIMES)) ! <Thl'Rc'>
ELSE
ALLOCATE(XLES_DOWNDRAFT_Rc (0,0))
ALLOCATE(XLES_DOWNDRAFT_WRc (0,0))
ALLOCATE(XLES_DOWNDRAFT_Rc2 (0,0))
ALLOCATE(XLES_DOWNDRAFT_ThRc (0,0))
ALLOCATE(XLES_DOWNDRAFT_ThvRc (0,0))
ALLOCATE(XLES_DOWNDRAFT_ThlRc (0,0))
END IF
IF (LUSERR ) THEN
ALLOCATE(XLES_DOWNDRAFT_Rr (NLES_K,NLES_TIMES)) ! <Rr>
ELSE
ALLOCATE(XLES_DOWNDRAFT_Rr (0,0))
END IF
IF (LUSERI ) THEN
ALLOCATE(XLES_DOWNDRAFT_Ri (NLES_K,NLES_TIMES)) ! <Ri>
ALLOCATE(XLES_DOWNDRAFT_WRi (NLES_K,NLES_TIMES)) ! <w'Ri'>
ALLOCATE(XLES_DOWNDRAFT_Ri2 (NLES_K,NLES_TIMES)) ! <Ri'2>
ALLOCATE(XLES_DOWNDRAFT_ThRi (NLES_K,NLES_TIMES)) ! <Th'Ri'>
ALLOCATE(XLES_DOWNDRAFT_ThvRi (NLES_K,NLES_TIMES)) ! <Thv'Ri'>
ALLOCATE(XLES_DOWNDRAFT_ThlRi (NLES_K,NLES_TIMES)) ! <Thl'Ri'>
ELSE
ALLOCATE(XLES_DOWNDRAFT_Ri (0,0))
ALLOCATE(XLES_DOWNDRAFT_WRi (0,0))
ALLOCATE(XLES_DOWNDRAFT_Ri2 (0,0))
ALLOCATE(XLES_DOWNDRAFT_ThRi (0,0))
ALLOCATE(XLES_DOWNDRAFT_ThvRi (0,0))
ALLOCATE(XLES_DOWNDRAFT_ThlRi (0,0))
END IF
IF (LUSERS ) THEN
ALLOCATE(XLES_DOWNDRAFT_Rs (NLES_K,NLES_TIMES)) ! <Rs>
ELSE
ALLOCATE(XLES_DOWNDRAFT_Rs (0,0))
END IF
IF (LUSERG ) THEN
ALLOCATE(XLES_DOWNDRAFT_Rg (NLES_K,NLES_TIMES)) ! <Rg>
ELSE
ALLOCATE(XLES_DOWNDRAFT_Rg (0,0))
END IF
IF (LUSERH ) THEN
ALLOCATE(XLES_DOWNDRAFT_Rh (NLES_K,NLES_TIMES)) ! <Rh>
ELSE
ALLOCATE(XLES_DOWNDRAFT_Rh (0,0))
END IF
IF (NSV>0 ) THEN
ALLOCATE(XLES_DOWNDRAFT_Sv (NLES_K,NLES_TIMES,NSV))! <Sv>
ALLOCATE(XLES_DOWNDRAFT_WSv (NLES_K,NLES_TIMES,NSV))! <w'Sv'>
ALLOCATE(XLES_DOWNDRAFT_Sv2 (NLES_K,NLES_TIMES,NSV))! <Sv'2>
ALLOCATE(XLES_DOWNDRAFT_ThSv (NLES_K,NLES_TIMES,NSV))! <Th'Sv'>
IF (LUSERV) THEN
ALLOCATE(XLES_DOWNDRAFT_ThvSv (NLES_K,NLES_TIMES,NSV))! <Thv'Sv'>
ELSE
ALLOCATE(XLES_DOWNDRAFT_ThvSv (0,0,0))
END IF
IF (LUSERC) THEN
ALLOCATE(XLES_DOWNDRAFT_ThlSv (NLES_K,NLES_TIMES,NSV))! <Thl'Sv'>
ELSE
ALLOCATE(XLES_DOWNDRAFT_ThlSv (0,0,0))
END IF
ELSE
ALLOCATE(XLES_DOWNDRAFT_Sv (0,0,0))
ALLOCATE(XLES_DOWNDRAFT_WSv (0,0,0))
ALLOCATE(XLES_DOWNDRAFT_Sv2 (0,0,0))
ALLOCATE(XLES_DOWNDRAFT_ThSv (0,0,0))
ALLOCATE(XLES_DOWNDRAFT_ThvSv (0,0,0))
ALLOCATE(XLES_DOWNDRAFT_ThlSv (0,0,0))
END IF
!
!
XLES_DOWNDRAFT = XUNDEF
XLES_DOWNDRAFT_W = XUNDEF
XLES_DOWNDRAFT_Th = XUNDEF
XLES_DOWNDRAFT_Thl = XUNDEF
XLES_DOWNDRAFT_Tke = XUNDEF
IF (LUSERV ) XLES_DOWNDRAFT_Thv = XUNDEF
IF (LUSERC ) XLES_DOWNDRAFT_Thl = XUNDEF
IF (LUSERV ) XLES_DOWNDRAFT_Rv = XUNDEF
IF (LUSERC ) XLES_DOWNDRAFT_Rc = XUNDEF
IF (LUSERR ) XLES_DOWNDRAFT_Rr = XUNDEF
IF (LUSERI ) XLES_DOWNDRAFT_Ri = XUNDEF
IF (LUSERS ) XLES_DOWNDRAFT_Rs = XUNDEF
IF (LUSERG ) XLES_DOWNDRAFT_Rg = XUNDEF
IF (LUSERH ) XLES_DOWNDRAFT_Rh = XUNDEF
IF (NSV>0 ) XLES_DOWNDRAFT_Sv = XUNDEF
XLES_DOWNDRAFT_Ke = XUNDEF
XLES_DOWNDRAFT_WTh = XUNDEF
IF (LUSERV ) XLES_DOWNDRAFT_WThv = XUNDEF
IF (LUSERC ) XLES_DOWNDRAFT_WThl = XUNDEF
IF (LUSERV ) XLES_DOWNDRAFT_WRv = XUNDEF
IF (LUSERC ) XLES_DOWNDRAFT_WRc = XUNDEF
IF (LUSERI ) XLES_DOWNDRAFT_WRi = XUNDEF
IF (NSV>0 ) XLES_DOWNDRAFT_WSv = XUNDEF
XLES_DOWNDRAFT_Th2 = XUNDEF
IF (LUSERV ) THEN
XLES_DOWNDRAFT_ThThv = XUNDEF
END IF
IF (LUSERC ) THEN
XLES_DOWNDRAFT_Thl2 = XUNDEF
XLES_DOWNDRAFT_ThlThv = XUNDEF
END IF
IF (LUSERV ) XLES_DOWNDRAFT_Rv2 = XUNDEF
IF (LUSERC ) XLES_DOWNDRAFT_Rc2 = XUNDEF
IF (LUSERI ) XLES_DOWNDRAFT_Ri2 = XUNDEF
IF (NSV>0 ) XLES_DOWNDRAFT_Sv2 = XUNDEF
IF (LUSERV ) XLES_DOWNDRAFT_ThRv = XUNDEF
IF (LUSERC ) XLES_DOWNDRAFT_ThRc = XUNDEF
IF (LUSERI ) XLES_DOWNDRAFT_ThRi = XUNDEF
IF (LUSERC ) XLES_DOWNDRAFT_ThlRv= XUNDEF
IF (LUSERC ) XLES_DOWNDRAFT_ThlRc= XUNDEF
IF (LUSERI ) XLES_DOWNDRAFT_ThlRi= XUNDEF
IF (NSV>0 ) XLES_DOWNDRAFT_ThSv = XUNDEF
IF (LUSERV ) XLES_DOWNDRAFT_ThvRv= XUNDEF
IF (LUSERC ) XLES_DOWNDRAFT_ThvRc= XUNDEF
IF (LUSERI ) XLES_DOWNDRAFT_ThvRi= XUNDEF
IF (NSV>0 .AND. LUSERV) XLES_DOWNDRAFT_ThvSv = XUNDEF
IF (NSV>0 .AND. LUSERC) XLES_DOWNDRAFT_ThlSv = XUNDEF
!
!* 7.8 production terms
! ----------------
!
ALLOCATE(XLES_BU_RES_KE (NLES_K,NLES_TIMES,NLES_TOT))
ALLOCATE(XLES_BU_RES_WThl (NLES_K,NLES_TIMES,NLES_TOT))
ALLOCATE(XLES_BU_RES_Thl2 (NLES_K,NLES_TIMES,NLES_TOT))
ALLOCATE(XLES_BU_SBG_TKE (NLES_K,NLES_TIMES,NLES_TOT))
XLES_BU_RES_KE = 0.
XLES_BU_RES_WThl = 0.
XLES_BU_RES_Thl2 = 0.
XLES_BU_SBG_TKE = 0.
IF (LUSERV) THEN
ALLOCATE(XLES_BU_RES_WRt (NLES_K,NLES_TIMES,NLES_TOT))
ALLOCATE(XLES_BU_RES_Rt2 (NLES_K,NLES_TIMES,NLES_TOT))
ALLOCATE(XLES_BU_RES_ThlRt(NLES_K,NLES_TIMES,NLES_TOT))
XLES_BU_RES_WRt = 0.
XLES_BU_RES_Rt2 = 0.
XLES_BU_RES_ThlRt = 0.
END IF
ALLOCATE(XLES_BU_RES_WSv (NLES_K,NLES_TIMES,NLES_TOT,NSV))
ALLOCATE(XLES_BU_RES_Sv2 (NLES_K,NLES_TIMES,NLES_TOT,NSV))
IF (NSV>0) THEN
XLES_BU_RES_WSv = 0.
XLES_BU_RES_Sv2 = 0.
END IF
!
!-------------------------------------------------------------------------------
!
!* 8. Allocations of the normalization variables temporal series
! ----------------------------------------------------------
!
ALLOCATE(XLES_UW0 (NLES_TIMES))
ALLOCATE(XLES_VW0 (NLES_TIMES))
ALLOCATE(XLES_USTAR (NLES_TIMES))
ALLOCATE(XLES_WSTAR (NLES_TIMES))
ALLOCATE(XLES_Q0 (NLES_TIMES))
ALLOCATE(XLES_E0 (NLES_TIMES))
ALLOCATE(XLES_SV0 (NLES_TIMES,NSV))
ALLOCATE(XLES_BL_HEIGHT (NLES_TIMES))
ALLOCATE(XLES_MO_LENGTH (NLES_TIMES))
ALLOCATE(XLES_ZCB (NLES_TIMES))
ALLOCATE(XLES_CFtot (NLES_TIMES))
ALLOCATE(XLES_CF2tot (NLES_TIMES))
ALLOCATE(XLES_LWP (NLES_TIMES))
ALLOCATE(XLES_LWPVAR (NLES_TIMES))
ALLOCATE(XLES_RWP (NLES_TIMES))
ALLOCATE(XLES_IWP (NLES_TIMES))
ALLOCATE(XLES_SWP (NLES_TIMES))
ALLOCATE(XLES_GWP (NLES_TIMES))
ALLOCATE(XLES_HWP (NLES_TIMES))
ALLOCATE(XLES_INT_TKE (NLES_TIMES))
ALLOCATE(XLES_ZMAXCF (NLES_TIMES))
ALLOCATE(XLES_ZMAXCF2 (NLES_TIMES))
ALLOCATE(XLES_INPRR (NLES_TIMES))
ALLOCATE(XLES_INPRC (NLES_TIMES))
ALLOCATE(XLES_INDEP (NLES_TIMES))
ALLOCATE(XLES_RAIN_INPRR(NLES_TIMES))
ALLOCATE(XLES_ACPRR (NLES_TIMES))
ALLOCATE(XLES_PRECFR (NLES_TIMES))
ALLOCATE(XLES_SWU (NLES_K,NLES_TIMES))
ALLOCATE(XLES_SWD (NLES_K,NLES_TIMES))
ALLOCATE(XLES_LWU (NLES_K,NLES_TIMES))
ALLOCATE(XLES_LWD (NLES_K,NLES_TIMES))
ALLOCATE(XLES_DTHRADSW (NLES_K,NLES_TIMES))
ALLOCATE(XLES_DTHRADLW (NLES_K,NLES_TIMES))
ALLOCATE(XLES_RADEFF (NLES_K,NLES_TIMES))
!
XLES_UW0 = XUNDEF
XLES_VW0 = XUNDEF
XLES_USTAR = XUNDEF
XLES_WSTAR = XUNDEF
XLES_Q0 = XUNDEF
XLES_E0 = XUNDEF
XLES_SV0 = XUNDEF
XLES_BL_HEIGHT = XUNDEF
XLES_MO_LENGTH = XUNDEF
XLES_ZCB = XUNDEF
XLES_CFtot = XUNDEF
XLES_CF2tot = XUNDEF
XLES_LWP = XUNDEF
XLES_LWPVAR = XUNDEF
XLES_RWP = XUNDEF
XLES_IWP = XUNDEF
XLES_SWP = XUNDEF
XLES_GWP = XUNDEF
XLES_HWP = XUNDEF
XLES_INT_TKE = XUNDEF
XLES_ZMAXCF = XUNDEF
XLES_ZMAXCF2 = XUNDEF
XLES_PRECFR = XUNDEF
XLES_ACPRR = XUNDEF
XLES_INPRR = XUNDEF
XLES_INPRC = XUNDEF
XLES_INDEP = XUNDEF
XLES_RAIN_INPRR = XUNDEF
XLES_SWU = XUNDEF
XLES_SWD = XUNDEF
XLES_LWU = XUNDEF
XLES_LWD = XUNDEF
XLES_DTHRADSW = XUNDEF
XLES_DTHRADLW = XUNDEF
XLES_RADEFF = XUNDEF
!
!-------------------------------------------------------------------------------
!
!* 9. Allocations of the normalization variables temporal series
! ----------------------------------------------------------
!
! 9.1 Two-points correlations in I direction
! --------------------------------------
!
ALLOCATE(XCORRi_UU (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between u and u
ALLOCATE(XCORRi_VV (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between v and v
ALLOCATE(XCORRi_UV (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between u and v
ALLOCATE(XCORRi_WU (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between w and u
ALLOCATE(XCORRi_WV (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between w and v
ALLOCATE(XCORRi_WW (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between w and w
ALLOCATE(XCORRi_WTh (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between w and theta
ALLOCATE(XCORRi_ThTh (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between theta and theta
IF (LUSERC) THEN
ALLOCATE(XCORRi_WThl (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between w and thetal
ALLOCATE(XCORRi_ThlThl(NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between thetal and thetal
ELSE
ALLOCATE(XCORRi_WThl (0,0,0))
ALLOCATE(XCORRi_ThlThl(0,0,0))
END IF
IF (LUSERV ) THEN
ALLOCATE(XCORRi_WRv (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between w and Rv
ALLOCATE(XCORRi_ThRv (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between theta and Rv
IF (LUSERC) THEN
ALLOCATE(XCORRi_ThlRv(NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between thetal and Rv
ELSE
ALLOCATE(XCORRi_ThlRv(0,0,0))
END IF
ALLOCATE(XCORRi_RvRv (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between Rv and Rv
ELSE
ALLOCATE(XCORRi_WRv (0,0,0))
ALLOCATE(XCORRi_ThRv (0,0,0))
ALLOCATE(XCORRi_ThlRv(0,0,0))
ALLOCATE(XCORRi_RvRv (0,0,0))
END IF
IF (LUSERC ) THEN
ALLOCATE(XCORRi_WRc (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between w and Rc
ALLOCATE(XCORRi_ThRc (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between theta and Rc
ALLOCATE(XCORRi_ThlRc(NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between thetal and Rc
ALLOCATE(XCORRi_RcRc (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between Rc and Rc
ELSE
ALLOCATE(XCORRi_WRc (0,0,0))
ALLOCATE(XCORRi_ThRc (0,0,0))
ALLOCATE(XCORRi_ThlRc(0,0,0))
ALLOCATE(XCORRi_RcRc (0,0,0))
END IF
IF (LUSERI ) THEN
ALLOCATE(XCORRi_WRi (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between w and Ri
ALLOCATE(XCORRi_ThRi (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between theta and Rc
ALLOCATE(XCORRi_ThlRi(NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between thetal and Rc
ALLOCATE(XCORRi_RiRi (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES)) ! between Rc and Rc
ELSE
ALLOCATE(XCORRi_WRi (0,0,0))
ALLOCATE(XCORRi_ThRi (0,0,0))
ALLOCATE(XCORRi_ThlRi(0,0,0))
ALLOCATE(XCORRi_RiRi (0,0,0))
END IF
IF (NSV>0 ) THEN
ALLOCATE(XCORRi_WSv (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES,NSV)) ! between w and Sv
ALLOCATE(XCORRi_SvSv (NSPECTRA_NI,NSPECTRA_K,NLES_TIMES,NSV)) ! between Sv and Sv
ELSE
ALLOCATE(XCORRi_WSv (0,0,0,0))
ALLOCATE(XCORRi_SvSv (0,0,0,0))
END IF
!
!
XCORRi_UU = XUNDEF
XCORRi_VV = XUNDEF
XCORRi_UV = XUNDEF
XCORRi_WU = XUNDEF
XCORRi_WV = XUNDEF
XCORRi_WW = XUNDEF
XCORRi_WTh = XUNDEF
IF (LUSERC ) XCORRi_WThl= XUNDEF
IF (LUSERV ) XCORRi_WRv = XUNDEF
IF (LUSERC ) XCORRi_WRc = XUNDEF
IF (LUSERI ) XCORRi_WRi = XUNDEF
IF (NSV>0 ) XCORRi_WSv = XUNDEF
XCORRi_ThTh = XUNDEF
IF (LUSERC ) XCORRi_ThlThl= XUNDEF
IF (LUSERV ) XCORRi_ThRv = XUNDEF
IF (LUSERC ) XCORRi_ThRc = XUNDEF
IF (LUSERI ) XCORRi_ThRi = XUNDEF
IF (LUSERC ) XCORRi_ThlRv= XUNDEF
IF (LUSERC ) XCORRi_ThlRc= XUNDEF
IF (LUSERI ) XCORRi_ThlRi= XUNDEF
IF (LUSERV ) XCORRi_RvRv = XUNDEF
IF (LUSERC ) XCORRi_RcRc = XUNDEF
IF (LUSERI ) XCORRi_RiRi = XUNDEF
IF (NSV>0 ) XCORRi_SvSv = XUNDEF
!
!
! 9.2 Two-points correlations in J direction
! --------------------------------------
!
ALLOCATE(XCORRj_UU (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between u and u
ALLOCATE(XCORRj_VV (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between v and v
ALLOCATE(XCORRj_UV (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between u and v
ALLOCATE(XCORRj_WU (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between w and u
ALLOCATE(XCORRj_WV (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between w and v
ALLOCATE(XCORRj_WW (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between w and w
ALLOCATE(XCORRj_WTh (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between w and theta
ALLOCATE(XCORRj_ThTh (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between theta and theta
IF (LUSERC) THEN
ALLOCATE(XCORRj_WThl (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between w and thetal
ALLOCATE(XCORRj_ThlThl(NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between thetal and thetal
ELSE
ALLOCATE(XCORRj_WThl (0,0,0))
ALLOCATE(XCORRj_ThlThl(0,0,0))
END IF
IF (LUSERV ) THEN
ALLOCATE(XCORRj_WRv (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between w and Rv
ALLOCATE(XCORRj_ThRv (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between theta and Rv
IF (LUSERC) THEN
ALLOCATE(XCORRj_ThlRv(NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between thetal and Rv
ELSE
ALLOCATE(XCORRj_ThlRv(0,0,0))
END IF
ALLOCATE(XCORRj_RvRv (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between Rv and Rv
ELSE
ALLOCATE(XCORRj_WRv (0,0,0))
ALLOCATE(XCORRj_ThRv (0,0,0))
ALLOCATE(XCORRj_ThlRv(0,0,0))
ALLOCATE(XCORRj_RvRv (0,0,0))
END IF
IF (LUSERC ) THEN
ALLOCATE(XCORRj_WRc (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between w and Rc
ALLOCATE(XCORRj_ThRc (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between theta and Rc
ALLOCATE(XCORRj_ThlRc(NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between thetal and Rc
ALLOCATE(XCORRj_RcRc (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between Rc and Rc
ELSE
ALLOCATE(XCORRj_WRc (0,0,0))
ALLOCATE(XCORRj_ThRc (0,0,0))
ALLOCATE(XCORRj_ThlRc(0,0,0))
ALLOCATE(XCORRj_RcRc (0,0,0))
END IF
IF (LUSERI ) THEN
ALLOCATE(XCORRj_WRi (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between w and Ri
ALLOCATE(XCORRj_ThRi (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between theta and Rc
ALLOCATE(XCORRj_ThlRi(NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between thetal and Rc
ALLOCATE(XCORRj_RiRi (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES)) ! between Rc and Rc
ELSE
ALLOCATE(XCORRj_WRi (0,0,0))
ALLOCATE(XCORRj_ThRi (0,0,0))
ALLOCATE(XCORRj_ThlRi(0,0,0))
ALLOCATE(XCORRj_RiRi (0,0,0))
END IF
IF (NSV>0 ) THEN
ALLOCATE(XCORRj_WSv (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES,NSV)) ! between w and Sv
ALLOCATE(XCORRj_SvSv (NSPECTRA_NJ,NSPECTRA_K,NLES_TIMES,NSV)) ! between Sv and Sv
ELSE
ALLOCATE(XCORRj_WSv (0,0,0,0))
ALLOCATE(XCORRj_SvSv (0,0,0,0))
END IF
!
!
XCORRj_UU = XUNDEF
XCORRj_VV = XUNDEF
XCORRj_UV = XUNDEF
XCORRj_WU = XUNDEF
XCORRj_WV = XUNDEF
XCORRj_WW = XUNDEF
XCORRj_WTh = XUNDEF
IF (LUSERC ) XCORRj_WThl= XUNDEF
IF (LUSERV ) XCORRj_WRv = XUNDEF
IF (LUSERC ) XCORRj_WRc = XUNDEF
IF (LUSERI ) XCORRj_WRi = XUNDEF
IF (NSV>0 ) XCORRj_WSv = XUNDEF
XCORRj_ThTh = XUNDEF
IF (LUSERC ) XCORRj_ThlThl= XUNDEF
IF (LUSERV ) XCORRj_ThRv = XUNDEF
IF (LUSERC ) XCORRj_ThRc = XUNDEF
IF (LUSERI ) XCORRj_ThRi = XUNDEF
IF (LUSERC ) XCORRj_ThlRv= XUNDEF
IF (LUSERC ) XCORRj_ThlRc= XUNDEF
IF (LUSERI ) XCORRj_ThlRi= XUNDEF
IF (LUSERV ) XCORRj_RvRv = XUNDEF
IF (LUSERC ) XCORRj_RcRc = XUNDEF
IF (LUSERI ) XCORRj_RiRi = XUNDEF
IF (NSV>0 ) XCORRj_SvSv = XUNDEF
!
!
! 9.3 Two-points correlations in K direction
! --------------------------------------
!
ALLOCATE(XCORRk_WW (NLES_K,NSPECTRA_K,NLES_TIMES))
!
XCORRk_WW = XUNDEF
!
!-------------------------------------------------------------------------------
!
END SUBROUTINE INI_LES_n