Skip to content

Commit

Permalink
RRFS-MPAS: read-in and output graupel number concentration (#1112)
Browse files Browse the repository at this point in the history
* Updates to read-in and output graupel number concentration on native levels

* Adding capability to output graupel number concentration on isobaric levels

* add orion rt log

* add hercules rt log

* add hera rt log

---------

Co-authored-by: gspetro-NOAA <[email protected]>
  • Loading branch information
jaymes-kenyon and gspetro-NOAA authored Jan 17, 2025
1 parent 965c6e3 commit 3e32f04
Show file tree
Hide file tree
Showing 12 changed files with 318 additions and 173 deletions.
16 changes: 16 additions & 0 deletions parm/post_avblflds.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8495,5 +8495,21 @@
<scale>3.0</scale>
</param>

<param>
<post_avblfldidx>1023</post_avblfldidx>
<shortname>NCGRAUP_ON_HYBRID_LVL</shortname>
<pname>SPNCG</pname>
<fixed_sfc1_type>hybrid_lvl</fixed_sfc1_type>
<scale>3.0</scale>
</param>

<param>
<post_avblfldidx>1024</post_avblfldidx>
<shortname>NCGRAUP_ON_ISOBARIC_SFC</shortname>
<pname>SPNCG</pname>
<fixed_sfc1_type>isobaric_sfc</fixed_sfc1_type>
<scale>3.0</scale>
</param>

</post_avblflds>
</postxml>
44 changes: 43 additions & 1 deletion parm/postxconfig-NT-rrfs_mpas.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
3
22
23
16
146
WRFTWO
Expand Down Expand Up @@ -7484,6 +7484,48 @@ hybrid_lvl
?
?
?
1023
NCGRAUP_ON_HYBRID_LVL
?
1
tmpl4_0
SPNCG
?
?
hybrid_lvl
0
?
59
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
?
0
?
0
?
?
?
?
0
0.0
0
0.0
?
0
0.0
0
0.0
0
0.0
0
0.0
1
3.0
0
0
0
?
?
?
766
NCWFA_ON_HYBRID_LVL
?
Expand Down
8 changes: 8 additions & 0 deletions parm/rrfs_mpas_postcntrl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1136,6 +1136,14 @@
<scale>5.0</scale>
</param>

<param>
<shortname>NCGRAUP_ON_HYBRID_LVL</shortname>
<level>1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.</level>
<scale>3.0</scale>
</param>

<param>
<shortname>NCWFA_ON_HYBRID_LVL</shortname>
<level>1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Expand Down
3 changes: 3 additions & 0 deletions sorc/ncep_post.fd/ALLOCATE_ALL.f
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
! and 2D diag. output (d2d_chem) for GEFS-Aerosols and CCPP-Chem model.
!! - 23-08-16 Yali Mao - Add CIT (Convectively-Induced Turbulence) for GTG4
!! - 23-08-16 Yali Mao - Make it optional to allocate GTG related fields only when gtg_on
!! - 25-01-13 Jaymes Kenyon - Add graupel number concentration (QQNG)

!! OUTPUT FILES:
!! - STDOUT - RUN TIME STANDARD OUT.
!!
Expand Down Expand Up @@ -155,6 +157,7 @@ SUBROUTINE ALLOCATE_ALL()
allocate(QQNW(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
allocate(QQNI(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
allocate(QQNR(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
allocate(QQNG(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
allocate(QQNWFA(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
allocate(QQNIFA(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
allocate(TAOD5503D(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
Expand Down
2 changes: 2 additions & 0 deletions sorc/ncep_post.fd/DEALLOCATE.f
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
!> 2023-04-04 |Li(Kate Zhang)| Add namelist optoin for CCPP-Chem
!(UFS-Chem) and 2D diag. output (d2d_chem) for GEFS-Aerosols and CCPP-Chem model.
!> 2023-08-16 | Yali Mao | Add CIT to GTG fields. Add namelist optoin of gtg_on
!> 2025-01-13 | Jaymes Kenyon| Add graupel number conentration (QQNG)
!> @author Jim Tuccillo IBM @date 2000-01-06
SUBROUTINE DE_ALLOCATE

Expand Down Expand Up @@ -81,6 +82,7 @@ SUBROUTINE DE_ALLOCATE
deallocate(QQNW)
deallocate(QQNI)
deallocate(QQNR)
deallocate(QQNG)
deallocate(QQNWFA)
deallocate(QQNIFA)
deallocate(TAOD5503D)
Expand Down
16 changes: 15 additions & 1 deletion sorc/ncep_post.fd/INITPOST_MPAS.F
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,15 @@
!> 2024-10-28 | Jaymes Kenyon| Removing outdated processing for various "imp_physics" cases
!> 2024-12-05 | Jaymes Kenyon| Temporary hard coding of imp_physics=8 for RRFS-MPAS (required for
!> | brightness-temperature calculations in subroutine CALRAD_WCLOUD)
!> 2025-01-13 | Jaymes Kenyon| Add graupel number concentration (QQNG)
!>
!> @author Jaymes Kenyon (GSL) @date 2024-08-14

SUBROUTINE INITPOST_MPAS

use vrbls4d, only: dust, smoke
use vrbls3d, only: t, u, uh, v, vh, wh, q, pmid, t, omga, pint, alpint, &
qqr, qqs, qqi, qqg, qqnw, qqni,qqnr, cwm, qqw, qqi, qqr, qqs, extcof55,&
qqr, qqs, qqi, qqg, qqnw, qqni, qqnr, qqng, cwm, qqw, qqi, qqr, qqs, extcof55,&
f_ice, f_rain, f_rimef, q2, zint, zmid, ttnd, cfr, cfr_raw, qc_bl, REF_10CM, &
qqnwfa,qqnifa,taod5503d,aextc55
use vrbls2d, only: tmax, qrmax, htop, hbot, cuppt, fis, cfrach, cfracl, &
Expand Down Expand Up @@ -576,6 +577,19 @@ SUBROUTINE INITPOST_MPAS
end do
end do

VarName='QNGRAUP'
call getVariable(fileName,DateStr,DataHandle,VarName,DUM3D, &
IM+1,1,JM+1,LM+1,IM, JS,JE,LM)
do l = 1, lm
do j = jsta_2l, jend_2u
do i = 1, im
qqng ( i, j, l ) = dum3d ( i, j, l )
!if(i==im/2.and.j==(jsta+jend)/2)print*,'sample QQNG= ', &
! i,j,l,QQNG ( i, j, l )
end do
end do
end do

! For aerosol aware microphyscis
VarName='QNCLOUD'
call getVariable(fileName,DateStr,DataHandle,VarName,DUM3D, &
Expand Down
32 changes: 30 additions & 2 deletions sorc/ncep_post.fd/MDL2P.f
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
!> 2024-04-23 | E James | Adding smoke emissions (ebb) from RRFS
!> 2024-09-23 | K Asmar | Add velocity potential and streamfunction from wind vectors
!> 2024-12-12 | J Meng | Adding UUtah 2024 SLR algorithm
!> 2025-01-17 | J Kenyon | Add graupel number concentration (QQNG)
!>
!> @author T Black W/NP2 @date 1999-09-23
!--------------------------------------------------------------------------------------
Expand All @@ -55,7 +56,7 @@ SUBROUTINE MDL2P(iostatusD3D)
use vrbls4d, only: DUST, SMOKE, FV3DUST, COARSEPM, EBB
use vrbls3d, only: PINT, O3, PMID, T, Q, UH, VH, WH, OMGA, Q2, CWM, &
QQW, QQI, QQR, QQS, QQG, DBZ, F_RIMEF, TTND, CFR, &
QQNW, QQNI, QQNR, RLWTT, RSWTT, VDIFFTT, TCUCN, &
QQNW, QQNI, QQNR, QQNG, RLWTT, RSWTT, VDIFFTT, TCUCN, &
TCUCNS, TRAIN, VDIFFMOIS, DCONVMOIS, SCONVMOIS,NRADTT,&
O3VDIFF, O3PROD, O3TNDY, MWPV, UNKNOWN, VDIFFZACCE, &
ZGDRAG, CNVCTVMMIXING, VDIFFMACCE, MGDRAG, &
Expand Down Expand Up @@ -128,7 +129,7 @@ SUBROUTINE MDL2P(iostatusD3D)
! QQNR1 - number concentration of rain particles
!
REAL, dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: C1D, QW1, QI1, QR1, QS1, QG1, DBZ1 &
, FRIME, RAD, HAINES, QQNW1, QQNI1, QQNR1
, FRIME, RAD, HAINES, QQNW1, QQNI1, QQNR1, QQNG1
REAL SDUMMY(IM,2)
Expand Down Expand Up @@ -308,6 +309,7 @@ SUBROUTINE MDL2P(iostatusD3D)
QQNW1(I,J) = SPVAL
QQNI1(I,J) = SPVAL
QQNR1(I,J) = SPVAL
QQNG1(I,J) = SPVAL

if (gtg_interpolation) then
GTGSL(I,J) = SPVAL
Expand Down Expand Up @@ -407,6 +409,8 @@ SUBROUTINE MDL2P(iostatusD3D)
QQNI1(I,J) = MAX(QQNI1(I,J),zero) ! Ice number concentration
IF(QQNR(I,J,1) < SPVAL) QQNR1(I,J) = QQNR(I,J,1)
QQNR1(I,J) = MAX(QQNR1(I,J),zero) ! Rain number concentration
IF(QQNG(I,J,1) < SPVAL) QQNG1(I,J) = QQNG(I,J,1)
QQNG1(I,J) = MAX(QQNG1(I,J),zero) ! Graupel number concentration
IF(TTND(I,J,1) < SPVAL) RAD(I,J) = TTND(I,J,1)
IF(O3(I,J,1) < SPVAL) O3SL(I,J) = O3(I,J,1)
IF(CFR(I,J,1) < SPVAL) CFRSL(I,J) = CFR(I,J,1)
Expand Down Expand Up @@ -645,6 +649,10 @@ SUBROUTINE MDL2P(iostatusD3D)
QQNR1(I,J) = QQNR(I,J,LL) + (QQNR(I,J,LL)-QQNR(I,J,LL-1))*FACT
QQNR1(I,J) = MAX(QQNR1(I,J),zero) ! Rain number concentration
IF(QQNG(I,J,LL) < SPVAL .AND. QQNG(I,J,LL-1) < SPVAL) &
QQNG1(I,J) = QQNG(I,J,LL) + (QQNG(I,J,LL)-QQNG(I,J,LL-1))*FACT
QQNG1(I,J) = MAX(QQNG1(I,J),zero) ! Graupel number concentration
IF(TTND(I,J,LL) < SPVAL .AND. TTND(I,J,LL-1) < SPVAL) &
RAD(I,J) = TTND(I,J,LL) + (TTND(I,J,LL)-TTND(I,J,LL-1))*FACT
Expand Down Expand Up @@ -916,6 +924,7 @@ SUBROUTINE MDL2P(iostatusD3D)
QQNW1(I,J) = 0.
QQNI1(I,J) = 0.
QQNR1(I,J) = 0.
QQNG1(I,J) = 0.
RAD(I,J) = 0.
O3SL(I,J) = O3(I,J,LLMH)
IF(CFR(I,J,1)<SPVAL)CFRSL(I,J) = 0.
Expand Down Expand Up @@ -2193,6 +2202,25 @@ SUBROUTINE MDL2P(iostatusD3D)
ENDIF
ENDIF
!
!--- Number concentration for graupel on isobaric surfaces
IF (IGET(1024) > 0) THEN
IF (LVLS(LP,IGET(1024)) > 0) THEN
if(grib == 'grib2')then
cfld = cfld + 1
fld_info(cfld)%ifld=IAVBLFLD(IGET(1024))
fld_info(cfld)%lvl=LVLSXML(LP,IGET(1024))
!$omp parallel do private(i,j,ii,jj)
do j=1,jend-jsta+1
jj = jsta+j-1
do i=1,iend-ista+1
ii=ista+i-1
datapd(i,j,cfld) = QQNG1(ii,jj)
enddo
enddo
endif
ENDIF
ENDIF
!
!--- Temperature tendency by all radiation: == ested by AFWA
IF (IGET(294) > 0) THEN
IF (LVLS(LP,IGET(294)) > 0) THEN
Expand Down
32 changes: 31 additions & 1 deletion sorc/ncep_post.fd/MDLFLD.f
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
!! 24-02-20 | J Kenyon | Apply the PBLHGUST-related calculations to RRFS
!! 24-04-23 | E James| Adding smoke emissions (ebb) from RRFS
!! 24-10-07 | H Lin | Change inputs for gtg_algo from averaged (sfcshx, sfclhx) to instantaenous (twbs, qwbs)
!! 25-01-13 | J Kenyon | Add graupel number concentration (QQNG)
!!
!! USAGE: CALL MDLFLD
!! INPUT ARGUMENT LIST:
Expand Down Expand Up @@ -104,7 +105,7 @@ SUBROUTINE MDLFLD
coarsepm, ebb
use vrbls3d, only: zmid, t, pmid, q, cwm, f_ice, f_rain, f_rimef, qqw, qqi,&
qqr, qqs, cfr, cfr_raw, dbz, dbzr, dbzi, dbzc, qqw, nlice, nrain, qqg, qqh, zint,&
qqni, qqnr, qqnw, qqnwfa, qqnifa, uh, vh, mcvg, omga, wh, q2, ttnd, rswtt, &
qqni, qqnr, qqng, qqnw, qqnwfa, qqnifa, uh, vh, mcvg, omga, wh, q2, ttnd, rswtt, &
rlwtt, train, tcucn, o3, rhomid, dpres, el_pbl, pint, icing_gfip, icing_gfis, &
catedr,mwt,gtg,cit, REF_10CM, avgpmtf, avgozcon

Expand Down Expand Up @@ -1199,6 +1200,35 @@ SUBROUTINE MDLFLD
endif
ENDIF
ENDIF
!
!--- QNGRAUP ON MDL SURFACE
!
IF (IGET(1023) > 0) THEN
IF (LVLS(L,IGET(1023)) > 0)THEN
LL=LM-L+1
!$omp parallel do private(i,j)
DO J=JSTA,JEND
DO I=ista,iend
if(QQNG(I,J,LL) < 1.e-8) QQNG(I,J,LL) = 0.
GRID1(I,J) = QQNG(I,J,LL)
ENDDO
ENDDO
if(grib=="grib2" )then
cfld=cfld+1
fld_info(cfld)%ifld=IAVBLFLD(IGET(1023))
fld_info(cfld)%lvl=LVLSXML(L,IGET(1023))
!$omp parallel do private(i,j,ii,jj)
do j=1,jend-jsta+1
jj = jsta+j-1
do i=1,iend-ista+1
ii = ista+i-1
datapd(i,j,cfld) = GRID1(ii,jj)
enddo
enddo
endif
ENDIF
ENDIF
! QNWFA ON MDL SURFACE --tgs
!
IF (IGET(766) > 0) THEN
Expand Down
2 changes: 2 additions & 0 deletions sorc/ncep_post.fd/VRBLS3D_mod.f
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
!> 2015-07-02 | SARAH LU | MODIFIED TO INCLUDE SCATTERING AEROSOL OPTICAL THICKNESS
!> 2023-03-22 | WM LEWIS | ADDED EFFECTIVE RADIUS ARRAYS
!> 2023-08-16 | Yali Mao | Add CIT (Convectively-Induced Turbulence) for GTG4
!> 2025-01-13 | J Kenyon | Add graupel number concentration (QQNG)
module vrbls3d
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
implicit none
Expand Down Expand Up @@ -46,6 +47,7 @@ module vrbls3d
,QQNW(:,:,:) & !< cloud water number concentration
,QQNI(:,:,:) & !< ice number concentration
,QQNR(:,:,:) & !< rain number concentration
,QQNG(:,:,:) & !< graupel number concentration
,QC_BL(:,:,:) & !< cloud water mixing ratio in PBL schemes
,QRIMEF(:,:,:) & !< rime factor * ice mixing ratio ?
,CFR(:,:,:) & !< Instantaneous 3d cloud fraction
Expand Down
Loading

0 comments on commit 3e32f04

Please sign in to comment.