pycif.plugins.transforms.complex.ratio2conc — API reference

Contents

pycif.plugins.transforms.complex.ratio2conc — API reference#

Configuration reference: ratio2conc plugin

pycif.plugins.transforms.complex.ratio2conc.adjoint.adjoint(transform, inout_datastore, controlvect, obsvect, mapper, di, df, mode, runsubdir, workdir, onlyinit=False, **kwargs)[source]#

Propagate isotopologue sensitivities back to ratio and total-concentration sensitivities.

The adjoint of forward(). Reloads the saved forward NetCDF (chain/ratio2conc/) to recover \(a_j\) factors, then applies the chain rule to accumulate:

  • Sensitivity to total concentration: sum of isotopologue sensitivities weighted by their binary-tree fractions.

  • Sensitivity to each δ-signature \(\delta_j\): weighted sum over all isotopologues of \(\partial[iso_k]/\partial a_j \cdot \partial a_j/\partial\delta_j\).

Mass correction (unit = 'mass') is applied before the chain rule.

Parameters:
  • transform (Plugin) – ratio2conc plugin instance (carries model.adj_refdir for locating the forward chain directory).

  • inout_datastore (dict) – mutable datastore.

  • controlvect – unused.

  • obsvect – unused.

  • mapper (dict) – transform mapper.

  • di (datetime) – sub-simulation start date.

  • df (datetime) – sub-simulation end date.

  • mode (str) – 'adj'.

  • runsubdir (str) – unused.

  • workdir (str) – unused.

  • onlyinit (bool) – if True, copy output metadata to inputs without computing sensitivities.

  • **kwargs – unused.

pycif.plugins.transforms.complex.ratio2conc.forward.forward(transform, inout_datastore, controlvect, obsvect, mapper, di, df, mode, runsubdir, workdir, onlyinit=False, **kwargs)[source]#

Reconstruct isotopologue concentrations from per-mil ratios and total concentration.

Computes each isotopologue using a binary-tree decomposition: for N δ-signatures and 2^N isotopologues, each isotopologue gets a unique combination of fractions:

\[[iso_k] = C_{tot} \prod_{j=1}^{N} \frac{a_j^{\epsilon_{kj}}}{1 + a_j}\]

where \(a_j = (1 + \delta_j/1000) \cdot R_{std,j}\) and \(\epsilon_{kj} \in \{0, 1\}\) is read from the binary representation of the output index \(k\).

In TL mode the same formula is applied to increments. An optional mass correction (unit = 'mass') scales each isotopologue output by its molar mass ratio iso_mass[i] / spec_mass.

The signatures and total concentration are saved to chain/ratio2conc/ for use by the adjoint.

Parameters:
  • transform (Plugin) – ratio2conc plugin instance (carries parameters_out with iso_mass, spec_mass, unit, and per-signature standard values).

  • inout_datastore (dict) – mutable datastore.

  • controlvect – unused.

  • obsvect – unused.

  • mapper (dict) – transform mapper.

  • di (datetime) – sub-simulation start date.

  • df (datetime) – sub-simulation end date.

  • mode (str) – 'fwd' or 'tl'.

  • runsubdir (str) – sub-simulation run directory.

  • workdir (str) – unused.

  • onlyinit (bool) – unused (always computes).

  • **kwargs – unused.