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

Quentin 19/08/2022: packing tke_eps_sources uniformize use of IIJB:IIJE +...

Quentin 19/08/2022: packing tke_eps_sources uniformize use of IIJB:IIJE + correct bug on vertical loop index
parent a8f8dd2a
No related branches found
No related tags found
No related merge requests found
...@@ -220,7 +220,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) :: & ...@@ -220,7 +220,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) :: &
LOGICAL,DIMENSION(D%NIJT,D%NKT) :: GTKENEG LOGICAL,DIMENSION(D%NIJT,D%NKT) :: GTKENEG
! 3D mask .T. if TKE < CSTURB%XTKEMIN ! 3D mask .T. if TKE < CSTURB%XTKEMIN
INTEGER :: IIE,IIB,IJE,IJB,IKB,IKE,IKTB,IKTE ! Index value for the mass points of the domain INTEGER :: IIJB,IIJE,IKB,IKE ! Index value for the mass points of the domain
! !
TYPE(LIST_ll), POINTER :: TZFIELDDISS_ll ! list of fields to exchange TYPE(LIST_ll), POINTER :: TZFIELDDISS_ll ! list of fields to exchange
INTEGER :: IINFO_ll ! return code of parallel routine INTEGER :: IINFO_ll ! return code of parallel routine
...@@ -236,19 +236,15 @@ NULLIFY(TZFIELDDISS_ll) ...@@ -236,19 +236,15 @@ NULLIFY(TZFIELDDISS_ll)
! !
IF (LHOOK) CALL DR_HOOK('TKE_EPS_SOURCES',0,ZHOOK_HANDLE) IF (LHOOK) CALL DR_HOOK('TKE_EPS_SOURCES',0,ZHOOK_HANDLE)
! !
IKTB=D%NKTB
IKTE=D%NKTE
IKB=D%NKB IKB=D%NKB
IKE=D%NKE IKE=D%NKE
IIE=D%NIEC IIJB=D%NIJB
IIB=D%NIBC IIJE=D%NIJE
IJE=D%NJEC
IJB=D%NJBC
! !
! compute the effective diffusion coefficient at the mass point ! compute the effective diffusion coefficient at the mass point
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZKEFF(D%NIJB:D%NIJE,IKTB:IKTE) = PLM(D%NIJB:D%NIJE,IKTB:IKTE) * SQRT(PTKEM(D%NIJB:D%NIJE,IKTB:IKTE)) ZKEFF(IIJB:IIJE,1:D%NKT) = PLM(IIJB:IIJE,1:D%NKT) * SQRT(PTKEM(IIJB:IIJE,1:D%NKT))
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
! !
!---------------------------------------------------------------------------- !----------------------------------------------------------------------------
! !
...@@ -261,9 +257,9 @@ ZKEFF(D%NIJB:D%NIJE,IKTB:IKTE) = PLM(D%NIJB:D%NIJE,IKTB:IKTE) * SQRT(PTKEM(D%NIJ ...@@ -261,9 +257,9 @@ ZKEFF(D%NIJB:D%NIJE,IKTB:IKTE) = PLM(D%NIJB:D%NIJE,IKTB:IKTE) * SQRT(PTKEM(D%NIJ
! Complete the sources of TKE with the horizontal turbulent explicit transport ! Complete the sources of TKE with the horizontal turbulent explicit transport
! !
IF (HTURBDIM=='3DIM') THEN IF (HTURBDIM=='3DIM') THEN
ZTR(D%NIJB:D%NIJE,IKTB:IKTE)=PTRH(D%NIJB:D%NIJE,IKTB:IKTE) ZTR(IIJB:IIJE,1:D%NKT)=PTRH(IIJB:IIJE,1:D%NKT)
ELSE ELSE
ZTR(D%NIJB:D%NIJE,IKTB:IKTE)=0. ZTR(IIJB:IIJE,1:D%NKT)=0.
END IF END IF
! !
! !
...@@ -272,9 +268,9 @@ END IF ...@@ -272,9 +268,9 @@ END IF
! extrapolate the dynamic production with a 1/Z law from its value at the ! extrapolate the dynamic production with a 1/Z law from its value at the
! W(IKB+1) value stored in PDP(IKB) to the mass localization tke(IKB) ! W(IKB+1) value stored in PDP(IKB) to the mass localization tke(IKB)
! !
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE) !$mnh_expand_array(JIJ=IIJB:IIJE)
PDP(D%NIJB:D%NIJE,IKB) = PDP(D%NIJB:D%NIJE,IKB) * (1. + PDZZ(D%NIJB:D%NIJE,IKB+D%NKL)/PDZZ(D%NIJB:D%NIJE,IKB)) PDP(IIJB:IIJE,IKB) = PDP(IIJB:IIJE,IKB) * (1. + PDZZ(IIJB:IIJE,IKB+D%NKL)/PDZZ(IIJB:IIJE,IKB))
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE) !$mnh_end_expand_array(JIJ=IIJB:IIJE)
! !
! Compute the source terms for TKE: ( ADVECtion + NUMerical DIFFusion + ..) ! Compute the source terms for TKE: ( ADVECtion + NUMerical DIFFusion + ..)
! + (Dynamical Production) + (Thermal Production) - (dissipation) ! + (Dynamical Production) + (Thermal Production) - (dissipation)
...@@ -282,12 +278,12 @@ PDP(D%NIJB:D%NIJE,IKB) = PDP(D%NIJB:D%NIJE,IKB) * (1. + PDZZ(D%NIJB:D%NIJE,IKB+D ...@@ -282,12 +278,12 @@ PDP(D%NIJB:D%NIJE,IKB) = PDP(D%NIJB:D%NIJE,IKB) * (1. + PDZZ(D%NIJB:D%NIJE,IKB+D
CALL MZM_PHY(D,ZKEFF,ZMWORK1) CALL MZM_PHY(D,ZKEFF,ZMWORK1)
CALL MZM_PHY(D,PRHODJ,ZMWORK2) CALL MZM_PHY(D,PRHODJ,ZMWORK2)
! !
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZFLX(D%NIJB:D%NIJE,IKTB:IKTE) = CSTURB%XCED * SQRT(PTKEM(D%NIJB:D%NIJE,IKTB:IKTE)) / PLEPS(D%NIJB:D%NIJE,IKTB:IKTE) ZFLX(IIJB:IIJE,1:D%NKT) = CSTURB%XCED * SQRT(PTKEM(IIJB:IIJE,1:D%NKT)) / PLEPS(IIJB:IIJE,1:D%NKT)
ZSOURCE(D%NIJB:D%NIJE,IKTB:IKTE) = ( PRTKES(D%NIJB:D%NIJE,IKTB:IKTE) + PRTKEMS(D%NIJB:D%NIJE,IKTB:IKTE) ) & ZSOURCE(IIJB:IIJE,1:D%NKT) = ( PRTKES(IIJB:IIJE,1:D%NKT) + PRTKEMS(IIJB:IIJE,1:D%NKT) ) &
/ PRHODJ(D%NIJB:D%NIJE,IKTB:IKTE) - PTKEM(D%NIJB:D%NIJE,IKTB:IKTE) / PTSTEP & / PRHODJ(IIJB:IIJE,1:D%NKT) - PTKEM(IIJB:IIJE,1:D%NKT) / PTSTEP &
+ PDP(D%NIJB:D%NIJE,IKTB:IKTE) + PTP(D%NIJB:D%NIJE,IKTB:IKTE) + ZTR(D%NIJB:D%NIJE,IKTB:IKTE) & + PDP(IIJB:IIJE,1:D%NKT) + PTP(IIJB:IIJE,1:D%NKT) + ZTR(IIJB:IIJE,1:D%NKT) &
- PEXPL * ZFLX(D%NIJB:D%NIJE,IKTB:IKTE) * PTKEM(D%NIJB:D%NIJE,IKTB:IKTE) - PEXPL * ZFLX(IIJB:IIJE,1:D%NKT) * PTKEM(IIJB:IIJE,1:D%NKT)
! !
!* 2.2 implicit vertical TKE transport !* 2.2 implicit vertical TKE transport
! !
...@@ -295,9 +291,9 @@ ZSOURCE(D%NIJB:D%NIJE,IKTB:IKTE) = ( PRTKES(D%NIJB:D%NIJE,IKTB:IKTE) + PRTKEMS( ...@@ -295,9 +291,9 @@ ZSOURCE(D%NIJB:D%NIJE,IKTB:IKTE) = ( PRTKES(D%NIJB:D%NIJE,IKTB:IKTE) + PRTKEMS(
! Compute the vector giving the elements just under the diagonal for the ! Compute the vector giving the elements just under the diagonal for the
! matrix inverted in TRIDIAG ! matrix inverted in TRIDIAG
! !
ZA(D%NIJB:D%NIJE,IKTB:IKTE) = - PTSTEP * CSTURB%XCET * ZMWORK1(D%NIJB:D%NIJE,IKTB:IKTE) & ZA(IIJB:IIJE,1:D%NKT) = - PTSTEP * CSTURB%XCET * ZMWORK1(IIJB:IIJE,1:D%NKT) &
* ZMWORK2(D%NIJB:D%NIJE,IKTB:IKTE) / PDZZ(D%NIJB:D%NIJE,IKTB:IKTE)**2 * ZMWORK2(IIJB:IIJE,1:D%NKT) / PDZZ(IIJB:IIJE,1:D%NKT)**2
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
! !
! Compute TKE at time t+deltat: ( stored in ZRES ) ! Compute TKE at time t+deltat: ( stored in ZRES )
! !
...@@ -307,10 +303,10 @@ CALL GET_HALO_PHY(D,ZRES) ...@@ -307,10 +303,10 @@ CALL GET_HALO_PHY(D,ZRES)
!* diagnose the dissipation !* diagnose the dissipation
! !
IF (ODIAG_IN_RUN) THEN IF (ODIAG_IN_RUN) THEN
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
PCURRENT_TKE_DISS(D%NIJB:D%NIJE,IKTB:IKTE) = ZFLX(D%NIJB:D%NIJE,IKTB:IKTE) * PTKEM(D%NIJB:D%NIJE,IKTB:IKTE) & PCURRENT_TKE_DISS(IIJB:IIJE,1:D%NKT) = ZFLX(IIJB:IIJE,1:D%NKT) * PTKEM(IIJB:IIJE,1:D%NKT) &
*(PEXPL*PTKEM(D%NIJB:D%NIJE,IKTB:IKTE) + PIMPL*ZRES(D%NIJB:D%NIJE,IKTB:IKTE)) *(PEXPL*PTKEM(IIJB:IIJE,1:D%NKT) + PIMPL*ZRES(IIJB:IIJE,1:D%NKT))
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
! !
CALL ADD2DFIELD_ll(TZFIELDDISS_ll, PCURRENT_TKE_DISS, 'TKE_EPS_SOURCES::PCURRENT_TKE_DISS' ) CALL ADD2DFIELD_ll(TZFIELDDISS_ll, PCURRENT_TKE_DISS, 'TKE_EPS_SOURCES::PCURRENT_TKE_DISS' )
CALL UPDATE_HALO_ll(TZFIELDDISS_ll,IINFO_ll) CALL UPDATE_HALO_ll(TZFIELDDISS_ll,IINFO_ll)
...@@ -320,18 +316,18 @@ ENDIF ...@@ -320,18 +316,18 @@ ENDIF
! TKE must be greater than its minimum value ! TKE must be greater than its minimum value
! CL : Now done at the end of the time step in ADVECTION_METSV for MesoNH ! CL : Now done at the end of the time step in ADVECTION_METSV for MesoNH
IF(HPROGRAM/='MESONH') THEN IF(HPROGRAM/='MESONH') THEN
!$mnh_expand_where(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT)
GTKENEG(D%NIJB:D%NIJE,IKTB:IKTE) = ZRES(D%NIJB:D%NIJE,IKTB:IKTE) <= CSTURB%XTKEMIN GTKENEG(IIJB:IIJE,1:D%NKT) = ZRES(IIJB:IIJE,1:D%NKT) <= CSTURB%XTKEMIN
WHERE ( GTKENEG(D%NIJB:D%NIJE,IKTB:IKTE) ) WHERE ( GTKENEG(IIJB:IIJE,1:D%NKT) )
ZRES(D%NIJB:D%NIJE,IKTB:IKTE) = CSTURB%XTKEMIN ZRES(IIJB:IIJE,1:D%NKT) = CSTURB%XTKEMIN
END WHERE END WHERE
!$mnh_end_expand_where(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_where(JIJ=IIJB:IIJE,JK=1:D%NKT)
END IF END IF
! !
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
PTDISS(D%NIJB:D%NIJE,IKTB:IKTE) = - ZFLX(D%NIJB:D%NIJE,IKTB:IKTE)*(PEXPL*PTKEM(D%NIJB:D%NIJE,IKTB:IKTE) & PTDISS(IIJB:IIJE,1:D%NKT) = - ZFLX(IIJB:IIJE,1:D%NKT)*(PEXPL*PTKEM(IIJB:IIJE,1:D%NKT) &
+ PIMPL*ZRES(D%NIJB:D%NIJE,IKTB:IKTE)) + PIMPL*ZRES(IIJB:IIJE,1:D%NKT))
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
! !
IF ( OLES_CALL .OR. & IF ( OLES_CALL .OR. &
(OTURB_DIAG .AND. TPFILE%LOPENED) ) THEN (OTURB_DIAG .AND. TPFILE%LOPENED) ) THEN
...@@ -339,30 +335,30 @@ IF ( OLES_CALL .OR. & ...@@ -339,30 +335,30 @@ IF ( OLES_CALL .OR. &
! Compute the cartesian vertical flux of TKE in ZFLX ! Compute the cartesian vertical flux of TKE in ZFLX
! !
CALL MZM_PHY(D,ZKEFF,ZMWORK1) CALL MZM_PHY(D,ZKEFF,ZMWORK1)
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZDWORK1(D%NIJB:D%NIJE,IKTB:IKTE) = PIMPL * ZRES(D%NIJB:D%NIJE,IKTB:IKTE) + PEXPL * PTKEM(D%NIJB:D%NIJE,IKTB:IKTE) ZDWORK1(IIJB:IIJE,1:D%NKT) = PIMPL * ZRES(IIJB:IIJE,1:D%NKT) + PEXPL * PTKEM(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
CALL DZM_PHY(D,ZDWORK1,ZDWORK2) CALL DZM_PHY(D,ZDWORK1,ZDWORK2)
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZFLX(D%NIJB:D%NIJE,IKTB:IKTE) = - CSTURB%XCET * ZMWORK1(D%NIJB:D%NIJE,IKTB:IKTE) & ZFLX(IIJB:IIJE,1:D%NKT) = - CSTURB%XCET * ZMWORK1(IIJB:IIJE,1:D%NKT) &
* ZDWORK2(D%NIJB:D%NIJE,IKTB:IKTE) / PDZZ(D%NIJB:D%NIJE,IKTB:IKTE) * ZDWORK2(IIJB:IIJE,1:D%NKT) / PDZZ(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
! !
ZFLX(D%NIJB:D%NIJE,IKB) = 0. ZFLX(IIJB:IIJE,IKB) = 0.
ZFLX(D%NIJB:D%NIJE,D%NKA) = 0. ZFLX(IIJB:IIJE,D%NKA) = 0.
! !
! Compute the whole turbulent TRansport of TKE: ! Compute the whole turbulent TRansport of TKE:
! !
CALL MZM_PHY(D,PRHODJ,ZMWORK1) CALL MZM_PHY(D,PRHODJ,ZMWORK1)
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZMWORK2(D%NIJB:D%NIJE,IKTB:IKTE) = ZMWORK1(D%NIJB:D%NIJE,IKTB:IKTE) * ZFLX(D%NIJB:D%NIJE,IKTB:IKTE) & ZMWORK2(IIJB:IIJE,1:D%NKT) = ZMWORK1(IIJB:IIJE,1:D%NKT) * ZFLX(IIJB:IIJE,1:D%NKT) &
/ PDZZ(D%NIJB:D%NIJE,IKTB:IKTE) / PDZZ(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
CALL DZF_PHY(D,ZMWORK2,ZDWORK1) CALL DZF_PHY(D,ZMWORK2,ZDWORK1)
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZTR(D%NIJB:D%NIJE,IKTB:IKTE)= ZTR(D%NIJB:D%NIJE,IKTB:IKTE) - ZDWORK1(D%NIJB:D%NIJE,IKTB:IKTE) & ZTR(IIJB:IIJE,1:D%NKT)= ZTR(IIJB:IIJE,1:D%NKT) - ZDWORK1(IIJB:IIJE,1:D%NKT) &
/PRHODJ(D%NIJB:D%NIJE,IKTB:IKTE) /PRHODJ(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
! !
! Storage in the LES configuration ! Storage in the LES configuration
! !
...@@ -378,22 +374,22 @@ END IF ...@@ -378,22 +374,22 @@ END IF
! !
IF (BUCONF%LBUDGET_TKE) THEN IF (BUCONF%LBUDGET_TKE) THEN
! Dynamical production ! Dynamical production
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZMWORK1(D%NIJB:D%NIJE,IKTB:IKTE) = PDP(D%NIJB:D%NIJE,IKTB:IKTE) * PRHODJ(D%NIJB:D%NIJE,IKTB:IKTE) ZMWORK1(IIJB:IIJE,1:D%NKT) = PDP(IIJB:IIJE,1:D%NKT) * PRHODJ(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TKE), 'DP', ZMWORK1) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TKE), 'DP', ZMWORK1)
! !
! Thermal production ! Thermal production
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZMWORK1(D%NIJB:D%NIJE,IKTB:IKTE) = PTP(D%NIJB:D%NIJE,IKTB:IKTE) * PRHODJ(D%NIJB:D%NIJE,IKTB:IKTE) ZMWORK1(IIJB:IIJE,1:D%NKT) = PTP(IIJB:IIJE,1:D%NKT) * PRHODJ(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TKE), 'TP', ZMWORK1) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TKE), 'TP', ZMWORK1)
! !
! Dissipation ! Dissipation
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
ZMWORK1(D%NIJB:D%NIJE,IKTB:IKTE) = -CSTURB%XCED * SQRT(PTKEM(D%NIJB:D%NIJE,IKTB:IKTE))/PLEPS(D%NIJB:D%NIJE,IKTB:IKTE) * & ZMWORK1(IIJB:IIJE,1:D%NKT) = -CSTURB%XCED * SQRT(PTKEM(IIJB:IIJE,1:D%NKT))/PLEPS(IIJB:IIJE,1:D%NKT) * &
(PEXPL*PTKEM(D%NIJB:D%NIJE,IKTB:IKTE) + PIMPL*ZRES(D%NIJB:D%NIJE,IKTB:IKTE))*PRHODJ(D%NIJB:D%NIJE,IKTB:IKTE) (PEXPL*PTKEM(IIJB:IIJE,1:D%NKT) + PIMPL*ZRES(IIJB:IIJE,1:D%NKT))*PRHODJ(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TKE), 'DISS',ZMWORK1) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TKE), 'DISS',ZMWORK1)
END IF END IF
! !
...@@ -401,23 +397,23 @@ END IF ...@@ -401,23 +397,23 @@ END IF
! with the removal of the advection part for MesoNH ! with the removal of the advection part for MesoNH
!Should be in IF LBUDGET_TKE only. Was removed out for a correct comput. of PTDIFF in case of LBUDGET_TKE=F in AROME !Should be in IF LBUDGET_TKE only. Was removed out for a correct comput. of PTDIFF in case of LBUDGET_TKE=F in AROME
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
PRTKES(D%NIJB:D%NIJE,IKTB:IKTE) = PRTKES(D%NIJB:D%NIJE,IKTB:IKTE) + PRHODJ(D%NIJB:D%NIJE,IKTB:IKTE) * & PRTKES(IIJB:IIJE,1:D%NKT) = PRTKES(IIJB:IIJE,1:D%NKT) + PRHODJ(IIJB:IIJE,1:D%NKT) * &
( PDP(D%NIJB:D%NIJE,IKTB:IKTE) + PTP(D%NIJB:D%NIJE,IKTB:IKTE) & ( PDP(IIJB:IIJE,1:D%NKT) + PTP(IIJB:IIJE,1:D%NKT) &
- CSTURB%XCED * SQRT(PTKEM(D%NIJB:D%NIJE,IKTB:IKTE)) / PLEPS(D%NIJB:D%NIJE,IKTB:IKTE) & - CSTURB%XCED * SQRT(PTKEM(IIJB:IIJE,1:D%NKT)) / PLEPS(IIJB:IIJE,1:D%NKT) &
* ( PEXPL*PTKEM(D%NIJB:D%NIJE,IKTB:IKTE) + PIMPL*ZRES(D%NIJB:D%NIJE,IKTB:IKTE) ) ) * ( PEXPL*PTKEM(IIJB:IIJE,1:D%NKT) + PIMPL*ZRES(IIJB:IIJE,1:D%NKT) ) )
! !
PTDIFF(D%NIJB:D%NIJE,IKTB:IKTE) = ZRES(D%NIJB:D%NIJE,IKTB:IKTE) / PTSTEP - PRTKES(D%NIJB:D%NIJE,IKTB:IKTE)& PTDIFF(IIJB:IIJE,1:D%NKT) = ZRES(IIJB:IIJE,1:D%NKT) / PTSTEP - PRTKES(IIJB:IIJE,1:D%NKT)&
/PRHODJ(D%NIJB:D%NIJE,IKTB:IKTE) & /PRHODJ(IIJB:IIJE,1:D%NKT) &
& - PDP(D%NIJB:D%NIJE,IKTB:IKTE)- PTP(D%NIJB:D%NIJE,IKTB:IKTE) - PTDISS(D%NIJB:D%NIJE,IKTB:IKTE) & - PDP(IIJB:IIJE,1:D%NKT)- PTP(IIJB:IIJE,1:D%NKT) - PTDISS(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
! !
IF (BUCONF%LBUDGET_TKE) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TKE), 'TR', PRTKES) IF (BUCONF%LBUDGET_TKE) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TKE), 'TR', PRTKES)
! !
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
PRTKES(D%NIJB:D%NIJE,IKTB:IKTE) = ZRES(D%NIJB:D%NIJE,IKTB:IKTE) * PRHODJ(D%NIJB:D%NIJE,IKTB:IKTE) / PTSTEP & PRTKES(IIJB:IIJE,1:D%NKT) = ZRES(IIJB:IIJE,1:D%NKT) * PRHODJ(IIJB:IIJE,1:D%NKT) / PTSTEP &
- PRTKEMS(D%NIJB:D%NIJE,IKTB:IKTE) - PRTKEMS(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
! !
! stores the whole turbulent transport ! stores the whole turbulent transport
! !
...@@ -428,12 +424,12 @@ IF (BUCONF%LBUDGET_TKE) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TKE), 'TR' ...@@ -428,12 +424,12 @@ IF (BUCONF%LBUDGET_TKE) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TKE), 'TR'
!* 3. COMPUTE THE DISSIPATIVE HEATING !* 3. COMPUTE THE DISSIPATIVE HEATING
! ------------------------------- ! -------------------------------
! !
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
PRTHLS(D%NIJB:D%NIJE,IKTB:IKTE) = PRTHLS(D%NIJB:D%NIJE,IKTB:IKTE) + & PRTHLS(IIJB:IIJE,1:D%NKT) = PRTHLS(IIJB:IIJE,1:D%NKT) + &
CSTURB%XCED * SQRT(PTKEM(D%NIJB:D%NIJE,IKTB:IKTE)) / PLEPS(D%NIJB:D%NIJE,IKTB:IKTE) * & CSTURB%XCED * SQRT(PTKEM(IIJB:IIJE,1:D%NKT)) / PLEPS(IIJB:IIJE,1:D%NKT) * &
(PEXPL*PTKEM(D%NIJB:D%NIJE,IKTB:IKTE) + PIMPL*ZRES(D%NIJB:D%NIJE,IKTB:IKTE)) & (PEXPL*PTKEM(IIJB:IIJE,1:D%NKT) + PIMPL*ZRES(IIJB:IIJE,1:D%NKT)) &
* PRHODJ(D%NIJB:D%NIJE,IKTB:IKTE) * PCOEF_DISS(D%NIJB:D%NIJE,IKTB:IKTE) * PRHODJ(IIJB:IIJE,1:D%NKT) * PCOEF_DISS(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
!---------------------------------------------------------------------------- !----------------------------------------------------------------------------
! !
!* 4. STORES SOME DIAGNOSTICS !* 4. STORES SOME DIAGNOSTICS
...@@ -441,15 +437,15 @@ PRTHLS(D%NIJB:D%NIJE,IKTB:IKTE) = PRTHLS(D%NIJB:D%NIJE,IKTB:IKTE) + & ...@@ -441,15 +437,15 @@ PRTHLS(D%NIJB:D%NIJE,IKTB:IKTE) = PRTHLS(D%NIJB:D%NIJE,IKTB:IKTE) + &
! !
IF(PRESENT(PTR)) PTR=ZTR IF(PRESENT(PTR)) PTR=ZTR
IF(PRESENT(PDISS)) THEN IF(PRESENT(PDISS)) THEN
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
PDISS(D%NIJB:D%NIJE,IKTB:IKTE) = -CSTURB%XCED * (PTKEM(D%NIJB:D%NIJE,IKTB:IKTE)**1.5) / PLEPS(D%NIJB:D%NIJE,IKTB:IKTE) PDISS(IIJB:IIJE,1:D%NKT) = -CSTURB%XCED * (PTKEM(IIJB:IIJE,1:D%NKT)**1.5) / PLEPS(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
END IF END IF
! !
IF(PRESENT(PEDR)) THEN IF(PRESENT(PEDR)) THEN
!$mnh_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
PEDR(D%NIJB:D%NIJE,IKTB:IKTE) = CSTURB%XCED * (PTKEM(D%NIJB:D%NIJE,IKTB:IKTE)**1.5) / PLEPS(D%NIJB:D%NIJE,IKTB:IKTE) PEDR(IIJB:IIJE,1:D%NKT) = CSTURB%XCED * (PTKEM(IIJB:IIJE,1:D%NKT)**1.5) / PLEPS(IIJB:IIJE,1:D%NKT)
!$mnh_end_expand_array(JIJ=D%NIJB:D%NIJE,JK=IKTB:IKTE) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:D%NKT)
END IF END IF
! !
IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
......
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