Skip to content

Commit 9d763af

Browse files
authored
NSSL-MP scheme updates (#2170)
TYPE: enhancement KEYWORDS: NSSL microphysics scheme; rain breakup SOURCE: Ted Mansell (NOAA/NSSL) (@MicroTed ) DESCRIPTION OF CHANGES: - More accurate saturation mixing ratio calculation (iqvsopt=1) - Changed default droplet renucleation to irenuc=5, which allows extra nucleation at high supersaturation - A default explicit rain breakup for 3-moment rain (irainbreak=2) has been added to reduce excessive median drop diameters in rain cores, which in turn increases evaporation and cool pool temperature deficits (were too warm). - Imposed reflectivity conservation in graupel->hail conversion (ihlcnh=3) and Bigg freezing (both 2- and 3-moment) - Two optional diagnostic outputs for supersaturation (wrt liquid/ice) - Changed nssl_hail_on from max_dom array to singe value, because it can't be different for different domains, anyway. LIST OF MODIFIED FILES: Registry/Registry.EM_COMMON doc/README.NSSLmp dyn_em/solve_em.F phys/module_microphysics_driver.F phys/module_mp_nssl_2mom.F phys/module_physics_init.F TESTS CONDUCTED: 2. Are the Jenkins tests all passing? Yes. RELEASE NOTE: NSSL microphysics scheme updates include 1. An explicit rain breakup for 3-moment rain (addresses issue of cold pools being too warm and drops being too large in rain cores), 2. Improved reflectivity conservation for graupel->hail conversion and drop freezing, 3. More accurate saturation mixing ratio calculation, 4. New default droplet nucleation that controls excess supersaturation much better than previously (and default is to always predict the number of activated CCN). The update has been submitted to CCPP repository as well.
1 parent 9aa3979 commit 9d763af

7 files changed

+1462
-597
lines changed

Registry/Registry.EM_COMMON

+7-1
Original file line numberDiff line numberDiff line change
@@ -1612,6 +1612,9 @@ state real itype ikj misc 1 - hdu "i
16121612
state real itype_2 ikj misc 1 - hdu "ice_type2" "Diagnostic ice type cat 2 ISHMAEL microphysics" ""
16131613
state real itype_3 ikj misc 1 - hdu "ice_type3" "Diagnostic ice type cat 3 ISHMAEL microphysics" ""
16141614

1615+
state real ssat ikj dyn_em 1 - hdu "ssat" "Supersaturation wrt liquid" "%"
1616+
state real ssati ikj dyn_em 1 - hdu "ssati" "Supersaturation wrt ice" "%"
1617+
16151618
# LIGHTNING NUDGING
16161619
#state real ltg_dat ij misc 1 - r "ltg_dat" "gridded lightning data" "Flash per xkm x xkm per LAD_INT sec"
16171620
# END LIGHTNING NUDGING
@@ -2416,12 +2419,13 @@ rconfig real nssl_rho_qhl namelist,physics 1 900
24162419
rconfig real nssl_rho_qs namelist,physics 1 100. rh "Snow particle density" "" ""
24172420
rconfig integer nssl_icdx namelist,physics 1 6 rh "NSSL Graupel fall speed option" "" ""
24182421
rconfig integer nssl_icdxhl namelist,physics 1 6 rh "NSSL Hail fall speed option" "" ""
2419-
rconfig integer nssl_hail_on namelist,physics max_domains -1 rh "NSSL Hail flag" "" ""
2422+
rconfig integer nssl_hail_on namelist,physics 1 -1 rh "NSSL Hail flag" "" ""
24202423
rconfig integer nssl_ccn_on namelist,physics 1 -1 rh "NSSL CCN flag" "" ""
24212424
rconfig integer nssl_ccn_is_ccna namelist,physics 1 0 rh "NSSL flag that CCN is CCNA" "" ""
24222425
rconfig integer nssl_2moment_on namelist,physics 1 -1 rh "NSSL 2-moment flag" "" ""
24232426
rconfig integer nssl_3moment namelist,physics 1 0 rh "NSSL 3-moment flag" "" ""
24242427
rconfig integer nssl_density_on namelist,physics 1 -1 rh "NSSL graupel/hail density flag" "" ""
2428+
rconfig integer nssl_ssat_output namelist,physics 1 0 rh "NSSL ssat output flag" "" ""
24252429

24262430

24272431

@@ -3056,6 +3060,8 @@ package nssl_hail1m nssl_hail_on==2 - moist:qh;
30563060
package nssl_ccn_opt nssl_ccn_on==1 - scalar:qnn
30573061
package nssl_graupelvol nssl_density_on==1 - scalar:qvolg
30583062
package nssl_hailvol nssl_density_on==2 - scalar:qvolg,qvolh
3063+
package nssl_ssat_out nssl_ssat_output==1 - state:ssat
3064+
package nssl_ssati_out nssl_ssat_output==2 - state:ssat,ssati
30593065

30603066

30613067
package radar_refl compute_radar_ref==1 - state:refl_10cm,refd_max

doc/README.NSSLmp

+25-7
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@ Basic options in physics namelist:
2222
CCN concentration + options
2323

2424
The legacy options (17,19,21,22) still behave as before (for now), but going
25-
forward one should use mp_physics=18 with modifier flags:
25+
forward one should use mp_physics=18 with modifier flags. 2025 Update, however, sets nssl_ccn_on=1 by default (keeps supersaturation much more reasonable; except for single moment).
2626

2727
mp_physics
2828
= 22 ! NSSL scheme (2-moment) without hail
29-
Equivalent: mp=18, nssl_hail_on=0, nssl_ccn_on=0
30-
= 17 ! NSSL scheme (2-moment) with hail with constant background CCN
31-
concentration
32-
Equivalent: mp=18, nssl_ccn_on=0
29+
Equivalent: mp=18, nssl_hail_on=0, nssl_ccn_on=1
30+
= 17 ! NSSL scheme (2-moment) with hail is now the same as mp=18
31+
Equivalent: mp=18, nssl_ccn_on=1 <- must explicitly set nssl_ccn_on=0 to
32+
get old behavior
3333
= 19, NSSL 1-moment (7 class: qv,qc,qr,qi,qs,qg,qh; predicts graupel density)
34-
Equivalent: mp=18, nssl_2moment_on=0, nssl_ccn_on=0 (do no set nssl_hail_on)
34+
Equivalent: mp=18, nssl_2moment_on=0, nssl_ccn_on=1 (do no set nssl_hail_on)
3535
= 21, NSSL 1-moment, (6-class), very similar to Gilmore et al. 2004
3636
Equivalent: mp=18, nssl_2moment_on=0, nssl_hail_on=0, nssl_ccn_on=0,
3737
nssl_density_on=0
@@ -98,14 +98,23 @@ Cloud concentration nuclei (CCN) concentration is predicted as in Mansell et al.
9898
Droplet activation option method is controlled by the 'irenuc' option (internal to NSSL module). The default option (2) depletes CCN from the unactivated CCN field. A new option (7) instead counts the number of activated CCN (nucleated droplets) with the assumption of an initial constant CCN number mixing ratio. Option 7 better handles supersaturation at low CCN (e.g., maritime) concentrations by allowing extra droplet activation at high SS.
9999

100100
irenuc : (nssl_mp_params namelist)
101-
2 = ccn field is UNactivated aerosol (default; old droplet activation)
101+
2 = ccn field is UNactivated aerosol (old default; old droplet activation)
102102
Can switch to counting activated CCN with nssl_ccn_is_ccna=1
103+
5 = ccn field must be ACTVIATED aerosol (new default as of Feb. 2025)
104+
Must have nssl_ccn_on=1 for irenuc=5
105+
Allows activation beyond limit of nssl_cccn at higher supersaturation
106+
as an approximation of nucleation mode aerosol being activated. (Mainly
107+
an issue for low CCN concentration with deep updrafts.)
108+
If more strict limitation of activation is desired, use option 7.
103109
7 = ccn field must be ACTVIATED aerosol (new droplet activation)
104110
Must have nssl_ccn_on=1 for irenuc=7
105111

106112
Excessive size sorting (common in 2-moment schemes) is effectively controlled by an adaptive breakup method that prevents reflectivity growth by sedimentation (Mansell 2010). For 2-moment, infall=4 (default; nssl_mp_params namelist) is recommended. For 3-moment, infall only really applies to droplets, cloud ice, and snow.
107113

114+
3-moment active rain breakup (WRF 4.7.x, 2025): The 3-moment rain without explicit breakup can result in cold pools that are too warm and rain median diameters that are too large in rain cores. A bin-model-based breakup parameterization for rain was implemented to address these issues. Very low rain rates (sparse drops) are largely unaffected (e.g., maintains Zdr arc feature). The breakup coefficient (rainbreakfac) has a default value of 1.0e6 and can reasonably be increased up to around 2.5e6 if desired (nssl_mp_params). Active breakup is automatically turned on for 3-moment (irainbreak=2) but not for 2-moment. Option irainbreak=2 is not recommended for 2-moment, but a user may experiment with irainbreak=11, which breaks up large drops in the tail of the spectrum starting at D=draintail (default 10.e-3 m).
115+
108116
Graupel -> hail conversion: The parameter ihlcnh selects the method of converting graupel (hail embryos) to the hail category. The default value is -1 for automatic setting. The original option (ihlcnh=1) is replaced by a new option (ihlcnh=3) as of May 2023. ihlcnh=3 converts from the graupel spectrum itself based on the wet growth diameter, which generally results in fewer initiated hailstones with larger diameters (and larger mean diameter at the ground). If hail size seems excessive, try setting ihlcnh=1, which tends to generate higher hail number concentrations and thus smaller diameters.
117+
UPDATE (4.7.x/2025): The conversion has been updated to conserve reflectivity of the new hailstones compared to the graupel. This results in new hail that is smaller than previously but prevents spurious increases in reflectivity. (Active for both 2- and 3-moment)
109118

110119
The June 2023 (WRF 4.6) update introduces changes in the default options for graupel/hail fall speeds and collection efficiencies. The original fall speed options (icdx=3; icdxhl=3) from Mansell et al. (2010) are switched to the Milbrandt and Morrison (2013) fall speed curves (icdx=6; icdxhl=6). Because the fall speeds are generally a bit lower, a partially compensating increase in maximum collection efficiency is set by default: ehw0/ehlw0 increased to 0.9. One effect is somewhat reduced total precipitation and cold pool intensity for supercell storms.
111120

@@ -138,6 +147,15 @@ Snow self-collection (aggregation) has been curbed in the 4.6 version by reducin
138147
Snow reflectivity formerly had a default setting that turned on a crude bright band enhancement (iusewetsnow=1). This is now turned off by default (iusewetsnow=0)
139148
These snow parameters can be accessed through the nssl_mp_params namelist.
140149

150+
Saturation mixing ratio (WRF 4.7.x, 2025): New formulation (iqvsopt=1) is more consistent with other microphysics schemes. Previously (iqvsopt=0), the quantity e/(p-e) was approximated as e/p, but the new default restores the full equation and uses slightly more accurate (Bolton) coefficients for the saturation (wrt liquid) tables.
151+
152+
New options (Feb. 2025) (not enabled by default):
153+
- Option (nsplinter=1001) for ice crystal production by drop freezing/shattering (Sullivan et al. 2018)
154+
- Option (incwet = 1) to treat wet growth only for D > Dwet rather than all or nothing; results in greater hail production due to maintaining dry growth at D < Dwet
155+
156+
New diagnostic output option:
157+
nssl_ssat_output : (default 0); 1 = Supersaturation wrt liquid; 2 = also supersat. wrt ice
158+
141159
References:
142160

143161
Mansell, E. R., C. L. Ziegler, and E. C. Bruning, 2010: Simulated electrification

dyn_em/solve_em.F

+1
Original file line numberDiff line numberDiff line change
@@ -3729,6 +3729,7 @@ END SUBROUTINE CMAQ_DRIVER
37293729
& ,P8W=p8w ,P=p_phy ,PI_PHY=pi_phy &
37303730
& ,RHO=grid%rho ,SPEC_ZONE=grid%spec_zone &
37313731
& ,SR=grid%sr ,TH=th_phy &
3732+
& ,ssat=grid%ssat, ssati=grid%ssati &
37323733
& ,refl_10cm=grid%refl_10cm & ! hm, 9/22/09 for refl
37333734
& ,vmi3d=grid%vmi3d & ! for P3
37343735
& ,di3d=grid%di3d & ! for P3

phys/module_microphysics_driver.F

+6-2
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ SUBROUTINE microphysics_driver( &
111111
#endif
112112
,qnwfa2d, qnifa2d, qnbca2d & ! for water/ice-friendly/black carbon aerosols
113113
,qnocbb2d, qnbcbb2d & ! for biomass burning aerosols
114+
,ssat,ssati &
114115
,refl_10cm & ! HM, 9/22/09, add for refl
115116
,vmi3d & ! for P3
116117
,di3d & ! for P3
@@ -610,7 +611,7 @@ SUBROUTINE microphysics_driver( &
610611
!
611612
! Optional
612613
!
613-
REAL, OPTIONAL, DIMENSION( ims:ime , kms:kme, jms:jme ) , INTENT(OUT) :: refl_10cm
614+
REAL, OPTIONAL, DIMENSION( ims:ime , kms:kme, jms:jme ) , INTENT(OUT) :: refl_10cm,ssat,ssati
614615
REAL, OPTIONAL, DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(INOUT) :: & ! for ntu3m
615616
qdcn_curr,qtcn_curr,qccn_curr,qrcn_curr,qnin_curr, & ! for ntu3m
616617
fi_curr,fs_curr,vi_curr,vs_curr,vg_curr,ai_curr, & ! for ntu3m
@@ -729,7 +730,7 @@ SUBROUTINE microphysics_driver( &
729730
,f_qvoli,f_qaoli & ! for Jensen ISHMAEL
730731
,f_qvoli2,f_qaoli2 & ! for Jensen ISHMAEL
731732
,f_qi3,f_qni3,f_qvoli3,f_qaoli3 & ! for Jensen ISHMAEL
732-
,f_qnwfa, f_qnifa, f_qnbca ! Added by G. Thompson
733+
,f_qnwfa, f_qnifa, f_qnbca ! Added by G. Thompson
733734

734735

735736
LOGICAL, OPTIONAL, INTENT(IN) :: diagflag
@@ -2077,6 +2078,9 @@ SUBROUTINE microphysics_driver( &
20772078
GRPLNCV = GRAUPELNCV, &
20782079
SR=SR, &
20792080
dbz = refl_10cm, &
2081+
ssat3d = ssat, &
2082+
ssati = ssati, &
2083+
nssl_ssat_output = config_flags%nssl_ssat_output, &
20802084
#if ( WRF_CHEM == 1 )
20812085
WETSCAV_ON = config_flags%wetscav_onoff == 1, &
20822086
EVAPPROD=evapprod,RAINPROD=rainprod, &

0 commit comments

Comments
 (0)