simpeg.electromagnetics.time_domain.Simulation3DHierarchicalElectricField#
- class simpeg.electromagnetics.time_domain.Simulation3DHierarchicalElectricField(mesh, survey=None, *, edge_area_conductance=None, edge_area_conductance_map=None, **kwargs)[source]#
Bases:
BaseHierarchicalElectricalSimulation,Simulation3DElectricField3D hierarchical TDEM simulation in terms of the electric field.
This simulation solves for the electric field at each time-step. In this formulation, the electric fields are defined on mesh edges and the magnetic flux density is defined on mesh faces; i.e. it is an EB formulation. This simulation adopts the hierarchical framework wherein:
Thick structures are parameterized as conductivities at cell centers. This property and the corresponding mapping are set with sigma and sigmaMap.
Sheet-like structures can be parameterized as conductances on mesh faces. This property and the corresponding mapping are set with face_conductance and face_conductance_map.
Wire-like structures can be parameterized as area-integrated conductivities on mesh edges. This property and the corresponding mapping as set with edge_area_conductance and edge_area_conductance_map.
See the Notes section for a comprehensive description of the formulation.
Attributes
Inverse of the factored system matrix for the DC resistivity problem.
Get cell inner product matrix.
Get inverse of cell inner product matrix.
Get cell center property inner product matrix.
Get cell center property inner product inverse matrix.
Get cell center property inner product matrix.
Get cell center property inner product inverse matrix.
Get cell center property inner product matrix.
Get cell center property inner product inverse matrix.
Get cell center property inner product matrix.
Get cell center property inner product inverse matrix.
Get edge inner product matrix.
Get inverse of edge inner product matrix.
Get edge property inner product matrix.
Get edge property inner product inverse matrix.
Get edge property inner product matrix.
Get edge property inner product inverse matrix.
Get edge property inner product matrix.
Get edge property inner product inverse matrix.
Get conductivity inner-product matrix.
Get inverse of conductivity inner-product matrix.
Get face inner product matrix.
Get inverse of face inner product matrix.
Get face property inner product matrix.
Get face property inner product inverse matrix.
Get face property inner product matrix.
Get face property inner product inverse matrix.
Get face property inner product matrix.
Get face property inner product inverse matrix.
Get face property inner product matrix.
Get face property inner product inverse matrix.
Get node inner product matrix.
Get inverse of node inner product matrix.
Get node property inner product matrix.
Get node property inner product inverse matrix.
Get node property inner product matrix.
Get node property inner product inverse matrix.
Get node property inner product matrix.
Get node property inner product inverse matrix.
Get node property inner product matrix.
Get node property inner product inverse matrix.
Get volumes.
A list of solver objects to clean when the model is updated
SimPEG
Counterobject to store iterations and run-times.HasModel.deleteTheseOnModelUpdate has been deprecated.
Threshold used when determining the unique time-step lengths.
Electrical conductivity times cross-sectional area on edge elements (sm).
Derivative of Electrical conductivity times cross-sectional area on edge elements (Sm).
Mapping of the inversion model to Electrical conductivity times cross-sectional area on edge elements (Sm)..
Electrical conductivity times thickness on face elements (s).
Derivative of Electrical conductivity times thickness on face elements (S).
Mapping of the inversion model to Electrical conductivity times thickness on face elements (S)..
Mesh for the simulation.
The inversion model.
Magnetic permeability (h/m) physical property model.
Derivative of Magnetic Permeability (H/m) wrt the model.
Mapping of the inversion model to Magnetic Permeability (H/m).
Inverse magnetic permeability (m/h) physical property model.
Derivative of Inverse Magnetic Permeability (m/H) wrt the model.
Mapping of the inversion model to Inverse Magnetic Permeability (m/H).
Total number of time steps.
True if a model is necessary
Electrical resistivity (ohm m) physical property model.
Derivative of Electrical resistivity (Ohm m) wrt the model.
Mapping of the inversion model to Electrical resistivity (Ohm m).
Path to directory where sensitivity file is stored.
Electrical conductivity (s/m) physical property model.
Derivative of Electrical conductivity (S/m) wrt the model.
Mapping of the inversion model to Electrical conductivity (S/m).
Numerical solver used in the forward simulation.
Set solver-specific parameters.
Whether to store inner product matrices
Whether the factorization for each unique time step is stored.
The TDEM survey object.
Initial time, in seconds, for the time-dependent forward simulation.
Time mesh for easy interpolation to observation times.
Time step lengths, in seconds, for the time domain simulation.
Evaluation times.
Verbose progress printout.
Methods
Fields_DerivsJtvec(m, v[, f])Compute the Jacobian transpose times a vector for the model provided.
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])Get derivative of MccProperty with respect to the model.
MccMuIDeriv(u[, v, adjoint])Get derivative of MccPropertyI with respect to the model.
MccMuiDeriv(u[, v, adjoint])Get derivative of MccProperty with respect to the model.
MccMuiIDeriv(u[, v, adjoint])Get derivative of MccPropertyI with respect to the model.
MccRhoDeriv(u[, v, adjoint])Get derivative of MccProperty with respect to the model.
MccRhoIDeriv(u[, v, adjoint])Get derivative of MccPropertyI with respect to the model.
MccSigmaDeriv(u[, v, adjoint])Get derivative of MccProperty with respect to the model.
MccSigmaIDeriv(u[, v, adjoint])Get derivative of MccPropertyI with respect to the model.
MeMuDeriv(u[, v, adjoint])Get derivative of MeProperty with respect to the model.
MeMuIDeriv(u[, v, adjoint])Get derivative of MePropertyI with respect to the model.
MeMuiDeriv(u[, v, adjoint])Get derivative of MeProperty with respect to the model.
MeMuiIDeriv(u[, v, adjoint])Get derivative of MePropertyI with respect to the model.
MeRhoDeriv(u[, v, adjoint])Get derivative of MeProperty with respect to the model.
MeRhoIDeriv(u[, v, adjoint])Get derivative of MePropertyI with respect to the model.
MeSigmaDeriv(u[, v, adjoint])Compute derivative operation for conductivity inner-product matrix.
MeSigmaIDeriv(u[, v, adjoint])Compute derivative operation for inversion of conductivity inner-product matrix.
MfMuDeriv(u[, v, adjoint])Get derivative of MfProperty with respect to the model.
MfMuIDeriv(u[, v, adjoint])Get derivative of MfPropertyI with respect to the model.
MfMuiDeriv(u[, v, adjoint])Get derivative of MfProperty with respect to the model.
MfMuiIDeriv(u[, v, adjoint])Get derivative of MfPropertyI with respect to the model.
MfRhoDeriv(u[, v, adjoint])Get derivative of MfProperty with respect to the model.
MfRhoIDeriv(u[, v, adjoint])Get derivative of MfPropertyI with respect to the model.
MfSigmaDeriv(u[, v, adjoint])Get derivative of MfProperty with respect to the model.
MfSigmaIDeriv(u[, v, adjoint])Get derivative of MfPropertyI with respect to the model.
MnMuDeriv(u[, v, adjoint])Get derivative of MnProperty with respect to the model.
MnMuIDeriv(u[, v, adjoint])Get derivative of MnPropertyI with respect to the model.
MnMuiDeriv(u[, v, adjoint])Get derivative of MnProperty with respect to the model.
MnMuiIDeriv(u[, v, adjoint])Get derivative of MnPropertyI with respect to the model.
MnRhoDeriv(u[, v, adjoint])Get derivative of MnProperty with respect to the model.
MnRhoIDeriv(u[, v, adjoint])Get derivative of MnPropertyI with respect to the model.
MnSigmaDeriv(u[, v, adjoint])Get derivative of MnProperty with respect to the model.
MnSigmaIDeriv(u[, v, adjoint])Get 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.
fieldsPairgetAdc()Return the system matrix for the DC resistivity problem.
getAdcDeriv(u, v[, adjoint])Return derivative operation for the DC resistivity system matrix times a vector.
getAdiag(tInd)Return diagonal system matrix for the time-step index provided.
getAdiagDeriv(tInd, u, v[, adjoint])Return derivative operation for the diagonal system matrix times a vector.
getAsubdiag(tInd)Return sub-diagonal system matrix for the time-step index provided.
getAsubdiagDeriv(tInd, u, v[, adjoint])Return derivative operation for the sub-diagonal system matrix times a vector.
Return the fields for all sources at the initial time.
getInitialFieldsDeriv(src, v[, adjoint, f])Return derivative of initial fields with respect to the model for a given source.
getRHS(tInd)Return right-hand sides for the given time index.
getRHSDeriv(tInd, src, v[, adjoint])Return right-hand side derivative times a vector for a given source and time index.
getSourceTerm(tInd)Return the discrete source terms for the time index 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 quasi-static approximation for Maxwell’s equations by neglecting electric displacement:
\[\begin{split}&\nabla \times \vec{e} + \frac{\partial \vec{b}}{\partial t} = - \frac{\partial \vec{s}_m}{\partial t} \\ &\nabla \times \vec{h} - \vec{j} = \vec{s}_e\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. We define the constitutive relations for the electrical conductivity \(\sigma\) and magnetic permeability \(\mu\) as:
\[\begin{split}\vec{j} &= \sigma \vec{e} \\ \vec{h} &= \mu^{-1} \vec{b}\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 \vec{u} \cdot (\nabla \times \vec{e}) \, dv + \int_\Omega \vec{u} \cdot \frac{\partial \vec{b}}{\partial t} \, dv = - \int_\Omega \vec{u} \cdot \frac{\partial \vec{s}_m}{\partial t} \, dv \\ & \int_\Omega (\nabla \times \vec{u}) \cdot \vec{h} \, dv - \oint_{\partial \Omega} \vec{u} \cdot (\vec{h} \times \hat{n}) \, da - \int_\Omega \vec{u} \cdot \vec{j} \, dv = \int_\Omega \vec{u} \cdot \vec{s}_e \, dv \\ & \int_\Omega \vec{u} \cdot \vec{j} \, dv = \int_\Omega \vec{u} \cdot \sigma \vec{e} \, dv \\ & \int_\Omega \vec{u} \cdot \vec{h} \, dv = \int_\Omega \vec{u} \cdot \mu^{-1} \vec{b} \, dv\end{split}\]Assuming natural boundary conditions, the surface integral is zero.
The hierarchical approach assumes the existence of infinitesimally thin plate-like regions between adjacent mesh faces and infinitesimally thin wire-like regions between adjacent mesh edges. We re-express the inner-product with Ohm’s law as follows:
\[\begin{split}\int_\Omega \vec{u} \cdot \vec{j} \, dv =& \sum_{n}^{nc} \int \vec{u} \cdot \sigma_n \vec{e} \, dv \\ &+ \sum_{n}^{nf} \int \vec{u} \cdot \tau_n \vec{e} \, da \\ &+ \sum_{n}^{ne} \int \vec{u} \cdot \kappa_n \vec{e} \, d\ell\end{split}\]where \(\sigma_n\) is the conductivity in cell n, \(\tau_n\) is the face conductance on face n, and \(\kappa_n\) is the area-integrated conductivity on edge n.
The above expressions are discretized in space according to the finite volume method. The discrete electric fields \(\mathbf{e}\) are defined on mesh edges, and the discrete magnetic flux densities \(\mathbf{b}\) are defined on mesh faces. This implies \(\mathbf{j}\) must be defined on mesh edges and \(\mathbf{h}\) 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_f^T C e} + \mathbf{u_f^T } \, \frac{\partial \mathbf{b}}{\partial t} = - \mathbf{u_f^T } \, \frac{\partial \mathbf{s_m}}{\partial t} \\ &\mathbf{u_e^T C^T M_f h} - \mathbf{u_e^T M_e j} = \mathbf{u_e^T s_e} \\ &\mathbf{u_e^T M_e j} = \mathbf{u_e^T M_{e\Sigma} e} \\ &\mathbf{u_f^T M_f h} = \mathbf{u_f^T M_{f \frac{1}{\mu}} b}\end{split}\]where:
\[\mathbf{M_{e\Sigma}} = \mathbf{M_{e\sigma} + M_{e\tau} + M_{e\kappa}}\]and
\(\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_{e\sigma}}\) is the inner-product matrix for electrical conductivities projected to edges
\(\mathbf{M_{e\tau}}\) is the inner-product matrix for conductances projected to edges
\(\mathbf{M_{e\kappa}}\) is the inner-product matrix for area integrated conductivities projected to edges
\(\mathbf{M_{f\frac{1}{\mu}}}\) is the inner-product matrix for inverse permeabilities projected to faces
By cancelling like-terms and combining the discrete expressions in terms of the electric field, we obtain:
\[\mathbf{C^T M_{f\frac{1}{\mu}} C e} + \mathbf{M_{e\Sigma}}\frac{\partial \mathbf{e}}{\partial t} = \mathbf{C^T M_{f\frac{1}{\mu}}} \frac{\partial \mathbf{s_m}}{\partial t} - \frac{\partial \mathbf{s_e}}{\partial t}\]Finally, we discretize in time according to backward Euler. The discrete electric fields on mesh edges at time \(t_k > t_0\) is obtained by solving the following at each time-step:
\[\mathbf{A}_k \mathbf{b}_k = \mathbf{q}_k - \mathbf{B}_k \mathbf{b}_{k-1}\]where \(\Delta t_k = t_k - t_{k-1}\) and
\[\begin{split}&\mathbf{A}_k = \mathbf{C^T M_{f\frac{1}{\mu}} C} + \frac{1}{\Delta t_k} \mathbf{M_{e\Sigma}} \\ &\mathbf{B}_k = -\frac{1}{\Delta t_k} \mathbf{M_{e\Sigma}} \\ &\mathbf{q}_k = \frac{1}{\Delta t_k} \mathbf{C^T M_{f\frac{1}{\mu}}} \big [ \mathbf{s}_{\mathbf{m}, k} - \mathbf{s}_{\mathbf{m}, k-1} \big ] -\frac{1}{\Delta t_k} \big [ \mathbf{s}_{\mathbf{e}, k} - \mathbf{s}_{\mathbf{e}, k-1}\big ]\end{split}\]Although the following system is never explicitly formed, we can represent the solution at all time-steps as:
\[\begin{split}\begin{bmatrix} \mathbf{A_1} & & & & \\ \mathbf{B_2} & \mathbf{A_2} & & & \\ & & \ddots & & \\ & & & \mathbf{B_n} & \mathbf{A_n} \end{bmatrix} \begin{bmatrix} \mathbf{e_1} \\ \mathbf{e_2} \\ \vdots \\ \mathbf{e_n} \end{bmatrix} = \begin{bmatrix} \mathbf{q_1} \\ \mathbf{q_2} \\ \vdots \\ \mathbf{q_n} \end{bmatrix} - \begin{bmatrix} \mathbf{B_1 e_0} \\ \mathbf{0} \\ \vdots \\ \mathbf{0} \end{bmatrix}\end{split}\]where the electric fields at the initial time \(\mathbf{e_0}\) are computed analytically or numerically depending on whether the source is galvanic and carries non-zero current at the initial time.