System transform

System transform#

System transforms: the fixed pipeline backbone of every CIF observation operator.

These transforms are not user-configurable physics operators; they are the infrastructure connectors that wire the control vector, the numerical model, and the observation vector together.

In a simple configuration with a numerical model, CIF forward run executes them in the following order (adjoint is the reverse):

fromcontrol  → regridding if needed → dump2inputs  →  run_model  →
                                                        ↓
                                        toobsvect  ← loadfromoutputs

Transform summary#

fromcontrol

Reads \(\mathbf{x}\) (or \(\mathbf{x}^b\)) from the control vector and maps it to physical fields at the corresponding input data grid resolution (flux maps, scaling factors, initial conditions …). Marked start_pipe = True.

dump2inputs

Converts CIF-internal arrays to the native input format expected by the model executable (calls model.native2inputs). In most cases, it consists in dumping in proper NetCDF format, or binary.

run_model

Executes the model for one sub-simulation period via model.make_auxiliary + model.run. Compiles on first use.

loadfromoutputs

Reads model outputs via model.outputs2native and delivers them as CIF-internal arrays ready for observation sampling.

array2sampled

Samples a gridded model field at observation locations (lat/lon/level/ time-step). Forward: grid → sparse observations. Adjoint: scatter sensitivities back to the grid.

sparse2sample

Inverse of array2sampled: accumulates sparse observation-indexed values onto the full model grid (forward) and extracts point samples from the grid (adjoint).

toobsvect

Stores simulated values into obsvect.ysim (forward) or reads obsvect.dy sensitivities (adjoint). Marked end_pipe = True.

dump2format

Writes transformed data to a user-specified file format via a registered datastream plugin write method, with optional regridding and temporal resampling.

Available System transform#

The following transform of sub-type system are implemented in pyCIF so far: