Files
simpeg/notebooks/SimPEG Tutorial - DC Fwr Problem.ipynb
T
D Fournier 78584ae49d Create pseudo-section simulation in Notebook.
Sub-functions added to BaseDC. Required for the simulation
2016-02-01 21:03:58 -08:00

442 lines
78 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Objective:** \n",
"\n",
"In this tutorial we will create a simple two-sphere model and simulate DC Resistivity data for various transmitter-receiver configurations.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Efficiency Warning: Interpolation will be slow, use setup.py!\n",
"\n",
" python setup.py build_ext --inplace\n",
" \n"
]
}
],
"source": [
"from SimPEG import *\n",
"import simpegDCIP as DC\n",
"import scipy.interpolate as interpolation\n",
"import time\n",
"import re"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\dominiquef.MIRAGEOSCIENCE\\AppData\\Local\\Continuum\\Anaconda\\lib\\site-packages\\IPython\\kernel\\__init__.py:13: ShimWarning: The `IPython.kernel` package has been deprecated. You should import from ipykernel or jupyter_client instead.\n",
" \"You should import from ipykernel or jupyter_client instead.\", ShimWarning)\n",
"WARNING: "
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"pylab import has clobbered these variables: ['linalg']\n",
"`%matplotlib` prevents importing * from pylab and numpy\n"
]
}
],
"source": [
"%matplotlib notebook\n",
"%pylab inline"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"(-200, 200)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x15e3dd30>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# First we need to create a mesh and a model.\n",
"\n",
"# This is our mesh\n",
"dx = 5.\n",
"\n",
"hxind = [(dx,15,-1.3), (dx, 75), (dx,15,1.3)]\n",
"hyind = [(dx,15,-1.3), (dx, 10), (dx,15,1.3)]\n",
"hzind = [(dx,15,-1.3),(dx, 15)]\n",
"\n",
"mesh = Mesh.TensorMesh([hxind, hyind, hzind], 'CCN')\n",
"\n",
"# Define our model\n",
"bckgr = 1e-2\n",
"cond = 1e-1\n",
"resis = 1e-3\n",
"zloc = -50.\n",
"xloc = 50.\n",
"yloc = 0.\n",
"radi = 25.\n",
"\n",
"# Set background conductivity\n",
"model = np.ones(mesh.nC) * bckgr\n",
"\n",
"# First anomaly (conductor)\n",
"ind = Utils.ModelBuilder.getIndicesSphere([-xloc,yloc,zloc],radi,mesh.gridCC)\n",
"model[ind] = cond\n",
"\n",
"# Second anomaly (resistor)\n",
"ind = Utils.ModelBuilder.getIndicesSphere([xloc,yloc,zloc],radi,mesh.gridCC)\n",
"model[ind] = resis\n",
"\n",
"# Get index of the center\n",
"indy = int(mesh.nCy/2)\n",
"indz = int(np.argmin( np.abs(mesh.vectorCCz - zloc) ))\n",
"\n",
"# Plot the model for reference\n",
"# Define core mesh extent\n",
"xlim = 200\n",
"zlim = 200\n",
"\n",
"plt.figure()\n",
"ax = plt.subplot(1,2,1, aspect='equal')\n",
"mesh.plotSlice(np.log10(model), ax =ax, normal = 'Y', ind = indy,grid=True)\n",
"ax.set_title('E-W section at '+str(mesh.vectorCCy[indy])+' m')\n",
"plt.gca().set_aspect('equal', adjustable='box')\n",
"plt.xlim([-xlim,xlim])\n",
"plt.ylim([-zlim,0])\n",
"\n",
"ax = plt.subplot(1,2,2, aspect='equal')\n",
"mesh.plotSlice(np.log10(model), ax =ax, normal = 'Z', ind = indz,grid=True)\n",
"ax.set_title('Depth at '+str(mesh.vectorCCz[indz])+' m')\n",
"plt.gca().set_aspect('equal', adjustable='box')\n",
"plt.xlim([-xlim,xlim])\n",
"plt.ylim([-xlim,xlim])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we have model in 3D, we can define a survey.\n",
"There area various ground DC configurations used in the field.\n",
"We can explore two survey types here: pole-dipole (pdp) and dipole-dipole (dpdp).\n",
"In both cases we need to specify three important parameter.\n",
"\n",
"a: Seperation (m) between the transmitter and receivers\n",
"\n",
"b: Dipole seperation (m) of the receiver (and transmitter for dpdp)\n",
"\n",
"n: Number of receiver dipoles along line\n",
"\n",
"We also need to give a starting and end point for the survey.\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(-200, 200)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAVoAAAFRCAYAAAA1lmW1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHhRJREFUeJzt3X+YXFWd5/H3R37oYBhjFg0hiWkcwy5Bhl8acGUAV8Uw\nugScVWRGBGVZd+OCOz7rQFAnwcxGcMfsiAo8rqCAJpoZfmx4lEhQIcLu0qKA0cCQIB3TkQRG0mJm\nmCWJ3/3jng6VSlWnurpO3duVz+t5+smtc26d+73VlW/f+t5zbykiMDOzfF5SdgBmZr3OidbMLDMn\nWjOzzJxozcwyc6I1M8vMidbMLDMnWhsXJA1IemvZcZi1w4nWRi0lvX+S9JykrZLul/RhSerQ+F+T\ntKiuOdJPJ8YfkPRvRvmceyQ9L+m36efRmr6TJK2S9GtJT0taLunQdsay3uREa+0I4F0R8fvAa4Ar\ngUuB60uNqnUBjPaPQgAfiYiD08+RNX0TgeuAGennt8BX2xzLepATrY1JRPw2Iu4AzgHOl3QUgKSX\nSvprSRskbZZ0raSXpb7TJA1Kmi/pGUlPSvrT1PcfgD8F/iId7f2vms0dJ+kRSUOSvinppY1ikvQH\nkr4v6R/S+F+X9IrUdzPFH4c70vj/dRS72zA5R8TKiLglIrZFxPPAl4A3tzNWg325IH1iWJI+PayX\n9K8lfVDSLyVtkfSBUeyDlcCJ1joiIn4EDAInp6YrgdcBx6R/pwJ/WfOUycC/AA4Dzge+LGlmRHwZ\n+AZwVTram5vWF/Ae4B3A4cAfAheMENJ/A6YARwLTgYUpzvOAX1IckR8cEX89it38TErc90k6dYT1\nTgF+1qGxAGYDjwCTgGXAcuB44A+A9wNflHRQa7tgZXCitU76FTAp1WovAj4WEUMRsQ34DPC+uvU/\nFRHbI2I18G2Ko2Iokmr9EV8AV0fE5ojYCtwBHNsoiIh4IiK+l8b+B+B/AHtLZntzKUWCPwz4MsUR\n8WvrV5L0h8CngI+PdawaT0bEjVHcmGR5et6n0/6tAl6g+GNmFeVEa500DXgWOAQ4CPhx+ri7Fbgz\ntQ/bmj5mD9tAcQQKzU96ba5Zfh6Y0GglSZNTaWFQ0m+AmymOnlsi6c6aE1XnAkREf0T8Y0puNwH3\nA39c97zXAd8BLomI+5uN38pYdbbULD+fxnimrq3ha2HVsH/ZAVhvkPRGiiOt+4BfU/znnxURTzV5\nyislHRQR/5QezwB+mpZbmV0w0jqLgZ3A6yNiSNJZwBdafC4RcUYL29+NpBnAKoojzW+M9vnW23xE\na+0SgKTfl/QuitrhzRHx84j4HfA/gb+R9Kq03lRJp9eNcYWkAyT9EfBO4G9T+xZgpI/Su7bfxATg\nH4HnJE1lz4/xWyjqmy2R9ApJ75D0Mkn7S/oz4I+Alal/KvB94Iupxtz2WNabnGitXXdIeo7ixNJ8\n4HPAB2v6LwXWA/83fXxfBRxR078Z2EpR170Z+HBEPJ76rgdmpbLDrU22P9K82isoThb9hqKWe0vd\nup8BPpnG/1gL+3oAsAh4GngG+AgwNyLWp/5/T1FzXVhTcnhu+MmSLpf0nfTwwL2M1cp++ibS44zK\nuvG3pOnATcCrKd44X46IqyVNAr5F8VFyAHhvRAyl58wHPkTxsfCSiLirjNhtbCSdRnH0O73sWMy6\nocwj2u3An0fEUcBJwEckHQlcBqyKiCOA76XHSJpFcVZ6FjAHuEaSj8jNrPJKS1Rpms7DaXkb8CjF\nXMszgRvTajcCZ6XlucCydKZ2gOJj6eyuBm2d5I+/ts+oxBGhpD7gOOABYHJEDE9n2UIxsR2KM9qD\nNU8bpEjMNs5ExD0R8Zqy4zDrltITraQJFCcrPhoRv63tSxO0Rzry8VGRmVVeqfNoJR1AkWRvjojb\nU/MWSYdGxGZJUyjOzgJsoriUcti01FY/ppOvmWUREW3doa7MWQeiqMH+OiL+vKb9s6ntKkmXARMj\n4rJ0MmwpRV12KnA38Lqo2wFJ8am4fNfjexeu5tSFp+y27dq2+v52+pqtd+/C1QBjHr8TfVWJZTiG\nbu572bG0sl79v918HRzL3vMEwCItbjvRlnlE+2aKG2L8VNJDqW0+xc1Ilku6kDS9CyAi1kpaDqwF\ndgDz6pOsmVkVlZZoI+I+mteI39bkOYspLq80Mxs3Sj8Z1stmnDaj7BB2qUosVYkDHEszjqXznGgz\n6qvQm6QqsVQlDnAszTiWznOiNTPLzInWzCwzJ1ozs8ycaM3MMnOiNTPLzInWzCwzJ1ozs8ycaM3M\nMivtpjK5SIpTFpxcdhhm1mNWX3HfuLypTDbN7tDTqK1bd2dy377bV9W43De6u3etvuI+2uXSgZlZ\nZk60ZmaZOdGamWXmRGtmlpkTrZlZZk60ZmaZOdGamWXmRGtmlpkTrZlZZk60ZmaZOdGamWXmRGtm\nlpkTrZlZZk60ZmaZlZpoJd0gaYukNTVtCyUNSnoo/ZxR0zdf0jpJj0k6vZyozcxGp+wj2q8Cc+ra\nAlgSEcelnzsBJM0CzgFmpedcI6ns+M3M9qrURBURPwS2NuhqdBfzucCyiNgeEQPAemB2xvDMzDqi\nqkeEF0t6RNL1kiamtsOAwZp1BoGp3Q/NzGx0qphorwUOB44FngI+N8K6vfWFZ2bWkyr3nWER8fTw\nsqSvAHekh5uA6TWrTktte7h34epdy0MDQ50P0sx63tDA0G65ZCwql2glTYmIp9LDs4HhGQkrgKWS\nllCUDGYC/Y3GqP8CNjOz0ZrYN7FjX85YaqKVtAw4FThE0kZgAXCapGMpygJPAh8GiIi1kpYDa4Ed\nwLzote9KN7OeVGqijYhzGzTfMML6i4HF+SIyM+u8Kp4MMzPrKU60ZmaZOdGamWWmXjufJClOWXBy\n2WGYWY9ZfcV9RESjq1b3qnLTuzqhfnpX7eP6tvr+dvo6MYb7erevqnG5r3lfo7axTO9y6cDMLDMn\nWjOzzJxozcwyc6I1M8vMidbMLDMnWjOzzJxozcwyc6I1M8vMidbMLDMnWjOzzJxozcwyc6I1M8vM\nidbMLDMnWjOzzJxozcwyc6I1M8vMidbMLDMnWjOzzJxozcwyc6I1M8vM34JrZtaCcfstuJJuAN4J\nPB0RR6e2ScC3gBnAAPDeiBhKffOBDwE7gUsi4q5G4/pbcN1Xpb6qxuW+fedbcL8KzKlruwxYFRFH\nAN9Lj5E0CzgHmJWec42ksuM3M9urUhNVRPwQ2FrXfCZwY1q+ETgrLc8FlkXE9ogYANYDs7sRp5nZ\nWFTxiHByRGxJy1uAyWn5MGCwZr1BYGo3AzMza0cVE+0uUZypG+lsXW+dyTOznlTqybAmtkg6NCI2\nS5oCPJ3aNwHTa9abltr2cO/C1buWhwaGcsVpZj1saGBot1wyFlVMtCuA84Gr0r+317QvlbSEomQw\nE+hvNED9mUUzs9Ga2DexY7MOyp7etQw4FThE0kbgL4ErgeWSLiRN7wKIiLWSlgNrgR3AvOi1ScBm\n1pNKTbQRcW6Trrc1WX8xsDhfRGZmnVfpk2FmZr3AidbMLDMnWjOzzJxozcwyc6I1M8vMidbMLDMn\nWjOzzHzjbzOzFozbG3/n4ht/u69KfVWNy337zo2/zcx6nhOtmVlmTrRmZpk50ZqZZeZEa2aWmROt\nmVlmTrRmZpk50ZqZZeZEa2aWmROtmVlmTrRmZpn5pjJmZi3wTWXq+KYy7qtSX1Xjcp9vKmNm1jOc\naM3MMnOiNTPLzInWzCyzyp4MkzQAPAfsBLZHxGxJk4BvATOAAeC9ETFUWpBmZi2o8hFtAKdFxHER\nMTu1XQasiogjgO+lx2ZmlVblRAtQP2ftTODGtHwjcFZ3wzEzG70qJ9oA7pb0oKSLUtvkiNiSlrcA\nk8sJzcysdZW9MkzSlIh4StKrgFXAxcCKiHhlzTrPRsSkuufFa06dvuvxxL5XMLFvYrfCNrMeMTQw\nxNDAb3Y9/uW9G3vvyrCIeCr9+4yk24DZwBZJh0bEZklTgKcbPff8e87btewrw9xXdl9V43Lf3q8M\nm/u1M3c9XqTFtKuSpQNJB0k6OC2/HDgdWAOsAM5Pq50P3F5OhGZmravqEe1k4DZJUMT4jYi4S9KD\nwHJJF5Kmd5UXoplZayqZaCPiSeDYBu3PAm/rfkRmZu2rZOnAzKyXONGamWVW2eld7fKNv80sB9/4\nu06zKRyN2jx9x32e3uW+veUJ8I2/zcwqzYnWzCwzJ1ozs8ycaM3MMvOsAzOzFnjWQR3POnBflfqq\nGpf7POvAzKxnONGamWXmRGtmlplPhlnHaAw1rFrRY7+/1VfsN+YxTlmwswOR2FiM5WRYTybaT8Xl\nux77ZFj3+vbTYn4AvCWtV7tc/3ikvu8vOLmS+9du3yLd3+Yr8eLyp+KFyuzPvtDXqG2RFredaF06\nMDPLrCePaF06KIdLB425dNAbXDqo4dJBd/tWa/EYPxSP3LczLq/svo/Ut3u5oBOvxO6PT1lwd2X2\ntRf7GrW5dGBmVmFOtGZmmfVk6cA12nw6VYdtV1Xrt52ow7bL9dvucI22hmu042MKV69N/VqkA0fY\ni7yvkqd+uUZrZrbP68kjWpcO8nHpoDGXDnqfSwc1XDpw6aCMPpcOequvUZtLB2ZmFTbuEq2kOZIe\nk7RO0qVlx2NmtjfjqnQgaT/g74G3AZuAHwHnRsSjNeu4RpuRa7SNuUbb+7J+lY2kS4CbI2JrOxvo\nsNnA+ogYAJD0TWAu8GjtSs3qMI3aXKMdZY32ivvKrdHS/Pdb5uuy+oryarSnLnSNths12rF8lU0r\n3xk2GfiRpJ8ANwDfjfIOg6cCG2seDwIndmrwJ777C366dA0bHxzkTRef1JExn12/la+/aylAR8e8\ndW4x5jHzOjPmhtUbua5vCQBHXdSZl3QD8KUJxfLR2zoyZJ44M4wJG5gw4SoAtm2bXNkxa/f9oNdW\nc8wnvvsLHl22hl8/NNix93u3tVQ6kPQS4HTgAuANwHLg+oh4Imt0e8bxJ8CciLgoPX4/cGJEXFyz\nTrzm1Om7njOx7xVM7Ju417GfXb+Vn//dWqKveD00II76d7OY9LpXth1vrjHX3bqWNxxfjPngT8TM\nd49tzA2rN/Kr+zYwe3bxuL8fDjt5BjNOmb7Huq2WDjYAm/aH2Slv9T8AU3fAjLajTGMeQEtxtjzm\nKPZ9JLuXDjaw//4DnJj2/YEHYMeOPsa6983GbLd00Kl9zzlmjvd7q4YGhhga+M2ux7+8d2Peb8GN\niN9J2gxsAXYCrwT+TtLdEfHxdjbcpk1A7W9sOsVR7W7Ov+e8Xcutlg6+/q6lxBkBW4G3QDwcDPYP\ncvbX5474vEbb2G3MvoBzi/b6Mdv5mHPr3KW84fjgr/6qaF+5MrjhtrGNeV3fEmbPpmZM+MJ1g3zg\n+3+2x/NaLR18aQLMPqZuzCVwwfaRnzfqMZvEmWPfRxqztnQwYcJVHFMT5yc/CY88soVt2y4Yxd7u\nvjzSmO2WDur3/ZOfhMd/sYVTG+x7WWPeOncp/+WSYPNmuOCCPd/v7ca5t77htrlfO3PX40VaTLv2\nOutA0kcl/Rj4LHA/8PqI+E/ACcC7295yex4EZkrqk3QgcA6wossxmJmNSitHtJOAd0fEhtrGdJT7\nb/OE1VhE7JD0n4HvAvtRlC8e3cvTWvKmi09i4/sG2TF5BzwM+9+zP9PeOW3MYw7M3UA8XHzs6cSY\nx8w7iVvO3sDKlcWY112/P9PfMbYxj7roRO6/4l5Wriwef/GL8KrZYxvz6G3wwwd4ccwvwKu3j2nI\nYsx+Ohpnjn3ftu1NPPDA93eNWXzMf1Plxqzf9/5+ePOCsdWoOz3mMfNO4rr3D/L6f7mDlSs7834v\nw7ia3tWKsUzvenb9Vgb7i0rEtNnTOlIHyjXmlh8VY05+Y2fG3LB6I8/8pBjzVcdPa1pTG830rg3A\n0wcUy6/ePrYK5bCBt8xoKc7RaHXfR7Ln9K4NHHBAMeb27dPozN43HnMs07s6se+5x8zxfm+HL8Gt\n4UtwM0/v8iW4Dft8CW5v9TVq8yW4ZmYV1pNHtL4yLB9fGdaYrwzrfS4d1HDpwKWDMvpcOuitvkZt\nLh2YmVWYE62ZWWY9WTpwjbZ7ctdsq1qT3ZvcNVvXZbvPNdoartF2t2+1Fmet0e6Myyu77yP1LdL9\nHX4ldn98yoK7K7OvvdjXqM01WjOzCuvJI1qXDrrHpYPGXDroPVlv/D0eNft40KjNpYMx9vHi692p\nqV9VncI1mj5oVkYYzSvhKVxl9TVqG8uNv106MDPLzInWzCwz12jNzFrgGm0d12jdV6W+qsblPtdo\nzcx6hhOtmVlmrtGambXANdo6rtG6r0p9VY3Lfa7Rmpn1DCdaM7PMnGjNzDJzojUzy8yzDszMWuBZ\nB3U868B9Veqralzu86wDM7OeUblEK2mhpEFJD6WfM2r65ktaJ+kxSaeXGaeZWauqWDoIYElELKlt\nlDQLOAeYBUwF7pZ0RET8roQYzcxaVrkj2qRRwXkusCwitkfEALAemN3VqMzM2lDVRHuxpEckXS9p\nYmo7DBisWWeQ4sjWzKzSSikdSFoFHNqg6xPAtcCn0+NFwOeAC5sM1XBu2r0LV+9aHhoYajtOM9t3\nDQ0M7ZZLxqLS82gl9QF3RMTRki4DiIgrU99KYEFEPFD3HM+jNbOO66l5tJKmRMRT6eHZwJq0vAJY\nKmkJRclgJtDfaAzPo3VflfqqGpf7ujePtnKJFrhK0rEUZYEngQ8DRMRaScuBtcAOYF5U+XDczCyp\nXKKNiA+M0LcYWNzFcMzMxqyqsw7MzHqGE62ZWWZOtGZmmTnRmpll5kRrZpaZE62ZWWaVvjKsHb4y\nzMxy6KkrwzrBV4a5r0p9VY3Lfd27MsylAzOzzJxozcwyc6I1M8vMidbMLDMnWjOzzJxozcwyc6I1\nM8vMidbMLDMnWjOzzJxozcwyc6I1M8vMN5UxM2uBbypTxzeVcV+V+qoal/t8Uxkzs57hRGtmlpkT\nrZlZZk60ZmaZlZJoJb1H0s8l7ZR0fF3ffEnrJD0m6fSa9hMkrUl9n+9+1GZm7SnriHYNcDawurZR\n0izgHGAWMAe4RtLwdIprgQsjYiYwU9KcLsZrZta2UhJtRDwWEY836JoLLIuI7RExAKwHTpQ0BTg4\nIvrTejcBZ3UnWjOzsalajfYwYLDm8SAwtUH7ptRuZlZ52S5YkLQKOLRB1+URcUeu7ZqZVU22RBsR\nb2/jaZuA6TWPp1EcyW5Ky7Xtm5oNcu/CF0u/QwNDbYRhZvu6oYGh3XLJWFThEtzaa4dXAEslLaEo\nDcwE+iMiJD0n6USgHzgPuLrZgPWX2ZmZjdbEvonj+xJcSWdL2gicBHxb0p0AEbEWWA6sBe4E5sWL\nd72ZB3wFWAesj4iV3Y/czGz0SjmijYjbgNua9C0GFjdo/zFwdObQzMw6rmqzDszMeo4TrZlZZr7x\nt5lZC3zj7zq+8bf7qtRX1bjc5xt/m5n1DCdaM7PMnGjNzDJzojUzy8yJ1swsMydaM7PMnGjNzDJz\nojUzy8yJ1swsMydaM7PMnGjNzDJzojUzy8yJ1swsMydaM7PMnGjNzDJzojUzy8yJ1swsMydaM7PM\nnGjNzDLzlzOambXAX85Yx1/O6L4q9VU1Lvf5yxnNzHpGKYlW0nsk/VzSTknH17T3SXpe0kPp55qa\nvhMkrZG0TtLny4jbzKwdZR3RrgHOBlY36FsfEceln3k17dcCF0bETGCmpDndCNTMbKxKSbQR8VhE\nPN7q+pKmAAdHRH9qugk4K0twZmYdVsUa7eGpbHCPpOHpA1OBwZp1NqU2M7PKyzbrQNIq4NAGXZdH\nxB1NnvYrYHpEbE2129slHZUrRjOzbsiWaCPi7W085wXghbT8E0lPADMpjmCn1aw6LbU1dO/CF0u/\nQwNDow3DzIyhgaHdcslYVGEe7a4JwJIOAbZGxE5Jr6VIsr+IiCFJz0k6EegHzgOubjZg/Vw5M7PR\nmtg3cXzPo5V0tqSNwEnAtyXdmbpOBR6R9BDwt8CHI2L4kHQe8BVgHcXMhJXdjtvMrB2lHNFGxG3A\nbQ3abwFuafKcHwNHZw7NzKzjqjjrwMyspzjRmpll5kRrZpaZE62ZWWZOtGZmmTnRmpll5kRrZpaZ\nE62ZWWZOtGZmmTnRmpll5kRrZpaZE62ZWWZOtGZmmTnRmpll5kRrZpaZE62ZWWZOtGZmmSkiyo6h\noyTFKQtO3vuKZmajsPqK+4gI7X3NPVXhyxk7rv7LGWsf17fV97fT14kx3Ne7fVWNy33N+xq1jbsv\nZzQz25c40ZqZZeZEa2aWmROtmVlmTrRmZpk50ZqZZeZEa2aWWSmJVtJ/l/SopEck3SrpFTV98yWt\nk/SYpNNr2k+QtCb1fb6MuM3M2lHWEe1dwFERcQzwODAfQNIs4BxgFjAHuEbS8JUY1wIXRsRMYKak\nOd0Pe3QG7tlQdgi7VCWWqsQBjqUZx9J5pSTaiFgVEb9LDx8ApqXlucCyiNgeEQPAeuBESVOAgyOi\nP613E3BWN2Nux4YKvUmqEktV4gDH0oxj6bwq1Gg/BHwnLR8GDNb0DQJTG7RvSu1mZpWX7V4HklYB\nhzboujwi7kjrfAJ4ISKW5orDzKxspd29S9IFwEXAWyPin1PbZQARcWV6vBJYAGwAfhARR6b2c4FT\nI+I/Nhi3t25HZmaVMa7u3pVOZH2cIln+c03XCmCppCUUpYGZQH9EhKTnJJ0I9APnAVc3GrvdF8LM\nLJdSjmglrQMOBJ5NTf8nIualvssp6rY7gI9GxHdT+wnA14DfA74TEZd0O24zs3b03I2/zcyqpgqz\nDtpSpYseJL1H0s8l7ZR0fE17n6TnJT2Ufq4pK5bUV9rFIJIWShqseS3O2FtcOUmak7a3TtKl3dhm\n3fYHJP00vRb9qW2SpFWSHpd0l6SJGbZ7g6QtktbUtDXdbs7fTZNYSnmfSJou6Qfp/87PJF2S2jvz\n2kTEuPwB3g68JC1fCVyZlmcBDwMHAH0Uc3GHj9z7gdlp+TvAnA7F8q+AI4AfAMfXtPcBa5o8p9ux\ndP11qYtrAfCxBu2N4npJ5vfOfmk7fWm7DwNHdvn9+yQwqa7ts8BfpOVLh9/THd7uHwHH1b4vm203\n9++mSSylvE8oZkgdm5YnAH8PHNmp12bcHtFGhS56iIjHIuLxVtcvKZYqXAzS6ERlo7hmZ9r+sNnA\n+ogYiIjtwDdTHN1W/3qcCdyYlm8kw+8hIn4IbG1xu1l/N01igRLeJxGxOSIeTsvbgEcpTsh35LUZ\nt4m2TpUvejg8fQS6R9Lwt0ZOLSGWKrwuF6dSz/U1H8GaxZXTVGBjl7dZL4C7JT0o6aLUNjkitqTl\nLcDkLsXSbLtl/G6g5PeJpD6KI+0H6NBrU+kvZ1SFLnpoJZYGfgVMj4itqV56u6SjSooluxHi+gTF\nvSo+nR4vAj4HXNhkqNxnaKtwBvjNEfGUpFcBqyQ9VtsZEaES5oS3sN3cMZX6PpE0AbiFYsbTb6UX\nD67H8tpUOtFGxNtH6ldx0cMfA2+tad4ETK95PI3ir80mXiwvDLdv6lQsTZ7zAvBCWv6JpCco5gZ3\nPRYyvS7txCXpK8DwH4RGcbW1/VGo3+Z0dj86yS4inkr/PiPpNoqPnVskHRoRm1NJ5+kuhdNsu13/\n3UTErn3u9vtE0gEUSfbmiLg9NXfktRm3pQO9eNHD3Njzoof3STpQ0uG8eNHDZuA5SSeq+DN1HnD7\nHgN3ILSaGA+RtF9afm2K5RfpP1lXY6Hk1yW9SYedDQyfaW4YV6e3X+dBijvA9Uk6kOKOcSsyb3MX\nSQdJOjgtvxw4neL1WAGcn1Y7nzzviUaabbfrv5uy3ifpvX89sDYi/qamqzOvTafO2nX7B1hHcWnu\nQ+nnmpq+yymK048B76hpP4HiF7ceuLqDsZxNUfN7HtgM3Jna/wT4WYrvx8A7y4qljNelLq6bgJ8C\nj6Q36+S9xZX5/XMGxZnl9cD8Lr93D6c4Y/1wen/MT+2TgLspbh16FzAxw7aXUZS0Xkjvkw+OtN2c\nv5sGsXyorPcJcDLwu/Q7Gc4pczr12viCBTOzzMZt6cDMbLxwojUzy8yJ1swsMydaM7PMnGjNzDJz\nojUzy8yJ1swsMydaM7PMnGhtnyPpjenuUC+V9PJ0o+dZZcdlvctXhtk+SdIi4GUU30G3MSKuKjkk\n62FOtLZPSndqepDinhBvCv9HsIxcOrB91SHAyym+tuT3So7FepyPaG2fJGkFsBR4LTAlIi4uOSTr\nYZW+8bdZDpI+APy/iPimpJcA/1vSaRFxT8mhWY/yEa2ZWWau0ZqZZeZEa2aWmROtmVlmTrRmZpk5\n0ZqZZeZEa2aWmROtmVlmTrRmZpn9f2OrPHcOE6ghAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x15e3d240>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Survey parameters\n",
"a = 30.\n",
"b = 30.\n",
"n = 20 # Integer number of rx dipoles\n",
"\n",
"# Specify the survey type: \"pdp\" | \"dpdp\"\n",
"stype = 'dpdp'\n",
"\n",
"# Then specify the end points of the survey. Let's keep it simple for now and survey above the anomalies, top of the mesh\n",
"ends = [(-175,0),(175,0)]\n",
"ends = np.c_[np.asarray(ends),np.ones(2).T*mesh.vectorNz[-1]]\n",
"\n",
"# Snap the endpoints to the grid. Easier to create 2D section.\n",
"indx = Utils.closestPoints(mesh, ends )\n",
"locs = np.c_[mesh.gridCC[indx,0],mesh.gridCC[indx,1],np.ones(2).T*mesh.vectorNz[-1]]\n",
"\n",
"# We will handle the geometry of the survey for you and create all the combination of tx-rx along line\n",
"[Tx, Rx] = DC.gen_DCIPsurvey(locs, mesh, stype, a, b, n)\n",
"\n",
"# Here is an example for the first tx-rx array\n",
"fig, ax = plt.subplots(1,1, figsize = (6.5,5))\n",
"mesh.plotSlice(np.log10(model), ax =ax, normal = 'Z', ind = indz,grid=True)\n",
"ax.set_title('Depth at '+str(mesh.vectorCCz[indz])+' m')\n",
"plt.gca().set_aspect('equal', adjustable='box')\n",
"\n",
"plt.scatter(Tx[0][0,:],Tx[0][1,:],s=20,c='g')\n",
"plt.scatter(Rx[0][:,0::3],Rx[0][:,1::3],s=20,c='y')\n",
"plt.xlim([-xlim,xlim])\n",
"plt.ylim([-xlim,xlim])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The next section will specify all the parameters used to forward model the data"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#Set boundary conditions\n",
"mesh.setCellGradBC('neumann')\n",
"\n",
"# Define the differential operators needed for the DC problem\n",
"Div = mesh.faceDiv\n",
"Grad = mesh.cellGrad\n",
"Msig = Utils.sdiag(1./(mesh.aveF2CC.T*(1./model)))\n",
"\n",
"A = Div*Msig*Grad\n",
"\n",
"# Change one corner to deal with nullspace\n",
"A[0,0] = 1\n",
"A = sp.csc_matrix(A)\n",
"\n",
"# We will solve the system iteratively, so a pre-conditioner is helpful\n",
"# This is simply a Jacobi preconditioner (inverse of the main diagonal)\n",
"dA = A.diagonal()\n",
"P = sp.spdiags(1/dA,0,A.shape[0],A.shape[0])\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Transmitter 8 of 9 -> Time:0.990999937057 sec Transmitter 8 of 9\n",
"Forward completed\n"
]
}
],
"source": [
"# Now we can solve the system for all the transmitters\n",
"# We want to store the data\n",
"data = []\n",
"\n",
"# There is probably a more elegant way to do this, but we can just for-loop through the transmitters\n",
"for ii in range(len(Tx)):\n",
" \n",
" start_time = time.time() # Let's time the calculations\n",
" \n",
" #print(\"Transmitter %i / %i\\r\" % (ii+1,len(Tx)))\n",
" \n",
" # Select dipole locations for receiver\n",
" rxloc_M = np.asarray(Rx[ii][:,0:3])\n",
" rxloc_N = np.asarray(Rx[ii][:,3:])\n",
" \n",
" # Number of receivers\n",
" nrx = rxloc_M.shape[0]\n",
" \n",
" # For usual cases \"dpdp\" or \"gradient\"\n",
" if not re.match(stype,'pdp'): \n",
" inds = Utils.closestPoints(mesh, np.asarray(Tx[ii]).T )\n",
" RHS = mesh.getInterpolationMat(np.asarray(Tx[ii]).T, 'CC').T*( [-1,1] / mesh.vol[inds] ) \n",
" \n",
" else: \n",
" \n",
" # Create an \"inifinity\" pole\n",
" tx = np.squeeze(Tx[ii][:,0:1])\n",
" tinf = tx + np.array([dl_x,dl_y,0])*dl_len*2\n",
" inds = Utils.closestPoints(mesh, np.c_[tx,tinf].T)\n",
" RHS = mesh.getInterpolationMat(np.asarray(Tx[ii]).T, 'CC').T*( [-1] / mesh.vol[inds] ) \n",
"\n",
"\n",
" # Iterative Solve\n",
" Ainvb = sp.linalg.bicgstab(P*A,P*RHS, tol=1e-5)\n",
"\n",
" # We now have the potential everywhere\n",
" phi = mkvc(Ainvb[0])\n",
" \n",
" # Solve for phi on pole locations\n",
" P1 = mesh.getInterpolationMat(rxloc_M, 'CC')\n",
" P2 = mesh.getInterpolationMat(rxloc_N, 'CC')\n",
" \n",
" # Compute the potential difference\n",
" dtemp = (P1*phi - P2*phi)*np.pi\n",
" \n",
" data.append( dtemp ) \n",
" print '\\rTransmitter {0} of {1} -> Time:{2} sec'.format(ii,len(Tx),time.time()- start_time),\n",
" \n",
"print 'Transmitter {0} of {1}'.format(ii,len(Tx))\n",
"print 'Forward completed'\n",
" \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once we have our problem, we can use the inversion tools in SimPEG to run our inversion:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x18d372e8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Let's just convert the 3D format into 2D (distance along line) and plot\n",
"[Tx2d, Rx2d] = DC.convertObs_DC3D_to_2D(Tx,Rx)\n",
"\n",
"fig, ax = plt.subplots(1,1, figsize = (8,7))\n",
"plt.gca().set_aspect('equal', adjustable='box')\n",
"\n",
"# Plot the location of the spheres for reference\n",
"circle1=plt.Circle((-xloc-Tx[0][0,0],zloc),radi,color='w',fill=False, lw=3)\n",
"circle2=plt.Circle((xloc-Tx[0][0,0],zloc),radi,color='k',fill=False, lw=3)\n",
"ax.add_artist(circle1)\n",
"ax.add_artist(circle2)\n",
"\n",
"# Add the speudo section\n",
"DC.plot_pseudoSection(Tx2d,Rx2d,data,mesh.vectorNz[-1],stype)\n",
"\n",
"plt.xlim([0,2*xlim])\n",
"plt.ylim([-zlim,0])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Back in the days (not so long ago really), geophysicists used to interpret DCR data directly from pseudo-section. Hopefully this example will convince you that interpretating speudo-section is really tricky, arguably impossible.\n",
"Fortunately for us, we now have inversion techniques to make sense of the data."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"125.0\n"
]
}
],
"source": [
"print -xloc-Tx[0][0,0]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}