mirror of
https://github.com/wassname/simpeg.git
synced 2026-06-30 01:23:35 +08:00
Reorganization.
This commit is contained in:
+3
-100
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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,5 +1,5 @@
|
||||
from BaseTDEM import ProblemBaseTDEM
|
||||
from BaseTDEM import FieldsTDEM
|
||||
from FieldsTDEM import FieldsTDEM
|
||||
import numpy as np
|
||||
|
||||
class ProblemTDEM_b(ProblemBaseTDEM):
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user