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:

PerturbationDescriptionPerturbs
P1: LPERT_PSIGQSATPerturb saturation limit sensitivityVSIGQSAT
P3: LPERT_CLDDPTHDPPerturb threshold cloud thickness used in shallow/deep convection decisionRFRMIN(20)
P4: LPERT_ICE_CLD_WGTPerturb cloud ice content impact on cloud thicknessRFRMIN(21)
P5: LPERT_ICENUPerturb ice nucleiRFRMIN(9)
P6: LPERT_KGN_ACONPerturb Kogan autoconversion speedRFRMIN(10)
P7: LPERT_KGN_SBGRPerturb Kogan subgrid scale (cloud fraction) sensitivityRFRMIN(11)
P8: LPERT_RADGRPerturb graupel impact on radiationRADGR
P9: LPERT_RADSNPerturb snow impact on radiationRADSN
P10:LPERT_RFAC_TWOCPerturb top entrainmentRFAC_TWO_COEF
P11:LPERT_RZC_HPerturb stable conditions length scaleRZC_H
P12:LPERT_RZL_INFAsymptotic free atmospheric length scaleRZL_INF
P13:LPERT_RSWINHFShort wave inhomogeneity factorRSWINHF
P14:LPERT_RLWINHFLong wave inhomogeneity factorRLWINHF
P15:LPERT_ALPHACloud droplet gamma distribution parameters alpha (over sea)ALPHA
P16:LPERT_RZNUCCloud droplet gamma distribution parameters nu (over land)RZNUC
P17:LPERT_RZMFDRYParameter for dry mass fluxRZMFDRY
P18:LPERT_RZMBCLOSUREClosure parameter for moist mass fluxRZMBCLOSURE
P19:LPERT_SLWINDPerturbing V(M) in the semi-lagrangian advection schemeSLWIND

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.

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.

PerturbationDet. valueRecom. rangeCMPERT (CMPERT1)DistributionOffsetMean MedianClippingCorr.
PSIGQSAT0.020-0.060.6 (0.3)Log-normalN.A.MeanNoN.A.
CLDDPTHDP40000-100000.6 (0.3)Log-normalN.A.MeanNoN.A.
ICE_CLD_WGT10.2-21.2 (0.3)Uniform0.5N.A.0.01 - 10N.A.
ICENU10.01-100TBD (1.05)TBDTBDTBDTBDN.A.
KGN_ACON101-100TBD (0.75)TBDTBDTBDTBDN.A.
KGN_SBGR1[1]0.01-1TBD (0.3)TBDTBDTBD0., 1.N.A.
RADGR0.50-1TBD (0.4)TBDTBDTBD0., 2.N.A.
RADSN10-2TBD (0.35)TBDTBDTBD0., 2.N.A.
RFAC_TWOC20.5-3TBD (0.3)TBDTBDTBDTBDN.A.
RZC_H0.110.1-0.21.05 (0.3)Uniform0.475N.A.0.001, 100Yes
RZL_INF4020-2000.45 (0.45)Log-normalN.A.MeanNoYes
LPERT_RSWINHF1?0.95-1Not tested
LPERT_RLWINHF1?0.95-1Not tested
LPERT_ALPHA30.2-51.4 (0.3)Uniform0.5N.A.TBDN.A.
LPERT_RZNUC30.2-100.6 (0.3)Log-normalN.A.MeanNoN.A.
LPERT_RZMFDRY10.2-20.8 (0.3)Log-normalN.A.MeanNoN.A.
LPERT_RZMBCLOSURE0.350.05-0.70.8 (0.3)Log-normalN.A.MeanNoN.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

FANAMEDescription
SNNNPTENDUU-component tendencies
SNNNPTENDVV-component tendencies
SNNNPTENDTTemperature tendencies
SNNNPTENDRMoisture tendencies
SNNNMULNOISESPPT pattern, same for all levels
SNNNSPP_PATTERNSPP 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:

Perturbationraw patternscaled pattern
PSIGQSATS001SPP_PATTERNS002SPP_PATTERN
CLDDPTHDPS003SPP_PATTERNS004SPP_PATTERN
ICE_CLD_WGTS005SPP_PATTERNS006SPP_PATTERN
ICENUS007SPP_PATTERNS008SPP_PATTERN
KGN_ACONS009SPP_PATTERNS010SPP_PATTERN
KGN_SBGRS011SPP_PATTERNS012SPP_PATTERN
RADGRS013SPP_PATTERNS014SPP_PATTERN
RADSNS015SPP_PATTERNS016SPP_PATTERN
RFACS017SPP_PATTERNS018SPP_PATTERN
RZC_HS019SPP_PATTERNS020SPP_PATTERN
RZL_INFS021SPP_PATTERNS022SPP_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
PerturbationDet. valueRecommended rangeCMPERT (CMPERT1)Clipping rangeMean or median
LPERT_PSIGQSAT0.02, but set to 0.030-0.060.4 (0.1)NoMean
LPERT_CLDDPTHDP40001000-80000.4 (0.1)NoMean
LPERT_ICE_CLD_WGT10-20.4 (0.1)NoMean
LPERT_ICENU10.1-100.7 (0.35)NoMedian
LPERT_KGN_ACON102-500.5 (0.25)NoMean
LPERT_KGN_SBGR1, but set to 0.50.01-10.2 (0.1)0.0 - 1.0Mean
LPERT_RADGR0, but set to 0.50-10.3 (0.15)0.0 - 2.0Mean
LPERT_RADSN0, but set to 0.50-10.3 (0.15)0.0 - 2.0Mean
LPERT_RFAC_TWOC20.5-30.4 (0.1)NoMean
LPERT_RZC_H0.150.1-0.250.4 (0.1)NoMean
LPERT_RZL_INF10030-3000.6 (0.15)NoMean

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

Perturbationraw patternscaled pattern
PSIGQSATS001EZDIAG01S002EZDIAG01
CLDDPTHS003EZDIAG01S004EZDIAG01
CLDDPTHDPS005EZDIAG01S006EZDIAG01
ICE_CLD_WGTS007EZDIAG01S008EZDIAG01

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:

ParameterDescriptionDeterministic value cy43Suggested range of valuessuggestion for parameter to correlate withPerson responsible for implementing
Terminal fall velocities of rain, snow and graupelSibbo
RFRMIN(39)Depo_rate_graupelRFRMIN 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_cto be correlated with RFRMIN(17)
RFRMIN(17)Distr_snow_xto 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.