simpeg.electromagnetics.time_domain.Simulation3DMagneticFluxDensity.getAsubdiagDeriv#
- Simulation3DMagneticFluxDensity.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{I}\]where \(\Delta t_k\) is the step length and \(\mathbf{I}\) is the identity matrix.
See the Notes section of the doc strings for
Simulation3DMagneticFluxDensity
for a full description of the formulation.Where \(\mathbf{m}\) are the set of model parameters, \(\mathbf{v}\) is a vector and \(\mathbf{b_{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 \, b_{k-1}})}{\partial \mathbf{m}} \, \mathbf{v} = \mathbf{0}\]Or the adjoint operation
\[\frac{\partial (\mathbf{B_k \, b_{k-1}})}{\partial \mathbf{m}}^T \, \mathbf{v} = \mathbf{0}\]The derivative operation returns a vector of zeros because the sub-diagonal system matrix does not depend on the model!!!
- Parameters:
- tInd
int
The time index; between
[0, n_steps-1]
.- u(n_faces,)
numpy.ndarray
The solution for the fields for the current model for the previous time-step; i.e. \(\mathbf{b_{k-1}}\).
- v
numpy.ndarray
The vector. (n_param,) for the standard operation. (n_faces,) for the adjoint operation.
- adjointbool
Whether to perform the adjoint operation.
- tInd
- Returns:
numpy.ndarray
Derivative of system matrix times a vector. (n_faces,) for the standard operation. (n_param,) for the adjoint operation.