SPP in HarmonEPS
SPP options in HARMONIE
The Stochastically Perturbed Parameterizations scheme (SPP) introduces stochastic perturbations to values of chosen closure parameters representing efficiencies or rates of change in parameterized atmospheric (sub)processes. See here for more information. SPP is available since cy40h1.1.1
.
SPP is activated by setting SPP=yes
in ecf/config_exp.h
SPP uses the Stochastic Pattern Generator (SPG). The pattern characteristics are set by the following settings in config_exp.h
:
SDEV_SPP = 1.0 # Standard deviation of the pattern
TAU_SPP = 43200 # Time scale (seconds)
XLCOR_SPP = 200000 # Length scale (m)
SPGQ_SPP = 0.5 # Controls small vs. large scales
SPGADTMIN_SPP=0.15 # initialization to ensure stationary statistics from the start of the integration
SPGADTMAX_SPP=3.0 # initialization to ensure stationary statistics from the start of the integration
NPATFR_SPP=-1 # Frequency to evolve pattern: >0 in timesteps, <0 in hours
The parameters that can be perturbed are:
Perturbation | Description | Perturbs |
---|---|---|
P1: LPERT_PSIGQSAT | Perturb saturation limit sensitivity | VSIGQSAT |
P3: LPERT_CLDDPTHDP | Perturb threshold cloud thickness used in shallow/deep convection decision | RFRMIN(20) |
P4: LPERT_ICE_CLD_WGT | Perturb cloud ice content impact on cloud thickness | RFRMIN(21) |
P5: LPERT_ICENU | Perturb ice nuclei | RFRMIN(9) |
P6: LPERT_KGN_ACON | Perturb Kogan autoconversion speed | RFRMIN(10) |
P7: LPERT_KGN_SBGR | Perturb Kogan subgrid scale (cloud fraction) sensitivity | RFRMIN(11) |
P8: LPERT_RADGR | Perturb graupel impact on radiation | RADGR |
P9: LPERT_RADSN | Perturb snow impact on radiation | RADSN |
P10:LPERT_RFAC_TWOC | Perturb top entrainment | RFAC_TWO_COEF |
P11:LPERT_RZC_H | Perturb stable conditions length scale | RZC_H |
P12:LPERT_RZL_INF | Asymptotic free atmospheric length scale | RZL_INF |
P13:LPERT_RSWINHF | Short wave inhomogeneity factor | RSWINHF |
P14:LPERT_RLWINHF | Long wave inhomogeneity factor | RLWINHF |
P15:LPERT_ALPHA | Cloud droplet gamma distribution parameters alpha (over sea) | ALPHA |
P16:LPERT_RZNUC | Cloud droplet gamma distribution parameters nu (over land) | RZNUC |
P17:LPERT_RZMFDRY | Parameter for dry mass flux | RZMFDRY |
P18:LPERT_RZMBCLOSURE | Closure parameter for moist mass flux | RZMBCLOSURE |
P19:LPERT_SLWIND | Perturbing V(M) in the semi-lagrangian advection scheme | SLWIND |
Main settings
The following describes the namelist flags for SPP. Namelist flags for SPP are found in the namelist NAMSPP
in nam/harmonie_namelists.pm
Activate perturbation of a parameter by setting LPERT_[PARAMETER]
to TRUE
in harmonie_namelists.pm
, e.g.:
NAMSPP=>{
'LPERT_PSIGQSAT' => '.TRUE.,',
...
},
The size of the perturbation (the standard deviation of the parameter distribution) is set by CMPERT_[PARAMETER]
, e.g.:
NAMSPP=>{
'CMPERT_PSIGQSAT' => '0.3,',
...
},
The min/max range of each perturbed parameter can be controlled by the CLIP_[PARAMETER]
namelist variable where the limits are specified as e.g.:
NAMSPP=>{
'CLIP_PSIGQSAT' => '0.0,0.1',
...
},
Two distributions for the parameter values are possible: lognormal and pseudo uniform. Note: when a pseudo uniform distribution is used, the distribution may extend to negative values, which should be avoided. This can be assured by setting a clipping range (see above). Set LUNIFORM_[PARAMETER]
to FALSE
to use lognormal and to TRUE
to use pseudo uniform, e.g.:
NAMSPP =>{
'LUNIFORM_PSIGQSAT' => '.FALSE.,',
...
},
When pseudo uniform is chosen, it is possible to shift the distribution by setting UNIFORM_OFFSET_[PARAMETER]
, where offset 0.5 is default, <0.5 moves the distribution to the right and >0.5 moves the distribution to the left e.g.:
NAMSPP =>{
'UNIFORM_OFFSET_PSIGQSAT' => '0.45,',
...
},
When lognormal distribution is chosen, the flag LLNN_MEAN1_[PARAMETER]
decides if the mean or the median of the distribution corresponds to the unperturbed, deterministic value of the parameter. Set to FALSE
to use the median and to TRUE
to use the mean, e.g.:
NAMSPP =>{
'LLNN_MEAN1_PSIGQSAT' => '.TRUE.,',
...
},
Correlation of patterns
Any arbitrary number of parameters can be correlated by setting MP_X
, where X is the name of the parameter, to the same number in in NAMSPP
. Anticorrelation can be achieved by setting IC_X=-1
. I.e. if we set
NAMSPP =>{
...
'MP_RZC_H' => '77,',
'MP_RZL_INF' => '77,',
'MP_KGN_ACON' => '99',
'MP_KGN_SBGR' => '99,',
'IC_KGN_SBGR' => '-1,',
...
},
we will correlate RZC_H
and RZL_INF
and anticorrelate KGN_ACON
with KGN_SBGR
. The latter is achieved by setting IC_KGN_SBGR=-1
. Note that the number for MP_X
is used as an ID and should not be considered as a sequence number. It does not control the order of the patterns in the output or similar.
Define the time and length scales for an individual pattern
The pattern timescale TAU
and lengthscale XLCOR
are defined in NAMSPP
and are then valid for all patterns. To specify the patterns individually we can set something like:
NAMSPP =>{
...
'YSPP_CONFIG_PAR(1)%TAG' => '\'PSIGQSAT\'',
'YSPP_CONFIG_PAR(1)%TAU' => '21600',
'YSPP_CONFIG_PAR(1)%XLCOR' => '150000',
'YSPP_CONFIG_PAR(2)%TAG' => '\'KGN_ACON\'',
'YSPP_CONFIG_PAR(2)%TAU' => '10800',
'YSPP_CONFIG_PAR(2)%XLCOR' => '350000',
...
},
where TAG
is the name of the parameter to be perturbed.
Recommended SPP settings (cy43):
CMPERT
needs to be tuned for each parameter. CMPERT1
in the table below is the value that gives the range of values for the parameters recommended by the physics experts (when a lognormal distribution is used, if not stated otherwise). CMPERT
is the value recommended for use. Tuning is ongoing, hence not all recommendations are in place yet. The well tested settings are in bold, preliminary suggestions are in italic.
Perturbation | Det. value | Recom. range | CMPERT (CMPERT1) | Distribution | Offset | Mean Median | Clipping | Corr. |
---|---|---|---|---|---|---|---|---|
PSIGQSAT | 0.02 | 0-0.06 | 0.6 (0.3) | Log-normal | N.A. | Mean | No | N.A. |
CLDDPTHDP | 4000 | 0-10000 | 0.6 (0.3) | Log-normal | N.A. | Mean | No | N.A. |
ICE_CLD_WGT | 1 | 0.2-2 | 1.2 (0.3) | Uniform | 0.5 | N.A. | 0.01 - 10 | N.A. |
ICENU | 1 | 0.01-100 | TBD (1.05) | TBD | TBD | TBD | TBD | N.A. |
KGN_ACON | 10 | 1-100 | TBD (0.75) | TBD | TBD | TBD | TBD | N.A. |
KGN_SBGR | 1[1] | 0.01-1 | TBD (0.3) | TBD | TBD | TBD | 0., 1. | N.A. |
RADGR | 0.5 | 0-1 | TBD (0.4) | TBD | TBD | TBD | 0., 2. | N.A. |
RADSN | 1 | 0-2 | TBD (0.35) | TBD | TBD | TBD | 0., 2. | N.A. |
RFAC_TWOC | 2 | 0.5-3 | TBD (0.3) | TBD | TBD | TBD | TBD | N.A. |
RZC_H | 0.11 | 0.1-0.2 | 1.05 (0.3) | Uniform | 0.475 | N.A. | 0.001, 100 | Yes |
RZL_INF | 40 | 20-200 | 0.45 (0.45) | Log-normal | N.A. | Mean | No | Yes |
LPERT_RSWINHF | 1? | 0.95-1 | Not tested | |||||
LPERT_RLWINHF | 1? | 0.95-1 | Not tested | |||||
LPERT_ALPHA | 3 | 0.2-5 | 1.4 (0.3) | Uniform | 0.5 | N.A. | TBD | N.A. |
LPERT_RZNUC | 3 | 0.2-10 | 0.6 (0.3) | Log-normal | N.A. | Mean | No | N.A. |
LPERT_RZMFDRY | 1 | 0.2-2 | 0.8 (0.3) | Log-normal | N.A. | Mean | No | N.A. |
LPERT_RZMBCLOSURE | 0.35 | 0.05-0.7 | 0.8 (0.3) | Log-normal | N.A. | Mean | No | N.A. |
For more SPP details see src/arpifs/module/spp_mod.F90
Tendency and pattern diagnostics
Diagnostic output of tendencies and SPP patterns can be activated by setting TEND_DIAG=yes
in ecf/config_exp.h
. Activation gives six new 3D-fields
FANAME | Description |
---|---|
SNNNPTENDU | U-component tendencies |
SNNNPTENDV | V-component tendencies |
SNNNPTENDT | Temperature tendencies |
SNNNPTENDR | Moisture tendencies |
SNNNMULNOISE | SPPT pattern, same for all levels |
SNNNSPP_PATTERN | SPP pattern, distribution as explained below |
The raw and scaled patterns are stored in the vertical column of SNNNSPP_PATTERN
using the index given for Diagnostic number
in the SPP initialization. Thus, with the standard settings and the correlated pattern exampel above we get in the standard log file NODE.001_01 available in the Forecast task output :
...
PSIGQSAT pattern/diagnostic numbers are: 1 1
CLDDPTHDP pattern/diagnostic numbers are: 2 2
ICE_CLD_WGT pattern/diagnostic numbers are: 3 3
ICENU pattern/diagnostic numbers are: 4 4
KGN_ACON pattern/diagnostic numbers are: 5 5
KGN_SBGR pattern/diagnostic numbers are: 5 6
RADGR pattern/diagnostic numbers are: 6 7
RADSN pattern/diagnostic numbers are: 7 8
RFAC pattern/diagnostic numbers are: 8 9
RZC_H pattern/diagnostic numbers are: 9 10
RZCL_INF pattern/diagnostic numbers are: 9 11
...
The raw pattern is stored as 2N-1 and the scaled one as 2N where N is the Diagnostic number
given in the log file. This gives us the following table:
Perturbation | raw pattern | scaled pattern |
---|---|---|
PSIGQSAT | S001SPP_PATTERN | S002SPP_PATTERN |
CLDDPTHDP | S003SPP_PATTERN | S004SPP_PATTERN |
ICE_CLD_WGT | S005SPP_PATTERN | S006SPP_PATTERN |
ICENU | S007SPP_PATTERN | S008SPP_PATTERN |
KGN_ACON | S009SPP_PATTERN | S010SPP_PATTERN |
KGN_SBGR | S011SPP_PATTERN | S012SPP_PATTERN |
RADGR | S013SPP_PATTERN | S014SPP_PATTERN |
RADSN | S015SPP_PATTERN | S016SPP_PATTERN |
RFAC | S017SPP_PATTERN | S018SPP_PATTERN |
RZC_H | S019SPP_PATTERN | S020SPP_PATTERN |
RZL_INF | S021SPP_PATTERN | S022SPP_PATTERN |
where the numbering may depend on the number of actively perturbed parameters.
Cy40h111 settings (NB only log-normal distribution possible)
In config_exp.h
:
SDEV_SPP = 3.0 # Standard deviation of the pattern
Perturbation | Det. value | Recommended range | CMPERT (CMPERT1) | Clipping range | Mean or median |
---|---|---|---|---|---|
LPERT_PSIGQSAT | 0.02, but set to 0.03 | 0-0.06 | 0.4 (0.1) | No | Mean |
LPERT_CLDDPTHDP | 4000 | 1000-8000 | 0.4 (0.1) | No | Mean |
LPERT_ICE_CLD_WGT | 1 | 0-2 | 0.4 (0.1) | No | Mean |
LPERT_ICENU | 1 | 0.1-10 | 0.7 (0.35) | No | Median |
LPERT_KGN_ACON | 10 | 2-50 | 0.5 (0.25) | No | Mean |
LPERT_KGN_SBGR | 1, but set to 0.5 | 0.01-1 | 0.2 (0.1) | 0.0 - 1.0 | Mean |
LPERT_RADGR | 0, but set to 0.5 | 0-1 | 0.3 (0.15) | 0.0 - 2.0 | Mean |
LPERT_RADSN | 0, but set to 0.5 | 0-1 | 0.3 (0.15) | 0.0 - 2.0 | Mean |
LPERT_RFAC_TWOC | 2 | 0.5-3 | 0.4 (0.1) | No | Mean |
LPERT_RZC_H | 0.15 | 0.1-0.25 | 0.4 (0.1) | No | Mean |
LPERT_RZL_INF | 100 | 30-300 | 0.6 (0.15) | No | Mean |
In cy 40 the output of patterns and tendencies was as follows:
The raw and scaled patterns are stored in the vertical column of SNNNEZDIAG01
using the index given in the SPP initialization. Thus
...
KGET_SEED_SPP: PSIGQSAT 10000 1841082593
pattern 1 for PSIGQSAT using seed 1841082593
KGET_SEED_SPP: CLDDPTH 10002 570790063
pattern 2 for CLDDPTH using seed 570790063
KGET_SEED_SPP: CLDDPTHDP 10004 980493159
pattern 3 for CLDDPTHDP using seed 980493159
KGET_SEED_SPP: ICE_CLD_WGT 10008 1362729695
pattern 4 for ICE_CLD_WGT using seed 1362729695
...
would give us
Perturbation | raw pattern | scaled pattern |
---|---|---|
PSIGQSAT | S001EZDIAG01 | S002EZDIAG01 |
CLDDPTH | S003EZDIAG01 | S004EZDIAG01 |
CLDDPTHDP | S005EZDIAG01 | S006EZDIAG01 |
ICE_CLD_WGT | S007EZDIAG01 | S008EZDIAG01 |
and so on
SPPT pattern EZDIAG02
(same in all levels)
SPP tendencies PtendU
EZDIAG03
SPP tendencies PtendV
EZDIAG04
SPP tendencies PtendT
EZDIAG05
SPP tendencies PtendQ
EZDIAG06
Suggestions for parameters to include in SPP:
Parameter | Description | Deterministic value cy43 | Suggested range of values | suggestion for parameter to correlate with | Person responsible for implementing |
---|---|---|---|---|---|
Terminal fall velocities of rain, snow and graupel | Sibbo | ||||
RFRMIN(39) | Depo_rate_graupel | RFRMIN 39 and 40 should approximately respect log10C = -3.55 x + 3.89, see eq. 6.2 on p. 108 in the meso-NH documentation: [https://hirlam.org/trac/attachment/wiki/HarmonieSystemDocumentation/EPS/SPP/sciICE3doc_p3.pdf Doc] | Pirkka | ||
RFRMIN(40) | Depo_rate_snow ) | RFRMIN 39 and 40 should approximately respect log10C = -3.55 x + 3.89, see eq. 6.2 on p. 108 in the meso-NH documentation: [https://hirlam.org/trac/attachment/wiki/HarmonieSystemDocumentation/EPS/SPP/sciICE3doc_p3.pdf Doc] | Pirkka | ||
RFRMIN(16) | Distr_snow_c | to be correlated with RFRMIN(17) | |||
RFRMIN(17) | Distr_snow_x | to be correlated with RFRMIN(16) |
Experiments
List with cy43h22 experiments is here: [wiki:HarmonieSystemDocumentation/EPS/ExplistSPPcy43 List of experiments]
A guide for running the tuning experiments is here: [wiki:HarmonieSystemDocumentation/EPS/HowtoSPPcy43 Guide]
- 1Default/deterministic value of 1 and recommended range of 0.01-1 means the deterministic value is at the high end of the distribution.