From 95088506eb88f497be88868d9a216c48a90fc04e Mon Sep 17 00:00:00 2001 From: Jimy Dudhia Date: Fri, 24 Jun 2016 20:21:56 +0000 Subject: [PATCH] TYPE: bug-fix KEYWORDS: SBM microphysics rainfall fix SOURCE: internal plus B. Lynn PURPOSE: Add rainfall from SBM microphysics to RAINNCV, SR, etc., needed for LSM DESCRIPTION OF CHANGES: SBM did not output RAINNCV and various other snow, graupel budgets, only RAINNC which provided accumulated rainfall, RAINNCV is critical for RAINBL that goes to the LSMs, so the bin microphysics rainfall was not going into the LSMs before this fix. LIST OF MODIFIED FILES : M phys/module_microphysics_driver.F M phys/module_mp_fast_sbm.F M phys/module_mp_full_sbm.F TESTS CONDUCTED: regtest passed all git-svn-id: https://svn-wrf-model.cgd.ucar.edu/trunk@9417 b0b5d27b-6f0f-0410-a2a3-cb1e977edc3d --- phys/module_microphysics_driver.F | 20 ++++++++- phys/module_mp_fast_sbm.F | 30 ++++++++++++-- phys/module_mp_full_sbm.F | 67 +++++++++++++++++++++++++++++-- 3 files changed, 109 insertions(+), 8 deletions(-) diff --git a/phys/module_microphysics_driver.F b/phys/module_microphysics_driver.F index 081d6fecf8..2547e12c54 100644 --- a/phys/module_microphysics_driver.F +++ b/phys/module_microphysics_driver.F @@ -858,7 +858,14 @@ SUBROUTINE microphysics_driver( & ,REFL_10CM=refl_10cm & ! added for radar reflectivity ,diagflag=diagflag & ! added for radar reflectivity ,do_radar_ref=do_radar_ref & ! added for radar reflectivity - ,RAINNC=rainnc) + ,RAINNC=rainnc & + ,RAINNCV=rainncv & + ,SNOWNC=snownc & + ,SNOWNCV=snowncv & + ,GRAUPELNC=graupelnc & + ,GRAUPELNCV=graupelncv & + ,SR=sr & + ) ! CASE (FULL_KHAIN_LYNN) @@ -917,7 +924,16 @@ SUBROUTINE microphysics_driver( & ,REFL_10CM=refl_10cm & ! added for radar reflectivity ,diagflag=diagflag & ! added for radar reflectivity ,do_radar_ref=do_radar_ref & ! added for radar reflectivity - ,RAINNC=rainnc) + ,RAINNC=rainnc & + ,RAINNCV=rainncv & + ,SNOWNC=snownc & + ,SNOWNCV=snowncv & + ,GRAUPELNC=graupelnc & + ,GRAUPELNCV=graupelncv & + ,HAILNC=hailnc & + ,HAILNCV=hailncv & + ,SR=sr & + ) #endif ! diff --git a/phys/module_mp_fast_sbm.F b/phys/module_mp_fast_sbm.F index cbcd6d3091..264ca13b34 100644 --- a/phys/module_mp_fast_sbm.F +++ b/phys/module_mp_fast_sbm.F @@ -15,7 +15,6 @@ MODULE module_mp_fast_sbm !----------------------------------------------------------------------- ! BARRY INTEGER,PRIVATE,PARAMETER :: REMSAT = 0 -! LOGICAL, PRIVATE,PARAMETER : : ICEPROCS=.FALSE.,BULKNUC=.TRUE. INTEGER, PRIVATE,PARAMETER :: IBREAKUP=1 INTEGER, PRIVATE,PARAMETER :: p_ff1i01=2, p_ff1i33=34,p_ff5i01=35,p_ff5i33=67,p_ff6i01=68,& & p_ff6i33=100,p_ff8i01=101,p_ff8i33=133 @@ -174,7 +173,7 @@ SUBROUTINE FAST_SBM (w,u,v,th_old, & & ims,ime, jms,jme, kms,kme, & & its,ite, jts,jte, kts,kte, & & refl_10cm, diagflag, do_radar_ref, & ! GT added for reflectivity calcs - & RAINNC ) + & RAINNC,RAINNCV,SNOWNC,SNOWNCV,GRAUPELNC,GRAUPELNCV,SR ) !----------------------------------------------------------------------- IMPLICIT NONE !----------------------------------------------------------------------- @@ -227,7 +226,7 @@ SUBROUTINE FAST_SBM (w,u,v,th_old, & REAL, INTENT(INOUT), DIMENSION(ims:ime, kms:kme, jms:jme):: & & th_phy REAL, INTENT(INOUT), DIMENSION(ims:ime,jms:jme), OPTIONAL :: & - & RAINNC + & RAINNC,RAINNCV,SNOWNC,SNOWNCV,GRAUPELNC,GRAUPELNCV,SR ! REAL, INTENT(INOUT), DIMENSION(ims:ime,jms:jme), OPTIONAL :: & ! REAL, DIMENSION(ims:ime,jms:jme), OPTIONAL :: & ! & LIQUEXP,ICEEXP,SNOWEXP,GRAUEXP,HAILEXP @@ -1271,11 +1270,17 @@ SUBROUTINE FAST_SBM (w,u,v,th_old, & DO j = jts,jte DO i = its,ite krr=0 + RAINNCV(I,J)=0. + SNOWNCV(I,J)=0. + GRAUPELNCV(I,J)=0. DO KR=p_ff1i01,p_ff1i33 krr=krr+1 DELTAW=VR1(KRR) RAINNC(I,J)=RAINNC(I,J) & & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XL(KRR)*XL(KRR) + RAINNCV(I,J)= RAINNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & & chem_new(I,1,J,KR)*XL(KRR)*XL(KRR) END DO KRR=0 @@ -1284,6 +1289,15 @@ SUBROUTINE FAST_SBM (w,u,v,th_old, & DELTAW=VR3(KRR) RAINNC(I,J)=RAINNC(I,J) & & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XS(KRR)*XS(KRR) + RAINNCV(I,J)=RAINNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XS(KRR)*XS(KRR) + SNOWNC(I,J)=SNOWNC(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XS(KRR)*XS(KRR) + SNOWNCV(I,J)= SNOWNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & & chem_new(I,1,J,KR)*XS(KRR)*XS(KRR) END DO KRR=0 @@ -1292,6 +1306,15 @@ SUBROUTINE FAST_SBM (w,u,v,th_old, & DELTAW=VR4(KRR) RAINNC(I,J)=RAINNC(I,J) & & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XG(KRR)*XG(KRR) + RAINNCV(I,J)=RAINNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XG(KRR)*XG(KRR) + GRAUPELNC(I,J)=GRAUPELNC(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XG(KRR)*XG(KRR) + GRAUPELNCV(I,J)= GRAUPELNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & & chem_new(I,1,J,KR)*XG(KRR)*XG(KRR) END DO do k=kts,kte @@ -1319,6 +1342,7 @@ SUBROUTINE FAST_SBM (w,u,v,th_old, & enddo endif ENDIF + SR(I,J) = (SNOWNCV(I,J)+GRAUPELNCV(I,J))/(RAINNCV(I,J)+1.e-12) ! print*, i,j,rainnc(i,j) END DO diff --git a/phys/module_mp_full_sbm.F b/phys/module_mp_full_sbm.F index b31dc84953..a8fc884167 100644 --- a/phys/module_mp_full_sbm.F +++ b/phys/module_mp_full_sbm.F @@ -15,7 +15,6 @@ MODULE module_mp_full_sbm !----------------------------------------------------------------------- ! BARRY INTEGER,PRIVATE,PARAMETER :: REMSAT = 0 -! LOGICAL, PRIVATE,PARAMETER : : ICEPROCS=.FALSE.,BULKNUC=.TRUE. INTEGER, PRIVATE,PARAMETER :: IBREAKUP=1 LOGICAL, PRIVATE,PARAMETER :: CONSERV=.TRUE. ! SET ONE = TRUE @@ -205,7 +204,7 @@ SUBROUTINE SBM (w,u,v,th_old, & & ims,ime, jms,jme, kms,kme, & & its,ite, jts,jte, kts,kte, & & refl_10cm, diagflag, do_radar_ref, & ! MO added for reflectivity calcs - & RAINNC ) + & RAINNC,RAINNCV,SNOWNC,SNOWNCV,GRAUPELNC,GRAUPELNCV,HAILNC,HAILNCV,SR ) !----------------------------------------------------------------------- IMPLICIT NONE !----------------------------------------------------------------------- @@ -289,7 +288,7 @@ SUBROUTINE SBM (w,u,v,th_old, & REAL, INTENT(INOUT), DIMENSION(ims:ime, kms:kme, jms:jme):: & & th_phy REAL, INTENT(INOUT), DIMENSION(ims:ime,jms:jme), OPTIONAL :: & - & RAINNC + & RAINNC,RAINNCV,SNOWNC,SNOWNCV,GRAUPELNC,GRAUPELNCV,HAILNC,HAILNCV,SR ! REAL, INTENT(INOUT), DIMENSION(ims:ime,jms:jme), OPTIONAL :: & ! REAL, DIMENSION(ims:ime,jms:jme), OPTIONAL :: & ! & LIQUEXP,ICEEXP,SNOWEXP,GRAUEXP,HAILEXP @@ -1675,11 +1674,18 @@ SUBROUTINE SBM (w,u,v,th_old, & DO j = jts,jte DO i = its,ite krr=0 + RAINNCV(I,J)=0. + SNOWNCV(I,J)=0. + GRAUPELNCV(I,J)=0. + HAILNCV(I,J)=0. DO KR=p_ff1i01,p_ff1i33 krr=krr+1 DELTAW=VR1(KRR) RAINNC(I,J)=RAINNC(I,J) & & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XL(KRR)*XL(KRR) + RAINNCV(I,J)= RAINNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & & chem_new(I,1,J,KR)*XL(KRR)*XL(KRR) END DO KRR=0 @@ -1688,6 +1694,15 @@ SUBROUTINE SBM (w,u,v,th_old, & DELTAW=VR3(KRR) RAINNC(I,J)=RAINNC(I,J) & & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XS(KRR)*XS(KRR) + RAINNCV(I,J)=RAINNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XS(KRR)*XS(KRR) + SNOWNC(I,J)=SNOWNC(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XS(KRR)*XS(KRR) + SNOWNCV(I,J)= SNOWNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & & chem_new(I,1,J,KR)*XS(KRR)*XS(KRR) END DO KRR=0 @@ -1696,6 +1711,15 @@ SUBROUTINE SBM (w,u,v,th_old, & DELTAW=VR4(KRR) RAINNC(I,J)=RAINNC(I,J) & & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XG(KRR)*XG(KRR) + RAINNCV(I,J)=RAINNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XG(KRR)*XG(KRR) + GRAUPELNC(I,J)=GRAUPELNC(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XG(KRR)*XG(KRR) + GRAUPELNCV(I,J)= GRAUPELNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & & chem_new(I,1,J,KR)*XG(KRR)*XG(KRR) END DO KRR=0 @@ -1704,6 +1728,15 @@ SUBROUTINE SBM (w,u,v,th_old, & DELTAW=VR2(KRR,1) RAINNC(I,J)=RAINNC(I,J) & & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XI(KRR,1)*XI(KRR,1) + RAINNCV(I,J)=RAINNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XI(KRR,1)*XI(KRR,1) + SNOWNC(I,J)=SNOWNC(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XI(KRR,1)*XI(KRR,1) + SNOWNCV(I,J)=SNOWNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & & chem_new(I,1,J,KR)*XI(KRR,1)*XI(KRR,1) END DO KRR=0 @@ -1712,6 +1745,15 @@ SUBROUTINE SBM (w,u,v,th_old, & DELTAW=VR2(KRR,2) RAINNC(I,J)=RAINNC(I,J) & & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XI(KRR,2)*XI(KRR,2) + RAINNCV(I,J)=RAINNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XI(KRR,2)*XI(KRR,2) + SNOWNC(I,J)=SNOWNC(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XI(KRR,2)*XI(KRR,2) + SNOWNCV(I,J)=SNOWNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & & chem_new(I,1,J,KR)*XI(KRR,2)*XI(KRR,2) END DO KRR=0 @@ -1720,6 +1762,15 @@ SUBROUTINE SBM (w,u,v,th_old, & DELTAW=VR2(KRR,3) RAINNC(I,J)=RAINNC(I,J) & & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XI(KRR,3)*XI(KRR,3) + RAINNCV(I,J)=RAINNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XI(KRR,3)*XI(KRR,3) + SNOWNC(I,J)=SNOWNC(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XI(KRR,3)*XI(KRR,3) + SNOWNCV(I,J)=SNOWNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & & chem_new(I,1,J,KR)*XI(KRR,3)*XI(KRR,3) END DO KRR=0 @@ -1728,6 +1779,15 @@ SUBROUTINE SBM (w,u,v,th_old, & DELTAW=VR5(KRR) RAINNC(I,J)=RAINNC(I,J) & & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XH(KRR)*XH(KRR) + RAINNCV(I,J)=RAINNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XH(KRR)*XH(KRR) + HAILNC(I,J)=HAILNC(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & + & chem_new(I,1,J,KR)*XH(KRR)*XH(KRR) + HAILNCV(I,J)= HAILNCV(I,J) & + & +10*(3./RO1BL(KRR))*COL*DT*DELTAW* & & chem_new(I,1,J,KR)*XH(KRR)*XH(KRR) END DO ! print*, i,j,rainnc(i,j) @@ -1758,6 +1818,7 @@ SUBROUTINE SBM (w,u,v,th_old, & enddo endif ENDIF + SR(I,J) = (SNOWNCV(I,J)+GRAUPELNCV(I,J)+HAILNCV(I,J))/(RAINNCV(I,J)+1.e-12) END DO END DO