\[\renewcommand{\div}{\nabla\cdot\,} \newcommand{\grad}{\vec \nabla} \newcommand{\curl}{{\vec \nabla}\times\,} \newcommand{\dcurl}{{\mathbf C}} \newcommand{\dgrad}{{\mathbf G}} \newcommand{\Acf}{{\mathbf A_c^f}} \newcommand{\Ace}{{\mathbf A_c^e}} \renewcommand{\S}{{\mathbf \Sigma}} \renewcommand{\Div}{{\mathbf {Div}}} \renewcommand{\Grad}{{\mathbf {Grad}}} \newcommand{\St}{{\mathbf \Sigma_\tau}} \newcommand{\diag}{\mathbf{diag}} \newcommand{\M}{{\mathbf M}} \newcommand{\Me}{{\M^e}} \newcommand{\Mes}[1]{{\M^e_{#1}}} \newcommand{\be}{\mathbf{e}} \newcommand{\bj}{\mathbf{j}} \newcommand{\bphi}{\mathbf{\phi}} \newcommand{\bq}{\mathbf{q}} \newcommand{\bJ}{\mathbf{J}} \newcommand{\bG}{\mathbf{G}} \newcommand{\bP}{\mathbf{P}} \newcommand{\bA}{\mathbf{A}} \newcommand{\bm}{\mathbf{m}} \newcommand{\B}{\vec{B}} \newcommand{\D}{\vec{D}} \renewcommand{\H}{\vec{H}} \renewcommand {\j} { {\vec j} } \newcommand {\h} { {\vec h} } \renewcommand {\b} { {\vec b} } \newcommand {\e} { {\vec e} } \newcommand {\c} { {\vec c} } \renewcommand {\d} { {\vec d} } \renewcommand {\u} { {\vec u} } \newcommand{\I}{\vec{I}}\]

Direct Current Resistivity

SimPEG.electromagnetics.static.resistivity and SimPEG.electromagnetics.static.induced_polarization uses SimPEG as the framework for the forward and inverse direct current (DC) resistivity and induced polarization (IP) geophysical problems.

DC resistivity survey

Electrical resistivity of subsurface materials is measured by causing an electrical current to flow in the earth between one pair of electrodes while the voltage across a second pair of electrodes is measured. The result is an “apparent” resistivity which is a value representing the weighted average resistivity over a volume of the earth. Variations in this measurement are caused by variations in the soil, rock, and pore fluid electrical resistivity. Surveys require contact with the ground, so they can be labour intensive. Results are sometimes interpreted directly, but more commonly, 1D, 2D or 3D models are estimated using inversion procedures (GPG).

Background

As direct current (DC) implies, in DC resistivity survey, we assume steady-state. We consider Maxwell’s equations in steady state as

\[ \begin{align}\begin{aligned}\begin{split}\curl \frac{1}{\mu} \vec{b} - \j = \j_s \\\end{split}\\\curl \e = 0\end{aligned}\end{align} \]

Then by taking \(\div\) of the first equation, we have

\[\begin{split}- \div\j = q \\\end{split}\]

where

\[\div \j_s = q = I(\delta(\vec{r}-\vec{r}_{s+})-\delta(\vec{r}-\vec{r}_{s-}))\]

Since \(\curl \e = 0\), we have

\[\e = \grad \phi\]

And by Ohm’s law, we have

\[\j = \sigma \grad \phi\]

Finally, we can compute the solution of the system:

\[ \begin{align}\begin{aligned}- \div\j = q\\\j = \sigma \grad \phi\\\frac{\partial \phi}{\partial r}\Big|_{\partial \Omega_{BC}} = 0\end{aligned}\end{align} \]

Discretization

By using finite volume method (FVM), we discretize our system as

\[ \begin{align}\begin{aligned}-\Div \bj = \bq\\\diag(\Acf^{T}\sigma^{-1}) \bj = \Grad \bphi\end{aligned}\end{align} \]

Here boundary condtions are embedded in the discrete differential operators. With some linear algebra we have

\[\bA\bphi = -\bq\]

where

\[\bA = \Div (\diag(\Acf^{T}\sigma^{-1}))^{-1} \Grad\]

By solving this linear equation, we can compute the solution of \(\phi\). Based on this discretization, we derive sensitivity in discretized space. Sensitivity matrix can be in general can be written as

\[\bJ = -\bP\bA^{-1}\bG\]

where

\[ \begin{align}\begin{aligned}\bP: \text{Projection}\\\bJ = \bP\frac{\partial \phi}{\partial \bm}\end{aligned}\end{align} \]

Here \(\bm\) indicates model parameters in discretized space.

../../_images/sphx_glr_plot_dc_analytic_001.png

API for DC codes

Simulation

class SimPEG.electromagnetics.static.resistivity.simulation.BaseDCSimulation(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.base.BaseEMSimulation

Base DC Problem

Required Properties:

  • counter (Counter): A SimPEG.utils.Counter object, an instance of Counter

  • mesh (BaseMesh): a discretize mesh instance, an instance of BaseMesh

  • sensitivity_path (String): path to store the sensitivty, a unicode string, Default: ./sensitivity/

  • None

  • solver_opts (Dictionary): solver options as a kwarg dict, a dictionary

  • storeJ (Boolean): store the sensitivity matrix?, a boolean, Default: False

  • survey (Survey): a DC survey object, an instance of Survey

Optional Properties:

  • model (Model): Inversion model., a numpy array of <class ‘float’>, <class ‘int’> with shape (*) or (*, *)

  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.2566370614359173e-06

  • mui (PhysicalProperty): Inverse Magnetic Permeability (m/H), a physical property

  • rho (PhysicalProperty): Electrical resistivity (Ohm m), a physical property

  • rhoMap (Mapping): Mapping of Electrical resistivity (Ohm m) to the inversion model., a SimPEG Map

  • sigma (PhysicalProperty): Electrical conductivity (S/m), a physical property

  • sigmaMap (Mapping): Mapping of Electrical conductivity (S/m) to the inversion model., a SimPEG Map

Other Properties:

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

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

property survey

survey (Survey): a DC survey object, an instance of Survey

property storeJ

storeJ (Boolean): store the sensitivity matrix?, a boolean, Default: False

Ainv = None
gtgdiag = None
fields(m=None, calcJ=True)[source]

u = fields(m) The field given the model. :param numpy.ndarray m: model :rtype: numpy.ndarray :return: u, the fields

getJ(m, f=None)[source]
dpred(m, f=None)[source]

Create the projected data from a model. The fields, f, (if provided) will be used for the predicted data instead of recalculating the fields (which may be expensive!).

\[d_\text{pred} = P(f(m))\]

Where P is a projection of the fields onto the data space.

getJtJdiag(m, W=None)[source]

Return the diagonal of JtJ

Jvec(m, v, f=None)[source]

Compute sensitivity matrix (J) and vector (v) product.

Jtvec(m, v, f=None)[source]

Compute adjoint sensitivity matrix (J^T) and vector (v) product.

getSourceTerm()[source]

Evaluates the sources, and puts them in matrix form :rtype: tuple :return: q (nC or nN, nSrc)

property deleteTheseOnModelUpdate

matrices to be deleted if the model maps for conductivity and/or permeability are updated

class SimPEG.electromagnetics.static.resistivity.simulation.Simulation3DCellCentered(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.simulation.BaseDCSimulation

3D cell centered DC problem

Required Properties:

  • counter (Counter): A SimPEG.utils.Counter object, an instance of Counter

  • mesh (BaseMesh): a discretize mesh instance, an instance of BaseMesh

  • sensitivity_path (String): path to store the sensitivty, a unicode string, Default: ./sensitivity/

  • None

  • solver_opts (Dictionary): solver options as a kwarg dict, a dictionary

  • storeJ (Boolean): store the sensitivity matrix?, a boolean, Default: False

  • survey (Survey): a DC survey object, an instance of Survey

Optional Properties:

  • model (Model): Inversion model., a numpy array of <class ‘float’>, <class ‘int’> with shape (*) or (*, *)

  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.2566370614359173e-06

  • mui (PhysicalProperty): Inverse Magnetic Permeability (m/H), a physical property

  • rho (PhysicalProperty): Electrical resistivity (Ohm m), a physical property

  • rhoMap (Mapping): Mapping of Electrical resistivity (Ohm m) to the inversion model., a SimPEG Map

  • sigma (PhysicalProperty): Electrical conductivity (S/m), a physical property

  • sigmaMap (Mapping): Mapping of Electrical conductivity (S/m) to the inversion model., a SimPEG Map

Other Properties:

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

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

fieldsPair[source]

alias of SimPEG.electromagnetics.static.resistivity.fields.Fields3DCellCentered

bc_type = 'Dirichlet'
getA()[source]

Make the A matrix for the cell centered DC resistivity problem A = D MfRhoI G

getADeriv(u, v, adjoint=False)[source]
getRHS()[source]

RHS for the DC problem q

getRHSDeriv(source, v, adjoint=False)[source]

Derivative of the right hand side with respect to the model

setBC()[source]
class SimPEG.electromagnetics.static.resistivity.simulation.Simulation3DNodal(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.simulation.BaseDCSimulation

3D nodal DC problem

Required Properties:

  • counter (Counter): A SimPEG.utils.Counter object, an instance of Counter

  • mesh (BaseMesh): a discretize mesh instance, an instance of BaseMesh

  • sensitivity_path (String): path to store the sensitivty, a unicode string, Default: ./sensitivity/

  • None

  • solver_opts (Dictionary): solver options as a kwarg dict, a dictionary

  • storeJ (Boolean): store the sensitivity matrix?, a boolean, Default: False

  • survey (Survey): a DC survey object, an instance of Survey

Optional Properties:

  • model (Model): Inversion model., a numpy array of <class ‘float’>, <class ‘int’> with shape (*) or (*, *)

  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.2566370614359173e-06

  • mui (PhysicalProperty): Inverse Magnetic Permeability (m/H), a physical property

  • rho (PhysicalProperty): Electrical resistivity (Ohm m), a physical property

  • rhoMap (Mapping): Mapping of Electrical resistivity (Ohm m) to the inversion model., a SimPEG Map

  • sigma (PhysicalProperty): Electrical conductivity (S/m), a physical property

  • sigmaMap (Mapping): Mapping of Electrical conductivity (S/m) to the inversion model., a SimPEG Map

Other Properties:

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

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

fieldsPair[source]

alias of SimPEG.electromagnetics.static.resistivity.fields.Fields3DNodal

getA()[source]

Make the A matrix for the cell centered DC resistivity problem A = G.T MeSigma G

getADeriv(u, v, adjoint=False)[source]

Product of the derivative of our system matrix with respect to the model and a vector

getRHS()[source]

RHS for the DC problem q

getRHSDeriv(source, v, adjoint=False)[source]

Derivative of the right hand side with respect to the model

SimPEG.electromagnetics.static.resistivity.simulation.Simulation3DCellCentred[source]

alias of SimPEG.electromagnetics.static.resistivity.simulation.Simulation3DCellCentered

class SimPEG.electromagnetics.static.resistivity.simulation.Problem3D_N(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.simulation.Simulation3DNodal

This class has been deprecated, see Simulation3DNodal for documentation

class SimPEG.electromagnetics.static.resistivity.simulation.Problem3D_CC(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.simulation.Simulation3DCellCentered

This class has been deprecated, see Simulation3DCellCentered for documentation

class SimPEG.electromagnetics.static.resistivity.simulation_2d.BaseDCSimulation2D(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.base.BaseEMSimulation

Base 2.5D DC problem

Required Properties:

  • counter (Counter): A SimPEG.utils.Counter object, an instance of Counter

  • mesh (BaseMesh): a discretize mesh instance, an instance of BaseMesh

  • sensitivity_path (String): path to store the sensitivty, a unicode string, Default: ./sensitivity/

  • None

  • solver_opts (Dictionary): solver options as a kwarg dict, a dictionary

  • storeJ (Boolean): store the sensitivity matrix?, a boolean, Default: False

  • survey (Survey): a DC survey object, an instance of Survey

Optional Properties:

  • model (Model): Inversion model., a numpy array of <class ‘float’>, <class ‘int’> with shape (*) or (*, *)

  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.2566370614359173e-06

  • mui (PhysicalProperty): Inverse Magnetic Permeability (m/H), a physical property

  • nky (Integer): Number of kys to use in wavenumber space, an integer, Default: 11

  • rho (PhysicalProperty): Electrical resistivity (Ohm m), a physical property

  • rhoMap (Mapping): Mapping of Electrical resistivity (Ohm m) to the inversion model., a SimPEG Map

  • sigma (PhysicalProperty): Electrical conductivity (S/m), a physical property

  • sigmaMap (Mapping): Mapping of Electrical conductivity (S/m) to the inversion model., a SimPEG Map

Other Properties:

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

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

property survey

survey (Survey): a DC survey object, an instance of Survey

property storeJ

storeJ (Boolean): store the sensitivity matrix?, a boolean, Default: False

fieldsPair[source]

alias of SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2D

fieldsPair_fwd[source]

alias of SimPEG.electromagnetics.static.resistivity.fields.FieldsDC

fix_Jmatrix = False
property nky

nky (Integer): Number of kys to use in wavenumber space, an integer, Default: 11

set_geometric_factor(geometric_factor)[source]
fields(m)[source]

u = fields(m) The field given the model. :param numpy.ndarray m: model :rtype: numpy.ndarray :return: u, the fields

fields_to_space(f, y=0.0)[source]
dpred(m=None, f=None)[source]

Project fields to receiver locations :param Fields u: fields object :rtype: numpy.ndarray :return: data

getJ(m, f=None)[source]

Generate Full sensitivity matrix

Jvec(m, v, f=None)[source]

Compute sensitivity matrix (J) and vector (v) product.

Jtvec(m, v, f=None)[source]

Compute adjoint sensitivity matrix (J^T) and vector (v) product.

getSourceTerm(ky)[source]

takes concept of source and turns it into a matrix

property deleteTheseOnModelUpdate

matrices to be deleted if the model maps for conductivity and/or permeability are updated

property MnSigma

Node inner product matrix for (sigma). Used in the E-B formulation

property MnSigmaDerivMat

Derivative of MnSigma with respect to the model

MnSigmaDeriv(u, v, adjoint=False)[source]

Derivative of MnSigma with respect to the model times a vector (u)

property MccRhoi

Cell inner product matrix for (rho^{-1}). Used in the H-J formulation

property MccRhoiDerivMat

Derivative of MccRho with respect to the model

MccRhoiDeriv(u, v, adjoint=False)[source]

Derivative of MccRhoi with respect to the model.

class SimPEG.electromagnetics.static.resistivity.simulation_2d.Simulation2DCellCentered(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.simulation_2d.BaseDCSimulation2D

2.5D cell centered DC problem

Required Properties:

  • counter (Counter): A SimPEG.utils.Counter object, an instance of Counter

  • mesh (BaseMesh): a discretize mesh instance, an instance of BaseMesh

  • sensitivity_path (String): path to store the sensitivty, a unicode string, Default: ./sensitivity/

  • None

  • solver_opts (Dictionary): solver options as a kwarg dict, a dictionary

  • storeJ (Boolean): store the sensitivity matrix?, a boolean, Default: False

  • survey (Survey): a DC survey object, an instance of Survey

Optional Properties:

  • model (Model): Inversion model., a numpy array of <class ‘float’>, <class ‘int’> with shape (*) or (*, *)

  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.2566370614359173e-06

  • mui (PhysicalProperty): Inverse Magnetic Permeability (m/H), a physical property

  • nky (Integer): Number of kys to use in wavenumber space, an integer, Default: 11

  • rho (PhysicalProperty): Electrical resistivity (Ohm m), a physical property

  • rhoMap (Mapping): Mapping of Electrical resistivity (Ohm m) to the inversion model., a SimPEG Map

  • sigma (PhysicalProperty): Electrical conductivity (S/m), a physical property

  • sigmaMap (Mapping): Mapping of Electrical conductivity (S/m) to the inversion model., a SimPEG Map

Other Properties:

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

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

fieldsPair[source]

alias of SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2DCellCentered

fieldsPair_fwd[source]

alias of SimPEG.electromagnetics.static.resistivity.fields.Fields3DCellCentered

bc_type = 'Mixed'
getA(ky)[source]

Make the A matrix for the cell centered DC resistivity problem A = D MfRhoI G

getADeriv(ky, u, v, adjoint=False)[source]
getRHS(ky)[source]

RHS for the DC problem q

getRHSDeriv(ky, src, v, adjoint=False)[source]

Derivative of the right hand side with respect to the model

setBC(ky=None)[source]
class SimPEG.electromagnetics.static.resistivity.simulation_2d.Simulation2DNodal(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.simulation_2d.BaseDCSimulation2D

2.5D nodal DC problem

Required Properties:

  • counter (Counter): A SimPEG.utils.Counter object, an instance of Counter

  • mesh (BaseMesh): a discretize mesh instance, an instance of BaseMesh

  • sensitivity_path (String): path to store the sensitivty, a unicode string, Default: ./sensitivity/

  • None

  • solver_opts (Dictionary): solver options as a kwarg dict, a dictionary

  • storeJ (Boolean): store the sensitivity matrix?, a boolean, Default: False

  • survey (Survey): a DC survey object, an instance of Survey

Optional Properties:

  • model (Model): Inversion model., a numpy array of <class ‘float’>, <class ‘int’> with shape (*) or (*, *)

  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.2566370614359173e-06

  • mui (PhysicalProperty): Inverse Magnetic Permeability (m/H), a physical property

  • nky (Integer): Number of kys to use in wavenumber space, an integer, Default: 11

  • rho (PhysicalProperty): Electrical resistivity (Ohm m), a physical property

  • rhoMap (Mapping): Mapping of Electrical resistivity (Ohm m) to the inversion model., a SimPEG Map

  • sigma (PhysicalProperty): Electrical conductivity (S/m), a physical property

  • sigmaMap (Mapping): Mapping of Electrical conductivity (S/m) to the inversion model., a SimPEG Map

Other Properties:

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

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

fieldsPair[source]

alias of SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2DNodal

fieldsPair_fwd[source]

alias of SimPEG.electromagnetics.static.resistivity.fields.Fields3DNodal

getA(ky)[source]

Make the A matrix for the cell centered DC resistivity problem A = D MfRhoI G

getADeriv(ky, u, v, adjoint=False)[source]
getRHS(ky)[source]

RHS for the DC problem q

getRHSDeriv(ky, src, v, adjoint=False)[source]

Derivative of the right hand side with respect to the model

SimPEG.electromagnetics.static.resistivity.simulation_2d.Simulation2DCellCentred[source]

alias of SimPEG.electromagnetics.static.resistivity.simulation_2d.Simulation2DCellCentered

class SimPEG.electromagnetics.static.resistivity.simulation_2d.Problem2D_N(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.simulation_2d.Simulation2DNodal

This class has been deprecated, see Simulation2DNodal for documentation

class SimPEG.electromagnetics.static.resistivity.simulation_2d.Problem2D_CC(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.simulation_2d.Simulation2DCellCentered

This class has been deprecated, see Simulation2DCellCentered for documentation

class SimPEG.electromagnetics.static.resistivity.simulation_1d.Simulation1DLayers(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.base.BaseEMSimulation

1D DC Simulation

Required Properties:

  • counter (Counter): A SimPEG.utils.Counter object, an instance of Counter

  • mesh (BaseMesh): a discretize mesh instance, an instance of BaseMesh

  • sensitivity_path (String): path to store the sensitivty, a unicode string, Default: ./sensitivity/

  • None

  • solver_opts (Dictionary): solver options as a kwarg dict, a dictionary

  • storeJ (Boolean): store the sensitivity, a boolean, Default: False

  • survey (Survey): a DC survey object, an instance of Survey

Optional Properties:

  • model (Model): Inversion model., a numpy array of <class ‘float’>, <class ‘int’> with shape (*) or (*, *)

  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.2566370614359173e-06

  • mui (PhysicalProperty): Inverse Magnetic Permeability (m/H), a physical property

  • rho (PhysicalProperty): Electrical resistivity (Ohm m), a physical property

  • rhoMap (Mapping): Mapping of Electrical resistivity (Ohm m) to the inversion model., a SimPEG Map

  • sigma (PhysicalProperty): Electrical conductivity (S/m), a physical property

  • sigmaMap (Mapping): Mapping of Electrical conductivity (S/m) to the inversion model., a SimPEG Map

  • thicknesses (PhysicalProperty): thicknesses of the layers, a physical property

  • thicknessesMap (Mapping): Mapping of thicknesses of the layers to the inversion model., a SimPEG Map

Other Properties:

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

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

  • thicknessesDeriv (Derivative): Derivative of thicknesses of the layers wrt the model.

property thicknesses

thicknesses of the layers

property thicknessesMap

Mapping of thicknesses of the layers to the inversion model.

property thicknessesDeriv

Derivative of thicknesses of the layers wrt the model.

property survey

survey (Survey): a DC survey object, an instance of Survey

property storeJ

storeJ (Boolean): store the sensitivity, a boolean, Default: False

data_type = 'volt'
fix_Jmatrix = False
hankel_pts_per_dec = None
hankel_filter = 'key_51_2012'
fields(m)[source]

u = fields(m) The field given the model. :param numpy.ndarray m: model :rtype: numpy.ndarray :return: u, the fields

dpred(m=None, f=None)[source]

Project fields to receiver locations :param Fields u: fields object :rtype: numpy.ndarray :return: data

getJ(m, f=None, factor=0.01)[source]

Generate Full sensitivity matrix using central difference

Jvec(m, v, f=None)[source]

Compute sensitivity matrix (J) and vector (v) product.

Jtvec(m, v, f=None)[source]

Compute adjoint sensitivity matrix (J^T) and vector (v) product.

property deleteTheseOnModelUpdate

matrices to be deleted if the model maps for conductivity and/or permeability are updated

property electrode_separations

Electrode separations

property offset

Offset between a current electrode and a potential electrode

property lambd

Spatial frequency in Hankel domain np.sqrt(kx*2 + ky**2) = lamda

property n_layer

number of layers

property geometric_factor

number of layers

Survey

class SimPEG.electromagnetics.static.resistivity.survey.Survey(*args, **kwargs)[source]

Bases: SimPEG.survey.BaseSurvey

Base DC survey

Required Properties:

  • counter (Counter): A SimPEG counter object, an instance of Counter

  • source_list (a list of BaseSrc): A list of sources for the survey, a list (each item is an instance of BaseSrc)

  • survey_geometry (StringChoice): Survey geometry of DC surveys, any of “surface”, “borehole”, “general”, Default: surface

  • survey_type (StringChoice): DC-IP Survey type, any of “dipole-dipole”, “pole-dipole”, “dipole-pole”, “pole-pole”, Default: dipole-dipole

property source_list

source_list (a list of BaseSrc): A list of sources for the survey, a list (each item is an instance of BaseSrc)

property survey_geometry

survey_geometry (StringChoice): Survey geometry of DC surveys, any of “surface”, “borehole”, “general”, Default: surface

property survey_type

survey_type (StringChoice): DC-IP Survey type, any of “dipole-dipole”, “pole-dipole”, “dipole-pole”, “pole-pole”, Default: dipole-dipole

property locations_a

Location of the positive (+) current electrodes for each datum

property locations_b

Location of the negative (-) current electrodes for each datum

property locations_m

Location of the positive (+) potential electrodes for each datum

property locations_n

Location of the negative (-) potential electrodes for each datum

property a_locations

locations_a.a_locations has been deprecated. See locations_a for documentation

property b_locations

locations_b.b_locations has been deprecated. See locations_b for documentation

property m_locations

locations_m.m_locations has been deprecated. See locations_m for documentation

property n_locations

locations_n.n_locations has been deprecated. See locations_n for documentation

property electrode_locations

Unique locations of the A, B, M, N electrodes

set_geometric_factor(data_type='volt', survey_type='dipole-dipole', space_type='half-space')[source]
getABMN_locations()[source]
drape_electrodes_on_topography(mesh, actind, option='top', topography=None, force=False)[source]

Shift electrode locations to be on [top] of the active cells.

drapeTopo(*args, **kwargs)[source]
class SimPEG.electromagnetics.static.resistivity.survey.Survey_ky(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.survey.Survey

This class has been deprecated, see Survey for documentation

class SimPEG.electromagnetics.static.resistivity.sources.BaseSrc(*args, **kwargs)[source]

Bases: SimPEG.survey.BaseSrc

Base DC source

Required Properties:

  • current (Float): amplitude of the source current, a float, Default: 1.0

  • receiver_list (a list of BaseRx): receiver list, a list (each item is an instance of BaseRx)

Optional Properties:

  • location (SourceLocationArray): Location of the source [x, y, z] in 3D, a 1D array denoting the source location of <class ‘float’>, <class ‘int’> with shape (*)

property current

current (Float): amplitude of the source current, a float, Default: 1.0

eval(prob)[source]
evalDeriv(prob)[source]
class SimPEG.electromagnetics.static.resistivity.sources.Dipole(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.sources.BaseSrc

Dipole source

Required Properties:

  • current (Float): amplitude of the source current, a float, Default: 1.0

  • location (a list of SourceLocationArray): location of the source electrodes, a list (each item is a 1D array denoting the source location of <class ‘float’>, <class ‘int’> with shape (*))

  • receiver_list (a list of BaseRx): receiver list, a list (each item is an instance of BaseRx)

property loc

loc has been deprecated. See location for documentation

property location

location (a list of SourceLocationArray): location of the source electrodes, a list (each item is a 1D array denoting the source location of <class ‘float’>, <class ‘int’> with shape (*))

property location_a

Location of the A-electrode

property location_b

Location of the B-electrode

eval(prob)[source]
class SimPEG.electromagnetics.static.resistivity.sources.Pole(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.sources.BaseSrc

Required Properties:

  • current (Float): amplitude of the source current, a float, Default: 1.0

  • receiver_list (a list of BaseRx): receiver list, a list (each item is an instance of BaseRx)

Optional Properties:

  • location (SourceLocationArray): Location of the source [x, y, z] in 3D, a 1D array denoting the source location of <class ‘float’>, <class ‘int’> with shape (*)

eval(prob)[source]
class SimPEG.electromagnetics.static.resistivity.receivers.BaseRx(*args, **kwargs)[source]

Bases: SimPEG.survey.BaseRx

Base DC receiver

Required Properties:

  • data_type (StringChoice): Type of DC-IP survey, any of “volt”, “apparent_resistivity”, “apparent_chargeability”, Default: volt

  • locations (RxLocationArray): Locations of the receivers (nRx x nDim), an array of receiver locations of <class ‘float’>, <class ‘int’> with shape (*, *)

  • orientation (StringChoice): orientation of the receiver. Must currently be ‘x’, ‘y’, ‘z’, any of “x”, “y”, “z”

  • projField (StringChoice): field to be projected in the calculation of the data, any of “phi”, “e”, “j”, Default: phi

  • storeProjections (Boolean): Store calls to getP (organized by mesh), a boolean, Default: True

property orientation

orientation (StringChoice): orientation of the receiver. Must currently be ‘x’, ‘y’, ‘z’, any of “x”, “y”, “z”

property projField

projField (StringChoice): field to be projected in the calculation of the data, any of “phi”, “e”, “j”, Default: phi

property data_type

data_type (StringChoice): Type of DC-IP survey, any of “volt”, “apparent_resistivity”, “apparent_chargeability”, Default: volt

property geometric_factor
property dc_voltage
projGLoc(f)[source]

Grid Location projection (e.g. Ex Fy …)

eval(src, mesh, f)[source]
evalDeriv(src, mesh, f, v, adjoint=False)[source]
class SimPEG.electromagnetics.static.resistivity.receivers.Dipole(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.receivers.BaseRx

Dipole receiver

Required Properties:

  • data_type (StringChoice): Type of DC-IP survey, any of “volt”, “apparent_resistivity”, “apparent_chargeability”, Default: volt

  • locations (a list of RxLocationArray): list of locations of each electrode in a dipole receiver, a list (each item is an array of receiver locations of <class ‘float’>, <class ‘int’> with shape (*, *)) with length between 1 and 2

  • orientation (StringChoice): orientation of the receiver. Must currently be ‘x’, ‘y’, ‘z’, any of “x”, “y”, “z”

  • projField (StringChoice): field to be projected in the calculation of the data, any of “phi”, “e”, “j”, Default: phi

  • storeProjections (Boolean): Store calls to getP (organized by mesh), a boolean, Default: True

threshold = 1e-05
property locations

locations (a list of RxLocationArray): list of locations of each electrode in a dipole receiver, a list (each item is an array of receiver locations of <class ‘float’>, <class ‘int’> with shape (*, *)) with length between 1 and 2

property locations_m

Locations of the M-electrodes

property locations_n

Locations of the N-electrodes

property nD

Number of data in the receiver.

getP(mesh, Gloc, transpose=False)[source]

Returns the projection matrices as a list for all components collected by the receivers.

Note

Projection matrices are stored as a dictionary listed by meshes.

class SimPEG.electromagnetics.static.resistivity.receivers.Pole(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.receivers.BaseRx

Pole receiver

Required Properties:

  • data_type (StringChoice): Type of DC-IP survey, any of “volt”, “apparent_resistivity”, “apparent_chargeability”, Default: volt

  • locations (RxLocationArray): Locations of the receivers (nRx x nDim), an array of receiver locations of <class ‘float’>, <class ‘int’> with shape (*, *)

  • orientation (StringChoice): orientation of the receiver. Must currently be ‘x’, ‘y’, ‘z’, any of “x”, “y”, “z”

  • projField (StringChoice): field to be projected in the calculation of the data, any of “phi”, “e”, “j”, Default: phi

  • storeProjections (Boolean): Store calls to getP (organized by mesh), a boolean, Default: True

property nD

Number of data in the receiver.

getP(mesh, Gloc)[source]

Returns the projection matrices as a list for all components collected by the receivers.

Note

Projection matrices are stored as a dictionary listed by meshes.

class SimPEG.electromagnetics.static.resistivity.receivers.Dipole_ky(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.receivers.Dipole

This class has been deprecated, see Dipole for documentation

class SimPEG.electromagnetics.static.resistivity.receivers.Pole_ky(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.receivers.Pole

This class has been deprecated, see Pole for documentation

Fields

class SimPEG.electromagnetics.static.resistivity.fields.FieldsDC(*args, **kwargs)[source]

Bases: SimPEG.fields.Fields

Required Properties:

  • aliasFields (Dictionary):

    a dictionary of the aliased fields with [alias, location, function], e.g. {“b”:[“e”,”F”,lambda(F,e,ind)]} , a dictionary

  • simulation (BaseSimulation): a SimPEG simulation, an instance of BaseSimulation

knownFields = {}
dtype

alias of builtins.float

property survey
class SimPEG.electromagnetics.static.resistivity.fields.Fields3DCellCentered(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.fields.FieldsDC

Required Properties:

  • simulation (BaseSimulation): a SimPEG simulation, an instance of BaseSimulation

knownFields = {'phiSolution': 'CC'}
aliasFields = {'charge': ['phiSolution', 'CC', '_charge'], 'charge_density': ['phiSolution', 'CC', '_charge_density'], 'e': ['phiSolution', 'F', '_e'], 'j': ['phiSolution', 'F', '_j'], 'phi': ['phiSolution', 'CC', '_phi']}
startup()[source]
class SimPEG.electromagnetics.static.resistivity.fields.Fields3DNodal(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.fields.FieldsDC

Required Properties:

  • simulation (BaseSimulation): a SimPEG simulation, an instance of BaseSimulation

knownFields = {'phiSolution': 'N'}
aliasFields = {'charge': ['phiSolution', 'N', '_charge'], 'charge_density': ['phiSolution', 'CC', '_charge_density'], 'e': ['phiSolution', 'E', '_e'], 'j': ['phiSolution', 'E', '_j'], 'phi': ['phiSolution', 'N', '_phi']}
SimPEG.electromagnetics.static.resistivity.fields.Fields3DCellCentred[source]

alias of SimPEG.electromagnetics.static.resistivity.fields.Fields3DCellCentered

class SimPEG.electromagnetics.static.resistivity.fields.Fields_CC(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.fields.Fields3DCellCentered

This class has been deprecated, see Fields3DCellCentered for documentation

class SimPEG.electromagnetics.static.resistivity.fields.Fields_N(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.fields.Fields3DNodal

This class has been deprecated, see Fields3DNodal for documentation

class SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2D(*args, **kwargs)[source]

Bases: SimPEG.fields.TimeFields

Fancy Field Storage for a 2.5D code.

u[:,’phi’, kyInd] = phi print(u[src0,’phi’])

Only one field type is stored for each problem, the rest are computed. The fields obejct acts like an array and is indexed by

f = problem.fields(m)
e = f[srcList,'e']
j = f[srcList,'j']

If accessing all sources for a given field, use the

f = problem.fields(m)
phi = f[:,'phi']
e = f[:,'e']
b = f[:,'b']

The array returned will be size (nE or nF, nSrcs \(\times\) nFrequencies)

Required Properties:

  • aliasFields (Dictionary):

    a dictionary of the aliased fields with [alias, location, function], e.g. {“b”:[“e”,”F”,lambda(F,e,ind)]} , a dictionary

  • simulation (BaseEMSimulation): 2D DC simulation, an instance of BaseEMSimulation

property simulation

simulation (BaseEMSimulation): 2D DC simulation, an instance of BaseEMSimulation

knownFields = {}
dtype

alias of builtins.float

property survey
class SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2DCellCentered(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2D

Fancy Field Storage for a 2.5D cell centered code.

Required Properties:

  • simulation (BaseEMSimulation): 2D DC simulation, an instance of BaseEMSimulation

knownFields = {'phiSolution': 'CC'}
aliasFields = {'charge': ['phiSolution', 'CC', '_charge'], 'charge_density': ['phiSolution', 'CC', '_charge_density'], 'e': ['phiSolution', 'F', '_e'], 'j': ['phiSolution', 'F', '_j'], 'phi': ['phiSolution', 'CC', '_phi']}
class SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2DNodal(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2D

Fancy Field Storage for a 2.5D nodal code.

Required Properties:

  • simulation (BaseEMSimulation): 2D DC simulation, an instance of BaseEMSimulation

knownFields = {'phiSolution': 'N'}
aliasFields = {'charge': ['phiSolution', 'N', '_charge'], 'charge_density': ['phiSolution', 'CC', '_charge_density'], 'e': ['phiSolution', 'E', '_e'], 'j': ['phiSolution', 'E', '_j'], 'phi': ['phiSolution', 'N', '_phi']}
SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2DCellCentred[source]

alias of SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2DCellCentered

class SimPEG.electromagnetics.static.resistivity.fields_2d.Fields_ky(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2D

This class has been deprecated, see Fields2D for documentation

class SimPEG.electromagnetics.static.resistivity.fields_2d.Fields_ky_CC(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2DCellCentered

This class has been deprecated, see Fields2DCellCentered for documentation

class SimPEG.electromagnetics.static.resistivity.fields_2d.Fields_ky_N(*args, **kwargs)[source]

Bases: SimPEG.electromagnetics.static.resistivity.fields_2d.Fields2DNodal

This class has been deprecated, see Fields2DNodal for documentation

Utils

SimPEG.electromagnetics.static.resistivity.utils.WennerSrcList(nElecs, aSpacing, in2D=False, plotIt=False)[source]

Source list for a Wenner Array

SimPEG.electromagnetics.static.resistivity.boundary_utils.getxBCyBC_CC(mesh, alpha, beta, gamma)[source]

This is a subfunction generating mixed-boundary condition:

\[ \begin{align}\begin{aligned}\nabla \cdot \vec{j} = -\nabla \cdot \vec{j}_s = q\\\rho \vec{j} = -\nabla \phi\\\alpha \phi + \beta \frac{\partial \phi}{\partial r} = \gamma \quad \vec{r} \subset \partial \Omega\\xBC = f_1(\alpha, \beta, \gamma)\\yBC = f(\alpha, \beta, \gamma)\end{aligned}\end{align} \]

Computes xBC and yBC for cell-centered discretizations