mirror of
https://github.com/wassname/simpeg.git
synced 2026-10-29 13:40:11 +08:00
Create pseudo-section simulation in Notebook.
Sub-functions added to BaseDC. Required for the simulation
This commit is contained in:
1 parent
b4c4841976
commit
78584ae49d
6 files changed
+675
-74
No files matched your search
@@ -0,0 +1,167 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# DCR Pseudo-section Simulation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"from SimPEG.Examples import DC_PseudoSection_Simulation\n",
|
||||
"\n",
|
||||
"from ipywidgets import interactive, FloatText, FloatSlider, ToggleButtons #interactive plots!\n",
|
||||
"\n",
|
||||
"%matplotlib inline"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Transmitter 8 of 9 -> Time:0.976000070572 sec Transmitter 8 of 9\n",
|
||||
"Forward completed\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x154fecc0>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"fig, ax = DC_PseudoSection_Simulation.run()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now that we have a tool to forward model data in 3D space, we can experiment with different survey configurations.\n",
|
||||
"\n",
|
||||
"We here give the two options:\n",
|
||||
"pole-dipole (pdp) or dipole-dipole (dpdp).\n",
|
||||
"\n",
|
||||
"In both cases we need to specify three important parameter.\n",
|
||||
"\n",
|
||||
"a: Transmitter and receivers seperation (m)\n",
|
||||
"\n",
|
||||
"b: Dipole seperation (m)\n",
|
||||
"\n",
|
||||
"n: Number of receiver dipoles along line\n",
|
||||
"\n",
|
||||
"We can also specify values of conductivity for the background (sig0) and the two sphere anomalies (sig1 and sig2)."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Transmitter 8 of 9 -> Time:0.976999998093 sec Transmitter 8 of 9\n",
|
||||
"Forward completed\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x2183a90>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"(<matplotlib.figure.Figure at 0x2183a90>,\n",
|
||||
" <matplotlib.axes._subplots.AxesSubplot at 0x187ccba8>)"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"Simul_Fct = lambda a,b,n, sig0, sig1, sig2, stype: DC_PseudoSection_Simulation.run(param = np.r_[a,b,n], sig=np.r_[sig0,sig1,sig2], stype = stype)\n",
|
||||
"\n",
|
||||
"interactive(Simul_Fct, a=FloatText(min=10.,max=40.,step=5.,value=30.),\n",
|
||||
" b=FloatText(min=10.,max=40.,step=5.,value=30.),\n",
|
||||
" n=FloatText(min=1,max=30,step=5,value=10.),\n",
|
||||
" sig0=FloatText(min=1e-4,max=1e+4,step=1e+1,value=1e-2),\n",
|
||||
" sig1=FloatText(min=1e-4,max=1e+4,step=1e+1,value=1e-1),\n",
|
||||
" sig2=FloatText(min=1e-4,max=1e+4,step=1e+1,value=1e-3),\n",
|
||||
" stype=ToggleButtons(options=['pdp','dpdp'],value='dpdp'))\n",
|
||||
" "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -35,7 +35,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"execution_count": 2,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -49,7 +49,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"execution_count": 3,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -60,7 +60,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"execution_count": 4,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -75,7 +75,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 33,
|
||||
"execution_count": 5,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -83,19 +83,19 @@
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"(<matplotlib.collections.QuadMesh at 0x1b15fda0>,\n",
|
||||
" <matplotlib.lines.Line2D at 0x1b170240>)"
|
||||
"(<matplotlib.collections.QuadMesh at 0x157f41d0>,\n",
|
||||
" <matplotlib.lines.Line2D at 0x15631320>)"
|
||||
]
|
||||
},
|
||||
"execution_count": 33,
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x1a117c50>"
|
||||
"<matplotlib.figure.Figure at 0x15482e10>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -103,9 +103,9 @@
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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\nFJsU75szS+48xi16riHmn8Y9CUlST7abJEnYbloK2039c203rV5sUrxvziy58xi36LmGmH8a202S\npJ5sN0mSsN20FLab+ufablq92KR435xZcucxbtFzDTH/NLabJEk9WSQkSU3uSUiScE9iKdyT6J/r\nnsTqxSbF++bMkjuPcYuea4j5p3FPQpLUk+0mSRK2m5bCdlP/XNtNqxebFO+bM0vuPMYteq4h5p/G\ndpMkqSfbTZIkbDcthe2m/rm2m1YvNineN2eW3HmMW/RcQ8w/je0mSVJPFglJUpN7EpIk3JNYCvck\n+ue6J7F6sUnxvjmz5M5j3KLnGmL+adyTkCT1ZLtJkoTtpqWw3dQ/13bT6sUmxfvmzJI7j3GLnmuI\n+aex3SRJ6sl2kyQJ201LYbupf67tptWLTYr3zZkldx7jFj3XEPNPY7tJktSTRUKS1GSRkCQ1uXEt\nScKN66Vw47p/rhvXqxebFO+bM0vuPMYteq4h5p/GjWtJUk8WCUlSk0VCktTkxrUkCTeul8KN6/65\nblyvXmxSvG/OLLnzGLfouYaYfxo3riVJPVkkJElNFglJUpNFQpLUZJGQJDVZJCRJTV4nIUnC6ySW\nwusk+ud6ncTqxSbF++bMkjuPcYuea4j5p/E6CUlSTxYJSVKTRUKS1GSRkCQ1WSQkSU0WCUlSk0VC\nktTkxXSSJNbVxXRJLgJeCXyjC72lqq7tjr0Z+HXgAeC1VXV9F38acDlwBHBNVb2u/QheTLfYebyY\nztik2KR435xZcucxbtFzDTH/NOvrYroC3l1Vp3U/ewvEFuAcYAuwFXh/kr2V7QPA+VV1KnBqkq1D\nLFySNpIh9yQe9rYGOBv4SFXdV1W7gNuBM5KcABxVVTu6vA8BL1jOMiVp4xqySFyY5PNJLktydBc7\nEdg9lrMbOGmN+J4uLklaoIXtSSTZDhy/xqG3MmodvaO7/07gXcD583v0T4/dPgXYPL+pJWkl7AR2\nTc1aWJGoqp8/kLwklwKf6O7uATaNHX4Co3cQe7rb4/E97VmH3PyRpIPBZvb9BXodbVx3ewx7vRC4\nubt9NfDiJIcn2QycCuyoqjuBe5Kc0W1kvxT4+FIXLUkb0FDfJ3FJkqcyOstpJ/BqgKq6Jck24Bbg\nfuCCeuhCjgsYnQL7aEanwF639FVL0gYzSJGoqpdNOHYxcPEa8X8FfnyR65Ik7cuP5Line truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x1b0d3a58>"
|
||||
"<matplotlib.figure.Figure at 0x1577eba8>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -119,7 +119,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"execution_count": 6,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -134,7 +134,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -142,18 +142,18 @@
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[<matplotlib.lines.Line2D at 0x15a0fda0>]"
|
||||
"[<matplotlib.lines.Line2D at 0x15be3940>]"
|
||||
]
|
||||
},
|
||||
"execution_count": 11,
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAVIAAAFRCAYAAAAmQSVBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHAlJREFUeJzt3X2sHOd13/HfuW+kwkr30o1Fy3oxRYVMLCSAjFQvjhyY\njnlV9gKxxCKJYySxk6qBAcEvQJNCdqwiFzWg1nUtp43hIK5tWXETMYoLKkxoWqRSNkjLlozaSFZB\ny6QKXtFkJNFUSMoiI9630z92Lu+Qmp2d4ZmZfeH3Ayy0c57zPM/cxepwZ57ZWXN3AQAu3VC3dwAA\n+h2FFACCKKQAEEQhBYAgCikABFFIASCIQoq+Zma/amZ/ldr+gZmt7d4e4XJEIUXPM7N3mdleMztl\nZq+Y2X83s3+UlevuV7r7TMXzf8TMnjKz183s4Yvabk7a/i7Zv/9hZu+qcn70vpFu7wCQx8yukvTn\nkj4s6TFJKyT9tKRzDe7GMUmflvSPJV2R0fbzkmaS7Y9I+oaktzS1c+g+PpGi122Q5O7+x97yurvv\ndvdns5LNbNHM1iXPrzCzz5nZTPJp8a/MbGXSdkfyKfekmT1tZu9utwPuvs3d/1TSKxltp939sLe+\nIjgsaVHSixX83egjfCJFr/uupAUz+5qkrZL2ufvJgn3/vaS3S3qnpJcl3SZp0cyuVetT7i+7+7fM\nbJOk/2JmP+buJ3LGs7YNZqckrZL0t5J+puD+YUDwiRQ9zd1/IOldklzSf5J03Mz+1MyuzutnZkOS\nfk3Sx939RXdfdPf/5e6zkn5Z0jfd/VvJHE9KekrSVKfdydnPCUnjahX7PzGztkUXg4dCip7n7s+5\n+6+5+/WSflzSWyX9ToduPyxppaT/l9H2Nkk/nxzWnzSzk5LuVOfzmrnF0d3PSvqEWqcjfqLDWBgg\nFFL0FXf/rqRH1CqoeU5Iel3Sj2S0HZH0dXdfnXpc6e7/rtP0BXZxWK3/r84WyMWAoJCip5nZj5rZ\nv0jOa8rMrpf0AUn/M6+fuy9K+qqkh8zsGjMbNrN3mtmYpP8s6WfN7K4kvtLMNi7NkbEPw8ki1Yik\nYTNbYWbDSdsmM7slyblK0kOSvuvuz1f1GqD3UUjR634g6XZJ+8zsNbUK6Lcl/UbS7rrwk2L6+W9K\nelbSX6u14v5vJA25+1FJd0v6LUnH1fqE+htq///Dv1LrE+b9ap1f/XtJn0raJiQ9KumUWgtjb5b0\n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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x15c45550>"
|
||||
"<matplotlib.figure.Figure at 0x155f4a20>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -169,7 +169,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 22,
|
||||
"execution_count": 8,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -190,7 +190,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"execution_count": 9,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -203,7 +203,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"execution_count": 10,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -218,7 +218,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"execution_count": 11,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -230,7 +230,7 @@
|
||||
"traceback": [
|
||||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[1;31mImportError\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[1;32m<ipython-input-10-d6799536a06f>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0mpymatsolver\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mMumpsSolver\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
|
||||
"\u001b[1;32m<ipython-input-11-d6799536a06f>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0mpymatsolver\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mMumpsSolver\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
|
||||
"\u001b[1;31mImportError\u001b[0m: No module named pymatsolver"
|
||||
]
|
||||
}
|
||||
@@ -241,7 +241,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 18,
|
||||
"execution_count": 12,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -254,20 +254,18 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
"execution_count": 13,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"441"
|
||||
]
|
||||
},
|
||||
"execution_count": 19,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
"ename": "IndentationError",
|
||||
"evalue": "expected an indented block (<ipython-input-13-ff092c0e869a>, line 3)",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;36m File \u001b[1;32m\"<ipython-input-13-ff092c0e869a>\"\u001b[1;36m, line \u001b[1;32m3\u001b[0m\n\u001b[1;33m \u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mIndentationError\u001b[0m\u001b[1;31m:\u001b[0m expected an indented block\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
@@ -528,7 +526,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython2",
|
||||
"version": "2.7.10"
|
||||
"version": "2.7.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
@@ -0,0 +1,441 @@
|
||||
{
|
||||
"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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 truncated
|
||||
"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": "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 truncated
|
||||
"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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 truncated
|
||||
"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
|
||||
}
|
||||
@@ -424,7 +424,7 @@ def gen_DCIPsurvey(endl, mesh, stype, a, b, n):
|
||||
Input:
|
||||
:param endl -> input endpoints [x1, y1, z1, x2, y2, z2]
|
||||
:object mesh -> SimPEG mesh object
|
||||
:switch stype -> "dpdp" (dipole-dipole) | "pdp" (pole-dipole)
|
||||
:switch stype -> "dpdp" (dipole-dipole) | "pdp" (pole-dipole) | 'gradient'
|
||||
: param a, n -> pole seperation, number of rx dipoles per tx
|
||||
|
||||
Output:
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
import os
|
||||
from SimPEG import np, sp, Utils, Mesh, mkvc
|
||||
from SimPEG import *
|
||||
import simpegDCIP as DC
|
||||
import pylab as plt
|
||||
#from ipywidgets import interact, IntSlider
|
||||
from matplotlib import animation
|
||||
from JSAnimation import HTMLWriter
|
||||
import time
|
||||
import re
|
||||
from readUBC_DC2DMesh import readUBC_DC2DMesh
|
||||
from readUBC_DC2DModel import readUBC_DC2DModel
|
||||
from readUBC_DC2DLoc import readUBC_DC2DLoc
|
||||
from convertObs_DC3D_to_2D import convertObs_DC3D_to_2D
|
||||
from readUBC_DC3Dobs import readUBC_DC3Dobs
|
||||
#from readUBC_DC2DMesh import readUBC_DC2DMesh
|
||||
#from readUBC_DC2DModel import readUBC_DC2DModel
|
||||
#from readUBC_DC2DLoc import readUBC_DC2DLoc
|
||||
#from convertObs_DC3D_to_2D import convertObs_DC3D_to_2D
|
||||
#from readUBC_DC3Dobs import readUBC_DC3Dobs
|
||||
|
||||
#%%
|
||||
home_dir = 'C:\\Users\\dominiquef.MIRAGEOSCIENCE\\ownCloud\\Research\\Modelling\\Synthetic\\Two_Sphere'
|
||||
@@ -25,20 +24,20 @@ dsep = '\\'
|
||||
slvr = 'BiCGStab' #'LU'
|
||||
|
||||
# Preconditioner
|
||||
pcdr = 'Jacobi'#'Gauss-Seidel'#
|
||||
pcdr = 'Jacobi' #'Gauss-Seidel'#
|
||||
|
||||
# Number of padding cells to remove from plotting
|
||||
padc = 15
|
||||
|
||||
# Load UBC mesh 2D
|
||||
mesh = readUBC_DC2DMesh(home_dir + dsep + msh_file)
|
||||
mesh = DC.readUBC_DC2DMesh(home_dir + dsep + msh_file)
|
||||
|
||||
# Load model
|
||||
model = readUBC_DC2DModel(home_dir + dsep + mod_file)
|
||||
model = DC.readUBC_DC2DModel(home_dir + dsep + mod_file)
|
||||
|
||||
# load obs file
|
||||
[Tx,Rx,d,wd] = readUBC_DC3Dobs(home_dir + dsep + obs_file)
|
||||
[Tx, Rx] = convertObs_DC3D_to_2D(Tx,Rx)
|
||||
[Tx,Rx,d,wd] = DC.readUBC_DC3Dobs(home_dir + dsep + obs_file)
|
||||
[Tx, Rx] = DC.convertObs_DC3D_to_2D(Tx,Rx)
|
||||
#%% Create system
|
||||
#Set boundary conditions
|
||||
mesh.setCellGradBC('neumann')
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
|
||||
#%%
|
||||
from SimPEG import np, Utils, Mesh, mkvc, sp
|
||||
from SimPEG import *
|
||||
import simpegDCIP as DC
|
||||
import pylab as plt
|
||||
from pylab import get_current_fig_manager
|
||||
@@ -28,13 +28,16 @@ from scipy.interpolate import griddata
|
||||
import time
|
||||
import re
|
||||
import numpy.matlib as npm
|
||||
from readUBC_DC3Dobs import readUBC_DC3Dobs
|
||||
from readUBC_DC2DModel import readUBC_DC2DModel
|
||||
from writeUBC_DCobs import writeUBC_DCobs
|
||||
import scipy.interpolate as interpolation
|
||||
from plot_pseudoSection import plot_pseudoSection
|
||||
from gen_DCIPsurvey import gen_DCIPsurvey
|
||||
from convertObs_DC3D_to_2D import convertObs_DC3D_to_2D
|
||||
#==============================================================================
|
||||
# from readUBC_DC3Dobs import readUBC_DC3Dobs
|
||||
# from readUBC_DC2DModel import readUBC_DC2DModel
|
||||
# from writeUBC_DCobs import writeUBC_DCobs
|
||||
|
||||
# from plot_pseudoSection import plot_pseudoSection
|
||||
# from gen_DCIPsurvey import gen_DCIPsurvey
|
||||
# from convertObs_DC3D_to_2D import convertObs_DC3D_to_2D
|
||||
#==============================================================================
|
||||
from matplotlib.colors import LogNorm
|
||||
import os
|
||||
|
||||
@@ -43,7 +46,7 @@ dsep = '\\'
|
||||
#from scipy.linalg import solve_banded
|
||||
|
||||
# Load UBC mesh 3D
|
||||
mesh = Utils.meshutils.readUBCTensorMesh(home_dir + '\Mesh_5m.msh')
|
||||
mesh = Mesh.TensorMesh.readUBC(home_dir + '\Mesh_5m.msh')
|
||||
#mesh = Utils.meshutils.readUBCTensorMesh(home_dir + '\MtIsa_20m.msh')
|
||||
#mesh = Utils.meshutils.readUBCTensorMesh(home_dir + '\Mesh_50m.msh')
|
||||
|
||||
@@ -51,7 +54,7 @@ mesh = Utils.meshutils.readUBCTensorMesh(home_dir + '\Mesh_5m.msh')
|
||||
#model = Utils.meshutils.readUBCTensorModel(home_dir + '\MtIsa_3D.con',mesh)
|
||||
#model = Utils.meshutils.readUBCTensorModel(home_dir + '\Synthetic.con',mesh)
|
||||
#model = Utils.meshutils.readUBCTensorModel(home_dir + '\Lalor_model_50m.con',mesh)
|
||||
model = Utils.meshutils.readUBCTensorModel(home_dir + '\TwoSpheres.con',mesh)
|
||||
model = Mesh.TensorMesh.readModelUBC(mesh,home_dir + '\TwoSpheres.con')
|
||||
|
||||
#model = model**0 * 1e-2
|
||||
# Specify survey type
|
||||
@@ -66,7 +69,7 @@ n = 20
|
||||
slvr = 'BiCGStab' #'LU'
|
||||
|
||||
# Preconditioner
|
||||
pcdr = 'Jacobi'#'Gauss-Seidel'#
|
||||
pcdr = 'Jacobi'#
|
||||
|
||||
# Inversion parameter
|
||||
pct = 0.01
|
||||
@@ -99,9 +102,6 @@ if re.match(slvr,'BiCGStab'):
|
||||
dA = A.diagonal()
|
||||
P = sp.spdiags(1/dA,0,A.shape[0],A.shape[0])
|
||||
|
||||
# Create Gauss-Seidel Preconditioner
|
||||
elif re.match(pcdr,'Gauss-Seidel'):
|
||||
LD = sp.tril(A,k=0)
|
||||
#LDinv = sp.linalg.splu(LD)
|
||||
|
||||
elif re.match(slvr,'LU'):
|
||||
@@ -116,8 +116,8 @@ top = int(mesh.nCz)-1
|
||||
plt.figure()
|
||||
ax_prim = plt.subplot(1,1,1)
|
||||
mesh.plotSlice(model, ind=top, normal='Z', grid=False, pcolorOpts={'alpha':0.5}, ax =ax_prim)
|
||||
plt.xlim([423000,424000])
|
||||
plt.ylim([546200,547000])
|
||||
plt.xlim([423200,423750])
|
||||
plt.ylim([546350,546650])
|
||||
plt.gca().set_aspect('equal', adjustable='box')
|
||||
|
||||
plt.show()
|
||||
@@ -153,7 +153,7 @@ var = np.c_[np.asarray(gin),np.ones(2).T*nz[-1]]
|
||||
indx = Utils.closestPoints(mesh, var )
|
||||
endl = np.c_[mesh.gridCC[indx,0],mesh.gridCC[indx,1],np.ones(2).T*nz[-1]]
|
||||
|
||||
[Tx, Rx] = gen_DCIPsurvey(endl, mesh, stype, a, b, n)
|
||||
[Tx, Rx] = DC.gen_DCIPsurvey(endl, mesh, stype, a, b, n)
|
||||
|
||||
dl_len = np.sqrt( np.sum((endl[0,:] - endl[1,:])**2) )
|
||||
dl_x = ( Tx[-1][0,1] - Tx[0][0,0] ) / dl_len
|
||||
@@ -206,10 +206,6 @@ for ii in range(len(Tx)):
|
||||
# Iterative Solve
|
||||
Ainvb = sp.linalg.bicgstab(P*A,P*RHS, tol=1e-5)
|
||||
|
||||
# Create Gauss-Seidel Preconditioner
|
||||
elif re.match(pcdr,'Gauss-Seidel'):
|
||||
LD = sp.tril(A,k=0)
|
||||
|
||||
|
||||
phi = mkvc(Ainvb[0])
|
||||
|
||||
@@ -233,17 +229,17 @@ for ii in range(len(Tx)):
|
||||
if not re.match(stype,'gradient'):
|
||||
|
||||
#%% Write data file in UBC-DCIP3D format
|
||||
writeUBC_DCobs(home_dir+'\FWR_data3D.dat',Tx,Rx,data,unct,'3D')
|
||||
DC.writeUBC_DCobs(home_dir+'\FWR_data3D.dat',Tx,Rx,data,unct,'3D')
|
||||
|
||||
|
||||
#%% Load 3D data
|
||||
[Tx, Rx, data, wd] = readUBC_DC3Dobs(home_dir + '\FWR_data3D.dat')
|
||||
[Tx, Rx, data, wd] = DC.readUBC_DC3Dobs(home_dir + '\FWR_data3D.dat')
|
||||
|
||||
|
||||
#%% Convert 3D obs to 2D and write to file
|
||||
[Tx2d, Rx2d] = convertObs_DC3D_to_2D(Tx,Rx)
|
||||
[Tx2d, Rx2d] = DC.convertObs_DC3D_to_2D(Tx,Rx)
|
||||
|
||||
writeUBC_DCobs(home_dir+'\FWR_3D_2_2D.dat',Tx2d,Rx2d,data,unct,'2D')
|
||||
DC.writeUBC_DCobs(home_dir+'\FWR_3D_2_2D.dat',Tx2d,Rx2d,data,unct,'2D')
|
||||
|
||||
#%% Create a 2D mesh along axis of Tx end points and keep z-discretization
|
||||
dx = np.min( [ np.min(mesh.hx), np.min(mesh.hy) ])
|
||||
@@ -315,7 +311,7 @@ if not re.match(stype,'gradient'):
|
||||
axs.add_artist(circle1)
|
||||
axs.add_artist(circle2)
|
||||
|
||||
plot_pseudoSection(Tx2d,Rx2d,data,nz[-1],stype)
|
||||
DC.plot_pseudoSection(Tx2d,Rx2d,data,nz[-1],stype)
|
||||
plt.show()
|
||||
|
||||
#%% Run two inversions with different reference models and compute a DOI
|
||||
@@ -355,7 +351,7 @@ if not re.match(stype,'gradient'):
|
||||
fid.close()
|
||||
|
||||
# Export data file
|
||||
writeUBC_DCobs(inv_dir + dsep + obsfile2d,Tx2d,Rx2d,data,unct,'2D')
|
||||
DC.writeUBC_DCobs(inv_dir + dsep + obsfile2d,Tx2d,Rx2d,data,unct,'2D')
|
||||
|
||||
# Write input file
|
||||
fid = open(inv_dir + dsep + inp_file,'w')
|
||||
@@ -377,7 +373,7 @@ if not re.match(stype,'gradient'):
|
||||
|
||||
|
||||
#Load model
|
||||
minv = readUBC_DC2DModel(inv_dir + dsep + 'dcinv2d.con')
|
||||
minv = DC.readUBC_DC2DModel(inv_dir + dsep + 'dcinv2d.con')
|
||||
|
||||
axs = plt.subplot(2,1,jj+1)
|
||||
|
||||
|
||||
Reference in new issue
Block a user