From c8c034cc2dcdf42dfd6045c8ef4ee64e4074c38d Mon Sep 17 00:00:00 2001 From: GudniRos Date: Wed, 10 Feb 2016 07:06:57 -0800 Subject: [PATCH] Changed default input of Jvec for f to u --- SimPEG/MT/BaseMT.py | 26 +++++++++++++------------- SimPEG/MT/SurveyMT.py | 33 +++------------------------------ 2 files changed, 16 insertions(+), 43 deletions(-) diff --git a/SimPEG/MT/BaseMT.py b/SimPEG/MT/BaseMT.py index d6440bdb..e29e6a6a 100644 --- a/SimPEG/MT/BaseMT.py +++ b/SimPEG/MT/BaseMT.py @@ -27,7 +27,7 @@ class BaseMTProblem(BaseFDEMProblem): # Might need to add more stuff here. ## NEED to clean up the Jvec and Jtvec to use Zero and Identities for None components. - def Jvec(self, m, v, f=None): + def Jvec(self, m, v, u=None): """ Function to calculate the data sensitivities dD/dm times a vector. @@ -39,8 +39,8 @@ class BaseMTProblem(BaseFDEMProblem): """ # Calculate the fields - if f is None: - f = self.fields(m) + if u is None: + u = self.fields(m) # Set current model self.curModel = m # Initiate the Jv object @@ -56,9 +56,9 @@ class BaseMTProblem(BaseFDEMProblem): # We need fDeriv_m = df/du*du/dm + df/dm # Construct du/dm, it requires a solve # NOTE: need to account for the 2 polarizations in the derivatives. - f_src = f[src,:] + u = u[src,:] # dA_dm and dRHS_dm should be of size nE,2, so that we can multiply by dA_duI. The 2 columns are each of the polarizations. - dA_dm = self.getADeriv_m(freq, f_src, v) # Size: nE,2 (u_px,u_py) in the columns. + dA_dm = self.getADeriv_m(freq, u_src, v) # Size: nE,2 (u_px,u_py) in the columns. dRHS_dm = self.getRHSDeriv_m(freq, v) # Size: nE,2 (u_px,u_py) in the columns. if dRHS_dm is None: du_dm = dA_duI * ( -dA_dm ) @@ -68,25 +68,25 @@ 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, f, t) # wrt u, we don't have have PDeriv wrt m + PDeriv_u = lambda t: rx.projectFieldsDeriv(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 return mkvc(Jv) - def Jtvec(self, m, v, f=None): + def Jtvec(self, m, v, u=None): """ Function to calculate the transpose of the data sensitivities (dD/dm)^T times a vector. :param numpy.ndarray m (nC, 1) - conductive model :param numpy.ndarray v (nD, 1) - vector - :param MTfields object f (optional) - MT fields object, if not given it is calculated + :param MTfields object u (optional) - MT fields object, if not given it is calculated :rtype: MTdata object :return: Data sensitivities wrt m """ - if f is None: - f = self.fields(m) + if u is None: + u = self.fields(m) self.curModel = m @@ -103,15 +103,15 @@ class BaseMTProblem(BaseFDEMProblem): for src in self.survey.getSrcByFreq(freq): ftype = self._fieldType + 'Solution' - f_src = f[src, :] + u_src = u[src, :] for rx in src.rxList: # Get the adjoint projectFieldsDeriv # PTv needs to be nE, - PTv = rx.projectFieldsDeriv(src, self.mesh, f, mkvc(v[src, rx],2), adjoint=True) # wrt u, need possibility wrt m + PTv = rx.projectFieldsDeriv(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, f_src, mkvc(dA_duIT), adjoint=True) + dA_dmT = self.getADeriv_m(freq, u_src, mkvc(dA_duIT), adjoint=True) dRHS_dmT = self.getRHSDeriv_m(freq, mkvc(dA_duIT), adjoint=True) # Make du_dmT if dRHS_dmT is None: diff --git a/SimPEG/MT/SurveyMT.py b/SimPEG/MT/SurveyMT.py index f7d4b4e8..91102d47 100644 --- a/SimPEG/MT/SurveyMT.py +++ b/SimPEG/MT/SurveyMT.py @@ -46,34 +46,6 @@ class Rx(SimPEGsurvey.BaseRx): def __init__(self, locs, rxType): SimPEGsurvey.BaseRx.__init__(self, locs, rxType) - @property - def projField(self): - """ - Field Type projection (e.g. e b ...) - :param str fracPos: Position of the field in the data ratio - - """ - if 'numerator' in fracPos: - return self.knownRxTypes[self.rxType][0][0] - elif 'denominator' in fracPos: - return self.knownRxTypes[self.rxType][1][0] - else: - raise Exception('{s} is an unknown option. Use numerator or denominator.') - - @property - def projGLoc(self): - """ - Grid Location projection (e.g. Ex Fy ...) - :param str fracPos: Position of the field in the data ratio - - """ - if 'numerator' in fracPos: - return self.knownRxTypes[self.rxType][0][1] - elif 'denominator' in fracPos: - return self.knownRxTypes[self.rxType][0][1] - else: - raise Exception('{s} is an unknown option. Use numerator or denominator.') - @property def projType(self): """ @@ -471,10 +443,11 @@ class Survey(SimPEGsurvey.BaseSurvey): ################# class Data(SimPEGsurvey.Data): ''' - Data class for MTdata + Data class for MTdata. Stores the data vector indexed by the survey. :param SimPEG survey object survey: - :param v vector with data + :param v vector of the data in order matching of the survey + ''' def __init__(self, survey, v=None):