Footprints or backward mode footprint/std#

Description#

Footprint / backward-adjoint run: propagate an observation sensitivity to the control space.

Mathematical framework#

The adjoint (backward) mode computes the sensitivity of a scalar or vector observation functional \(\mathbf{y}^*\) to the control vector \(\mathbf{x}\):

\[\delta\mathbf{x}^* = \mathbf{H}^\top \delta\mathbf{y}^*\]

where \(\mathbf{H}^\top\) is the adjoint (transpose Jacobian) of the observation operator and \(\delta\mathbf{y}^*\) is the observation-space increment (sensitivity weight).

Physical interpretation#

For an atmospheric transport model, \(\delta x^*_i\) represents the contribution of the emission/flux at grid cell \(i\) to the selected observation. These footprints or influence functions (also called adjoint sensitivities or retroplumes in Lagrangian models) show which surface regions and time periods are “seen” by the observation.

Setting the increments#

The observation-space increment \(\delta\mathbf{y}^*\) is set to:

  • the value of the increments parameter (uniform, if provided), or

  • the values from the sim_tl column of the monitor files (default),

with all non-observed locations zeroed out.

The resulting control-space sensitivity \(\delta\mathbf{x}^*\) is stored in the dx field of the control vector and can be dumped or post-processed as any other pyCIF output.

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:

increments : float, optional

Increment value used to fill the observation vector increment. By default the values from the ‘sim_tl’ column of the monitor files are used.

use_xb : bool, optional, default True

Initialise the control vector x from the background xb before running.

reload_results : bool, optional, default False

Skip already-completed simulations and reload their results from disk.

Requirements#

The current plugin requires the present plugins to run properly:

Requirement name

Requirement type

Explicit definition

Any valid

Default name

Default version

controlvect

ControlVect

True

True

standard

std

obsvect

ObsVect

True

True

standard

std

obsoperator

ObsOperator

True

False

standard

std

YAML template#

Please find below a template for a YAML configuration:

 1mode:
 2  plugin:
 3    name: footprint
 4    version: std
 5    type: mode
 6
 7  # Optional arguments
 8  increments: XXXXX  # float
 9  use_xb: XXXXX  # bool
10  reload_results: XXXXX  # bool