\[\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.EM.Static.DC and SimPEG.EM.Static.IP 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_analytic_dipole_001.png

API for DC codes

Problem

class SimPEG.EM.Static.DC.ProblemDC.BaseDCProblem(mesh, **kwargs)

Bases: SimPEG.EM.Base.BaseEMProblem

Base DC Problem

Optional Properties:

  • model (Model): Inversion model., a numpy array of <type ‘float’>, <type ‘int’> with shape (*) or (*, *)
  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.25663706144e-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.
Ainv = None
Jtvec(m, v, f=None)

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

Jvec(m, v, f=None)

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

deleteTheseOnModelUpdate
fields(m=None)
fieldsPair

alias of FieldsDC

getJ(m, f=None)

Generate Full sensitivity matrix

getSourceTerm()

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

storeJ = False
surveyPair

alias of Survey

class SimPEG.EM.Static.DC.ProblemDC.Problem3D_CC(mesh, **kwargs)

Bases: SimPEG.EM.Static.DC.ProblemDC.BaseDCProblem

3D cell centered DC problem

Optional Properties:

  • model (Model): Inversion model., a numpy array of <type ‘float’>, <type ‘int’> with shape (*) or (*, *)
  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.25663706144e-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.
bc_type = u'Neumann'
fieldsPair

alias of Fields_CC

getA()

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

getADeriv(u, v, adjoint=False)
getRHS()

RHS for the DC problem q

getRHSDeriv(src, v, adjoint=False)

Derivative of the right hand side with respect to the model

setBC()
class SimPEG.EM.Static.DC.ProblemDC.Problem3D_N(mesh, **kwargs)

Bases: SimPEG.EM.Static.DC.ProblemDC.BaseDCProblem

3D nodal DC problem

Optional Properties:

  • model (Model): Inversion model., a numpy array of <type ‘float’>, <type ‘int’> with shape (*) or (*, *)
  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.25663706144e-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

alias of Fields_N

getA()

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

getADeriv(u, v, adjoint=False)

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

getRHS()

RHS for the DC problem q

getRHSDeriv(src, v, adjoint=False)

Derivative of the right hand side with respect to the model

class SimPEG.EM.Static.DC.ProblemDC_2D.BaseDCProblem_2D(mesh, **kwargs)

Bases: SimPEG.EM.Base.BaseEMProblem

Base 2.5D DC problem

Optional Properties:

  • model (Model): Inversion model., a numpy array of <type ‘float’>, <type ‘int’> with shape (*) or (*, *)
  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.25663706144e-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.
Ainv = [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
Jtvec(m, v, f=None)

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

Jvec(m, v, f=None)

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

MccRhoi

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

MccRhoiDeriv(u, v, adjoint=False)

Derivative of MccRhoi with respect to the model.

MccRhoiDerivMat

Derivative of MccRho with respect to the model

MnSigma

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

MnSigmaDeriv(u, v, adjoint=False)

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

MnSigmaDerivMat

Derivative of MnSigma with respect to the model

deleteTheseOnModelUpdate
fields(m)
fieldsPair

alias of Fields_ky

fieldsPair_fwd

alias of FieldsDC

fields_to_space(f, y=0.0)
fix_Jmatrix = False
getJ(m, f=None)

Generate Full sensitivity matrix

getSourceTerm(ky)

takes concept of source and turns it into a matrix

i = 14
kys = array([1.00000000e-04, 2.27584593e-04, 5.17947468e-04, 1.17876863e-03, 2.68269580e-03, 6.10540230e-03, 1.38949549e-02, 3.16227766e-02, 7.19685673e-02, 1.63789371e-01, 3.72759372e-01, 8.48342898e-01, 1.93069773e+00, 4.39397056e+00, 1.00000000e+01])
nT = 15
nky = 15
storeJ = False
surveyPair

alias of Survey_ky

class SimPEG.EM.Static.DC.ProblemDC_2D.Problem2D_CC(mesh, **kwargs)

Bases: SimPEG.EM.Static.DC.ProblemDC_2D.BaseDCProblem_2D

2.5D cell centered DC problem

Optional Properties:

  • model (Model): Inversion model., a numpy array of <type ‘float’>, <type ‘int’> with shape (*) or (*, *)
  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.25663706144e-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.
bc_type = u'Mixed'
fieldsPair

alias of Fields_ky_CC

fieldsPair_fwd

alias of Fields_CC

getA(ky)

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

getADeriv(ky, u, v, adjoint=False)
getRHS(ky)

RHS for the DC problem q

getRHSDeriv(ky, src, v, adjoint=False)

Derivative of the right hand side with respect to the model

setBC(ky=None)
class SimPEG.EM.Static.DC.ProblemDC_2D.Problem2D_N(mesh, **kwargs)

Bases: SimPEG.EM.Static.DC.ProblemDC_2D.BaseDCProblem_2D

2.5D nodal DC problem

Optional Properties:

  • model (Model): Inversion model., a numpy array of <type ‘float’>, <type ‘int’> with shape (*) or (*, *)
  • mu (PhysicalProperty): Magnetic Permeability (H/m), a physical property, Default: 1.25663706144e-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

alias of Fields_ky_N

fieldsPair_fwd

alias of Fields_N

getA(ky)

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

getADeriv(ky, u, v, adjoint=False)
getRHS(ky)

RHS for the DC problem q

getRHSDeriv(ky, src, v, adjoint=False)

Derivative of the right hand side with respect to the model

Survey

class SimPEG.EM.Static.DC.SurveyDC.Survey(srcList, **kwargs)

Bases: SimPEG.EM.Base.BaseEMSurvey, properties.base.base.HasProperties

Base DC survey

Required Properties:

  • a_locations (Array): locations of the positive (+) current electrodes, a list or numpy array of <type ‘float’> with shape (*, *)
  • b_locations (Array): locations of the negative (-) current electrodes, a list or numpy array of <type ‘float’> with shape (*, *)
  • electrode_locations (Array): unique locations of a, b, m, n electrodes, a list or numpy array of <type ‘float’> with shape (*, *)
  • m_locations (Array): locations of the positive (+) potential electrodes, a list or numpy array of <type ‘float’> with shape (*, *)
  • n_locations (Array): locations of the negative (-) potential electrodes, a list or numpy array of <type ‘float’> with shape (*, *)
  • 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
a_locations

a_locations (Array) – locations of the positive (+) current electrodes, a list or numpy array of <type ‘float’> with shape (*, *)

b_locations

b_locations (Array) – locations of the negative (-) current electrodes, a list or numpy array of <type ‘float’> with shape (*, *)

drapeTopo(mesh, actind, option=u'top')
electrode_locations

electrode_locations (Array) – unique locations of a, b, m, n electrodes, a list or numpy array of <type ‘float’> with shape (*, *)

electrodes_info = None
getABMN_locations()
m_locations

m_locations (Array) – locations of the positive (+) potential electrodes, a list or numpy array of <type ‘float’> with shape (*, *)

n_locations

n_locations (Array) – locations of the negative (-) potential electrodes, a list or numpy array of <type ‘float’> with shape (*, *)

rxPair

alias of BaseRx

srcPair

alias of BaseSrc

survey_geometry

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

survey_type

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

topo_function = None
class SimPEG.EM.Static.DC.SurveyDC.Survey_ky(srcList, **kwargs)

Bases: SimPEG.EM.Static.DC.SurveyDC.Survey

2.5D survey

Required Properties:

  • a_locations (Array): locations of the positive (+) current electrodes, a list or numpy array of <type ‘float’> with shape (*, *)
  • b_locations (Array): locations of the negative (-) current electrodes, a list or numpy array of <type ‘float’> with shape (*, *)
  • electrode_locations (Array): unique locations of a, b, m, n electrodes, a list or numpy array of <type ‘float’> with shape (*, *)
  • m_locations (Array): locations of the positive (+) potential electrodes, a list or numpy array of <type ‘float’> with shape (*, *)
  • n_locations (Array): locations of the negative (-) potential electrodes, a list or numpy array of <type ‘float’> with shape (*, *)
  • 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
eval(f)

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

rxPair

alias of BaseRx

srcPair

alias of BaseSrc

class SimPEG.EM.Static.DC.SrcDC.BaseSrc(rxList, **kwargs)

Bases: SimPEG.Survey.BaseSrc

Base DC source

current = 1.0
eval(prob)
evalDeriv(prob)
loc = None
class SimPEG.EM.Static.DC.SrcDC.Dipole(rxList, locA, locB, **kwargs)

Bases: SimPEG.EM.Static.DC.SrcDC.BaseSrc

Dipole source

eval(prob)
class SimPEG.EM.Static.DC.SrcDC.Pole(rxList, loc, **kwargs)

Bases: SimPEG.EM.Static.DC.SrcDC.BaseSrc

eval(prob)
class SimPEG.EM.Static.DC.RxDC.BaseRx(locs, rxType, **kwargs)

Bases: SimPEG.Survey.BaseRx

Base DC receiver

eval(src, mesh, f)
evalDeriv(src, mesh, f, v, adjoint=False)
knownRxTypes = {u'phi': [u'phi', None], u'jx': [u'j', u'x'], u'jy': [u'j', u'y'], u'jz': [u'j', u'z'], u'ey': [u'e', u'y'], u'ex': [u'e', u'x'], u'ez': [u'e', u'z']}
locs = None
projField

Field Type projection (e.g. e b ...)

projGLoc(f)

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

rxType = None
class SimPEG.EM.Static.DC.RxDC.Dipole(locsM, locsN, rxType=u'phi', **kwargs)

Bases: SimPEG.EM.Static.DC.RxDC.BaseRx

Dipole receiver

getP(mesh, Gloc)
nD

Number of data in the receiver.

threshold = 1e-05
class SimPEG.EM.Static.DC.RxDC.Dipole_ky(locsM, locsN, rxType=u'phi', **kwargs)

Bases: SimPEG.EM.Static.DC.RxDC.BaseRx

Dipole receiver for 2.5D simulations

IntTrapezoidal(kys, Pf, y=0.0)
eval(kys, src, mesh, f)
evalDeriv(ky, src, mesh, f, v, adjoint=False)
getP(mesh, Gloc)
nD

Number of data in the receiver.

class SimPEG.EM.Static.DC.RxDC.Pole(locsM, rxType=u'phi', **kwargs)

Bases: SimPEG.EM.Static.DC.RxDC.BaseRx

Pole receiver

getP(mesh, Gloc)
nD

Number of data in the receiver.

class SimPEG.EM.Static.DC.RxDC.Pole_ky(locsM, rxType=u'phi', **kwargs)

Bases: SimPEG.EM.Static.DC.RxDC.BaseRx

Pole receiver for 2.5D simulations

IntTrapezoidal(kys, Pf, y=0.0)
eval(kys, src, mesh, f)
evalDeriv(ky, src, mesh, f, v, adjoint=False)
getP(mesh, Gloc)
nD

Number of data in the receiver.

Fields

class SimPEG.EM.Static.DC.FieldsDC.FieldsDC(mesh, survey, **kwargs)

Bases: SimPEG.Fields.Fields

dtype

alias of float

knownFields = {}
class SimPEG.EM.Static.DC.FieldsDC.Fields_CC(mesh, survey, **kwargs)

Bases: SimPEG.EM.Static.DC.FieldsDC.FieldsDC

aliasFields = {u'phi': [u'phiSolution', u'CC', u'_phi'], u'j': [u'phiSolution', u'F', u'_j'], u'e': [u'phiSolution', u'F', u'_e'], u'charge': [u'phiSolution', u'CC', u'_charge'], u'charge_density': [u'phiSolution', u'CC', u'_charge_density']}
knownFields = {u'phiSolution': u'CC'}
startup()
class SimPEG.EM.Static.DC.FieldsDC.Fields_N(mesh, survey, **kwargs)

Bases: SimPEG.EM.Static.DC.FieldsDC.FieldsDC

aliasFields = {u'phi': [u'phiSolution', u'N', u'_phi'], u'j': [u'phiSolution', u'E', u'_j'], u'e': [u'phiSolution', u'E', u'_e'], u'charge': [u'phiSolution', u'N', u'_charge']}
knownFields = {u'phiSolution': u'N'}
startup()
class SimPEG.EM.Static.DC.FieldsDC_2D.Fields_ky(mesh, survey, **kwargs)

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)

dtype

alias of float

knownFields = {}
class SimPEG.EM.Static.DC.FieldsDC_2D.Fields_ky_CC(mesh, survey, **kwargs)

Bases: SimPEG.EM.Static.DC.FieldsDC_2D.Fields_ky

Fancy Field Storage for a 2.5D cell centered code.

aliasFields = {u'phi': [u'phiSolution', u'CC', u'_phi'], u'j': [u'phiSolution', u'F', u'_j'], u'e': [u'phiSolution', u'F', u'_e']}
knownFields = {u'phiSolution': u'CC'}
startup()
class SimPEG.EM.Static.DC.FieldsDC_2D.Fields_ky_N(mesh, survey, **kwargs)

Bases: SimPEG.EM.Static.DC.FieldsDC_2D.Fields_ky

Fancy Field Storage for a 2.5D nodal code.

aliasFields = {u'phi': [u'phiSolution', u'N', u'_phi'], u'j': [u'phiSolution', u'E', u'_j'], u'e': [u'phiSolution', u'E', u'_e']}
knownFields = {u'phiSolution': u'N'}
startup()

Utils

SimPEG.EM.Static.DC.Utils.WennerSrcList(nElecs, aSpacing, in2D=False, plotIt=False)

Source list for a Wenner Array

SimPEG.EM.Static.DC.BoundaryUtils.getxBCyBC_CC(mesh, alpha, beta, gamma)

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