pycif.plugins.transforms.basic.product — API reference

Contents

pycif.plugins.transforms.basic.product — API reference#

Configuration reference: product plugin

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

Propagate sensitivities through the product (product-rule adjoint).

Reloads the forward inputs from chain/product/, then for each input \(x_j\):

\[s_j = s_{out} \cdot \prod_{i \neq j} x_i^{fwd}\]

Uses itertools.permutations to enumerate all combinations.

Parameters:
  • transform (Plugin) – product instance (carries model.adj_refdir and orig_name).

  • inout_datastore (dict) – mutable datastore.

  • controlvect – unused.

  • obsvect – unused.

  • mapper (dict) – transform mapper.

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

  • df (datetime) – unused.

  • mode (str) – 'adj'.

  • runsubdir (str) – unused.

  • workdir (str) – unused.

  • onlyinit (bool) – if True, return immediately.

  • **kwargs – unused.

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

Compute the element-wise product of multiple input tracer fields.

Forward: \(y = \prod_i x_i\).

TL (product rule): \(\delta y = \sum_j \delta x_j \prod_{i \neq j} x_i\).

Supports ensemble (batch sampling) runs by building a per-output mapping to the corresponding input samples. For non-batch runs, saves all input fields to chain/product/ for use by the adjoint.

Parameters:
  • transform (Plugin) – product instance (carries orig_name).

  • 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.

  • **kwargs – unused.

Raises:

ValueError – if multiple outputs are declared for a non-ensemble run.