Skip to content

Commit

Permalink
Merge d7470eb into 8a776ac
Browse files Browse the repository at this point in the history
  • Loading branch information
lheagy committed Oct 4, 2016
2 parents 8a776ac + d7470eb commit cc3b188
Show file tree
Hide file tree
Showing 28 changed files with 2,912 additions and 111 deletions.
9 changes: 6 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ env:
PATH=$PATH:${HOME}/google-cloud-sdk/bin;
PYTHONPATH=${PYTHONPATH}:${GAE_PYTHONPATH};
CLOUDSDK_CORE_DISABLE_PROMPTS=1
- TEST_DIR=tests/dev_prs_only; # this only runs on dev, pr's to dev, master (long, large tests)

# Setup anaconda
before_install:
Expand Down Expand Up @@ -73,7 +74,11 @@ install:

# Run test
script:
- nosetests $TEST_DIR --with-cov --cov SimPEG --cov-config .coveragerc -v -s
- if [ "${TEST_DIR}" = "tests/dev_prs_only" ]; then
travis_wait 60 nosetests $TEST_DIR --with-cov --cov SimPEG --cov-config .coveragerc -v -s;
else
nosetests $TEST_DIR --with-cov --cov SimPEG --cov-config .coveragerc -v -s;
fi

# Calculate coverage
after_success:
Expand All @@ -98,8 +103,6 @@ after_success:
fi;
fi



notifications:
email:
- rowanc1@gmail.com
Expand Down
70 changes: 35 additions & 35 deletions SimPEG/EM/FDEM/FieldsFDEM.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ def _eDeriv_m(self, src, v, adjoint = False):
"""

# assuming primary does not depend on the model
return Zero()
return src.ePrimaryDeriv(self.prob, v, adjoint) #Zero()

def _bPrimary(self, eSolution, srcList):
"""
Expand Down Expand Up @@ -314,9 +314,9 @@ def _bSecondary(self, eSolution, srcList):
C = self._edgeCurl
b = (C * eSolution)
for i, src in enumerate(srcList):
b[:,i] *= - 1./(1j*omega(src.freq))
s_m, _ = src.eval(self.prob)
b[:,i] = b[:,i]+ 1./(1j*omega(src.freq)) * s_m
b[:, i] *= - 1./(1j*omega(src.freq))
s_m = src.s_m(self.prob)
b[:, i] = b[:, i] + 1./(1j*omega(src.freq)) * s_m
return b

def _bDeriv_u(self, src, du_dm_v, adjoint = False):
Expand All @@ -336,7 +336,7 @@ def _bDeriv_u(self, src, du_dm_v, adjoint = False):
return - 1./(1j*omega(src.freq)) * (C * du_dm_v)


def _bDeriv_m(self, src, v, adjoint = False):
def _bDeriv_m(self, src, v, adjoint=False):
"""
Derivative of the magnetic flux density with respect to the inversion model.
Expand All @@ -347,7 +347,7 @@ def _bDeriv_m(self, src, v, adjoint = False):
:return: product of the magnetic flux density derivative with respect to the inversion model with a vector
"""

s_mDeriv, _ = src.evalDeriv(self.prob, v, adjoint)
s_mDeriv = src.s_mDeriv(self.prob, v, adjoint)
return 1./(1j * omega(src.freq)) * s_mDeriv

def _j(self, eSolution, srcList):
Expand Down Expand Up @@ -511,10 +511,10 @@ def _bPrimary(self, bSolution, srcList):
:return: primary electric field as defined by the sources
"""

bPrimary = np.zeros([self.prob.mesh.nF,len(srcList)], dtype = complex)
bPrimary = np.zeros([self.prob.mesh.nF, len(srcList)], dtype = complex)
for i, src in enumerate(srcList):
bp = src.bPrimary(self.prob)
bPrimary[:,i] = bPrimary[:,i] + bp
bPrimary[:, i] = bPrimary[:, i] + bp
return bPrimary

def _bSecondary(self, bSolution, srcList):
Expand Down Expand Up @@ -567,10 +567,10 @@ def _ePrimary(self, bSolution, srcList):
:return: primary electric field as defined by the sources
"""

ePrimary = np.zeros([self._edgeCurl.shape[1],bSolution.shape[1]], dtype = complex)
for i,src in enumerate(srcList):
ePrimary = np.zeros([self._edgeCurl.shape[1], bSolution.shape[1]], dtype = complex)
for i, src in enumerate(srcList):
ep = src.ePrimary(self.prob)
ePrimary[:,i] = ePrimary[:,i] + ep
ePrimary[:, i] = ePrimary[:, i] + ep
return ePrimary

def _eSecondary(self, bSolution, srcList):
Expand All @@ -584,9 +584,9 @@ def _eSecondary(self, bSolution, srcList):
"""

e = ( self._edgeCurl.T * ( self._MfMui * bSolution))
for i,src in enumerate(srcList):
_,s_e = src.eval(self.prob)
e[:,i] = e[:,i] + - s_e
for i, src in enumerate(srcList):
s_e = src.s_e(self.prob)
e[:,i] = e[:, i] + - s_e

return self._MeSigmaI * e

Expand Down Expand Up @@ -618,15 +618,15 @@ def _eDeriv_m(self, src, v, adjoint=False):
"""

bSolution = Utils.mkvc(self[src, 'bSolution'])
_,s_e = src.eval(self.prob)
s_e = src.s_e(self.prob)

w = -s_e + self._edgeCurl.T * (self._MfMui * bSolution)
_, s_eDeriv = src.evalDeriv(self.prob, v, adjoint)


if adjoint:
return self._MeSigmaIDeriv(w).T * v - self._MeSigmaI.T * s_eDeriv
return self._MeSigmaIDeriv(w) * v - self._MeSigmaI * s_eDeriv
s_eDeriv = src.s_eDeriv(self.prob, self._MeSigmaI.T * v, adjoint)
return self._MeSigmaIDeriv(w).T * v - s_eDeriv + src.ePrimaryDeriv(self.prob, v, adjoint)
s_eDeriv = src.s_eDeriv(self.prob, v, adjoint)
return self._MeSigmaIDeriv(w) * v - self._MeSigmaI * s_eDeriv + src.ePrimaryDeriv(self.prob, v, adjoint)

def _j(self, bSolution, srcList):
"""
Expand Down Expand Up @@ -774,7 +774,7 @@ def _jPrimary(self, jSolution, srcList):
jPrimary = np.zeros_like(jSolution, dtype = complex)
for i, src in enumerate(srcList):
jp = src.jPrimary(self.prob)
jPrimary[:,i] = jPrimary[:,i] + jp
jPrimary[:, i] = jPrimary[:, i] + jp
return jPrimary

def _jSecondary(self, jSolution, srcList):
Expand Down Expand Up @@ -840,10 +840,10 @@ def _hPrimary(self, jSolution, srcList):
:return: primary magnetic field as defined by the sources
"""

hPrimary = np.zeros([self._edgeCurl.shape[1],jSolution.shape[1]],dtype = complex)
hPrimary = np.zeros([self._edgeCurl.shape[1], jSolution.shape[1]],dtype = complex)
for i, src in enumerate(srcList):
hp = src.hPrimary(self.prob)
hPrimary[:,i] = hPrimary[:,i] + hp
hPrimary[:, i] = hPrimary[:, i] + hp
return hPrimary

def _hSecondary(self, jSolution, srcList):
Expand All @@ -858,9 +858,9 @@ def _hSecondary(self, jSolution, srcList):

h = (self._edgeCurl.T * (self._MfRho * jSolution) )
for i, src in enumerate(srcList):
h[:,i] *= -1./(1j*omega(src.freq))
s_m,_ = src.eval(self.prob)
h[:,i] = h[:,i] + 1./(1j*omega(src.freq)) * (s_m)
h[:, i] *= -1./(1j*omega(src.freq))
s_m = src.s_m(self.prob)
h[:, i] = h[:, i] + 1./(1j*omega(src.freq)) * (s_m)
return self._MeMuI * h


Expand Down Expand Up @@ -897,7 +897,7 @@ def _hDeriv_m(self, src, v, adjoint=False):
C = self._edgeCurl
MfRho = self._MfRho
MfRhoDeriv = self._MfRhoDeriv
s_mDeriv,_ = src.evalDeriv(self.prob, adjoint = adjoint)
s_mDeriv = lambda v: src.s_mDeriv(self.prob, v, adjoint=adjoint)

if not adjoint:
hDeriv_m = -1./(1j*omega(src.freq)) * MeMuI * (C.T * (MfRhoDeriv(jSolution)*v ) )
Expand Down Expand Up @@ -951,7 +951,7 @@ def _eDeriv_m(self, src, v, adjoint=False):
:rtype: numpy.ndarray
:return: product of the derivative of the electric field with respect to the model with a vector
"""
jSolution = Utils.mkvc(self[src,'jSolution'])
jSolution = Utils.mkvc(self[src, 'jSolution'])
n = int(self._aveF2CCV.shape[0] / self._nC) # number of components
VI = sdiag(np.kron(np.ones(n), 1./self.prob.mesh.vol))
if adjoint:
Expand Down Expand Up @@ -999,10 +999,10 @@ def _bDeriv_m(self, src, v, adjoint=False):
:rtype: numpy.ndarray
:return: product of the derivative of the magnetic flux density with respect to the model with a vector
"""
jSolution = self[src,'jSolution']
jSolution = self[src, 'jSolution']
n = int(self._aveE2CCV.shape[0] / self._nC) # number of components
VI = sdiag(np.kron(np.ones(n), 1./self.prob.mesh.vol))
s_mDeriv,_ = src.evalDeriv(self.prob, adjoint = adjoint)
s_mDeriv = lambda v: src.s_mDeriv(self.prob, v, adjoint=adjoint)

if adjoint:
v = self._aveE2CCV.T * ( VI.T * v)
Expand Down Expand Up @@ -1063,10 +1063,10 @@ def _hPrimary(self, hSolution, srcList):
:return: primary magnetic field as defined by the sources
"""

hPrimary = np.zeros_like(hSolution,dtype = complex)
hPrimary = np.zeros_like(hSolution, dtype=complex)
for i, src in enumerate(srcList):
hp = src.hPrimary(self.prob)
hPrimary[:,i] = hPrimary[:,i] + hp
hPrimary[:, i] = hPrimary[:, i] + hp
return hPrimary

def _hSecondary(self, hSolution, srcList):
Expand Down Expand Up @@ -1123,7 +1123,7 @@ def _jPrimary(self, hSolution, srcList):
jPrimary = np.zeros([self._edgeCurl.shape[0], hSolution.shape[1]], dtype = complex)
for i, src in enumerate(srcList):
jp = src.jPrimary(self.prob)
jPrimary[:,i] = jPrimary[:,i] + jp
jPrimary[:, i] = jPrimary[:, i] + jp
return jPrimary

def _jSecondary(self, hSolution, srcList):
Expand All @@ -1138,8 +1138,8 @@ def _jSecondary(self, hSolution, srcList):

j = self._edgeCurl*hSolution
for i, src in enumerate(srcList):
_,s_e = src.eval(self.prob)
j[:,i] = j[:,i]+ -s_e
s_e = src.s_e(self.prob)
j[:, i] = j[:, i] + -s_e
return j

def _jDeriv_u(self, src, du_dm_v, adjoint=False):
Expand Down Expand Up @@ -1170,7 +1170,7 @@ def _jDeriv_m(self, src, v, adjoint=False):
:return: product of the current density derivative with respect to the inversion model with a vector
"""

_,s_eDeriv = src.evalDeriv(self.prob, v, adjoint)
s_eDeriv = src.s_eDeriv(self.prob, v, adjoint)
return -s_eDeriv

def _e(self, hSolution, srcList):
Expand Down
5 changes: 1 addition & 4 deletions SimPEG/EM/FDEM/ProblemFDEM.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,8 @@ def Jvec(self, m, v, f=None):
for rx in src.rxList:
df_dmFun = getattr(f, '_{0}Deriv'.format(rx.projField), None)
df_dm_v = df_dmFun(src, du_dm_v, v, adjoint=False)
# Jv[src, rx] = rx.evalDeriv(src, self.mesh, f, df_dm_v)
Jv.append(rx.evalDeriv(src, self.mesh, f, df_dm_v))
Ainv.clean()
# return Utils.mkvc(Jv)
return np.hstack(Jv)

def Jtvec(self, m, v, f=None):
Expand Down Expand Up @@ -170,7 +168,6 @@ def getSourceTerm(self, freq):

for i, src in enumerate(Srcs):
smi, sei = src.eval(self)
#Why are you adding?
s_m[:,i] = s_m[:,i] + smi
s_e[:,i] = s_e[:,i] + sei

Expand Down Expand Up @@ -426,7 +423,7 @@ def getRHSDeriv(self, freq, src, v, adjoint=False):
SrcDeriv = s_mDeriv(v) + C * (self.MeSigmaI * s_eDeriv(v))
elif adjoint:
RHSderiv = MeSigmaIDeriv.T * (C.T * v)
SrcDeriv = s_mDeriv(v) + self.MeSigmaI.T * (C.T * s_eDeriv(v))
SrcDeriv = s_mDeriv(v) + s_eDeriv(self.MeSigmaI.T * (C.T * v))

if self._makeASymmetric is True and not adjoint:
return MfMui.T * (SrcDeriv + RHSderiv)
Expand Down

0 comments on commit cc3b188

Please sign in to comment.