Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add NSSL 2/3-moment cloud microphysics #1113

Open
wants to merge 34 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
2d96219
Initial implementation of NSSL 2-moment microphysics
MicroTed Aug 23, 2022
8669ec4
Added a package (nssl_moments) to turn on 3-moment version of NSSL m…
MicroTed Sep 12, 2022
5eebcc8
Limit ice crystal effective radius to 130um to stay within allowed R…
MicroTed Sep 12, 2022
80cab0e
Enable substepping for mp_nssl2m when dt_dyn is large (automaticall…
MicroTed Sep 13, 2022
4421a8b
Added new variables to LBC code in time_integration
MicroTed Sep 15, 2022
9f19611
Add support for compression for netcdf4
MicroTed Sep 30, 2022
c576543
Hack to set chunksizes along the nCells dimension. Chunksize is nCel…
MicroTed Oct 2, 2022
37e3be9
Added check in Makefile for HDF5 env. variable, which seems to be ne…
MicroTed Oct 3, 2022
29392b2
Fixed out-of-bounds problem with dimnames array
MicroTed Dec 14, 2022
628d38b
Add support for 3D reflectivity output (refl10cm) from Thompson scheme
MicroTed Jan 25, 2023
82ae39f
Merge branch 'nssl2m-deflate' of https://github.com/MicroTed/MPAS-Mod…
MicroTed Jan 25, 2023
bce5f23
Added mp_nssl2m to schemes that support calculated effective radii.
MicroTed Jun 7, 2023
9a12dbd
Merge branch 'release-v8.0.0' into nssl2m-deflate
MicroTed Jun 29, 2023
9b69530
Registry.xml : Add variables/packages and control flags for NSSL micr…
MicroTed Aug 23, 2023
806ffab
Merge remote-tracking branch 'origin/hotfix-v8.0.1' into v801-nssl3m
MicroTed Aug 23, 2023
782f2f7
Merge branch 'develop' into dev-nssl3m
MicroTed Aug 23, 2023
4b1f7bb
Added surface accumulation/rate for hail (separate from graupel)
MicroTed Aug 23, 2023
a5fc16f
Reverted 2 files that had changes to enable variable compression wit…
MicroTed Aug 31, 2023
f574fcb
Formatting updates
MicroTed Jan 19, 2024
d15f47e
Merge remote-tracking branch 'origin/develop' into dev-nssl3m
MicroTed Jan 19, 2024
a2653eb
mpas_atm_time_integration.F : add lines to get indices for added sca…
MicroTed Feb 7, 2024
11be8ae
Merge remote-tracking branch 'origin/hotfix-v8.2.1' into dev-nssl3m
MicroTed Aug 22, 2024
c9da5f1
In core_atmosphere:
MicroTed Aug 24, 2024
6a53ac8
Merge branch 'dev-nssl3m' of https://github.com/MicroTed/MPAS-Model i…
MicroTed Aug 24, 2024
5088057
mpas_atmphys_control.F : fixed whitespace
MicroTed Aug 24, 2024
62f1bcb
ccpp_kind_types.F : removed extra line break
MicroTed Aug 24, 2024
80ce2d0
Registry.xml : Removed nssl2m (for now) from tendencies; some logic…
MicroTed Aug 28, 2024
bf686a6
mpas_atmphys_driver_microphysics.F: Pass value for f_cn to NSSL mic…
MicroTed Sep 6, 2024
77be86f
module_mp_nssl_2mom.F: set default droplet nucleation to option 5 (i…
MicroTed Sep 6, 2024
ded92f2
module_mp_nssl_2mom.F : Reduced max hail diam; Relaxed high Vt warning
MicroTed Sep 8, 2024
e5a275a
mpas_atmphys_packages.F : add write statements for NSSL mp config va…
MicroTed Sep 11, 2024
d1c66bb
module_mp_nssl_2mom.F : Fixed out of bounds bug in the sedimentation
MicroTed Sep 13, 2024
b450aef
Fixed default value of config_nssl_cccn; Fixed issue when CCN predic…
MicroTed Sep 29, 2024
25f57e9
Reverted auto setting of ihlcnh for 2-moment that was meant for testing
MicroTed Oct 2, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -759,6 +759,10 @@ endif
LIBS += $(NCLIB)
endif

ifneq "$(HDF5)" ""
LIBS += -L$(HDF5)/lib
LIBS += -lhdf5_hl -lhdf5 -lm -lz
endif

ifneq "$(PNETCDF)" ""
ifneq ($(wildcard $(PNETCDF)/lib/libpnetcdf.*), )
Expand Down
122 changes: 122 additions & 0 deletions docs/README.NSSLmp
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
Some background information and usage tips for the NSSL microphysics scheme.

NOTE ON ADVECTION: The advection scheme in MPAS can result in noisy values at the edges of reflectivity cores. This is because the errors in the moments for number and mass are mismatched and can end up with small amounts of large hydrometeors. Some reduction can be achieved by setting config_coef_3rd_order to a value closer to 1 (e.g., 0.9 vs. default value of 0.25) to reduce the 4th-order component.

DESCRIPTION:

The NSSL bulk microphysical parameterization scheme describes form and phase changes among a range of liquid and ice hydrometeors, as described in Mansell et al. (2010) and Mansell and Ziegler (2013). It is designed with deep (severe) convection in mind at grid spacings of up to 4 km, but can also be run at larger grid spacing as needed for nesting etc. It is also able to capture non-severe and winter weather. The scheme predicts the mass mixing ratio and number concentration of cloud droplets, raindrops, cloud ice crystals (columns), snow particles (including large crystals and aggregates), graupel, and (optionally) hail. The 3-moment option additionally predicts the 6th moments of rain, graupel, and hail which in turn predicts the PSD shape parameters (set config_nssl_3moment=.true.). The hail variables can be turned off via the config_nssl_ccn_on flag.

Although the scheme can be run for large scales, it is more suited for dx <= 4km (e.g., regional MPAS). The scheme uses the dt_microp parameter for sub-stepping the microphysics to maintain stability for large time steps (for dt > 75s). This has not been thoroughly tested in MPAS but is stable in FV3 regression tests. It is not otherwise 'scale-aware' currently.

To select NSSL in the physics namelist:
config_microp_scheme = 'mp_nssl2m' ! NSSL scheme (2-moment) with hail and predicted
CCN concentration + options

Option flags/parameters :

config_nssl_3moment : (logical) default value of .false., setting to .true. adds 6th moment for rain, graupel (i.e., 3-moment ) and hail (Only needed for turning 3-moment on)

config_nssl_ccn_on : (logical) predicted CCN concentration: default is on (.true.)

config_nssl_hail_on : (logical) If not set explicitly, it is set automatically to true. Set to false to run with graupel only (non-severe deep convection)


Note: Graupel/hail density prediction is currently always turned on, and the CCN category is always treated as the number of *activated* CCN.

Other namelist options and default values (also "physics" namelist)
config_nssl_alphar = 0. ! (real) PSD shape parameter for rain (2-moment)
config_nssl_alphah = 0. ! (real) PSD shape parameter for graupel (2-moment)
config_nssl_alphahl = 1. ! (real) PSD shape parameter for hail (2-moment)
config_nssl_ehw0 = 0.9 ! (real) Maximum graupel-droplet collection efficiency
config_nssl_ehlw0 = 0.9 ! (real) Maximum hail-droplet collection efficiency


config_nssl_cccn - (real) Initial background concentration of cloud condensation
nuclei (per m^3 at sea level)
0.25e+9 maritime
0.5e+9 "low-med" continental
0.8e+9 "low-med" continental (DEFAULT)
1.0e+9 "med-high" continental
1.5e+09 - high-extreme continental CCN)
Larger values run a risk of unrealistically weak
precipitation production
Value sets the concentration at MSL, and an initially
homogeneous number mixing ratio (ccn/1.225) is assumed throughout
the depth of the domain. The droplet concentration near cloud base
will be less than nssl_cccn because of the well-mixed assumption,
so if a target Nc is desired, set nssl_cccn higher by a factor of
1.225/(air density at cloud base).

The graupel and hail particle densities are also calculated by predicting the total particle volume. The graupel category therefore emulates a range of characteristics from high-density frozen drops (includes small hail) to low-density graupel (from rimed ice crystals/snow) in its size and density spectrum. The hail category is designed to simulate larger hail sizes. Hail is only produced from higher-density large graupel that is actively riming (esp. in wet growth).

Hydrometeor size distributions are assumed to follow a gamma functional form. Microphysical processes include cloud droplet and cloud ice nucleation, condensation, deposition, evaporation, sublimation, collection–coalescence, variable-density riming, shedding, ice multiplication, cloud ice aggregation, freezing and melting, and conversions between hydrometeor categories.

Cloud concentration nuclei (CCN) concentration is predicted as in Mansell et al. (2010) with a bulk activation spectrum approximating small aerosols. (New option nssl_ccn_is_ccna=1 instead predicts the number of activated CCN.) The model tracks the number of unactivated CCN, and the local CCN concentration is depleted as droplets are activated, either at cloud base or in cloud. The CCN are subjected to advection and subgrid turbulent mixing but have no other interactions with hydrometeors; for example, scavenging by raindrops is omitted. CCN are restored by droplet evaporation and by a gradual regeneration when no hydrometeors are present (ccntimeconst). Aerosol sensitivity is enhanced by explicitly treating droplet condensation instead of using a saturation adjustment. Supersaturation (within reason) is allowed to persist in updraft with low droplet concentration.

Droplet activation option method is controlled by the 'irenuc' option (internal to NSSL module). Default (old) option (2) depletes CCN from unactivated CCN field. 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.

irenuc : (nssl_mp_params namelist)
2 = ccn field is UNactivated aerosol (default; old droplet activation)
Can switch to counting activated CCN with nssl_ccn_is_ccna=1
7 = ccn field must be ACTVIATED aerosol (new droplet activation)
Must have nssl_ccn_on=1 for irenuc=7

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.

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).

June 2023 (WRF 4.5.x) 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.

(nssl_mp_params namelist)
icdx - fall speed option for graupel (was 3, now is 6)
icdxhl - fall speed option for hail (was 3, now is 6)
ehw0,ehlw0 - Maximim droplet collection efficiencies for graupel (ehw0=0.75, now 0.9)
and hail (ehlw0=0.75, now 0.9)

In summary, to get something closer to previous behavior, use the following:

&nssl_mp_params
icdx = 3
icdxhl = 3
ehw0 = 0.5
ehlw0 = 0.75
ihlcnh = 1
/

Snow Aggregation and reflectivity:

Snow self-collection (aggregation) has been curbed in the 4.5.x version by reducing the collision efficiency and the temperature range over which aggregation is allowed (esstem):

ess0 = 0.5 ! collision efficiency, reduced from 1 to 0.5
esstem1 = -15. ! was -25. ! lower temperature where snow aggregation turns on
esstem2 = -10. ! was -20. ! higher temperature for linear ramp of ess from zero at esstem1 to formula value at esstem2

If desired, some further reduction in aggregation can be gained from setting iessopt=4, which reduces ess0 to 0.1 (80% reduction) in conditions of ice subsaturation (RHice < 100%).
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)
These snow parameters can be accessed through the nssl_mp_params namelist.

References:

Mansell, E. R., C. L. Ziegler, and E. C. Bruning, 2010: Simulated electrification
of a small thunderstorm with two-moment bulk microphysics. J. Atmos. Sci.,
67, 171-194, doi:10. 1175/2009JAS2965.1.

Mansell, E. R. and C. L. Ziegler, 2013: Aerosol effects on simulated storm
electrification and precipitation in a two-moment bulk microphysics model.
J. Atmos. Sci., 70 (7), 2032-2050, doi:10.1175/JAS-D-12-0264.1.

Mansell, E. R., D. T. Dawson, J. M. Straka, Bin-emulating Hail Melting in 3-moment
bulk microphysics, J. Atmos. Sci., 77, 3361-3385, doi: 10.1175/JAS-D-19-0268.1

Ziegler, C. L., 1985: Retrieval of thermal and microphysical variables in observed
convective storms. Part I: Model development and preliminary testing. J.
Atmos. Sci., 42, 1487-1509.

Sedimentation reference:

Mansell, E. R., 2010: On sedimentation and advection in multimoment bulk microphysics.
J. Atmos. Sci., 67, 3084-3094, doi:10.1175/2010JAS3341.1.




Loading