Welcome to UFS stochastic physics’s documentation!

Getting Started

The stochastic physics currently only works with the UFS-atmosphere model

You should get the full system at https://github.com/ufs-community/ufs-weather-model, which will include the stochastic physics code.

In order to enable stochastic physics in a model run, you will need to turn it on via namelist options

If using the CIME workflow decribed at https://ufs-mrweather-app.readthedocs.io/en/latest/, please add do_sppt=T, etc. to user_nl_ufsatm in the case directory.

Users Guide

The stochastic physics currently only works with the UFS-atmosphere model

Currently, 3 stochastic schemes are used operationally at NCEP/EMC: Stochastic Kinetic Energy Backscatter (SKEB; Berner et al., 2009), Stochastically Perturbed Physics Tendencies (SPPT; Palmer et al., 2009), and Specific Humidity perturbations (SHUM), which is inspired by Tompkins and Berner, 2008. In addition there is the ability to perturb certain land model/surface parameters (Gehne et al, 2019), and a cellular automata scheme (Bengtsson et al. 2019) which interacts directly with the convective parameterization.

SKEB adds wind perturbations to model state. Perturbations are random in space/time, but amplitude is determined by a smoothed dissipation estimate provided by the dynamical core. Addresses errors in the dynamics - more active in the mid-latitudes

SPPT multiplies the physics tendencies by a random number O [0,2] before updating the model state. Addresses error in the physics parameterizations (either missing physics or unresolved subgrid processes). It is most active in boundary layer and convective regions

SHUM multiply the low-level specific humidity by a small random number each time-step. It attempts to address missing physics (cold pools, gust fronts), most active in convective regions

Land surface perturbations allow for land surface parameters such as Albedo, Soil Hydraulic Conductivity, LAI, and roughness lengths to vary in space. Addresses error in the land model and land-atmosphere interactions.

Due to the model’s numerics, any stochastic perturbation needs to be correlated in space and time in order to have the desired effect of upscale growth of the perturbations. This is achieved by creating a random pattern that has a specified decorrelation length-scale and is a first order auto-regressive process AR(1) in time with a specified decorrelation time-scale. (The CA random pattern generator also satisfies this condition)

Currently the Land surface perturbations and cellular automata are not supported at the workflow level.

Stochastic Physics Namelist

General options

Option Description
NTRUNC Optional, Spectral resolution (e.g. T126) of random patterns, default is for model to determine proper truncation
LAT_S Optional, number of latitude points for the gaussian grid (must be even), default is for model to determine gaussian grid
LON_S Optional, number of longitude points for the gaussian grid (recommend 2xLAT_S, default is for model to determine gaussian grid
FHSTOCH Optional, forecast hour to write out random pattern in order to restart the pattern for a different forecast (used in DA), file is stoch_out.F<HHH>
STOCHINI Optional, set to true if wanting to read in a previous random pattern (input file needs to be named stoch_ini).

SPPT options

Option Description
DO_SPPT logical to tell parent atmospheric model to use SPPT
SPPT Amplitudes of random patterns (0.8,0.4,0.2,0.08,0.04) *
SPPT_TAU Decorrelation timescales in seconds (21600,1.728E5,6.912E5,7.776E6,3.1536E7) *
SPPT_LSCALE Decorrelation spatial scales in meters (250.E3,1000.E3,2000.E3,2000.E3,2000.E3) *
SPPT_LOGIT Should be true to limit the SPPT perturbations between 0 and 2. Otherwise model will crash.
ISEED_SPPT Seeds for setting the random number sequence (ignored if stochini is true)
SPPT_SIGTOP1 lower sigma level to taper perturbations to zero (default is 0.1)
SPPT_SIGTOP2 upper sigma level to taper perturbations to zero (0.025)
SPPT_SFCLIMIT .T.=tapers the SPPT perturbations to zero at model’s lowest level (helps reduce model crashes)
SPPTINT Optional, interval in seconds to update random pattern. Perturbations still get applied every time-step
USE_ZMTNBLCK .T.=do not apply perturbations below the dividing streamline that is diagnosed by the gravity wave drag, mountain blocking scheme

* SPPT uses 5 different patterns of varying time/length scales that are added together before being passed to physics

SHUM options

Option Description
DO_SHUM logical to tell parent atmospheric model to use SHUM
SHUM Amplitudes of random patterns (0.004)
SHUM_TAU Decorrelation timescales in seconds (21600)
SHUM_LSCALE ecorrelation spatial scales in meters (250000)
SHUM_SIGEFOLD e-folding lengthscale (in units of sigma) of specific humidity perturbations, default is 0.2)
SHUMINT Optional, interval in seconds to update random pattern. Perturbations still get applied every time-step
ISEED_SHUM Seeds for setting the random number sequence (ignored if stochini is true).

SKEB options

Option Description
DO_SKEB logical to tell parent atmospheric model to use SKEB
SKEB Amplitudes of random patterns (0.5)
SKEB_TAU Decorrelation timescales in seconds (21600)
SKEB_LSCALE Decorrelation spatial scales in meters (250)
ISEED_SKEB Seeds for setting the random number sequence (ignored if stochini is true).
SKEBNORM 0-random pattern is stream function, 1-pattern is K.E. norm, 2-pattern is vorticity (default is 0)
SKEB_VARSPECT_OPT 0-gaussian (default), 1-power law (not tested)
SKEB_NPASS number of passes of the del2 smoothing for the dissipation estimate (default is 11, minimum is 3)
SKEB_VDOF the number of degrees of freedom in the vertical for the SKEB random pattern (default is 5)
SKEB_SIGTOP1 lower sigma level to taper perturbations to zero (default is 0.1)
SKEB_SIGTOP2 upper sigma level to taper perturbations to zero (0.025)
SKEBINT Optional, interval in seconds to update random pattern. Perturbations still get applied every time-step

Developer’s guide

Code is housed on github at https://github.com/noaa-psd/stochastic_physics. Please read more about the Development process at https://github.com/ufs-community/ufs/wiki/Development-Processes#Developing-with-Gitflow.

Please make a fork and checkout the entire ufs-community weather model at https://github.com/ufs-community/ufs-weather-model and point to your fork of the stochastic_physics submodule.

Standalone testing

If you intend to make modifications to the stochastic physics source code, there is a simplified program that exercises the random pattern generator without needing to run the entire model. Please see README.standalone in the stochastic_physics directory.

Full model tests

The code updates are not expected to change existing results, so the full model regression tests need to be run. All of the tests must pass, although only a sub-set of tests are needed to consider adding changes to the stochastic_physics repository: fv3_control, fv3_stochy, fv3_ccpp_control, and fv3_ccpp_stochy. If the results are expected to change, then there needs to be scientific evidience that the change in results are what is expected.

References

Berner, J., G. Shutts, M. Leutbecher, and T. Palmer, 2009: A spectral stochastic kinetic energy backscatter scheme and its impact on flow- dependent predictability in the ECMWF ensemble prediction system. J. Atmos. Sci., 66, 603–626, doi:10.1175/2008JAS2677.1

Gehne, M., T. Hamill, G. Bates, P. Pegion, W. Kolczynski 2019: Land-surface parameter and state perturbations in the Global Ensemble Forecast System. Mon. Wea. Rev. 147, 1319–1340 doi:10.1175/MWR-D-18-0057.1

Palmer, T. N., R. Buizza, F. Doblas-Reyes, T. Jung, M. Leutbecher, G. J. Shutts,M. Steinheimer, and A.Weisheimer, 2009: Stochastic parametrization and model uncertainty. ECMWF Tech. Memo. 598, 42 pp doi:10.21957/ps8gbwbdv

Tompkins, A. M., and J. Berner, 2008: A stochastic convective approach to account for model uncertainty due to unresolved humidity variability. J. Geophys. Res., 113, D18101, doi:10.1029/2007JD009284

Source Code Documentation

Doxygen generated content