Derivative check of Jvec and wJv === vJtw are not passing.

This commit is contained in:
GudniRos committed 2015-10-21 14:15:08 -07:00
1 parent a963514f7e
commit 7d913ef178
6 files changed
+211 -115

No files matched your search

+30
View File
@@ -43,3 +43,33 @@ nosetests.xml
docs/_build/
*.ipynb_checkpoints
notebooks/scipy2015/001-Inversion_NoStopping.npy
notebooks/scipy2015/001-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/002-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/003-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/004-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/005-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/006-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/007-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/008-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/009-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/010-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/011-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/012-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/013-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/014-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/015-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/016-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/017-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/018-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/019-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/020-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/021-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/022-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/023-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/024-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/025-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/026-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/027-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/028-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/029-Inversion_NoStoppingregMesh_smoothFalse.npy
notebooks/scipy2015/030-Inversion_NoStoppingregMesh_smoothFalse.npy
@@ -188,42 +188,42 @@
"============================ Inexact Gauss Newton ============================\n",
" # beta phi_d phi_m f |proj(x-g)-x| LS Comment \n",
"-----------------------------------------------------------------------------\n",
" 0 7.58e+05 5.84e+06 0.00e+00 5.84e+06 1.45e+06 0 \n",
" 1 7.58e+05 6.42e+05 2.33e-04 6.43e+05 1.64e+05 0 \n",
" 2 7.58e+05 6.95e+04 7.43e-04 7.00e+04 2.00e+04 0 Skip BFGS \n",
" 3 9.47e+04 9.80e+03 1.31e-03 9.92e+03 2.87e+03 0 Skip BFGS \n",
" 4 9.47e+04 4.94e+03 5.58e-03 5.47e+03 3.72e+02 0 Skip BFGS \n",
" 5 9.47e+04 4.62e+03 7.58e-03 5.33e+03 3.58e+01 0 Skip BFGS \n",
" 6 1.18e+04 4.61e+03 7.61e-03 4.70e+03 5.85e+02 0 Skip BFGS \n",
" 7 1.18e+04 3.57e+03 3.44e-02 3.97e+03 3.49e+02 0 \n",
" 8 1.18e+04 3.27e+03 3.71e-02 3.71e+03 3.65e+02 0 \n",
" 9 1.48e+03 3.19e+03 3.67e-02 3.24e+03 5.87e+02 0 \n",
" 10 1.48e+03 3.11e+03 5.52e-02 3.19e+03 5.02e+02 0 \n",
" 11 1.48e+03 3.10e+03 5.75e-02 3.18e+03 5.14e+02 2 \n",
" 12 1.85e+02 3.09e+03 5.75e-02 3.10e+03 5.39e+02 3 \n",
" 13 1.85e+02 3.06e+03 7.96e-02 3.07e+03 4.75e+02 0 \n",
" 14 1.85e+02 3.06e+03 8.25e-02 3.07e+03 4.80e+02 3 \n",
" 15 2.31e+01 3.05e+03 8.50e-02 3.05e+03 4.82e+02 4 \n",
" 16 2.31e+01 3.04e+03 1.39e-01 3.04e+03 4.80e+02 2 \n",
" 17 2.31e+01 3.01e+03 1.59e-01 3.01e+03 4.72e+02 2 \n",
" 18 2.89e+00 3.01e+03 1.26e-01 3.01e+03 4.87e+02 1 \n",
" 19 2.89e+00 2.45e+03 1.96e-01 2.45e+03 5.42e+02 1 \n",
" 20 2.89e+00 2.11e+03 4.55e-01 2.12e+03 8.59e+02 0 Skip BFGS \n",
" 21 3.61e-01 1.95e+03 5.59e-01 1.95e+03 4.88e+02 0 \n",
" 22 3.61e-01 1.72e+03 5.09e-01 1.72e+03 3.32e+02 0 \n",
" 23 3.61e-01 1.56e+03 6.15e-01 1.56e+03 2.82e+02 0 Skip BFGS \n",
" 24 4.52e-02 1.49e+03 7.06e-01 1.49e+03 2.61e+02 1 \n",
" 25 4.52e-02 1.45e+03 8.86e-01 1.45e+03 2.72e+02 3 Skip BFGS \n",
" 26 4.52e-02 1.41e+03 7.88e-01 1.41e+03 3.08e+02 0 \n",
" 27 5.64e-03 1.41e+03 7.02e-01 1.41e+03 2.64e+02 0 \n",
" 28 5.64e-03 1.27e+03 7.59e-01 1.27e+03 3.48e+02 0 \n",
" 29 5.64e-03 9.93e+02 1.47e+00 9.93e+02 4.30e+02 1 \n",
" 30 7.05e-04 8.33e+02 3.08e+00 8.33e+02 5.44e+02 1 Skip BFGS \n",
" 0 6.86e+04 2.17e+05 0.00e+00 2.17e+05 5.84e+04 0 \n",
" 1 6.86e+04 2.43e+04 5.27e-04 2.43e+04 7.87e+03 0 \n",
" 2 6.86e+04 3.29e+03 1.23e-03 3.37e+03 1.10e+03 0 Skip BFGS \n",
" 3 8.58e+03 1.40e+03 5.11e-03 1.44e+03 2.44e+02 0 Skip BFGS \n",
" 4 8.58e+03 6.54e+02 4.10e-02 1.01e+03 3.22e+02 0 \n",
" 5 8.58e+03 5.71e+02 2.17e-02 7.57e+02 1.52e+02 0 \n",
" 6 1.07e+03 5.21e+02 2.55e-02 5.48e+02 1.38e+02 0 \n",
" 7 1.07e+03 4.93e+02 3.09e-02 5.26e+02 2.22e+02 0 \n",
" 8 1.07e+03 4.81e+02 2.85e-02 5.12e+02 1.93e+02 1 \n",
" 9 1.34e+02 4.74e+02 3.50e-02 4.79e+02 1.65e+02 0 \n",
" 10 1.34e+02 4.63e+02 3.61e-02 4.68e+02 1.68e+02 1 \n",
" 11 1.34e+02 4.50e+02 5.43e-02 4.57e+02 1.66e+02 2 \n",
" 12 1.68e+01 4.49e+02 5.21e-02 4.50e+02 1.92e+02 0 \n",
" 13 1.68e+01 4.34e+02 1.01e-01 4.35e+02 1.94e+02 3 \n",
" 14 1.68e+01 4.16e+02 2.16e-01 4.20e+02 1.91e+02 2 \n",
" 15 2.09e+00 3.39e+02 1.47e-01 3.39e+02 2.11e+02 0 \n",
" 16 2.09e+00 2.63e+02 7.82e-02 2.64e+02 1.33e+02 0 \n",
" 17 2.09e+00 1.84e+02 6.64e-02 1.84e+02 1.81e+02 1 Skip BFGS \n",
" 18 2.62e-01 1.78e+02 1.33e-01 1.79e+02 4.49e+02 0 Skip BFGS \n",
" 19 2.62e-01 9.38e+01 1.22e-01 9.38e+01 5.08e+01 0 \n",
" 20 2.62e-01 8.47e+01 1.01e-01 8.47e+01 5.36e+01 0 \n",
" 21 3.27e-02 7.92e+01 1.12e-01 7.92e+01 3.55e+01 0 \n",
" 22 3.27e-02 6.76e+01 1.22e-01 6.76e+01 5.51e+01 0 Skip BFGS \n",
" 23 3.27e-02 6.16e+01 1.13e-01 6.16e+01 3.68e+01 0 \n",
" 24 4.09e-03 6.11e+01 1.14e-01 6.11e+01 3.88e+01 0 Skip BFGS \n",
" 25 4.09e-03 5.82e+01 1.15e-01 5.82e+01 3.34e+01 0 \n",
" 26 4.09e-03 5.55e+01 1.22e-01 5.55e+01 3.30e+01 0 Skip BFGS \n",
" 27 5.11e-04 5.48e+01 1.22e-01 5.48e+01 2.57e+01 0 \n",
" 28 5.11e-04 5.34e+01 1.16e-01 5.34e+01 2.37e+01 1 \n",
" 29 5.11e-04 5.32e+01 1.16e-01 5.32e+01 2.48e+01 0 Skip BFGS \n",
" 30 6.39e-05 5.32e+01 1.16e-01 5.32e+01 2.23e+01 0 \n",
"------------------------- STOP! -------------------------\n",
"1 : |fc-fOld| = 1.5990e+02 <= tolF*(1+|f0|) = 5.8433e+05\n",
"0 : |xc-x_last| = 3.4554e+01 <= tolX*(1+|x0|) = 4.2689e+00\n",
"0 : |proj(x-g)-x| = 5.4392e+02 <= tolG = 1.0000e-01\n",
"0 : |proj(x-g)-x| = 5.4392e+02 <= 1e3*eps = 1.0000e-02\n",
"1 : |fc-fOld| = 4.2159e-02 <= tolF*(1+|f0|) = 2.1667e+04\n",
"1 : |xc-x_last| = 2.6596e-01 <= tolX*(1+|x0|) = 4.2689e+00\n",
"0 : |proj(x-g)-x| = 2.2265e+01 <= tolG = 1.0000e-01\n",
"0 : |proj(x-g)-x| = 2.2265e+01 <= 1e3*eps = 1.0000e-02\n",
"1 : maxIter = 30 <= iter = 30\n",
"------------------------- DONE! -------------------------\n"
]
@@ -251,27 +251,16 @@
},
{
"cell_type": "code",
"execution_count": 22,
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'Figure' object has no attribute 'supplot'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-22-599803cc310e>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mu'matplotlib inline'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mfig\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msimpegmt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mUtils\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdataUtils\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplotMT1DModelData\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mproblem\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mm_0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mmopt\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mfig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msupplot\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mAttributeError\u001b[0m: 'Figure' object has no attribute 'supplot'"
]
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x7f7c525e7090>"
"<matplotlib.figure.Figure at 0x7f112c6abc10>"
]
},
"metadata": {},
@@ -281,17 +270,27 @@
"source": [
"%matplotlib inline\n",
"fig = simpegmt.Utils.dataUtils.plotMT1DModelData(problem,[m_0,mopt])\n",
"fig.supplot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"outputs": [
{
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x7f112ab04110>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib qt\n",
"simpegmt.Utils.dataUtils.plotMT1DModelData(problem,modList)\n",
@@ -300,7 +299,7 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": null,
"metadata": {
"collapsed": false
},
@@ -321,7 +320,7 @@
{
"data": {
"text/plain": [
"78.694562868192662"
"20.71407085590263"
]
},
"execution_count": 11,
@@ -402,7 +401,7 @@
},
{
"cell_type": "code",
"execution_count": 14,
"execution_count": 15,
"metadata": {
"collapsed": false
},
@@ -427,7 +426,7 @@
" -3.00000000e+01, -2.00000000e+01, -1.00000000e+01])"
]
},
"execution_count": 14,
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
@@ -438,7 +437,7 @@
},
{
"cell_type": "code",
"execution_count": 15,
"execution_count": 16,
"metadata": {
"collapsed": false
},
@@ -451,7 +450,7 @@
},
{
"cell_type": "code",
"execution_count": 16,
"execution_count": 17,
"metadata": {
"collapsed": false
},
@@ -470,36 +469,13 @@
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"( self.mapping * (m_0) )"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<45x45 sparse matrix of type '<type 'numpy.float64'>'\n",
"\twith 45 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"self.Ws"
"( self.mapping * (m_0) )"
]
},
{
@@ -512,7 +488,8 @@
{
"data": {
"text/plain": [
"<SimPEG.Maps.IdentityMap at 0x7f7c7b890390>"
"<45x45 sparse matrix of type '<type 'numpy.float64'>'\n",
"\twith 45 stored elements in Compressed Sparse Row format>"
]
},
"execution_count": 18,
@@ -521,7 +498,7 @@
}
],
"source": [
"self.mapping"
"self.Ws"
]
},
{
@@ -534,7 +511,7 @@
{
"data": {
"text/plain": [
"-1.7347234759768071e-18"
"<SimPEG.Maps.IdentityMap at 0x7f11340a8250>"
]
},
"execution_count": 19,
@@ -543,7 +520,7 @@
}
],
"source": [
"0.5*(r1.dot(r1)-r2.dot(r2))"
"self.mapping"
]
},
{
@@ -556,7 +533,7 @@
{
"data": {
"text/plain": [
"0.029467074824486239"
"-1.7347234759768071e-18"
]
},
"execution_count": 20,
@@ -565,7 +542,7 @@
}
],
"source": [
"r1.dot(r1)"
"0.5*(r1.dot(r1)-r2.dot(r2))"
]
},
{
@@ -578,7 +555,7 @@
{
"data": {
"text/plain": [
"0.029467074824486243"
"0.029467074824486239"
]
},
"execution_count": 21,
@@ -586,6 +563,28 @@
"output_type": "execute_result"
}
],
"source": [
"r1.dot(r1)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.029467074824486243"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r2.dot(r2)"
]
+2 -2
View File
@@ -91,8 +91,8 @@ class BaseMTProblem(BaseFDEMProblem):
# Calculate the projection derivatives
for rx in src.rxList:
# Get the projection derivative
PDeriv = lambda v: rx.projectFieldsDeriv(src, self.mesh, u, v) # wrt u, also have wrt m
Jv[src, rx] = PDeriv(du_dm)
PDeriv_u = lambda v: rx.projectFieldsDeriv(src, self.mesh, u, v) # wrt u, also have wrt m
Jv[src, rx] = PDeriv_u(du_dm)
# Return the vectorized sensitivities
return mkvc(Jv)
+5 -4
View File
@@ -52,13 +52,14 @@ class eForm_ps(BaseMTProblem):
def getADeriv_m(self, freq, u, v, adjoint=False):
dsig_dm = self.curModel.sigmaDeriv
dMe_dsig = self.MeSigmaDeriv( u=u)
dMe_dsig = self.MeSigmaDeriv( u )
if adjoint:
return 1j * omega(freq) * ( dsig_dm.T * ( dMe_dsig.T * v ) )
return 1j * omega(freq) * ( dMe_dsig.T * v ) # As in simpegEM
# return 1j * omega(freq) * ( dsig_dm.T * ( dMe_dsig.T * v ) )
return 1j * omega(freq) * ( dMe_dsig * ( dsig_dm * v ) )
return 1j * omega(freq) * ( dMe_dsig * v ) # As in simpegEM
# return 1j * omega(freq) * ( dMe_dsig * ( dsig_dm * v ) )
def getRHS(self, freq):
"""
+1 -1
View File
@@ -406,7 +406,7 @@ class srcMT_polxy_1Dprimary(srcMT):
# Need to deal with
if problem.mesh.dim == 1:
# Need to use the faceInnerProduct
MsigmaDeriv = problem.mesh.getFaceInnerProductDeriv(problem.curModel.sigma)(self.ePrimary(problem)[:,-1]) * problem.curModel.sigmaDeriv
MsigmaDeriv = problem.mesh.getFaceInnerProductDeriv(problem.curModel.sigma)(self.ePrimary(problem)[:,1]) * problem.curModel.sigmaDeriv
# MsigmaDeriv = ( MsigmaDeriv * MsigmaDeriv.T)**2
if problem.mesh.dim == 2:
pass
@@ -6,9 +6,16 @@ import unittest
import SimPEG as simpeg
import simpegMT as simpegmt
from SimPEG.Utils import meshTensor
from scipy.constants import mu_0
TOLr = 5e-2
TOL = 1e-4
FLR = 1e-20 # "zero", so if residual below this --> pass regardless of order
CONDUCTIVITY = 1e1
MU = mu_0
freq = [1e-1, 2e-1]
addrandoms = True
def getInputs():
"""
@@ -30,7 +37,7 @@ def getInputs():
def halfSpace(conds):
''' Returns a halfspace model based on the inputs'''
M, freqs, rx_loc, elev = getInputs()
# Model
@@ -45,12 +52,12 @@ def halfSpace(conds):
return (M, freqs, sig, sigBG, rx_loc)
def twoLayer():
def twoLayer(conds):
''' Returns a 2 layer model based on the conductivity values given'''
M, freqs, rx_loc, elev = getInputs()
# Model
ccM = M.gridCC
conds = [1e-2,1]
groundInd = ccM[:,2] < elev
botInd = ccM[:,2] < -3000
sig = np.zeros(M.nC) + 1e-8
@@ -63,17 +70,20 @@ def twoLayer():
return (M, freqs, sig, sigBG, rx_loc)
def runSimpegMTfwd_eForm_ps(inputsProblem,singleFreq=False):
M,freqs,sig,sigBG,rx_loc = inputsProblem
def setupSimpegMTfwd_eForm_ps(inputSetup,comp='All',singleFreq=False):
M,freqs,sig,sigBG,rx_loc = inputSetup
# Make a receiver list
rxList = []
for rxType in ['zxyr','zxyi','zyxr','zyxi']:
rxList.append(simpegmt.SurveyMT.RxMT(rx_loc,rxType))
if comp == 'All':
for rxType in ['zxyr','zxyi','zyxr','zyxi']:
rxList.append(simpegmt.SurveyMT.RxMT(rx_loc,rxType))
else:
rxList.append(simpegmt.SurveyMT.RxMT(rx_loc,comp))
# Source list
srcList =[]
sigma1d = M.r(sigBG,'CC','CC','M')[0,0,:]
if singleFreq:
srcList.append(simpegmt.SurveyMT.srcMT_polxy_1Dprimary(rxList,freqs[-1]))
srcList.append(simpegmt.SurveyMT.srcMT_polxy_1Dprimary(rxList,freqs[2]))
else:
for freq in freqs:
srcList.append(simpegmt.SurveyMT.srcMT_polxy_1Dprimary(rxList,freq))
@@ -89,12 +99,10 @@ def runSimpegMTfwd_eForm_ps(inputsProblem,singleFreq=False):
except:
pass
problem.pair(survey)
problem.curMod = sig
problem.mapping = simpeg.Maps.ExpMap(problem.mesh)
fields = problem.fields(sig)
mtData = survey.projectFields(fields)
return (survey, problem, fields, mtData)
return (survey, problem)
def getAppResPhs(MTdata):
# Make impedance
@@ -105,10 +113,61 @@ def getAppResPhs(MTdata):
recData = MTdata.toRecArray('Complex')
return appResPhs(recData['freq'],recData['zxy']), appResPhs(recData['freq'],recData['zyx'])
def appResPhsHalfspace_eFrom_ps_Norm(sigmaHalf,appR=True):
def adjointTest(inputSetup):
# Make the survey
survey, problem, fields, data = runSimpegMTfwd_eForm_ps(halfSpace(sigmaHalf))
survey, problem = setupSimpegMTfwd_eForm_ps(inputSetup)
print 'Adjoint test of eForm primary/secondary\n'
m = problem.curMod
# if addrandoms is True:
# m = m + np.random.randn(problem.mesh.nC)*CONDUCTIVITY*1e-1
u = problem.fields(m)
v = np.random.rand(survey.nD)
# print problem.PropMap.PropModel.nP
w = np.random.rand(problem.mesh.nC)
vJw = v.dot(problem.Jvec(m, w, u))
wJtv = w.dot(problem.Jtvec(m, v, u))
tol = np.max([TOL*(10**int(np.log10(np.abs(vJw)))),FLR])
print ' vJw wJtv vJw - wJtv tol abs(vJw - wJtv) < tol'
print vJw, wJtv, vJw - wJtv, tol, np.abs(vJw - wJtv) < tol
return np.abs(vJw - wJtv) < tol
def derivProjfields(inputSetup):
survey, problem = setupSimpegMTfwd_eForm_ps(inputSetup)
print 'Derivative test of data projection for eFormulation primary/secondary\n\n'
# Define a src and rx
src = survey.srcList[-1]
rx = src.rxList[1]
u0 = np.random.randn(survey.mesh.nE)+np.random.randn(survey.mesh.nE)*1j
f0 = problem.fieldsPair(survey.mesh,survey)
f0[src,'e_pxSolution'] = u0
f0[src,'e_pySolution'] = u0
def fun(u):
f = problem.fieldsPair(survey.mesh,survey)
f[src,'e_pxSolution'] = u.ravel()
f[src,'e_pySolution'] = u.ravel()
return rx.projectFields(src,survey.mesh,f), lambda t: rx.projectFieldsDeriv(src,survey.mesh,f0,simpeg.mkvc(t,2))
return simpeg.Tests.checkDerivative(fun, u0, num=3, plotIt=False, eps=FLR)
def appResPhsHalfspace_eFrom_ps_Norm(sigmaHalf,appR=True):
if appR:
label = 'resistivity'
else:
label = 'phase'
# Make the survey and the problem
survey, problem = setupSimpegMTfwd_eForm_ps(halfSpace(sigmaHalf))
print 'Apperent {:s} test of eFormulation primary/secondary at {:g}\n\n'.format(label,sigmaHalf)
data = problem.dataPair(survey,survey.dpred(problem.curMod))
# Calculate the app phs
app_rpxy, app_rpyx = np.array(getAppResPhs(data))
if appR:
@@ -122,9 +181,16 @@ class TestAnalytics(unittest.TestCase):
pass
# def test_appRes2en1(self):self.assertTrue(appResPhsHalfspace_eFrom_ps_Norm(2e-1))
def test_appRes1en2(self):self.assertTrue(appResPhsHalfspace_eFrom_ps_Norm(1e-2))
def test_appRes1en3(self):self.assertTrue(appResPhsHalfspace_eFrom_ps_Norm(1e-3))
# def test_appRes2en1(self):self.assertTrue(appResPhsHalfspace_eFrom_ps_Norm(2e-1,False))
def test_appPhs1en2(self):self.assertTrue(appResPhsHalfspace_eFrom_ps_Norm(1e-2,False))
def test_appRes1en3(self):self.assertTrue(appResPhsHalfspace_eFrom_ps_Norm(1e-3))
def test_appPhs1en3(self):self.assertTrue(appResPhsHalfspace_eFrom_ps_Norm(1e-3,False))
# Do a derivative test
def test_deriv1(self):self.assertTrue(derivProjfields(halfSpace(1e-3)))
# Test the adjoint of Jvec and Jtvec
def test_adjointDeriv1(self):self.assertTrue(adjointTest(halfSpace(1e-3)))
if __name__ == '__main__':
unittest.main()