Skip to content
Snippets Groups Projects
Commit d293c632 authored by RODIER Quentin's avatar RODIER Quentin
Browse files

Merge commit '1a99e961' into HEAD

parents 76703d28 1a99e961
No related branches found
No related tags found
No related merge requests found
Showing
with 353 additions and 338 deletions
......@@ -105,8 +105,17 @@ IF (SIZE(PVARS,3)==NFLEVGDDH+2) THEN
ELSE
IOFF=0
ENDIF
CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//REPEAT('_', MAX(0, 4-LEN(HBUVAR))) !if length is less than 4, fill with '_'
!if length is less than 4, fill with budget old names
IF(LEN(HBUVAR)==1) THEN
CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//'_BU'
ELSE IF(LEN(HBUVAR)==2) THEN
CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//'_B'
ELSE IF(LEN(HBUVAR)==3) THEN
CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//'_'
ELSE
CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))
END IF
!
IF (YDLDDH%LDDH_OMP) THEN
CLDDH='T'//YDDDH%YVARMULT(KBUDN)%CNAME//CLPROC
ELSE
......
!MNH_LIC Copyright 1994-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.
!-----------------------------------------------------------------
! Modifications:
! P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
!-----------------------------------------------------------------
! ####################
MODULE MODI_GET_HALO
! ####################
!
INTERFACE
!
SUBROUTINE GET_HALO(PSRC)
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRC ! variable at t
!
END SUBROUTINE GET_HALO
!
END INTERFACE
!
END MODULE MODI_GET_HALO
!
!-------------------------------------------------------------------------------
! #########################
SUBROUTINE GET_HALO(PSRC)
! #########################
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRC ! variable at t
!
END SUBROUTINE GET_HALO
!-----------------------------------------------------------------------
MODULE MODD_ARGSLIST_ll
IMPLICIT NONE
TYPE LIST_ll
END TYPE LIST_ll
CONTAINS
END MODULE MODD_ARGSLIST_ll
MODULE MODD_FIELD
USE MODD_PARAMETERS, ONLY: NGRIDUNKNOWN, NMNHNAMELGTMAX, NSTDNAMELGTMAX
INTEGER, PARAMETER :: NMNHDIM_UNKNOWN = -2
INTEGER, PARAMETER :: NMNHMAXDIMS = 6 ! Cannot be less than 6
INTEGER,PARAMETER :: TYPEUNDEF = -1, TYPEINT = 1, TYPELOG = 2, TYPEREAL = 3, TYPECHAR = 4, TYPEDATE = 5
!
TYPE TFIELDDATA
CHARACTER(LEN=NMNHNAMELGTMAX) :: CMNHNAME = '' !Name of the field (for MesoNH, non CF convention)
CHARACTER(LEN=NSTDNAMELGTMAX) :: CSTDNAME = '' !Standard name (CF convention)
CHARACTER(LEN=32) :: CLONGNAME = '' !Long name (CF convention)
CHARACTER(LEN=40) :: CUNITS = '' !Canonical units (CF convention)
CHARACTER(LEN=100) :: CCOMMENT = '' !Comment (for MesoNH, non CF convention)
INTEGER :: NGRID = NGRIDUNKNOWN !Localization on the model grid
INTEGER :: NTYPE = TYPEUNDEF !Datatype
INTEGER :: NDIMS = 0 !Number of dimensions
INTEGER, DIMENSION(NMNHMAXDIMS) :: NDIMLIST = NMNHDIM_UNKNOWN ! List of dimensions of the data field
!
INTEGER :: NFILLVALUE = -2147483647 !Fill value for integer fields
REAL :: XFILLVALUE = 9.9692099683868690e+36 !Fill value for real fields
INTEGER :: NVALIDMIN = -2147483646 !Minimum valid value for integer fields
INTEGER :: NVALIDMAX = 2147483647 !Maximum valid value for integer fields
REAL :: XVALIDMIN = -1.E36 !Minimum valid value for real fields
REAL :: XVALIDMAX = 1.E36 !Maximum valid value for real fields
CHARACTER(LEN=2) :: CDIR = '' !Type of the data field (XX,XY,--...)
CHARACTER(LEN=4) :: CLBTYPE = 'NONE' !Type of the lateral boundary (LBX,LBY,LBXU,LBYV)
LOGICAL :: LTIMEDEP = .FALSE. !Is the field time-dependent?
END TYPE TFIELDDATA
!
END MODULE MODD_FIELD
!MNH_LIC Copyright 1996-2021 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
! ###############
MODULE MODD_FRC
! ###############
!
!!*** *MODD_FRC - Declarative module for the forcing fields
!!
!! PURPOSE
!! -------
! This module contains NFRC 1D-arrays used by FORCING (geostrophic wind
! components, large scale vertical wind, theta and humidity profiles when
! the relaxation option is used,large scale theta and humidity gradients
! and the translation speed of the domain of simulation.
! The following control parameters are used by FORCING:
! - LGEOST_UV_FRC and LGEOST_TH_FRC
! - LTEND_THRV_FRC and LTEND_UV_FRC
! - LVERT_MOTION_FRC
! - LRELAX_THRV_FRC, LRELAX_UV_FRC and LRELAX_UVMEAN_FRC using:
! XRELAX_TIME_FRC, XRELAX_HEIGHT_FRC and CRELAX_HEIGHT_TYPE
! - LTRANS
!!
!!** IMPLICIT ARGUMENTS
!! ------------------
!! None
!!
!! REFERENCE
!! ---------
!! Book2 of documentation of Meso-NH (module MODD_FRC)
!!
!!
!! AUTHOR
!! ------
!! Marc Georgelin Labo d'aerologie
!!
!! MODIFICATIONS
!! -------------
!! Original 29/07/96
!! 29/07/96 (Pinty&Suhre) revised
!! 18/11/96 J.-P. Pinty addition of the translation
!! 27/01/98 P. Bechtold use tendency forcing
!! add SST and surface pressure forcing
!! 01/2004 V. Masson surface externalization: removes SST forcing
!! 09/2017 Q.Rodier add LTEND_UV_FRC
!! 03/2021 JL Redelsperger Parameters defining sfc forcing shape for idealized ocean case
!! 06/2021 F. Couvreux add LRELAX_UVMEAN_FRC
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
!USE MODD_TYPE_DATE
!
IMPLICIT NONE
!
!* fields for FORCING
! ------------------
!
INTEGER, SAVE :: NFRC ! number of forcing profiles
!TYPE (DATE_TIME), SAVE, DIMENSION(:), ALLOCATABLE :: TDTFRC ! date of
! each forcing profile
!
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XUFRC, &! geostrophic wind
XVFRC, &! components U and V
XWFRC ! large scale vertical wind
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTHFRC, &! large scale TH profile
XRVFRC ! large scale RV profile
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XGXTHFRC,&! large scale TH gradient
XGYTHFRC ! along the X and Y axis
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTENDTHFRC,&! large scale TH tendency
XTENDRVFRC ! large scale RV tendency
REAL, SAVE :: XUTRANS, &! horizontal components of
XVTRANS ! a constant
! Galilean TRANSlation
REAL, SAVE, DIMENSION(:), ALLOCATABLE :: XPGROUNDFRC! surf. pressure
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTENDUFRC ! large scale U tendency
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTENDVFRC ! large scale V tendency
!
!* control parameters for FORCING
! ------------------------------
!
LOGICAL, SAVE :: LGEOST_UV_FRC ! enables geostrophic wind term
LOGICAL, SAVE :: LGEOST_TH_FRC ! enables thermal wind advection
LOGICAL, SAVE :: LTEND_THRV_FRC ! enables tendency forcing
LOGICAL, SAVE :: LTEND_UV_FRC ! enables tendency forcing of the wind
LOGICAL, SAVE :: LVERT_MOTION_FRC ! enables prescribed a forced vertical
! transport for all prognostic variables
LOGICAL, SAVE :: LRELAX_THRV_FRC ! enables temp. and humidity relaxation
LOGICAL, SAVE :: LRELAX_UV_FRC ! enables horizontal wind relaxation applied to the full wind field
LOGICAL, SAVE :: LRELAX_UVMEAN_FRC ! enables horizontal wind relaxation applied to the horiz. avg. wind
!
REAL, SAVE :: XRELAX_TIME_FRC ! e-folding time for relaxation
REAL, SAVE :: XRELAX_HEIGHT_FRC ! height below which relaxation
! is never applied
CHARACTER(len=4), SAVE :: CRELAX_HEIGHT_TYPE ! "THGR" relax. above maximal dTH/dz
! (but always above XRELAX_HEIGHT_FRC)
! "FIXE" relax. above XRELAX_HEIGHT_FRC
!
LOGICAL, SAVE :: LTRANS ! enables a Galilean translation of the
! domain of simulation
LOGICAL, SAVE :: LPGROUND_FRC ! enables surf. pressure forcing
!
LOGICAL, SAVE :: LDEEPOC ! activates sfc forcing for ideal ocean deep conv
REAL, SAVE :: XCENTX_OC ! center of sfc forc for ideal ocean
REAL, SAVE :: XRADX_OC ! radius of sfc forc for ideal ocean
REAL, SAVE :: XCENTY_OC ! center of sfc forc for ideal ocean
REAL, SAVE :: XRADY_OC ! radius of sfc forc for ideal ocean
!
END MODULE MODD_FRC
!MNH_LIC Copyright 2021-2021 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
! #################
MODULE MODD_OCEANH
! #################
!
!!**** *MODD_OCEAN* - declaration of variables used in ocean version
!!
!! PURPOSE
!! -------
! Declarative module for the variables
!! at interface for OCEAN LES MESONH version including auto-coupling O-A LES
!
!!
!!** IMPLICIT ARGUMENTS
!! ------------------
!! None
!!
!! AUTHOR
!! ------
!! JL Redelsperger LOPS
!!
!! MODIFICATIONS
!! -------------
!! Original 03/2021
!
!* 0. DECLARATIONS
! ------------
!
!USE MODD_TYPE_DATE
!
IMPLICIT NONE
!
!* fields for Sea Sfc FORCINGs
! ------------------
!
INTEGER, SAVE :: NFRCLT ! number of sea surface forcings PLUS 1
INTEGER, SAVE :: NINFRT ! Interval in second between forcings
!TYPE (DATE_TIME), SAVE, DIMENSION(:), ALLOCATABLE :: TFRCLT ! date/time of sea surface forcings
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XSSUFL,XSSVFL,XSSTFL,XSSOLA ! Time evol Flux U V T Solar_Rad at sea surface
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XSSUFL_XY,XSSVFL_XY,XSSTFL_XY! XY flux shape
REAL, SAVE, DIMENSION(:), ALLOCATABLE :: XSSUFL_T,XSSVFL_T,XSSTFL_T,XSSOLA_T ! given time forcing fluxes
!
END MODULE MODD_OCEANH
MODULE MODE_ARGSLIST_ll
USE MODD_ARGSLIST_ll, ONLY : LIST_ll
CONTAINS
!
SUBROUTINE CLEANLIST_ll(TPLIST)
IMPLICIT NONE
TYPE(LIST_ll), POINTER :: TPLIST ! List of fields
END SUBROUTINE CLEANLIST_ll
!
SUBROUTINE ADD3DFIELD_ll(TPLIST, PFIELD, HNAME)
IMPLICIT NONE
TYPE(LIST_ll), POINTER :: TPLIST ! list of fields
REAL, DIMENSION(:,:,:), TARGET :: PFIELD ! field to be added to the list
! of fields
character(len=*), intent(in) :: HNAME ! Name of the field to be added
!
END SUBROUTINE ADD3DFIELD_ll
END MODULE MODE_ARGSLIST_ll
MODULE MODE_GATHER_ll
IMPLICIT NONE
CONTAINS
SUBROUTINE GATHERALL_FIELD_ll(HDIR,PSEND,PRECV,KRESP)
CHARACTER(LEN=*), INTENT(IN) :: HDIR
REAL,DIMENSION(:,:,:), INTENT(IN) :: PSEND
REAL,DIMENSION(:,:,:), INTENT(INOUT):: PRECV
INTEGER, INTENT(INOUT):: KRESP
CALL ABORT
END SUBROUTINE GATHERALL_FIELD_ll
END MODULE MODE_GATHER_ll
MODULE MODE_IO_FIELD_WRITE
USE MODD_IO, ONLY: TFILEDATA
USE MODD_FIELD, ONLY: TFIELDDATA
CONTAINS
SUBROUTINE IO_FIELD_WRITE(TPFILE,TZFIELD,PFIELD)
!
!* 0.1 Declarations of arguments
!
TYPE(TFILEDATA), INTENT(IN) :: TPFILE
TYPE(TFIELDDATA), INTENT(IN) :: TZFIELD
REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! array containing the data field
!
END SUBROUTINE IO_FIELD_WRITE
END MODULE MODE_IO_FIELD_WRITE
MODULE MODE_ll
use mode_argslist_ll
IMPLICIT NONE
CONTAINS
SUBROUTINE GET_INDICE_ll(KXOR, KYOR, KXEND, KYEND, KSIZE1, KSIZE2)
......@@ -11,4 +13,10 @@ CONTAINS
KXEND=KSIZE1-JPHEXT
KYEND=KSIZE2-JPHEXT
END SUBROUTINE GET_INDICE_ll
SUBROUTINE UPDATE_HALO_ll(TPLIST, KINFO)
USE MODD_ARGSLIST_ll, ONLY : LIST_ll
TYPE(LIST_ll), POINTER :: TPLIST ! pointer to the list of fields to be updated
INTEGER :: KINFO ! return status
END SUBROUTINE UPDATE_HALO_ll
END MODULE MODE_ll
MODULE MODI_SECOND_MNH
INTERFACE
SUBROUTINE SECOND_MNH(XT)
REAL :: XT
END SUBROUTINE SECOND_MNH
END INTERFACE
END MODULE MODI_SECOND_MNH
......@@ -71,7 +71,7 @@
USE MODD_CONF
USE MODD_CST
USE MODD_PARAMETERS
USE MODD_BUDGET, ONLY: NBUDGET_RI, TBUDGETDATA
!
USE MODI_TURB
!
......@@ -170,11 +170,12 @@ LOGICAL , INTENT(IN) :: OSUBG_COND ! switch
REAL, DIMENSION(KLON,1,KLEV+2), INTENT(OUT) :: PDP, PTP, PTPMF, PTDIFF, PTDISS
! !for TKE DDH budgets
!
TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
TYPE(TLDDH), INTENT(IN) :: YDLDDH
TYPE(TMDDH), INTENT(IN) :: YDMDDH
TYPE(TYP_DDH), INTENT(INOUT), TARGET :: YDDDH
TYPE(TLDDH), INTENT(IN), TARGET :: YDLDDH
TYPE(TMDDH), INTENT(IN), TARGET :: YDMDDH
!
!
TYPE(TBUDGETDATA), DIMENSION(NBUDGET_RI) :: YLBUDGET !NBUDGET_RI is the one with the highest number needed for turb
!* 0.2 Declarations of local variables :
!
INTEGER :: JRR,JSV ! Loop index for the moist and scalar variables
......@@ -412,6 +413,13 @@ ZCEI_MIN=0.0
ZCEI=0.0
ZCOEF_AMPL_SAT=0.0
DO JRR=1, NBUDGET_RI
YLBUDGET(JRR)%NBUDGET=JRR
YLBUDGET(JRR)%YDDDH=>YDDDH
YLBUDGET(JRR)%YDLDDH=>YDLDDH
YLBUDGET(JRR)%YDMDDH=>YDMDDH
ENDDO
CL=HINST_SFU
CALL TURB (KLEV+2,1,KKL,IMI, KRR, KRRL, KRRI, HLBCX, HLBCY, ISPLIT,IMI, &
& OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01, &
......@@ -431,8 +439,10 @@ CALL TURB (KLEV+2,1,KKL,IMI, KRR, KRRL, KRRI, HLBCX, HLBCY, ISPLIT,IMI, &
& ZHGRAD,PSIGS, &
& PDRUS_TURB,PDRVS_TURB, &
& PDRTHLS_TURB,PDRRTS_TURB,ZDRSVS_TURB, &
& PFLXZTHVMF,ZWTH,ZWRC,ZWSV,PDP,PTP,PTPMF,PTDIFF, &
& PTDISS,PEDR,YDDDH,YDLDDH,YDMDDH)
& PFLXZTHVMF,ZWTH,ZWRC,ZWSV,PDP,PTP,PTPMF,PTDIFF,PTDISS,&
& YDDDH,YDLDDH,YDMDDH, &
& YLBUDGET, KBUDGETS=SIZE(YLBUDGET), &
& PEDR=PEDR)
!
!
!------------------------------------------------------------------------------
......
......@@ -101,3 +101,11 @@ phyex/micro/modi_icecloud.F90
phyex/micro/tiwmx_tab.F90
phyex/micro/modi_tiwmx.F90
phyex/micro/modd_spp_type.F90
phyex/turb/tke_eps_sources.F90
phyex/turb/turb_ver.F90
phyex/turb/prandtl.F90
phyex/turb/turb_ver_thermo_flux.F90
phyex/turb/turb_ver_thermo_corr.F90
phyex/turb/turb_ver_dyn_flux.F90
phyex/turb/turb_ver_sv_flux.F90
phyex/turb/turb_ver_sv_corr.F90
......@@ -60,7 +60,21 @@ INTEGER, PARAMETER :: JPDUMMY = 20 ! Size of dummy array
!
INTEGER, PARAMETER :: JPOUTMAX = 192 ! Maximum allowed number of OUTput files
!
INTEGER, PARAMETER :: NBUNAMELGTMAX = 32 ! Maximum length of a budget name
INTEGER, PARAMETER :: NCOMMENTLGTMAX = 100 ! Maximum length of a comment
INTEGER, PARAMETER :: NMNHNAMELGTMAX = 32 ! Maximum length of a MNH variable name
INTEGER, PARAMETER :: NSTDNAMELGTMAX = 64 ! Maximum length of the standard name of a variable (CF convention)
!
INTEGER, PARAMETER :: NDIRNAMELGTMAX = 512 ! Maximum length of a directory name
INTEGER, PARAMETER :: NFILENAMELGTMAX = 32 ! Maximum length of a file name (must be at least NFILENAMELGTMAXLFI)
INTEGER, PARAMETER :: NFILENAMELGTMAXLFI = 28 ! Maximum length of a file name in LFI file (this is necessary
! to keep backward compatibility), MUST BE 28
!
INTEGER, PARAMETER :: NLFIMAXCOMMENTLENGTH = 100 ! Length of comments in LFI files
!
INTEGER, PARAMETER :: JPLIMACCNMAX = 10 ! Maximum allowed number of CCN modes in LIMA
INTEGER, PARAMETER :: JPLIMAIFNMAX = 10 ! Maximum allowed number of IFN modes in LIMA
!
INTEGER, PARAMETER :: NGRIDUNKNOWN = -1 ! Unknown Arakawa grid number
!
END MODULE MODD_PARAMETERS
MODULE MODD_TURB_n
CHARACTER (LEN=4), SAVE :: CTURBLEN='BL89'
ENDMODULE MODD_TURB_n
! ######spl
MODULE MODI_TKE_EPS_SOURCES
! ###########################
INTERFACE
!
SUBROUTINE TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKEM,PLM,PLEPS,PDP,PTRH, &
& PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ, &
& PTSTEP,PIMPL,PEXPL, &
& HTURBLEN,HTURBDIM, &
& HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG, &
& PTP,PRTKES,PRTHLS,PCOEF_DISS,PTDIFF, &
& PTDISS,PEDR,YDDDH, YDLDDH, YDMDDH)
!
USE DDH_MIX, ONLY : TYP_DDH
USE YOMLDDH, ONLY : TLDDH
USE YOMMDDH, ONLY : TMDDH
!
INTEGER, INTENT(IN) :: KKA !near ground array index
INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index
INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=ARO
INTEGER :: KMI ! model index number
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKEM ! TKE at t-deltat
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLM ! mixing length
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS ! dissipative length
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! density * grid volume
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX,PDYY,PDZZ,PDZX,PDZY
! metric coefficients
REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! physical height w-pt
REAL, INTENT(IN) :: PTSTEP ! Double Time step ( *.5 for
! the first time step )
REAL, INTENT(IN) :: PEXPL, PIMPL ! Coef. temporal. disc.
CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the
! turbulence scheme
CHARACTER*4, INTENT(IN) :: HTURBLEN ! kind of mixing length
CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output
! FM-file
CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for
! model n
LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous
! file opening
LOGICAL, INTENT(IN) :: OTURB_DIAG ! switch to write some
! diagnostic fields in the syncronous FM-file
REAL, DIMENSION(:,:,:), INTENT(INOUT):: PDP, PTRH ! Dyn. prod. of TKE
REAL, DIMENSION(:,:,:), INTENT(INOUT):: PTP ! Ther. prod. of TKE
REAL, DIMENSION(:,:,:), INTENT(INOUT):: PRTKES ! RHOD * Jacobian *
! TKE at t+deltat
REAL, DIMENSION(:,:,:), INTENT(INOUT):: PRTHLS ! Source of Theta_l
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCOEF_DISS ! 1/(Cph*Exner)
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PTDIFF ! Diffusion TKE term
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PTDISS ! Dissipation TKE term
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PEDR ! eddy dissipation rate
TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
TYPE(TLDDH), INTENT(IN) :: YDLDDH
TYPE(TMDDH), INTENT(IN) :: YDMDDH
!
!
!
END SUBROUTINE TKE_EPS_SOURCES
!
END INTERFACE
!
END MODULE MODI_TKE_EPS_SOURCES
......@@ -22,13 +22,15 @@ INTERFACE
& PHGRAD,PSIGS, &
& PDRUS_TURB,PDRVS_TURB, &
& PDRTHLS_TURB,PDRRTS_TURB,PDRSVS_TURB, &
& PFLXZTHVMF,PWTH,PWRC,PWSV,PDP,PTP,PTPMF,PTDIFF, &
& PTDISS,PEDR,YDDDH,YDLDDH,YDMDDH)
& PFLXZTHVMF,PWTH,PWRC,PWSV,PDP,PTP,PTPMF,PTDIFF,PTDISS,&
& YDDDH,YDLDDH,YDMDDH, &
& TBUDGETS, KBUDGETS, &
& PTR,PDISS,PEDR )
!
USE DDH_MIX, ONLY : TYP_DDH
USE DDH_MIX, ONLY : TYP_DDH
USE YOMLDDH, ONLY : TLDDH
USE YOMMDDH, ONLY : TMDDH
USE MODD_BUDGET, ONLY : TBUDGETDATA
!
INTEGER, INTENT(IN) :: KKA !near ground array index
INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index
......@@ -143,17 +145,20 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PTP ! Thermal TKE production
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PTPMF ! Thermal TKE production
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PTDIFF ! Diffusion TKE term
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PTDISS ! Dissipation TKE term
REAL, DIMENSION(:,:,:),INTENT(OUT) :: PEDR ! eddy dissipation rate
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLENGTHM
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLENGTHH
!
TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
TYPE(TLDDH), INTENT(IN) :: YDLDDH
TYPE(TMDDH), INTENT(IN) :: YDMDDH
!
TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
INTEGER, INTENT(IN) :: KBUDGETS
!
REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PTR ! Transport production of TKE
REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PDISS ! Dissipation of TKE
REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PEDR ! EDR
!
!-------------------------------------------------------------------------------
!
......
! ######spl
MODULE MODI_TURB_VER
! ####################
!
INTERFACE
!
SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI, &
OCLOSE_OUT,OTURB_FLX, &
HTURBDIM,HTOM,PIMPL,PEXPL, &
PTSTEP_UVW,PTSTEP_MET, PTSTEP_SV, &
HFMFILE,HLUOUT, &
PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, &
PCOSSLOPE,PSINSLOPE, &
PRHODJ,PTHVREF, &
PSFTHM,PSFRM,PSFSVM,PSFTHP,PSFRP,PSFSVP, &
PCDUEFF,PTAU11M,PTAU12M,PTAU33M, &
PUM,PVM,PWM,PUSLOPEM,PVSLOPEM,PTHLM,PRM,PSVM, &
PTKEM,PLM,PLENGTHM,PLENGTHH,PLEPS,MFMOIST, &
PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PFRAC_ICE, &
PFWTH,PFWR,PFTH2,PFR2,PFTHR,PBL_DEPTH, &
PSBL_DEPTH,PLMO, &
PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS, &
PDP,PTP,PSIGS,PWTH,PWRC,PWSV )
!
INTEGER, INTENT(IN) :: KKA !near ground array index
INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index
INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=ARO
INTEGER, INTENT(IN) :: KRR ! number of moist var.
INTEGER, INTENT(IN) :: KRRL ! number of liquid water var.
INTEGER, INTENT(IN) :: KRRI ! number of ice water var.
LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous
! file opening
LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the
! turbulent fluxes in the syncronous FM-file
CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the
! turbulence scheme
CHARACTER*4, INTENT(IN) :: HTOM ! type of Third Order Moment
REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc.
REAL, INTENT(IN) :: PTSTEP_UVW ! Dynamical timestep
REAL, INTENT(IN) :: PTSTEP_MET ! Timestep for meteorological variables
REAL, INTENT(IN) :: PTSTEP_SV ! Timestep for tracer variables
CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output
! FM-file
CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for
! model n
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX, PDYY, PDZZ, PDZX, PDZY
! Metric coefficients
REAL, DIMENSION(:,:), INTENT(IN) :: PDIRCOSZW ! Director Cosinus of the
! normal to the ground surface
REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! altitudes at flux points
REAL, DIMENSION(:,:), INTENT(IN) :: PCOSSLOPE ! cosinus of the angle
! between i and the slope vector
REAL, DIMENSION(:,:), INTENT(IN) :: PSINSLOPE ! sinus of the angle
! between i and the slope vector
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! dry density * grid volum
REAL, DIMENSION(:,:,:), INTENT(IN) :: MFMOIST ! moist mass flux dual scheme
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHVREF ! ref. state Virtual
! Potential Temperature
!
REAL, DIMENSION(:,:), INTENT(IN) :: PSFTHM,PSFRM ! surface fluxes at time
REAL, DIMENSION(:,:,:), INTENT(IN) :: PSFSVM ! t - deltat
!
REAL, DIMENSION(:,:), INTENT(IN) :: PSFTHP,PSFRP ! surface fluxes at time
REAL, DIMENSION(:,:,:), INTENT(IN) :: PSFSVP ! t + deltat
!
REAL, DIMENSION(:,:), INTENT(IN) :: PCDUEFF ! Cd * || u || at time t
REAL, DIMENSION(:,:), INTENT(IN) :: PTAU11M ! <uu> in the axes linked
! to the maximum slope direction and the surface normal and the binormal
! at time t - dt
REAL, DIMENSION(:,:), INTENT(IN) :: PTAU12M ! <uv> in the same axes
REAL, DIMENSION(:,:), INTENT(IN) :: PTAU33M ! <ww> in the same axes
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PUM,PVM,PWM,PTHLM
! Wind and potential temperature at t-Delta t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM ! Mixing ratios
! at t-Delta t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVM ! scalar var. at t-Delta t
REAL, DIMENSION(:,:), INTENT(IN) :: PUSLOPEM ! wind component along the
! maximum slope direction
REAL, DIMENSION(:,:), INTENT(IN) :: PVSLOPEM ! wind component along the
! direction normal to the maximum slope one
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKEM ! TKE at time t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLM ! Turb. mixing length
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLENGTHM ! Turb. mixing length momentum
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLENGTHH ! Turb. mixing length heat/moisture
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS ! dissipative length
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLOCPEXNM ! Lv(T)/Cp/Exner at time t-1
REAL, DIMENSION(:,:,:), INTENT(IN) :: PATHETA ! coefficients between
REAL, DIMENSION(:,:,:), INTENT(IN) :: PAMOIST ! s and Thetal and Rnp
REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRCM ! normalized
! 2nd-order flux s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
REAL, DIMENSION(:,:,:), INTENT(IN) :: PFRAC_ICE ! ri fraction of rc+ri
REAL, DIMENSION(:,:,:), INTENT(IN) :: PFWTH ! d(w'2th' )/dz
REAL, DIMENSION(:,:,:), INTENT(IN) :: PFWR ! d(w'2r' )/dz
REAL, DIMENSION(:,:,:), INTENT(IN) :: PFTH2 ! d(w'th'2 )/dz
REAL, DIMENSION(:,:,:), INTENT(IN) :: PFR2 ! d(w'r'2 )/dz
REAL, DIMENSION(:,:,:), INTENT(IN) :: PFTHR ! d(w'th'r')/dz
REAL, DIMENSION(:,:), INTENT(INOUT):: PBL_DEPTH ! BL depth
REAL, DIMENSION(:,:), INTENT(INOUT):: PSBL_DEPTH ! SBL depth
REAL, DIMENSION(:,:), INTENT(IN) :: PLMO ! Monin-Obukhov length
!
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS, PRWS, PRTHLS
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRSVS,PRRS
! cumulated sources for the prognostic variables
!
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDP,PTP ! Dynamic and thermal
! TKE production terms
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSIGS ! Vert. part of Sigma_s at t
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PWTH ! heat flux
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PWRC ! cloud water flux
REAL, DIMENSION(:,:,:,:),INTENT(OUT) :: PWSV ! scalar flux
!
!
END SUBROUTINE TURB_VER
!
END INTERFACE
!
END MODULE MODI_TURB_VER
! ######spl
MODULE MODI_TURB_VER_DYN_FLUX
! ####################
!
INTERFACE
!
SUBROUTINE TURB_VER_DYN_FLUX(KKA,KKU,KKL, &
OCLOSE_OUT,OTURB_FLX,KRR, &
HTURBDIM,PIMPL,PEXPL, &
PTSTEP, &
HFMFILE,HLUOUT, &
PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, &
PCOSSLOPE,PSINSLOPE, &
PRHODJ, &
PCDUEFF,PTAU11M,PTAU12M,PTAU33M, &
PTHLM,PRM,PSVM,PUM,PVM,PWM,PUSLOPEM,PVSLOPEM, &
PTKEM,PLM,MFMOIST,PWU,PWV, &
PRUS,PRVS,PRWS, &
PDP,PTP )
!
!
INTEGER, INTENT(IN) :: KKA !near ground array index
INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index
INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=AR
LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous
! file opening
LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the
! turbulent fluxes in the syncronous FM-file
INTEGER, INTENT(IN) :: KRR ! number of moist var.
CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the
! turbulence scheme
REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc.
REAL, INTENT(IN) :: PTSTEP ! Double Time Step
CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output
! FM-file
CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for
! model n
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX, PDYY, PDZZ, PDZX, PDZY
! Metric coefficients
REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! altitude of flux points
REAL, DIMENSION(:,:), INTENT(IN) :: PDIRCOSZW ! Director Cosinus of the
! normal to the ground surface
REAL, DIMENSION(:,:), INTENT(IN) :: PCOSSLOPE ! cosinus of the angle
! between i and the slope vector
REAL, DIMENSION(:,:), INTENT(IN) :: PSINSLOPE ! sinus of the angle
! between i and the slope vector
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! dry density * grid volum
REAL, DIMENSION(:,:,:), INTENT(IN) :: MFMOIST ! moist mass flux dual scheme
!
REAL, DIMENSION(:,:), INTENT(IN) :: PCDUEFF ! Cd * || u || at time t
REAL, DIMENSION(:,:), INTENT(IN) :: PTAU11M ! <uu> in the axes linked
! to the maximum slope direction and the surface normal and the binormal
! at time t - dt
REAL, DIMENSION(:,:), INTENT(IN) :: PTAU12M ! <uv> in the same axes
REAL, DIMENSION(:,:), INTENT(IN) :: PTAU33M ! <ww> in the same axes
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PUM,PVM,PWM,PTHLM
! Wind at t-Delta t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVM
REAL, DIMENSION(:,:), INTENT(IN) :: PUSLOPEM ! wind component along the
! maximum slope direction
REAL, DIMENSION(:,:), INTENT(IN) :: PVSLOPEM ! wind component along the
! direction normal to the maximum slope one
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKEM ! TKE at time t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLM ! Turb. mixing length
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PWU ! momentum flux u'w'
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PWV ! momentum flux v'w'
!
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS, PRWS
! cumulated sources for the prognostic variables
!
REAL, DIMENSION(:,:,:), INTENT(INOUT):: PDP,PTP ! Dynamic and thermal
! TKE production terms
!
!
!
END SUBROUTINE TURB_VER_DYN_FLUX
!
END INTERFACE
!
END MODULE MODI_TURB_VER_DYN_FLUX
! ######spl
MODULE MODI_TURB_VER_SV_CORR
! ####################
!
INTERFACE
!
SUBROUTINE TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI, &
PDZZ, &
PTHLM,PRM,PTHVREF, &
PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PPHI3,PPSI3, &
PWM,PSVM, &
PTKEM,PLM,PLEPS,PPSI_SV )
!
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KKL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KRR ! number of moist var.
INTEGER, INTENT(IN) :: KRRL ! number of liquid var.
INTEGER, INTENT(IN) :: KRRI ! number of ice var.
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ
! Metric coefficients
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHLM ! potential temperature at t-Delta t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM ! Mixing ratios at t-Delta t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHVREF ! reference Thv
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLOCPEXNM ! Lv(T)/Cp/Exnref at time t-1
REAL, DIMENSION(:,:,:), INTENT(IN) :: PATHETA ! coefficients between
REAL, DIMENSION(:,:,:), INTENT(IN) :: PAMOIST ! s and Thetal and Rnp
REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRCM ! normalized
! 2nd-order flux s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
REAL, DIMENSION(:,:,:), INTENT(IN) :: PPHI3 ! Inv.Turb.Sch.for temperature
REAL, DIMENSION(:,:,:), INTENT(IN) :: PPSI3 ! Inv.Turb.Sch.for humidity
REAL, DIMENSION(:,:,:), INTENT(IN) :: PWM ! w at time t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVM ! scalar var. at t-Delta t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKEM ! TKE at time t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLM ! Turb. mixing length
REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS ! dissipative length
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PPSI_SV ! Inv.Turb.Sch.for scalars
! cumulated sources for the prognostic variables
!
!
END SUBROUTINE TURB_VER_SV_CORR
!
END INTERFACE
!
END MODULE MODI_TURB_VER_SV_CORR
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment