tlm_adjoint.storage

Module Contents

class tlm_adjoint.storage.Storage(x, key, *, save=False)

Used to save and load a forward solution value.

With save=True the first forward solve saves the value of x. With save=False, or on any subsequent forward solve, the value of the forward solution is loaded into x.

When processed by the EquationManager this is equivalent to an assignment

\[x = x_\text{value},\]

where \(x_\text{value}\) is the value which is saved or loaded. The forward residual is defined

\[\mathcal{F} \left( x \right) = x - x_\text{value}.\]

This is an abstract base class. Information required to save and load data is provided by overloading abstract methods. This class does not inherit from abc.ABC, so that methods may be implemented as needed.

Parameters:
  • x – A variable defining the forward solution, whose value is saved or loaded.

  • key – A str key for the saved or loaded data.

  • save – If True then the first forward solve saves the value of x. If False then the first forward solve loads the value of x.

property key

The key associated with saved or loaded data.

abstract is_saved()

Return whether a value can be loaded.

Returns:

True if a value can be loaded, and False otherwise.

abstract load(x)

Load data, storing the result in x.

Parameters:

x – A variable in which the loaded data is stored.

abstract save(x)

Save the value of x.

Parameters:

x – A variable whose value should be saved.

forward_solve(x, deps=None)

Compute the forward solution.

Can assume that the currently active EquationManager is paused.

Parameters:
  • X – A variable if the forward solution has a single component, otherwise a Sequence of variables. May define an initial guess, and should be set by this method. Subclasses may replace this argument with x if the forward solution has a single component.

  • deps – A tuple of variables, defining values for dependencies. Only the elements corresponding to X may be modified. self.dependencies() should be used if not supplied.

adjoint_jacobian_solve(adj_x, nl_deps, b)

Compute an adjoint solution.

Parameters:
  • adj_X – Either None, or a variable (if the adjoint solution has a single component) or Sequence of variables (otherwise) defining the initial guess for an iterative solve. May be modified or returned. Subclasses may replace this argument with adj_x if the adjoint solution has a single component.

  • nl_deps – A Sequence of variables defining values for non-linear dependencies. Should not be modified.

  • B – The right-hand-side. A variable (if the adjoint solution has a single component) or Sequence of variables (otherwise) storing the value of the right-hand-side. May be modified or returned. Subclasses may replace this argument with b if the adjoint solution has a single component.

Returns:

A variable or Sequence of variables storing the value of the adjoint solution. May return None to indicate a value of zero.

tangent_linear(tlm_map)

Derive an Equation corresponding to a tangent-linear operation.

Parameters:

tlm_map – A TangentLinearMap storing values for tangent-linear variables.

Returns:

An Equation, corresponding to the tangent-linear operation.

class tlm_adjoint.storage.MemoryStorage(x, d, key, *, save=False)

A Storage which stores the value in memory.

Parameters:
  • x – A variable defining the forward solution, whose value is saved or loaded.

  • d – A dict in which data is stored with key key.

  • key – A str key for the saved or loaded data.

  • save – If True then the first forward solve saves the value of x. If False then the first forward solve loads the value of x

is_saved()

Return whether a value can be loaded.

Returns:

True if a value can be loaded, and False otherwise.

load(x)

Load data, storing the result in x.

Parameters:

x – A variable in which the loaded data is stored.

save(x)

Save the value of x.

Parameters:

x – A variable whose value should be saved.

class tlm_adjoint.storage.HDF5Storage(x, h, key, *, save=False)

A Storage which stores the value on disk using the h5py library.

Parameters:
  • x – A variable defining the forward solution, whose value is saved or loaded.

  • h – An h5py.File.

  • key – A str key for the saved or loaded data.

  • save – If True then the first forward solve saves the value of x. If False then the first forward solve loads the value of x

is_saved()

Return whether a value can be loaded.

Returns:

True if a value can be loaded, and False otherwise.

load(x)

Load data, storing the result in x.

Parameters:

x – A variable in which the loaded data is stored.

save(x)

Save the value of x.

Parameters:

x – A variable whose value should be saved.