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

Quentin 15/08/2022: Packing turb_ver

parent 7ebe3d13
No related branches found
No related tags found
No related merge requests found
...@@ -224,28 +224,23 @@ USE MODD_TURB_n, ONLY: TURB_t ...@@ -224,28 +224,23 @@ USE MODD_TURB_n, ONLY: TURB_t
! !
USE MODE_EMOIST, ONLY: EMOIST USE MODE_EMOIST, ONLY: EMOIST
USE MODE_ETHETA, ONLY: ETHETA USE MODE_ETHETA, ONLY: ETHETA
USE MODI_GRADIENT_M
USE MODI_GRADIENT_W
USE MODE_GRADIENT_M_PHY, ONLY : GZ_M_W_PHY USE MODE_GRADIENT_M_PHY, ONLY : GZ_M_W_PHY
USE MODI_TURB USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE_PHY
USE MODE_PRANDTL, ONLY: PSI_SV, PSI3, PHI3, PRANDTL
USE MODE_SBL_DEPTH, ONLY: SBL_DEPTH
USE MODE_TURB_VER_THERMO_FLUX, ONLY: TURB_VER_THERMO_FLUX USE MODE_TURB_VER_THERMO_FLUX, ONLY: TURB_VER_THERMO_FLUX
USE MODE_TURB_VER_THERMO_CORR, ONLY: TURB_VER_THERMO_CORR USE MODE_TURB_VER_THERMO_CORR, ONLY: TURB_VER_THERMO_CORR
USE MODE_TURB_VER_DYN_FLUX, ONLY: TURB_VER_DYN_FLUX USE MODE_TURB_VER_DYN_FLUX, ONLY: TURB_VER_DYN_FLUX
USE MODE_TURB_VER_SV_FLUX, ONLY: TURB_VER_SV_FLUX USE MODE_TURB_VER_SV_FLUX, ONLY: TURB_VER_SV_FLUX
USE MODE_TURB_VER_SV_CORR, ONLY: TURB_VER_SV_CORR USE MODE_TURB_VER_SV_CORR, ONLY: TURB_VER_SV_CORR
USE MODI_LES_MEAN_SUBGRID
USE MODE_SBL_DEPTH, ONLY: SBL_DEPTH
USE MODI_SECOND_MNH
! !
USE MODE_IO_FIELD_WRITE, only: IO_Field_write USE MODI_LES_MEAN_SUBGRID_PHY
USE MODE_PRANDTL, ONLY: PSI_SV, PSI3, PHI3, PRANDTL USE MODI_SECOND_MNH
! !
IMPLICIT NONE IMPLICIT NONE
! !
!* 0.1 declarations of arguments !* 0.1 declarations of arguments
! !
!
!
TYPE(DIMPHYEX_t), INTENT(IN) :: D TYPE(DIMPHYEX_t), INTENT(IN) :: D
TYPE(CST_t), INTENT(IN) :: CST TYPE(CST_t), INTENT(IN) :: CST
TYPE(CSTURB_t), INTENT(IN) :: CSTURB TYPE(CSTURB_t), INTENT(IN) :: CSTURB
...@@ -275,97 +270,91 @@ REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc. ...@@ -275,97 +270,91 @@ REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc.
REAL, INTENT(IN) :: PTSTEP ! timestep REAL, INTENT(IN) :: PTSTEP ! timestep
TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file
! !
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDXX, PDYY, PDZZ, PDZX, PDZY REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDXX, PDYY, PDZZ, PDZX, PDZY
! Metric coefficients ! Metric coefficients
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PDIRCOSZW ! Director Cosinus of the REAL, DIMENSION(D%NIJT), INTENT(IN) :: PDIRCOSZW ! Director Cosinus of the
! normal to the ground surface ! normal to the ground surface
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PZZ ! altitudes at flux points REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PZZ ! altitudes at flux points
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PCOSSLOPE ! cosinus of the angle REAL, DIMENSION(D%NIJT), INTENT(IN) :: PCOSSLOPE ! cosinus of the angle
! between i and the slope vector ! between i and the slope vector
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PSINSLOPE ! sinus of the angle REAL, DIMENSION(D%NIJT), INTENT(IN) :: PSINSLOPE ! sinus of the angle
! between i and the slope vector ! between i and the slope vector
! !
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRHODJ ! dry density * grid volum REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PRHODJ ! dry density * grid volum
! MFMOIST used in case of OHARATU ! MFMOIST used in case of OHARATU
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: MFMOIST ! moist mass flux dual scheme REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: MFMOIST ! moist mass flux dual scheme
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTHVREF ! ref. state Virtual REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTHVREF ! ref. state Virtual
! Potential Temperature ! Potential Temperature
! !
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PSFTHM,PSFRM ! surface fluxes at time REAL, DIMENSION(D%NIJT), INTENT(IN) :: PSFTHM,PSFRM ! surface fluxes at time
REAL, DIMENSION(D%NIT,D%NJT,KSV), INTENT(IN) :: PSFSVM ! t - deltat REAL, DIMENSION(D%NIJT,KSV), INTENT(IN) :: PSFSVM ! t - deltat
! !
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PSFTHP,PSFRP ! surface fluxes at time REAL, DIMENSION(D%NIJT), INTENT(IN) :: PSFTHP,PSFRP ! surface fluxes at time
REAL, DIMENSION(D%NIT,D%NJT,KSV), INTENT(IN) :: PSFSVP ! t + deltat REAL, DIMENSION(D%NIJT,KSV), INTENT(IN) :: PSFSVP ! t + deltat
! !
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PCDUEFF ! Cd * || u || at time t REAL, DIMENSION(D%NIJT), INTENT(IN) :: PCDUEFF ! Cd * || u || at time t
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PTAU11M ! <uu> in the axes linked REAL, DIMENSION(D%NIJT), INTENT(IN) :: PTAU11M ! <uu> in the axes linked
! to the maximum slope direction and the surface normal and the binormal ! to the maximum slope direction and the surface normal and the binormal
! at time t - dt ! at time t - dt
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PTAU12M ! <uv> in the same axes REAL, DIMENSION(D%NIJT), INTENT(IN) :: PTAU12M ! <uv> in the same axes
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PTAU33M ! <ww> in the same axes REAL, DIMENSION(D%NIJT), INTENT(IN) :: PTAU33M ! <ww> in the same axes
! !
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PUM,PVM,PWM,PTHLM REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PUM,PVM,PWM,PTHLM
! Wind and potential temperature at t-Delta t ! Wind and potential temperature at t-Delta t
REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KRR), INTENT(IN) :: PRM ! Mixing ratios REAL, DIMENSION(D%NIJT,D%NKT,KRR), INTENT(IN) :: PRM ! Mixing ratios
! at t-Delta t ! at t-Delta t
REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV), INTENT(IN) :: PSVM ! scalar var. at t-Delta t REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(IN) :: PSVM ! scalar var. at t-Delta t
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PUSLOPEM ! wind component along the REAL, DIMENSION(D%NIJT), INTENT(IN) :: PUSLOPEM ! wind component along the
! maximum slope direction ! maximum slope direction
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PVSLOPEM ! wind component along the REAL, DIMENSION(D%NIJT), INTENT(IN) :: PVSLOPEM ! wind component along the
! direction normal to the maximum slope one ! direction normal to the maximum slope one
! !
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTKEM ! TKE at time t REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKEM ! TKE at time t
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLM ! Turb. mixing length REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLM ! Turb. mixing length
! PLENGTHM PLENGTHH used in case of OHARATU ! PLENGTHM PLENGTHH used in case of OHARATU
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLENGTHM ! Turb. mixing length momentum REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLENGTHM ! Turb. mixing length momentum
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLENGTHH ! Turb. mixing length heat/moisture REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLENGTHH ! Turb. mixing length heat/moisture
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLEPS ! dissipative length REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLEPS ! dissipative length
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLOCPEXNM ! Lv(T)/Cp/Exnref at time t-1 REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLOCPEXNM ! Lv(T)/Cp/Exnref at time t-1
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PATHETA ! coefficients between REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PATHETA ! coefficients between
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PAMOIST ! s and Thetal and Rnp REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PAMOIST ! s and Thetal and Rnp
REAL, DIMENSION(MERGE(D%NIT,0,OCOMPUTE_SRC),& REAL, DIMENSION(MERGE(D%NIJT,0,OCOMPUTE_SRC),&
MERGE(D%NJT,0,OCOMPUTE_SRC),&
MERGE(D%NKT,0,OCOMPUTE_SRC)), INTENT(IN) :: PSRCM ! normalized MERGE(D%NKT,0,OCOMPUTE_SRC)), INTENT(IN) :: PSRCM ! normalized
! 2nd-order flux s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3 ! 2nd-order flux s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PFRAC_ICE ! ri fraction of rc+ri REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PFRAC_ICE ! ri fraction of rc+ri
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PFWTH ! d(w'2th' )/dz REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PFWTH ! d(w'2th' )/dz
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PFWR ! d(w'2r' )/dz REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PFWR ! d(w'2r' )/dz
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PFTH2 ! d(w'th'2 )/dz REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PFTH2 ! d(w'th'2 )/dz
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PFR2 ! d(w'r'2 )/dz REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PFR2 ! d(w'r'2 )/dz
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PFTHR ! d(w'th'r')/dz REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PFTHR ! d(w'th'r')/dz
REAL, DIMENSION(MERGE(D%NIT,0,HTOM=='TM06'),& REAL, DIMENSION(MERGE(D%NIJT,0,HTOM=='TM06')),INTENT(INOUT) :: PBL_DEPTH ! BL height for TOMS
MERGE(D%NJT,0,HTOM=='TM06')),INTENT(INOUT) :: PBL_DEPTH ! BL height for TOMS REAL, DIMENSION(MERGE(D%NIJT,0,ORMC01)),INTENT(INOUT) :: PSBL_DEPTH ! SBL depth for RMC01
REAL, DIMENSION(MERGE(D%NIT,0,ORMC01),& REAL, DIMENSION(D%NIJT), INTENT(IN) :: PLMO ! Monin-Obukhov length
MERGE(D%NJT,0,ORMC01)),INTENT(INOUT) :: PSBL_DEPTH ! SBL depth for RMC01 !
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PLMO ! Monin-Obukhov length REAL, DIMENSION(D%NIJT,D%NKT), INTENT(INOUT) :: PRUS, PRVS, PRWS, PRTHLS
! REAL, DIMENSION(D%NIJT,D%NKT,KRR), INTENT(INOUT) :: PRRS
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(INOUT) :: PRUS, PRVS, PRWS, PRTHLS REAL, DIMENSION(D%NIJT,D%NKT,KSV), INTENT(INOUT) :: PRSVS
REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KRR), INTENT(INOUT) :: PRRS
REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV), INTENT(INOUT) :: PRSVS
! cumulated sources for the prognostic variables ! cumulated sources for the prognostic variables
! !
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PDP,PTP ! Dynamic and thermal REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PDP,PTP ! Dynamic and thermal
! TKE production terms ! TKE production terms
REAL, DIMENSION(MERGE(D%NIT,0,OCOMPUTE_SRC),& REAL, DIMENSION(MERGE(D%NIJT,0,OCOMPUTE_SRC),&
MERGE(D%NJT,0,OCOMPUTE_SRC),&
MERGE(D%NKT,0,OCOMPUTE_SRC)), INTENT(OUT) :: PSIGS MERGE(D%NKT,0,OCOMPUTE_SRC)), INTENT(OUT) :: PSIGS
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PWTH ! heat flux REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PWTH ! heat flux
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PWRC ! cloud water flux REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PWRC ! cloud water flux
REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV),INTENT(OUT) :: PWSV ! scalar flux REAL, DIMENSION(D%NIJT,D%NKT,KSV),INTENT(OUT) :: PWSV ! scalar flux
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSTFL ! Time evol Flux of T at sea surface (LOCEAN)! REAL, DIMENSION(D%NIJT), INTENT(IN),OPTIONAL :: PSSTFL ! Time evol Flux of T at sea surface (LOCEAN)!
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSTFL_C ! O-A interface flux for theta(LOCEAN and LCOUPLES) REAL, DIMENSION(D%NIJT), INTENT(IN),OPTIONAL :: PSSTFL_C ! O-A interface flux for theta(LOCEAN and LCOUPLES)
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSRFL_C ! O-A interface flux for vapor (LOCEAN and LCOUPLES) REAL, DIMENSION(D%NIJT), INTENT(IN),OPTIONAL :: PSSRFL_C ! O-A interface flux for vapor (LOCEAN and LCOUPLES)
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSUFL_C ! Time evol Flux of U at sea surface (LOCEAN) REAL, DIMENSION(D%NIJT), INTENT(IN),OPTIONAL :: PSSUFL_C ! Time evol Flux of U at sea surface (LOCEAN)
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSVFL_C ! REAL, DIMENSION(D%NIJT), INTENT(IN),OPTIONAL :: PSSVFL_C !
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSUFL REAL, DIMENSION(D%NIJT), INTENT(IN),OPTIONAL :: PSSUFL
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSVFL ! REAL, DIMENSION(D%NIJT), INTENT(IN),OPTIONAL :: PSSVFL !
! !
!* 0.2 declaration of local variables !* 0.2 declaration of local variables
! !
!JUAN BUG PGI REAL, DIMENSION(D%NIJT,D%NKT) :: &
!!$REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)) :: &
REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: &
ZBETA, & ! buoyancy coefficient ZBETA, & ! buoyancy coefficient
ZSQRT_TKE,& ! sqrt(e) ZSQRT_TKE,& ! sqrt(e)
ZDTH_DZ, & ! d(th)/dz ZDTH_DZ, & ! d(th)/dz
...@@ -386,19 +375,18 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: & ...@@ -386,19 +375,18 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: &
ZWV, & ! (v'w') ZWV, & ! (v'w')
ZTHLP, & ! guess of potential temperature due to vert. turbulent flux ZTHLP, & ! guess of potential temperature due to vert. turbulent flux
ZRP ! guess of total water due to vert. turbulent flux ZRP ! guess of total water due to vert. turbulent flux
!
!!$REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3),KSV) :: & REAL, DIMENSION(D%NIJT,D%NKT,KSV) :: &
REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV) :: &
ZPSI_SV, & ! Prandtl number for scalars ZPSI_SV, & ! Prandtl number for scalars
ZREDS1, & ! 1D Redelsperger number R_sv ZREDS1, & ! 1D Redelsperger number R_sv
ZRED2THS, & ! 3D Redelsperger number R*2_thsv ZRED2THS, & ! 3D Redelsperger number R*2_thsv
ZRED2RS ! 3D Redelsperger number R*2_rsv ZRED2RS ! 3D Redelsperger number R*2_rsv
REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZLM REAL, DIMENSION(D%NIJT,D%NKT) :: ZLM
! !
LOGICAL :: GUSERV ! flag to use water vapor LOGICAL :: GUSERV ! flag to use water vapor
INTEGER :: IKB,IKE,IIB,IIE,IJB,IJE ! index value for the Beginning INTEGER :: IKB,IKE,IIJE,IIJB ! index value for the Beginning
! and the End of the physical domain for the mass points ! and the End of the physical domain for the mass points
INTEGER :: JSV,JI,JJ,JK ! loop counter INTEGER :: JSV,JIJ,JK ! loop counter
REAL :: ZTIME1 REAL :: ZTIME1
REAL :: ZTIME2 REAL :: ZTIME2
REAL(KIND=JPRB) :: ZHOOK_HANDLE REAL(KIND=JPRB) :: ZHOOK_HANDLE
...@@ -413,10 +401,8 @@ IF (LHOOK) CALL DR_HOOK('TURB_VER',0,ZHOOK_HANDLE) ...@@ -413,10 +401,8 @@ IF (LHOOK) CALL DR_HOOK('TURB_VER',0,ZHOOK_HANDLE)
! !
IKB=D%NKTB IKB=D%NKTB
IKE=D%NKTE IKE=D%NKTE
IIE=D%NIEC IIJE=D%NIJE
IIB=D%NIBC IIJB=D%NIJB
IJE=D%NJEC
IJB=D%NJBC
! !
! !
! 3D Redelsperger numbers ! 3D Redelsperger numbers
...@@ -437,39 +423,39 @@ CALL PRANDTL(D,CST,CSTURB,KRR,KSV,KRRI,OTURB_FLX, & ...@@ -437,39 +423,39 @@ CALL PRANDTL(D,CST,CSTURB,KRR,KSV,KRRI,OTURB_FLX, &
! Buoyancy coefficient ! Buoyancy coefficient
! !
IF (OOCEAN) THEN IF (OOCEAN) THEN
!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZBETA(IIB:IIE,IJB:IJE,1:D%NKT) = CST%XG*CST%XALPHAOC ZBETA(IIJB:IIJE,1:D%NKT) = CST%XG*CST%XALPHAOC
!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ELSE ELSE
!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZBETA(IIB:IIE,IJB:IJE,1:D%NKT) = CST%XG/PTHVREF(IIB:IIE,IJB:IJE,1:D%NKT) ZBETA(IIJB:IIJE,1:D%NKT) = CST%XG/PTHVREF(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
END IF END IF
! !
! Square root of Tke ! Square root of Tke
! !
!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZSQRT_TKE(IIB:IIE,IJB:IJE,1:D%NKT) = SQRT(PTKEM(IIB:IIE,IJB:IJE,1:D%NKT)) ZSQRT_TKE(IIJB:IIJE,1:D%NKT) = SQRT(PTKEM(IIJB:IIJE,1:D%NKT))
!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
! !
! gradients of mean quantities at previous time-step ! gradients of mean quantities at previous time-step
! !
CALL GZ_M_W_PHY(D,PTHLM,PDZZ,ZDTH_DZ) CALL GZ_M_W_PHY(D,PTHLM,PDZZ,ZDTH_DZ)
ZDR_DZ(:,:,:) = 0. ZDR_DZ(:,:) = 0.
IF (KRR>0) CALL GZ_M_W_PHY(D,PRM(:,:,:,1),PDZZ,ZDR_DZ) IF (KRR>0) CALL GZ_M_W_PHY(D,PRM(:,:,1),PDZZ,ZDR_DZ)
! !
! !
! Denominator factor in 3rd order terms ! Denominator factor in 3rd order terms
! !
IF (.NOT. OHARAT) THEN IF (.NOT. OHARAT) THEN
!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZD(IIB:IIE,IJB:IJE,1:D%NKT) = (1.+ZREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+ZREDR1(IIB:IIE,IJB:IJE,1:D%NKT)) * & ZD(IIJB:IIJE,1:D%NKT) = (1.+ZREDTH1(IIJB:IIJE,1:D%NKT)+ZREDR1(IIJB:IIJE,1:D%NKT)) * &
&(1.+0.5*(ZREDTH1(IIB:IIE,IJB:IJE,1:D%NKT)+ZREDR1(IIB:IIE,IJB:IJE,1:D%NKT))) &(1.+0.5*(ZREDTH1(IIJB:IIJE,1:D%NKT)+ZREDR1(IIJB:IIJE,1:D%NKT)))
!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ELSE ELSE
!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZD(IIB:IIE,IJB:IJE,1:D%NKT) = 1. ZD(IIJB:IIJE,1:D%NKT) = 1.
!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ENDIF ENDIF
! !
! Phi3 and Psi3 Prandtl numbers ! Phi3 and Psi3 Prandtl numbers
...@@ -488,9 +474,9 @@ CALL PSI_SV(D,CSTURB,KSV,ZREDTH1,ZREDR1,ZREDS1,ZRED2THS,ZRED2RS,ZPHI3,ZPSI3,ZPSI ...@@ -488,9 +474,9 @@ CALL PSI_SV(D,CSTURB,KSV,ZREDTH1,ZREDR1,ZREDS1,ZRED2THS,ZRED2RS,ZPHI3,ZPSI3,ZPSI
! !
IF (OLES_CALL) THEN IF (OLES_CALL) THEN
CALL SECOND_MNH(ZTIME1) CALL SECOND_MNH(ZTIME1)
CALL LES_MEAN_SUBGRID(ZPHI3,X_LES_SUBGRID_PHI3) CALL LES_MEAN_SUBGRID_PHY(D,ZPHI3,X_LES_SUBGRID_PHI3)
IF(KRR/=0) THEN IF(KRR/=0) THEN
CALL LES_MEAN_SUBGRID(ZPSI3,X_LES_SUBGRID_PSI3) CALL LES_MEAN_SUBGRID_PHY(D,ZPSI3,X_LES_SUBGRID_PSI3)
END IF END IF
CALL SECOND_MNH(ZTIME2) CALL SECOND_MNH(ZTIME2)
XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1 XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
...@@ -511,9 +497,9 @@ END IF ...@@ -511,9 +497,9 @@ END IF
! !
IF (OHARAT) THEN IF (OHARAT) THEN
ZLM=PLENGTHH ZLM(:,:)=PLENGTHH(:,:)
ELSE ELSE
ZLM=PLM ZLM(:,:)=PLM(:,:)
ENDIF ENDIF
! !
CALL TURB_VER_THERMO_FLUX(D,CST,CSTURB,TURBN, & CALL TURB_VER_THERMO_FLUX(D,CST,CSTURB,TURBN, &
...@@ -566,7 +552,7 @@ ENDIF ...@@ -566,7 +552,7 @@ ENDIF
! ----------------------------------------------- ! -----------------------------------------------
! !
! !
IF (OHARAT) ZLM=PLENGTHM IF (OHARAT) ZLM(:,:)=PLENGTHM(:,:)
! !
CALL TURB_VER_DYN_FLUX(D,CST,CSTURB,TURBN,KSV,O2D,OFLAT, & CALL TURB_VER_DYN_FLUX(D,CST,CSTURB,TURBN,KSV,O2D,OFLAT, &
OTURB_FLX,KRR,OOCEAN,OHARAT,OCOUPLES,OLES_CALL,& OTURB_FLX,KRR,OOCEAN,OHARAT,OCOUPLES,OLES_CALL,&
...@@ -586,7 +572,7 @@ CALL TURB_VER_DYN_FLUX(D,CST,CSTURB,TURBN,KSV,O2D,OFLAT, & ...@@ -586,7 +572,7 @@ CALL TURB_VER_DYN_FLUX(D,CST,CSTURB,TURBN,KSV,O2D,OFLAT, &
!* 8. SOURCES OF PASSIVE SCALAR VARIABLES !* 8. SOURCES OF PASSIVE SCALAR VARIABLES
! ----------------------------------- ! -----------------------------------
! !
IF (OHARAT) ZLM=PLENGTHH IF (OHARAT) ZLM(:,:)=PLENGTHH(:,:)
! !
IF (KSV>0) & IF (KSV>0) &
CALL TURB_VER_SV_FLUX(D,CST,CSTURB,ONOMIXLG, & CALL TURB_VER_SV_FLUX(D,CST,CSTURB,ONOMIXLG, &
...@@ -640,7 +626,7 @@ IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. .NOT. OHARAT) THEN ...@@ -640,7 +626,7 @@ IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. .NOT. OHARAT) THEN
TZFIELD%NTYPE = TYPEREAL TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3 TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE. TZFIELD%LTIMEDEP = .TRUE.
CALL IO_Field_write(TPFILE,TZFIELD,ZPHI3) CALL IO_FIELD_WRITE_PHY(D,TPFILE,TZFIELD,ZPHI3)
! !
! stores the Turbulent Schmidt number ! stores the Turbulent Schmidt number
! !
...@@ -654,7 +640,7 @@ IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. .NOT. OHARAT) THEN ...@@ -654,7 +640,7 @@ IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. .NOT. OHARAT) THEN
TZFIELD%NTYPE = TYPEREAL TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3 TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE. TZFIELD%LTIMEDEP = .TRUE.
CALL IO_Field_write(TPFILE,TZFIELD,ZPSI3) CALL IO_FIELD_WRITE_PHY(D,TPFILE,TZFIELD,ZPSI3)
! !
! !
! stores the Turbulent Schmidt number for the scalar variables ! stores the Turbulent Schmidt number for the scalar variables
...@@ -670,7 +656,7 @@ IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. .NOT. OHARAT) THEN ...@@ -670,7 +656,7 @@ IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. .NOT. OHARAT) THEN
WRITE(TZFIELD%CMNHNAME, '("PSI_SV_",I3.3)') JSV WRITE(TZFIELD%CMNHNAME, '("PSI_SV_",I3.3)') JSV
TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME)
TZFIELD%CCOMMENT = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME) TZFIELD%CCOMMENT = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME)
CALL IO_Field_write(TPFILE,TZFIELD,ZPSI_SV(:,:,:,JSV)) CALL IO_FIELD_WRITE_PHY(D,TPFILE,TZFIELD,ZPSI_SV(:,:,JSV))
END DO END DO
! !
END IF END IF
......
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