diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..0d20b648 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/code/BaseMesh.py b/SimPEG/BaseMesh.py similarity index 99% rename from code/BaseMesh.py rename to SimPEG/BaseMesh.py index 2b72ee80..a197b8a4 100644 --- a/code/BaseMesh.py +++ b/SimPEG/BaseMesh.py @@ -128,7 +128,7 @@ class BaseMesh(object): def nN(): doc = "Total number of nodes" - fget = lambda self: self.n + 1 + fget = lambda self: np.prod(self.n + 1) return locals() nN = property(**nN()) diff --git a/code/EldadsCode/GaussNewton.py b/SimPEG/EldadsCode/GaussNewton.py similarity index 100% rename from code/EldadsCode/GaussNewton.py rename to SimPEG/EldadsCode/GaussNewton.py diff --git a/code/EldadsCode/MFDdriver.py b/SimPEG/EldadsCode/MFDdriver.py similarity index 100% rename from code/EldadsCode/MFDdriver.py rename to SimPEG/EldadsCode/MFDdriver.py diff --git a/code/EldadsCode/getCellVolume.py b/SimPEG/EldadsCode/getCellVolume.py similarity index 100% rename from code/EldadsCode/getCellVolume.py rename to SimPEG/EldadsCode/getCellVolume.py diff --git a/code/EldadsCode/getDiffOps.py b/SimPEG/EldadsCode/getDiffOps.py similarity index 100% rename from code/EldadsCode/getDiffOps.py rename to SimPEG/EldadsCode/getDiffOps.py diff --git a/code/EldadsCode/getEdgeInnerProduct.py b/SimPEG/EldadsCode/getEdgeInnerProduct.py similarity index 100% rename from code/EldadsCode/getEdgeInnerProduct.py rename to SimPEG/EldadsCode/getEdgeInnerProduct.py diff --git a/code/EldadsCode/getEdgeTangent.py b/SimPEG/EldadsCode/getEdgeTangent.py similarity index 100% rename from code/EldadsCode/getEdgeTangent.py rename to SimPEG/EldadsCode/getEdgeTangent.py diff --git a/code/EldadsCode/getFaceInnerProduct.py b/SimPEG/EldadsCode/getFaceInnerProduct.py similarity index 100% rename from code/EldadsCode/getFaceInnerProduct.py rename to SimPEG/EldadsCode/getFaceInnerProduct.py diff --git a/code/EldadsCode/getFaceNormals.py b/SimPEG/EldadsCode/getFaceNormals.py similarity index 100% rename from code/EldadsCode/getFaceNormals.py rename to SimPEG/EldadsCode/getFaceNormals.py diff --git a/code/EldadsCode/getVolume.py b/SimPEG/EldadsCode/getVolume.py similarity index 100% rename from code/EldadsCode/getVolume.py rename to SimPEG/EldadsCode/getVolume.py diff --git a/code/EldadsCode/inv3X3BlockDiagonal.py b/SimPEG/EldadsCode/inv3X3BlockDiagonal.py similarity index 100% rename from code/EldadsCode/inv3X3BlockDiagonal.py rename to SimPEG/EldadsCode/inv3X3BlockDiagonal.py diff --git a/code/EldadsCode/meshUtils.py b/SimPEG/EldadsCode/meshUtils.py similarity index 100% rename from code/EldadsCode/meshUtils.py rename to SimPEG/EldadsCode/meshUtils.py diff --git a/code/EldadsCode/sputils.py b/SimPEG/EldadsCode/sputils.py similarity index 100% rename from code/EldadsCode/sputils.py rename to SimPEG/EldadsCode/sputils.py diff --git a/code/EldadsCode/tools.py b/SimPEG/EldadsCode/tools.py similarity index 100% rename from code/EldadsCode/tools.py rename to SimPEG/EldadsCode/tools.py diff --git a/code/EldadsCode/utils.py b/SimPEG/EldadsCode/utils.py similarity index 100% rename from code/EldadsCode/utils.py rename to SimPEG/EldadsCode/utils.py diff --git a/code/EldadsCode/zevel.py b/SimPEG/EldadsCode/zevel.py similarity index 100% rename from code/EldadsCode/zevel.py rename to SimPEG/EldadsCode/zevel.py diff --git a/code/TensorMesh.py b/SimPEG/TensorMesh.py similarity index 95% rename from code/TensorMesh.py rename to SimPEG/TensorMesh.py index 9e116f70..5f5e44b3 100644 --- a/code/TensorMesh.py +++ b/SimPEG/TensorMesh.py @@ -23,7 +23,7 @@ class TensorMesh(BaseMesh, TensorView): def __init__(self, h, x0=None): super(TensorMesh, self).__init__(np.array([len(x) for x in h]), x0) - assert len(h) == len(x0), "Dimension mismatch. x0 != len(h)" + assert len(h) == len(self.x0), "Dimension mismatch. x0 != len(h)" for i, h_i in enumerate(h): assert type(h_i) == np.ndarray, ("h[%i] is not a numpy array." % i) diff --git a/SimPEG/TensorView.py b/SimPEG/TensorView.py new file mode 100644 index 00000000..d78753ed --- /dev/null +++ b/SimPEG/TensorView.py @@ -0,0 +1,166 @@ +import numpy as np +import matplotlib.pyplot as plt +import matplotlib +from mpl_toolkits.mplot3d import Axes3D + + +class TensorView(object): + """ + Provides viewing functions for TensorMesh + + This class is inherited by TensorMesh + """ + def __init__(self): + pass + + def plotImage(self, I, imageType='CC', figNum=1,ax=None,direction='z',numbering=True): + + assert type(I) == np.ndarray, "I must be a numpy array" + assert type(numbering) == bool, "numbering must be a bool" + assert imageType in ["CC", "N"], "imageType must be 'CC' or 'N'" + assert direction in ["x", "y","z"], "direction must be either x,y, or z" + + + if imageType == 'CC': + assert I.size == self.nC, "Incorrect dimensions for CC." + elif imageType == 'N': + assert I.size == self.nN, "Incorrect dimensions for N." + + if ax is None: + fig = plt.figure(figNum) + fig.clf() + ax = plt.subplot(111) + else: + assert isinstance(ax,matplotlib.axes.Axes), "ax must be an Axes!" + fig = ax.figure + + if self.dim == 1: + if imageType == 'CC': + ph = ax.plot(self.vectorCCx, I, '-ro') + elif imageType == 'N': + ph = ax.plot(self.vectorNx, I, '-bs') + ax.set_xticks(self.vectorNx) + ax.set_xlabel("x") + ax.axis('tight') + elif self.dim == 2: + if imageType == 'CC': + C = I[:].reshape(self.n, order='F') + elif imageType == 'N': + C = I[:].reshape(self.n+1, order='F') + C = 0.25*(C[:-1, :-1] + C[1:, :-1] + C[:-1, 1:] + C[1:, 1:]) + + ph = ax.pcolormesh(self.vectorNx, self.vectorNy, C.T) + ax.axis('tight') + ax.set_xlabel("x") + ax.set_ylabel("y") + ax.set_xticks(self.vectorNx) + ax.set_yticks(self.vectorNy) + + elif self.dim == 3: + if direction == 'z': + nX = np.ceil(np.sqrt(self.nCz)) + nY = np.ceil(self.nCz/nX) + C = np.zeros((nX*self.nCx, nY*self.nCy)) + + Ic = I[:].reshape(self.n, order='F') + + nCx = self.nCx + nCy = self.nCy + for iy in range(int(nY)): + for ix in range(int(nX)): + iz = ix + iy*nX + if iz < self.nCz: + C[ix*nCx:(ix+1)*nCx, iy*nCy:(iy+1)*nCy] = Ic[:, :, iz] + else: + C[ix*nCx:(ix+1)*nCx, iy*nCy:(iy+1)*nCy] = np.nan + + C = np.ma.masked_where(np.isnan(C), C) + xx = np.r_[0, np.cumsum(np.kron(np.ones((nX, 1)), self.hx).ravel())] + yy = np.r_[0, np.cumsum(np.kron(np.ones((nY, 1)), self.hy).ravel())] + ph = ax.pcolormesh(xx, yy, C.T) + # Plot the lines + gx = np.r_[0, np.cumsum(np.kron(np.ones((nX, 1)), np.sum(self.hy)).ravel())] + gy = np.r_[0, np.cumsum(np.kron(np.ones((nY, 1)), np.sum(self.hx)).ravel())] + # Repeat and seperate with NaN + gxX = np.c_[gx, gx, gx+np.nan].ravel() + gxY = np.kron(np.ones((nX+1, 1)), np.array([0, sum(self.hy)*nY, np.nan])).ravel() + gyX = np.kron(np.ones((nY+1, 1)), np.array([0, sum(self.hx)*nX, np.nan])).ravel() + gyY = np.c_[gy, gy, gy+np.nan].ravel() + ax.plot(gxX, gxY, 'w-', linewidth=2) + ax.plot(gyX, gyY, 'w-', linewidth=2) + + if numbering: + pad = np.sum(self.hx)*0.04 + for iy in range(int(nY)): + for ix in range(int(nX)): + iz = ix + iy*nX + ax.text((ix+1)*self.vectorNx[-1]-pad,(iy)*self.vectorNy[-1]+pad, + '#%i'%iz,color='w',verticalalignment='bottom',horizontalalignment='right',size='x-large') + + fig.show() + return ph + + def plotGrid(self): + """Plot the nodal, cell-centered and staggered grids for 1,2 and 3 dimensions.""" + if self.dim == 1: + fig = plt.figure(1) + fig.clf() + ax = plt.subplot(111) + xn = self.gridN + xc = self.gridCC + ax.hold(True) + ax.plot(xn, np.ones(np.shape(xn)), 'bs') + ax.plot(xc, np.ones(np.shape(xc)), 'ro') + ax.plot(xn, np.ones(np.shape(xn)), 'k--') + ax.grid(True) + ax.hold(False) + ax.set_xlabel('x1') + fig.show() + elif self.dim == 2: + fig = plt.figure(2) + fig.clf() + ax = plt.subplot(111) + xn = self.gridN + xc = self.gridCC + xs1 = self.gridFx + xs2 = self.gridFy + + ax.hold(True) + ax.plot(xn[:, 0], xn[:, 1], 'bs') + ax.plot(xc[:, 0], xc[:, 1], 'ro') + ax.plot(xs1[:, 0], xs1[:, 1], 'g>') + ax.plot(xs2[:, 0], xs2[:, 1], 'g^') + ax.grid(True) + ax.hold(False) + ax.set_xlabel('x1') + ax.set_ylabel('x2') + fig.show() + elif self.dim == 3: + fig = plt.figure(3) + fig.clf() + ax = fig.add_subplot(111, projection='3d') + xn = self.gridN + xc = self.gridCC + xfs1 = self.gridFx + xfs2 = self.gridFy + xfs3 = self.gridFz + + xes1 = self.gridEx + xes2 = self.gridEy + xes3 = self.gridEz + + ax.hold(True) + ax.plot(xn[:, 0], xn[:, 1], 'bs', zs=xn[:, 2]) + ax.plot(xc[:, 0], xc[:, 1], 'ro', zs=xc[:, 2]) + ax.plot(xfs1[:, 0], xfs1[:, 1], 'g>', zs=xfs1[:, 2]) + ax.plot(xfs2[:, 0], xfs2[:, 1], 'g<', zs=xfs2[:, 2]) + ax.plot(xfs3[:, 0], xfs3[:, 1], 'g^', zs=xfs3[:, 2]) + ax.plot(xes1[:, 0], xes1[:, 1], 'k>', zs=xes1[:, 2]) + ax.plot(xes2[:, 0], xes2[:, 1], 'k<', zs=xes2[:, 2]) + ax.plot(xes3[:, 0], xes3[:, 1], 'k^', zs=xes3[:, 2]) + ax.grid(True) + ax.hold(False) + ax.set_xlabel('x1') + ax.set_ylabel('x2') + ax.set_zlabel('x3') + fig.show() diff --git a/SimPEG/__init__.py b/SimPEG/__init__.py new file mode 100644 index 00000000..2d1b1e99 --- /dev/null +++ b/SimPEG/__init__.py @@ -0,0 +1 @@ +from TensorMesh import TensorMesh diff --git a/code/getDIV.py b/SimPEG/getDIV.py similarity index 100% rename from code/getDIV.py rename to SimPEG/getDIV.py diff --git a/code/sputils.py b/SimPEG/sputils.py similarity index 100% rename from code/sputils.py rename to SimPEG/sputils.py diff --git a/code/tests/runTests.py b/SimPEG/tests/runTests.py similarity index 100% rename from code/tests/runTests.py rename to SimPEG/tests/runTests.py diff --git a/code/tests/runTests.sh b/SimPEG/tests/runTests.sh similarity index 100% rename from code/tests/runTests.sh rename to SimPEG/tests/runTests.sh diff --git a/code/tests/test_basemesh.py b/SimPEG/tests/test_basemesh.py similarity index 100% rename from code/tests/test_basemesh.py rename to SimPEG/tests/test_basemesh.py diff --git a/code/tests/test_div.py b/SimPEG/tests/test_div.py similarity index 100% rename from code/tests/test_div.py rename to SimPEG/tests/test_div.py diff --git a/code/tests/test_tensorMesh.py b/SimPEG/tests/test_tensorMesh.py similarity index 100% rename from code/tests/test_tensorMesh.py rename to SimPEG/tests/test_tensorMesh.py diff --git a/code/tests/test_utils.py b/SimPEG/tests/test_utils.py similarity index 100% rename from code/tests/test_utils.py rename to SimPEG/tests/test_utils.py diff --git a/code/utils.py b/SimPEG/utils.py similarity index 100% rename from code/utils.py rename to SimPEG/utils.py diff --git a/code/TensorView.py b/code/TensorView.py deleted file mode 100644 index 18a7bd00..00000000 --- a/code/TensorView.py +++ /dev/null @@ -1,96 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt -from mpl_toolkits.mplot3d import Axes3D - - -class TensorView(object): - """ - Provides viewing functions for TensorMesh - - This class is inherited by TensorMesh - """ - def __init__(self): - pass - - def plotImage(self, I): - - if self.dim == 1: - fig = plt.figure(1) - fig.clf() - ax = plt.subplot(111) - if np.size(I) == self.n[0]: - print 'cell-centered image' - xx = self.gridCC - ax.plot(xx[0], I, 'ro') - elif np.size(I) == self.n[0]+1: - print 'nodal image' - xx = self.gridN - ax.plot(xx[0], I, 'bs') - - fig.show() - - def plotGrid(self): - """Plot the nodal, cell-centered and staggered grids for 1,2 and 3 dimensions.""" - if self.dim == 1: - fig = plt.figure(1) - fig.clf() - ax = plt.subplot(111) - xn = self.gridN - xc = self.gridCC - print xn - ax.hold(True) - ax.plot(xn, np.ones(np.shape(xn)), 'bs') - ax.plot(xc, np.ones(np.shape(xc)), 'ro') - ax.plot(xn, np.ones(np.shape(xn)), 'k--') - ax.grid(True) - ax.hold(False) - ax.set_xlabel('x1') - fig.show() - elif self.dim == 2: - fig = plt.figure(2) - fig.clf() - ax = plt.subplot(111) - xn = self.gridN - xc = self.gridCC - xs1 = self.gridFx - xs2 = self.gridFy - - ax.hold(True) - ax.plot(xn[:, 0], xn[:, 1], 'bs') - ax.plot(xc[:, 0], xc[:, 1], 'ro') - ax.plot(xs1[:, 0], xs1[:, 1], 'g>') - ax.plot(xs2[:, 0], xs2[:, 1], 'g^') - ax.grid(True) - ax.hold(False) - ax.set_xlabel('x1') - ax.set_ylabel('x2') - fig.show() - elif self.dim == 3: - fig = plt.figure(3) - fig.clf() - ax = fig.add_subplot(111, projection='3d') - xn = self.gridN - xc = self.gridCC - xfs1 = self.gridFx - xfs2 = self.gridFy - xfs3 = self.gridFz - - xes1 = self.gridEx - xes2 = self.gridEy - xes3 = self.gridEz - - ax.hold(True) - ax.plot(xn[:, 0], xn[:, 1], 'bs', zs=xn[:, 2]) - ax.plot(xc[:, 0], xc[:, 1], 'ro', zs=xc[:, 2]) - ax.plot(xfs1[:, 0], xfs1[:, 1], 'g>', zs=xfs1[:, 2]) - ax.plot(xfs2[:, 0], xfs2[:, 1], 'g<', zs=xfs2[:, 2]) - ax.plot(xfs3[:, 0], xfs3[:, 1], 'g^', zs=xfs3[:, 2]) - ax.plot(xes1[:, 0], xes1[:, 1], 'k>', zs=xes1[:, 2]) - ax.plot(xes2[:, 0], xes2[:, 1], 'k<', zs=xes2[:, 2]) - ax.plot(xes3[:, 0], xes3[:, 1], 'k^', zs=xes3[:, 2]) - ax.grid(True) - ax.hold(False) - ax.set_xlabel('x1') - ax.set_ylabel('x2') - ax.set_zlabel('x3') - fig.show() diff --git a/notebooks/exPlotImage2D.ipynb b/notebooks/exPlotImage2D.ipynb new file mode 100644 index 00000000..f75e96d5 --- /dev/null +++ b/notebooks/exPlotImage2D.ipynb @@ -0,0 +1,201 @@ +{ + "metadata": { + "name": "exPlotImage2D" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import sys\n", + "sys.path.append('../')\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from SimPEG import TensorMesh" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test 1D Plots\n", + "\n", + "For 1D nodal or cell-centered plots are supported.\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x0 = np.zeros(1)\n", + "h = np.random.rand(51)\n", + "mesh = TensorMesh([h],x0)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 9 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "sin = lambda x: np.sin(x)\n", + "xc = mesh.gridCC\n", + "xn = mesh.gridN\n", + "\n", + "fig = plt.figure(1)\n", + "fig.clf()\n", + "ph1 = mesh.plotImage(sin(xc),ax=subplot(111))\n", + "ph2 = mesh.plotImage(sin(xn),ax=subplot(111),imageType='N')\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "png": "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\ncnKycPz+++9ndnY2SdJoNAr3CwCVSiVXrlzJtLQ0arVa9unTh2SL/n3AgAGXPVd3d3fW1tayubmZ\nEomEWVlZJMmePXsyMTGRERERwvVGjRpFJycn1tTUcOLEiQRAvV5PR0dHSqVSwdC3aNEi/uMf/2gz\nU/jmm2+E52wwGITZVWhoKO3s7Jidnc0pU6YwJSWFS5Ysob29PXft2sWLFy8KM4Bu3boxLS2NY8aM\nuez+p6enC3ad1mfxyiuvMCoqiu7u7jQYDPTx8RFmM25ubm2Mnq0fT09Purq6Cu21ta56vZ7//ve/\nKZfLGR8fz4CAAK5atYpKpZIJCQnU6/U0GAxUqVTUarWCk0XrzEAmk/Hzzz8XbBcajYbPPvssAwMD\n+eqrrzI/P1+oj52dHe3t7YUZxMcff0x3d3d6eXkJRlmZTMZnnnmGPj4+lEgklMvlQtmtI3CdTsfE\nxERmZ2ezurpamBnPmjVLaLOtzJo1i35+fvzwww/p4eHBCxcu0MbGhu+88w5Jsrq6mjY2NvT09OTo\n0aP5wAMPsFOnThw1ahR37drFPXv2MCoqit27d+cTTzzBvn37MigoiMHBwZw3bx7JFieH5ORkJiUl\nMTAwUOgbFy5coJOTE59//vk2/ffzzz+nl5cXn3jiCQ4aNEhwaPjzc3N0dBTeCSkpKcIz9/LyEu6J\nSqXi66+/TpLcu3cvbW1t6eLiQoPBQKlUSjs7O3bu3Jl1dXVCnWJiYgS7HknhfUKSe/bsYbdu3YR0\n3bt3Z//+/Tlv3jy+8MILXLVqFZ977jm6u7tTpVKxrq6OUqlU6OfV1dXU6XSCU8VfXSMtLY2xsbF8\n6qmnmJ6ezrFjxwpt+dJ2WVJSclm/bqVdZwoODg6QyWQ4f/481q5di6qqKuzevRsmkwnV1dVobm6G\nr68vTp48if3796OkpAQlJSWCTjEkJASdO3dGTEwMtFotFAoF9Ho99Hq9MBrv168fSkpKsHfvXhw7\ndgxubm6wtbXFf/7zH7z11ls4fvw48vPz8c0336BPnz54/fXX0bt3b4wYMQJvvPEGzp49i8rKSgCA\nXq9HWloaevXqhR9++AGJiYmYM2cO4uPjcc8992DZsmVITEzE999/j7y8PHTv3h2hoaH46quvUFpa\nioyMDAwcOBCTJ0+GVqvF1q1b8d1336FPnz746quvAAC1tbU4f/48mpqacPLkSaxduxaHDx9G//79\n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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test 2D Plots\n", + "\n", + "Plot x and y coordinates of cell-centred points" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x0 = np.zeros(2)\n", + "h1 = np.linspace(.1,.5,3)\n", + "h2 = np.linspace(.1,.5,5)\n", + "mesh = TensorMesh([h1,h2],x0)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 11 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "fig = plt.figure(1)\n", + "fig.clf()\n", + "ax1 = subplot(121)\n", + "ax2 = subplot(122)\n", + "mesh.plotImage(mesh.gridCC[:,0],ax = ax1)\n", + "ax1.set_title('x coordinates') \n", + "mesh.plotImage(mesh.gridCC[:,1],ax = ax2)\n", + "ax2.set_title('y coordinates') " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "pyout", + "prompt_number": 12, + "text": [ + "" + ] + }, + { + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAETCAYAAAA23nEoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGVVJREFUeJzt3XtwVOX9x/HPRlIMoCEkEeyAidFIEiABciNcYytgJ5VL\ny4jRosLghLZyLYxFy7A4SjuiAqYKkbGtlMvQAgW8VApNkyhIEm4/IMAgkZUKFAhikHAxDM/vD44L\nkQSScE422bxfMzvuyXnynO/ufA+f3SdnV5cxxggA0OwF+LoAAEDjQCAAACQRCAAAC4EAAJBEIAAA\nLAQCAEASgeCXIiMjlZubK0maPXu2nnnmGR9XBNw6+tp5LXxdAOzncrm8959//nnb5g0ICNDBgwcV\nFRVl25xAbdHXzuMdQhN26dKlBj8mn2OE0+hr3yEQ6qC0tFShoaHasWOHJOno0aMKDw9XQUFBtePL\nysr0+uuvq1u3bgoLC9P48eO9+9atW6eBAweqW7duWrhwoc6dO+fdt337dj399NOKjIzUjBkzdPTo\nUe++yMhIvfXWW+rdu7fatm2ry5cv69NPP9WgQYMUGRmp7OzsKjW43W6NGjVKkuTxeBQQEKDVq1cr\nNjZW8fHxWrJkiXdsUVGR0tLSFBISorS0NP3xj3/0npz9+/eXJCUkJOiOO+7Q3//+d0nSrl27NG7c\nON1zzz36zW9+o8OHD3vne+edd5SWlqbg4GDFxMR43+6jcZkzZ45GjBhR5WcTJkzQpEmTqh1PX/tx\nXxvUyaJFi0xcXJw5d+6cGTRokJk2bVqNY4cMGWJGjRplPvvsM3Px4kXzySefGGOMyc3NNffcc4/Z\nsGGDOXDggPnxj39sZs6caYwxpqKiwrRp08YsWrTInDhxwkyYMMEMGDDAO2dkZKSJi4szBQUF5sKF\nC+b06dOmVatW5t133zVHjhwxTzzxhAkMDDT//ve/jTHGuN1u84tf/MIYY8yhQ4eMy+UyI0eONIcP\nHzbr1683LVu2NOfPnzfGGLNt2zZTWFhoLl26ZDZt2mQiIiLMhg0bvMd2uVymtLTUu11WVmZCQkLM\nmjVrTHl5uZk9e7bp3bu3McaYkydPmo4dO5oDBw4YY4z54osvqvwuGo9jx46Z1q1bm6+//toYY0xl\nZaW56667zPbt26sdT1/7b18TCPUwZMgQ07VrV5OQkGC+/fbbasd8/fXXplWrVqasrOy6fRMmTDDT\np0/3bm/YsMHEx8cbY4xZvXq1SUtL8+6rqKioMk9kZKR58cUXvftXrFhh+vXr590uLS01LpfLe+LM\nnDnzuhNn27Zt3vGdO3c2//znP6t9DC+88IJ59tlnvdvfP3Hefvtt88wzz3i3L126ZO666y5z/Phx\nU1ZWZkJDQ837779f43OExuPhhx82ixYtMsYY895775kuXbpUO46+9u++ZsmoHsaOHauSkhKNHz9e\ngYGB1Y7ZtGmTIiIiFBoaet2+zZs3KzEx0budmJio3bt368yZM9q0aZN69uzp3deqVStFR0dr8+bN\n3p+lpqZ67xcVFSkhIcG7HRUVpeDg4BvW3717d+/9u+++2/vW/ciRIxo3bpzi4+N15513au7cudq1\na1eN82zcuFFLly5VSEiIQkJCFBYWpoqKChUUFCg0NFR//etfNXfuXN19992aNGmSTp48ecO64DtP\nPfWUd5llyZIl3uWY76Ov/buvCYQ6Onv2rCZNmqSxY8dq5syZOn36dLXjevfurS+++EKnTp26bl+f\nPn20detW7/bWrVu9zdq3b19t27bNu6+iokKfffaZevfu7f1ZixZXLw5LSUnRzp07vdulpaUqLy+v\n12N76aWXVFlZqQ8//FDl5eWaPHmyLl++7N0fEBBQ5Y9vP/rRj/Tkk0/q9OnT3tvZs2e969E/+clP\ntHHjRu3du1eHDh3SK6+8Uq+64LyhQ4dq165d2rNnjz744AM98cQT1Y6jr/27rwmEOpo4caJSUlL0\n9ttvKyMjQ+PGjat2XNu2bTVw4EBNmTJFBw8e1IULF7yvhoYOHarly5crNzdXBw8e1Jw5czRs2DBJ\n0sCBA1VSUqI//elPOnHihH73u98pOTm52ldkkjRo0CBt375dS5cu1dGjRzVr1qwqJ1ZdHD16VO3a\ntVNoaKjy8vK0ePHiKvsTExOrnPAjR47U6tWrtWbNGlVUVKiiokIffPCBzp49qwMHDig3N1cXL17U\nD37wA7Vs2VJ33HFHveqC84KCgvTzn/9cjz/+uFJTU9WxY8dqx9HX/t3XBEIdrF27Vv/617+0YMEC\nSdLrr7+u7du3a/ny5dWOf+edd9S1a1f99Kc/VadOnfS3v/1NkpSenq65c+dq9uzZGjZsmIYOHapp\n06ZJklq3bq3c3Fzl5+crOTlZQUFBWrp0aY01tW3bVuvXr9ef//xnpaWlKSUlpcrJ7HK5qly/fe39\n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\nIAfeIdTmGyFTU1O1d+9e7/bJkycVFRV13VzfnVzcuDl1o7e5+eutPmwPhNp8I2RqaqpWrVqlU6dO\nadmyZYqNjbW7DMB29Db8nSNLRjf7RsiUlBT17dtXSUlJateunZYsWeJEGYDt6G34NdMI5Ofnm5iY\nGHP//febN954o9oxv/3tb829995revbsafbt21fnOfbt22d69eplWrZsaV599VXbH4NdavNcGGNM\nUVGRue2228yqVasasLqm6WbP6ZkzZ8yUKVNMQkKC6dWrlzl48GCDHNeY5tPXxtDbdnOirxtFIHTv\n3t3k5+cbj8djOnfubE6ePFllf2FhoenTp485deqUWbZsmcnIyKjzHCdOnDDFxcXmhRdeaNQnzs0e\nhzHGXLp0yTz44IMmIyPDrFy50gdVNi03e05zcnLM+PHjjTHGbN682fzsZz9rkOM2p742ht62mxN9\n7fOvrrDj2u7azBEeHq6kpCQFBgY6+GhuTW0ehyRlZ2drxIgRCg8Pb+gSm5zaPKe5ubnKyMiQJKWl\npengwYMNctzm0tcSvW03p/ra54Fgx7XdtZmjKajN4zhy5IjWrl2rX/7yl5JudEkjpNo9p4MHD9by\n5ct1/vx5rVu3Trt379ahQ4ccP25z6WuJ3rabU33tk88h1JWp5jKq5toskyZN0h/+8Ae5XK5burwM\nV40cOVJffvmlBgwYoM6dOys6OlotW7Z0/Lj0dVX0tr3q09c+f4dgx7XdtZmjKajN49i2bZsee+wx\n3XvvvVq1apV+9atfad26dQ1dapNRm+e0VatWmjFjhoqKirRgwQIFBQXphz/8oePHbS59LdHbdnOq\nr30eCHZc212bOb7TmF911OZxfP755zp06JAOHTqkESNGaMGCBRoyZIgvym0SavOclpeX69tvv9W5\nc+f0+9//XgMHDmyQ4zaXvpbobbs51tc2/tG73vLy8kxMTIy57777zPz5840xxixcuNAsXLjQO+a5\n554zkZGRpmfPnmbv3r11nuPYsWOmY8eO5s477zRt27Y1nTp1Mt98800DPLq6qc1z8Z2nn36aS/Nq\n4WbP6ebNm80DDzxg7r//fjNq1ChTUVHRIMc1pvn0tTH0tt2c6GuXMY38pQUAoEH4fMkIANA4EAgA\nAEkEAgDAQiAAACQRCE1ecXGxEhISdPHiRVVUVKhr165Vrm0Hmip6u+FxlZEfmDFjhi5cuKDz58+r\nU6dOeu6553xdEmALerthEQh+oLKyUklJSQoKCtKnn37arL/+AP6F3m5YLBn5gbKyMlVUVOjs2bM6\nf/68r8sBbENvNyzeIfiBIUOG6PHHH9fnn3+uY8eOKTs729clAbagtxtWk/i2U9Rs8eLFatmypR57\n7DFdvnxZvXv3Vl5entLT031dGnBL6O2GxzsEAIAk/oYAALAQCAAASQQCAMBCIAAAJBEIAAALgQAA\nkCT9PxL88fDsDe+RAAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test 3D Plots\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "x0 = np.zeros(3)\n", + "h1 = np.linspace(.1,.5,3)\n", + "h1 = np.r_[1,2,1]\n", + "h2 = np.r_[1,3]\n", + "h3 = np.linspace(.1,.5,5)\n", + "\n", + "mesh = TensorMesh([h1,h2,h3],x0)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 1 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "ax1 = ax=subplot(131)\n", + "ax2 = ax=subplot(132)\n", + "ax3 = ax=subplot(133)\n", + "a1 = mesh.plotImage(mesh.gridCC[:,0],ax=ax1)\n", + "a2 = mesh.plotImage(mesh.gridCC[:,1],ax=ax2)\n", + "a3 = mesh.plotImage(mesh.gridCC[:,2],ax=ax3)\n", + "\n", + "ax1.set_title('x coordinate')\n", + "ax2.set_title('y coordinate')\n", + "ax3.set_title('z coordinate')\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stderr", + "text": [ + "/Users/larsruthotto/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/figure.py:362: UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure\n", + " \"matplotlib is currently using a non-GUI backend, \"\n" + ] + }, + { + "output_type": "pyout", + "prompt_number": 2, + "text": [ + "" + ] + }, + { + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAWsAAAEICAYAAACZJtWMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtclHXe//HXDAwIHhEV8IDjSnkW8IDnnLTMSjRzXbXS\nDmpZ6zHLvdvsZuzXbQdNWrdy1c12uzPN9rY8tFoZjeYJS1GTPAeKiikoICDK4fv7Y3ASBYaZYQau\n2c/TxzweM36vw4d5Mx8uvtc1jE4ppRBCCFGr6Wu6ACGEEPZJsxZCCA2QZi2EEBogzVoIITRAmrUQ\nQmiANGshhNAAadaVMBqNJCQkADB//nwmT55cwxWJ6iC5eh+TycQHH3wAwMqVK7nvvvtquKLq51vT\nBdRmOp3Odv/Pf/5ztW1Xr9dz4sQJfve731XbNkXVSa7eR6fT2XJ99NFHefTRR6tlu0ajkRUrVjBo\n0KBq2Z4r5MgaKCoq8vg+5b1I7ie5eh+llEefY51OV2syrZFmffLkSYKDg0lKSgLg3LlzNG3alG3b\ntpW7fEZGBosWLaJLly40adKEadOm2cbWr1/PvffeS5cuXfjb3/5Gfn6+bWzfvn088cQTGI1GXnnl\nFc6dO2cbMxqNvP/++/Tt25dGjRpRUlLCrl27GDJkCEajkb/+9a9lajCbzYwfPx6A1NRU9Ho9a9eu\npUOHDnTt2pWPP/7YtuyePXvo06cPQUFB9OnTh3fffdfWOO666y4AIiMjqV+/Pp999hkABw8eZMqU\nKYSHhzN79mxOnz7t9PNbUxYsWMDvf//7Mv83ffp0Zs6cWe7ykqs2fPrpp9SvX9928/f35+677y53\n2dzcXJYtW0bv3r1p3LgxI0eOtI1ZLBZGjRrFHXfcwVtvvcXly5dtY8eOHWP69OmEh4czY8YMjh8/\nbhszmUzMnz+fIUOG0LBhQ1JSUkhOTuYPf/gDzZs35+WXXy5Twz/+8Q8GDBhge6zX61m5ciVRUVFE\nREQQHx9vGzt58iSDBg2iSZMmdO3alTfffJPc3FwAxo8fz+nTp4mNjaV+/fosXLjQts6cOXNo3bo1\nkydP5ueff3bh2XWAqiHLly9XHTt2VPn5+WrIkCHqxRdfrHDZ4cOHq/Hjx6vjx4+ra9euqe3btyul\nlEpISFDh4eHqm2++UceOHVODBw9WcXFxSiml8vLyVL169dTy5cvVhQsX1PTp09XAgQNt2zQajapj\nx45q27ZtqqCgQF2+fFkFBgaqf/7zn+rs2bPq0UcfVQaDQX377bdKKaXMZrN67LHHlFJKpaSkKJ1O\np8aMGaNOnz6tvvrqK+Xv76+uXr2qlFJq7969KjExURUVFakdO3ao1q1bq2+++ca2b51Op06ePGl7\nnJGRoYKCgtQXX3yhsrOz1fz581Xfvn2r5Xn2pPT0dFW3bl2VlZWllFKqsLBQNWvWTO3bt6/c5SVX\n7cnJyVEdOnRQy5YtK3d8+vTpaujQoSopKUkVFRWpbdu2KaWU+uWXX1SjRo3UZ599ps6cOaPGjBmj\nHn/8cdt6rVu3Vq+99prKyMhQr7/+ujIajbaxgQMHqubNm6uNGzeqwsJCdf36ddWsWTO1cOFCdfHi\nRfX8888rPz8/9cEHHyillPrwww9V//79bevrdDo1aNAgdfjwYbV3715Vv359deLECaWUUidOnFBb\ntmxR169fVwcOHFDdunVTy5cvt61rNBpt3ytKKVVUVKSaNWumPvzwQ5WTk6P++c9/qpYtW7r+xFZB\njTVrpawv1s6dO6vIyEh1/fr1cpfJyspSgYGBKiMj47ax6dOnq5deesn2+JtvvlFdu3ZVSim1du1a\n1adPH9tYXl5eme0YjUb16quv2sY//fRTNWDAANvjkydPKp1OZwsqLi7uthf13r17bcu3a9dObdq0\nqdyv4eWXX1ZTp061Pb71Rb1s2TI1efJk2+Mb3xDnz58vd3u12dChQ23f7Bs2bFCdOnUqdznJVXuK\ni4vVgw8+qJ577rkKx5s3b66SkpJuG1u0aJEaN26c7fHx48dVcHCwKi4uVvv27VNhYWFllm/RooXt\nh/zAgQPVU089ZRtLTExUrVq1sj3Oz89X/v7+lTbr//u//7M9vu+++9SSJUvK/RqWL1+uhg0bZnt8\na7P++uuv1b333ltmnaioKLVnz55yt1edanTOetKkSSQnJzNt2jQMBkO5y+zYsYPWrVsTHBx829jO\nnTvp3r277XH37t356aefyMnJYceOHXTr1s02FhgYyB133MHOnTtt/9erVy/b/T179hAZGWl7/Lvf\n/Y6GDRtWWn9UVJTtflhYmO3X8bNnzzJlyhS6du1KgwYNiI+P5+DBgxVuZ8uWLaxcuZKgoCCCgoJo\n0qQJeXl5fP/995XuvzZ6/PHHbVMHH3/8sW2K4VaSq/a8/PLL5OXlsXjx4nLHjxw5QnZ2dpnn74Zb\nM42IiKCoqIjk5OTbMgXo0aMH27dvB6zzxjdnmpiYWCbTgIAA2rdvX2ntt2Z69uxZwDptM2PGDHr2\n7EnDhg2ZNWuW3Uy///57W6ZBQUGcOHGiwinc6lRjzTo3N5eZM2cyadIk4uLiysxf3axv376cOnWK\nzMzM28b69evHjz/+aHv8448/2l5I/fv3Z+/evbaxvLw8jh8/Tt++fW3/5+v728UwMTEx7N+/3/b4\n5MmTZGdnO/W1vfbaaxQWFvLvf/+b7OxsZs2aRUlJiW1cr9eXOWkxaNAgJkyYwOXLl2233Nzc2+Z/\ntWDEiBEcPHiQQ4cO8eWXX1Z4Vl5y1ZbVq1fz6aef8q9//QsfH59yl2nfvj0NGza0nYu62a2ZHj9+\nHB8fHzp16kS/fv3Yt29fmeX37t1bZt755kx79erFgQMHbI+vXr3KkSNHHPp6blw58t5773H06FHW\nrFlDVlYW8fHxZTL18fG5LVOTyVQm0ytXrjB79myH9u+MGmvWM2bMICYmhmXLlvHggw8yZcqUcpdr\n1KgR9957L88//zwnTpygoKDAdhQ1YsQIVq1aRUJCAidOnGDBggU89NBDANx7770kJyezYsUKLly4\nwNy5c+nZs2e5R3IAQ4YMYd++faxcuZJz584xb968Mt8gjjh37hyNGzcmODgYi8XCRx99VGa8e/fu\nZb5xx4wZw9q1a/niiy/Iy8sjLy+PL7/80naiQ0sCAgIYNWoUjzzyCL169aJly5blLie5akdSUhLT\npk3j888/r/B5BusPq9GjRzN37lz2799PYWGh7YhzxIgRfPXVV6xdu5azZ88SFxdHbGwser2e6Oho\n/Pz8eP3118nIyOCtt97C19e3zNHwzQ2zR48eXLt2jfj4eC5evMgrr7zi0BUb6qYrSs6dO0dQUBDN\nmjXjhx9+4N133y2zbPfu3cscHNxzzz389NNPfPTRR1y+fJmCggIsFovtSN2daqRZr1u3jq+//pol\nS5YAsGjRIvbt28eqVavKXf6DDz6gc+fODBs2jFatWrFmzRrAepY4Pj6e+fPn89BDDzFixAhefPFF\nAOrWrUtCQgJbt26lZ8+eBAQEsHLlygpratSoEV999RUffvghffr0ISYmpkyjufk6zhuPK2I2m9m/\nfz8tW7ZkwYIFTJ06tczyL7zwAgsXLiQoKIh//etftn1/99133Hnnndxxxx23NQItefzxxzl06FCF\nUyA3SK7asH79erKysujfv7/tipAHH3yw3GVfe+01YmNjmThxIiEhIbYpkzZt2vDZZ5/xv//7vwwc\nOJCuXbuyaNEi23qbN2/m7NmzREdHk5aWxubNm8ts9+bnWa/Xs2XLFnbs2EFkZCT+/v7069evzLKV\nZXrz+KxZs7h69SqtW7dm9uzZPPfcc2WWnzJlChs3bqRx48YsWrQIHx8fLBYLR48epXv37oSHh/P2\n22+XORp3F51y5EeSEFVw+vRpOnTowK+//kq9evVquhwhvILdI+vly5fTt29funfvXuH1skKb3JFt\nSUkJ8+fPZ8qUKdKoa4i8Zr1UZZeKZGZmKqPRqHJzc1VxcbG6//771ebNm918gYrwBHdkm5ubq+rV\nq6cGDBigMjMzq6lS4Qh5zXqvSs+0BAQEoJSynT3Pz88nKCjIIz9EhHu5I9u6dety5cqV6ihPOEle\ns96r0mmQgIAAlixZgtFoJDQ0lH79+hETE+Op2oQbSbbeSXL1YpUddl+4cEG1bt1aHT9+XGVkZKi7\n775bbdy4scwygNxq0a2qJFtt3SRX77w5otJpkD179tC7d28iIiIAGD16NNu2bSvnsh1zhdt4RV2v\nbBcAbDV/z0DzgArHfXTzKxyLUwqz2cy8eRVfcuVqDZXt/+YazGaz3f1UxtVtVHbZ2a2qmq3z1YAF\nMDm57o3nVDdvngsVVE8N3pjrGVXx9dL2LDLn87w50On1W5DhcrYW/rNyBTvTIAMGDODHH3/k0qVL\nXLt2jU2bNjFkyBCnixO1h2TrnSRX71XpkXWDBg2YO3cuI0eOJD8/n6FDh1b4pxGFtki23kly9V52\n33f7xBNP8MQTT7i1iNamcJfWN5lMzJu3tcZrcFV1bMMR7s7W6OL6JpOJrS5Og1RHDa7ytlz7mMr/\no2uOcDVbYzXs31WeztXldzBa513MFY5XZb7YHntz1tY6Kg7e1RqqMmddG1T3p1rodDqX5qxdceM5\nnefgvJ47aqhp7sjVlTlrV7UgA6i5bLWaq3yslxBCaIA0ayGE0ABp1kIIoQHSrIUQQgOkWQshhAZI\nsxZCCA2QZi2EEBogzVoIITRAmrUQQmiANGshhNAAadZCCKEB0qyFEEIDpFkLIYQGSLMWQggNkGYt\nhBAaIM1aCCE0QJq1EEJogDRrIYTQALvN+ujRo0RHR9tuDRs2ZPHixZ6oTbiR5OqdJFfvZfcDc9u1\na0dSUhIAJSUltGjRgpEjR7q9MOFekqt3kly9l0PTIFu2bKFt27a0atXKXfWIGiC5eifJ1bs41KxX\nr17NI4884q5aRA2RXL2T5Opd7E6D3HD9+nU2bNjAm2++Wc6o5ab7xtKbcDeLxYLFYnFpG5XnKsnW\nBE/kusicb7vfx2Sgj8ng0v6Efa7mWuVmvWnTJrp3707Tpk3LGTU5XYBwnslkwmQy2R7PmzfP4W1U\nnqskWxM8kevz5kBnyxNOcjXXKk+DrFq1inHjxjm0cVH7Sa7eSXL1PlVq1nl5eWzZsoWHH37Y3fUI\nD5JcvZPk6p2qNA1St25dMjIy3F2L8DDJ1TtJrt5J3sEohBAaIM1aCCE0QJq1EEJogDRrIYTQAGnW\nQgihAdKshRBCA6RZCyGEBkizFkIIDZBmLYQQGiDNWgghNECatRBCaIA0ayGE0ABp1kIIoQHSrIUQ\nQgOkWQshhAZIsxZCCA2QZi2EEBogzVoIITRAmrUQQmiA3Wadl5fH448/zp133knHjh3ZvXu3J+oS\nHiDZeifJ1TvZ/cDcuLg4wsPDWbp0Kb6+vuTl5XmiLuEBkq13kly9k91mvWXLFnbt2kWdOnUAaNiw\noduLEp4h2XonydU7Vdqsz5w5Q0FBAc8++yyHDx/m4YcfZsaMGbZvgt9YbrpvLL0Jd7NYLFgsFqfW\nrWq2N2/diCTrCZ7IdZE533a/j8lAH5PBlZJFFbiSK4BOKaUqGjxx4gR33nkn69at45577uGZZ57h\nnnvuYcKECb9tQKcDzBXu4BV13enibvDRza9wLK60fJ1unttqqGz/N9dQ03Q6HZXEWUZVszW7qVZ7\nbjyn83S6GqrAu3M9o4LdVa5dLcgAai5bLeYKdk4wRkRE0K5dO2JjYwkICGDcuHFs2rTJ5SJFzZNs\nvZPk6r3sXg1yxx13kJiYSElJCV9++SX33HOPJ+oSHiDZeifJ1TvZbdYLFy5kxowZdOvWjTp16jB2\n7FhP1CU8QLL1TpKrd7J7Ncidd94p12l6KcnWO0mu3knewSiEEBogzVoIITRAmrUQQmiANGshhNAA\nadZCCKEB0qyFEEIDpFkLIYQGSLMWQggNkGYthBAaIM1aCCE0QJq1EEJogDRrIYTQAGnWQgihAdKs\nhRBCA6RZCyGEBkizFkIIDZBmLYQQGiDNWgghNECatRBCaIDdz2AEMBqNNGjQAB8fHwwGA3v27HF3\nXcIDJFfvJLl6pyo1a51Oh8VioXHjxu6uR3iQ5OqdJFfvVOVpEKWUO+sQNURy9U6Sq/ep8pH1oEGD\naNOmDU899RTDhw+/ZQnLTfeNpTfhbhaLBYvF4vT69nOVZGuCJ3JdZM633e9jMtDHZHB6f6JqXM5V\nVeFHcHp6OmFhYRw+fJjY2Fi2b99OaGiodQM6HWCucN1X1HWni7vBRze/wrG40vJ1unluq6Gy/d9c\nQ03T6XQOHVFVluuN7VWWrTspFVdaQ8W5eqqGmuaOXM+oYHeUWiUtyABgnk5XI/vX6uu1StMgYWFh\nAHTo0IHhw4ezYcMG56oTtYrk6p0kV+9kt1nn5+dz5coVAC5evMhXX33F0KFD3V6YcC/J1TtJrt7L\n7pz1r7/+ysiRIwEIDg5m9uzZtGrVyu2FCfeSXL2T5Oq97DbrNm3asH//fk/UIjxIcvVOkqv3kncw\nCiGEBkizFkIIDZBmLYQQGiDNWgghNECatRBCaIA0ayGE0ABp1kIIoQHSrIUQQgNqRbOew0uE0RyA\np5hEF7raxiKI4KmdO3nhwgX+dPkyY9evJ2baNI/t/2ZNOnTgpdxc5l53/Y9T/Sc4f3423bpZ/07F\n1q1PMHZsZ9vYkCFt2bnzKS5ceIHLl//E+vVjmTYtxqM13KxDhybk5r7E9etzq70GbxPKzxiIBKAJ\n6wngYduYP3fThE2EcoQwTtKYldRlcrXXMPv8ecK6dQPgia1b6Tx2bLnLedNrtkp/ItWdGtMYAwbO\nk44PPjSnBac4ZRsv4Bq74+O5cOgQJUVFhPfvzwPvvkt+RgaHVq1y+/5v8A0IYPSaNaR8+y0R8rcW\n7GrbNojAQANJSekYDHp69GjO9u2nbePZ2QXEx+/m0KELFBWV0L9/OO+++wAZGfmsWnXIIzXcEBDg\ny5o1o/n22xSGDo2oln17Kx/aoCOQQg4CBgxEcZ3dtvEScsjjbxRyGCjGj1405A1KyOQqa6ulhqC2\nbTEEBpKelITeYKB5jx6c3r79tuW87TVb4806nNacIQ2FojktuEo+OWTbxs+QRvpnn9keXzp+HKPJ\nRLfJk6ulWdvb/w0PvPcep7Zt42xiIhH33+/yfr1dv37hJCaeRSno2bMFmZn5nDmTYxtPTDxLYuJZ\n2+Pjxy9hMhmZPLlbtTVrezXc8N57D7Bt2ykSE89y//3SrCvjTwzX2Qso/IimhMsUc842XsheCtlr\ne1zESfzpR10mVFuzDu/Xj7OJiaAULXr2JD8zk5wzZ25bztteszXWrF/C+uumDz7o0PESc9Gjxxdf\nXmIuCsUb/E+ZdW78FI0YOpTtr7/usf13HT+e5t27s7xnTzqPG+fSfr3d5ct/QimFv78ver2OS5fm\nYDD44O/vw6VLc1AKgoPfKrPOjaPeoUMjeP3124+Q3FnD+PFd6d69OT17LmfcuPKnSASEcRJQgB86\n9IRxAvBFh3/pfUU6d9yylgE/ovBnEFf4i8s1/OnyZZRS+Pr7o9PrmXPpEj4GAz7+/sy5dAmU4q1g\n69/p9sbXbI016/f5K6DjaaawgXWkk84fGMNBDnCEw7ctPystjcCmTfExGPhmzhx2v/OOR/bfhKYM\nWTiDf5hMFHvBvJe7de26BJ1Ox+7dE5ky5Uv27z/P6tWj+OSTQ6xbd+S25dPSZtG0aSAGgw9z5nzD\nO+/sLmer7qmhffsmLFw4BJPpH1y/Xuzyfr3ZBe4CdDRlM5d5gUIOEcRyrvJ/FLDptuVDOYieYMBA\nDmby+JvLNSzp2hWdTsfE3bv5csoUzu/fz6jVqzn0ySccWbfOtlyT9u0ZsnCh171ma6xZZ5NNCCHo\n0XOUI/jhRyhhrOR/ySf/tuVX9OtHYJMmtBk8mL4vvoghIIBtr73m1v374MMYxpEwdy4Zh2//ASJu\nl5aWQ5cuzTAYfNiw4Sj16vkRFRXK8OGryci4Pdd+/VbQpEkggwe34cUX+xIQYOC117a5vQY/Px8+\n+2w0c+cmcPhwhkv7+09QzFl86QgYKOArdNTFj85c4jFKyLxt+Ys8gJ5g/BlAPaaiI4ArvO1SDTlp\naTTr0gUfg4GjGzbgV68eoVFRrB4+nPwMa4Y+fn6M/uwzr3zNVuljvSrdgBMf6zWV6TSkEfrSf0UU\noUOHL74UUgjAX3mHHKzzi7d+rFa/OXPoO2cOC0NC+O+iotI6qv6xXlXdvx49M5mNKvztqEun06HT\n6ykpLua7V15hx5tvavZjgqqyPUc+1uvQoWcJD2+Ir68eg8GHq1cL0et1BAQYyMuzZtChw3ucPXul\n3PXnzOnHnDl9CQlZSFHRf5fW4NjHelW1Bl9fPb/8MoPi4pIyX69er6O4uIRXXvmON964x6F9u4s7\ncnXkY72asR0fWqLDBzCgKAB06AhAlR7Y/EofSkgvd/16TKMe0zhPB6DYqY/1evbQIRqGh6P39cXH\nYKDw6lV0ej2GgACu5+UB8F6HDuh9fZnxyy+UFFf8mr3njTeqvF93cjTXGjmy/oh/4oMPI3mYYxwj\nmZ8wMYhiivmerQBcofwXNFh/evrVq4dO79yVh1Xdvw4d77EYfeQy27rtH3oI07x5/C0ykrwLF5za\nv7caOnQlfn4+rFgxnE2bTrBmTTJxcQO5dq2YN96wzkWnp+dWuL6fnw/16vmh1zv/2XxVrUGng86d\n3y+z7kMPtWfePBORkX/jwoW8WtOsa1omfwD8COIvFPAtV1lHfV4ErnGFxQCU8GuF6+vwQ09drFcK\nOzfdtHLoUHz8/Bi+YgUnNm0iec0aBsbFUXztGttLm29uejrodLzfuey5h1tfs7WlWTuqRpp1Dtno\n0BFCKOv4gstcJoRQvuNbLnO5zLJ96Ufm/fdz6fhx6jRqRHj//vSaOZNDq1dTUljo1v0rFBe5iM9N\nv05dibFeC+xtv2JVhzNnctDrdXTtGsLTT28kJSWLLl1CMJstpKRklVn2+ef7cPjwRY4fv0SjRnXo\n3z+cmTN7sXr1IQoLSyrYQ/XWcOv0R0zMlXL//z+d9WoPPQY6kcXzFHMKAx24wlsU33KZaz2eo5Bj\nFPELehrgR2/q8gz5fA4493oFyDlzBp1eT0jXrmx8+mmyUlII6dIFi9lMVkpKmWVvfW16y2u2xuas\nw2hOEUVkkoE//jSjGadIvW05PXrufestGhmN5GdkkJKQwOYZM0hes8Yj+y9XLZn2qI2io0O5dq2Y\nY8cyadDAn06dmrJtWznXrfvqeeutezEaG5GRkU9CQgozZmxmzZpkj9VQHom2fAa6oLhGESfRUR8D\n7bnGrnKW9KEhcfjQihIucY3vyebPXGVdOcs6JjQ6muJr18g8dgz/Bg1o2qkTp7ZV8fyGFwRbI3PW\njrp1zvpmN+aLHZmzrs7931xDTavpOevqpFRcaQ2OzVm7o4aaVtNz1tXNmTnr6qTV12uVJn2Li4uJ\njo4mNjbW6cJE7SO5ei/J1vtUqVn/5S9/oWPHjqVHWsJbSK7eS7L1QsqOtLQ0NXjwYJWQkKCGDRt2\n23gVNiE8xJEs7OXq6PaE+ziag7xmtcHRHOyeYJw1axYLFiwgJ+f2v6lwg9lstt03mUyYTCbXfoKI\nKrFYLFgsFqfWrUquINnWBFdyBXnN1lau5lrpCcaNGzeyadMm3nvvPSwWC2+//TYbNmwouwE5wVhr\naqjqCYuq5ArWbM3OFuyiG89pTZ2Eqk01OHIiqjpes+5mO3lcQ3+gWZVeGar7uWb2D6A6VvMJxp07\nd7J+/XratGnDuHHjSEhIYMKECS4XKmqW5Oq9JFvvVWmznj9/PmlpaaSkpLB69WoGDRrERx995Kna\nhJtIrt5LsvVeDv0iImeWvZPk6r0kW+9R5XcwDhw4kIEDB7qzFlEDJFfvJdl6l1rxGYxCCCEqJ81a\nCCE0QJq1EEJogDRrIYTQAGnWQgihAdKshRBCA6RZCyGEBkizFkIIDZBmLYQQGiDNWgghNECatRBC\naIA0ayGE0ABp1kIIoQHSrIUQQgOkWQshhAZIsxZCCA2QZi2EEBogzVoIITRAmrUQQmiA3WZdUFBA\nr169iIqKonfv3sTHx3uiLuFmkqt3kly9l90PzK1Tpw7fffcdgYGBXLt2je7duxMbG0tERIQn6hNu\nIrl6J8nVe1VpGiQwMBCA3NxcioqK8Pf3d2tRwjMkV+8kuXonu0fWACUlJURHR5OcnMw777xDq1at\nblnCctN9Y+lNuFtq6Q1Amc0Or28/V0m2JqTi/lwl2RqwxwI/WAAwN3V89SodWev1eg4cOMCJEyd4\n//33SUpKumUJ0003o+NVCKcY+e1ZNzvxorafqyRbE4y4P1dJtgbEmOCPZvij2blcHVnYaDTywAMP\nkJiY6PCORO0luXonydW72G3WGRkZZGVlAZCZmcnXX3/NiBEj3F6YcC/J1TtJrt7L7px1eno6jz/+\nOMXFxYSGhvLCCy8QFhbmidqEG0mu3kly9V52m3WXLl3Yt2+fJ2oRHiS5eifJ1XvJOxiFEEIDpFkL\nIYQGSLMWQggNkGYthBAaIM1aCCE0QJq1EEJogDRrIYTQAGnWQgihAdKshRBCA6RZCyGEBkizFkII\nDZBmLYQQGiDNWgghNECatRBCaIA0ayGE0ABp1kIIoQHSrIUQQgOkWQshhAZIsxZCCA2w26zT0tK4\n++676dSpEyaTiU8++cQTdQk3k1y9k+Tqvex+YK7BYCA+Pp6oqCgyMjKIiYkhNjaW+vXre6I+4SaS\nq3eSXL2X3SPr0NBQoqKiAGjSpAmdOnXixx9/dHthwr0kV+8kuXovu0fWNztx4gTJycnExMTcMmK5\n6b6x9CbcLbX0BqDMZqe3U3GukmxNSMX9uUqyNWCPBX6wAGBu6vjqVW7WV65cYcyYMcTHx1O3bt1b\nRk2O71m4zMhvL7E4s5l58+Y5vI3Kc5Vka4IR9+cqydaAGJP1Bpg74nCuVboapLCwkFGjRjF+/HhG\njBjhaIndTW24AAARp0lEQVSilpJcvZPk6p3sNmulFBMnTqRz587MnDnTEzUJD5BcvZPk6r3sNusd\nO3bw8ccfk5CQQHR0NNHR0WzevNkTtQk3kly9k+TqvezOWffv35+SkhJP1CI8SHL1TpKr95J3MAoh\nhAZIsxZCCA2QZi2EEBogzVoIITRAmrUQQmiANGshhNAAadZCCKEB0qyFEEIDpFkLIYQGSLMWQggN\nkGYthBAaIM1aCCE0QJq1EEJogDRrIYTQAGnWQgihAdKshRBCA6RZCyGEBkizFkIIDbDbrJ966ilC\nQkLo0qWLJ+oRHiK5ei/J1jvZbdZPPvmkfOCmF5JcvZdk653sNusBAwYQFBTkiVqEB0mu3kuy9U4y\nZy2EEBrgWz2bsdx031h6E+6WWnoDUGazW/ZhxnTTIyOeyjbOtn+zR/ZXu2pI5Uay7spVXrM1YI8F\nfrAAYG7q+OrV1KxN1bMZ4RAjv73E4sxm5s2b54a9mNywTVE5IzeSNZvjJFdvEWOy3gBzRxzOVaZB\nhBBCA+w263HjxtG3b1+OHTtGq1at+PDDDz1Rl3AzydV7Sbbeye40yKpVqzxRh/AwydV7SbbeSaZB\nhBBCA6RZCyGEBkizFkIIDZBmLYQQGiDNWgghNECatRBCaIA0ayGE0ABp1kIIoQHSrIUQQgNqRbOe\nw0uE0RyAp5hEF7qWGW/Svj2Pff01czIzeS45mX5/+pNHa2jasSO/X7OGqUeP8kpREcOWLav2/dur\nIerJJ5mQkMALFy4wKy2NYUuX0nbIELfUUV3On59Nt25hAGzd+gRjx3YuM96+fRO+/voxMjPnkJz8\nHH/6Uz+P1tCxY1PWrPk9R49OpajoFZYtG1bt+7dXw5NPRpGQMIELF14gLW0WS5cOY8iQtm6po7rU\nilzToVs36/2tFhg79rexjh1hzadw9AgUFcKypdW+e2sNd0K3OqU1tIaxDX4be7IRJLSGC3dC2h2w\nNAyG1HVtfzXerBvTGAMGzpOODz40pwWnOGUbDySQibt2UadRIz4bPZqjGzZgMpsZ8PLLHqvBNyCA\nrNRUtr76Kr8eOABKVdu+q1qD8e67OfL556wcOpRPHnyQgqwsxm3cSKM2baq9lurQtm0QgYEGkpLS\nMRj09OjRnO3bT9vGmzQJZNeuiTRqVIfRoz9jw4ajmM0mXn55gMdqCAjwJTU1i1df3cqBA7+6I1a7\nNdx9t5HPPz/C0KErefDBT8jKKmDjxnG0adOo+oupBrUjVwgMhKQkMBigRw/Yvv238YAASE2FV/8f\nuOnlSlsDBOogqQAMQI8A2J7/2/jdgfD5FRh6Gh48DVnFsDEc2hic32c1/YlU54XTmjOkoVA0pwVX\nySeHbNt4D2LQ6fX8PSYGgJSEBK7n5NB71ix2LljgkRrS9+4lfe9eAKInTqyWfTpawxcTJpRZ/teD\nBzGaTPSZPZtNU6e6pSZX9OsXTmLiWZSCnj1bkJmZz5kzObbxZ57pjl6vIybm7wAkJKSQk3OdWbN6\ns2DBTo/UsHdvOnv3pgMwcWJ0tezT0RomTPiizPIHD/6KyWRk9uw+TJ26yS01ucLVXK9fL66GGiAx\nkdIaIDMTzpz5bXzvXusNYOJTLu+u/BoCIfEqKKBnAGQWw5mi38YnnCu7/MELYKoLs4Nh6nnn9llj\nzfol5gLggw86dLzEXPTo8cWXl5iLQvEG/0M4rTl/4ECZddOTkgho3JgmHTp4pAZ3cqkGnQ6dvsZ/\nOSrj8uU/oZTC398XvV7HpUtzMBh88Pf34dKlOSgFwcFv0a9fKw4cKPtdm5SUTuPGAXTo0MQjNbiT\nKzXodKDX69xan6OqK9cDB351voZL1gbt7w96PVzKtB5Z+/tb7ysFwa5969ivoZ21QfvrrNMSl9qB\nQWd9fKl0LPho+evqcG0qo8aa9fv8FdDxNFPYwDrSSecPjOEgBzjCYdtyDWjAqaSyH/55PinJOtay\npUdqcCdna+j+9NM069SJz8eP90idVdW16xJ0Oh27d09kypQv2b//PKtXj+KTTw6xbt0R23ItWjTA\nYkkts25SkvVF3rJlA1xR1Rrcydkann66O506NWP8+M89UmdVVVeurjTrrpHWH2S7d8GUZ2H/fli9\nCj5ZBevWOb1Zx2o4WVqDEaakw/5rsLoFfJIN665UvN7TjaCTP4w/6/y+a+ywLJts6uCPHj1HOUIB\nVwkljJ84SHbpPys3TDg5XIP7OFNDu+HDuS8+nvWTJpF5tIIf4zUkLS2Hhg39MRh82LDhKJcvXyUq\nKpTVqw+RlpZDWpr1V2bljolEB2twJ2dqGD68HfHx9zFp0nqOHs10e42OqB25QsOG1qPpDRvg8mWI\nioLVq61jaWlu2/VvNRRBQ731aHpDLlwuhqg6sDrHOpZWdPs6w+tBfChMOgdHrzu/7xo5sp7KdBrS\nCH3pvz/zCjp0+ODDLF4A4K+8Q07pv7Abp31LhUZb5xdzbp6ocmMN7uJMDZ3GjGHEihVsmDyZQ7Xs\n7xYfOvQs4eEN8fXVYzD4kJ39X+j1Ovz9ffnll+kAdOjwHmfPXuHs2Su2KwpuiI4OBSgzB+rOGtzF\nmRrGjOnEihUjmDx5A6tWHXJbbc6oFbn+BOHh4OtrbdbZWdapEH9/+OWkdZkOHeGsC0eudmv4HYQb\nwFdnbdbZ7UBfOgXyS0RpDSfh7E0Ne0wDWNEcJp+DVS62khpp1h/xT3zwYSQPc4xjJPMTJgZRTDHf\nsxWAK1i/kU9zigGRfay/e5T+1A6LjiY/M5OMw85PVThSg7s4WkO3SZMYungxnz/2GIfXrnVrbc4Y\nOnQlfn4+rFgxnE2bTrBmTTJxcQO5dq2YN96wnq5PT88FYMeONP7rv/rdHCvR0WFkZuZz+HCGR2pw\nF0drmDSpG4sXD+Wxxz5n7VrPTL85olbkej/4+cGKD2DTZlizBuL+G65dgzfepLQGl75M+zWcBj+d\ntfluyoU1ORDXFK4peKP0S0u/qVFPagSLQ+Gxs7C2GlpJjUyD5JBNFpcJIZTD/Mzl0vtHOcLl0n+q\ndPrjR36gpKiISbt302bwYAbNn8+AuXNJfOcdiq87/zuFIzXofX0JiYwkJDIS//r1CQgOJiQy0uUT\nnI7U0HvmTB54/302T5/O6R07qBsSQt2QEOoEBblUQ3U6cyaH1NQsunYN4fPPj5CSkkWXLiFs3HiM\nlJQsUlKyKCmxfj1Ll/5IUVEJu3dPYvDgNsyfP4i5cwfwzjuJLl0x4EgNvr56IiNDiIwMoX59f4KD\nA4iMDHH5BKcjNcyc2Zv333+A6dM3s2PHaUJC6hISUpegoDou1VCdakeu1svxunaFzz+HlBTo0gU2\nfmm9n5ICJSXWZX19ITLSeqtfH4KDrfddfLlypghSC6FrHetleSmF0MUfNpbeTymE0hKY2RjeD4Pp\n52FHPoT4WG9BLnTcGjvBGEZziigikwz88acZzThF6m3L5ZPPB336cP/ixYxes4bc8+fZajaz4y3X\nz+ZXtYb6LVrwzL59gHVOLqxbNzqMHElWaiqL27r2Boaq1hAzfTo6vZ5hS5cybOlvV/mnWix8NHiw\nSzVUp+joUK5dK+bYsUwaNPCnU6embNt26rblMjOv0qfPByxefD9r1ozm/PlczOatvPXWDo/V0KJF\nffbtewaw5tqtWxgjR3YgNTWLtm0Xe6SG6dNj0Ot1LF06jKVLf3tTjsWSyuDBH7lUQ3WqHblaj6SP\nHYMGDaBTJ9i27fblWrSAfaWX7illffPMyJHWZt82wsUa6liPpI9dhwZ660nDbfm3Lze9sfVIeGmY\n9XaDJR8G3/60VYlO2TkjsG3bNp555hmKioqYPn0606ZNK7sBnQ4wV7j+K8r+0W+q5RRGU+sKx310\n8ysci1MKi8XC3XdvdVsNle2/NtWg0+kcOsHjarb2pQJGp9ZUKs7uc/qfUoM35Qo3Pa+DTM6XoCyg\nc259VYJ1/81c2D/AHgvEOFlDRxzO1e5B+YwZM1i6dClbtmzhvffeIyPD+XmnipyynLa/UCUsFovU\n4AT3Z5vq0trV8Zx6Qw2Oqu25QnU8r66tXy25/lAN23BApc06O9t62dhdd91F69atGTJkCImJiR4p\nTLiXZOudJFfvVemc9Q8//ED79u1tjzt27Mju3bt58MEHyyynVJxLRZhL/1VI2X8XoVtrqML+a0sN\nVeWJbM1mhdns2nPi8nPqJTVUlVZyBet0hPM1WG8u7b+ja+ubm4LZxW04RFXim2++UWPHjrU9XrJk\niZo7d26ZZbC+a0VuteRWVZKttm6Sq3feHFHpkXXPnj158cUXbY+Tk5MZOnRomWWUG9+xJNxHsvVO\nkqv3qnTOumHDhoD17HJqairffPMNvXr18khhwr0kW+8kuXovu9dZv/POOzzzzDMUFhYyffp0mjRx\n85+1Eh4j2XonydVLOTRpcoutW7eq9u3bq4iICLV48WKH1z99+rQymUyqY8eOauDAgWrlypVO1VFU\nVKSioqLUsGHDHF43NzdXTZgwQd1xxx2qQ4cOateuXQ5vY9myZapPnz6qW7duasaMGXaXf/LJJ1Wz\nZs1U586dbf+Xk5Ojhg8frlq1aqVGjBihrly54vA2XnjhBdW+fXsVHR2tZsyYofLz8x3+WpSSXG+Q\nXMuqDbkq5Xq2Ws3VpWYdFRWltm7dqlJTU1W7du3UxYsXHVo/PT1dJSUlKaWUunjxomrTpo3Kyclx\nuI63335bPfLIIyo2NtbhdWfPnq3mzp2rrl69qgoLC1VWVpZD62dmZiqj0ahyc3NVcXGxuv/++9Xm\nzZsrXWfbtm1q3759ZYJ788031dSpU1VBQYH64x//qBYsWODwNr7++mtVXFysiouL1aRJk9Tf//53\nh76WGyRXybU8tSFXpVzLVsu5Ov1O9eq4njM0NJSoqCgAmjRpQqdOnfjxxx8d2saZM2f497//zaRJ\nk5w6cbJlyxb+/Oc/U6dOHXx9fW1zflUVEBCAUors7GyuXr1Kfn4+QXb+XseAAQNuW2bPnj1MnDgR\nf39/nnrqKbvPZXnbuPfee9Hr9ej1eu677z62bnX8nXeSq5XkervakCu4lq2Wc3W6WVd0PaezTpw4\nQXJyMjGlH99VVbNmzWLBggXonfjElDNnzlBQUMCzzz5Lr169ePPNNykoKHBoGwEBASxZsgSj0Uho\naCj9+vVz+GuAss9n+/bt2bNnj8PbuNny5cuJjY11qQ6QXCXX8tVEruB6tlrOtVZ8JtSVK1cYM2YM\n8fHx1K1b9Y8A3rhxI82aNSM6Otqpn9IFBQUcO3aMUaNGYbFYSE5OZs2aNQ5t4+LFizz77LP8/PPP\npKamsmvXLr788kuHa3H2KKM8r776KvXr12f06NHVtk1nSK6S681czRVcz1bLuTrdrHv27MmRI799\nnE9ycjK9e/d2eDuFhYWMGjWK8ePHM2LECIfW3blzJ+vXr6dNmzaMGzeOhIQEJtzywbKViYiIoF27\ndsTGxhIQEMC4cePYtMmxDynds2cPvXv3JiIiguDgYEaPHs228v4UmB09e/bkcOnf5z58+DA9e/Z0\neBsA//jHP/jqq6/4+OOPnVpfcrWSXMtXk7mC69lqOtdKZ7TtuHHCIiUlxakTFiUlJWr8+PFq1qxZ\nrpShlFLKYrE4dXY5NjZW7d69WxUXF6s//vGPDp+8yc7OVm3btlWZmZmqoKBAxcbGqi1btthdLyUl\npdwTFvn5+eq5556ze8KivG1s2rRJdezYUWVkZDj0NdxKcpVcy1MbclXKtWy1nKtLzdpisaj27dur\ntm3bqr/85S8Or//9998rnU6nIiMjVVRUlIqKilKbNm1yuhZnzi4fPXpU9erVS0VGRqrZs2er3Nxc\nh7fx4Ycfqrvuukv16NFDzZ07VxUXF1e6/NixY1VYWJjy8/NTLVu2VCtWrHD4UqAb2zAYDKply5bq\ngw8+UBERESo8PNz2XD777LMOfy1KSa43SK5l1YZclXI9W63mavfvWQshhKh5teIEoxBCiMpJsxZC\nCA2QZi2EEBogzVoIITRAmrUQQmiANGshhNCA/w8I5qLIW3oKNAAAAABJRU5ErkJggg==\n", + "text": [ + "" + ] + } + ], + "prompt_number": 2 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file