Reorganization.

This commit is contained in:
Dave Marchant
2014-02-11 23:02:16 -08:00
parent 6e6d90d362
commit cf620acf22
5 changed files with 107 additions and 102 deletions
+3 -100
View File
@@ -1,41 +1,11 @@
from SimPEG import Utils, Solver
from SimPEG.Data import BaseData
from SimPEG import Solver
from SimPEG.Problem import BaseProblem
from simpegEM.Utils import Sources
from FieldsTDEM import FieldsTDEM
from scipy.constants import mu_0
from SimPEG.Utils import sdiag, mkvc
from SimPEG.Utils import sdiag
import numpy as np
class DataTDEM1D(BaseData):
"""
docstring for DataTDEM1D
"""
txLoc = None #: txLoc
txType = None #: txType
rxLoc = None #: rxLoc
rxType = None #: rxType
timeCh = None #: timeCh
def __init__(self, **kwargs):
BaseData.__init__(self, **kwargs)
Utils.setKwargs(self, **kwargs)
def projectFields(self, u):
return self.Qrx.dot(u.b[:,:,0].T)
####################################################
# Interpolation Matrices
####################################################
@property
def Qrx(self):
if self._Qrx is None:
if self.rxType == 'bz':
locType = 'fz'
self._Qrx = self.prob.mesh.getInterpolationMat(self.rxLoc, locType=locType)
return self._Qrx
_Qrx = None
class MixinInitialFieldCalc(object):
"""docstring for MixinInitialFieldCalc"""
@@ -181,70 +151,3 @@ class ProblemBaseTDEM(MixinTimeStuff, MixinInitialFieldCalc, BaseProblem):
newFields = CalcFields(sol, self.solType, tInd)
F.update(newFields, tInd)
return F
class FieldsTDEM(object):
"""docstring for FieldsTDEM"""
phi0 = None #: Initial electric potential
A0 = None #: Initial magnetic vector potential
e0 = None #: Initial electric field
b0 = None #: Initial magnetic flux density
j0 = None #: Initial current density
h0 = None #: Initial magnetic field
phi = None #: Electric potential
A = None #: Magnetic vector potential
e = None #: Electric field
b = None #: Magnetic flux density
j = None #: Current density
h = None #: Magnetic field
def __init__(self, mesh, nTx, nTimes, store):
self.nTimes = nTimes #: Number of times
self.nTx = nTx #: Number of transmitters
self.mesh = mesh
def update(self, newFields, tInd):
self.set_b(newFields['b'], tInd)
self.set_e(newFields['e'], tInd)
def fieldVec(self):
u = np.ndarray((0,self.nTx))
for i in range(self.nTimes):
u = np.r_[u, self.get_b(i), self.get_e(i)]
return u
####################################################
# Get Methods
####################################################
def get_b(self, ind):
if ind == -1:
return self.b0
else:
return self.b[ind,:,:]
def get_e(self, ind):
if ind == -1:
return self.e0
else:
return self.e[ind,:,:]
####################################################
# Set Methods
####################################################
def set_b(self, b, ind):
if self.b is None:
self.b = np.zeros((self.nTimes, np.sum(self.mesh.nF), self.nTx))
self.b[:] = np.nan
self.b[ind,:,:] = b
def set_e(self, e, ind):
if self.e is None:
self.e = np.zeros((self.nTimes, np.sum(self.mesh.nE), self.nTx))
self.e[:] = np.nan
self.e[ind,:,:] = e
+33
View File
@@ -0,0 +1,33 @@
from SimPEG import Utils
from SimPEG.Data import BaseData
class DataTDEM1D(BaseData):
"""
docstring for DataTDEM1D
"""
txLoc = None #: txLoc
txType = None #: txType
rxLoc = None #: rxLoc
rxType = None #: rxType
timeCh = None #: timeCh
def __init__(self, **kwargs):
BaseData.__init__(self, **kwargs)
Utils.setKwargs(self, **kwargs)
def projectFields(self, u):
return self.Qrx.dot(u.b[:,:,0].T)
####################################################
# Interpolation Matrices
####################################################
@property
def Qrx(self):
if self._Qrx is None:
if self.rxType == 'bz':
locType = 'fz'
self._Qrx = self.prob.mesh.getInterpolationMat(self.rxLoc, locType=locType)
return self._Qrx
_Qrx = None
+67
View File
@@ -0,0 +1,67 @@
import numpy as np
class FieldsTDEM(object):
"""docstring for FieldsTDEM"""
phi0 = None #: Initial electric potential
A0 = None #: Initial magnetic vector potential
e0 = None #: Initial electric field
b0 = None #: Initial magnetic flux density
j0 = None #: Initial current density
h0 = None #: Initial magnetic field
phi = None #: Electric potential
A = None #: Magnetic vector potential
e = None #: Electric field
b = None #: Magnetic flux density
j = None #: Current density
h = None #: Magnetic field
def __init__(self, mesh, nTx, nTimes, store):
self.nTimes = nTimes #: Number of times
self.nTx = nTx #: Number of transmitters
self.mesh = mesh
def update(self, newFields, tInd):
self.set_b(newFields['b'], tInd)
self.set_e(newFields['e'], tInd)
def fieldVec(self):
u = np.ndarray((0,self.nTx))
for i in range(self.nTimes):
u = np.r_[u, self.get_b(i), self.get_e(i)]
return u
####################################################
# Get Methods
####################################################
def get_b(self, ind):
if ind == -1:
return self.b0
else:
return self.b[ind,:,:]
def get_e(self, ind):
if ind == -1:
return self.e0
else:
return self.e[ind,:,:]
####################################################
# Set Methods
####################################################
def set_b(self, b, ind):
if self.b is None:
self.b = np.zeros((self.nTimes, np.sum(self.mesh.nF), self.nTx))
self.b[:] = np.nan
self.b[ind,:,:] = b
def set_e(self, e, ind):
if self.e is None:
self.e = np.zeros((self.nTimes, np.sum(self.mesh.nE), self.nTx))
self.e[:] = np.nan
self.e[ind,:,:] = e
+1 -1
View File
@@ -1,5 +1,5 @@
from BaseTDEM import ProblemBaseTDEM
from BaseTDEM import FieldsTDEM
from FieldsTDEM import FieldsTDEM
import numpy as np
class ProblemTDEM_b(ProblemBaseTDEM):
+3 -1
View File
@@ -1,2 +1,4 @@
from BaseTDEM import DataTDEM1D, ProblemBaseTDEM
from BaseTDEM import ProblemBaseTDEM
from DataTDEM import DataTDEM1D
from FieldsTDEM import FieldsTDEM
from TDEM_b import ProblemTDEM_b