mirror of
https://github.com/wassname/simpeg.git
synced 2026-07-01 23:50:58 +08:00
updates to source and rx conventions
This commit is contained in:
+10
-6
@@ -1,16 +1,20 @@
|
||||
from SimPEG import *
|
||||
|
||||
|
||||
class DipoleSrc(Survey.BaseSrc):
|
||||
class SrcDipole(Survey.BaseSrc):
|
||||
"""A dipole source, locA and locB are moved to the closest cell-centers"""
|
||||
|
||||
current = 1
|
||||
loc = None
|
||||
_rhsDict = None
|
||||
|
||||
def __init__(self, locA, locB, rxList, **kwargs):
|
||||
super(DipoleSrc, self).__init__((locA, locB), 'dipole', rxList, **kwargs)
|
||||
self._rhsDict = {}
|
||||
def __init__(self, rxList, locA, locB, **kwargs):
|
||||
self.loc = (locA, locB)
|
||||
super(SrcDipole, self).__init__(rxList, **kwargs)
|
||||
|
||||
def getRhs(self, mesh):
|
||||
if getattr(self, '_rhsDict', None) is None:
|
||||
self._rhsDict = {}
|
||||
if mesh not in self._rhsDict:
|
||||
pts = [self.loc[0], self.loc[1]]
|
||||
inds = Utils.closestPoints(mesh, pts)
|
||||
@@ -20,12 +24,12 @@ class DipoleSrc(Survey.BaseSrc):
|
||||
return self._rhsDict[mesh]
|
||||
|
||||
|
||||
class DipoleRx(Survey.BaseRx):
|
||||
class RxDipole(Survey.BaseRx):
|
||||
"""A dipole source, locA and locB are moved to the closest cell-centers"""
|
||||
def __init__(self, locsM, locsN, **kwargs):
|
||||
locs = (locsM, locsN)
|
||||
assert locsM.shape == locsN.shape, 'locs must be the same shape.'
|
||||
super(DipoleRx, self).__init__(locs, 'dipole', storeProjections=False, **kwargs)
|
||||
super(RxDipole, self).__init__(locs, 'dipole', storeProjections=False, **kwargs)
|
||||
|
||||
@property
|
||||
def nD(self):
|
||||
|
||||
@@ -2,6 +2,7 @@ from SimPEG import *
|
||||
import simpegDC as DC
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
|
||||
def run(plotIt=False):
|
||||
cs = 25.
|
||||
hx = [(cs,7, -1.3),(cs,21),(cs,7, 1.3)]
|
||||
@@ -22,11 +23,16 @@ def run(plotIt=False):
|
||||
# ax.plot(xyz_rxP[:,0],xyz_rxP[:,1], 'w.')
|
||||
# ax.plot(xyz_rxN[:,0],xyz_rxN[:,1], 'r.', ms = 3)
|
||||
|
||||
rx = DC.DipoleRx(xyz_rxP, xyz_rxN)
|
||||
src = DC.DipoleSrc([-200, 0, -12.5],[+200, 0, -12.5], [rx])
|
||||
rx = DC.RxDipole(xyz_rxP, xyz_rxN)
|
||||
src = DC.SrcDipole([rx], [-200, 0, -12.5], [+200, 0, -12.5])
|
||||
survey = DC.SurveyDC([src])
|
||||
problem = DC.ProblemDC(mesh)
|
||||
problem.pair(survey)
|
||||
try:
|
||||
from pymatsolver import MumpsSolver
|
||||
problem.Solver = MumpsSolver
|
||||
except Exception, e:
|
||||
pass
|
||||
data = survey.dpred(sigma)
|
||||
|
||||
def DChalf(srclocP, srclocN, rxloc, sigma, I=1.):
|
||||
|
||||
@@ -32,8 +32,8 @@ def getSrcList(nElecs, aSpacing, in2D=False, plotIt=False):
|
||||
getLoc = lambda ii, abmn: np.r_[elocs[WENNER[ii,abmn]],0, 0]
|
||||
srcList = []
|
||||
for i in range(WENNER.shape[0]):
|
||||
rx = DC.DipoleRx(getLoc(i,1),getLoc(i,2))
|
||||
src = DC.DipoleSrc(getLoc(i,0),getLoc(i,3), [rx])
|
||||
rx = DC.RxDipole(getLoc(i,1),getLoc(i,2))
|
||||
src = DC.SrcDipole([rx], getLoc(i,0),getLoc(i,3))
|
||||
srcList += [src]
|
||||
|
||||
return srcList
|
||||
|
||||
Reference in New Issue
Block a user