Memory clean ups with fancier fields objects.

This commit is contained in:
rowanc1
2014-05-16 12:42:14 -07:00
parent cfcf741a0b
commit 220e244cdf
3 changed files with 21 additions and 6 deletions
+2 -1
View File
@@ -15,11 +15,12 @@ class BaseTDEMProblem(BaseTimeProblem, BaseEMProblem):
BaseTimeProblem.__init__(self, mesh, mapping=mapping, **kwargs)
surveyPair = SurveyTDEM
_FieldsTDEM_pair = FieldsTDEM #: used for the forward calculation only
def fields(self, m):
self.curModel = m
# Create a fields storage object
F = FieldsTDEM(self.mesh, self.survey)
F = self._FieldsTDEM_pair(self.mesh, self.survey)
for tx in self.survey.txList:
# Set the initial conditions
F[tx,:,0] = tx.getInitialFields(self.mesh)
+18 -3
View File
@@ -3,6 +3,21 @@ from SimPEG.Utils import mkvc
import numpy as np
from SurveyTDEM import SurveyTDEM, FieldsTDEM
class FieldsTDEM_e_from_b(FieldsTDEM):
"""Fancy Field Storage for a TDEM survey."""
knownFields = {'b': 'F'}
aliasFields = {'e': ['b','E','e_from_b']}
def startup(self):
self.MeSigmaI = self.survey.prob.MeSigmaI
self.edgeCurlT = self.survey.prob.mesh.edgeCurl.T
self.MfMui = self.survey.prob.MfMui
def e_from_b(self, b, ind):
# TODO: implement non-zero js
return self.MeSigmaI*(self.edgeCurlT*(self.MfMui*b))
class ProblemTDEM_b(BaseTDEMProblem):
"""
Time-Domain EM problem - B-formulation
@@ -21,6 +36,7 @@ class ProblemTDEM_b(BaseTDEMProblem):
solType = 'b' #: Type of the solution, in this case the 'b' field
surveyPair = SurveyTDEM
_FieldsTDEM_pair = FieldsTDEM_e_from_b #: used for the forward calculation only
####################################################
# Internal Methods
@@ -45,12 +61,11 @@ class ProblemTDEM_b(BaseTDEMProblem):
if self.solType == 'b':
b = sol
e = self.MeSigmaI*(self.mesh.edgeCurl.T*(self.MfMui*b))
# Todo: implement non-zero js
# e = self.MeSigmaI*(self.mesh.edgeCurl.T*(self.MfMui*b))
else:
raise NotImplementedError('solType "%s" is not implemented in CalcFields.' % self.solType)
return {'b':b, 'e':e}
return {'b':b}
####################################################
+1 -2
View File
@@ -107,9 +107,8 @@ class TDEM_bDerivTests(unittest.TestCase):
A = sp.bmat([[a11,a12],[a21,a22]])
f = prb.fields(sigma)
f[:,:,0] = {'e':0,'b':0}
f[:,:,0] = {'b':0}
f[:,'b',1] = 0
f[:,'e',1] = np.random.rand(prb.mesh.nE,1)
self.assertTrue(np.all(np.r_[f[:,'b',1],f[:,'e',1]] == f.tovec()))