From 650ea9bc7bd15e880aee05c87a4e743c12846b3c Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Tue, 25 Jan 2022 17:54:57 +0100 Subject: [PATCH] Quentin 25/01/2022: Merge turb.F90 MNH->COMMON Budgets --- src/arome/aux/mode_sources_neg_correct.F90 | 19 ++ src/common/turb/mode_tke_eps_sources.F90 | 10 - src/common/turb/turb.F90 | 220 +++++++++++++++------ src/mesonh/turb/turb.f90 | 10 +- 4 files changed, 185 insertions(+), 74 deletions(-) create mode 100644 src/arome/aux/mode_sources_neg_correct.F90 diff --git a/src/arome/aux/mode_sources_neg_correct.F90 b/src/arome/aux/mode_sources_neg_correct.F90 new file mode 100644 index 000000000..1b49a6e2b --- /dev/null +++ b/src/arome/aux/mode_sources_neg_correct.F90 @@ -0,0 +1,19 @@ +MODULE MODE_SOURCES_NEG_CORRECT +IMPLICIT NONE +CONTAINS +SUBROUTINE SOURCES_NEG_CORRECT(HCLOUD, HBUDNAME, KRR, PTSTEP, PPABST, & + &PTHT, PRT, PRTHS, PRRS, PRSVS, PRHODJ) +IMPLICIT NONE +CHARACTER(LEN=*), INTENT(IN) :: HCLOUD ! Kind of cloud parameterization +CHARACTER(LEN=*), INTENT(IN) :: HBUDNAME ! Budget name +INTEGER, INTENT(IN) :: KRR ! Number of moist variables +REAL, INTENT(IN) :: PTSTEP ! Timestep +REAL, DIMENSION(:, :, :), INTENT(IN) :: PPABST ! Absolute pressure at time t +REAL, DIMENSION(:, :, :), INTENT(IN) :: PTHT ! Theta at time t +REAL, DIMENSION(:, :, :, :), INTENT(IN) :: PRT ! Moist variables at time t +REAL, DIMENSION(:, :, :), INTENT(INOUT) :: PRTHS ! Source terms +REAL, DIMENSION(:, :, :, :), INTENT(INOUT) :: PRRS ! Source terms +REAL, DIMENSION(:, :, :, :), INTENT(INOUT) :: PRSVS ! Source terms +REAL, DIMENSION(:, :, :), INTENT(IN), OPTIONAL :: PRHODJ ! Dry density * jacobian +END SUBROUTINE SOURCES_NEG_CORRECT +END MODULE MODE_SOURCES_NEG_CORRECT diff --git a/src/common/turb/mode_tke_eps_sources.F90 b/src/common/turb/mode_tke_eps_sources.F90 index 2f31473d7..a55c661ce 100644 --- a/src/common/turb/mode_tke_eps_sources.F90 +++ b/src/common/turb/mode_tke_eps_sources.F90 @@ -241,11 +241,6 @@ IKE=KKU-JPVEXT_TURB*KKL ! compute the effective diffusion coefficient at the mass point ZKEFF(:,:,:) = PLM(:,:,:) * SQRT(PTKEM(:,:,:)) ! -#ifdef REPRO48 -#else -IF (LBUDGET_TH) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS(:, :, :) ) -#endif -! !---------------------------------------------------------------------------- ! !* 2. TKE EQUATION @@ -383,11 +378,6 @@ IF (LBUDGET_TKE) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TKE), 'TR', PRTKES(:, : ! PRTHLS(:,:,:) = PRTHLS(:,:,:) + XCED * SQRT(PTKEM(:,:,:)) / PLEPS(:,:,:) * & (PEXPL*PTKEM(:,:,:) + PIMPL*ZRES(:,:,:)) * PRHODJ(:,:,:) * PCOEF_DISS(:,:,:) - -#ifdef REPRO48 -#else -IF (LBUDGET_TH) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS(:, :, :) ) -#endif !---------------------------------------------------------------------------- ! !* 4. STORES SOME DIAGNOSTICS diff --git a/src/common/turb/turb.F90 b/src/common/turb/turb.F90 index d448908d9..f0be472cb 100644 --- a/src/common/turb/turb.F90 +++ b/src/common/turb/turb.F90 @@ -222,11 +222,15 @@ USE PARKIND1, ONLY : JPRB USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! -USE MODD_PARAMETERS +USE MODD_PARAMETERS, ONLY: JPVEXT_TURB USE MODD_CST USE MODD_CTURB USE MODD_CONF -USE MODD_BUDGET +USE MODD_BUDGET, ONLY: LBUDGET_U, LBUDGET_V, LBUDGET_W, LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, & + LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, LBUDGET_SV, & + NBUDGET_U, NBUDGET_V, NBUDGET_W, NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, & + NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH, NBUDGET_SV1, & + TBUDGETDATA USE MODD_DYN_n, ONLY : LOCEAN USE MODD_FIELD, ONLY: TFIELDDATA,TYPEREAL USE MODD_IO, ONLY: TFILEDATA @@ -251,8 +255,10 @@ USE MODI_GRADIENT_W USE MODE_TM06, ONLY: TM06 USE MODI_UPDATE_LM ! +USE MODE_BUDGET, ONLY: BUDGET_STORE_INIT, BUDGET_STORE_END USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE USE MODE_SBL +USE MODE_SOURCES_NEG_CORRECT, ONLY: SOURCES_NEG_CORRECT ! USE MODE_EMOIST, ONLY: EMOIST USE MODE_ETHETA, ONLY: ETHETA @@ -861,6 +867,40 @@ ENDIF !* 5. TURBULENT SOURCES ! ----------------- ! +IF( LBUDGET_U ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_U ), 'VTURB', PRUS(:, :, :) ) +IF( LBUDGET_v ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_V ), 'VTURB', PRVS(:, :, :) ) +IF( LBUDGET_w ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_W ), 'VTURB', PRWS(:, :, :) ) + +IF( LBUDGET_th ) THEN + IF( KRRI >= 1 .and. KRRL >= 1 ) THEN + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) + ZLVOCPEXNM(:, :, :) * PRRS(:, :, :, 2) & + + ZLSOCPEXNM(:, :, :) * PRRS(:, :, :, 4) ) + ELSE IF( KRRL >= 1 ) THEN + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) + ZLOCPEXNM(:, :, :) * PRRS(:, :, :, 2) ) + ELSE + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) ) + END IF +END IF + +IF( LBUDGET_rv ) THEN + IF( KRRI >= 1 .and. KRRL >= 1 ) THEN + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) - PRRS(:, :, :, 4) ) + ELSE IF( KRRL >= 1 ) THEN + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) ) + ELSE + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) ) + END IF +END IF + +IF( LBUDGET_rc ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RC), 'VTURB', PRRS (:, :, :, 2) ) +IF( LBUDGET_ri ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RI), 'VTURB', PRRS (:, :, :, 4) ) + +IF( LBUDGET_sv ) THEN + DO JSV = 1, NSV + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_SV1 - 1 + JSV), 'VTURB', PRSVS(:, :, :, JSV) ) + END DO +END IF + CALL TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI, & OTURB_FLX, & HTURBDIM,HTOM,PIMPL,ZEXPL, & @@ -877,40 +917,82 @@ CALL TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI, & PSBL_DEPTH,ZLMO, & PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS, & PDP,PTP,PSIGS,PWTH,PWRC,PWSV ) -! -IF (LBUDGET_U) CALL BUDGET_DDH (PRUS,1,'VTURB_BU_RU',YDDDH, YDLDDH, YDMDDH) -IF (LBUDGET_V) CALL BUDGET_DDH (PRVS,2,'VTURB_BU_RV',YDDDH, YDLDDH, YDMDDH) -IF (LBUDGET_W) CALL BUDGET_DDH (PRWS,3,'VTURB_BU_RW',YDDDH, YDLDDH, YDMDDH) -IF (LBUDGET_TH) THEN - IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN - CALL BUDGET_DDH (PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) + ZLSOCPEXNM * PRRS(:,:,:,4),4,'VTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH) - ELSE IF ( KRRL >= 1 ) THEN - CALL BUDGET_DDH (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),4,'VTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH) +IF( LBUDGET_U ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_U), 'VTURB', PRUS(:, :, :) ) +IF( LBUDGET_V ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_V), 'VTURB', PRVS(:, :, :) ) +IF( LBUDGET_W ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_W), 'VTURB', PRWS(:, :, :) ) + +IF( LBUDGET_TH ) THEN + IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) + ZLVOCPEXNM(:, :, :) * PRRS(:, :, :, 2) & + + ZLSOCPEXNM(:, :, :) * PRRS(:, :, :, 4) ) + ELSE IF( KRRL >= 1 ) THEN + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) + ZLOCPEXNM(:, :, :) * PRRS(:, :, :, 2) ) ELSE - CALL BUDGET_DDH (PRTHLS,4,'VTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH) + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) ) END IF END IF -IF (LBUDGET_SV) THEN - DO JSV = 1,NSV - CALL BUDGET_DDH (PRSVS(:,:,:,JSV),JSV+12,'VTURB_BU_RSV',YDDDH, YDLDDH, YDMDDH) + +IF( LBUDGET_RV ) THEN + IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) - PRRS(:, :, :, 4) ) + ELSE IF( KRRL >= 1 ) THEN + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) ) + ELSE + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) ) + END IF +END IF + +IF( LBUDGET_RC ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RC), 'VTURB', PRRS(:, :, :, 2) ) +IF( LBUDGET_RI ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RI), 'VTURB', PRRS(:, :, :, 4) ) + +IF( LBUDGET_SV ) THEN + DO JSV = 1, NSV + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_SV1 - 1 + JSV), 'VTURB', PRSVS(:, :, :, JSV) ) END DO END IF -IF (LBUDGET_RV) THEN - IF ( KRRI >= 1 .AND. KRRL >= 1) THEN - CALL BUDGET_DDH (PRRS(:,:,:,1)-PRRS(:,:,:,2)-PRRS(:,:,:,4),6,'VTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH) - ELSE IF ( KRRL >= 1 ) THEN - CALL BUDGET_DDH (PRRS(:,:,:,1)-PRRS(:,:,:,2),6,'VTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH) - ELSE - CALL BUDGET_DDH (PRRS(:,:,:,1),6,'VTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH) - END IF -END IF -IF (LBUDGET_RC) CALL BUDGET_DDH (PRRS(:,:,:,2),7,'VTURB_BU_RRC',YDDDH, YDLDDH, YDMDDH) -IF (LBUDGET_RI) CALL BUDGET_DDH (PRRS(:,:,:,4),9,'VTURB_BU_RRI',YDDDH, YDLDDH, YDMDDH) ! +#ifdef REPRO48 +#else +IF( HTURBDIM == '3DIM' ) THEN +#endif + IF( LBUDGET_U ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_U ), 'HTURB', PRUS (:, :, :) ) + IF( LBUDGET_V ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_V ), 'HTURB', PRVS (:, :, :) ) + IF( LBUDGET_W ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_W ), 'HTURB', PRWS (:, :, :) ) + + IF(LBUDGET_TH) THEN + IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) + ZLVOCPEXNM(:, :, :) * PRRS(:, :, :, 2) & + + ZLSOCPEXNM(:, :, :) * PRRS(:, :, :, 4) ) + ELSE IF( KRRL >= 1 ) THEN + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) + ZLOCPEXNM(:, :, :) * PRRS(:, :, :, 2) ) + ELSE + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) ) + END IF + END IF + + IF( LBUDGET_RV ) THEN + IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) - PRRS(:, :, :, 4) ) + ELSE IF( KRRL >= 1 ) THEN + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) ) + ELSE + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) ) + END IF + END IF + + IF( LBUDGET_RC ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RC), 'HTURB', PRRS(:, :, :, 2) ) + IF( LBUDGET_RI ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RI), 'HTURB', PRRS(:, :, :, 4) ) + + IF( LBUDGET_SV ) THEN + DO JSV = 1, NSV + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_SV1 - 1 + JSV), 'HTURB', PRSVS(:, :, :, JSV) ) + END DO + END IF + ! CALL TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP, & ! HLBCX,HLBCY,OTURB_FLX,OSUBG_COND, & -! TZFILE, & +! TPFILE, & ! PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & ! PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & ! PCOSSLOPE,PSINSLOPE, & @@ -923,36 +1005,44 @@ IF (LBUDGET_RI) CALL BUDGET_DDH (PRRS(:,:,:,4),9,'VTURB_BU_RRI',YDDDH, YDLDDH, Y ! PDYP,PTHP,PSIGS, & ! ZTRH, & ! PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS ) -! -IF (LBUDGET_U) CALL BUDGET_DDH (PRUS,1,'HTURB_BU_RU',YDDDH, YDLDDH, YDMDDH) -IF (LBUDGET_V) CALL BUDGET_DDH (PRVS,2,'HTURB_BU_RV',YDDDH, YDLDDH, YDMDDH) -IF (LBUDGET_W) CALL BUDGET_DDH (PRWS,3,'HTURB_BU_RW',YDDDH, YDLDDH, YDMDDH) -IF (LBUDGET_TH) THEN - IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN - CALL BUDGET_DDH (PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) + ZLSOCPEXNM * PRRS(:,:,:,4),4,'HTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH) - ELSE IF ( KRRL >= 1 ) THEN - CALL BUDGET_DDH (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),4,'HTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH) - ELSE - CALL BUDGET_DDH (PRTHLS,4,'HTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH) + + IF( LBUDGET_U ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_U), 'HTURB', PRUS(:, :, :) ) + IF( LBUDGET_V ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_V), 'HTURB', PRVS(:, :, :) ) + IF( LBUDGET_W ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_W), 'HTURB', PRWS(:, :, :) ) + + IF( LBUDGET_TH ) THEN + IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) + ZLVOCPEXNM(:, :, :) * PRRS(:, :, :, 2) & + + ZLSOCPEXNM(:, :, :) * PRRS(:, :, :, 4) ) + ELSE IF( KRRL >= 1 ) THEN + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) + ZLOCPEXNM(:, :, :) * PRRS(:, :, :, 2) ) + ELSE + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) ) + END IF END IF -END IF -IF (LBUDGET_SV) THEN - DO JSV = 1,NSV - CALL BUDGET_DDH (PRSVS(:,:,:,JSV),JSV+12,'HTURB_BU_RSV',YDDDH, YDLDDH, YDMDDH) - END DO -END IF -IF (LBUDGET_RV) THEN - IF ( KRRI >= 1 .AND. KRRL >= 1) THEN - CALL BUDGET_DDH (PRRS(:,:,:,1)-PRRS(:,:,:,2)-PRRS(:,:,:,4),6,'HTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH) - ELSE IF ( KRRL >= 1 ) THEN - CALL BUDGET_DDH (PRRS(:,:,:,1)-PRRS(:,:,:,2),6,'HTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH) - ELSE - CALL BUDGET_DDH (PRRS(:,:,:,1),6,'HTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH) + + IF( LBUDGET_RV ) THEN + IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) - PRRS(:, :, :, 4) ) + ELSE IF( KRRL >= 1 ) THEN + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) ) + ELSE + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) ) + END IF END IF -END IF -IF (LBUDGET_RC) CALL BUDGET_DDH (PRRS(:,:,:,2),7,'HTURB_BU_RRC',YDDDH, YDLDDH, YDMDDH) -IF (LBUDGET_RI) CALL BUDGET_DDH (PRRS(:,:,:,4),9,'HTURB_BU_RRI',YDDDH, YDLDDH, YDMDDH) -! + + IF( LBUDGET_RC ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RC), 'HTURB', PRRS(:, :, :, 2) ) + IF( LBUDGET_RI ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RI), 'HTURB', PRRS(:, :, :, 4) ) + + IF( LBUDGET_SV ) THEN + DO JSV = 1, NSV + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_SV1 - 1 + JSV), 'HTURB', PRSVS(:, :, :, JSV) ) + END DO + END IF +#ifdef REPRO48 +#else +END IF +#endif !---------------------------------------------------------------------------- ! !* 6. EVOLUTION OF THE TKE AND ITS DISSIPATION @@ -967,6 +1057,17 @@ IF (LBUDGET_RI) CALL BUDGET_DDH (PRRS(:,:,:,4),9,'HTURB_BU_RRI',YDDDH, YDLDDH, Y ! 6.2 TKE evolution equation IF (.NOT. LHARAT) THEN +! +IF (LBUDGET_TH) THEN + IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) & + & + ZLSOCPEXNM * PRRS(:,:,:,4) ) + ELSE IF ( KRRL >= 1 ) THEN + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2) ) + ELSE + CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS(:, :, :) ) + END IF +END IF CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKET,ZLM,ZLEPS,PDP,ZTRH, & & PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ, & @@ -978,14 +1079,15 @@ CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKET,ZLM,ZLEPS,PDP,ZTRH, & & PEDR=PEDR) IF (LBUDGET_TH) THEN IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN - CALL BUDGET_DDH (PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) + ZLSOCPEXNM * PRRS(:,:,:,4),4,'DISSH_BU_RTH',YDDDH, YDLDDH, YDMDDH) + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) & + & + ZLSOCPEXNM * PRRS(:,:,:,4) ) ELSE IF ( KRRL >= 1 ) THEN - CALL BUDGET_DDH (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),4,'DISSH_BU_RTH',YDDDH, YDLDDH, YDMDDH) + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2) ) ELSE - CALL BUDGET_DDH (PRTHLS,4,'DISSH_BU_RTH',YDDDH, YDLDDH, YDMDDH) + CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS(:, :, :) ) END IF END IF - +! ENDIF ! !---------------------------------------------------------------------------- diff --git a/src/mesonh/turb/turb.f90 b/src/mesonh/turb/turb.f90 index af6146bd6..cb60d897e 100644 --- a/src/mesonh/turb/turb.f90 +++ b/src/mesonh/turb/turb.f90 @@ -351,11 +351,11 @@ END MODULE MODI_TURB !* 0. DECLARATIONS ! ------------ ! -use modd_budget, only: lbudget_u, lbudget_v, lbudget_w, lbudget_th, lbudget_rv, lbudget_rc, & - lbudget_rr, lbudget_ri, lbudget_rs, lbudget_rg, lbudget_rh, lbudget_sv, & +USE MODD_BUDGET, ONLY: LBUDGET_U, LBUDGET_V, LBUDGET_W, LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, & + LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, LBUDGET_SV, & NBUDGET_U, NBUDGET_V, NBUDGET_W, NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, & NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH, NBUDGET_SV1, & - tbudgets + TBUDGETS USE MODD_CONF USE MODD_CST USE MODD_CTURB @@ -384,10 +384,10 @@ USE MODI_TM06 USE MODI_UPDATE_LM USE MODI_GET_HALO ! -use mode_budget, only: Budget_store_init, Budget_store_end +USE MODE_BUDGET, ONLY: BUDGET_STORE_INIT, BUDGET_STORE_END USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE USE MODE_SBL -use mode_sources_neg_correct, only: Sources_neg_correct +USE MODE_SOURES_NEG_CORRECT, ONLY: SOURCES_NEG_CORRECT ! USE MODI_EMOIST USE MODI_ETHETA -- GitLab