Ensemble Square-Root Filter (EnSRF / std)

Description

Compute an Ensemble Square Root Filter (EnSRF) based on CTDAS implementation (Peters et al., 2005).

Yaml arguments

The following arguments are used to configure the plugin. pyCIF will return an exception at the initialization if mandatory arguments are not specified, or if any argument does not fit accepted values or type:

Mandatory arguments

nsample: (mandatory)

Number of random samples in the ensemble

accepted type: int

Optional arguments

reload_results: (optional): False

Reload results from previous simulations

accepted type: bool

batch_sampling: (optional): False

Compute samples into a single observation operator or as separate jobs if False

accepted type: bool

batch_subjob: (optional): False

Force submittting the batch sampling inside a separate job. Otherwise, run as a sub-instance of python

accepted type: bool

moving_window: (optional)

Assimilate observations using a moving assimilation window, i.e. with multiple segments/cycles.A segment consists of multiple windows. In CTDAS, a segment is called a cycle.

accepted structure:

length_window: (mandatory)

Length of each assimilation window

accepted type: str

windows_per_segment: (mandatory)

Number of windows in each segment.In CTDAS, this parameter is called nlag.

accepted type: int

propagation_weight: (optional): 0

When starting a new segment/cycle, posterior information from last window is propagated with these weights

accepted structure:

component: (optional): 0

Weight for this specific component

accepted type: float

localization: (optional)

Apply localization to every assimilated observation.

accepted structure:

sigma: (mandatory)

Correlation length to apply when localizing an observation.

accepted type: float

decay_function: (optional): normal

Type of decay function to apply to the gain matrix.

accepted values: [‘exponential’, ‘normal’]

restart_format: (optional): restart_%Y%m%d%H.nc

Format of the restart file to fetch after a posterior forward simulation.

accepted type: str

seed: (optional): False

Use a seed to generate random samples.

accepted type: bool

seed_id: (optional): 0

ID of the numpy seed to use.

accepted type: int

compute_dof: (optional): False

Compute degrees of freedom for each assimilation steps

accepted type: bool

Requirements

The current plugin requires the present plugins to run properly:

Requirement name

Requirement type

Explicit definition

Any valid

Default name

Default version

obsvect

ObsVect

False

True

standard

std

controlvect

ControlVect

True

True

standard

std

obsoperator

ObsOperator

True

True

standard

std

platform

Platform

True

True

None

None

Yaml template

Please find below a template for a Yaml configuration:

 1mode:
 2  plugin:
 3    name: EnSRF
 4    version: std
 5    type: mode
 6
 7  # Mandatory arguments
 8  nsample: XXXXX  # int
 9
10  # Optional arguments
11  reload_results: XXXXX  # bool
12  batch_sampling: XXXXX  # bool
13  batch_subjob: XXXXX  # bool
14  moving_window:
15    length_window: XXXXX  # str
16    windows_per_segment: XXXXX  # int
17    propagation_weight:
18      component: XXXXX  # float
19  localization:
20    sigma: XXXXX  # float
21    decay_function: XXXXX  # exponential|normal
22  restart_format: XXXXX  # str
23  seed: XXXXX  # bool
24  seed_id: XXXXX  # int
25  compute_dof: XXXXX  # bool