simpeg.electromagnetics.time_domain.Simulation3DElectricField.getAsubdiagDeriv#

Simulation3DElectricField.getAsubdiagDeriv(tInd, u, v, adjoint=False)[source]#

Derivative operation for the sub-diagonal system matrix times a vector.

The sub-diagonal system matrix for time-step index k is given by:

\[\mathbf{B}_k = -\frac{1}{\Delta t_k} \mathbf{M_{e\sigma}}\]

where \(\Delta t_k\) is the step-length and \(\mathbf{M_{e \sigma}}\) is the conductivity inner-product matrix on edges.

See the Notes section of the doc strings for Simulation3DElectricField for a full description of the formulation.

Where \(\mathbf{m}\) are the set of model parameters, \(\mathbf{v}\) is a vector and \(\mathbf{e_{k-1}}\) is the discrete solution for the previous time-step, this method assumes the discrete solution is fixed and returns

\[\frac{\partial (\mathbf{B_k \, e_{k-1}})}{\partial \mathbf{m}} \, \mathbf{v}\]

Or the adjoint operation

\[\frac{\partial (\mathbf{B_k \, e_{k-1}})}{\partial \mathbf{m}}^T \, \mathbf{v}\]
Parameters:
tIndint

The time-step index; between [0, n_steps-1].

u(n_edges,) numpy.ndarray

The solution for the fields for the current model for the previous time-step; i.e. \(\mathbf{e_{k-1}}\).

vnumpy.ndarray

The vector. (n_param,) for the standard operation. (n_edges,) for the adjoint operation.

adjointbool

Whether to perform the adjoint operation.

Returns:
numpy.ndarray

Derivative of system matrix times a vector. (n_edges,) for the standard operation. (n_param,) for the adjoint operation.