mirror of
https://github.com/wassname/simpeg.git
synced 2026-10-29 13:40:11 +08:00
Derivative check of Jvec and wJv === vJtw are not passing.
This commit is contained in:
1 parent
a963514f7e
commit
7d913ef178
6 files changed
+211
-115
No files matched your search
+30
@@ -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": "iVBORw0KGgoAAAANSUhEUgAAAn0AAAIBCAYAAAA8kwl3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VNX5+PHPSQIEAgRQICBKQFBRkEVAFiVxpSrFtVJx\nQ6nLl1pq1Wp/X6snx7ZU/VoruFMpUdxwoVVU1KoEQlEEREBAiAIiq2xZWEIgeX5/3CFkmSRDMpk7\nSZ736zUvcu89c+4zmjv3yblnMSKCUkoppZSq32L8DkAppZRSStU+TfqUUkoppRoATfqUUkoppRoA\nTfqUUkoppRoATfqUUkoppRoATfqUUkoppRoATfqUUkoppRoATfqUUkoppRoATfqUqmeMMa2NMX81\nxtxljGlijHnOGLPcGDPVGNPG7/iUUkr5Q5M+peqfqUBj4GTgMyAH+CWwDpjkY1xKKaV8ZHQZNqXq\nF2PMMhE53RgTA2wFkkSkKHBsqYj09jdCpZRSftCWPqXqnyKAQKK36HDCp5RSqmGL8zsApRoyY0yz\nar51v1TcTJ9jjGkhInkicnGJc7UHDlTzfEoppWrIOdcYwFpb4Mf59fGuUj4yxlSnFU6AASLy1VGe\nqxXQWkTWVeOcSimlqsk5Fw+cDdwN5ALTrbVvRzoOTfqU8lEg6fszsDbEt8QALwD9jzbpU0opFXnO\nudbAtcBwYAaQBUwBRlprV0cyFn28q5T/3hORL0MpaIyJw0v6jpoxpgWQgjeqt3Vg927gW2COiOyp\nTr1KKaWCCzzOHQ30Bh611mYG9m8EIj6FliZ9SvmrK7A51MIicsgY0xXYFOp7AqN4HXAX0BTYh5fs\ngZf8NQP2GWMeB2wlfQWVUkodnaHAz4EJ1tpM51wscDne9/6iSAejo3eV8pGIrBeRo+rQG3jPwaN4\niwV+B6QBySLSXESOD7yaA50Dxw6XUUopVUPOuTjgNmCGtXZuYPss4Ey8hK/IORfRPExb+pSKQoHH\nuI3L7heRfdWo7lfA3SLyfLCDIvIj8JgxJhcvQbTVOIdSSqnSBMgHDv9hPwroE9hOt9YWlizsnGtj\nrd1VmwHpQA6lokRgdO1f8Zr+2wKmTBERkdhq1LsXGCkin1ZR7jxgpohUdxoZpZRSJTjn+gHTgO14\nj3QzgdestdnOuThr7SHn3M1AL6A/8Gdr7Ue1FU+dTfqMMXUzcFXviEjZ5KxajDEzgFTgH8D3HPnr\nsOS50qtR76dAIXBFRYM1jDHN8UaVxYrIeSHUqdefUkoFVHYfcM4lAYnAemttublSnXN/wUsKNwCP\nAGOttXNrI8463adPRCp8WWsr3Rfs52D/Hn7pufRcwc4VZucBd4jIfSIyWUTSy76qWe9vgJ7AD8aY\nV40xDxpjxgdeDxhjXgV+CJS5I9RKQ/nvFup2RftCOVadclW9Xz+Xfi79XPq5Qn1VxVq7NTA1y2XO\nucGH9zvnxjvn7gLOB+Zba2fgzc7Q66i+4Y9CbFpaWm3VXaucc2lVxZ6cnFzpvmA/B/t3/fr1pKam\n6rn0XOX+ffHFF0lLS3OVnixEzrkbgA/T0tK+DUd9h6WlpW13zv0Tr+XwDOAi4FLgQuD0wP4XgZtE\nZGOIsRZff1X9dwt1u6J9oRyrTrlgMjIyin939HNVvl1VTPq5QisXjH6uis8XjZ/LORfSfWDOnDm7\ngK6pqalZzrk0oAfeU52dwFNz5szJBv4OTElNTQ3rfaBYTbJbP19e6JFhrdVz6bmCCvwehut3eiTw\nFdA5XHXW1iuS118kRfJ3J5L0c9Ut+rnqlurcB9LS0v6WlpY2Mi0trVFgOz0tLe2atLS0S462rqN5\n6ejdEFTVaqTnarjnCicRedcYcxHwnTFmHZCNN5hDDv8rIgNr6/zGmKZAWxHZEEr5tLQ0UlNT6+x/\n72Dq02cpST9X3aKfK7oVFBSwe/duWrRoQbNmRzfuzTln8OZLPRn43lp70Dl3GnAu8KS1dnH4Iz6i\nTg/kqKuxq/rDGIOEbyDH3/DmyltI8IEcIiI3heNcFZz/KmC6hDBCWK8/pVRDsXLlSrKysti1axe7\ndu0iPz+fVq1acdFFF9G1a9dq3Qecc6cC/wLeAa4EnrfWPlob8ZekSZ9SNRDmpC8beFREJoSjvmqc\n/yrgDRGpcoCXXn9KqbpqxYoVfPfddxw4cICCggIKCgo4cOAAQ4YMoXfv3uXKZ2VlkZeXR5s2bWjT\npg0tWrTAmCNf+9W9DzjnugH9gL3W2vdr8plCpUmfUjUQ5qRvC3CjiHwcjvpK1Dsb7xFxVdoBPbSl\nTylVn23YsIEdO3bQpEkTGjduXPxvYmIiTZs2Per6wnkfqG2a9ClVA2FO+v6ANznnL8L5y22MKQRW\nAyurKHocMFCTPqVUXZadnc3ChQvJycnhqquuqvXz1aWkTwdyKBU9jsFbk3G1MSYDbyBHKSJybzXq\nXQGsEpFRlRU6/Hg31Err40AOpVTdJCKsXbuWL7/8kh9//JHevXtz7rnn+h1W1NGWPqVqIMwtfesp\nMVK37GG8gRxdqlHv88BFInJCFeW0T59SKir897//ZcOGDSQkJJCQkEDz5s1JSEjg+OOPJzExsVz5\nqVOncuDAAQYOHEivXr1o1KhRxGKtSy19mvQpVQN14WI3xnQDTsVbV7fCiyYwZUt7EVkfQp16/Sml\nas2OHTvYsWMHe/fuZc+ePezdu5e9e/dyxhln0LVr13Llc3JyaNmyZakBFpFSF+4Dh2nSp1QN1KWL\nPZz0+lNKKU9dug/U6bV3lVJKKVV3bdmyhR9++MHvMBoMTfqUUkopFVEiwsKFC3n55ZfZv3+/3+E0\nGJr0KaWqJS0tjYyMDL/DUErVMQcOHGDGjBksXryYm2++mVNOOcXvkBoM7dOnVA3Upb4c4WSMkRtT\nUgBolZzME+np/gaklKoTtm3bxptvvknnzp352c9+FtFRtrWlLt0HdJ4+pVS1dJkzB4B1PsehlKo7\n9u3bx7Bhwzj99NP9DsUXzrnGANbasmurR4S29ClVA+H+C88YMxC4AugIxJc8hDdP39XhOldNGGOk\nc+DnmGOP5ftt2zAxR3qL3DlmDNnr15d7X9lWwVDLKaVUtArlPuCciwfOBu4GcoHp1tq3IxFfSRFv\n6TPGnAdcBJwCtMabhHY38C0wS0Q+i3RMSkUDY8ydwOPANmAtcDBwqKIJm311eLxd4o4dPJyYSNvT\nTqNdz56069mTLUuWcOqyZeXeU7ZVMHv9+uIWw8rKKaVUXeWcaw1cCwwHpgNZwBTn3DfW2tWRjCVi\nSZ8xpg3wb+AsvO/0VRz5bm+N17pxtzEmE7hcRHZFKjalosQ9wCTgd3WpGTs+MZE7161j+4oV/PTN\nN/z0zTfkVDAFw7alS3njyitplJBA4+bN2fX99xz1EiNKqaiXl5fH2rVr6d27t9+h+CrwOHc00Bt4\n1FqbGdi/EWgT6Xgi2dI3CWgPnCkiC4MVMMb0B14JlL0ugrEpFQ3igffqUsIHsL+ggJhmzTjhrLM4\n4ayzAHjjm28gSAtey+OPp+fo0RTs2UPBnj3EfvhhpMNVStUiEWHJkiV8+umnDBgwwO9wosFQ4OfA\nBGttpnMuFrgc2AwsAnDOGWttRL73I9anzxiTDYwRkX9XUe4y4EURKb+4Xulyde3eqOqhMK+9+zgQ\nLyLjwlFfbTLGFF98jRs1olXr1tx8883cdtttJCcn0y0piUPbtpV7X1z79ny3dWvx9pjU1OCPd1NS\nSNfpYJSqU3bt2sV7773HgQMHGDlyJO3bt/c7pIio6D7gnIsDXgY+s9ZODmwPBUYAG4GngKJIJXwQ\n2Xn6ivD6JVXFBMoq1dDcBzQ1xnxijPlfY8y4si+/Awxm8JAhzJ07l/z8fPr378+IESPYmZfHD1Du\ntSc/39dYlVK1Y82aNbzwwgt069aNsWPHNpiErwoC5AOHR+qOwkv4CoB0a23h4YLOuYudc4NqO6BI\ntvRNBYYBN4rIvArKDAVeAuaIyM1V1Kctfcp3YW7puxB4E2hRURkRiYoJ1Y0xkhKYpy85OZn0wEjb\nffv2MX36dG679VYOHjpU7n3HtW/PxhItfWVH7+7bsYPda9dy6lVXMfGll2r1MyilwmfPnj0UFBTQ\npk3Eu6n5rrL7gHOuHzAN2I73SDcTeM1am+2ci7HWFgXK9cXLf+611s6qtVgjmPQlAm8AFwBb8Ubr\nZgcOt8IbzZsEfAyMEpGcKurTpE/5LsxJ3xq8BrHxwPci4ss8TqGo6vpLTU1lTpDHtikpKZWu4iEi\nTDv/fHpceSUDxkVlw6ZSqoHLyMgo9T3mnKv0PuCcSwISgfXW2gOBfbGHW/qcc3HW2kPOubOAR4E/\n1VbiF/F5+owxgyk9ZQvALo5M2fJFiPVo0qd8F+akbw9wmYh8Eo76apPX0ncFAMnJ7UhPf7bU8aSk\njmzbtqXc+9q378DWrZsrrXvr11/z8vDh3LF6NfGtWoUvaKVUjYkIBQUFNGnSxO9Qokao9wHn3Ci8\nxG9BYLvUAA7nXAfgQeA2oLO19sdwxxrxefpE5HPg80ifV6k64FO8Yf1Rn/QBzJlzeBrBn8ody88P\n3kiZk5OLiGCM9/04Zsz/sH59+ffHtEyi94QJXPDoo8X7KiobLOn0u6zf59fPpZ+rNurcuXMns2bN\n4uuvl7No0Xf15nOFs2wV5gL9oFTrXmO8VsAHge54U9n9sjYSPtBl2JSKJhOB540xzfASwOyyBURk\nZcSjqkJu7j4WLcoiLi6WRo3iiIuLIS4unvJTUBVy8OBebr55LE8++SQJCc1Yv/6nEsnjEUMHncCS\nKVPof/vttO7aFaDCssGSTr/L+n3+2irr9/lrq6zf56+tsuGqs6CggMzMTBYvXsxZZLine 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
@@ -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)
|
||||
|
||||
|
||||
@@ -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):
|
||||
"""
|
||||
|
||||
@@ -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()
|
||||
Reference in new issue
Block a user