simpeg.electromagnetics.frequency_domain.Simulation3DMagneticFluxDensity.getADeriv#

Simulation3DMagneticFluxDensity.getADeriv(freq, u, v, adjoint=False)[source]#

Derivative operation for the system matrix times a vector.

The system matrix at each frequency is given by:

\[\mathbf{A} = \mathbf{C M_{e\sigma}^{-1} C^T M_{f\frac{1}{\mu}}} + i\omega \mathbf{I}\]

where

  • \(\mathbf{I}\) is the identity matrix

  • \(\mathbf{C}\) is the curl operator

  • \(\mathbf{M_{e\sigma}}\) is the inner-product matrix for conductivities projected to edges

  • \(\mathbf{M_{f\frac{1}{\mu}}}\) is the inner-product matrix for inverse permeabilities projected to faces

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 defining the electromagnetic properties, \(\mathbf{v}\) is a vector and \(\mathbf{b}\) is the discrete magnetic flux density solution, this method assumes the discrete solution is fixed and returns

\[\frac{\partial (\mathbf{A \, b})}{\partial \mathbf{m}} \, \mathbf{v}\]

Or the adjoint operation

\[\frac{\partial (\mathbf{A \, b})}{\partial \mathbf{m}}^T \, \mathbf{v}\]
Parameters:
freqfloat

The frequency in Hz.

u(n_faces,) numpy.ndarray

The solution for the fields for the current model at the specified frequency.

vnumpy.ndarray

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

adjointbool

Whether to perform the adjoint operation.

Returns:
numpy.ndarray

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