-
Notifications
You must be signed in to change notification settings - Fork 400
Add NSSL 2/3-moment cloud microphysics #1113
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
Open
MicroTed
wants to merge
55
commits into
MPAS-Dev:develop
Choose a base branch
from
MicroTed:dev-nssl3m
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
55 commits
Select commit
Hold shift + click to select a range
2d96219
Initial implementation of NSSL 2-moment microphysics
MicroTed 8669ec4
Added a package (nssl_moments) to turn on 3-moment version of NSSL m…
MicroTed 5eebcc8
Limit ice crystal effective radius to 130um to stay within allowed R…
MicroTed 80cab0e
Enable substepping for mp_nssl2m when dt_dyn is large (automaticall…
MicroTed 4421a8b
Added new variables to LBC code in time_integration
MicroTed 9f19611
Add support for compression for netcdf4
MicroTed c576543
Hack to set chunksizes along the nCells dimension. Chunksize is nCel…
MicroTed 37e3be9
Added check in Makefile for HDF5 env. variable, which seems to be ne…
MicroTed 29392b2
Fixed out-of-bounds problem with dimnames array
MicroTed 628d38b
Add support for 3D reflectivity output (refl10cm) from Thompson scheme
MicroTed 82ae39f
Merge branch 'nssl2m-deflate' of https://github.com/MicroTed/MPAS-Mod…
MicroTed bce5f23
Added mp_nssl2m to schemes that support calculated effective radii.
MicroTed 9a12dbd
Merge branch 'release-v8.0.0' into nssl2m-deflate
MicroTed 9b69530
Registry.xml : Add variables/packages and control flags for NSSL micr…
MicroTed 806ffab
Merge remote-tracking branch 'origin/hotfix-v8.0.1' into v801-nssl3m
MicroTed 782f2f7
Merge branch 'develop' into dev-nssl3m
MicroTed 4b1f7bb
Added surface accumulation/rate for hail (separate from graupel)
MicroTed a5fc16f
Reverted 2 files that had changes to enable variable compression wit…
MicroTed f574fcb
Formatting updates
MicroTed d15f47e
Merge remote-tracking branch 'origin/develop' into dev-nssl3m
MicroTed a2653eb
mpas_atm_time_integration.F : add lines to get indices for added sca…
MicroTed 11be8ae
Merge remote-tracking branch 'origin/hotfix-v8.2.1' into dev-nssl3m
MicroTed c9da5f1
In core_atmosphere:
MicroTed 6a53ac8
Merge branch 'dev-nssl3m' of https://github.com/MicroTed/MPAS-Model i…
MicroTed 5088057
mpas_atmphys_control.F : fixed whitespace
MicroTed 62f1bcb
ccpp_kind_types.F : removed extra line break
MicroTed 80ce2d0
Registry.xml : Removed nssl2m (for now) from tendencies; some logic…
MicroTed bf686a6
mpas_atmphys_driver_microphysics.F: Pass value for f_cn to NSSL mic…
MicroTed 77be86f
module_mp_nssl_2mom.F: set default droplet nucleation to option 5 (i…
MicroTed ded92f2
module_mp_nssl_2mom.F : Reduced max hail diam; Relaxed high Vt warning
MicroTed e5a275a
mpas_atmphys_packages.F : add write statements for NSSL mp config va…
MicroTed d1c66bb
module_mp_nssl_2mom.F : Fixed out of bounds bug in the sedimentation
MicroTed b450aef
Fixed default value of config_nssl_cccn; Fixed issue when CCN predic…
MicroTed 25f57e9
Reverted auto setting of ihlcnh for 2-moment that was meant for testing
MicroTed 7d4db36
core_atmosphere/Registry.xml : Fixed default value of nssl_cccn
MicroTed 6b078a5
Merge branch 'dev-nssl3m' of https://github.com/MicroTed/MPAS-Model i…
MicroTed 90bf977
Reset change in Registry.xml
MicroTed ec369ca
Merge remote-tracking branch 'upstream/hotfix-v8.2.3' into v8.2.3-nssl
MicroTed 26fc6ef
module_mp_nssl_2mom.F : Update for better reflectivity conservation …
MicroTed 1a07166
Merge remote-tracking branch 'origin/develop' into dev-nssl3m
MicroTed 8d7c872
module_mp_nssl_2mom.F: Update a comment
MicroTed 6a7a06f
Merge remote-tracking branch 'upstream/develop' into dev-nssl3m
MicroTed 996c441
A couple fixes for the refl10cm array
MicroTed c2d1638
core_atmosphere/Registry.xml : add LBC arrays for reflectivity moments
MicroTed 601f60b
Merge remote-tracking branch 'upstream/develop' into dev-nssl3m
MicroTed 40ba788
NSSL microphysics:
MicroTed 2b54835
Fixed case error in src/core_atmosphere/physics/Makefile
MicroTed 2eef643
Update Externals.cfg to point to minor update of NSSL-MP
MicroTed 840ef2d
Merge remote-tracking branch 'upstream/develop' into dev-nssl3m
MicroTed f64de80
11/24/2025:
MicroTed ad5b97a
mpas_atmphys_todynamics.F : For MYNN, apply tendency for 'nc' (drop…
MicroTed ee6a5e1
mpas_atmphys_driver_pbl.F : Separate f_nc from aerosol flags
MicroTed 563ad41
mpas_atmphys_driver_microphysics.F : Fix an issue in the NSSL2M ini…
MicroTed 21c1e9f
Merge branch 'develop' into dev-nssl3m
MicroTed 3ba32dd
Added physics_noaa/NSSL-MP to Makefile include paths to fix errors …
MicroTed File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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=3 (default; nssl_mp_params namelist) is recommended. For 3-moment, infall only really applies to droplets, cloud ice, and snow, since no corrections are needed for the 3-moment species (rain, graupel, hail). | ||
|
|
||
| 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. | ||
|
|
||
|
|
||
|
|
||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know cmake very well, but I see that other packages have explicit source file lists. I can add that for NSSLmp if that's needed.