From bcda60815e87ec01d0375668db1e7c1e88584440 Mon Sep 17 00:00:00 2001 From: Lindsey Heagy Date: Sun, 21 Feb 2016 15:31:02 -0800 Subject: [PATCH] - rx.projectFields --> rx.eval - rx.projectFieldsDeriv --> rx.evalDeriv --- SimPEG/EM/FDEM/FDEM.py | 4 ++-- SimPEG/EM/FDEM/SurveyFDEM.py | 10 +++++----- SimPEG/EM/TDEM/BaseTDEM.py | 4 ++-- SimPEG/EM/TDEM/SurveyTDEM.py | 14 ++++++------- SimPEG/Examples/Inversion_Linear.py | 2 +- SimPEG/Examples/MT_3D_Foward.py | 2 +- SimPEG/FLOW/Richards/RichardsProblem.py | 20 +++++++++---------- SimPEG/MT/BaseMT.py | 6 +++--- SimPEG/MT/SurveyMT.py | 10 +++++----- SimPEG/Survey.py | 14 ++++++------- tests/em/tdem/test_TDEM_b_DerivAdjoint.py | 4 ++-- .../tdem/test_TDEM_b_MultiSrc_DerivAdjoint.py | 4 ++-- ...test_Problem1D_againstAnalyticHalfspace.py | 8 ++++---- tests/mt/test_Problem3D_againstAnalytic.py | 2 +- 14 files changed, 52 insertions(+), 52 deletions(-) diff --git a/SimPEG/EM/FDEM/FDEM.py b/SimPEG/EM/FDEM/FDEM.py index 4b137b2c..3e378a6a 100644 --- a/SimPEG/EM/FDEM/FDEM.py +++ b/SimPEG/EM/FDEM/FDEM.py @@ -98,7 +98,7 @@ class BaseFDEMProblem(BaseEMProblem): Df_Dm = np.array(df_dudu_dm + df_dm,dtype=complex) - P = lambda v: rx.projectFieldsDeriv(src, self.mesh, u, v) # wrt u, also have wrt m + P = lambda v: rx.evalDeriv(src, self.mesh, u, v) # wrt u, also have wrt m Jv[src, rx] = P(Df_Dm) @@ -136,7 +136,7 @@ class BaseFDEMProblem(BaseEMProblem): u_src = u[src, ftype] for rx in src.rxList: - PTv = rx.projectFieldsDeriv(src, self.mesh, u, v[src, rx], adjoint=True) # wrt u, need possibility wrt m + PTv = rx.evalDeriv(src, self.mesh, u, v[src, rx], adjoint=True) # wrt u, need possibility wrt m df_duTFun = getattr(u, '_%sDeriv_u'%rx.projField, None) df_duT = df_duTFun(src, PTv, adjoint=True) diff --git a/SimPEG/EM/FDEM/SurveyFDEM.py b/SimPEG/EM/FDEM/SurveyFDEM.py index 6b4abd8c..4d220259 100644 --- a/SimPEG/EM/FDEM/SurveyFDEM.py +++ b/SimPEG/EM/FDEM/SurveyFDEM.py @@ -66,7 +66,7 @@ class Rx(SimPEG.Survey.BaseRx): """Component projection (real/imag)""" return self.knownRxTypes[self.rxType][2] - def projectFields(self, src, mesh, f): + def eval(self, src, mesh, f): """ Project fields to recievers to get data. @@ -82,7 +82,7 @@ class Rx(SimPEG.Survey.BaseRx): u_part = getattr(u_part_complex, real_or_imag) return P*u_part - def projectFieldsDeriv(self, src, mesh, f, v, adjoint=False): + def evalDeriv(self, src, mesh, f, v, adjoint=False): """ Derivative of projected fields with respect to the inversion model times a vector. @@ -170,7 +170,7 @@ class Survey(SimPEG.Survey.BaseSurvey): assert freq in self._freqDict, "The requested frequency is not in this survey." return self._freqDict[freq] - def projectFields(self, u): + def eval(self, u): """ Project fields to receiver locations :param Fields u: fields object @@ -180,8 +180,8 @@ class Survey(SimPEG.Survey.BaseSurvey): data = SimPEG.Survey.Data(self) for src in self.srcList: for rx in src.rxList: - data[src, rx] = rx.projectFields(src, self.mesh, u) + data[src, rx] = rx.eval(src, self.mesh, u) return data - def projectFieldsDeriv(self, u): + def evalDeriv(self, u): raise Exception('Use Receivers to project fields deriv.') diff --git a/SimPEG/EM/TDEM/BaseTDEM.py b/SimPEG/EM/TDEM/BaseTDEM.py index 2efb10ec..1ad44889 100644 --- a/SimPEG/EM/TDEM/BaseTDEM.py +++ b/SimPEG/EM/TDEM/BaseTDEM.py @@ -128,7 +128,7 @@ class BaseTDEMProblem(BaseTimeProblem, BaseEMProblem): u = self.fields(m) p = self.Gvec(m, v, u) y = self.solveAh(m, p) - Jv = self.survey.projectFieldsDeriv(u, v=y) + Jv = self.survey.evalDeriv(u, v=y) if self.verbose: print '%s\nDone calculating J(v)\n%s'%('*'*50,'*'*50) return - mkvc(Jv) @@ -155,7 +155,7 @@ class BaseTDEMProblem(BaseTimeProblem, BaseEMProblem): if not isinstance(v, self.dataPair): v = self.dataPair(self.survey, v) - p = self.survey.projectFieldsDeriv(u, v=v, adjoint=True) + p = self.survey.evalDeriv(u, v=v, adjoint=True) y = self.solveAht(m, p) w = self.Gtvec(m, y, u) if self.verbose: print '%s\nDone calculating J^T(v)\n%s'%('*'*50,'*'*50) diff --git a/SimPEG/EM/TDEM/SurveyTDEM.py b/SimPEG/EM/TDEM/SurveyTDEM.py index 45348af4..4d04f0ae 100644 --- a/SimPEG/EM/TDEM/SurveyTDEM.py +++ b/SimPEG/EM/TDEM/SurveyTDEM.py @@ -51,12 +51,12 @@ class RxTDEM(Survey.BaseTimeRx): else: return timeMesh.getInterpolationMat(self.times, self.projTLoc) - def projectFields(self, src, mesh, timeMesh, u): + def eval(self, src, mesh, timeMesh, u): P = self.getP(mesh, timeMesh) u_part = Utils.mkvc(u[src, self.projField, :]) return P*u_part - def projectFieldsDeriv(self, src, mesh, timeMesh, u, v, adjoint=False): + def evalDeriv(self, src, mesh, timeMesh, u, v, adjoint=False): P = self.getP(mesh, timeMesh) if not adjoint: @@ -168,27 +168,27 @@ class SurveyTDEM(Survey.BaseSurvey): self.srcList = srcList Survey.BaseSurvey.__init__(self, **kwargs) - def projectFields(self, u): + def eval(self, u): data = Survey.Data(self) for src in self.srcList: for rx in src.rxList: - data[src, rx] = rx.projectFields(src, self.mesh, self.prob.timeMesh, u) + data[src, rx] = rx.eval(src, self.mesh, self.prob.timeMesh, u) return data - def projectFieldsDeriv(self, u, v=None, adjoint=False): + def evalDeriv(self, u, v=None, adjoint=False): assert v is not None, 'v to multiply must be provided.' if not adjoint: data = Survey.Data(self) for src in self.srcList: for rx in src.rxList: - data[src, rx] = rx.projectFieldsDeriv(src, self.mesh, self.prob.timeMesh, u, v) + data[src, rx] = rx.evalDeriv(src, self.mesh, self.prob.timeMesh, u, v) return data else: f = FieldsTDEM(self.mesh, self) for src in self.srcList: for rx in src.rxList: - Ptv = rx.projectFieldsDeriv(src, self.mesh, self.prob.timeMesh, u, v, adjoint=True) + Ptv = rx.evalDeriv(src, self.mesh, self.prob.timeMesh, u, v, adjoint=True) Ptv = Ptv.reshape((-1, self.prob.timeMesh.nN), order='F') if rx.projField not in f: # first time we are projecting f[src, rx.projField, :] = Ptv diff --git a/SimPEG/Examples/Inversion_Linear.py b/SimPEG/Examples/Inversion_Linear.py index a8a0eddc..6d342a04 100644 --- a/SimPEG/Examples/Inversion_Linear.py +++ b/SimPEG/Examples/Inversion_Linear.py @@ -11,7 +11,7 @@ def run(N=100, plotIt=True): """ class LinearSurvey(Survey.BaseSurvey): - def projectFields(self, u): + def eval(self, u): return u class LinearProblem(Problem.BaseProblem): diff --git a/SimPEG/Examples/MT_3D_Foward.py b/SimPEG/Examples/MT_3D_Foward.py index 8b1a0710..da16eeee 100644 --- a/SimPEG/Examples/MT_3D_Foward.py +++ b/SimPEG/Examples/MT_3D_Foward.py @@ -52,7 +52,7 @@ def run(plotIt=True, nFreq=1): # Calculate the data fields = problem.fields(sig) - dataVec = survey.projectFields(fields) + dataVec = survey.eval(fields) # Make the data mtData = MT.Data(survey,dataVec) diff --git a/SimPEG/FLOW/Richards/RichardsProblem.py b/SimPEG/FLOW/Richards/RichardsProblem.py index 7c61c221..4dcabe60 100644 --- a/SimPEG/FLOW/Richards/RichardsProblem.py +++ b/SimPEG/FLOW/Richards/RichardsProblem.py @@ -8,7 +8,7 @@ class RichardsRx(Survey.BaseTimeRx): knownRxTypes = ['saturation','pressureHead'] - def projectFields(self, U, m, mapping, mesh, timeMesh): + def eval(self, U, m, mapping, mesh, timeMesh): if self.rxType == 'pressureHead': u = np.concatenate(U) @@ -17,7 +17,7 @@ class RichardsRx(Survey.BaseTimeRx): return self.getP(mesh, timeMesh) * u - def projectFieldsDeriv(self, U, m, mapping, mesh, timeMesh): + def evalDeriv(self, U, m, mapping, mesh, timeMesh): P = self.getP(mesh, timeMesh) if self.rxType == 'pressureHead': @@ -57,13 +57,13 @@ class RichardsSurvey(Survey.BaseSurvey): Where P is a projection of the fields onto the data space. """ if u is None: u = self.prob.fields(m) - return Utils.mkvc(self.projectFields(u, m)) + return Utils.mkvc(self.eval(u, m)) @Utils.requires('prob') - def projectFields(self, U, m): + def eval(self, U, m): Ds = range(len(self.rxList)) for ii, rx in enumerate(self.rxList): - Ds[ii] = rx.projectFields(U, m, + Ds[ii] = rx.eval(U, m, self.prob.mapping, self.prob.mesh, self.prob.timeMesh) @@ -71,11 +71,11 @@ class RichardsSurvey(Survey.BaseSurvey): return np.concatenate(Ds) @Utils.requires('prob') - def projectFieldsDeriv(self, U, m): + def evalDeriv(self, U, m): """The Derivative with respect to the fields.""" Ds = range(len(self.rxList)) for ii, rx in enumerate(self.rxList): - Ds[ii] = rx.projectFieldsDeriv(U, m, + Ds[ii] = rx.evalDeriv(U, m, self.prob.mapping, self.prob.mesh, self.prob.timeMesh) @@ -251,7 +251,7 @@ class RichardsProblem(Problem.BaseTimeProblem): B = np.array(sp.vstack(Bs).todense()) Ainv = self.Solver(A, **self.solverOpts) - P = self.survey.projectFieldsDeriv(u, m) + P = self.survey.evalDeriv(u, m) AinvB = Ainv * B z = np.zeros((self.mesh.nC, B.shape[1])) zAinvB = np.vstack((z, AinvB)) @@ -277,7 +277,7 @@ class RichardsProblem(Problem.BaseTimeProblem): Adiaginv = self.Solver(Adiag, **self.solverOpts) JvC[ii] = Adiaginv * (B*v - Asub*JvC[ii-1]) - P = self.survey.projectFieldsDeriv(u, m) + P = self.survey.evalDeriv(u, m) return P * np.concatenate([np.zeros(self.mesh.nC)] + JvC) @Utils.timeIt @@ -285,7 +285,7 @@ class RichardsProblem(Problem.BaseTimeProblem): if u is None: u = self.field(m) - P = self.survey.projectFieldsDeriv(u, m) + P = self.survey.evalDeriv(u, m) PTv = P.T*v # This is done via backward substitution. diff --git a/SimPEG/MT/BaseMT.py b/SimPEG/MT/BaseMT.py index 664bebcc..36389430 100644 --- a/SimPEG/MT/BaseMT.py +++ b/SimPEG/MT/BaseMT.py @@ -68,7 +68,7 @@ class BaseMTProblem(BaseFDEMProblem): for rx in src.rxList: # Get the projection derivative # v should be of size 2*nE (for 2 polarizations) - PDeriv_u = lambda t: rx.projectFieldsDeriv(src, self.mesh, u, t) # wrt u, we don't have have PDeriv wrt m + PDeriv_u = lambda t: rx.evalDeriv(src, self.mesh, u, t) # wrt u, we don't have have PDeriv wrt m Jv[src, rx] = PDeriv_u(mkvc(du_dm)) dA_duI.clean() # Return the vectorized sensitivities @@ -106,9 +106,9 @@ class BaseMTProblem(BaseFDEMProblem): u_src = u[src, :] for rx in src.rxList: - # Get the adjoint projectFieldsDeriv + # Get the adjoint evalDeriv # PTv needs to be nE, - PTv = rx.projectFieldsDeriv(src, self.mesh, u, mkvc(v[src, rx],2), adjoint=True) # wrt u, need possibility wrt m + PTv = rx.evalDeriv(src, self.mesh, u, mkvc(v[src, rx],2), adjoint=True) # wrt u, need possibility wrt m # Get the dA_duIT = ATinv * PTv dA_dmT = self.getADeriv_m(freq, u_src, mkvc(dA_duIT), adjoint=True) diff --git a/SimPEG/MT/SurveyMT.py b/SimPEG/MT/SurveyMT.py index 91102d47..4e4a8688 100644 --- a/SimPEG/MT/SurveyMT.py +++ b/SimPEG/MT/SurveyMT.py @@ -59,7 +59,7 @@ class Rx(SimPEGsurvey.BaseRx): """Component projection (real/imag)""" return self.knownRxTypes[self.rxType][1] - def projectFields(self, src, mesh, f): + def eval(self, src, mesh, f): ''' Project the fields to natural source data. @@ -139,7 +139,7 @@ class Rx(SimPEGsurvey.BaseRx): # print f_part return f_part - def projectFieldsDeriv(self, src, mesh, f, v, adjoint=False): + def evalDeriv(self, src, mesh, f, v, adjoint=False): """ The derivative of the projection wrt u @@ -427,15 +427,15 @@ class Survey(SimPEGsurvey.BaseSurvey): assert freq in self._freqDict, "The requested frequency is not in this survey." return self._freqDict[freq] - def projectFields(self, u): + def eval(self, u): data = Data(self) for src in self.srcList: sys.stdout.flush() for rx in src.rxList: - data[src, rx] = rx.projectFields(src, self.mesh, u) + data[src, rx] = rx.eval(src, self.mesh, u) return data - def projectFieldsDeriv(self, u): + def evalDeriv(self, u): raise Exception('Use Transmitters to project fields deriv.') ################# diff --git a/SimPEG/Survey.py b/SimPEG/Survey.py index 47a88ae2..1484b6c8 100644 --- a/SimPEG/Survey.py +++ b/SimPEG/Survey.py @@ -307,12 +307,12 @@ class BaseSurvey(object): Where P is a projection of the fields onto the data space. """ if u is None: u = self.prob.fields(m) - return Utils.mkvc(self.projectFields(u)) + return Utils.mkvc(self.eval(u)) @Utils.count - def projectFields(self, u): - """projectFields(u) + def eval(self, u): + """eval(u) This function projects the fields onto the data space. @@ -320,11 +320,11 @@ class BaseSurvey(object): d_\\text{pred} = \mathbf{P} u(m) """ - raise NotImplemented('projectFields is not yet implemented.') + raise NotImplemented('eval is not yet implemented.') @Utils.count - def projectFieldsDeriv(self, u): - """projectFieldsDeriv(u) + def evalDeriv(self, u): + """evalDeriv(u) This function s the derivative of projects the fields onto the data space. @@ -332,7 +332,7 @@ class BaseSurvey(object): \\frac{\partial d_\\text{pred}}{\partial u} = \mathbf{P} """ - raise NotImplemented('projectFields is not yet implemented.') + raise NotImplemented('eval is not yet implemented.') @Utils.count def residual(self, m, u=None): diff --git a/tests/em/tdem/test_TDEM_b_DerivAdjoint.py b/tests/em/tdem/test_TDEM_b_DerivAdjoint.py index 7c1e5319..30630d8d 100644 --- a/tests/em/tdem/test_TDEM_b_DerivAdjoint.py +++ b/tests/em/tdem/test_TDEM_b_DerivAdjoint.py @@ -204,8 +204,8 @@ class TDEM_bDerivTests(unittest.TestCase): d = Survey.Data(survey,v=d_vec) # Check that d.T*Q*f = f.T*Q.T*d - V1 = d_vec.dot(survey.projectFieldsDeriv(None, v=f).tovec()) - V2 = f.tovec().dot(survey.projectFieldsDeriv(None, v=d, adjoint=True).tovec()) + V1 = d_vec.dot(survey.evalDeriv(None, v=f).tovec()) + V2 = f.tovec().dot(survey.evalDeriv(None, v=d, adjoint=True).tovec()) self.assertTrue((V1-V2)/np.abs(V1) < tol) diff --git a/tests/em/tdem/test_TDEM_b_MultiSrc_DerivAdjoint.py b/tests/em/tdem/test_TDEM_b_MultiSrc_DerivAdjoint.py index b93e2df1..8f3ebcc1 100644 --- a/tests/em/tdem/test_TDEM_b_MultiSrc_DerivAdjoint.py +++ b/tests/em/tdem/test_TDEM_b_MultiSrc_DerivAdjoint.py @@ -108,8 +108,8 @@ class TDEM_bDerivTests(unittest.TestCase): d = Survey.Data(survey,v=d_vec) # Check that d.T*Q*f = f.T*Q.T*d - V1 = d_vec.dot(survey.projectFieldsDeriv(None, v=f).tovec()) - V2 = np.sum((f.tovec())*(survey.projectFieldsDeriv(None, v=d, adjoint=True).tovec())) + V1 = d_vec.dot(survey.evalDeriv(None, v=f).tovec()) + V2 = np.sum((f.tovec())*(survey.evalDeriv(None, v=d, adjoint=True).tovec())) self.assertTrue((V1-V2)/np.abs(V1) < 1e-6) diff --git a/tests/mt/test_Problem1D_againstAnalyticHalfspace.py b/tests/mt/test_Problem1D_againstAnalyticHalfspace.py index 66f5f41d..dcfb7978 100644 --- a/tests/mt/test_Problem1D_againstAnalyticHalfspace.py +++ b/tests/mt/test_Problem1D_againstAnalyticHalfspace.py @@ -70,7 +70,7 @@ def appRes_TotalFieldNorm(sigmaHalf): fields = problem.fields(sigma) # Project the data - data = survey.projectFields(fields) + data = survey.eval(fields) # Calculate the app res and phs app_r = np.array(getAppResPhs(data))[:,0] @@ -88,7 +88,7 @@ def appPhs_TotalFieldNorm(sigmaHalf): fields = problem.fields(sigma) # Project the data - data = survey.projectFields(fields) + data = survey.eval(fields) # Calculate the app phs app_p = np.array(getAppResPhs(data))[:,1] @@ -106,7 +106,7 @@ def appRes_psFieldNorm(sigmaHalf): fields = problem.fields(sigma) # Project the data - data = survey.projectFields(fields) + data = survey.eval(fields) # Calculate the app res and phs app_r = np.array(getAppResPhs(data))[:,0] @@ -124,7 +124,7 @@ def appPhs_psFieldNorm(sigmaHalf): fields = problem.fields(sigma) # Project the data - data = survey.projectFields(fields) + data = survey.eval(fields) # Calculate the app phs app_p = np.array(getAppResPhs(data))[:,1] diff --git a/tests/mt/test_Problem3D_againstAnalytic.py b/tests/mt/test_Problem3D_againstAnalytic.py index 3eea95ca..f68e515f 100644 --- a/tests/mt/test_Problem3D_againstAnalytic.py +++ b/tests/mt/test_Problem3D_againstAnalytic.py @@ -210,7 +210,7 @@ def DerivProjfieldsTest(inputSetup,comp='All',freq=False): f = problem.fieldsPair(survey.mesh,survey) f[src,'e_pxSolution'] = u[:len(u)/2] f[src,'e_pySolution'] = u[len(u)/2::] - return rx.projectFields(src,survey.mesh,f), lambda t: rx.projectFieldsDeriv(src,survey.mesh,f0,simpeg.mkvc(t,2)) + return rx.eval(src,survey.mesh,f), lambda t: rx.evalDeriv(src,survey.mesh,f0,simpeg.mkvc(t,2)) return simpeg.Tests.checkDerivative(fun, u0, num=3, plotIt=False, eps=FLR)