simpeg.electromagnetics.frequency_domain.Simulation3DCurrentDensity#

class simpeg.electromagnetics.frequency_domain.Simulation3DCurrentDensity(mesh, survey=None, forward_only=False, permittivity=None, **kwargs)[source]#

Bases: BaseFDEMSimulation

3D FDEM simulation in terms of the current density.

This simulation solves for the current density at each frequency. In this formulation, the magnetic fields are defined on mesh edges and the current densities are defined on mesh faces; i.e. it is an HJ formulation. See the Notes section for a comprehensive description of the formulation.

Parameters:
meshdiscretize.base.BaseMesh

The mesh.

surveyfrequency_domain.survey.Survey

The frequency-domain EM survey.

forward_onlybool, optional

If True, the factorization for the inverse of the system matrix at each frequency is discarded after the fields are computed at that frequency. If False, the factorizations of the system matrices for all frequencies are stored.

permittivity(n_cells,) numpy.ndarray, optional

Dielectric permittivity (F/m) defined on the entire mesh. If None, electric displacement is ignored. Please note that permittivity is not an invertible property, and that future development will result in the deprecation of this propery.

storeJbool, optional

Whether to compute and store the sensitivity matrix.

Attributes

Mcc

Cell center inner product matrix.

MccMu

Cell center property inner product matrix.

MccMuI

Cell center property inner product inverse matrix.

MccMui

Cell center property inner product matrix.

MccMuiI

Cell center property inner product inverse matrix.

MccRho

Cell center property inner product matrix.

MccRhoI

Cell center property inner product inverse matrix.

MccSigma

Cell center property inner product matrix.

MccSigmaI

Cell center property inner product inverse matrix.

Me

Edge inner product matrix.

MeI

Edge inner product inverse matrix.

MeMu

Edge property inner product matrix.

MeMuI

Edge property inner product inverse matrix.

MeMui

Edge property inner product matrix.

MeMuiI

Edge property inner product inverse matrix.

MeRho

Edge property inner product matrix.

MeRhoI

Edge property inner product inverse matrix.

MeSigma

Edge property inner product matrix.

MeSigmaI

Edge property inner product inverse matrix.

Mf

Face inner product matrix.

MfI

Face inner product inverse matrix.

MfMu

Face property inner product matrix.

MfMuI

Face property inner product inverse matrix.

MfMui

Face property inner product matrix.

MfMuiI

Face property inner product inverse matrix.

MfRho

Face property inner product matrix.

MfRhoI

Face property inner product inverse matrix.

MfSigma

Face property inner product matrix.

MfSigmaI

Face property inner product inverse matrix.

Mn

Node inner product matrix.

MnI

Node inner product inverse matrix.

MnMu

Node property inner product matrix.

MnMuI

Node property inner product inverse matrix.

MnMui

Node property inner product matrix.

MnMuiI

Node property inner product inverse matrix.

MnRho

Node property inner product matrix.

MnRhoI

Node property inner product inverse matrix.

MnSigma

Node property inner product matrix.

MnSigmaI

Node property inner product inverse matrix.

clean_on_model_update

A list of solver objects to clean when the model is updated

counter

SimPEG Counter object to store iterations and run-times.

deleteTheseOnModelUpdate

HasModel.deleteTheseOnModelUpdate has been deprecated.

forward_only

Whether to store the factorizations of the inverses of the system matrices.

mesh

Mesh for the simulation.

model

The inversion model.

mu

Magnetic permeability (h/m) physical property model.

muDeriv

Derivative of Magnetic Permeability (H/m) wrt the model.

muMap

Mapping of the inversion model to Magnetic Permeability (H/m).

mui

Inverse magnetic permeability (m/h) physical property model.

muiDeriv

Derivative of Inverse Magnetic Permeability (m/H) wrt the model.

muiMap

Mapping of the inversion model to Inverse Magnetic Permeability (m/H).

needs_model

True if a model is necessary

permittivity

Dielectric permittivity (F/m)

rho

Electrical resistivity (ohm m) physical property model.

rhoDeriv

Derivative of Electrical resistivity (Ohm m) wrt the model.

rhoMap

Mapping of the inversion model to Electrical resistivity (Ohm m).

sensitivity_path

Path to directory where sensitivity file is stored.

sigma

Electrical conductivity (s/m) physical property model.

sigmaDeriv

Derivative of Electrical conductivity (S/m) wrt the model.

sigmaMap

Mapping of the inversion model to Electrical conductivity (S/m).

solver

Numerical solver used in the forward simulation.

solver_opts

Solver-specific parameters.

storeInnerProduct

Whether to store inner product matrices

storeJ

Whether to compute and store the sensitivity matrix.

survey

The FDEM survey object.

verbose

Verbose progress printout.

MccI

Vol

Methods

Jtvec(m, v[, f])

Compute the adjoint sensitivity matrix times a vector.

Jtvec_approx(m, v[, f])

Approximation of the Jacobian transpose times a vector for the model provided.

Jvec(m, v[, f])

Compute the sensitivity matrix times a vector.

Jvec_approx(m, v[, f])

Approximation of the Jacobian times a vector for the model provided.

MccMuDeriv(u[, v, adjoint])

Derivative of MccProperty with respect to the model.

MccMuIDeriv(u[, v, adjoint])

Derivative of MccPropertyI with respect to the model.

MccMuiDeriv(u[, v, adjoint])

Derivative of MccProperty with respect to the model.

MccMuiIDeriv(u[, v, adjoint])

Derivative of MccPropertyI with respect to the model.

MccRhoDeriv(u[, v, adjoint])

Derivative of MccProperty with respect to the model.

MccRhoIDeriv(u[, v, adjoint])

Derivative of MccPropertyI with respect to the model.

MccSigmaDeriv(u[, v, adjoint])

Derivative of MccProperty with respect to the model.

MccSigmaIDeriv(u[, v, adjoint])

Derivative of MccPropertyI with respect to the model.

MeMuDeriv(u[, v, adjoint])

Derivative of MeProperty with respect to the model.

MeMuIDeriv(u[, v, adjoint])

Derivative of MePropertyI with respect to the model.

MeMuiDeriv(u[, v, adjoint])

Derivative of MeProperty with respect to the model.

MeMuiIDeriv(u[, v, adjoint])

Derivative of MePropertyI with respect to the model.

MeRhoDeriv(u[, v, adjoint])

Derivative of MeProperty with respect to the model.

MeRhoIDeriv(u[, v, adjoint])

Derivative of MePropertyI with respect to the model.

MeSigmaDeriv(u[, v, adjoint])

Derivative of MeProperty with respect to the model.

MeSigmaIDeriv(u[, v, adjoint])

Derivative of MePropertyI with respect to the model.

MfMuDeriv(u[, v, adjoint])

Derivative of MfProperty with respect to the model.

MfMuIDeriv(u[, v, adjoint])

I Derivative of MfPropertyI with respect to the model.

MfMuiDeriv(u[, v, adjoint])

Derivative of MfProperty with respect to the model.

MfMuiIDeriv(u[, v, adjoint])

I Derivative of MfPropertyI with respect to the model.

MfRhoDeriv(u[, v, adjoint])

Derivative of MfProperty with respect to the model.

MfRhoIDeriv(u[, v, adjoint])

I Derivative of MfPropertyI with respect to the model.

MfSigmaDeriv(u[, v, adjoint])

Derivative of MfProperty with respect to the model.

MfSigmaIDeriv(u[, v, adjoint])

I Derivative of MfPropertyI with respect to the model.

MnMuDeriv(u[, v, adjoint])

Derivative of MnProperty with respect to the model.

MnMuIDeriv(u[, v, adjoint])

Derivative of MnPropertyI with respect to the model.

MnMuiDeriv(u[, v, adjoint])

Derivative of MnProperty with respect to the model.

MnMuiIDeriv(u[, v, adjoint])

Derivative of MnPropertyI with respect to the model.

MnRhoDeriv(u[, v, adjoint])

Derivative of MnProperty with respect to the model.

MnRhoIDeriv(u[, v, adjoint])

Derivative of MnPropertyI with respect to the model.

MnSigmaDeriv(u[, v, adjoint])

Derivative of MnProperty with respect to the model.

MnSigmaIDeriv(u[, v, adjoint])

Derivative of MnPropertyI with respect to the model.

dpred([m, f])

Predicted data for the model provided.

fields([m])

Compute and return the fields for the model provided.

fieldsPair

alias of Fields3DCurrentDensity

getA(freq)

System matrix for the frequency provided.

getADeriv(freq, u, v[, adjoint])

Derivative operation for the system matrix times a vector.

getADeriv_mu(freq, u, v[, adjoint])

Permeability derivative operation for the system matrix times a vector.

getADeriv_rho(freq, u, v[, adjoint])

Resistivity derivative operation for the system matrix times a vector.

getJ(m[, f])

Generate the full sensitivity matrix.

getJtJdiag(m[, W, f])

Return the diagonal of \(\mathbf{J^T J}\).

getRHS(freq)

Right-hand sides for the given frequency.

getRHSDeriv(freq, src, v[, adjoint])

Derivative of the right-hand side times a vector for a given source and frequency.

getSourceTerm(freq)

Returns the discrete source terms for the frequency provided.

make_synthetic_data(m[, relative_error, ...])

Make synthetic data for the model and Gaussian noise provided.

residual(m, dobs[, f])

The data residual.

Notes

Here, we start with the Maxwell’s equations in the frequency-domain where a \(+i\omega t\) Fourier convention is used:

\[\begin{split}\begin{align} &\nabla \times \vec{E} + i\omega \vec{B} = - i \omega \vec{S}_m \\ &\nabla \times \vec{H} - \vec{J} = \vec{S}_e \end{align}\end{split}\]

where \(\vec{S}_e\) is an electric source term that defines a source current density, and \(\vec{S}_m\) magnetic source term that defines a source magnetic flux density. For now, we neglect displacement current (the permittivity attribute is None). We define the constitutive relations for the electrical resistivity \(\rho\) and magnetic permeability \(\mu\) as:

\[\begin{split}\vec{E} &= \rho \vec{J} \\ \vec{B} &= \mu \vec{H}\end{split}\]

We then take the inner products of all previous expressions with a vector test function \(\vec{u}\). Through vector calculus identities and the divergence theorem, we obtain:

\[\begin{split}& \int_\Omega (\nabla \times \vec{u}) \cdot \vec{E} \; dv - \oint_{\partial \Omega} \vec{u} \cdot (\vec{E} \times \hat{n} ) \, da + i \omega \int_\Omega \vec{u} \cdot \vec{B} \, dv = - i \omega \int_\Omega \vec{u} \cdot \vec{S}_m dv \\ & \int_\Omega \vec{u} \cdot (\nabla \times \vec{H} ) \, dv - \int_\Omega \vec{u} \cdot \vec{J} \, dv = \int_\Omega \vec{u} \cdot \vec{S}_j \, dv\\ & \int_\Omega \vec{u} \cdot \vec{E} \, dv = \int_\Omega \vec{u} \cdot \rho \vec{J} \, dv \\ & \int_\Omega \vec{u} \cdot \vec{B} \, dv = \int_\Omega \vec{u} \cdot \mu \vec{H} \, dv\end{split}\]

Assuming natural boundary conditions, the surface integral is zero.

The above expressions are discretized in space according to the finite volume method. The discrete magnetic fields \(\mathbf{h}\) are defined on mesh edges, and the discrete current densities \(\mathbf{j}\) are defined on mesh faces. This implies \(\mathbf{b}\) must be defined on mesh edges and \(\mathbf{e}\) must be defined on mesh faces. Where \(\mathbf{u_e}\) and \(\mathbf{u_f}\) represent test functions discretized to edges and faces, respectively, we obtain the following set of discrete inner-products:

\[\begin{split}&\mathbf{u_e^T C^T M_f \, e } + i \omega \mathbf{u_e^T M_e b} = - i\omega \mathbf{u_e^T s_m} \\ &\mathbf{u_f^T C \, h} - \mathbf{u_f^T j} = \mathbf{u_f^T s_e} \\ &\mathbf{u_f^T M_f e} = \mathbf{u_f^T M_{f\rho} j} \\ &\mathbf{u_e^T M_e b} = \mathbf{u_e^T M_{e \mu} h}\end{split}\]

where

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

  • \(\mathbf{s_m}\) and \(\mathbf{s_e}\) are the integrated magnetic and electric source terms, respectively

  • \(\mathbf{M_e}\) is the edge inner-product matrix

  • \(\mathbf{M_f}\) is the face inner-product matrix

  • \(\mathbf{M_{f\rho}}\) is the inner-product matrix for resistivities projected to faces

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

By cancelling like-terms and combining the discrete expressions to solve for the current density, we obtain:

\[\mathbf{A \, j} = \mathbf{q}\]

where

  • \(\mathbf{A} = \mathbf{C M_{e\mu}^{-1} C^T M_{f\rho} + i\omega \mathbf{I}\)

  • \(\mathbf{q} = - i \omega \mathbf{s_e} - i \omega \mathbf{C M_{e\mu}^{-1} s_m}\)