mirror of
https://github.com/wassname/simpeg.git
synced 2026-10-02 12:40:56 +08:00
Seogi's FDEM initial commit from SimPEG
This commit is contained in:
1 parent
08f2020ae9
commit
68abb7a7cf
5 files changed
+1844
No files matched your search
@@ -0,0 +1,489 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "3DFDEM"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
"worksheets": [
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import numpy as np\n",
|
||||
"from SimPEG import Solver, utils, TensorMesh\n",
|
||||
"from getInterpmat import getInterpmat\n",
|
||||
"from RHSem import path2edgeModel, MMRhalf"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 1
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 1,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"3D frequency domain EM code with wire source"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Step1: Generating mesh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"cs = 100\n",
|
||||
"ncore = 6\n",
|
||||
"pad = 5\n",
|
||||
"padfactor = 1.5\n",
|
||||
"cs = 100\n",
|
||||
"xpad = cs*(np.ones(pad)*padfactor)**np.arange(pad)\n",
|
||||
"ypad = cs*(np.ones(pad)*padfactor)**np.arange(pad)\n",
|
||||
"zpad = cs*(np.ones(pad)*padfactor)**np.arange(pad)\n",
|
||||
"\n",
|
||||
"xcore = cs*np.ones(ncore)\n",
|
||||
"ycore = cs*np.ones(ncore)\n",
|
||||
"zcore = cs*np.ones(ncore)\n",
|
||||
"\n",
|
||||
"hx = np.r_[xpad[::-1],xcore, cs, xcore, xpad]\n",
|
||||
"hy = np.r_[ypad[::-1],ycore, cs, ycore, ypad]\n",
|
||||
"hz = np.r_[zpad[::-1],zcore,zcore, zpad]\n",
|
||||
"\n",
|
||||
"x0 = np.array([-sum(hx)/2, -sum(hy)/2, -sum(hz)/2])\n",
|
||||
"mesh = TensorMesh([hx, hy, hz],x0)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 2
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"mesh.plotGrid()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stderr",
|
||||
"text": [
|
||||
"C:\\Users\\SEOGI\\AppData\\Local\\Enthought\\Canopy\\App\\appdata\\canopy-1.0.1.1189.win-x86_64\\lib\\site-packages\\matplotlib\\lines.py:483: RuntimeWarning: invalid value encountered in greater_equal\n",
|
||||
" return np.alltrue(x[1:]-x[0:-1]>=0)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7d56f60>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 3
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Step2: Generate conductivity model"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"sigma = 1e-8*np.ones(prod(mesh.nC))\n",
|
||||
"Ind = mesh.gridCC[:,2]<0\n",
|
||||
"sigma[Ind] = 1e-3\n",
|
||||
"mesh.plotImage(sigma)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 4,
|
||||
"text": [
|
||||
"<matplotlib.collections.QuadMesh at 0x8276080>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD5CAYAAADP2jUWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtYlHX+//HnDAyTJLqKMhKCJrocFBAUscgga1tyC4+l\n/i7bTTEP2aKpqa0WdNg8VFurlxq2kVtqSG2sh75qBwUWC/CAlnJQEkIJUEAQRVHw/v2BjpImpzmg\n9/txXV5Xc8993/P5vBpezNz3zYxGURQFIYQQqqK19gCEEEJYnpS/EEKokJS/EEKokJS/EEKokJS/\nEEKokK21B9AYjUZj7SEIIcRt6VYXc7b58of6CWg0r1p7GFanKFEAJsgiEQht5T6s62oWbUV0dDTR\n0dHWHsYdRTJtncZeOMthHyGEUCEpfyGEUCEpf1Xqae0B3HFCQ0OtPYQ7jmRqXlL+qtTT2gO440hR\nmZ5kal5S/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kII\noUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS\n/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kII\noUJS/iZQXDyHgABnAJKSnmHcuH7G+yZO7M/OnX/m5Mm5HD/+AjExj/Poo+437MPZuT1ffPEUJSVz\nyc39K2+99Qe0Wo3F5mAqrc3CYLibdetG8uOP07l4cRFffTXBouMXQi2k/FvJ3b0T9vY6MjKK0Om0\nDBx4DykpBcb7H3qoJwkJ2YSFredPf9pARcUFtm4dz733/s64jk6nZffuSfTt68TkyZuJidnHs88G\nEBPzuBVm1HKmyEKvt6Ws7DzvvPM933xzDEWxwkSEUAFbaw/gdhcc7EZaWiGKAoGBLpSVVXPixBnj\n/X/+838brP/DDyWEhvZkzpz7eP75bQA89VRfevT4Hd26vc2pU9Vs2XKEwsIqYmPDeeWVXRQVnbXo\nnFrKFFkUFFQyc+Z2AEJCeuDi4mC5CQihIlL+LXT69HwURUGvt0Wr1VBePg+dzga93oby8nkoCjg6\nLrvpthoNDQ7pBAe7Ulh4hlOnqo3L6l892zBokAubNuWYfT6tYcoshBCWIeXfQr6+q9FoNKSmRjBt\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7dd8048>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 4
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Step3: Genereate the system matrix A\n",
|
||||
" "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Here we use the time dependency $e^{-\\imath\\omega t}$. Thus, our system for frequency domain EM problem can be written as \n",
|
||||
"\\begin{eqnarray}\n",
|
||||
"\t\\nabla \\times E -\\imath\\omega B = 0,\\\\\n",
|
||||
"\t\\nabla \\times \\frac{1}{\\mu} B - \\sigma (\\omega)^* E = J^s, \\\\\n",
|
||||
"\t\\tilde{n} \\times \\frac{1}{\\mu} B |_{\\partial \\Omega} = 0.\n",
|
||||
"\\end{eqnarray}\n",
|
||||
"By using weak formultion we have,\n",
|
||||
"\\begin{eqnarray}\n",
|
||||
"\t<\\nabla \\times E, \\mathbf{F}> - <\\imath\\omega B, \\mathbf{F}> = 0, \\\\\n",
|
||||
"\t<\\nabla \\times \\frac{1}{\\mu}\\mathbf{B}, \\mathbf{W}>-<\\mathbf{\\sigma}(\\omega)^*\\mathbf{E}, \\mathbf{W}> = <\\mathbf{J}^s, \\mathbf{W}>.\n",
|
||||
"\\end{eqnarray}\n",
|
||||
"By using the same trick we used for MMR problem with boundary conditions, we have discretized system \n",
|
||||
"\\begin{eqnarray}\n",
|
||||
"\t\\mathbf{M}_f\\mathbf{Curl}\\mathbf{e} - \\imath\\omega\\mathbf{M}_f\\mathbf{b} = 0, \\\\\n",
|
||||
"\t\\mathbf{Curl}^T\\mathbf{M}_{\\frac{1}{\\mu}}\\mathbf{b} - \\mathbf{M}_{\\sigma}^*\\mathbf{e} \n",
|
||||
"\t=\\mathbf{M}_e\\mathbf{j}^s. \n",
|
||||
"\\end{eqnarray}\n",
|
||||
"Rearranging above equations in terms of $\\mathbf{e}$ gives\n",
|
||||
"\\begin{eqnarray}\n",
|
||||
"\t\\mathbf{Curl}^T\\mathbf{M}_{\\frac{1}{\\mu}}\\mathbf{Curl}\\mathbf{e} - \\imath\\omega\\mathbf{M}_{\\sigma}^*\\mathbf{e} \n",
|
||||
"\t = \\imath\\omega\\mathbf{M}_e\\mathbf{j}^s.\n",
|
||||
"\\end{eqnarray}\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"f = 1e-5\n",
|
||||
"w = 2*np.pi*f\n",
|
||||
"mu0 = 4*pi*1e-7\n",
|
||||
"C = mesh.edgeCurl\n",
|
||||
"Msig = mesh.getEdgeInnerProduct(sigma)\n",
|
||||
"Mf = mesh.getFaceInnerProduct()\n",
|
||||
"Me = mesh.getEdgeInnerProduct()\n",
|
||||
"A = C.T*1/mu0*Mf*C-1j*w*Msig"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 5
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Step 4: Generate right hand side"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"pts = np.array([[550, 50, 0],\n",
|
||||
" [550, 550, 0],\n",
|
||||
" [-550, 550, 0],\n",
|
||||
" [-550, 50, 0]\n",
|
||||
" ])\n",
|
||||
"Js = path2edgeModel(mesh, pts)\n",
|
||||
"L = mesh.edge\n",
|
||||
"rhs = 1j*w*L*Js"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 6
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"plot(pts[:,0], pts[:,1])\n",
|
||||
"ylim ([-600, 600])"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 22,
|
||||
"text": [
|
||||
"(-600, 600)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0xd85d518>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 22
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Step 5: Solve the linear system "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from time import time\n",
|
||||
"tic = time()\n",
|
||||
"f = Solver(A)\n",
|
||||
"E = f.solve(rhs)\n",
|
||||
"B = 1/(1j*w)*C*E\n",
|
||||
"print time() - tic"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"86.271999836\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 8
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Step 6: Project to receiver points"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"E = np.conj(E)\n",
|
||||
"B = -np.conj(B)\n",
|
||||
"xr = np.linspace(-400, 400, 21)\n",
|
||||
"yr = np.linspace(-400, 400, 21)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 9
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"X, Y = np.meshgrid(xr, yr)\n",
|
||||
"Z = np.zeros((size(xr), size(yr)))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 10
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"rxLoc = np.c_[utils.mkvc(X), utils.mkvc(Y), utils.mkvc(Z)]\n",
|
||||
"Qfx = getInterpmat(mesh, rxLoc, 'fx')\n",
|
||||
"Qfy = getInterpmat(mesh, rxLoc, 'fy')\n",
|
||||
"Qfz = getInterpmat(mesh, rxLoc, 'fz')\n",
|
||||
"Qex = getInterpmat(mesh, rxLoc, 'ex')\n",
|
||||
"Qey = getInterpmat(mesh, rxLoc, 'ey')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 11
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"Bx = reshape(Qfx*B, (size(xr), size(yr)), order = 'F')\n",
|
||||
"By = reshape(Qfy*B, (size(xr), size(yr)), order = 'F')\n",
|
||||
"Bz = reshape(Qfz*B, (size(xr), size(yr)), order = 'F')\n",
|
||||
"Ex = reshape(Qex*E, (size(xr), size(yr)), order = 'F')\n",
|
||||
"Ey = reshape(Qey*E, (size(xr), size(yr)), order = 'F')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 12
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"Bxa, Bya = MMRhalf([-550,50], [550, 50], X, Y)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 13
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"subplot(121)\n",
|
||||
"contourf(X, Y, By.real, 20)\n",
|
||||
"plt.colorbar()\n",
|
||||
"plt.title('By 3DFDEM')\n",
|
||||
"subplot(122)\n",
|
||||
"contourf(X, Y, Bx.real, 20)\n",
|
||||
"plt.colorbar()\n",
|
||||
"plt.title('Bx 3DFDEM')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 25,
|
||||
"text": [
|
||||
"<matplotlib.text.Text at 0xe148ba8>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0xd475fd0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 25
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"subplot(121)\n",
|
||||
"contourf(X, Y, Bya, 20)\n",
|
||||
"plt.colorbar()\n",
|
||||
"plt.title('By analytic')\n",
|
||||
"subplot(122)\n",
|
||||
"contourf(X, Y, Bxa, 20)\n",
|
||||
"plt.colorbar()\n",
|
||||
"plt.title('Bx analytic')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 26,
|
||||
"text": [
|
||||
"<matplotlib.text.Text at 0xe737c50>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0xd86f978>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 26
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"vec = np.linspace(0,size(Bya)-1,size(Bya)) \n",
|
||||
"plot(vec, utils.mkvc(Bya), vec, utils.mkvc(By))\n",
|
||||
"plt.legend(['Analytic', '3DFDEM'])"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stderr",
|
||||
"text": [
|
||||
"C:\\Users\\SEOGI\\AppData\\Local\\Enthought\\Canopy\\User\\lib\\site-packages\\numpy\\core\\numeric.py:320: ComplexWarning: Casting complex values to real discards the imaginary part\n",
|
||||
" return array(a, dtype, copy=False, order=order)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 16,
|
||||
"text": [
|
||||
"<matplotlib.legend.Legend at 0xb6e3470>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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\nj7Np06ZzvmaMKvF+6aWX2LhxIzU1NZoOnkzKwi3CJgKBQC1f+tKXcDqdXHnllfz4xz9m+fLlBX/2\nM5/5DLt27cp5TYuIzqb9XXfdNbVE7WOPPaZ6I4dyo2p6/I9//GPuuOMOzQdPJGTnLapNBIKFg+7h\nWe5hdhbSg7Nzov/6r//KP/7jP/Lcc89x6623sn379oI/e+WVVxKLxRgdHaW6uhqQl4fV62Vfes89\n9/Dtb3971u0Bnn76aa699topUb/zzju58sor+bu/+zv+67/+i+3bt/NXf/VXs/pd50JJ8Q6Hw7z6\n6qv84Ac/0HxwETYRCBYesxXdcmKz2bjjjjv4yU9+ws9+9jOuuuoqxZ974403sFqtU8ILsGfPHs47\n7zxVn6O1vU6no6mpiba2Nv7qr/6KlStXsnTpUg2/WfkoKd4Oh0NxE081JBIibCIQCGZPOBwuup3Z\ns88+y6ZNm2Z9fK3ts+dx9913c9999/GjH/1o6r2zN3uYb+Z1VcGs8xZhE4FAUAqfz8dvfvMbrr/+\nepLJJM8//zw7duzgmWee4f3335/6uUgkwssvv8xzzz3Hzp07i4ZVlCjVXk3M/LbbbqOpqYnLL798\nqs25TljOu3hnnbcImwgEgmLodDq+//3vc//99+Nyubj++uv5xS9+gcPhAGBgYACXy4XRaKShoYFN\nmzaxb98+Vq5cmXOMQsdW0x5g7dq1Ocf5whe+wD/90z/lbIdmtVq55pprco5/rp33vG6DdsUV8H//\nL/zqV7L7/vrXZ/tJAoGgHIht0M4tC3YbNBE2EQgEgvlhXsV7ZsJShE0EAoGgfJwT5y2qTQQCgaC8\nnJOEpQibCAQfDrxe7zlPrP0u4/V65+3Y8yre2RmWImwiEHw4GB8f/6BPYdHwgx/Ajh3wwx9CXR3s\n3y//fa4QYROBQCCYBVl9gw/GoJ6ThKXFIpy3QCBYXGT1DT4YjTsnzttkkv8tEAgEi4WZzvuD0Lh5\nF+9sqaAQb4FAsJjI6ht8MBo372GTrPMWMW+BQLCYyOobfDAaN2/iLUmQSomEpUAgWJyc7bwXjXgn\nk2A0gk43+3iQJMHISPnPTSAQCLLMVmPOdt6LJmxydhnNbJ5Ku3dDgTXYBQKBYM5IEixfDsPD2tuW\nQ+PmwryJ98wymtkG80dG4OhRmJgo77kJBAIBQCgk/zlrG0tVlEPj5sI5cd6zDeZnJ4Pt3lLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0xb6e3588>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 16
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"subplot(121),\n",
|
||||
"quiver(X, Y, Bx, By)\n",
|
||||
"subplot(122),\n",
|
||||
"quiver(X, Y, Bxa, Bya)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 17,
|
||||
"text": [
|
||||
"<matplotlib.quiver.Quiver at 0xd280cc0>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x828ccc0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 17
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,731 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "GroundedSource"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
"worksheets": [
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"from SimPEG import TensorMesh"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 18
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"pad = 1\n",
|
||||
"padfactor = 1.5\n",
|
||||
"cs = 100\n",
|
||||
"xpad = cs*(np.ones(pad)*padfactor)**np.arange(pad)\n",
|
||||
"ypad = cs*(np.ones(pad)*padfactor)**np.arange(pad)\n",
|
||||
"zpad = cs*(np.ones(pad)*padfactor)**np.arange(pad)\n",
|
||||
"\n",
|
||||
"core = 10\n",
|
||||
"xcore = cs*np.ones(core)\n",
|
||||
"ycore = cs*np.ones(core)\n",
|
||||
"zcore = cs*np.ones(core)\n",
|
||||
"\n",
|
||||
"hx = np.r_[xpad[::-1],xcore, cs, xcore,xpad]\n",
|
||||
"hy = np.r_[ypad[::-1],ycore, cs, ycore, ypad]\n",
|
||||
"hz = np.r_[zpad[::-1],zcore,zcore, zpad]\n",
|
||||
"x0 = np.array([-np.sum(hx)/2, -np.sum(hy)/2, -np.sum(hz)/2], )\n",
|
||||
"mesh = TensorMesh([hx, hy, hz],x0)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 19
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"print mesh"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
" ---- 3-D TensorMesh ---- \n",
|
||||
" x0: -1150.00\n",
|
||||
" y0: -1150.00\n",
|
||||
" z0: -1100.00\n",
|
||||
" nCx: 23\n",
|
||||
" nCy: 23\n",
|
||||
" nCz: 22\n",
|
||||
" hx: 23*100.00\n",
|
||||
" hy: 23*100.00\n",
|
||||
" hz: 22*100.00\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 20
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"pts = np.array([[950, 50, 0], \n",
|
||||
" [950, 950, 0],\n",
|
||||
" [-950, 950,0],\n",
|
||||
" [-950, 50, 0]])\n",
|
||||
"pts = np.array([[950, 50, -500], \n",
|
||||
" [950, 50, +500]])\n",
|
||||
"pts = np.array([[950, 50, -200],\n",
|
||||
"\t\t\t\t[950, 50, 0], \n",
|
||||
" [950, 950, 0],\n",
|
||||
" [-950, 950,0],\n",
|
||||
" [-950, 50, 0],\n",
|
||||
" [-950, 50, -200]])\n"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 21
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"print mesh.vectorCCx\n",
|
||||
"print mesh.vectorCCy\n",
|
||||
"print mesh.vectorCCz\n"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"[-1100. -1000. -900. -800. -700. -600. -500. -400. -300. -200.\n",
|
||||
" -100. 0. 100. 200. 300. 400. 500. 600. 700. 800.\n",
|
||||
" 900. 1000. 1100.]\n",
|
||||
"[-1100. -1000. -900. -800. -700. -600. -500. -400. -300. -200.\n",
|
||||
" -100. 0. 100. 200. 300. 400. 500. 600. 700. 800.\n",
|
||||
" 900. 1000. 1100.]\n",
|
||||
"[-1050. -950. -850. -750. -650. -550. -450. -350. -250. -150.\n",
|
||||
" -50. 50. 150. 250. 350. 450. 550. 650. 750. 850.\n",
|
||||
" 950. 1050.]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 22
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 22
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"def ismember(a, b):\n",
|
||||
" tf = np.array([i in b for i in a])\n",
|
||||
" return tf"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 23
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"#def edgeModel = path2edgeModel\n",
|
||||
"edm_x = np.zeros(np.prod(mesh.nEx))\n",
|
||||
"edm_y = np.zeros(np.prod(mesh.nEy))\n",
|
||||
"edm_z = np.zeros(np.prod(mesh.nEz))\n",
|
||||
"\n",
|
||||
"for ii in range (pts.shape[0]-1):\n",
|
||||
" pt1 = pts[ii,:]\n",
|
||||
" pt2 = pts[ii+1,:]\n",
|
||||
" delta = pt2 - pt1\n",
|
||||
" deltaDim = np.argwhere(delta)\n",
|
||||
" #assert(np.size(deltaDim)==1), \"Path must be orthoginal to mesh\"\n",
|
||||
" if deltaDim == 0:\n",
|
||||
" xLoc = mesh.vectorCCx[(min(pt1[0],pt2[0]) < mesh.vectorCCx ) & (mesh.vectorCCx < max(pt1[0],pt2[0]))]\n",
|
||||
" yLoc = pts[ii,1]\n",
|
||||
" zLoc = pts[ii,2]\n",
|
||||
" delDir = np.sign(pt2[0]-pt1[0])\n",
|
||||
" xyz = np.c_[xLoc, np.ones(np.size(xLoc))*yLoc, np.ones(np.size(xLoc))*zLoc]\n",
|
||||
" edgeInd=ismember(map(tuple,mesh.gridEx),map(tuple,xyz))\n",
|
||||
" edm_x[edgeInd] = delDir\n",
|
||||
" print '>> x-direction', ii\n",
|
||||
" print mesh.gridEx[edgeInd]\n",
|
||||
" if deltaDim == 1: \n",
|
||||
" xLoc = pts[ii,0]\n",
|
||||
" yLoc = mesh.vectorCCy[(min(pt1[1],pt2[1]) < mesh.vectorCCy ) & (mesh.vectorCCy < max(pt1[1],pt2[1]))]\n",
|
||||
" zLoc = pts[ii,2]\n",
|
||||
" delDir = np.sign(pt2[1]-pt1[1])\n",
|
||||
" xyz = np.c_[np.ones(np.size(yLoc))*xLoc, yLoc, np.ones(np.size(yLoc))*zLoc]\n",
|
||||
" edgeInd=ismember(map(tuple,mesh.gridEy),map(tuple,xyz))\n",
|
||||
" edm_y[edgeInd] = delDir\n",
|
||||
" print '>> y-direction', ii\n",
|
||||
" print mesh.gridEy[edgeInd]\n",
|
||||
" if deltaDim == 2: \n",
|
||||
" xLoc = pts[ii,0]\n",
|
||||
" yLoc = pts[ii,1]\n",
|
||||
" zLoc = mesh.vectorCCz[(min(pt1[2],pt2[2]) < mesh.vectorCCz ) & (mesh.vectorCCz < max(pt1[2],pt2[2]))]\n",
|
||||
" delDir = np.sign(pt2[2]-pt1[2])\n",
|
||||
" xyz = np.c_[np.ones(np.size(zLoc))*xLoc, np.ones(np.size(zLoc))*yLoc, zLoc]\n",
|
||||
" edgeInd=ismember(map(tuple,mesh.gridEz),map(tuple,xyz))\n",
|
||||
" edm_z[edgeInd] = delDir\n",
|
||||
" print '>> z-direction', ii\n",
|
||||
" print mesh.gridEz[edgeInd]\n",
|
||||
" \n",
|
||||
" edgeModel = np.r_[edm_x, edm_y, edm_z]"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
">> z-direction 0\n",
|
||||
"[[ 950. 50. -150.]\n",
|
||||
" [ 950. 50. -50.]]\n",
|
||||
">> y-direction 1\n",
|
||||
"[[ 950. 100. 0.]\n",
|
||||
" [ 950. 200. 0.]\n",
|
||||
" [ 950. 300. 0.]\n",
|
||||
" [ 950. 400. 0.]\n",
|
||||
" [ 950. 500. 0.]\n",
|
||||
" [ 950. 600. 0.]\n",
|
||||
" [ 950. 700. 0.]\n",
|
||||
" [ 950. 800. 0.]\n",
|
||||
" [ 950. 900. 0.]]\n",
|
||||
">> x-direction"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
" 2\n",
|
||||
"[[-900. 950. 0.]\n",
|
||||
" [-800. 950. 0.]\n",
|
||||
" [-700. 950. 0.]\n",
|
||||
" [-600. 950. 0.]\n",
|
||||
" [-500. 950. 0.]\n",
|
||||
" [-400. 950. 0.]\n",
|
||||
" [-300. 950. 0.]\n",
|
||||
" [-200. 950. 0.]\n",
|
||||
" [-100. 950. 0.]\n",
|
||||
" [ 0. 950. 0.]\n",
|
||||
" [ 100. 950. 0.]\n",
|
||||
" [ 200. 950. 0.]\n",
|
||||
" [ 300. 950. 0.]\n",
|
||||
" [ 400. 950. 0.]\n",
|
||||
" [ 500. 950. 0.]\n",
|
||||
" [ 600. 950. 0.]\n",
|
||||
" [ 700. 950. 0.]\n",
|
||||
" [ 800. 950. 0.]\n",
|
||||
" [ 900. 950. 0.]]\n",
|
||||
">> y-direction"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
" 3\n",
|
||||
"[[-950. 100. 0.]\n",
|
||||
" [-950. 200. 0.]\n",
|
||||
" [-950. 300. 0.]\n",
|
||||
" [-950. 400. 0.]\n",
|
||||
" [-950. 500. 0.]\n",
|
||||
" [-950. 600. 0.]\n",
|
||||
" [-950. 700. 0.]\n",
|
||||
" [-950. 800. 0.]\n",
|
||||
" [-950. 900. 0.]]\n",
|
||||
">> z-direction 4\n",
|
||||
"[[-950. 50. -150.]\n",
|
||||
" [-950. 50. -50.]]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 24
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"print xyz\n",
|
||||
"print mesh.vectorNx\n",
|
||||
"print mesh.vectorNy\n",
|
||||
"print mesh.vectorNz"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"[[-950. 50. -150.]\n",
|
||||
" [-950. 50. -50.]]\n",
|
||||
"[-1150. -1050. -950. -850. -750. -650. -550. -450. -350. -250.\n",
|
||||
" -150. -50. 50. 150. 250. 350. 450. 550. 650. 750.\n",
|
||||
" 850. 950. 1050. 1150.]\n",
|
||||
"[-1150. -1050. -950. -850. -750. -650. -550. -450. -350. -250.\n",
|
||||
" -150. -50. 50. 150. 250. 350. 450. 550. 650. 750.\n",
|
||||
" 850. 950. 1050. 1150.]\n",
|
||||
"[-1100. -1000. -900. -800. -700. -600. -500. -400. -300. -200.\n",
|
||||
" -100. 0. 100. 200. 300. 400. 500. 600. 700. 800.\n",
|
||||
" 900. 1000. 1100.]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 25
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"mesh.plotImage(edm_x, imageType='Ex')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 26,
|
||||
"text": [
|
||||
"<matplotlib.collections.QuadMesh at 0xaad7588>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0xaac2748>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 26
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"mesh.plotImage(edm_y, imageType='Ey')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 27,
|
||||
"text": [
|
||||
"<matplotlib.collections.QuadMesh at 0xafdf9e8>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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\nhRgMBoKCgigrK7MsLygoICYmxpZIQgghOsGm8p8yZQp5eXmcP3+e+vp6PvroI+68806MRiOZmZnU\n1taSmZlpKfLo6Gi2b99OSUkJWVlZaLVaPD09gebDQxs3bqS8vJxNmzZhNBrtNzohhBDtsumwz8CB\nA1mxYgWzZ8/m0qVLTJ8+nalTpxIdHc38+fMJCQkhMjKSlStXAuDn50dqairx8fG4ubmxfv16y2Ot\nWrWK+fPns2zZMubOnUtUVJR9RiaEEOK6bCp/gAcffJAHH3ywzTJPT082b97c7vpLlixhyZIl1yzX\n6/Xs37/f1hhCCCFsIN/wFUIIFZLyF0IIFZLyF0IIFZLyF0IIFZLyF0IIFZLyF0IIFZLyF0IIFZLy\nF0IIFZLyF0IIFZLyF0IIFZLyF0IIFZLyF0IIFZLyF0IIFZLyF0IIFZLyF0IIFZLyF0IIFZLyF0II\nFZLyF0IIFZLyF0IIFZLyF0IIFbJ5Andn8HuNGwBPKZd7OIn9uWietfx/o/Jku+u0jv9qfeW1uHr8\nV7veayGE6BzZ8xdCCBWS8hdCCBWS8hdCCBWS8hdCCBWS8hdCCBWS8hdCCBWS8hdCCBWS8hdCCBWy\nufwvXrzIL37xC8aOHYter8dkMlFdXU1CQgI6nY5Zs2ZRU1NjWX/NmjUEBwej1+vZu3evZbnZbCYy\nMpLRo0ezfPnyro1GCCGEVWwu/9/97nfodDoOHDjAgQMHCA0NJSMjA51Ox+HDhxkxYgTr1q0D4MyZ\nM6xdu5Zdu3aRkZFBWlqa5XGWLl3KE088QW5uLtnZ2eTl5XV9VEIIITpkc/nv3LmTJ598kptuuol+\n/frh5eVFTk4OKSkpuLu7k5ycjMlkAsBkMjF9+nR0Oh2xsbEoimJ5V1BUVERSUhI+Pj4kJiZathFC\nCNF9bLq2z4kTJ6irqyM1NRWz2UxiYiJpaWnk5uYSGhoKQGhoKDk5OUBz+YeFhVm2DwkJwWQyERAQ\ngK+vr2W5Xq9nw4YNLF68uM3zpaenk80eAALidATGBdgSWwgh+qxjWcUUZ5VYvb5N5V9XV8ehQ4d4\n4YUXmDZtGg8//DDvvvsuiqJY/RgajeaaZdfbPj09nSYabIkqhBCqEBgX0GbHePfTezpc36bDPkFB\nQYSEhDBjxgw8PDyYN28e27Ztw2AwYDabgeYPcg0GAwBGo5GCggLL9oWFhRgMBoKCgigrK7MsLygo\nICYmxpZIQgghOsHmY/7BwcGYTCaampr48MMPmTZtGkajkczMTGpra8nMzLQUeXR0NNu3b6ekpISs\nrCy0Wi2enp5A8+GhjRs3Ul5ezqZNmzAajfYZmRBCiOuy+Xr+q1at4uc//zl1dXVMmzaNuXPn0tTU\nxPz58wkJCSEyMpKVK1cC4OfnR2pqKvHx8bi5ubF+/fo2jzN//nyWLVvG3LlziYqK6vqohBBCdEij\ndOZAfQ/QaDSd+ixBCCHEjbtTvuErhBAq1GumcfwtPfft32f4Q49ncJYczpDBWXI4QwYhbCV7/kII\noUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUJS/kIIoUK95hu+7fkN\ny3iT1ynlFMksIJccDnIAgAgiuY0I/PDjClc4zCEK+JYjHGnzGJ54cg8z0BHAZeoxU8DHbEfB+usJ\ndTXHAAbwU+7Cn6EMZjBHOcobvGaHV0gIIdrXa/f8vfHGFVdOU4oLLgxjOMUUW34+itGYKeAN/sZb\nvEEdtfw3P+cWbrGs44ILC1iIL35sZhO55DIBAzOZ5eAc/ajlEvvYy3d8B534h0cIIWzRa/f8dQRw\nguMoKAxjOLVcoopKy8//zT/brP8xpwlkFBOZzId8AEA44/BiEC/wHBe5SBGFVFPFLBL5hJ1UU+2Q\nHJVUsJUPAQhkFJ4MtO1FEUIIK/W68l/GCqB5r12DhmWsQIuWfvRjGStQUHiu5YJbP6RpubXSEUA1\nVVzkomVZKafQomU4IyjE7JAcQgjhaL2u/NfyMqBhIYv4gM2UUsr9JHGAbzos6ygMDMGXf/EPy7KB\nDKSU0jbrlVNOAw0MxMthOYQQwtF63TH/Siq5CXe0aCmikDpq8WcoBzlAZcvth0IJYzp3s5lNlFNu\nWd6ZD3W7M4cQQjhar9rzf5Q0vBiEtuX2JE+hQYMLLjzOrwF4mdVUUWXZZhy3MotE3uc9yxk4raqp\nJoTQNssGMxhXXNsct+/uHEII4Wi9qvzf4HVccGE2iRziEPkcJI54GmlkD9kAbT6knUAUd3Mv/+If\nFJB/zeOVUEwUBvrT33LcfyjDaKKJExx3WI5rydk+Qoju1asO+1RRSQUX8MMfMwVcaPn/Igq50HJr\nPZRzOxO5l5lsZQslFDOg5eaBh+XxvuUgFVSQzC8JIZRJTOYeZvA1X1FDjcNyAPi33DzwwBLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0xaac32e8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 27
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"mesh.plotImage(edm_z, imageType='Ez')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 28,
|
||||
"text": [
|
||||
"<matplotlib.collections.QuadMesh at 0xad95e48>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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\njMFgICQkhIqKCsvyoqIi4uLibIkkhBCiC2wq/8mTJ1NQUMDZs2dpaGjgo48+4o477sBoNJKdnU1d\nXR3Z2dmWIo+NjWXr1q2UlZWRk5ODVqvF29sbaJkeWr9+PZWVlWzYsAGj0Wi/0QkhhOiQTdM+AwcO\nZPny5cyaNYuLFy8ybdo0pkyZQmxsLPPmzSMsLIzo6Giee+45AAICAkhPTycxMREPDw/Wrl1reawV\nK1Ywb948li5dypw5c4iJibHPyIQQQlyTTeUP8MADD/DAAw+0W+bt7c3GjRs7XH/x4sUsXrz4quV6\nvZ69e/faGkMIIYQN5Bu+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+\nQgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+Qgih\nQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+QgihQlL+\nQgihQlL+QgihQlL+QgihQjaX/4ULF/jFL37B2LFj0ev1mEwmampqSEpKQqfTMXPmTGpray3rr1q1\nitDQUPR6Pbt377YsN5vNREdHM3r0aJYtW9a90QghhLCKzeX/u9/9Dp1Ox759+9i3bx/h4eFkZWWh\n0+k4ePAgI0aMYM2aNQCcOnWK1atXs2PHDrKyssjIyLA8zpIlS3j88cfJz88nNzeXgoKC7o9KCCFE\np2wu/+3bt/PEE09www030K9fP3x8fMjLyyMtLQ1PT09SU1MxmUwAmEwmpk2bhk6nIz4+HkVRLO8K\nSkpKSElJwc/Pj+TkZMs2Qgghek4/WzY6duwY9fX1pKenYzabSU5OJiMjg/z8fMLDwwEIDw8nLy8P\naCn/iIgIy/ZhYWGYTCaCgoLw9/e3LNfr9axbt45Fixa1e77MzExy2QVAUIKO4IQgW2ILIYTLOpJT\nSmlOmdXr21T+9fX1HDhwgBdeeIGpU6fy0EMP8e6776IoitWPodForlp2re0zMzNpptGWqEIIoQrB\nCUHtdox3PrWr0/VtmvYJCQkhLCyM6dOn4+Xlxdy5c9myZQsGgwGz2Qy0fJBrMBgAMBqNFBUVWbYv\nLi7GYDAQEhJCRUWFZXlRURFxcXG2RBJCCNEFNs/5h4aGYjKZaG5u5sMPP2Tq1KkYjUays7Opq6sj\nOzvbUuSxsbFs3bqVsrIycnJy0Gq1eHt7Ay3TQ+vXr6eyspINGzZgNBrtMzIhhBDXZNO0D8CKFSv4\n+c9/Tn19PVOnTmXOnDk0Nzczb948wsLCiI6O5rnnngMgICCA9PR0EhMT8fDwYO3ate0eZ968eSxd\nupQ5c+YQExPT6fP+XuNx1bInlUu2DsOpuGme6XB5k/KEg5MIIVydRunKRH0v0Gg0XfosQQghxPW7\nU77hK4QQKmTztI+j/Zarv/3bNgXU09M+T/OHa2boKVdOAbVN+/RGjh9yhgzOksMZMghhqz5T/h1x\nlbn+jsg8vxCiJ8m0jxBCqJCUvxBCqJCUvxBCqJCUvxBCqJCUvxBCqJCUvxBCqJCUvxBCqJCUvxBC\nqFCf/pLXb1jKm7xOOSdIZT755LGffQBEEc0tRBFAAJe5zEEOUMS3HOJQu8fwxpu7mY6OIC7RgJki\nPmYrCtafT6i7OQYwgJ9yJ4EMZTCDOcxh3uA1O7xCQgjRsT675++LL+64c5Jy3HBjGMMppdTy81GM\nxkwRb/A33uIN6qnjv/k5N3GTZR033JjPAvwJYCMbyCefCRiYwUwH5+hHHRfZw26+4zvowj88Qghh\niz67568jiGMcRUFhGMOp4yLnqbb8/N/8s936H3OSYEYxkUl8yAcARDIOHwbxAs9ygQuUUEwN55lJ\nMp+wnRpqHJKjmio28yEAwYzCm4G2vShCCGGlPlf+S1kOtOy1a9CwlOVo0dKPfixlOQoKz7aecOuH\nNK23NjqCqOE8F7hgWVbOCbRoGc4IijE7JIcQQjhanyv/1bwMaFjAQj5gI+WUcx8p7OObTss6BgND\n8Odf/MOybCADKae83XqVVNJIIwPxcVgOIYRwtD43519NNTfgiRYtJRRTTx2BDGU/+6huvf1QOBFM\n4y42soFKKi3Lu/Khbk/mEEIIR+tTe/6PkIEPg9C23p7gSTRocMONx/g1AC+zkvOct2wzjpuZSTLv\n857lCJw2NdQQRni7ZYMZjDvu7ebtezqHEEI4Wp8q/zd4HTfcmEUyBzhAIftJIJEmmthFLkC7D2kn\nEMNd3MO/+AdFFF71eGWUEoOB/vS3zPsPZRjNNHOMow7LcTU52kcI0bP61LTPeaqp4hwBBGKmiHOt\n/19CMedab21TObcykXuYwWY2UUYpA1pvXnhZHu9b9lNFFan8kjDCuY1J3M10vuYraql1WALine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x796c630>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 28
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"subplot(131)\n",
|
||||
"plot(edm_x)\n",
|
||||
"subplot(132)\n",
|
||||
"plot(edm_y)\n",
|
||||
"subplot(133)\n",
|
||||
"plot(edm_z)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 29,
|
||||
"text": [
|
||||
"[<matplotlib.lines.Line2D at 0xb903588>]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0xad85438>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 29
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"A = np.array([2,5,2,6,3,6,2,2,5])\n",
|
||||
"B = np.array([3,4,4,3,6])\n",
|
||||
"\n",
|
||||
"def ismember(a, b):\n",
|
||||
" tf = np.array([i in b for i in a])\n",
|
||||
" return tf\n",
|
||||
"\n",
|
||||
"temp=ismember(map(tuple,mesh.gridEx),map(tuple,xyz))\n"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 13
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"print [i in ['x', 'y', 'z'] for i in ['y','w']]"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"[True, False]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 14
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 14
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"def path2edgeModel(mesh, pts):\n",
|
||||
" edm_x = np.zeros(np.prod(mesh.nEx))\n",
|
||||
" edm_y = np.zeros(np.prod(mesh.nEy))\n",
|
||||
" edm_z = np.zeros(np.prod(mesh.nEz))\n",
|
||||
" \n",
|
||||
" for ii in range (pts.shape[0]-1):\n",
|
||||
" pt1 = pts[ii,:]\n",
|
||||
" pt2 = pts[ii+1,:]\n",
|
||||
" delta = pt2 - pt1\n",
|
||||
" deltaDim = np.argwhere(delta)\n",
|
||||
" #assert(np.size(deltaDim)==1), \"Path must be orthoginal to mesh\"\n",
|
||||
" if deltaDim == 0:\n",
|
||||
" xLoc = mesh.vectorCCx[(min(pt1[0],pt2[0]) < mesh.vectorCCx ) & (mesh.vectorCCx < max(pt1[0],pt2[0]))]\n",
|
||||
" yLoc = pts[ii,1]\n",
|
||||
" zLoc = pts[ii,2]\n",
|
||||
" delDir = np.sign(pt2[0]-pt1[0])\n",
|
||||
" xyz = np.c_[xLoc, np.ones(np.size(xLoc))*yLoc, np.ones(np.size(xLoc))*zLoc]\n",
|
||||
" edgeInd=ismember(map(tuple,mesh.gridEx),map(tuple,xyz))\n",
|
||||
" edm_x[edgeInd] = delDir\n",
|
||||
" print '>> x-direction', ii\n",
|
||||
" print mesh.gridEx[edgeInd]\n",
|
||||
" if deltaDim == 1: \n",
|
||||
" xLoc = pts[ii,0]\n",
|
||||
" yLoc = mesh.vectorCCy[(min(pt1[1],pt2[1]) < mesh.vectorCCy ) & (mesh.vectorCCy < max(pt1[1],pt2[1]))]\n",
|
||||
" zLoc = pts[ii,2]\n",
|
||||
" delDir = np.sign(pt2[1]-pt1[1])\n",
|
||||
" xyz = np.c_[np.ones(np.size(yLoc))*xLoc, yLoc, np.ones(np.size(yLoc))*zLoc]\n",
|
||||
" edgeInd=ismember(map(tuple,mesh.gridEy),map(tuple,xyz))\n",
|
||||
" edm_y[edgeInd] = delDir\n",
|
||||
" print '>> y-direction', ii\n",
|
||||
" print mesh.gridEy[edgeInd]\n",
|
||||
" if deltaDim == 2: \n",
|
||||
" xLoc = pts[ii,0]\n",
|
||||
" yLoc = pts[ii,1]\n",
|
||||
" zLoc = mesh.vectorCCz[(min(pt1[2],pt2[2]) < mesh.vectorCCz ) & (mesh.vectorCCz < max(pt1[2],pt2[2]))]\n",
|
||||
" delDir = np.sign(pt2[2]-pt1[2])\n",
|
||||
" xyz = np.c_[np.ones(np.size(zLoc))*xLoc, np.ones(np.size(zLoc))*yLoc, zLoc]\n",
|
||||
" edgeInd=ismember(map(tuple,mesh.gridEz),map(tuple,xyz))\n",
|
||||
" edm_z[edgeInd] = delDir\n",
|
||||
" print '>> z-direction', ii\n",
|
||||
" print mesh.gridEz[edgeInd]\n",
|
||||
" \n",
|
||||
" \n",
|
||||
" edgeModel = np.r_[edm_x, edm_y, edm_z]"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 15
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"Js = path2edgeModel(mesh, pts)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
">> z-direction 0\n",
|
||||
"[[ 950. 50. -150.]\n",
|
||||
" [ 950. 50. -50.]]\n",
|
||||
">> y-direction"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
" 1\n",
|
||||
"[[ 950. 100. 0.]\n",
|
||||
" [ 950. 200. 0.]\n",
|
||||
" [ 950. 300. 0.]\n",
|
||||
" [ 950. 400. 0.]\n",
|
||||
" [ 950. 500. 0.]\n",
|
||||
" [ 950. 600. 0.]\n",
|
||||
" [ 950. 700. 0.]\n",
|
||||
" [ 950. 800. 0.]\n",
|
||||
" [ 950. 900. 0.]]\n",
|
||||
">> x-direction"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
" 2\n",
|
||||
"[[-900. 950. 0.]\n",
|
||||
" [-800. 950. 0.]\n",
|
||||
" [-700. 950. 0.]\n",
|
||||
" [-600. 950. 0.]\n",
|
||||
" [-500. 950. 0.]\n",
|
||||
" [-400. 950. 0.]\n",
|
||||
" [-300. 950. 0.]\n",
|
||||
" [-200. 950. 0.]\n",
|
||||
" [-100. 950. 0.]\n",
|
||||
" [ 0. 950. 0.]\n",
|
||||
" [ 100. 950. 0.]\n",
|
||||
" [ 200. 950. 0.]\n",
|
||||
" [ 300. 950. 0.]\n",
|
||||
" [ 400. 950. 0.]\n",
|
||||
" [ 500. 950. 0.]\n",
|
||||
" [ 600. 950. 0.]\n",
|
||||
" [ 700. 950. 0.]\n",
|
||||
" [ 800. 950. 0.]\n",
|
||||
" [ 900. 950. 0.]]\n",
|
||||
">> y-direction"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
" 3\n",
|
||||
"[[-950. 100. 0.]\n",
|
||||
" [-950. 200. 0.]\n",
|
||||
" [-950. 300. 0.]\n",
|
||||
" [-950. 400. 0.]\n",
|
||||
" [-950. 500. 0.]\n",
|
||||
" [-950. 600. 0.]\n",
|
||||
" [-950. 700. 0.]\n",
|
||||
" [-950. 800. 0.]\n",
|
||||
" [-950. 900. 0.]]\n",
|
||||
">> z-direction"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
" 4\n",
|
||||
"[[-950. 50. -150.]\n",
|
||||
" [-950. 50. -50.]]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 16
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"print pts"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"[[ 950 50 -200]\n",
|
||||
" [ 950 50 0]\n",
|
||||
" [ 950 950 0]\n",
|
||||
" [-950 950 0]\n",
|
||||
" [-950 50 0]\n",
|
||||
" [-950 50 -200]]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 30
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 30
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 17
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,395 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "InterpolationMatrix"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
"worksheets": [
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import numpy as np\n",
|
||||
"import scipy.sparse as sp\n",
|
||||
"from SimPEG.utils import spzeros, mkvc"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 1
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"#x = unique(mesh.gridEx[:,0])\n",
|
||||
"#y = unique(mesh.gridEx[:,1])\n",
|
||||
"#z = unique(mesh.gridEx[:,2])\n",
|
||||
"x = np.linspace(-1000,1000,5)\n",
|
||||
"y = np.linspace(-1000,1000,5)\n",
|
||||
"z = np.linspace(-1000,1000,5)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 2
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"xr1 = np.linspace(-500,500,5)\n",
|
||||
"yr1 = np.linspace(-500,500,5)\n",
|
||||
"zr1 = 0"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 3
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"xr, yr = meshgrid(xr1, yr1, indexing='ij')\n",
|
||||
"zr = np.ones((xr.shape[0],xr.shape[1]))*zr1"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 4
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"xr = mkvc(xr)\n",
|
||||
"yr = mkvc(yr)\n",
|
||||
"zr = mkvc(zr)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 5
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"nx = max(x.shape)\n",
|
||||
"ny = max(y.shape)\n",
|
||||
"nz = max(z.shape)\n",
|
||||
"npts = max(xr.shape)\n",
|
||||
"\n",
|
||||
"Q = np.zeros((npts, nx*ny*nz))\n",
|
||||
"\n",
|
||||
"for i in range(npts):\n",
|
||||
"\t# in x-direction \n",
|
||||
" im = np.argmin(abs(x-xr[i]))\n",
|
||||
" if xr[i] - x[im] >= 0: # Point on the left\n",
|
||||
" ind_x1 = im\n",
|
||||
" ind_x2 = im+1\n",
|
||||
" elif xr[i] - x[im] < 0: # Point on the right\n",
|
||||
" ind_x1 = im-1\n",
|
||||
" ind_x2 = im \n",
|
||||
" dx1 = xr[i] - x[ind_x1]\n",
|
||||
" dx2 = x[ind_x2] - xr[i]\n",
|
||||
" # in y-direction\n",
|
||||
" im = np.argmin(abs(y-yr[i]))\n",
|
||||
" if yr[i] - y[im] >= 0: # Point on the left\n",
|
||||
" ind_y1 = im\n",
|
||||
" ind_y2 = im+1\n",
|
||||
" elif yr[i] - y[im] < 0: # Point on the right\n",
|
||||
" ind_y1 = im-1\n",
|
||||
" ind_y2 = im \n",
|
||||
" dy1 = yr[i] - y[ind_y1]\n",
|
||||
" dy2 = y[ind_y2] - yr[i] \n",
|
||||
" # in z-direction\n",
|
||||
" im = np.argmin(abs(z-zr[i]))\n",
|
||||
" if zr[i] - z[im] >= 0: # Point on the left\n",
|
||||
" ind_z1 = im\n",
|
||||
" ind_z2 = im+1\n",
|
||||
" elif zr[i] - z[im] < 0: # Point on the right\n",
|
||||
" ind_z1 = im-1\n",
|
||||
" ind_z2 = im \n",
|
||||
" dz1 = zr[i] - z[ind_z1]\n",
|
||||
" dz2 = z[ind_z2] - zr[i] \n",
|
||||
" dv = (x[ind_x2] - x[ind_x1]) * (y[ind_y2] - y[ind_y1]) *(z[ind_z2] - z[ind_z1])\n",
|
||||
"\n",
|
||||
" Dx = x[ind_x2] - x[ind_x1]\n",
|
||||
" Dy = y[ind_y2] - y[ind_y1]\n",
|
||||
" Dz = z[ind_z2] - z[ind_z1]\n",
|
||||
"\n",
|
||||
" # Get the row in the matrix\n",
|
||||
"\n",
|
||||
" v = np.zeros((nx,ny,nz));\n",
|
||||
" \n",
|
||||
" v[ ind_x1, ind_y1, ind_z1] = (1-dx1/Dx)*(1-dy1/Dy)*(1-dz1/Dz);\n",
|
||||
" v[ ind_x1, ind_y2, ind_z1] = (1-dx1/Dx)*(1-dy2/Dy)*(1-dz1/Dz);\n",
|
||||
" v[ ind_x2, ind_y1, ind_z1] = (1-dx2/Dx)*(1-dy1/Dy)*(1-dz1/Dz);\n",
|
||||
" v[ ind_x2, ind_y2, ind_z1] = (1-dx2/Dx)*(1-dy2/Dy)*(1-dz1/Dz);\n",
|
||||
" v[ ind_x1, ind_y1, ind_z2] = (1-dx1/Dx)*(1-dy1/Dy)*(1-dz2/Dz);\n",
|
||||
" v[ ind_x1, ind_y2, ind_z2] = (1-dx1/Dx)*(1-dy2/Dy)*(1-dz2/Dz);\n",
|
||||
" v[ ind_x2, ind_y1, ind_z2] = (1-dx2/Dx)*(1-dy1/Dy)*(1-dz2/Dz);\n",
|
||||
" v[ ind_x2, ind_y2, ind_z2] = (1-dx2/Dx)*(1-dy2/Dy)*(1-dz2/Dz);\n",
|
||||
" \n",
|
||||
" \n",
|
||||
" Q[i,:] = mkvc(v)\n",
|
||||
"Q = sp.csr_matrix(Q)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 6
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import scipy.io\n",
|
||||
"\n",
|
||||
"# import file into a dictionary\n",
|
||||
"f = scipy.io.loadmat('q.mat')\n",
|
||||
" \n",
|
||||
"# read in the structure\n",
|
||||
"Qmat= f['q']\n",
|
||||
"Qmat = Qmat.todense()\n",
|
||||
"Q = Q.todense()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 7
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"norm(Q-Qmat)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 13,
|
||||
"text": [
|
||||
"0.0"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 13
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"plt.subplot(131)\n",
|
||||
"spy(Q)\n",
|
||||
"plt.subplot(132)\n",
|
||||
"spy(Qmat)\n",
|
||||
"plt.subplot(133)\n",
|
||||
"spy(Qmat-Q)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 15,
|
||||
"text": [
|
||||
"<matplotlib.image.AxesImage at 0x8469588>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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\n4gAAAABJRU5ErkJggg==\n",
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x84d4cc0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 15
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"a = np.random.rand(5)\n",
|
||||
"ind = np.logical_and(a>0.1,a<0.5)\n",
|
||||
"print ind"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"[False False False False False]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 10
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"def interpmat(x,y,z,xr,yr,zr):\n",
|
||||
"\n",
|
||||
" \"\"\" Local nterpolation computed for each receiver point in turn \"\"\"\n",
|
||||
"\n",
|
||||
" nx = max(x.shape)\n",
|
||||
" ny = max(y.shape)\n",
|
||||
" nz = max(z.shape)\n",
|
||||
" npts = max(xr.shape)\n",
|
||||
"\n",
|
||||
" Q = np.zeros((npts, nx*ny*nz))\n",
|
||||
"\n",
|
||||
" for i in range(npts):\n",
|
||||
" \t# in x-direction \n",
|
||||
" im = np.argmin(abs(x-xr[i]))\n",
|
||||
" if xr[i] - x[im] >= 0: # Point on the left\n",
|
||||
" ind_x1 = im\n",
|
||||
" ind_x2 = im+1\n",
|
||||
" elif xr[i] - x[im] < 0: # Point on the right\n",
|
||||
" ind_x1 = im-1\n",
|
||||
" ind_x2 = im \n",
|
||||
" dx1 = xr[i] - x[ind_x1]\n",
|
||||
" dx2 = x[ind_x2] - xr[i]\n",
|
||||
" # in y-direction\n",
|
||||
" im = np.argmin(abs(y-yr[i]))\n",
|
||||
" if yr[i] - y[im] >= 0: # Point on the left\n",
|
||||
" ind_y1 = im\n",
|
||||
" ind_y2 = im+1\n",
|
||||
" elif yr[i] - y[im] < 0: # Point on the right\n",
|
||||
" ind_y1 = im-1\n",
|
||||
" ind_y2 = im \n",
|
||||
" dy1 = yr[i] - y[ind_y1]\n",
|
||||
" dy2 = y[ind_y2] - yr[i] \n",
|
||||
" # in z-direction\n",
|
||||
" im = np.argmin(abs(z-zr[i]))\n",
|
||||
" if zr[i] - z[im] >= 0: # Point on the left\n",
|
||||
" ind_z1 = im\n",
|
||||
" ind_z2 = im+1\n",
|
||||
" elif zr[i] - z[im] < 0: # Point on the right\n",
|
||||
" ind_z1 = im-1\n",
|
||||
" ind_z2 = im \n",
|
||||
" dz1 = zr[i] - z[ind_z1]\n",
|
||||
" dz2 = z[ind_z2] - zr[i] \n",
|
||||
" dv = (x[ind_x2] - x[ind_x1]) * (y[ind_y2] - y[ind_y1]) *(z[ind_z2] - z[ind_z1])\n",
|
||||
"\n",
|
||||
" Dx = x[ind_x2] - x[ind_x1]\n",
|
||||
" Dy = y[ind_y2] - y[ind_y1]\n",
|
||||
" Dz = z[ind_z2] - z[ind_z1]\n",
|
||||
"\n",
|
||||
" # Get the row in the matrix\n",
|
||||
"\n",
|
||||
" v = np.zeros((nx,ny,nz));\n",
|
||||
" \n",
|
||||
" v[ ind_x1, ind_y1, ind_z1] = (1-dx1/Dx)*(1-dy1/Dy)*(1-dz1/Dz);\n",
|
||||
" v[ ind_x1, ind_y2, ind_z1] = (1-dx1/Dx)*(1-dy2/Dy)*(1-dz1/Dz);\n",
|
||||
" v[ ind_x2, ind_y1, ind_z1] = (1-dx2/Dx)*(1-dy1/Dy)*(1-dz1/Dz);\n",
|
||||
" v[ ind_x2, ind_y2, ind_z1] = (1-dx2/Dx)*(1-dy2/Dy)*(1-dz1/Dz);\n",
|
||||
" v[ ind_x1, ind_y1, ind_z2] = (1-dx1/Dx)*(1-dy1/Dy)*(1-dz2/Dz);\n",
|
||||
" v[ ind_x1, ind_y2, ind_z2] = (1-dx1/Dx)*(1-dy2/Dy)*(1-dz2/Dz);\n",
|
||||
" v[ ind_x2, ind_y1, ind_z2] = (1-dx2/Dx)*(1-dy1/Dy)*(1-dz2/Dz);\n",
|
||||
" v[ ind_x2, ind_y2, ind_z2] = (1-dx2/Dx)*(1-dy2/Dy)*(1-dz2/Dz);\n",
|
||||
" \n",
|
||||
" \n",
|
||||
" Q[i,:] = mkvc(v)\n",
|
||||
" Q = sp.csr_matrix(Q)\n",
|
||||
" return Q"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 16
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"Q = interpmat(x,y,z,xr,yr,zr)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"Q = Q.todense()\n",
|
||||
"norm(Q-Qmat)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 18,
|
||||
"text": [
|
||||
"0.0"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 18
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"plt.subplot(131)\n",
|
||||
"plt.plot(mkvc(Qmat))\n",
|
||||
"plt.subplot(132)\n",
|
||||
"plt.plot(mkvc(Q))\n",
|
||||
"plt.subplot(133)\n",
|
||||
"plt.plot(mkvc(Qmat-Q))"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 29,
|
||||
"text": [
|
||||
"[<matplotlib.lines.Line2D at 0xcfc4ef0>]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAD9CAYAAABdoNd6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X9UVGX+B/D3oCZYRhGY+iXGRlhm0IRJhsGvBmwhYizq\nFh3BzTqJ+0XNxFo9rX07xx9tPzbbFWNboDbbdpV196y2/tiMoHYY12QGtmxzwCwFNVv7Ap5FVLBR\nnu8frCPDDAPG/OR5v87hnLlznzv3uXyGt9c7z31GIYQQICKiIS3I1x0gIiLPY9gTEUmAYU9EJAGG\nPRGRBBj2REQSYNgTEUnAZdgvWrQIt99+O+66664+26xZswYqlQpTp07FkSNH3N5Bcj/WNfAZjUZo\nNBrExMSguLjYaZu+anjhwgU8+uij+N73voe4uDjU1NR4q9vkS8IFo9EoPv74YzF58mSn600mk5g+\nfbpobW0V5eXlIisry9XLkZ9gXQNfQkKCqK6uFk1NTSI2NlY0NzfbrXdVw5/85Cfi2WefFR0dHcJq\ntYp///vf3u4++YDLM/t77rkHt956a5/rTSYTcnJyEBYWhry8PDQ0NLj9HyNyP9Y1sLW1tQEAUlJS\noFQqkZGRAZPJZNfGVQ2rqqrwzDPPIDg4GMOHD0doaKhX+0++MXwwG5vNZixcuNC2HBERgWPHjmHi\nxIl27RQKxWB2Q24kBnDDNOsaGHr+/ouLi+1q66yGx48fxw033IDOzk4sXboUDQ0NeOCBB1BYWIjg\n4GCnr0u+N5C/2YEY1Ae0QgiHjvT1Rrna9np+1q5d6/Ht/vxnAaD7Jzp6LdLTry3/5S/XHgO+7ac7\ntpOprt39v/qzFqWl15YfflggIeHa8t//7h/1Gei2lZWVyM3NtS2XlJQMqIYA0NnZiaNHj+LBBx+E\nwWCAxWLBn/70p4Cqq7d+z/6wnTsNKuz1ej3q6+tty83NzVCpVIPuFPkW6+rfdDqd3QeuFovFoU1f\nNYyOjkZsbCyys7MREhKCvLw87Nu3zyv9Jt8adNjv2LEDra2tKC8vh0ajcVe/yIdYV/929Rq70WhE\nU1MTKisrHdq4qmFMTAxMJhO6urrw17/+Fenp6V7rO/mOy2v2eXl5qK6uRktLC+644w6sX78eVqsV\nAFBQUICkpCTMmDEDiYmJCAsLw9atW93aubS0NK9uFxbm3f15e7urZKsr4N39DaY+A922qKgIBQUF\nsFqtWLFiBQoLC1FWVgag/xq+8soreOSRR9DZ2Yn09HTk5uZ+5/5+l777ejtf7HOwf7PuoBDuvjDk\nbCcKhduvP7nLjh1ATk7348xM4PJloKqqe/kvfwHmzbvW1k8PYcDcXQd/risA9PyYobQUWLKk+/HD\nDwOHDwOHDnUv//3vwPTp3u+fO7mzFv5eV5m4sxa8g5aISAIMeyIiCTDsiYgkwLAnIpIAw56ISAIM\neyIiCTDsiYgkwLAnIpIAw56ISAIMeyIiCTDse+g9iy+n9R66WFuSjfRhz4CXQ8+6suYkI+nDnohI\nBgx7IiIJMOyJiCTAsCcikgDDnohIAgx7IiIJMOyJiCTAsCcikgDDnohIAgx7IiIJSB/2Qvi6B+Rr\nfA+QDKQPeyIiGTDsiYgkwLDvgbMhyoO1Jdkw7Hvofe2W13IDV3+1Y21JNtKHPc/wiO8BkoH0YU8U\niIxGIzQaDWJiYlBcXOy0zZo1a6BSqTB16lQcOXLEbt2VK1eg1WqRnZ3tje6SHxju6w4Q0fUrLCxE\nWVkZlEolZs2a5bDebDZj//79qKurQ0VFBVatWoW9e/fa1m/evBlxcXFob2/3ZrfJh3hmTxRg2tra\nAAApKSlQKpXIyMhwaGMymZCTk4OwsDDk5eWhoaHBtu6rr77Cu+++i8WLF0Pwwwtp8MyeKMDU1tZC\nrVbbluPi4hzamM1mLFy40LYcERGB48ePQ6VS4cknn8TGjRtx7ty5Pvexbt062+O0tDSkpaW5pe/k\nmsFggMFg8MhrM+yJhiAhhNOz9r1792LMmDHQarUuQ6Vn2JP39P6Hdf369W57bV7GIQowOp3O7gNX\ni8Xi0Eav16O+vt623NzcDJVKhY8++gi7d+/GnXfeiby8PHz44Yd45JFHvNJv8i2GPVGACQ0NBdA9\nIqepqQmVlZUObfR6PXbs2IHW1laUl5dDo9EAAF544QWcOnUKjY2N2L59O+6991787ne/82r/yTf6\nDfv+hnh1dHTg0UcfhVarRWpqKnbt2uWRjpJ7sa6BraioCAUFBUhPT8eyZcsAAGVlZSgrKwMAJCUl\nYcaMGUhMTMQvfvELbNy40enrKHiTgTxEPxISEkR1dbVoamoSsbGxorm52W59SUmJWLp0qRBCiKam\nJqFSqURXV5ddmwHsxmd27BCi+35KIWbPFmLmzGvLu3Zde+zHhzBgPesw1Ova1WVfu7Kya48XLhRC\nq722fOCAr3s7eO6shT/XVTburIXLM3tnQ7xMJpNdm9DQULS3t8NqteLs2bMYNWoUzxb8HOtKJB+X\no3GcDfGqqalBVlaW7bm8vDzs2bMH4eHhuHz5Mg4ePOj0tTiUy/v6GsbFugY+Tw7Ro6Fp0EMvf/Wr\nX2H48OH417/+hc8++wxZWVk4ceIEgoLs/9PAoVzeN5hhXKyrf/PkED0amlxexnE2xCs5OdmujdFo\nxI9+9COMGjUKer0e48ePx9GjRz3TWw+TZYpj2erqzFCtLVFfXIa9syFeer3ers19992HPXv2oKur\nC8ePH8fZs2ftLhGQ/2FdieTT72Wcq0O8rFYrVqxYgfDwcNvwroKCAuTm5qK+vh6JiYmIiIjA5s2b\nPd5pGjzWlUguiv8M7/HsThQKv51w6Z13gAce6H58//3A5cvA++93L+/eDcyZc62tnx7CgLm7Dv5c\nVyGAnh8vvP468D//0/34kUeAw4eBjz/uXv7oI2DaNO/30Z3cWQt/rqts3FkL3kFLRCQBhj0RkQQY\n9kREEmDYExFJgGFPRCQBhj0RkQSkD3uOMCO+B0gG0oc9EZEMGPZERBJg2BMRSYBh34Mss14Sa0vy\nYdgTEUmAYU9EJAGGPRGRBBj2PfQeb83x14Grv9qxtiQb6cOeH9QR3wMkA+nDnohIBgx7IiIJMOyJ\niCTAsCcikgDDnohIAgx7ogBkNBqh0WgQExOD4uJip23WrFkDlUqFqVOn4siRIwCAU6dO4fvf/z4m\nTZqEtLQ0lJeXe7Pb5EPDfd0BIrp+hYWFKCsrg1KpxKxZsxzWm81m7N+/H3V1daioqMCqVauwd+9e\njBgxAps2bUJCQgJaWlqQlJSE7OxsjB492gdHQd7EM3uiANPW1gYASElJgVKpREZGhkMbk8mEnJwc\nhIWFIS8vDw0NDQCAsWPHIiEhAQAQHh6OSZMmoa6uznudJ5/hmT1RgKmtrYVarbYtx8XFObQxm81Y\nuHChbTkiIgLHjh3DxIkTbc99+eWXsFgsSEpKcth+3bp1tsdpaWlIS0tzT+fJJYPBAIPB4JHXZtj3\nwCmO5THUayuEgOg1J4Six0G3t7dj/vz52LRpE2688UaH7XuGPXlP739Y169f77bX5mUcogCj0+ls\nH7gCgMVicWij1+tRX19vW25uboZKpQIAWK1WPPjgg1i4cCHmzp3r+Q6TX2DYEwWY0NBQAN0jcpqa\nmlBZWenQRq/XY8eOHWhtbUV5eTk0Gg2A7jP+/Px8TJ48GStXrvRqv8m3eBmHKAAVFRWhoKAAVqsV\nK1assI3OAYCCggIkJSVhxowZSExMRFhYGLZu3QoAOHDgALZu3YopU6ZAq9UCAF588UVkZmb67FjI\nOxj2RAEoNTXVNsIG6B6KWVBQYNfmpZdewksvvWT33IwZM9DV1eWVPpJ/4WUcIiIJSB/2HIEjh551\nZc1JRtKHPRGRDBj2REQSkD7s+V2kxPcAyUD6sCcikkG/YT+QqVRra2uh0+mg0Wg4h0aAYF2J5NLv\nOPveU6nm5eUhPDzctl4IgUWLFmHTpk1IT09HS0uLRztM7sG6EsnF5Zm9s6lUTSaTXZu6ujpMmTIF\n6enpAGAXGOSfWFci+bg8s3c2lWpNTQ2ysrJsz1VUVEChUOCee+7BLbfcguXLlzv9MgVOmep9fU2X\nyroGPk9OhUtD06CnS+js7MShQ4dQVVWFixcvYubMmTh8+DBCQkLs2gXClKlD7WabwUyXOpTq6ozM\ntSU5ubyM42wq1eTkZLs206ZNw+zZszF27FioVCokJibCaDR6prfkFqwrkXxchr2zqVT1er1dm+Tk\nZFRXV+PixYs4e/YsPvnkE0yfPt1zPaZBY12J5NPvZZzeU6mGh4fbTaV622234bHHHkNiYiIiIiKw\nYcMG3HTTTR7vOA0O60okF4Xo/d1lntiJQuHwFWn+4p13gAce6H78gx8AVitQUdG9vHdv93NX+ekh\nDJi76+DPde3qAoYNu7b8xhvAj3/c/fjRRwGLBbj6PdsffQRMm+b9PrqTO2vhz3WVjTtrwTtoe+j9\nO+X7PXD1VzvWlmQjfdgH+qgMGjy+B0gG0oc9EZEMGPZERBJg2BMRSYBhT0QkAYY9EZEEGPZERBJg\n2BMRSYBhT0QkAYZ9D0NtimPqG2tLsmHYExFJgGFPRCQBhj1RADIajdBoNIiJiUFxcbHTNmvWrIFK\npcLUqVPtvqxmINvS0DPoryUkIu8rLCxEWVkZlEql0+8GNpvN2L9/P+rq6lBRUYFVq1Zh7969TrfN\ny8vjF8pLgGf2RAGmra0NAJCSkgKlUomMjAyHNiaTCTk5OQgLC0NeXh4aGhr63NZkMnmv8+QzPLPv\nobUV6Oy8tnzpku/6Qu7V0XHt8dmzwP/9n+/6Mli1tbVQq9W25bi4OIc2ZrMZCxcutC1HRELine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0xca3aac8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 29
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 16
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": []
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
import numpy as np
|
||||
|
||||
def ismember(a, b):
|
||||
tf = np.array([i in b for i in a])
|
||||
return tf
|
||||
|
||||
def path2edgeModel(mesh, pts):
|
||||
edm_x = np.zeros(np.prod(mesh.nEx))
|
||||
edm_y = np.zeros(np.prod(mesh.nEy))
|
||||
edm_z = np.zeros(np.prod(mesh.nEz))
|
||||
|
||||
for ii in range (pts.shape[0]-1):
|
||||
pt1 = pts[ii,:]
|
||||
pt2 = pts[ii+1,:]
|
||||
delta = pt2 - pt1
|
||||
deltaDim = np.argwhere(delta)
|
||||
#assert(np.size(deltaDim)==1), "Path must be orthoginal to mesh"
|
||||
if deltaDim == 0:
|
||||
xLoc = mesh.vectorCCx[(min(pt1[0],pt2[0]) < mesh.vectorCCx ) & (mesh.vectorCCx < max(pt1[0],pt2[0]))]
|
||||
yLoc = pts[ii,1]
|
||||
zLoc = pts[ii,2]
|
||||
delDir = np.sign(pt2[0]-pt1[0])
|
||||
xyz = np.c_[xLoc, np.ones(np.size(xLoc))*yLoc, np.ones(np.size(xLoc))*zLoc]
|
||||
edgeInd=ismember(map(tuple,mesh.gridEx),map(tuple,xyz))
|
||||
edm_x[edgeInd] = delDir
|
||||
# print '>> x-direction', ii
|
||||
# print mesh.gridEx[edgeInd]
|
||||
if deltaDim == 1:
|
||||
xLoc = pts[ii,0]
|
||||
yLoc = mesh.vectorCCy[(min(pt1[1],pt2[1]) < mesh.vectorCCy ) & (mesh.vectorCCy < max(pt1[1],pt2[1]))]
|
||||
zLoc = pts[ii,2]
|
||||
delDir = np.sign(pt2[1]-pt1[1])
|
||||
xyz = np.c_[np.ones(np.size(yLoc))*xLoc, yLoc, np.ones(np.size(yLoc))*zLoc]
|
||||
edgeInd=ismember(map(tuple,mesh.gridEy),map(tuple,xyz))
|
||||
edm_y[edgeInd] = delDir
|
||||
# print '>> y-direction', ii
|
||||
# print mesh.gridEy[edgeInd]
|
||||
if deltaDim == 2:
|
||||
xLoc = pts[ii,0]
|
||||
yLoc = pts[ii,1]
|
||||
zLoc = mesh.vectorCCz[(min(pt1[2],pt2[2]) < mesh.vectorCCz ) & (mesh.vectorCCz < max(pt1[2],pt2[2]))]
|
||||
delDir = np.sign(pt2[2]-pt1[2])
|
||||
xyz = np.c_[np.ones(np.size(zLoc))*xLoc, np.ones(np.size(zLoc))*yLoc, zLoc]
|
||||
edgeInd=ismember(map(tuple,mesh.gridEz),map(tuple,xyz))
|
||||
edm_z[edgeInd] = delDir
|
||||
# print '>> z-direction', ii
|
||||
# print mesh.gridEz[edgeInd]
|
||||
|
||||
|
||||
edgeModel = np.r_[edm_x, edm_y, edm_z]
|
||||
return edgeModel
|
||||
|
||||
def rho(x1, y1, x, y):
|
||||
r = np.sqrt((x-x1)**2+(y-y1)**2)
|
||||
return r
|
||||
|
||||
def MMRhalf(loc1, loc2, x, y):
|
||||
""" Anaytic function for MMR response (B^{1D})
|
||||
- loc1=(x1,y1): x, y location for (+) charge
|
||||
- loc2=(x2,y2): x, y1
|
||||
- x : observation points in x-direction
|
||||
- y : observation points in y-direction
|
||||
"""
|
||||
x1=loc1[0]
|
||||
x2=loc2[0]
|
||||
y1=loc1[1]
|
||||
y2=loc2[1]
|
||||
mu0 = 4*np.pi*1e-7
|
||||
I = 1
|
||||
By =mu0*I/(4*np.pi)*np.array((x-x1)/rho(x1,y1,x,y)**2-(x-x2)/rho(x2,y2,x,y)**2)
|
||||
Bx =mu0*I/(4*np.pi)*np.array(-(y-y1)/rho(x1,y1,x,y)**2+(y-y2)/rho(x2,y2,x,y)**2)
|
||||
|
||||
return Bx, By
|
||||
@@ -0,0 +1,156 @@
|
||||
import numpy as np
|
||||
import scipy.sparse as sp
|
||||
from SimPEG import utils, TensorMesh
|
||||
from SimPEG.utils import spzeros, mkvc
|
||||
|
||||
def interpmat(x,y,z,xr,yr,zr):
|
||||
|
||||
""" Local nterpolation computed for each receiver point in turn """
|
||||
|
||||
nx = max(x.shape)
|
||||
ny = max(y.shape)
|
||||
nz = max(z.shape)
|
||||
npts = max(xr.shape)
|
||||
|
||||
Q = sp.lil_matrix((npts, nx*ny*nz))
|
||||
|
||||
for i in range(npts):
|
||||
# in x-direction
|
||||
im = np.argmin(abs(x-xr[i]))
|
||||
if xr[i] - x[im] >= 0: # Point on the left
|
||||
ind_x1 = im
|
||||
ind_x2 = im+1
|
||||
elif xr[i] - x[im] < 0: # Point on the right
|
||||
ind_x1 = im-1
|
||||
ind_x2 = im
|
||||
dx1 = xr[i] - x[ind_x1]
|
||||
dx2 = x[ind_x2] - xr[i]
|
||||
# in y-direction
|
||||
im = np.argmin(abs(y-yr[i]))
|
||||
if yr[i] - y[im] >= 0: # Point on the left
|
||||
ind_y1 = im
|
||||
ind_y2 = im+1
|
||||
elif yr[i] - y[im] < 0: # Point on the right
|
||||
ind_y1 = im-1
|
||||
ind_y2 = im
|
||||
dy1 = yr[i] - y[ind_y1]
|
||||
dy2 = y[ind_y2] - yr[i]
|
||||
# in z-direction
|
||||
im = np.argmin(abs(z-zr[i]))
|
||||
if zr[i] - z[im] >= 0: # Point on the left
|
||||
ind_z1 = im
|
||||
ind_z2 = im+1
|
||||
elif zr[i] - z[im] < 0: # Point on the right
|
||||
ind_z1 = im-1
|
||||
ind_z2 = im
|
||||
dz1 = zr[i] - z[ind_z1]
|
||||
dz2 = z[ind_z2] - zr[i]
|
||||
dv = (x[ind_x2] - x[ind_x1]) * (y[ind_y2] - y[ind_y1]) *(z[ind_z2] - z[ind_z1])
|
||||
|
||||
Dx = x[ind_x2] - x[ind_x1]
|
||||
Dy = y[ind_y2] - y[ind_y1]
|
||||
Dz = z[ind_z2] - z[ind_z1]
|
||||
|
||||
# Get the row in the matrix
|
||||
|
||||
inds = utils.sub2ind((nx,ny,nz),[
|
||||
( ind_x1, ind_y2, ind_z1),
|
||||
( ind_x1, ind_y1, ind_z1),
|
||||
( ind_x2, ind_y1, ind_z1),
|
||||
( ind_x2, ind_y2, ind_z1),
|
||||
( ind_x1, ind_y1, ind_z2),
|
||||
( ind_x1, ind_y2, ind_z2),
|
||||
( ind_x2, ind_y1, ind_z2),
|
||||
( ind_x2, ind_y2, ind_z2)])
|
||||
|
||||
vals = [(1-dx1/Dx)*(1-dy2/Dy)*(1-dz1/Dz),
|
||||
(1-dx1/Dx)*(1-dy1/Dy)*(1-dz1/Dz),
|
||||
(1-dx2/Dx)*(1-dy1/Dy)*(1-dz1/Dz),
|
||||
(1-dx2/Dx)*(1-dy2/Dy)*(1-dz1/Dz),
|
||||
(1-dx1/Dx)*(1-dy1/Dy)*(1-dz2/Dz),
|
||||
(1-dx1/Dx)*(1-dy2/Dy)*(1-dz2/Dz),
|
||||
(1-dx2/Dx)*(1-dy1/Dy)*(1-dz2/Dz),
|
||||
(1-dx2/Dx)*(1-dy2/Dy)*(1-dz2/Dz)]
|
||||
|
||||
Q[i, mkvc(inds)] = vals
|
||||
Q = Q.tocsr()
|
||||
return Q
|
||||
|
||||
def getInterpmat(mesh, rxLoc, dataType):
|
||||
""" """
|
||||
xr = rxLoc[:,0]
|
||||
yr = rxLoc[:,1]
|
||||
zr = rxLoc[:,2]
|
||||
nrx = rxLoc.shape[0]
|
||||
if dataType == 'fx':
|
||||
Qx = interpmat(np.unique(mesh.gridFx[:,0]),
|
||||
np.unique(mesh.gridFx[:,1]),
|
||||
np.unique(mesh.gridFx[:,2]),
|
||||
xr,yr,zr)
|
||||
Q = sp.hstack([Qx,spzeros(nrx,mesh.nF[1]),spzeros(nrx,mesh.nF[2])])
|
||||
elif dataType == 'fy':
|
||||
Qy = interpmat(np.unique(mesh.gridFy[:,0]),
|
||||
np.unique(mesh.gridFy[:,1]),
|
||||
np.unique(mesh.gridFy[:,2]),
|
||||
xr,yr,zr)
|
||||
Q = sp.hstack([spzeros(nrx,mesh.nF[0]),Qy,spzeros(nrx,mesh.nF[2])])
|
||||
elif dataType == 'fz':
|
||||
Qz = interpmat(np.unique(mesh.gridFz[:,0]),
|
||||
np.unique(mesh.gridFz[:,1]),
|
||||
np.unique(mesh.gridFz[:,2]),
|
||||
xr,yr,zr)
|
||||
Q = sp.hstack([spzeros(nrx,mesh.nF[0]),spzeros(nrx,mesh.nF[1]),Qz])
|
||||
elif dataType == 'ex':
|
||||
Qx = interpmat(np.unique(mesh.gridEx[:,0]),
|
||||
np.unique(mesh.gridEx[:,1]),
|
||||
np.unique(mesh.gridEx[:,2]),
|
||||
xr, yr, zr)
|
||||
Q = sp.hstack([Qx,spzeros(nrx,mesh.nE[1]),spzeros(nrx,mesh.nE[2])])
|
||||
elif dataType == 'ey':
|
||||
Qy = interpmat(np.unique(mesh.gridEy[:,0]),
|
||||
np.unique(mesh.gridEy[:,1]),
|
||||
np.unique(mesh.gridEy[:,2]),
|
||||
xr, yr, zr)
|
||||
Q = sp.hstack([spzeros(nrx,mesh.nE[0]),Qy,spzeros(nrx,mesh.nE[2])])
|
||||
elif dataType == 'ez':
|
||||
Qz = interpmat(np.unique(mesh.gridEz[:,0]),
|
||||
np.unique(mesh.gridEz[:,1]),
|
||||
np.unique(mesh.gridEz[:,2]),
|
||||
xr,yr,zr)
|
||||
Q = sp.hstack([spzeros(nrx,mesh.nE[0]),spzeros(nrx,mesh.nE[1]),Qz])
|
||||
else:
|
||||
assert(True), "Input either face (fx, fy, fz) or edge (ex, ey, ez) option"
|
||||
return Q
|
||||
|
||||
if __name__ == '__main__':
|
||||
pad = 1
|
||||
padfactor = 1.5
|
||||
cs = 100
|
||||
xpad = cs*(np.ones(pad)*padfactor)**np.arange(pad)
|
||||
ypad = cs*(np.ones(pad)*padfactor)**np.arange(pad)
|
||||
zpad = cs*(np.ones(pad)*padfactor)**np.arange(pad)
|
||||
|
||||
core = 10
|
||||
xcore = cs*np.ones(core)
|
||||
ycore = cs*np.ones(core)
|
||||
zcore = cs*np.ones(core)
|
||||
|
||||
hx = np.r_[xpad[::-1],xcore, cs, xcore,xpad]
|
||||
hy = np.r_[ypad[::-1],ycore, cs, ycore, ypad]
|
||||
hz = np.r_[zpad[::-1],zcore,zcore, zpad]
|
||||
x0 = np.array([-np.sum(hx)/2, -np.sum(hy)/2, -np.sum(hz)/2], )
|
||||
mesh = TensorMesh([hx, hy, hz],x0)
|
||||
|
||||
xr1 = np.linspace(-500,500,5)
|
||||
yr1 = np.linspace(-500,500,5)
|
||||
zr1 = 0
|
||||
xr, yr = np.meshgrid(xr1, yr1, indexing='ij')
|
||||
zr = np.ones((xr.shape[0],xr.shape[1]))*zr1
|
||||
xr = mkvc(xr)
|
||||
yr = mkvc(yr)
|
||||
zr = mkvc(zr)
|
||||
rxLoc = np.c_[xr, yr, zr]
|
||||
Q = getInterpmat(mesh, rxLoc, 'ex')
|
||||
|
||||
print Q
|
||||
|
||||
Reference in new issue
Block a user