From 60f63a630e9b1c701ed3448983e4882663075213 Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Tue, 12 Apr 2022 23:16:20 +0200 Subject: [PATCH] Quentin 12/04/2022: Adapt microphysics GPU for mesonh compilation. Test case is not running yet --- src/common/micro/modd_rain_ice_param.F90 | 17 +++++++ src/mesonh/ext/deallocate_model1.f90 | 14 ++---- src/mesonh/ext/ini_radar.f90 | 4 +- src/mesonh/ext/ini_segn.f90 | 2 + src/mesonh/ext/resolved_cloud.f90 | 54 +++++---------------- src/mesonh/micro/rain_ice_red.f90 | 61 ++++++++++++++++-------- 6 files changed, 81 insertions(+), 71 deletions(-) diff --git a/src/common/micro/modd_rain_ice_param.F90 b/src/common/micro/modd_rain_ice_param.F90 index efb3c5520..9655d6f10 100644 --- a/src/common/micro/modd_rain_ice_param.F90 +++ b/src/common/micro/modd_rain_ice_param.F90 @@ -583,4 +583,21 @@ SUBROUTINE RAIN_ICE_PARAM_ALLOCATE(HNAME, KDIM1, KDIM2) XKER_RWETH=> RAIN_ICE_PARAM%XKER_RWETH END SELECT END SUBROUTINE RAIN_ICE_PARAM_ALLOCATE +SUBROUTINE RAIN_ICE_PARAM_DEALLOCATE() + IMPLICIT NONE + XGAMINC_RIM1=>NULL() + DEALLOCATE(RAIN_ICE_PARAM%XGAMINC_RIM1) + XGAMINC_RIM2=>NULL() + DEALLOCATE(RAIN_ICE_PARAM%XGAMINC_RIM2) + XKER_RACCSS=>NULL() + DEALLOCATE(RAIN_ICE_PARAM%XKER_RACCSS) + XKER_RACCS=>NULL() + DEALLOCATE(RAIN_ICE_PARAM%XKER_RACCS) + XKER_SACCRG=>NULL() + DEALLOCATE(RAIN_ICE_PARAM%XKER_SACCRG) + XKER_SDRYG=>NULL() + DEALLOCATE(RAIN_ICE_PARAM%XKER_SDRYG) + XKER_RDRYG=>NULL() + DEALLOCATE(RAIN_ICE_PARAM%XKER_RDRYG) +END SUBROUTINE RAIN_ICE_PARAM_DEALLOCATE END MODULE MODD_RAIN_ICE_PARAM diff --git a/src/mesonh/ext/deallocate_model1.f90 b/src/mesonh/ext/deallocate_model1.f90 index 3b0b46738..63a5d98f9 100644 --- a/src/mesonh/ext/deallocate_model1.f90 +++ b/src/mesonh/ext/deallocate_model1.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1997-2021 CNRS, Meteo-France and Universite Paul Sabatier +MNH_LIC Copyright 1997-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. @@ -531,15 +531,9 @@ END IF ! !* 14. Modules RAIN_ICE_DESCR and MODD_RAIN_ICE_PARAM ! -IF ( ALLOCATED(XRTMIN) .AND. KCALL == 4 ) THEN - DEALLOCATE( XRTMIN ) - DEALLOCATE( XGAMINC_RIM1 ) - DEALLOCATE( XGAMINC_RIM2 ) - DEALLOCATE( XKER_RACCSS ) - DEALLOCATE( XKER_RACCS ) - DEALLOCATE( XKER_SACCRG ) - DEALLOCATE( XKER_SDRYG ) - DEALLOCATE( XKER_RDRYG ) +IF ( ASSOCIATED(XRTMIN) .AND. KCALL == 4 ) THEN + CALL RAIN_ICE_DESCR_DEALLOCATE() + CALL RAIN_ICE_PARAM_DEALLOCATE() END IF ! !* 15. Module PASPOLn diff --git a/src/mesonh/ext/ini_radar.f90 b/src/mesonh/ext/ini_radar.f90 index a53621e5e..f0f5e0307 100644 --- a/src/mesonh/ext/ini_radar.f90 +++ b/src/mesonh/ext/ini_radar.f90 @@ -188,7 +188,9 @@ XLBH = ( XAH*XCCH*MOMG(XALPHAH,XNUH,XBH) )**(-XLBEXH) ! !* 2.4 Minimal values allowed for the mixing ratios ! ICE3 -IF(.NOT.ALLOCATED(XRTMIN)) ALLOCATE( XRTMIN(6) ) +IF(.NOT.ASSOCIATED(XRTMIN)) THEN + CALL RAIN_ICE_DESCR_ALLOCATE(6) +END IF ! XRTMIN(1) = 1.0E-20 XRTMIN(2) = 1.0E-20 diff --git a/src/mesonh/ext/ini_segn.f90 b/src/mesonh/ext/ini_segn.f90 index 590efa55c..59eb32a09 100644 --- a/src/mesonh/ext/ini_segn.f90 +++ b/src/mesonh/ext/ini_segn.f90 @@ -178,6 +178,7 @@ USE MODD_IO, ONLY: NVERB_FATAL, NVERB_WARNING, TFILE_OUTPUTLISTING USE MODD_LUNIT USE MODD_LUNIT_n, ONLY: CINIFILE_n=> CINIFILE, TINIFILE_n => TINIFILE, CINIFILEPGD_n=> CINIFILEPGD, TLUOUT, LUNIT_MODEL USE MODD_PARAM_n, ONLY: CSURF +USE MODD_PARAM_ICE USE MODD_PARAMETERS USE MODD_REF, ONLY: LBOUSS ! @@ -312,6 +313,7 @@ ILUSEG = TZFILE_DES%NLU !* 2. SET DEFAULT VALUES ! ------------------ ! +CALL PARAM_ICE_ASSOCIATE() CALL DEFAULT_DESFM_n(KMI) ! !------------------------------------------------------------------------------- diff --git a/src/mesonh/ext/resolved_cloud.f90 b/src/mesonh/ext/resolved_cloud.f90 index 540019944..e24ca742c 100644 --- a/src/mesonh/ext/resolved_cloud.f90 +++ b/src/mesonh/ext/resolved_cloud.f90 @@ -298,9 +298,10 @@ USE MODD_NSV, ONLY: NSV_C1R3END, NSV_C2R2BEG, NSV_C2R2END, NSV_LIMA_NC, NSV_LIMA_NI, NSV_LIMA_NR USE MODD_PARAM_C2R2, ONLY: LSUPSAT USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT -USE MODD_PARAM_ICE, ONLY: CSEDIM, LADJ_BEFORE, LADJ_AFTER, CFRAC_ICE_ADJUST, LRED +USE MODD_PARAM_ICE, ONLY: CSEDIM, LADJ_BEFORE, LADJ_AFTER, CFRAC_ICE_ADJUST, LRED, & + PARAM_ICE USE MODD_PARAM_LIMA, ONLY: LADJ, LCOLD, LPTSPLIT, LSPRO, NMOD_CCN, NMOD_IFN, NMOD_IMM -USE MODD_RAIN_ICE_DESCR, ONLY: XRTMIN +USE MODD_RAIN_ICE_DESCR, ONLY: XRTMIN, RAIN_ICE_DESCR USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM USE MODD_SALT, ONLY: LSALT USE MODD_TURB_n, ONLY: CSUBG_AUCV_RI, CCONDENS, CLAMBDA3, CSUBG_MF_PDF @@ -783,10 +784,10 @@ SELECT CASE ( HCLOUD ) PRS(:,:,:,4)>ZRSMIN(4) .OR. & PRS(:,:,:,5)>ZRSMIN(5) .OR. & PRS(:,:,:,6)>ZRSMIN(6) - CALL RAIN_ICE_RED (COUNT(LLMICRO), SIZE(PTHT, 1), SIZE(PTHT, 2), & - SIZE(PTHT, 3), COUNT(LLMICRO), & + CALL RAIN_ICE_RED (YLDIMPHYEX,CST, PARAM_ICE, RAIN_ICE_PARAM, RAIN_ICE_DESCR,TBUCONF,& + COUNT(LLMICRO), COUNT(LLMICRO), & OSEDIC, .FALSE.,CSEDIM, HSUBG_AUCV, CSUBG_AUCV_RI,& - OWARM,1,IKU,1, & + OWARM, & PTSTEP, KRR, LLMICRO, ZEXN, & ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT,PCLDFR,& PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & @@ -800,23 +801,9 @@ SELECT CASE ( HCLOUD ) TBUDGETS,SIZE(TBUDGETS), & PSEA,PTOWN, PFPR=ZFPR ) ELSE - CALL RAIN_ICE_RED (COUNT(LLMICRO), SIZE(PTHT, 1), SIZE(PTHT, 2), & - SIZE(PTHT, 3), COUNT(LLMICRO), & - OSEDIC, .FALSE.,CSEDIM, HSUBG_AUCV, CSUBG_AUCV_RI,& - OWARM,1,IKU,1, & - PTSTEP, KRR, LLMICRO, ZEXN, & - ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT,PCLDFR,& - PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & - PTHT, PRT(:,:,:,1), PRT(:,:,:,2), & - PRT(:,:,:,3), PRT(:,:,:,4), & - PRT(:,:,:,5), PRT(:,:,:,6), & - PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3), & - PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6), & - PINPRC,PINPRR, PEVAP3D, & - PINPRS, PINPRG, PINDEP, PRAINFR, PSIGS, & - TBUDGETS,SIZE(TBUDGETS), & - PSEA,PTOWN, PFPR=ZFPR ) +! CALL RAIN_ICE_OLD END IF + ! !* 9.2 Perform the saturation adjustment over cloud ice and cloud water ! @@ -892,9 +879,10 @@ SELECT CASE ( HCLOUD ) PRS(:,:,:,5)>ZRSMIN(5) .OR. & PRS(:,:,:,6)>ZRSMIN(6) .OR. & PRS(:,:,:,7)>ZRSMIN(7) - CALL RAIN_ICE_RED (COUNT(LLMICRO), SIZE(PTHT, 1), SIZE(PTHT, 2), SIZE(PTHT, 3),& - COUNT(LLMICRO), OSEDIC, .FALSE., CSEDIM, HSUBG_AUCV, CSUBG_AUCV_RI,& - OWARM, 1, IKU, 1, & + CALL RAIN_ICE_RED (YLDIMPHYEX,CST, PARAM_ICE, RAIN_ICE_PARAM, RAIN_ICE_DESCR,TBUCONF,& + COUNT(LLMICRO), COUNT(LLMICRO), & + OSEDIC, .FALSE., CSEDIM, HSUBG_AUCV, CSUBG_AUCV_RI,& + OWARM, & PTSTEP, KRR, LLMICRO, ZEXN, & ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,& PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF,& @@ -908,24 +896,8 @@ SELECT CASE ( HCLOUD ) TBUDGETS,SIZE(TBUDGETS), & PSEA, PTOWN, & PRT(:,:,:,7), PRS(:,:,:,7), PINPRH, PFPR=ZFPR ) - ELSE - CALL RAIN_ICE_RED (COUNT(LLMICRO), SIZE(PTHT, 1), SIZE(PTHT, 2), SIZE(PTHT, 3),& - COUNT(LLMICRO), OSEDIC, .FALSE., CSEDIM, HSUBG_AUCV, CSUBG_AUCV_RI,& - OWARM, 1, IKU, 1, & - PTSTEP, KRR, LLMICRO, ZEXN, & - ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,& - PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF,& - PTHT, PRT(:,:,:,1), PRT(:,:,:,2), & - PRT(:,:,:,3), PRT(:,:,:,4), & - PRT(:,:,:,5), PRT(:,:,:,6), & - PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3), & - PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6), & - PINPRC, PINPRR, PEVAP3D, & - PINPRS, PINPRG, PINDEP, PRAINFR, PSIGS, & - TBUDGETS,SIZE(TBUDGETS), & - PSEA, PTOWN, & - PRT(:,:,:,7), PRS(:,:,:,7), PINPRH, PFPR=ZFPR ) + !CALL RAIN_ICE_OLD END IF diff --git a/src/mesonh/micro/rain_ice_red.f90 b/src/mesonh/micro/rain_ice_red.f90 index 44f329c5b..a19b972fa 100644 --- a/src/mesonh/micro/rain_ice_red.f90 +++ b/src/mesonh/micro/rain_ice_red.f90 @@ -118,7 +118,7 @@ END MODULE MODI_RAIN_ICE_RED SUBROUTINE RAIN_ICE_RED (D, CST, PARAMI, ICEP, ICED, BUCONF, & KPROMA, KSIZE, & OSEDIC, OCND2, HSEDIM, HSUBG_AUCV_RC, HSUBG_AUCV_RI, & - OWARM, KKA, KKU, KKL, & + OWARM, & PTSTEP, KRR, ODMICRO, PEXN, & PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,& PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF, & @@ -463,7 +463,6 @@ REAL, DIMENSION(KPROMA) :: ZTIME ! Current integration time (starts with 0 and e REAL, DIMENSION(KPROMA) :: & & ZMAXTIME, & ! Time on which we can apply the current tendencies & ZTIME_LASTCALL, & ! Integration time when last tendecies call has been done - & ZCOMPUTE, & ! 1. for points where we must compute tendencies, 0. elsewhere & ZSSI, & & ZCIT, & ! Pristine ice conc. at t & ZRHODREF, & ! RHO Dry REFerence @@ -484,6 +483,7 @@ REAL, DIMENSION(KPROMA) :: & & ZHLI_LCF, & & ZHLI_HRI, & & ZHLI_LRI +LOGICAL, DIMENSION(KPROMA) :: LLCOMPUTE ! .TRUE. or points where we must compute tendencies, ! !Output packed tendencies (for budgets only) REAL, DIMENSION(KPROMA) :: ZRVHENI_MR, & ! heterogeneous nucleation mixing ratio change @@ -594,7 +594,6 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT(TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:, :, :) * PRHODJ(:, :, :)) IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT(TBUDGETS(NBUDGET_RG), 'SEDI', PRGS(:, :, :) * PRHODJ(:, :, :)) IF (BUCONF%LBUDGET_RH .AND. KRR==7) CALL BUDGET_STORE_INIT(TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:, :, :) * PRHODJ(:, :, :)) - IF(HSEDIM=='STAT') THEN IF(KRR==7) THEN DO JK = D%NKTB,D%NKTE @@ -681,7 +680,6 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN - !!!!! ajouter momentum @@ -708,7 +706,6 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN IF (BUCONF%LBUDGET_RH .AND. KRR==7) CALL BUDGET_STORE_END(TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:, :, :) * PRHODJ(:, :, :)) ENDIF ! - DO JK = D%NKTB,D%NKTE !Backup of T variables ZWR(:,:,JK,IRV)=PRVT(:,:,JK) @@ -950,17 +947,17 @@ IF (KSIZE > 0) THEN ENDIF DO JL=1, IMICRO IF (ZTIME(JL) < PTSTEP) THEN - ZCOMPUTE(JL)=1. ! Computation (1.) only for points for which integration time has not reached the timestep + LLCOMPUTE(JL)=.TRUE. ! Computation (.TRUE.) only for points for which integration time has not reached the timestep IITER(JL)=IITER(JL)+1 ELSE - ZCOMPUTE(JL)=0. + LLCOMPUTE(JL)=.FALSE. ENDIF ENDDO LL_ANY_ITER=ANY(IITER(1:IMICRO) < INB_ITER_MAX) LLCPZ0RT=.TRUE. LSOFT=.FALSE. ! We *really* compute the tendencies - DO WHILE(ANY(ZCOMPUTE(1:IMICRO)==1.)) ! Loop to adjust tendencies when we cross the 0°C or when a species disappears + DO WHILE(ANY(LLCOMPUTE(1:IMICRO))) ! Loop to adjust tendencies when we cross the 0°C or when a species disappears !$OMP SIMD DO JL=1, IMICRO ZSUM2(JL)=SUM(ZVART(JL,IRI:KRR)) @@ -975,9 +972,9 @@ IF (KSIZE > 0) THEN !*** 4.1 Tendencies computation ! ! Tendencies are *really* computed when LSOFT==.FALSE. and only adjusted otherwise - CALL ICE4_TENDENCIES(D, CST, PARAMI, ICEP, ICED, & + CALL ICE4_TENDENCIES(D, CST, PARAMI, ICEP, ICED, BUCONF, & &KPROMA, IMICRO, & - &KRR, LSOFT, ZCOMPUTE, & + &KRR, LSOFT, LLCOMPUTE, & &OWARM, PARAMI%CSUBG_RC_RR_ACCR, PARAMI%CSUBG_RR_EVAP, & &HSUBG_AUCV_RC, HSUBG_AUCV_RI, PARAMI%CSUBG_PR_PDF, & &ZEXN, ZRHODREF, ZLVFACT, ZLSFACT, I1, I2, I3, & @@ -1011,7 +1008,11 @@ IF (KSIZE > 0) THEN ! ! If we can, we shall use these tendencies until the end of the timestep DO JL=1, IMICRO - ZMAXTIME(JL)=ZCOMPUTE(JL) * (PTSTEP-ZTIME(JL)) ! Remaining time until the end of the timestep + IF(LLCOMPUTE(JL)) THEN + ZMAXTIME(JL)=(PTSTEP-ZTIME(JL)) ! Remaining time until the end of the timestep + ELSE + ZMAXTIME(JL)=0. + ENDIF ENDDO !We need to adjust tendencies when temperature reaches 0 @@ -1045,7 +1046,7 @@ IF (KSIZE > 0) THEN !We stop when the end of the timestep is reached DO JL=1, IMICRO IF (ZTIME(JL)+ZMAXTIME(JL) >= PTSTEP) THEN - ZCOMPUTE(JL)=0. + LLCOMPUTE(JL)=.FALSE. ENDIF ENDDO !We must recompute tendencies when the end of the sub-timestep is reached @@ -1053,7 +1054,7 @@ IF (KSIZE > 0) THEN DO JL=1, IMICRO IF ((IITER(JL) < INB_ITER_MAX) .AND. (ZTIME(JL)+ZMAXTIME(JL) > ZTIME_LASTCALL(JL)+ZTSTEP)) THEN ZMAXTIME(JL)=ZTIME_LASTCALL(JL)-ZTIME(JL)+ZTSTEP - ZCOMPUTE(JL)=0. + LLCOMPUTE(JL)=.FALSE. ENDIF ENDDO ENDIF @@ -1070,15 +1071,17 @@ IF (KSIZE > 0) THEN IF (LLCPZ0RT) Z0RT(1:IMICRO, JV)=ZVART(1:IMICRO, JV) DO JL=1, IMICRO IF (IITER(JL)<INB_ITER_MAX .AND. ABS(ZA(JL,JV))>1.E-20) THEN - ZTIME_THRESHOLD1D(JL)=(SIGN(1., ZA(JL, JV))*PARAMI%XMRSTEP+Z0RT(JL, JV)-ZVART(JL, JV)-ZB(JL, JV))/ZA(JL, JV) + ZTIME_THRESHOLD1D(JL)=(SIGN(1., ZA(JL, JV))*PARAMI%XMRSTEP+& + Z0RT(JL, JV)-ZVART(JL, JV)-ZB(JL, JV))/ZA(JL, JV) ELSE ZTIME_THRESHOLD1D(JL)=-1. ENDIF ENDDO DO JL=1, IMICRO - IF (ZTIME_THRESHOLD1D(JL)>=0 .AND. ZTIME_THRESHOLD1D(JL)<ZMAXTIME(JL) .AND. (ZVART(JL, JV)>ICED%XRTMIN(JV) .OR. ZA(JL, JV)>0.)) THEN + IF (ZTIME_THRESHOLD1D(JL)>=0 .AND. ZTIME_THRESHOLD1D(JL)<ZMAXTIME(JL) .AND. & + (ZVART(JL, JV)>ICED%XRTMIN(JV) .OR. ZA(JL, JV)>0.)) THEN ZMAXTIME(JL)=MIN(ZMAXTIME(JL), ZTIME_THRESHOLD1D(JL)) - ZCOMPUTE(JL)=0. + LLCOMPUTE(JL)=.FALSE. ENDIF ENDDO ENDDO @@ -1090,7 +1093,7 @@ IF (KSIZE > 0) THEN DO JL=1, IMICRO IF (IITER(JL)<INB_ITER_MAX .AND. ZMAXB(JL)>PARAMI%XMRSTEP) THEN ZMAXTIME(JL)=0. - ZCOMPUTE(JL)=0. + LLCOMPUTE(JL)=.FALSE. ENDIF ENDDO ENDIF ! LL_ANY_ITER @@ -1208,6 +1211,7 @@ PCIT(:,:,:)=ZCITOUT(:,:,:) !* 6. COMPUTES THE SLOW COLD PROCESS SOURCES OUTSIDE OF ODMICRO POINTS ! ---------------------------------------------------------------- ! + DO JK=D%NKTB,D%NKTE DO JJ=D%NJB,D%NJE !DIR$ VECTOR ALWAYS @@ -1215,7 +1219,7 @@ DO JK=D%NKTB,D%NKTE IF (.NOT. ODMICRO(JI, JJ, JK)) THEN ZW0D=ZZ_LSFACT(JI, JJ, JK)/PEXN(JI, JJ, JK) ENDIF - CALL ICE4_NUCLEATION_ELEM(.NOT. ODMICRO(JI, JJ, JK), & + CALL ICE4_NUCLEATION_ELEM(CST, PARAMI, ICEP, ICED, .NOT. ODMICRO(JI, JJ, JK), & PTHT(JI, JJ, JK), PPABST(JI, JJ, JK), PRHODREF(JI, JJ, JK), & PEXN(JI, JJ, JK), ZW0D, ZT(JI, JJ, JK), & PRVT(JI, JJ, JK), & @@ -1535,16 +1539,21 @@ IF(BUCONF%LBU_ENABLE) THEN IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_RR), 'WETH', -ZW2(:, :, :) *PRHODJ(:, :, :)) IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_RI), 'WETH', -ZW3(:, :, :) *PRHODJ(:, :, :)) IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_RS), 'WETH', -ZW4(:, :, :) *PRHODJ(:, :, :)) +#ifdef REPRO48 +#else IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_RG), 'WETH', -ZW5(:, :, :) *PRHODJ(:, :, :)) +#endif IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_RH), 'WETH', (ZW1(:, :, :)+ZW2(:, :, :)+ZW3(:, :, :)+ & &ZW4(:, :, :)+ZW5(:, :, : )) *PRHODJ(:, :, :)) +#if defined(REPRO48) || defined(REPRO55) ZW(:,:,:) = 0. DO JL=1, KSIZE ZW(I1TOT(JL), I2TOT(JL), I3TOT(JL)) = ZTOT_RGWETH(JL) * ZINV_TSTEP END DO - IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_RG), 'HGCV', -ZW(:, :, :)*PRHODJ(:, :, :)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_RG), 'HGCV', (-ZW5(:, :, :)-ZW(:, :, :))*PRHODJ(:, :, :)) IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_RH), 'HGCV', ZW(:, :, :)*PRHODJ(:, :, :)) +#endif ZW1(:,:,:) = 0. DO JL=1, KSIZE @@ -1567,9 +1576,12 @@ IF(BUCONF%LBU_ENABLE) THEN ZW5(I1TOT(JL), I2TOT(JL), I3TOT(JL)) = ZTOT_RGDRYH(JL) * ZINV_TSTEP END DO ZW6(:,:,:) = 0. +#if defined(REPRO48) || defined(REPRO55) + !ZW6 must be removed when REPRO48 will be suppressed DO JL=1, KSIZE ZW6(I1TOT(JL), I2TOT(JL), I3TOT(JL)) = ZTOT_RDRYHG(JL) * ZINV_TSTEP END DO +#endif IF (BUCONF%LBUDGET_TH) & CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_TH), 'DRYH', (ZW1(:, :, :)+ZW2(:, :, :))*ZZ_DIFF(:, :, :)*PRHODJ(:, :, :)) IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_RC), 'DRYH', -ZW1(:, :, :) *PRHODJ(:, :, :)) @@ -1581,6 +1593,17 @@ IF(BUCONF%LBU_ENABLE) THEN &ZW4(:, :, :)+ZW5(:, :, : )-ZW6(:, :, :)) & & *PRHODJ(:, :, :)) +#if defined(REPRO48) || defined(REPRO55) +#else + !When REPRO48 will be suppressed, ZW6 must be removed + ZW(:,:,:) = 0. + DO JL=1, KSIZE + ZW(I1TOT(JL), I2TOT(JL), I3TOT(JL)) = ZTOT_RDRYHG(JL) * ZINV_TSTEP + END DO + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_RG), 'HGCV', -ZW(:, :, :)*PRHODJ(:, :, :)) + IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_ADD(TBUDGETS(NBUDGET_RH), 'HGCV', ZW(:, :, :)*PRHODJ(:, :, :)) +#endif + ZW(:,:,:) = 0. DO JL=1, KSIZE ZW(I1TOT(JL), I2TOT(JL), I3TOT(JL)) = ZTOT_RHMLTR(JL) * ZINV_TSTEP -- GitLab