From e4a937c3941c4cb0e349a241a580b375f3b13a97 Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Tue, 3 Mar 2020 12:16:25 +0100 Subject: [PATCH] Benoit V. 03/03/2020: use of DTHRAD instead of dT/dt in Smax diagnostic computation --- src/MNH/lima.f90 | 28 +++++++++-------------- src/MNH/lima_ccn_activation.f90 | 34 +++++++++++++++------------- src/MNH/lima_nucleation_procs.f90 | 37 ++++++++++++++++--------------- src/MNH/lima_warm.f90 | 1 + src/MNH/lima_warm_nucl.f90 | 37 +++++++++++++------------------ src/MNH/resolved_cloud.f90 | 5 +++-- 6 files changed, 68 insertions(+), 74 deletions(-) diff --git a/src/MNH/lima.f90 b/src/MNH/lima.f90 index cd26cee34..cb3a85219 100644 --- a/src/MNH/lima.f90 +++ b/src/MNH/lima.f90 @@ -13,7 +13,7 @@ INTERFACE PRHODREF, PEXNREF, PDZZ, & PRHODJ, PPABSM, PPABST, & NCCN, NIFN, NIMM, & - PTHM, PTHT, PRT, PSVT, PW_NU, & + PDTHRAD, PTHT, PRT, PSVT, PW_NU, & PTHS, PRS, PSVS, & PINPRC, PINDEP, PINPRR, PINPRI, PINPRS, PINPRG, PINPRH, & PEVAP3D ) @@ -40,7 +40,7 @@ INTEGER, INTENT(IN) :: NCCN ! for array size declarati INTEGER, INTENT(IN) :: NIFN ! for array size declarations INTEGER, INTENT(IN) :: NIMM ! for array size declarations ! -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHM ! Theta at time t-dt +REAL, DIMENSION(:,:,:), INTENT(IN) :: PDTHRAD ! Theta at time t-dt REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT ! Theta at time t REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT ! Mixing ratios at time t REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT ! Concentrations at time t @@ -70,7 +70,7 @@ END MODULE MODI_LIMA PRHODREF, PEXNREF, PDZZ, & PRHODJ, PPABSM, PPABST, & NCCN, NIFN, NIMM, & - PTHM, PTHT, PRT, PSVT, PW_NU, & + PDTHRAD, PTHT, PRT, PSVT, PW_NU, & PTHS, PRS, PSVS, & PINPRC, PINDEP, PINPRR, PINPRI, PINPRS, PINPRG, PINPRH, & PEVAP3D ) @@ -96,7 +96,8 @@ END MODULE MODI_LIMA !! Original 15/03/2018 !! !! B.Vié 02/2019 : minor correction on budget -! P. Wautelet 26/02/2020: bugfix: corrected condition to write budget CORR_BU_RRS +!! P. Wautelet 26/02/2020: bugfix: corrected condition to write budget CORR_BU_RRS +!! B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation ! !* 0. DECLARATIONS ! ------------ @@ -149,7 +150,7 @@ INTEGER, INTENT(IN) :: NCCN ! for array size declarati INTEGER, INTENT(IN) :: NIFN ! for array size declarations INTEGER, INTENT(IN) :: NIMM ! for array size declarations ! -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHM ! Theta at time t-dt +REAL, DIMENSION(:,:,:), INTENT(IN) :: PDTHRAD ! Theta at time t-dt REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT ! Theta at time t REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT ! Mixing ratios at time t REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT ! Concentrations at time t @@ -187,7 +188,7 @@ REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: ZHOMFS ! ! Other 3D thermodynamical variables -REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: ZEXN, ZT, ZTM +REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3)) :: ZEXN, ZT ! ! Packed prognostic & thermo variables @@ -678,18 +679,11 @@ IF ( LCOLD ) ZCIT(:,:,:) = ZCIS(:,:,:) * PTSTEP !* 2. Nucleation processes ! -------------------- ! -! -IF( LACTIT ) THEN - ZTM(:,:,:) = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD) -ELSE - ZTM(:,:,:) = ZT(:,:,:) -END IF -! CALL LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ, & - PRHODREF, ZEXN, PPABST, ZT, ZTM, PW_NU, & - ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, & - ZCCT, ZCRT, ZCIT, & - ZCCNFT, ZCCNAT, ZIFNFT, ZIFNNT, ZIMMNT, ZHOMFT ) + PRHODREF, ZEXN, PPABST, ZT, PDTHRAD, PW_NU, & + ZTHT, ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, & + ZCCT, ZCRT, ZCIT, & + ZCCNFT, ZCCNAT, ZIFNFT, ZIFNNT, ZIMMNT, ZHOMFT ) ! ! Saving sources before microphysics time-splitting loop ! diff --git a/src/MNH/lima_ccn_activation.f90 b/src/MNH/lima_ccn_activation.f90 index fd2a2282a..80750616a 100644 --- a/src/MNH/lima_ccn_activation.f90 +++ b/src/MNH/lima_ccn_activation.f90 @@ -7,9 +7,9 @@ ! ############################### ! INTERFACE - SUBROUTINE LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT, & - PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, & - PTHT, PRVT, PRCT, PCCT, PRRT, PNFT, PNAT ) + SUBROUTINE LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT, & + PRHODREF, PEXNREF, PPABST, PT, PDTHRAD, PW_NU, & + PTHT, PRVT, PRCT, PCCT, PRRT, PNFT, PNAT ) USE MODD_IO_ll, ONLY: TFILEDATA ! REAL, INTENT(IN) :: PTSTEP ! Double Time step @@ -21,8 +21,8 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Reference Exner function REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST ! abs. pressure at time t -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZT ! Temperature -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZTM ! Temperature at time t-dt +REAL, DIMENSION(:,:,:), INTENT(IN) :: PT ! Temperature +REAL, DIMENSION(:,:,:), INTENT(IN) :: PDTHRAD ! Radiative temperature tendency ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PW_NU ! updraft velocity used for ! the nucleation param. @@ -39,9 +39,9 @@ END SUBROUTINE LIMA_CCN_ACTIVATION END INTERFACE END MODULE MODI_LIMA_CCN_ACTIVATION ! ############################################################################# - SUBROUTINE LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT, & - PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, & - PTHT, PRVT, PRCT, PCCT, PRRT, PNFT, PNAT ) + SUBROUTINE LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT, & + PRHODREF, PEXNREF, PPABST, PT, PDTHRAD, PW_NU, & + PTHT, PRVT, PRCT, PCCT, PRRT, PNFT, PNAT ) ! ############################################################################# ! !! @@ -87,6 +87,7 @@ END MODULE MODI_LIMA_CCN_ACTIVATION !! ------------- !! Original ??/??/13 !! +!! B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -120,8 +121,8 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Reference Exner function REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST ! abs. pressure at time t -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZT ! Temperature -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZTM ! Temperature at time t-dt +REAL, DIMENSION(:,:,:), INTENT(IN) :: PT ! Temperature +REAL, DIMENSION(:,:,:), INTENT(IN) :: PDTHRAD ! Radiative temperature tendency ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PW_NU ! updraft velocity used for ! the nucleation param. @@ -195,9 +196,10 @@ IKE=SIZE(PRHODREF,3) - JPVEXT ! Saturation vapor mixing ratio and radiative tendency ! ZEPS= XMV / XMD -ZRVSAT(:,:,:) = ZEPS / (PPABST(:,:,:)*EXP(-XALPW+XBETAW/ZT(:,:,:)+XGAMW*ALOG(ZT(:,:,:))) - 1.0) +ZRVSAT(:,:,:) = ZEPS / (PPABST(:,:,:)*EXP(-XALPW+XBETAW/PT(:,:,:)+XGAMW*ALOG(PT(:,:,:))) - 1.0) ZTDT(:,:,:) = 0. -IF (LACTIT) ZTDT(:,:,:) = (ZT(:,:,:)-ZTM(:,:,:))/PTSTEP ! dT/dt +IF (LACTIT .AND. SIZE(PDTHRAD).GT.0) ZTDT(:,:,:) = PDTHRAD(:,:,:) * PEXNREF(:,:,:) +!IF (LACTIT) ZTDT(:,:,:) = (PT(:,:,:)-PTM(:,:,:))/PTSTEP ! dT/dt ! ! find locations where CCN are available ! @@ -217,13 +219,13 @@ IF( LACTIT ) THEN ZTDT(IIB:IIE,IJB:IJE,IKB:IKE)<XTMIN .OR. & PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE) ) .AND.& PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>(0.98*ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE))& - .AND. ZT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.) & + .AND. PT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.) & .AND. ZCONC_TOT(IIB:IIE,IJB:IJE,IKB:IKE)>XCTMIN(4) ELSE GNUCT(IIB:IIE,IJB:IJE,IKB:IKE) = (PW_NU(IIB:IIE,IJB:IJE,IKB:IKE)>XWMIN .OR. & PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE) ) .AND.& PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>(0.98*ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE))& - .AND. ZT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.) & + .AND. PT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.) & .AND. ZCONC_TOT(IIB:IIE,IJB:IJE,IKB:IKE)>XCTMIN(4) END IF INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:)) @@ -248,7 +250,7 @@ IF( INUCT >= 1 ) THEN ALLOCATE(ZRHODREF(INUCT)) ALLOCATE(ZEXNREF(INUCT)) DO JL=1,INUCT - ZZT(JL) = ZT(I1(JL),I2(JL),I3(JL)) + ZZT(JL) = PT(I1(JL),I2(JL),I3(JL)) ZZW1(JL) = ZRVSAT(I1(JL),I2(JL),I3(JL)) ZZW2(JL) = PW_NU(I1(JL),I2(JL),I3(JL)) ZZTDT(JL) = ZTDT(I1(JL),I2(JL),I3(JL)) @@ -419,7 +421,7 @@ IF( INUCT >= 1 ) THEN END WHERE ZW(:,:,:) = MIN( UNPACK( ZZW1(:),MASK=GNUCT(:,:,:),FIELD=0.0 ),PRVT(:,:,:) ) ! - PTHT(:,:,:) = PTHT(:,:,:) + ZW(:,:,:) * (XLVTT+(XCPV-XCL)*(ZT(:,:,:)-XTT))/ & + PTHT(:,:,:) = PTHT(:,:,:) + ZW(:,:,:) * (XLVTT+(XCPV-XCL)*(PT(:,:,:)-XTT))/ & (PEXNREF(:,:,:)*(XCPD+XCPV*PRVT(:,:,:)+XCL*(PRCT(:,:,:)+PRRT(:,:,:)))) PRVT(:,:,:) = PRVT(:,:,:) - ZW(:,:,:) PRCT(:,:,:) = PRCT(:,:,:) + ZW(:,:,:) diff --git a/src/MNH/lima_nucleation_procs.f90 b/src/MNH/lima_nucleation_procs.f90 index 7eb04adac..eaf244e26 100644 --- a/src/MNH/lima_nucleation_procs.f90 +++ b/src/MNH/lima_nucleation_procs.f90 @@ -8,11 +8,11 @@ ! ############################### ! INTERFACE - SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ, & - PRHODREF, PEXNREF, PPABST, PT, PTM, PW_NU, & - PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & - PCCT, PCRT, PCIT, & - PNFT, PNAT, PIFT, PINT, PNIT, PNHT ) + SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ, & + PRHODREF, PEXNREF, PPABST, PT, PDTHRAD, PW_NU, & + PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & + PCCT, PCRT, PCIT, & + PNFT, PNAT, PIFT, PINT, PNIT, PNHT ) ! USE MODD_IO_ll, ONLY: TFILEDATA ! @@ -25,7 +25,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Reference Exner function REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST ! abs. pressure at time t REAL, DIMENSION(:,:,:), INTENT(IN) :: PT ! Temperature -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTM ! Temperature at time t-dt +REAL, DIMENSION(:,:,:), INTENT(IN) :: PDTHRAD ! Radiative temperature tendency REAL, DIMENSION(:,:,:), INTENT(IN) :: PW_NU ! updraft velocity used for ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PTHT ! Theta at t @@ -50,13 +50,13 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PNHT ! CCN hom freezing END SUBROUTINE LIMA_NUCLEATION_PROCS END INTERFACE END MODULE MODI_LIMA_NUCLEATION_PROCS -! ############################################################################# -SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ, & - PRHODREF, PEXNREF, PPABST, PT, PTM, PW_NU, & - PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & - PCCT, PCRT, PCIT, & - PNFT, PNAT, PIFT, PINT, PNIT, PNHT ) -! ############################################################################# +! ############################################################################ +SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ, & + PRHODREF, PEXNREF, PPABST, PT, PDTHRAD, PW_NU, & + PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & + PCCT, PCRT, PCIT, & + PNFT, PNAT, PIFT, PINT, PNIT, PNHT ) +! ############################################################################ ! !! PURPOSE !! ------- @@ -71,6 +71,7 @@ SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ, !! Original 15/03/2018 ! P. Wautelet 27/02/2020: bugfix: PNFT was not updated after LIMA_CCN_HOM_FREEZING ! P. Wautelet 27/02/2020: add Z_TH_HINC variable (for budgets) +!! B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation !------------------------------------------------------------------------------- ! USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LMEYERS, LSNOW, LWARM, LACTI, LRAIN, LHHONI, & @@ -94,7 +95,7 @@ IMPLICIT NONE !------------------------------------------------------------------------------- ! REAL, INTENT(IN) :: PTSTEP ! Double Time step -TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! Reference density @@ -102,7 +103,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Reference Exner function REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST ! abs. pressure at time t REAL, DIMENSION(:,:,:), INTENT(IN) :: PT ! Temperature -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTM ! Temperature at time t-dt +REAL, DIMENSION(:,:,:), INTENT(IN) :: PDTHRAD ! Radiative temperature tendency REAL, DIMENSION(:,:,:), INTENT(IN) :: PW_NU ! updraft velocity used for ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PTHT ! Theta at t @@ -157,9 +158,9 @@ ZNHT(:,:,:) = PNHT(:,:,:) !------------------------------------------------------------------------------- ! IF (LWARM .AND. LACTI .AND. NMOD_CCN.GE.1) THEN - CALL LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT, & - PRHODREF, PEXNREF, PPABST, PT, PTM, PW_NU, & - ZTHT, ZRVT, ZRCT, ZCCT, ZRRT, ZNFT, ZNAT) + CALL LIMA_CCN_ACTIVATION (PTSTEP, TPFILE, OCLOSE_OUT, & + PRHODREF, PEXNREF, PPABST, PT, PDTHRAD, PW_NU, & + ZTHT, ZRVT, ZRCT, ZCCT, ZRRT, ZNFT, ZNAT ) PTHT(:,:,:) = ZTHT(:,:,:) PRVT(:,:,:) = ZRVT(:,:,:) PRCT(:,:,:) = ZRCT(:,:,:) diff --git a/src/MNH/lima_warm.f90 b/src/MNH/lima_warm.f90 index 2701cd8fb..95b4f82dd 100644 --- a/src/MNH/lima_warm.f90 +++ b/src/MNH/lima_warm.f90 @@ -128,6 +128,7 @@ END MODULE MODI_LIMA_WARM !! J. Escobar : for real*4 , use XMNH_HUGE !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! B.Vié 03/02/2020 : correction of activation of water deposition on the ground +!! B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS diff --git a/src/MNH/lima_warm_nucl.f90 b/src/MNH/lima_warm_nucl.f90 index 046ceeaea..decd53aba 100644 --- a/src/MNH/lima_warm_nucl.f90 +++ b/src/MNH/lima_warm_nucl.f90 @@ -9,7 +9,7 @@ ! INTERFACE SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, TPFILE, OCLOSE_OUT,& - PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, & + PRHODREF, PEXNREF, PPABST, PT, PTM, PW_NU, & PRCM, PRVT, PRCT, PRRT, & PTHS, PRVS, PRCS, PCCS, PNFS, PNAS ) ! @@ -28,8 +28,8 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Reference Exner function REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST ! abs. pressure at time t -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZT ! Temperature -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZTM ! Temperature at time t-dt +REAL, DIMENSION(:,:,:), INTENT(IN) :: PT ! Temperature +REAL, DIMENSION(:,:,:), INTENT(IN) :: PTM ! Temperature at time t-dt ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PW_NU ! updraft velocity used for ! the nucleation param. @@ -53,7 +53,7 @@ END INTERFACE END MODULE MODI_LIMA_WARM_NUCL ! ############################################################################# SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, TPFILE, OCLOSE_OUT,& - PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, & + PRHODREF, PEXNREF, PPABST, PT, PTM, PW_NU, & PRCM, PRVT, PRCT, PRRT, & PTHS, PRVS, PRCS, PCCS, PNFS, PNAS ) ! ############################################################################# @@ -102,7 +102,7 @@ END MODULE MODI_LIMA_WARM_NUCL !! Original ??/??/13 !! J. Escobar : 10/2017 , for real*4 use XMNH_EPSILON !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +!! B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -139,8 +139,8 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Reference Exner function REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST ! abs. pressure at time t -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZT ! Temperature -REAL, DIMENSION(:,:,:), INTENT(IN) :: ZTM ! Temperature at time t-dt +REAL, DIMENSION(:,:,:), INTENT(IN) :: PT ! Temperature +REAL, DIMENSION(:,:,:), INTENT(IN) :: PTM ! Temperature at time t-dt ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PW_NU ! updraft velocity used for ! the nucleation param. @@ -220,13 +220,7 @@ IJE=SIZE(PRHODREF,2) - JPHEXT IKB=1+JPVEXT IKE=SIZE(PRHODREF,3) - JPVEXT ! -!++cb++ -!ALLOCATE(ZRTMIN(SIZE(XRTMIN))) -!--cb-- ALLOCATE(ZCTMIN(SIZE(XCTMIN))) -!++cb++ -!ZRTMIN(:) = XRTMIN(:) / PTSTEP -!--cb-- ZCTMIN(:) = XCTMIN(:) / PTSTEP ! ! Saturation vapor mixing ratio and radiative tendency @@ -234,11 +228,12 @@ ZCTMIN(:) = XCTMIN(:) / PTSTEP ZEPS= XMV / XMD ! ZRVSAT(:,:,:) = ZEPS / (PPABST(:,:,:) * & - EXP(-XALPW+XBETAW/ZT(:,:,:)+XGAMW*ALOG(ZT(:,:,:))) - 1.0) + EXP(-XALPW+XBETAW/PT(:,:,:)+XGAMW*ALOG(PT(:,:,:))) - 1.0) ZTDT(:,:,:) = 0. !! ZDRC(:,:,:) = 0. -IF (OACTIT) THEN - ZTDT(:,:,:) = (ZT(:,:,:)-ZTM(:,:,:))/PTSTEP ! dT/dt +IF (OACTIT .AND. SIZE(PTM).GT.0) THEN + ZTDT(:,:,:) = PTM(:,:,:) ! dThRad +! ZTDT(:,:,:) = (PT(:,:,:)-PTM(:,:,:))/PTSTEP ! dT/dt !!! JPP !!! JPP !!! ZDRC(:,:,:) = (PRCT(:,:,:)-PRCM(:,:,:))/PTSTEP ! drc/dt @@ -249,7 +244,7 @@ IF (OACTIT) THEN !! BV - W and drc/dt effect should not be included in ZTDT (already accounted for in the computations) ? !! !! ZTDT(:,:,:) = MIN(0.,ZTDT(:,:,:)+(XG*PW_NU(:,:,:))/XCPD- & -!! (XLVTT+(XCPV-XCL)*(ZT(:,:,:)-XTT))*ZDRC(:,:,:)/XCPD) +!! (XLVTT+(XCPV-XCL)*(PT(:,:,:)-XTT))*ZDRC(:,:,:)/XCPD) END IF ! ! find locations where CCN are available @@ -270,13 +265,13 @@ IF( OACTIT ) THEN ZTDT(IIB:IIE,IJB:IJE,IKB:IKE)<XTMIN .OR. & PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE) ) .AND.& PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>(0.98*ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE))& - .AND. ZT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.) & + .AND. PT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.) & .AND. ZCONC_TOT(IIB:IIE,IJB:IJE,IKB:IKE)>ZCTMIN(4) ELSE GNUCT(IIB:IIE,IJB:IJE,IKB:IKE) = (PW_NU(IIB:IIE,IJB:IJE,IKB:IKE)>XWMIN .OR. & PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE) ) .AND.& PRVT(IIB:IIE,IJB:IJE,IKB:IKE)>(0.98*ZRVSAT(IIB:IIE,IJB:IJE,IKB:IKE))& - .AND. ZT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.) & + .AND. PT(IIB:IIE,IJB:IJE,IKB:IKE)>(XTT-22.) & .AND. ZCONC_TOT(IIB:IIE,IJB:IJE,IKB:IKE)>ZCTMIN(4) END IF INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:)) @@ -304,7 +299,7 @@ IF( INUCT >= 1 ) THEN ALLOCATE(ZEXNREF(INUCT)) DO JL=1,INUCT ZCCS(JL) = PCCS(I1(JL),I2(JL),I3(JL)) - ZZT(JL) = ZT(I1(JL),I2(JL),I3(JL)) + ZZT(JL) = PT(I1(JL),I2(JL),I3(JL)) ZZW1(JL) = ZRVSAT(I1(JL),I2(JL),I3(JL)) ZZW2(JL) = PW_NU(I1(JL),I2(JL),I3(JL)) ZZTDT(JL) = ZTDT(I1(JL),I2(JL),I3(JL)) @@ -482,7 +477,7 @@ IF( INUCT >= 1 ) THEN ! PRVS(:,:,:) = PRVS(:,:,:) - ZW(:,:,:) PRCS(:,:,:) = PRCS(:,:,:) + ZW(:,:,:) - ZW(:,:,:) = ZW(:,:,:) * (XLVTT+(XCPV-XCL)*(ZT(:,:,:)-XTT))/ & + ZW(:,:,:) = ZW(:,:,:) * (XLVTT+(XCPV-XCL)*(PT(:,:,:)-XTT))/ & (PEXNREF(:,:,:)*(XCPD+XCPV*PRVT(:,:,:)+XCL*(PRCT(:,:,:)+PRRT(:,:,:)))) PTHS(:,:,:) = PTHS(:,:,:) + ZW(:,:,:) ! diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90 index f3b451997..4595a1411 100644 --- a/src/MNH/resolved_cloud.f90 +++ b/src/MNH/resolved_cloud.f90 @@ -269,6 +269,7 @@ END MODULE MODI_RESOLVED_CLOUD !! 02/2019 C.Lac add rain fraction as an output field !! P. Wautelet 24/02/2020: bugfix: corrected budget name (DEPI->CDEPI) for ice_adjust !! 03/2020 (B.Vie) : LIMA negativity checks after turbulence, advection and microphysics budgets +!! B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1069,7 +1070,7 @@ SELECT CASE ( HCLOUD ) PRHODREF, PEXNREF, ZDZZ, & PRHODJ, PPABSM, PPABST, & NMOD_CCN, NMOD_IFN, NMOD_IMM, & - PTHM, PTHT, PRT, ZSVT, PW_ACT, & + PDTHRAD, PTHT, PRT, ZSVT, PW_ACT, & PTHS, PRS, ZSVS, & PINPRC, PINDEP, PINPRR, ZINPRI, PINPRS, PINPRG, PINPRH, & PEVAP3D ) @@ -1078,7 +1079,7 @@ SELECT CASE ( HCLOUD ) IF (OWARM) CALL LIMA_WARM(OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, & TPFILE, OCLOSE_OUT, KRR, PZZ, PRHODJ, & PRHODREF, PEXNREF, PW_ACT, PPABSM, PPABST, & - PTHM, PRCM, & + PDTHRAD, PRCM, & PTHT, PRT, ZSVT, & PTHS, PRS, ZSVS, & PINPRC, PINPRR, PINDEP, PINPRR3D, PEVAP3D ) -- GitLab