Total field approach

This commit is contained in:
seogi committed 2014-02-20 17:29:39 -08:00
1 parent 37bca3b3e9
commit 3bc66134aa
3 files changed
+1034 -164

No files matched your search

+250 -106
View File
@@ -26,7 +26,7 @@
]
}
],
"prompt_number": 13
"prompt_number": 2
},
{
"cell_type": "markdown",
@@ -76,7 +76,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
"prompt_number": 3
},
{
"cell_type": "code",
@@ -89,7 +89,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
"prompt_number": 4
},
{
"cell_type": "code",
@@ -108,10 +108,10 @@
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 16,
"prompt_number": 5,
"text": [
"[<matplotlib.lines.Line2D at 0x355bd10>,\n",
" <matplotlib.lines.Line2D at 0x3586810>]"
"[<matplotlib.lines.Line2D at 0x4663e10>,\n",
" <matplotlib.lines.Line2D at 0x4667050>]"
]
},
{
@@ -119,11 +119,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3506210>"
"<matplotlib.figure.Figure at 0x40a7c90>"
]
}
],
"prompt_number": 16
"prompt_number": 5
},
{
"cell_type": "markdown",
@@ -144,16 +144,13 @@
"qa = lambda x: -np.sin(x)\n",
"M.setCellGradBC('neumann')\n",
"G = M.cellGrad\n",
"e = np.ones(n)\n",
"e1 = np.zeros(n)\n",
"e1[1] = 1.\n",
"D = M.faceDiv\n",
"Mf = M.getFaceMass()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 17
"prompt_number": 6
},
{
"cell_type": "code",
@@ -164,12 +161,12 @@
"bc[0] = -1.\n",
"bc[n-1] = -1.\n",
"bc = bc/h\n",
"A = D*G"
"A = -D*D.T"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
"prompt_number": 7
},
{
"cell_type": "code",
@@ -182,7 +179,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 19
"prompt_number": 8
},
{
"cell_type": "code",
@@ -202,22 +199,22 @@
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 20,
"prompt_number": 9,
"text": [
"[<matplotlib.lines.Line2D at 0x4197b50>,\n",
" <matplotlib.lines.Line2D at 0x35a7c90>]"
"[<matplotlib.lines.Line2D at 0x4a75b90>,\n",
" <matplotlib.lines.Line2D at 0x48d6c90>]"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x18bd150>"
"<matplotlib.figure.Figure at 0x3389190>"
]
}
],
"prompt_number": 20
"prompt_number": 9
},
{
"cell_type": "markdown",
@@ -262,17 +259,9 @@
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"WARNING: pylab import has clobbered these variables: ['e']\n",
"`%pylab --no-import-all` prevents importing * from pylab and numpy\n"
]
}
],
"prompt_number": 21
"prompt_number": 10
},
{
"cell_type": "markdown",
@@ -287,8 +276,10 @@
"cell_type": "code",
"collapsed": false,
"input": [
"n = 128\n",
"hx = np.ones(n)*np.pi/n\n",
"hxind = ((5,25,1.3),(20, 25),(5,25,1.3))\n",
"hx = Utils.meshTensors(hxind)\n",
"hx = hx/sum(hx)*np.pi\n",
"# hx = np.ones(n)*np.pi/n\n",
"M3 = Mesh.TensorMesh([hx, hx, hx])\n",
"M3.setCellGradBC('neumann')\n",
"G = M3.cellGrad\n",
@@ -299,7 +290,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 22
"prompt_number": 11
},
{
"cell_type": "code",
@@ -313,13 +304,13 @@
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 23,
"prompt_number": 12,
"text": [
"(6340608, 98304)"
"(83700, 5400)"
]
}
],
"prompt_number": 23
"prompt_number": 12
},
{
"cell_type": "markdown",
@@ -344,14 +335,14 @@
"output_type": "stream",
"stream": "stdout",
"text": [
"(2113536, 3)\n",
"(2113536, 3)\n",
"(2113536, 3)\n",
"6340608\n"
"(27900, 3)\n",
"(27900, 3)\n",
"(27900, 3)\n",
"83700\n"
]
}
],
"prompt_number": 24
"prompt_number": 13
},
{
"cell_type": "code",
@@ -363,7 +354,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 25
"prompt_number": 14
},
{
"cell_type": "code",
@@ -374,7 +365,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 26
"prompt_number": 15
},
{
"cell_type": "code",
@@ -389,13 +380,42 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3587990>"
"<matplotlib.figure.Figure at 0x44a4910>"
]
}
],
"prompt_number": 27
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"figsize(6,6)\n",
"M3.plotGrid()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"/usr/lib/pymodules/python2.7/matplotlib/lines.py:483: RuntimeWarning: invalid value encountered in greater_equal\n",
" return np.alltrue(x[1:]-x[0:-1]>=0)\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAAFdCAYAAACgiL63AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXeUFFUWh78KHSeBSJIkQVEyAiKCBMkIu2BABAmLImIG\nI4ZFRVHBgIiKoohiQFFwUWHJScGAEhZBkJxB0oTOFfaPZ3X3RGZgZmCgvnM4h+mp8Ka63q9u3XeD\nZJqmiY2NjY1NsSCf6QHY2NjYnE/YomtjY2NTjNiia2NjY1OM2KJrY2NjU4zYomtjY2NTjNiia2Nj\nY1OM2KJrY2NjU4zYomtjY2NTjNiia2NjY1OM2KJrY2NjU4zYomtjY2NTjNiia2NjY1OM2KJrY2Nj\nU4zYomtjY2NTjNiia2NjY1OM2KJrY2NjU4zYomtjY2NTjNiia2NjY1OM2KJrY2NjU4zYomtjY2NT\njNiia2NjY1OM2KJrY2NjU4zYomtjY2NTjNiia2NjY1OM2KJrY2NjU4zYomtjY2NTjNiia2NjY1OM\nqGd6ADYlG9M0CQQCyLKMw+FAlmUkSTrTw7KxOWuxRdfmlDFNk3A4jK7rBINBZFnGNE0URcHlcqGq\nqi3CNjZZsEXX5pTQdZ309HQkSUJVVVRVRZIkgsEguq5jGAZApt/bImxjY4uuTQExTRNN09A0DcMw\nkGU5KrKWoEqShKIo0e0jkQiRSASwRdjGxhZdm3xjGAaRSATDMKJCGYlE0HUdEAIrSRKyLEe3iRdg\na5ucRNjhcKAoii3CNuc8kmma5pkehM3ZjWma6LqeSShN0yQtLQ0Ar9eLaZqYpkkoFIr+H0BRlOg/\nS4SzHttyRVjHdjgcqKpqi7DNOYktujZ5Ylmmuq5HRTMSiZCRkRGNWHA6ndHfh0IhJEnC6XRiGAa6\nrkf/Qf5F2LKabRG2OdewRdcmVwzDIBwORwUQIBAIEAqFSExMJBKJRAVW07RsohuPZf3mJcKynD1s\n3BLhYDCIy+WKCn384p0twjYlCduna5ONeHeC5aPVdT1q3aakpCDLMpqmkd9ntiWOlmhmFeFwOAxk\nF2HLJ2yFogGEw+GouMuynMknbIuwzdmOLbo2mbBib+MXwkKhEH6/H4/Hg8vlylPULH/vySioCMfv\nFx8ZAUKEre1tEbY527FF1yaKZd3GuxMyMjLQNI2kpCRUtehul5xE2PIJa5oGgN/vz9EdURARzsmF\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4a976d0>"
]
}
],
"prompt_number": 17
},
{
"cell_type": "markdown",
@@ -406,11 +426,11 @@
"$$\\nabla\\cdot\\vec{B} = q$$\n",
"$$\\nabla\\phi = \\frac{1}{\\mu}\\vec{B}$$\n",
"\n",
"$$\\phi_{true} = sin(x)+sin(y)+sin(z)$$\n",
"$$\\phi_{true} = sin(x)-cos(y)-cos(z)$$\n",
"\n",
"$$\\vec{B}_{true} = cos(x)\\hat{i}+cos(y)\\hat{j}+cos(z)\\hat{k}$$\n",
"$$\\vec{B}_{true} = cos(x)\\hat{i}+sin(y)\\hat{j}+sin(z)\\hat{k}$$\n",
"\n",
"$$\\vec{q}_{true} = -sin(x)-sin(y)-sin(z)$$\n",
"$$\\vec{q}_{true} = -sin(x)+cos(y)+cos(z)$$\n",
"\n",
"In discrete form \n",
"\n",
@@ -445,29 +465,66 @@
"collapsed": false,
"input": [
"def phitrue(x,y,z):\n",
" phi = np.sin(x)+np.sin(y)+np.sin(z)\n",
" phi = np.sin(x)-np.cos(y)+np.cos(z)\n",
" return phi\n",
"\n",
"def Btrue(x,y,z):\n",
" Bx = np.cos(x)\n",
" By = np.cos(y)\n",
" Bz = np.cos(z)\n",
" By = np.sin(y)\n",
" Bz = np.sin(z)\n",
" B = np.r_[Bx, By, Bz]\n",
" return B\n",
"def qtrue(x,y,z):\n",
" q = -np.sin(x)-np.sin(y)-np.sin(z)\n",
" q = -np.sin(x)+np.cos(y)+np.cos(z)\n",
" return q"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 28
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# def phitrue(x,y,z):\n",
"# phi = np.sin(x)+np.sin(y)+np.sin(z)\n",
"# return phi\n",
"\n",
"# def Btrue(x,y,z):\n",
"# Bx = np.cos(x)\n",
"# By = np.cos(y)\n",
"# Bz = np.cos(z)\n",
"# B = np.r_[Bx, By, Bz]\n",
"# return B\n",
"# def qtrue(x,y,z):\n",
"# q = -np.sin(x)-np.sin(y)-np.sin(z)\n",
"# return q"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Mc = Utils.sdiag(M3.vol) \n",
"Mfmu = Utils.sdiag(1/M3.getFaceMass().diagonal())\n",
"# A = Mc*D*Mfmu*G*Mc\n",
"\n",
"A = D*G\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 20
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A = D*G\n",
"qa = qtrue(M3.gridCC[:,0], M3.gridCC[:,1], M3.gridCC[:,2])\n",
"Ba = Btrue(M3.gridFx[:,0], M3.gridFy[:,1], M3.gridFz[:,2])\n",
"Phia = phitrue(M3.gridCC[:,0], M3.gridCC[:,1], M3.gridCC[:,2])"
@@ -475,7 +532,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 29
"prompt_number": 21
},
{
"cell_type": "code",
@@ -487,7 +544,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 30
"prompt_number": 22
},
{
"cell_type": "code",
@@ -500,7 +557,24 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 31
"prompt_number": 23
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Bbcx[indxd] = 1\n",
"# Bbcx[indxu] = -1\n",
"# Bbcy[indyd] = 1\n",
"# Bbcy[indyu] = -1\n",
"# Bbcz[indzd] = 1\n",
"# Bbcz[indzu] = -1\n",
"# Bbc = np.r_[Bbcx, Bbcy, Bbcz]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 24
},
{
"cell_type": "code",
@@ -508,16 +582,16 @@
"input": [
"Bbcx[indxd] = 1\n",
"Bbcx[indxu] = -1\n",
"Bbcy[indyd] = 1\n",
"Bbcy[indyu] = -1\n",
"Bbcz[indzd] = 1\n",
"Bbcz[indzu] = -1\n",
"Bbcy[indyd] = 0\n",
"Bbcy[indyu] = 0\n",
"Bbcz[indzd] = 0\n",
"Bbcz[indzu] = 0\n",
"Bbc = np.r_[Bbcx, Bbcy, Bbcz]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 32
"prompt_number": 25
},
{
"cell_type": "code",
@@ -532,24 +606,24 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAA5oAAAEHCAYAAADPkjk/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVPX+x/HXDJvgLim4glldF1BxLc3AUjOvmgu5VZpL\naVmWZpapidcyq5+P261ri/1SWzQzf+aWeq+Vu2blvmspCgouiAgBKjC/PwSMREX4HmaA95PHPGxm\nzhzenIY385k5c8bmcDgciIiIiIiIiBhid3YAERERERERKV40aIqIiIiIiIhRGjRFRERERETEKA2a\nIiIiIiIiYpQGTRERERERETFKg6aIiIiIiIgYpUFTjAkMDMTHx4eyZctStmxZypUrR2xsrLNjiYgY\np74TkZJAXScFoUFTjLHZbCxbtozExEQSExO5cOEC/v7+zo4lImKc+k5ESgJ1nRSEBk2x1Ndff83t\nt99OYmIiACtWrKBq1arExcU5OZmIiDlBQUEsW7Ys+/zly5e57bbb2LlzpxNTiYiY9+yzz2a/wlm2\nbFk8PDyYNGmSs2OJC9KgKUY5HI4c53v37k2rVq0YMWIEcXFxDBkyhE8//RRfX18nJRQRMePPfTdg\nwAC+/PLL7PPLly+nevXqNGrUyBnRRESM+etju3//+9/Zr3CuX7+eihUr0q1bNyelE1dmc/z13iOS\nT4GBgcTFxeHu7g5A27ZtWbhwIQkJCTRs2JDy5cvTunVrPvzwQycnFREpmL/2XYsWLdi0aRMxMTGU\nKVOG8PBw7r77bkaPHu3kpCIi+Xe9x3YAZ86coXnz5rz99tv06tXLmTHFRbk7O4AUHzabjcWLF3P/\n/ffnuLx8+fKEh4fzz3/+M7ucRESKstz6rmPHjixYsIBu3bqxcuVK3n//fScmFBEpuOs9trt8+TLh\n4eE89thjGjLlurTrrFhux44dzJo1i379+vHcc885O46IiCWydp/95ptvaNWqFVWrVnV2JBERSzz3\n3HNUqFCB119/3dlRxIVp0BRLpaam8thjj/Hmm28yc+ZMTpw4oV1nRaRY6t69O9u2beO9996jf//+\nzo4jImKJjz/+mHXr1uV4X7pIbjRoiqXGjh1LQEAAQ4cOxdPTky+//JLx48fz+++/OzuaiIhRpUqV\nokePHkRGRtKjRw9nxxERscS8efM4evQo1apVyz7y7NSpU50dS1yQDgYkIiJiyOTJkzl8+DCff/65\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x454bfd0>"
"<matplotlib.figure.Figure at 0x3f27a10>"
]
}
],
"prompt_number": 33
"prompt_number": 26
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"m1 = sp.linalg.interface.aslinearoperator(Utils.sdiag(-1/A.diagonal()))"
"# m1 = sp.linalg.interface.aslinearoperator(Utils.sdiag(-1/A.diagonal()))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 34
"prompt_number": 27
},
{
"cell_type": "markdown",
@@ -562,11 +636,58 @@
"cell_type": "code",
"collapsed": false,
"input": [
"%%time\n",
"# %%time\n",
"# rhs = Mc*qa-Mc*Dbc*Bbc[ind]\n",
"rhs = qa-Dbc*Bbc[ind]\n",
"# Try to use Jacobi preconditioner, but does not work well...\n",
"# x, info = sp.linalg.minres(A, rhs, M = m1,tol=1e-6, maxiter = 1000, show=True)\n",
"x, info = sp.linalg.minres(A, rhs, tol=1e-6, maxiter = 1000, show=False)"
"# x, info = sp.linalg.minres(A, rhs, M = m1,tol=1e-6, maxiter = 2000, show=False)\n",
"# x, info = sp.linalg.minres(A, rhs, tol=1e-6, maxiter = 1000)\n",
"# x, info = sp.linalg.minres(A, rhs, tol=1e-6, maxiter = 2000, show=False)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 28
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# rhs = Mc*qa-Mc*Dbc*Bbc[ind]\n",
"rhs = qa-Dbc*Bbc[ind]\n",
"\n",
"import petsc4py\n",
"import sys\n",
"petsc4py.init(sys.argv)\n",
"from petsc4py import PETSc\n",
"import PETScIO as IO\n",
"Apetsc = PETSc.Mat().createAIJ(size=A.shape,csr=(A.indptr, A.indices, A.data))\n",
"bpetsc = IO.arrayToVec(rhs)\n",
"xpetsc = IO.arrayToVec(0*rhs)\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 29
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%time\n",
"ksp = PETSc.KSP().create()\n",
"pc = PETSc.PC().create()\n",
"ksp.setOperators(Apetsc)\n",
"ksp.setType(ksp.Type.GMRES)\n",
"pc = ksp.getPC()\n",
"pc.setType(pc.Type.SOR)\n",
"OptDB = PETSc.Options()\n",
"OptDB[\"ksp_rtol\"] = 1e-8\n",
"OptDB[\"pc_factor_levels\"] = 1\n",
"ksp.setFromOptions()\n",
"ksp.view()\n",
"ksp.solve(bpetsc, xpetsc)\n",
"x = IO.vecToArray(xpetsc)"
],
"language": "python",
"metadata": {},
@@ -575,12 +696,12 @@
"output_type": "stream",
"stream": "stdout",
"text": [
"CPU times: user 7.73 s, sys: 39.7 ms, total: 7.77 s\n",
"Wall time: 7.78 s\n"
"CPU times: user 11.1 s, sys: 409 \u00b5s, total: 11.1 s\n",
"Wall time: 11.1 s\n"
]
}
],
"prompt_number": 36
"prompt_number": 30
},
{
"cell_type": "markdown",
@@ -604,12 +725,12 @@
"output_type": "stream",
"stream": "stdout",
"text": [
"4.0214495834e-05\n",
"0\n"
"0.000208241391358\n",
"<function info at 0x2c3fd70>\n"
]
}
],
"prompt_number": 37
"prompt_number": 31
},
{
"cell_type": "code",
@@ -624,11 +745,11 @@
"output_type": "stream",
"stream": "stdout",
"text": [
"(2097152, 2097152) (2097152,) (2097152,) (2097152, 98304) (98304,)\n"
"(27000, 27000) (27000,) (27000,) (27000, 5400) (5400,)\n"
]
}
],
"prompt_number": 38
"prompt_number": 32
},
{
"cell_type": "code",
@@ -644,21 +765,21 @@
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 39,
"prompt_number": 33,
"text": [
"<matplotlib.collections.QuadMesh at 0x557a610>"
"<matplotlib.collections.QuadMesh at 0x3f27810>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAA5oAAAEHCAYAAADPkjk/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXt4Y1d97/3RxXtLWxdvWxrL1ng8nksmyeQewrWBTEoo\nvCkNhxJIoVDacu/l9KVQ3rdAeybnKSWcttCWW5tSGk7DLUCBhFtDIdxCaIGGQpoSMsk4mYk98khj\n2ZIlS6MtnT/2WnuvLcuT2cEyOcn6Po+emcRj6avf+q3fZ62111470uv1emhpaWlpaWlpaWlpaWlp\nbZKiP2sDWlpaWlpaWlpaWlpaWo8t6YmmlpaWlpaWlpaWlpaW1qZKTzS1tLS0tLS0tLS0tLS0NlV6\noqmlpaWlpaWlpaWlpaW1qdITTS0tLS0tLS0tLS0tLa1NlZ5oamlpaWlpaWlpaWlpaW2q9ERTS2sL\n9ZGPfIRLLrmETCZDsVjkyiuv5PbbbwfgJz/5CS984QvZtm0btm1zwQUX8K53vYtut/szdq2lpaWl\npfXYlWazltZwpCeaWlpbpHe+8528/vWv561vfSuLi4scOXKE3/7t3+bmm2/mvvvu48lPfjI7d+7k\nrrvuolqt8olPfILvf//71Gq1n7V1LS0tLS2tx6Q0m7W0hqdIr9fr/axNaGk91rW8vMz09DQ33HAD\nL3jBC9b9/KUvfSnLy8vccsstPwN3WlpaWlpajz9pNmtpDVf6iqaW1hbojjvuYG1tjec///kDf/6V\nr3yFq6++eotdaWlpaWlpPX6l2aylNVzpiaaW1haoUqmQz+eJRgd3uUqlwtTU1Ba70tLS0tLSevxK\ns1lLa7jSE00trS1QLpejXC5veHhALpdjfn5+i11paWlpaWk9fqXZrKU1XOmJppbWFuipT30qpmny\n6U9/euDPr7jiCj71qU9tsSstLS0tLa3HrzSbtbSGq9jBgwcP/qxNaGk91pVIJEgkErzlLW/hjDPO\nYGZmBoBbb72VD3zgA7zxjW/kj//4j6lUKpx//vmk02kOHTrE7/3e7/HMZz6TRCLxM/4GWlpaWlpa\njy1pNmtpDVf6iqaW1hbp93//93nnO9/Jn/zJnzAxMcHMzAzve9/7eP7zn8/u3bu54447mJub45xz\nzsG2ba6++mqe+MQnkslkftbWtbS0tLS0HpPSbNbSGp704020tLS0tLS0tLS0tLS0NlX6iqaWlpaW\n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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x456e3d0>"
"<matplotlib.figure.Figure at 0x4675b50>"
]
}
],
"prompt_number": 39
"prompt_number": 33
},
{
"cell_type": "code",
@@ -672,19 +793,22 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x357b0d0>"
"<matplotlib.figure.Figure at 0x466be10>"
]
}
],
"prompt_number": 40
"prompt_number": 34
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"M3.plotImage(G*x, imageType='F')"
"Bnum = G*x\n",
"# Bnum = G*x\n",
"\n",
"M3.plotImage(Bnum, imageType='F')"
],
"language": "python",
"metadata": {},
@@ -692,13 +816,33 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4193710>"
"<matplotlib.figure.Figure at 0x85fcf90>"
]
}
],
"prompt_number": 41
"prompt_number": 44
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print Mc.diagonal()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 0.01307576 0.01005828 0.00773714 ..., 0.00773714 0.01005828\n",
" 0.01307576]\n"
]
}
],
"prompt_number": 45
},
{
"cell_type": "markdown",
@@ -711,7 +855,6 @@
"cell_type": "code",
"collapsed": false,
"input": [
"Bnum = G*x\n",
"print np.linalg.norm(Ba[~ind]-Bnum[~ind])/np.linalg.norm(Ba[~ind])"
],
"language": "python",
@@ -721,16 +864,17 @@
"output_type": "stream",
"stream": "stdout",
"text": [
"6.64809418708e-06\n"
"0.00104365335183\n"
]
}
],
"prompt_number": 42
"prompt_number": 46
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"clf;\n",
"plot(Ba[~ind]); hold\n",
"plot(Bnum[~ind], 'r')"
],
@@ -740,21 +884,21 @@
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 43,
"prompt_number": 47,
"text": [
"[<matplotlib.lines.Line2D at 0x456da10>]"
"[<matplotlib.lines.Line2D at 0x6d16110>]"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAA7sAAAD9CAYAAAB9c2AaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXnYZUV1N/rb+wzv2AMNyNCNoILQKCCTOGKrMQZj0Dx6\nL2oG45AQZxO/aMyXQRMT49XcmwGTYBLNZxLnfBFMkOQjSYNIGIKo4ACIAt0NNHS/PbzzOWfvff+o\n4exaVWvXPu/b9OnTvX7P00+xz9mnVq1Va7/sX61Vq5KiKAoIBAKBQCAQCAQCgUBwGCEd9gAEAoFA\nIBAIBAKBQCA40BCyKxAIBAKBQCAQCASCww5CdgUCgUAgEAgEAoFAcNhByK5AIBAIBAKBQCAQCA47\nCNkVCAQCgUAgEAgEAsFhByG7AoFAIBAIBAKBQCA47LBqsvvGN74Rxx13HM466yz2nne+85047bTT\ncM455+COO+5YrUiBQCAQCAQCgUAgEAgqsWqy+4Y3vAHXXnst+/0111yDH/zgB7j33nvxiU98Am95\ny1tWK1IgEAgEAoFAIBAIBIJKrJrsPv/5z8dRRx3Ffn/11Vfj9a9/PQDgoosuwt69e7Fz587VihUI\nBAKBQCAQCAQCgYDF475nd8eOHTjppJPs9aZNm7B9+/bHW6xAIBAIBAKBQCAQCI5gNA+GkKIonOsk\nSbx7Qp8JBAKBQCAQCAQCgeDwAeWGjyce98juxo0bsW3bNnu9fft2bNy4MXhvIf+OyH+/cwiMQf6N\nxvxff+67UAD42s9/AgWAb19xPQoAO7/5EAoAC7sXUAB49M5HUAD41iduVvf/wl+jAPDvz/lNFABu\n3HQZCgDfHz8bBYBZTGERYygA3DN+FgoAN530f6EAsHXLb6MA8F/v/pz6/h+/hQLAnvt2owAw/9g8\nCgAPXv9DFABu+dC/oQDwH6/6MyXznHejAHDr0T+BAsCPmk+x+uxKj0EB4I51L1Dj3PxmFABuuPSj\nKAD89+9fiwLA9ut/gALA3M45FABmfqBkf+8L31b6vPuLSuaLf09dP/lnVb9rnqfkJEdbmfe1TkcB\n4LYnvEzpd+F7lOw3fRIFgLuuvNGx4eIuJfPhbygb33GF+v76n1Nz8J/PfK+yzwmvVDYdU/ZbRguz\nmFLjnDwXBYCvP+l1SuaP/S4KAG9+jrLxD/5J6bHvR0qv/Tv2K1tdp/S++bf+Wcl6xf+r2qe9Temw\n4SXKPo2TrH4PpyegAPDN9cqmNzztl1X76j9GAeAbH70OBYAdX/+R4zO7vv+Y0v/vv6Hs8dbPqPl7\n0YfU9SnKpndNXqjmH+vQQ4oCwA/bT1XjOf4nlX7Pfp+ah1/+OxQAvvO/blMyvqNtOqNkPnTrNhQA\nbv+j/1A2/ZkrlX7nqzn5r+NeoezTPsPadE+yXvn+9LPUuE59vfrNyz6ibPU/r1K2u+a7ypYP7kEB\nYO+D+1Rf//w9dd9vqPv+/aeUTa8//ReVz61/EQoA29K+Tbc1Tla22/BiZctzlP2/9porlE/88X8q\n29/2oPsc3rUTBYA7P3mr+t1blE2vu/gDKAC8ce3T1Pclmy6jhQLA3eY53KR85D8vVs/h19/+D8rP\nPneHehbuftSR+dCOHEVRVP6bvech3Pz+f8J//PiHcce6i7GjsUnZdM2zcctpr8P3P3cHHr59R7Qf\n+bfyf7/zO78z9DHIP5l/+TecfwcbjzvZvfTSS/HpT38aAHDzzTdj/fr1OO644x5vsQKB4DBEsWYN\nACCdngAAtKbaAIAkVZkhnfkuAKC3qNq8l6kWOnMkz3VHqk10myLHnsYxAICFcVWDIJtep+5ZMw0A\naE6Pq3ZSyTR/r7vzHXX/ck99kGW6VX03estalvo8LXL00AAA7GspmUuTSmY+vVbdu07p2ZoeU9dN\ndX/WyVz9uplWJ3f0M2NLjUzkmEk2AADmx1TbmVqvblqrZDbWTCqZa5Se0Nk2nTmt35Ir0+jn2bJk\n0/0NpdeisemUkpVOT6m2rZKLrE3zwtHP6GttysxfUuRYgPKJuZbSz9p0rZrHxrTSz8xj2lT/++su\nuD5TdIksI9vIQl+/mUTNn7Hp0ppj1b3UptpPDaxNtc8UPT1vZB5Dfrq/oWVNuD6Trply9GuMt1QX\nep56C1QmnUdle+MzDWSYhfL9ubaStTxlbKraRMts6fkzGVrUpnnPtWWSZ449yvrtS1XfC+NKT+Mz\n9jmc0s/h1JjTh7FpHUyfdgIu+oNX4oX/+ut4xt7rcey++/CtK76GfT//Tmy8/+tY/7pLcPz5G7H1\n/F/F9a/+s9r9CgQCgeDQw6rTmF/72tfi+uuvx65du3DSSSfhgx/8ILpd9T+4yy+/HC972ctwzTXX\n4NRTT8XU1BQ+9alPrXrQAoHgyETSVi/w6bh6uW5MuCTCEE/zsp0tqutiuatvUNeNnmqbuWpb6KKX\n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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2b211bd0>"
"<matplotlib.figure.Figure at 0x6d16190>"
]
}
],
"prompt_number": 43
"prompt_number": 47
},
{
"cell_type": "markdown",
@@ -776,11 +920,11 @@
"output_type": "stream",
"stream": "stdout",
"text": [
"0.963186495974\n"
"1.31230938236\n"
]
}
],
"prompt_number": 44
"prompt_number": 38
},
{
"cell_type": "code",
@@ -795,21 +939,21 @@
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 45,
"prompt_number": 39,
"text": [
"[<matplotlib.lines.Line2D at 0x196102d0>]"
"[<matplotlib.lines.Line2D at 0x6d23f10>]"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAA6sAAAD9CAYAAABa3eHyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXm8TVX/xz+XZAwpJKGkRCqkR/VTGepRSYOiASXNo6en\nUSNP0uCpxxDNhiKFpJJCIoUSjaZESebMV7jT2b8/9j337LPP3nutz9prb/ey3q+XlzOsfb737LOH\n9V3f7/fzzbIsy4LBYDAYDAaDwWAwGAzFiFL7+g8wGAwGg8FgMBgMBoPBjXFWDQaDwWAwGAwGg8FQ\n7DDOqsFgMBgMBoPBYDAYih3GWTUYDAaDwWAwGAwGQ7HDOKsGg8FgMBgMBoPBYCh2GGfVYDAYDAaD\nwWAwGAzFDi3OakFBAZo1a4aOHTvq+DiDwWAwGAwGg8FgMBzgaHFWBw0ahMaNGyMrK0vHxxkMBoPB\nYDAYDAaD4QAntLO6Zs0aTJkyBTfeeCMsy9LxNxkMBoPBYDAYDAaD4QAntLN6zz33YMCAAShVypS/\nGgwGg8FgMBgMBoNBDweF2Xjy5MmoUaMGmjVrhlmzZnmOManBBoPBYDAYDAaDwbB/E0WWbShnde7c\nufjwww8xZcoU7N27Fzt37sS1116LN998M22cSQ826KRPnz7o06fPvv4zDPsR5pgy6MQcTwbdmGPK\noBtzTBl0E1WAMlTubv/+/fHnn3/i999/xzvvvIO2bdtmOKoGg8FgMBgMBoPBEDuLFwO//bav/wpD\nCEJFVt2YlF+DwWAwGAwGg8FQLGjfHqhZE1i4cF//JQZFtKkinXPOOfjwww91fZzB4Evr1q339Z9g\n2M8wx5RBJ+Z4MujGHFMG3ezTY+rXX4ExY6K38+23wNq1wNKl0dsyREaWFXFBaVZWlqlZNRgMBoPB\nYDAYDMCNNwJvvAFE7R+ceirw3XdAhQrA339Ha8sQmc9n+s0YDAaDwWAwGAwHOhs2RG9jyRLbUY2a\nvDxg3Tr7cenS0dszRIZxVg0Gg8FgMBgMhgOZZcuAWrWit+PT6lI7zz2Xcr6Ns1qiMc6qwWAwGAwG\ng8FwIDN1avQ2Eglg7tzo7QDAihWpx8ZZLdGYmlWDwWAwGAwGg6E40q0bMHAgcPjh0dnIyQHKlbMf\nFxQApSKKZf3wA9CsWep5VP7B8uVAw4ap5zVqABs3RmPLUISpWTUYDAaDwWAwGA4kxoyx6zyjZO/e\n1OO8vOjsxNXicvr0eOwYYsE4qwaDwWAwGAwGgyzjx6enmUZFixb2//n50dqpWjX1OCpntaAAaNo0\nms92smcPMHRopm1DicU4qwaDwWAwGAwGgyxdugB9+kRvZ+FC+/84ay6jclb37Inmc90sWpTZV9U4\nqyUa46waDAaDwWAwGEo2ixcD8+dHb2fYMPv/7Oxo7Xz8cepxlM7WO++kP4/KWb300mg+14llAW+/\nnfm6cVZLNEZgyWAwGAwGg8FQsmneHPjlF+Dvv6O1k6y7vOwyYOLE6O0AwKefAu3bR28HANasAWrX\njt4OoF9gac8eoEKFzNcrVYp+ccFgBJYMBoPBYDAYDCWI/Hxg9ero7SxYAHz/PbB7d7R21q1LPY4y\nNTc3N/15VNHOn3/OfC0KW/366f9ML6IWojLsE4yzajAYDAaDwWDQz1tvAfXqRW+nf//obQBA9+6p\nx1E6qxddlP48KoGlk0/OfC0KZ/Wxx/R/phdJQSrDfoVxVg0Gg8FgMBgMesnLs9uuRE1uLrBqVfR2\nALt/Z5KoepECma1XonAg16/3fl23rXnz9H6e4YDDOKsGg8FgMBgMBwp5eUCrVvrrBd3MmwfMmBGt\nDQB48007BThqxoyx6zmTRBVZHTAg87UonNU2bbxf1x3FPfNMvZ/nR8+e8dgxxI5xVg0Gg8FgMBgO\nFHbtAubMib6ViJegThRs3RqPnfHj059H5ey/8ELma1E4q7/84v16IqHfVhyMGLGv/wJDRBhn1WAw\nGAwGg2Ff88cf8TgK1arZ/+/aFZ2NvXuBs8+O7vOT/Pkn8OCD0dtZvBj44IP016JohzJ5MrBhQ+br\nup3V3r3939N5DF57bfD7uhz+tWv1fI6hWGKcVYPBYDAYDIZ9zdFHAx9+GJ+9qER7gGgdYScrVsRj\nx+2oAtE4q6+/7v267kWMkSP939Np6623gt/X5azWr6/ncwzFEuOsGgwGg8FgMOxL5syx/3e2RomC\nV19NPY6qHQoAPPNMdJ+dJD8fuP/+6O1s2+bdekW3s7phg7dTDOh1IJcv947e6ra1cqV4jC5b7lY/\nbqKuzzZEinFWDQaDwWAwGLyYORNYtix6O61aRW8DAG65JfU4Smf1+eej++wkO3cCCxdGb+e776Kv\n7wXii3Y++mjw+7psde0qHqPD1hdfhP8MQ7HGOKsGg8FgMBgMXrRtC9x0U7Q2nFGfKHt37tiR/jwq\nZ3XWrGg+100c0VvLAj7/PB47O3f6v6/TWRWlf+uytXq1eIwOW61bh/8MQ7HGOKsGg8FgMBgMbiZN\nsv/ftClaO126pB5H6azWq5f+PCpn1aslShTCUV4tXnSzYwfQv3/0dhYuBJ5+2v99XftvyhTg/feD\nx+iwNW+efx9X3bYM+z3GWTUYDAaDwVBy+PJL4KWXordzww32/6UinipNmJB6XNIjq0uXer+u29aP\nP+r9PD/27o3HTnZ28Pu6nDqZ/aajFlc26h32e02eHG57Q4nAOKsGg8FgMBhKDv/5D3D77dHa2LEj\n1b8zSgdy3rz051EJwXTvnvlaFM5q48ber+tWHm7aVO/n+VGrlv97un6rRMK7t6oTHQ5kIgEsWSI3\nLiyy50xYW7feGm57Q4nAOKsGg8FgMBhKBjNmAJ99Fr0dp8pslM7qlVemP48qNXf06MzXdNsKcqhM\nuqc/27eLI4Q69t/cud7HgW5bs2eLU4112TLH1QGBcVYNBoPBYDCEY9Wq9NrLqIhD7AYAfv899Tiq\nNOANG4A//0x/LQpn1S9qp9vWhRf6v6fTqejWTd9nBTFzZjx2cnLEY3TsP9nfO6ytL7+UHxvG1qef\nytXFAtGn8hsixfx6BoPBYDAYwvHTT8D48dHa2L07JXoUJbNmpUdvo4qs3ntv5mtROKuPPeb9uu6o\n1LRp/u/ptDVmjL7PCqJt23jsHHeceEzY/WdZ8vstrK2DDpIfG8bWiy/Kj83KUrdj2OcYZ9VgMBgM\nBoM6O3YAl1wSvZ3PPpOruQvL1Knpz6OoI92zx7vFi25n9YcfbCffC50OpCgKqcuWM+K9v/D33+Ix\nYffftm3AG2/IjQ1ja8kS4KGH5MeHObfKlJEfa5zVEo1xVg0Gg8Fg2F85/XS5yXAYdu2K9vPjZOPG\nTCVTHeI2boYNA9aty3xdtxDRgw/6v6fTWb3qquD3ddlq2VLP54gQCR4Ber6T7O8d1lZurvzYMMe7\nbFpuEtXvNX8+l2VhnNUSTShnde/evWjZsiWaNm2Kxo0bo3fv3rr+LoPBYDAYDGGwLOCbb6LvExpH\nH8pt2+KJ3s6dm/laFM7q5s3er+t0IPPz7bpYP3TZsqz4Wq/89ZeezxHhlaLtRsd3ko0OhrUV1MPV\nTZhoJ1sbqmorKOXcC+OslmiIxPJMypUrh5kzZ6JChQrIz89Hq1at8NVXX6FVq1a6/j6DwWAwGAwq\nJCeOe/ZEa2fYsNRjy4pmYhh1dBiwU3Cfey7zdd3O6rff+veh1OmsvvqqXUvshy5b/fuLjzEd+/CL\nL8J/hk7iVKINu/8GD5Yfq+pA7t7N1/mq2mLqYgHjrJZwQqcBV6hQAQCQm5uLgoICVKtWLfQfZTAY\nDAbDfkuvXnbEMy6iaocCZEYIo7JVp040n+tk40bg66+jt+OV/ptEpwO0Zk3w+7psybQS0mHL3eYn\nKpxti4II+5127JAfG8YW6xCqOpAq5QAqttasAdhMTuOslmhCO6uJRAJNmzZFzZo10aZNGzT2awgd\nIYkEd84bDAaDwbDPGDwYGDs2WhsjR6YeR+msVq+e/jwKW1EIHHkxe3b0NnJzgX79/N/X5UBu3Squ\nu9Rha9cu4OefxeN02YqD//5XblzY71S7tvzYMOfAwIHceFVbMi14dNhSEVlzXg8NJY5QacAAUKpU\nKfzwww/YsWMH2rdvj1mzZqF169ZpY/r06VP0uHXr1hnvh+WNN4Dbb4/2fmwwGAwGQ2g6dbL/1y2k\n4+b661OPo7blJIobcRz9WwGga9fobWzaBCxY4P++Lmd15kyx86DD1tChwJYt4nFhbX38cTyp4Axh\nvxPzfcI4q//+Nzde1Vbduvw2KrYYFeAkHTrw2xiEzJo1C7O8VM01E9pZTVKlShV06NABCxYsCHRW\ndbN3r10uE9e9eNky+/q0DwLIBoPBYIiKsWPtOqjOnaO18/779v9R9e4EgO3b059HtZLrpcwaha0J\nE/R/ppsoRJS8iMOBBICDDxaP0WFLNq0trC2vWuIoCFJPdhPGgWTTAePKLojbFktuLn+N/uwzkwYc\nEe4AZN++fSOxEyoNePPmzdheeFPcs2cPpk+fjmbNmmn5w2SZPt1uIxYXnTsD558fnz2DwWAwxMC1\n1wLdu0dr46uvUo+jdFZPOy39eVTO6vz5ma/ptjVxot7P86Nhw3jsNGgQ/L4uB/Lii8XjwtratQt4\n6y25sWFtsYI6qgwaJD82zHdihUhVHch331XbjiUusamdO+Ui+U4qVozmbzHERqizf/369bjuuuuQ\nSCSQSCTQvXt3tGvXTtffJgXTOiosM2cCixbFZy8nx14cNQtCBoPBECEvv2yn50SdouNsvRKls7pi\nRfrzKJzVu+/2fl23rcsv1/t5fqxcGb0NmQm9jkn/zp1y48LamjZNLOKUJEzkesYM4PPP1bLine truncated
"text": [
"<matplotlib.figure.Figure at 0x3dfb3d0>"
"<matplotlib.figure.Figure at 0x4cc4650>"
]
}
],
"prompt_number": 45
"prompt_number": 39
},
{
"cell_type": "markdown",
+662
View File
@@ -0,0 +1,662 @@
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"from SimPEG import *\n",
"from test_boundary import spheremodel, MagSphereAnalFun\n",
"%pylab inline"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"WARNING: pylab import has clobbered these variables: ['axes', 'info', 'flag']\n",
"`%pylab --no-import-all` prevents importing * from pylab and numpy\n"
]
}
],
"prompt_number": 29
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step:1 Generating mesh and operators"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"hxind = ((10,25,1.3),(41, 25),(10,25,1.3))\n",
"hyind = ((10,25,1.3),(41, 25),(10,25,1.3))\n",
"hzind = ((10,25,1.3),(40, 25),(10,25,1.3))\n",
"hx, hy, hz = Utils.meshTensors(hxind, hyind, hzind)\n",
"M3 = Mesh.TensorMesh([hx, hy, hz], [-sum(hx)/2,-sum(hy)/2,-sum(hz)/2])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 30
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step2: Compute Boundary indicies and set $\\mathbf{B}_{bc}$"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"BC = [['neumann', 'neumann'], ['neumann', 'neumann'], ['neumann', 'neumann']]\n",
"indxd, indxu, indyd, indyu, indzd, indzu = M3.faceBoundaryInd\n",
"ind = np.r_[(indxd | indxu), (indyd | indyu), (indzd | indzu)]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 31
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Box = 1 # Primary field in x-direction (background)\n",
"Boy = 0 # Primary field in y-direction (background)\n",
"Boz = 0 # Primary field in z-direction (background)\n",
"\n",
"Bbcx = np.zeros(np.prod(M3.nFx))\n",
"Bbcy = np.zeros(np.prod(M3.nFy))\n",
"Bbcz = np.zeros(np.prod(M3.nFz))\n",
"\n",
"Bbcx[indxd] = Box\n",
"Bbcx[indxu] = Box\n",
"Bbcy[indyd] = Boy\n",
"Bbcy[indyu] = Boy\n",
"Bbcz[indzd] = Boz\n",
"Bbcz[indzu] = Boz\n",
"\n",
"Bbc = np.r_[Bbcx, Bbcy, Bbcz]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 32
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step3: Generating model $\\mu$\n",
"\n",
"$\\mu = \\mu_0(1+\\chi)$"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"mu0 = 4*np.pi*1e-7\n",
"chibkg = 0.\n",
"chiblk = 0.01\n",
"chi = np.ones(M3.nC)*chibkg"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 33
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sph_ind = spheremodel(M3, 0, 0, 0, 100)\n",
"chi[sph_ind] = chiblk\n",
"mu = (1.+chi)*mu0"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 34
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"figsize(10,10)\n",
"M3.plotGrid()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0xa514ed0>"
]
}
],
"prompt_number": 35
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"M3.plotImage(np.log10(mu), imageType='CC')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 36,
"text": [
"<matplotlib.collections.QuadMesh at 0xc576050>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAmgAAAJWCAYAAADsn3uUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtcVHXi//HXDAMo3sVEBc1SNkVQMW/l9kXTzFjTUvK2\nq5T4y9u3TO2nW967aO6uW9nirrbeUpTU9VrpVuYlCemX4eY9XEUBQeOiQoLc5vcH6ySB1cqZ8Yy+\nnz14xJw55/D5vDnMvDlzBi12u92OiIiIiJiG9VYPQERERETKU0ETERERMRkVNBERERGTUUETERER\nMRkVNBERERGTUUETERERMRkVNBG5I6xZs4aOHTtSq1YtmjRpQnh4OHFxcQB8++23PPXUU9x1113U\nrVuXdu3a8eabb1JaWnqLRy0idyoVNBG57f35z39m4sSJTJ8+nQsXLpCSksL48ePZunUr//73v+nS\npQt33303hw8f5uLFi6xfv54DBw6Qm5t7q4cuIncoi/5QrYjczi5dukRAQAArVqxg4MCBFe7/3e9+\nx6VLl9i2bdstGJ2ISOV0Bk1Ebmvx8fEUFBTw5JNPVnr/zp07iYiIcPGoRER+mgqaiNzWsrKyaNCg\nAVZr5Q93WVlZNG7c2MWjEhH5aSpoInJb8/X1JTMz84YX/Pv6+nLu3DkXj0pE5KepoInIbe2BBx7A\n29ubTZs2VXp/r169+Mc//uHiUYmI/DQVNBG5rdWpU4dXXnmF8ePHs2XLFq5cuUJRURHbt29n6tSp\nzJkzhy+++IIpU6Zw/vx5AE6ePMnw4cO5dOnSLR69iNypVNBE5LY3adIk/vznP/Paa6/RsGFDmjVr\nxqJFi3jyySe59957iY+PJzk5mTZt2lC3bl0iIiLo1KkTtWrVutVDF5E7lP7MhoiIiIjJ6AyaiIiI\niMmooImIiIiYjAqaiIiIiMmooImIiIiYjO1WD+CXslgst3oIIiIiIr9YVd6H6TYFrczsWz0A07Db\nZwFgscy5xSP5ObuB7i77au6Ti2vdXC67ceX37la4lsvtZPbs2cyePftWD0Nugr537ulG37eqnlj6\nyZc4U1JS6NGjB23atCE4OJiFCxc6BhMQEEBoaCihoaFs377dsc28efMIDAykVatWfPzxx47lBw4c\nICQkhMDAQCZMmOBYfvXqVQYPHkxgYCBdu3blzJkzVZqQiIiIiLv7yYLm6enJm2++yZEjR9i/fz/R\n0dEcO3YMi8XCpEmTSExMJDExkcceewyAo0eP8v7773P06FF27NjBuHHjHKf3xo4dy9KlS0lKSiIp\nKYkdO3YAsHTpUnx9fUlKSmLixIlMnTrVyVMWERERMbefLGiNGjWiffv2ANSsWZPWrVuTlpYGVP66\n6pYtWxg6dCienp40b96cli1bkpCQQHp6Orm5uXTu3BmAESNGsHnzZgC2bt1KZGQkAAMHDmTnzp3G\nzU5MoPmtHoDctOa3egByE7p3736rhyA3Sd879+Ss79svvgYtOTmZxMREunbtSlxcHO+88w7vvfce\nHTt2ZMGCBdStW5dz587RtWtXxzYBAQGkpaXh6elJQECAY7m/v7+j6KWlpdG0adOywdhs1KlTh+zs\nbOrXr1/JKHZf93lz9ATiDprf6gHITWt+qwcgN0FP8u5L3zv3dO37tnv3bnbv3m3Yfn9RQcvLyyMi\nIoK3336bmjVrMnbsWGbOnAnAjBkzmDx5MkuXLjVsUDfW3QVfQ0REROS/071793Ile86cqr1Z7Wf/\nDlpRUREDBw7kd7/7HU888QQADRs2xGKxYLFYGDVqFF9++SVQdmYsJSXFsW1qaioBAQH4+/uTmppa\nYfm1bc6ePQtAcXExly5dusHZMxEREZE7w08WNLvdTlRUFEFBQbzwwguO5enp6Y7PN23aREhICAD9\n+vUjNjaWwsJCTp8+TVJSEp07d6ZRo0bUrl2bhIQE7HY7q1aton///o5tVq5cCcCGDRvo2bOn4ZMU\nERERcSc/+RJnXFwcq1evpm3btoSGhgIwd+5c1q5dy8GDB7FYLNxzzz0sXrwYgKCgIAYNGkRQUBA2\nm41FixY5/g7IokWLePrpp8nPzyc8PJw+ffoAEBUVxfDhwwkMDMTX15fY2FhnzldERETE9Cz2qvyZ\nWxcqK3qzb/UwTEN/kLVyyqVyyqVyt+MfqhURc7BYLFX6lwT0b3GKiIiImIwKmoiIiIjJqKCJiIiI\nmIwKmoiIiIjJqKCJiIiImIwKmoiIiIjJqKCJiIiImIwKmoiIiIjJqKCJiIiImIwKmoiIiIjJqKCJ\niIiImIwKmoiIiIjJqKCJiIiImIwKmoiIiIjJqKCJiIiImIwKmoiIiIjJqKCJiIiImIwKmoiIiIjJ\nqKCJiIiImIwKmoiIiIjJqKCJiIiImIwKmoiIiIjJqKCJiIiImIwKmoiIiIjJqKCJiIiImIwKmoiI\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0xc9469d0>"
]
}
],
"prompt_number": 36
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step4: get system matrix $\\mathbf{A}$ and right handside\n",
"#### 4.1 Backgrounds: Weak formulation for Poisson equation with cell-centered system\n",
"\n",
"$$\\nabla \\phi = \\frac{1}{\\mu}\\mathbf{B}$$\n",
"\n",
"$$\\nabla \\cdot \\mathbf{B} = q $$\n",
"\n",
"\n",
"$$ (\\phi)_{\\partial\\Omega} = \\phi_{BC}$$\n",
"or\n",
"$$ (\\mathbf{B}\\cdot{\\bar{\\mathbf{n}}})_{\\partial\\Omega} = B_{BC}$$\n",
"\n",
"In discretized form we have \n",
"\n",
"$$\\mathbf{diag(v)}\\mathbf{D}\\mathbf{P}_{in}^T \\mathbf{P}_{in}\\mathbf{B} + \\mathbf{diag(v)}\\mathbf{D} \\mathbf{P}_{out}^T B_{BC}= \\mathbf{diag(v)}q $$\n",
"\n",
"$$\\mathbf{M}^f_{\\frac{1}{\\mu}}\\mathbf{B} = -\\mathbf{P}_{in}\\mathbf{P}_{in}^T\\mathbf{D}^T\\mathbf{diag(v)}\\phi + \\mathbf{P}_{BC}\\phi_{BC}$$\n",
"\n",
"$$\\mathbf{B} = (\\mathbf{M}^f_{\\frac{1}{\\mu}})^{-1}(-\\mathbf{P}_{in}\\mathbf{P}_{in}^T\\mathbf{D}\\mathbf{diag(v)}\\phi +\\mathbf{P}_{BC}\\phi_{BC})$$\n",
"\n",
"$$\\mathbf{diag(v)}\\mathbf{D}\\mathbf{P}_{in}^T \\mathbf{P}_{in} (\\mathbf{M}^f_{\\frac{1}{\\mu}})^{-1}(-\\mathbf{P}_{in}\\mathbf{P}_{in}^T\\mathbf{D}\\mathbf{diag(v)}\\phi +\\mathbf{P}_{BC}\\phi_{BC}) + \\mathbf{diag(v)}\\mathbf{D} \\mathbf{P}_{out}^T B_{BC}= \\mathbf{diag(v)}q $$\n",
"\n",
"$$-\\mathbf{diag(v)}\\mathbf{D}\\mathbf{P}_{in}^T \\mathbf{P}_{in} (\\mathbf{M}^f_{\\frac{1}{\\mu}})^{-1}\\mathbf{P}_{in}\\mathbf{P}_{in}^T\\mathbf{D}\\mathbf{diag(v)}\\phi = \\mathbf{diag(v)}q -\\mathbf{diag(v)}\\mathbf{D}\\mathbf{P}_{in}^T \\mathbf{P}_{in} (\\mathbf{M}^f_{\\frac{1}{\\mu}})^{-1}\\mathbf{P}_{BC}\\phi_{BC} - \\mathbf{diag(v)}\\mathbf{D} \\mathbf{P}_{out}^T B_{BC}$$\n",
"\n",
"$$\\mathbf{A} = -\\mathbf{diag(v)}\\mathbf{D}\\mathbf{P}_{in}^T \\mathbf{P}_{in} (\\mathbf{M}^f_{\\frac{1}{\\mu}})^{-1}\\mathbf{P}_{in}\\mathbf{P}_{in}^T\\mathbf{D}\\mathbf{diag(v)}$$\n",
"\n",
"$$\\mathbf{rhs} = \\mathbf{diag(v)}q -\\mathbf{diag(v)}\\mathbf{D}\\mathbf{P}_{in}^T \\mathbf{P}_{in} (\\mathbf{M}^f_{\\frac{1}{\\mu}})^{-1}\\mathbf{P}_{BC}\\phi_{BC} - \\mathbf{diag(v)}\\mathbf{D} \\mathbf{P}_{out}^T B_{BC} $$\n",
"\n",
"In magnetostatic case we do not have $\\mathbf{q}$ and $\\phi_{BC}$ and with\n",
"\n",
"$$ \\mathbf{Div} = \\mathbf{diag(v)}\\mathbf{D}\\mathbf{P}_{in}^T \\mathbf{P}_{in}$$\n",
"\n",
"$$\\mathbf{A} = - D(\\mathbf{M}^f_{\\frac{1}{\\mu}})^{-1}D^{T}$$\n",
"\n",
"$$\\mathbf{rhs} = - \\mathbf{diag(v)}\\mathbf{D} \\mathbf{P}_{out}^T B_{BC} $$\n",
"\n",
"$$\\mathbf{B} = (\\mathbf{M}^f_{\\frac{1}{\\mu}})^{-1}(-\\mathbf{Div}^{T}\\phi)$$\n",
"\n",
"### Things to remember\n",
"\n",
"- $\\mathbf{P}_{BC}$ contains $\\mathbf{diag}(\\mathbf{area}_{BC})$ and a weired projection matrix, which has some +1 and -1 ....\n",
"- Forward differential problem in weak form does not work well.., although inverse works really well\n",
"- Mesh.getFaceInnerProduct or Mesh.getFaceMass should be used since we integrate $(\\frac{1}{\\mu}\\mathbf{B}, \\mathbf{F})$ in the cell, which means we need averaging from faces to cell centers\n",
"- Weak formulation is a fancy representation of Finite Volume Approach. In terms of final system matrix \\mathbf{A} is going to be exactly same, I guess.."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Dface = M3.faceDiv\n",
"Pbc,Pin, Pout = M3.getBCProjWF(BC, discretization='CC')\n",
"Mc = Utils.sdiag(M3.vol)\n",
"D = Mc*Dface*Pin.T*Pin\n",
"MfmuI = Utils.sdiag(1/M3.getFaceInnerProduct(mu = 1/mu).diagonal())\n",
"A = -D*MfmuI*D.T\n",
"rhs = -Mc*Dface*Pout.T*Bbc[ind]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 37
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import petsc4py\n",
"import sys\n",
"from sys import getrefcount\n",
"petsc4py.init(sys.argv)\n",
"from petsc4py import PETSc\n",
"import PETScIO as IO\n",
"Apetsc = PETSc.Mat().createAIJ(size=A.shape,csr=(A.indptr, A.indices, A.data))\n",
"bpetsc = IO.arrayToVec(rhs)\n",
"xpetsc = IO.arrayToVec(0*rhs)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 38
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# u1 = PETSc.Vec().createSeq(M3.nC)\n",
"# u1.set(1)\n",
"# u1.normalize()\n",
"# basis = [u1]\n",
"# nullsp = PETSc.NullSpace().create(False, basis, comm=PETSc.COMM_SELF)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 39
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%time\n",
"ksp = PETSc.KSP().create()\n",
"pc = PETSc.PC().create()\n",
"ksp.setOperators(Apetsc)\n",
"ksp.setType(ksp.Type.BCGS)\n",
"pc = ksp.getPC()\n",
"pc.setType(pc.Type.SOR)\n",
"OptDB = PETSc.Options()\n",
"OptDB[\"ksp_rtol\"] = 1e-8\n",
"OptDB[\"pc_factor_levels\"] = 1\n",
"ksp.setFromOptions()\n",
"ksp.view()\n",
"ksp.solve(bpetsc, xpetsc)\n",
"print ksp.its# print ksp.its\n",
"phi = IO.vecToArray(xpetsc)\n",
"print np.linalg.norm(A*phi-rhs)/norm(rhs)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"116\n",
"4.24430002044e-09\n",
"CPU times: user 1.65 s, sys: 0 ns, total: 1.65 s\n",
"Wall time: 1.66 s\n"
]
}
],
"prompt_number": 40
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%time\n",
"m1 = sp.linalg.interface.aslinearoperator(Utils.sdiag(-1/A.diagonal()))\n",
"phi, info = sp.linalg.bicgstab(A, rhs, tol=1e-6, maxiter = 1000, M =m1)\n",
"# m1 = sp.linalg.interface.aslinearoperator(Utils.sdiag(np.sqrt(1/(Utils.mkvc(-A.diagonal())))))\n",
"# m2 = m1\n",
"# phi, info = sp.linalg.qmr(A, rhs, tol = 1e-5, M1 = m1, M2=m2)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"CPU times: user 2.13 s, sys: 0 ns, total: 2.13 s\n",
"Wall time: 2.13 s\n"
]
}
],
"prompt_number": 41
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print info\n",
"print M3.nC"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0\n",
"223260\n"
]
}
],
"prompt_number": 42
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"B = MfmuI*(-D.T*phi)\n",
"rhsa = A*phi\n",
"print info\n",
"print np.linalg.norm(rhs-rhsa)/np.linalg.norm(rhs)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0\n",
"9.47100435444e-07\n"
]
}
],
"prompt_number": 43
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### BICG, qmr or BICGstab with Jacobi preconditioner works well (scipy), minres does not work ... Need to play with some other iterative solvers. Remeber that our system has null-space, which is constant"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"figsize(16,5)\n",
"M3.plotImage(B, imageType='F')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0xc4624d0>"
]
}
],
"prompt_number": 44
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step4: Compute analytic function (sphere in whole space)\n",
"Outside of the sphere $(r>R)$\n",
"\n",
"$$\\mathbf{H}_1 = H_0 \\hat{x} + H_0\\frac{R}{r^5}\\frac{\\mu_2-\\mu_1}{\\mu_2+2\\mu_1}[(2x^2-y^2-z^2)\\hat{x}+(3xy)\\hat{y}+(3xz)\\hat{z}]$$\n",
"\n",
"$$H_{x1} = H_0 + H_0\\frac{R}{r^5}\\frac{\\mu_2-\\mu_1}{\\mu_2+2\\mu_1}(2x^2-y^2-z^2)$$\n",
"\n",
"$$H_{y1} = H_0\\frac{R}{r^5}\\frac{\\mu_2-\\mu_1}{\\mu_2+2\\mu_1}(3xy)$$\n",
"\n",
"$$H_{z1} = H_0\\frac{R}{r^5}\\frac{\\mu_2-\\mu_1}{\\mu_2+2\\mu_1}(3xz)$$\n",
"\n",
"Inside of the sphere $(r\\le R)$\n",
"\n",
"$$\\mathbf{H}_2 = H_0\\frac{3\\mu_1}{\\mu_2+2\\mu_1}\\hat{x}$$\n",
"\n",
"$$H_{x2} = H_0\\frac{3\\mu_1}{\\mu_2+2\\mu_1}$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Step5: Projection to receiver plane"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"xr = np.linspace(-400, 400, 41)\n",
"yr = np.linspace(-400, 400, 41)\n",
"X, Y = np.meshgrid(xr, yr)\n",
"Z = np.ones((size(xr), size(yr)))*50"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 45
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"rxLoc = np.c_[Utils.mkvc(X), Utils.mkvc(Y), Utils.mkvc(Z)]\n",
"Qfx = M3.getInterpolationMat(rxLoc,'Fx')\n",
"Qfy = M3.getInterpolationMat(rxLoc,'Fy')\n",
"Qfz = M3.getInterpolationMat(rxLoc,'Fz')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 46
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Bxr = np.reshape(Qfx*B, (size(xr), size(yr)), order='F')\n",
"Byr = np.reshape(Qfy*B, (size(xr), size(yr)), order='F')\n",
"Bzr = np.reshape(Qfz*B, (size(xr), size(yr)), order='F')\n",
"H0 = Box/mu0\n",
"flag = 'secondary'\n",
"if flag=='secondary':\n",
" Bxr = Bxr-Box\n",
"\n",
"Bxra, Byra, Bzra = MagSphereAnalFun(X, Y, Z, 100, 0., 0., 0., mu0, mu0*(1+chiblk), H0, flag)\n",
"\n",
"Bxra = np.reshape(Bxra, (size(xr), size(yr)), order='F')\n",
"Byra = np.reshape(Byra, (size(xr), size(yr)), order='F')\n",
"Bzra = np.reshape(Bzra, (size(xr), size(yr)), order='F')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 47
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"figsize(10, 4)\n",
"plot(Utils.mkvc(Bxra))\n",
"plot(Utils.mkvc(Bxr), 'k:')\n",
"plot(Utils.mkvc(Byra))\n",
"plot(Utils.mkvc(Byr), 'k:')\n",
"plot(Utils.mkvc(Bzra))\n",
"plot(Utils.mkvc(Bzr), 'k:')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 48,
"text": [
"[<matplotlib.lines.Line2D at 0xc44e810>]"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0xa52a7d0>"
]
}
],
"prompt_number": 48
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fig, ax = subplots(3,2, figsize = (10,15))\n",
"dat1 = ax[0,0].imshow(Bxr); fig.colorbar(dat1, ax=ax[0,0])\n",
"dat2 = ax[0,1].imshow(Bxra); fig.colorbar(dat2, ax=ax[0,1])\n",
"dat3 = ax[1,0].imshow(Byr); fig.colorbar(dat3, ax=ax[1,0])\n",
"dat4 = ax[1,1].imshow(Byra); fig.colorbar(dat4, ax=ax[1,1])\n",
"dat5 = ax[2,0].imshow(Bzr); fig.colorbar(dat5, ax=ax[2,0])\n",
"dat6 = ax[2,1].imshow(Bzra); fig.colorbar(dat6, ax=ax[2,1])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 49,
"text": [
"<matplotlib.colorbar.Colorbar instance at 0x47e1518>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0xa52a950>"
]
}
],
"prompt_number": 49
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fig, axes = subplots(1,3, figsize=(14,5))\n",
"epsx = np.linalg.norm(Utils.mkvc(Bxr))*1e-6\n",
"epsy = np.linalg.norm(Utils.mkvc(Byr))*1e-6\n",
"epsz = np.linalg.norm(Utils.mkvc(Bzr))*1e-6\n",
"axes[0].plot(Y[:,1], Bxra[:,1], 'b', Y[:,1], Bxr[:,1], 'r.')\n",
"axes[1].plot(Y[:,1], Byra[:,1], 'b', Y[:,1], Byr[:,1], 'r.')\n",
"axes[2].plot(Y[:,1], Bzra[:,1], 'b', Y[:,1], Bzr[:,1], 'r.')\n",
"print X[:,1]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[-380. -380. -380. -380. -380. -380. -380. -380. -380. -380. -380. -380.\n",
" -380. -380. -380. -380. -380. -380. -380. -380. -380. -380. -380. -380.\n",
" -380. -380. -380. -380. -380. -380. -380. -380. -380. -380. -380. -380.\n",
" -380. -380. -380. -380. -380.]\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x152faf50>"
]
}
],
"prompt_number": 50
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fig, axes = subplots(1,3, figsize=(14,5))\n",
"epsx = np.linalg.norm(Utils.mkvc(Bxr))*1e-6\n",
"epsy = np.linalg.norm(Utils.mkvc(Byr))*1e-6\n",
"epsz = np.linalg.norm(Utils.mkvc(Bzr))*1e-6\n",
"axes[0].plot(Y[:,1], abs((Bxr[:,1]-Bxra[:,1])/(Bxra[:,1]+epsx)), 'r.')\n",
"axes[1].plot(Y[:,1], abs((Byr[:,1]-Byra[:,1])/(Byra[:,1]+epsy)), 'r.')\n",
"axes[2].plot(Y[:,1], abs((Bzr[:,1]-Bzra[:,1])/(Bzra[:,1]+epsz)), 'r.')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 51,
"text": [
"[<matplotlib.lines.Line2D at 0xf0bfc50>]"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x15309ad0>"
]
}
],
"prompt_number": 51
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Thoughts\n",
"\n",
"- It works well with non-uniform mesh!!\n",
"- Actual accuray is ~10% relative error in secondary fields. As we pad more we can get better accuracy, since we did not consider secondary field at the boudnary ($\\partial\\Omega$). \n",
"- Here, we can try primary secondary field approach to get better accuracy. \n",
"- In addition, we can use the congruous sphere method to handle this secondary fields at boundaries"
]
}
],
"metadata": {}
}
]
}
+122 -58
View File
@@ -1,78 +1,142 @@
from SimPEG.Utils.sputils import kron3, speye, sdiag
from SimPEG import *
import numpy as np
import scipy.sparse as sp
def ddxFaceDivBC(n, bc):
ij = (np.array([0, n-1]),np.array([0, 1]))
vals = np.zeros(2)
ij = (np.array([0, n-1]),np.array([0, 1]))
vals = np.zeros(2)
# Set the first side
if(bc[0] == 'dirichlet'):
vals[0] = 0
elif(bc[0] == 'neumann'):
vals[0] = -1
# Set the second side
if(bc[1] == 'dirichlet'):
vals[1] = 0
elif(bc[1] == 'neumann'):
vals[1] = 1
D = sp.csr_matrix((vals, ij), shape=(n,2))
return D
# Set the first side
if(bc[0] == 'dirichlet'):
vals[0] = 0
elif(bc[0] == 'neumann'):
vals[0] = -1
# Set the second side
if(bc[1] == 'dirichlet'):
vals[1] = 0
elif(bc[1] == 'neumann'):
vals[1] = 1
D = sp.csr_matrix((vals, ij), shape=(n,2))
return D
def faceDivBC(mesh, BC, ind):
"""
The facd divergence boundary condtion matrix
"""
The facd divergence boundary condtion matrix
"""
# The number of cell centers in each direction
n = mesh.nCv
# Compute faceDivergence operator on faces
if(mesh.dim == 1):
D = ddxFaceDivBC(n[0], BC[0])
elif(mesh.dim == 2):
D1 = sp.kron(speye(n[1]), ddxFaceDivBC(n[0]), BC[0])
D2 = sp.kron(ddxFaceDivBC(n[1], BC[1]), speye(n[0]))
D = sp.hstack((D1, D2), format="csr")
elif(mesh.dim == 3):
D1 = kron3(speye(n[2]), speye(n[1]), ddxFaceDivBC(n[0], BC[0]))
D2 = kron3(speye(n[2]), ddxFaceDivBC(n[1], BC[1]), speye(n[0]))
D3 = kron3(ddxFaceDivBC(n[2], BC[2]), speye(n[1]), speye(n[0]))
D = sp.hstack((D1, D2, D3), format="csr")
# Compute areas of cell faces & volumes
S = mesh.area[ind]
V = mesh.vol
mesh._faceDiv = sdiag(1/V)*D*sdiag(S)
.. math::
return mesh._faceDiv
"""
# The number of cell centers in each direction
n = mesh.nCv
# Compute faceDivergence operator on faces
if(mesh.dim == 1):
D = ddxFaceDivBC(n[0], BC[0])
elif(mesh.dim == 2):
D1 = sp.kron(speye(n[1]), ddxFaceDivBC(n[0]), BC[0])
D2 = sp.kron(ddxFaceDivBC(n[1], BC[1]), speye(n[0]))
D = sp.hstack((D1, D2), format="csr")
elif(mesh.dim == 3):
D1 = kron3(speye(n[2]), speye(n[1]), ddxFaceDivBC(n[0], BC[0]))
D2 = kron3(speye(n[2]), ddxFaceDivBC(n[1], BC[1]), speye(n[0]))
D3 = kron3(ddxFaceDivBC(n[2], BC[2]), speye(n[1]), speye(n[0]))
D = sp.hstack((D1, D2, D3), format="csr")
# Compute areas of cell faces & volumes
S = mesh.area[ind]
V = mesh.vol
mesh._faceDiv = sdiag(1/V)*D*sdiag(S)
return mesh._faceDiv
def faceBCind(mesh):
"""
Find indices of boundary faces in each direction
"""
Find indices of boundary faces in each direction
"""
if(mesh.dim==1):
indxd = (mesh.gridFx[:,0]==min(mesh.gridFx[:,0]))
indxu = (mesh.gridFx[:,0]==max(mesh.gridFx[:,0]))
return indxd, indxu
elif(mesh.dim==1):
indxd = (mesh.gridFx[:,0]==min(mesh.gridFx[:,0]))
indxu = (mesh.gridFx[:,0]==max(mesh.gridFx[:,0]))
indyd = (mesh.gridFy[:,1]==min(mesh.gridFy[:,1]))
indyu = (mesh.gridFy[:,1]==max(mesh.gridFy[:,1]))
return indxd, indxu, indyd, indyu
elif(mesh.dim==3):
indxd = (mesh.gridFx[:,0]==min(mesh.gridFx[:,0]))
indxu = (mesh.gridFx[:,0]==max(mesh.gridFx[:,0]))
indyd = (mesh.gridFy[:,1]==min(mesh.gridFy[:,1]))
indyu = (mesh.gridFy[:,1]==max(mesh.gridFy[:,1]))
indzd = (mesh.gridFz[:,2]==min(mesh.gridFz[:,2]))
indzu = (mesh.gridFz[:,2]==max(mesh.gridFz[:,2]))
return indxd, indxu, indyd, indyu, indzd, indzu
"""
if(mesh.dim==1):
indxd = (mesh.gridFx[:,0]==min(mesh.gridFx[:,0]))
indxu = (mesh.gridFx[:,0]==max(mesh.gridFx[:,0]))
return indxd, indxu
elif(mesh.dim==1):
indxd = (mesh.gridFx[:,0]==min(mesh.gridFx[:,0]))
indxu = (mesh.gridFx[:,0]==max(mesh.gridFx[:,0]))
indyd = (mesh.gridFy[:,1]==min(mesh.gridFy[:,1]))
indyu = (mesh.gridFy[:,1]==max(mesh.gridFy[:,1]))
return indxd, indxu, indyd, indyu
elif(mesh.dim==3):
indxd = (mesh.gridFx[:,0]==min(mesh.gridFx[:,0]))
indxu = (mesh.gridFx[:,0]==max(mesh.gridFx[:,0]))
indyd = (mesh.gridFy[:,1]==min(mesh.gridFy[:,1]))
indyu = (mesh.gridFy[:,1]==max(mesh.gridFy[:,1]))
indzd = (mesh.gridFz[:,2]==min(mesh.gridFz[:,2]))
indzu = (mesh.gridFz[:,2]==max(mesh.gridFz[:,2]))
return indxd, indxu, indyd, indyu, indzd, indzu
def spheremodel(mesh, x0, y0, z0, r):
"""
Generate model indicies for sphere
- (x0, y0, z0 ): is the center location of sphere
- r: is the radius of the sphere
- it returns logical indicies of cell-center model
"""
ind = np.sqrt((mesh.gridCC[:,0]-x0)**2+(mesh.gridCC[:,1]-y0)**2+(mesh.gridCC[:,2]-z0)**2 ) < r
return ind
def MagSphereAnalFun(x, y, z, R, x0, y0, z0, mu1, mu2, H0, flag):
"""
Analytic function for Magnetics problem. The set up here is
magnetic sphere in whole-space.
- (x0,y0,z0)
- (x0, y0, z0 ): is the center location of sphere
- r: is the radius of the sphere
.. math::
\mathbf{H}^p = H_0\hat{x}
"""
if (~np.size(x)==np.size(y)==np.size(z)):
print "Specify same size of x, y, z"
return
dim = x.shape
x = Utils.mkvc(x)
y = Utils.mkvc(y)
z = Utils.mkvc(z)
ind = np.sqrt((x-x0)**2+(y-y0)**2+(z-z0)**2 ) < R
r = Utils.mkvc(np.sqrt((x-x0)**2+(y-y0)**2+(z-z0)**2 ))
Bx = np.zeros(x.size)
By = np.zeros(x.size)
Bz = np.zeros(x.size)
# Inside of the sphere
rf2 = 3*mu1/(mu2+2*mu1)
if (flag == 'total'):
Bx[ind] = mu2*H0*(rf2)
elif (flag == 'secondary'):
Bx[ind] = mu2*H0*(rf2)-mu1*H0
By[ind] = 0.
Bz[ind] = 0.
# Outside of the sphere
rf1 = (mu2-mu1)/(mu2+2*mu1)
if (flag == 'total'):
Bx[~ind] = mu1*(H0+H0/r[~ind]**5*(R**3)*rf1*(2*x[~ind]**2-y[~ind]**2-z[~ind]**2))
elif (flag == 'secondary'):
Bx[~ind] = mu1*(H0/r[~ind]**5*(R**3)*rf1*(2*x[~ind]**2-y[~ind]**2-z[~ind]**2))
By[~ind] = mu1*(H0/r[~ind]**5*(R**3)*rf1*(3*x[~ind]*y[~ind]))
Bz[~ind] = mu1*(H0/r[~ind]**5*(R**3)*rf1*(3*x[~ind]*z[~ind]))
return np.reshape(Bx, x.shape, order='F'), np.reshape(By, x.shape, order='F'), np.reshape(Bz, x.shape, order='F')