CO2MVS coupling mode with IFS co2mvs/std

CO2MVS coupling mode with IFS co2mvs/std#

Description#

Outer-loop driver for the ECMWF CO2MVS coupled LMDZ/IFS inversion system.

This mode implements one outer-loop iteration of the CO2MVS weakly-coupled assimilation system in which LMDZ provides the very-long-window atmospheric transport and IFS runs the inner loops (not handled here).

Mathematical framework#

The outer loop follows a gradient-descent update in control space. Given the current control vector \(\mathbf{x}^{(k)}\), the mode:

  1. Reference forward — evaluates the observation operator

    \[\mathbf{y}_\mathrm{sim}^{(k)} = \mathcal{H}(\mathbf{x}^{(k)})\]
  2. Backward propagation — runs the adjoint to compute the gradient of the observation-space misfit with respect to the control vector:

    \[\delta\mathbf{x}^{(k)} = \mathbf{H}^{(k)\,\top} \mathbf{R}^{-1} \bigl(\mathbf{y} - \mathbf{y}_\mathrm{sim}^{(k)}\bigr)\]
  3. Control-vector update — applies the background error covariance to produce an increment and updates the state:

    \[\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} + \mathbf{B}\,\delta\mathbf{x}^{(k)}\]
  4. Posterior forward — re-runs the observation operator with the updated state to evaluate the posterior trajectory for diagnostics.

Note#

The IFS inner loops (variational minimisation within each outer-loop cycle) are managed externally. This mode only handles the interface between the two systems: control-vector exchange, the outer-loop increment, and the file I/O.

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:

save_out_netcdf : bool, optional, default False

Save final posterior vector as NetCDF. This argument overwrites the corresponding argument in the controlvect.

reload_results : bool, optional, default False

Reload results from previous simulations. If True does not recomputed already computed simulations

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

obsoperator

ObsOperator

True

False

standard

std

platform

Platform

True

True

None

None

YAML template#

Please find below a template for a YAML configuration:

1mode:
2  plugin:
3    name: co2mvs
4    version: std
5    type: mode
6
7  # Optional arguments
8  save_out_netcdf: XXXXX  # bool
9  reload_results: XXXXX  # bool