diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..aef7f0e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +*.py[cod] + +# C extensions +*.so + +# Folders +docs/build/* + +# Packages +*.egg +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg +libgit +lib64 +__pycache__ + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox +nosetests.xml + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +*.sublime-project +*.sublime-workspace +docs/_build/ +*.ipynb_checkpoints diff --git a/MT Script - 3D_seogi.ipynb b/MT Script - 3D_seogi.ipynb new file mode 100644 index 00000000..a20934c1 --- /dev/null +++ b/MT Script - 3D_seogi.ipynb @@ -0,0 +1,379 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:c2a50cf942e24d516d6327746e7b170402ebdd473c32aceb3d4903d7e8396068" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from SimPEG import *\n", + "from scipy.constants import mu_0\n", + "def omega(freq):\n", + " \"\"\"Change frequency to angular frequency, omega\"\"\"\n", + " return 2.*np.pi*freq" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 3 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%pylab inline" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# M = Mesh.TensorMesh([[(100.,32)],[(100.,34)],[(100.,18)]], x0='CCC')\n", + "M = Mesh.TensorMesh([[(100.,20)],[(100.,20)],[(100.,18)]], x0='CCC')" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 5 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print M" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " ---- 3-D TensorMesh ---- \n", + " x0: -1000.00\n", + " y0: -1000.00\n", + " z0: -900.00\n", + " nCx: 20\n", + " nCy: 20\n", + " nCz: 18\n", + " hx: 20*100.00\n", + " hy: 20*100.00\n", + " hz: 18*100.00\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Setup the model\n", + "conds = [1e-2,1]\n", + "sig = Utils.ModelBuilder.defineBlock(M.gridCC,[0,0,-300],[500,500,-100],conds)\n", + "sig[M.gridCC[:,2]>0] = 1e-8\n", + "sigBG = np.zeros(M.nC) + conds[0]\n", + "sigBG[M.gridCC[:,2]>0] = 1e-8\n", + "colorbar(M.plotImage(log10(sig)))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 7, + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nIYQQgfD/AbEhAlfxML9RAAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Get the mass matrix \n", + "# The model\n", + "Msig = M.getEdgeInnerProduct(sig)\n", + "MsigBG = M.getEdgeInnerProduct(sigBG)\n", + "Mmu = M.getFaceInnerProduct(mu_0, invProp=True)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 8 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "freq = 1e1\n", + "C = M.edgeCurl\n", + "A = C.T*Mmu*C - 1j*omega(freq)*Msig\n", + "ABG = C.T*Mmu*C - 1j*omega(freq)*MsigBG" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 9 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Need to solve x and y polarizations of the source.\n", + "from simpegMT.Utils import get1DEfields\n", + "# Get a 1d solution for a halfspace background\n", + "mesh1d = Mesh.TensorMesh([M.hz],np.array([M.x0[2]]))\n", + "e0_1d = get1DEfields(mesh1d,M.r(sigBG,'CC','CC','M')[0,0,:],freq)\n", + "# Setup x (east) polarization (_x)\n", + "ex_x = np.zeros(M.vnEx,dtype=complex)\n", + "ey_x = np.zeros((M.nEy,1),dtype=complex)\n", + "ez_x = np.zeros((M.nEz,1),dtype=complex)\n", + "# Assign the source to ex_x\n", + "for i in arange(M.vnEx[0]):\n", + " for j in arange(M.vnEx[2]):\n", + " ex_x[i,j,:] = e0_1d\n", + "eBG_x = np.vstack((Utils.mkvc(M.r(ex_x,'Ex','Ex','V'),2),ey_x,ez_x))\n", + "rhs_x = ABG.dot(eBG_x)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 10 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "M.vnEy" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 11, + "text": [ + "array([21, 20, 19])" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Setup y (north) polarization (_y)\n", + "ex_y = np.zeros(M.nEx, dtype='complex128')\n", + "ey_y = np.zeros((M.vnEy), dtype='complex128')\n", + "ez_y = np.zeros(M.nEz, dtype='complex128')\n", + "# Assign the source to ex_x\n", + "for i in arange(M.vnEy[0]):\n", + " for j in arange(M.vnEy[2]):\n", + " ey_y[i,j,:] = e0_1d \n", + "# eBG_y = np.vstack((ex_y,Utils.mkvc(M.r(ey_y,'Ey','Ey','V'),2),ez_y))\n", + "# rhs_y = ABG.dot(eBG_y)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 12 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "eBG_y = np.r_[ex_y,Utils.mkvc(ey_y),ez_y]\n", + "rhs_y = ABG.dot(eBG_y)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are using splu in scipy package. This is bit slow, but on the cluster you can use mumps, which might a lot faster. We can think about having better iterative solver. " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%time\n", + "# Solve the systems for each polarization\n", + "Ainv = SolverLU(A)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Wall time: 37.7 s\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%time\n", + "e_x = Ainv*rhs_x" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Wall time: 202 ms\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I want to visualize electrical field, which is a vector, so I average them on to cell center. Also I want to see current density ($\\vec{j} = \\sigma \\vec{e}$)." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "Meinv = M.getEdgeInnerProduct(np.ones_like(sig), invMat=True)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 34 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "j_x = Meinv*Msig*e_x" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 35 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "e_x_CC = M.aveE2CCV*e_x\n", + "j_x_CC = M.aveE2CCV*j_x\n", + "# j_x_CC = Utils.sdiag(np.r_[sig, sig, sig])*e_x_CC" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 36 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then use \"plotSlice\" function, to visualize 2D sections" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "fig, ax = plt.subplots(1,2, figsize = (12, 5))\n", + "dat0 = M.plotSlice(abs(e_x_CC), vType='CCv', view='vec', streamOpts={'color': 'k'}, normal='X', ax = ax[0])\n", + "cb0 = plt.colorbar(dat0[0], ax = ax[0])\n", + "dat1 = M.plotSlice(abs(j_x_CC), vType='CCv', view='vec', streamOpts={'color': 'k'}, normal='X', ax = ax[1])\n", + "cb1 = plt.colorbar(dat1[0], ax = ax[1])" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 37 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Is it reasonable?: Based on that you put resistive target that makes sense to me; current does not want to flow on resistive target so they just do roundabout:). And see air interface. It is continuous on current but not on electric field, which looks reasonable. " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# # Get a 1d solution for a halfspace background\n", + "# mesh1d = simpeg.Mesh.TensorMesh(M.hz,M.x0[2])\n", + "# e0_1d = get1DEfields(mesh1d,M.r(sigBG,'CC','CC','M')[0,0,:],freq)\n", + "# # Setup x (east) polarization (_x)\n", + "# ex_x = np.zeros(M.vnEx)\n", + "# ey_x = np.zeros(M.vnEy)\n", + "# ez_x = np.zeros(M.vnEz)\n", + "# # Assign the source to ex_x\n", + "# for i in arange(M.vnEx[0]):\n", + "# for j in arange(M.vnEx[2]):\n", + "# ex_x[i,j,:] = e0_1d\n", + "# eBG_x = np.vstack(M.r(ex_x,'Ex','Ex','V'),M.r(ex_y)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 33 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/simpegMT/Analytics/MT1Danalytic.py b/simpegMT/Analytics/MT1Danalytic.py deleted file mode 100644 index 66db5df5..00000000 --- a/simpegMT/Analytics/MT1Danalytic.py +++ /dev/null @@ -1,101 +0,0 @@ -# Analytic solution of EM fields due to a plane wave - -import numpy as np, SimPEG as simpeg - -def getEHfields(m1d,sigma,freq,zd): - '''Analytic solution for MT 1D layered earth. Returns E and H fields. - - :param SimPEG.mesh, object m1d: Mesh object with the 1D spatial information. - :param numpy.array, vector sigma: Physical property of conductivity corresponding with the mesh. - :param float, freq: Frequency to calculate data at. - :param numpy array, vector zd: location to calculate EH fields at - - Assumes a halfspace with the same conductive as the last cell below. - - ''' - # Note add an error check for the mesh and sigma are the same size. - # Need make the solution e^-iwt dependent - - # Constants: Assume constant - mu = 4*np.pi*1e-7*np.ones((m1d.nC+1)) - eps = 8.85*1e-12*np.ones((m1d.nC+1)) - # Angular freq - w = 2*np.pi*freq - # Add the halfspace value to the property - sig = np.concatenate((np.array([sigma[0]]),sigma)) - # Calculate the wave number - k = np.sqrt(eps*mu*w**2-1j*mu*sig*w) - - # Initiate the propagation matrix, in the order down up. - UDp = np.zeros((2,m1d.nC+1),dtype=complex) - UDp[1,0] = 1 # Set the wave amplitude as 1 into the half-space at the bottom of the mesh - # Loop over all the layers, starting at the bottom layer - for lnr, h in enumerate(m1d.hx): # lnr-number of layer, h-thickness of the layer - # Calculate - yp1 = k[lnr]/(w*mu[lnr]) # Admittance of the layer below the current layer - zp = (w*mu[lnr+1])/k[lnr+1] # Impedance in the current layer - # Build the propagation matrix - - # Convert fields to down/up going components in layer below current layer - Pj1 = np.array([[1,1],[yp1,-yp1]]) - # Convert fields to down/up going components in current layer - Pjinv = 1./2*np.array([[1,zp],[1,-zp]]) - # Propagate down and up components through the current layer - elamh = np.array([[np.exp(-1j*k[lnr+1]*h),0],[0,np.exp(1j*k[lnr+1]*h)]]) - - # The down and up component in current layer. - UDp[:,lnr+1] = elamh.dot(Pjinv.dot(Pj1)).dot(UDp[:,lnr]) - - # Calculate the fields - Ed = np.zeros((zd.size,),dtype=complex) - Eu = np.zeros((zd.size,),dtype=complex) - Hd = np.zeros((zd.size,),dtype=complex) - Hu = np.zeros((zd.size,),dtype=complex) - - # Loop over the layers and calculate the fields - for ki,mui,epsi,dlow,dup,Up,Dp in zip(k[1::],mu[1::],eps[1::],m1d.vectorNx[:-1],m1d.vectorNx[1::],UDp[0,1::],UDp[1,1::]): - dind = np.logical_and(dup >= zd, zd > dlow) - Ed[dind] = Dp*np.exp(-1j*ki*(dup-zd[dind])) - Eu[dind] = Up*np.exp(1j*ki*(dup-zd[dind])) - Hd[dind] = (ki/(w*mui))*Dp*np.exp(-1j*ki*(dup-zd[dind])) - Hu[dind] = -(ki/(w*mui))*Up*np.exp(1j*ki*(dup-zd[dind])) - - # Return return the fields - return Ed, Eu, Hd, Hu - -def getImpedance(m1d,sigma,freq): - """Analytic solution for MT 1D layered earth. Returns the impedance at the surface. - - :param SimPEG.mesh, object m1d: Mesh object with the 1D spatial information. - :param numpy.array, vector sigma: Physical property corresponding with the mesh. - :param numpy.array, vector freq: Frequencies to calculate data at. - - - """ - - # Define constants - mu0 = 4*np.pi*1e-7 - eps0 = 8.85e-12 - - # Initiate the impedances - Z1d = np.empty(len(freq) , dtype='complex') - h = m1d.hx #vectorNx[:-1] - # Start the process - for nrFr, fr in enumerate(freq): - om = 2*np.pi*fr - Zall = np.empty(len(h)+1,dtype='complex') - # Calculate the impedance for the bottom layer - Zall[0] = (mu0*om)/np.sqrt(mu0*eps0*(om)**2 - 1j*mu0*sigma[0]*om) - - for nr,hi in enumerate(h): - # Calculate the wave number - # print nr,sigma[nr] - k = np.sqrt(mu0*eps0*om**2 - 1j*mu0*sigma[nr]*om) - Z = (mu0*om)/k - - Zall[nr+1] = Z *((Zall[nr] + Z*np.tanh(1j*k*hi))/(Z + Zall[nr]*np.tanh(1j*k*hi))) - - #pdb.set_trace() - Z1d[nrFr] = Zall[-1] - - return Z1d \ No newline at end of file diff --git a/simpegMT/Analytics/MT1Danalytic.pyc b/simpegMT/Analytics/MT1Danalytic.pyc deleted file mode 100644 index 91ddc2b1..00000000 Binary files a/simpegMT/Analytics/MT1Danalytic.pyc and /dev/null differ diff --git a/simpegMT/Analytics/MT1Dsolutions.py b/simpegMT/Analytics/MT1Dsolutions.py deleted file mode 100644 index a2900240..00000000 --- a/simpegMT/Analytics/MT1Dsolutions.py +++ /dev/null @@ -1,43 +0,0 @@ -import numpy as np, SimPEG as simpeg -from MT1Danalytic import getEHfields -from scipy.constants import mu_0 - -def get1DEfields(m1d,sigma,freq,sourceAmp=1.0): - """Function to get 1D electrical fields""" - - # Get the gradient - G = m1d.nodalGrad - # Mass matrices - # Magnetic permeability - Mmu = simpeg.Utils.sdiag(m1d.vol*(1.0/mu_0)) - # Conductivity - Msig = m1d.getFaceInnerProduct(sigma) - # Set up the solution matrix - A = G.T*Mmu*G - 1j*2.*np.pi*freq*Msig - # Define the inner part of the solution matrix - Aii = A[1:-1,1:-1] - # Define the outer part of the solution matrix - Aio = A[1:-1,[0,-1]] - - # Set the boundary conditions - Ed_low, Eu_low, Hd_low, Hu_low = getEHfields(m1d,sigma,freq,np.array([m1d.vectorNx[0]])) - Etot_low = Ed_low + Eu_low - ## Note: need to use conjugate of the analytic solution. It is derived with e^iwt - bc = np.r_[Etot_low.conj(),sourceAmp] - # The right hand side - rhs = -Aio*bc - # Solve the system - Aii_inv = simpeg.Solver(Aii) - eii = Aii_inv*rhs - # Assign the boundary conditions - e = np.r_[bc[0],eii,bc[1]] - # Return the electrical fields - return e - - -if __name__ == '__main__': - - hz = [(100.,18)] - M = simpeg.Mesh.TensorMesh([hz],'C') - sig = np.zeros(M.nC) + 1e-8 - sig[M.vectorCCx<=0] = sigHalf \ No newline at end of file diff --git a/simpegMT/Analytics/MT1Dsolutions.pyc b/simpegMT/Analytics/MT1Dsolutions.pyc deleted file mode 100644 index a0995166..00000000 Binary files a/simpegMT/Analytics/MT1Dsolutions.pyc and /dev/null differ diff --git a/simpegMT/Analytics/__init__.py b/simpegMT/Analytics/__init__.py deleted file mode 100644 index 92f785d8..00000000 --- a/simpegMT/Analytics/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from MT1Dsolutions import * # Add the names of the functions diff --git a/simpegMT/Analytics/__init__.pyc b/simpegMT/Analytics/__init__.pyc deleted file mode 100644 index da509dad..00000000 Binary files a/simpegMT/Analytics/__init__.pyc and /dev/null differ diff --git a/simpegMT/FDEM/SurveyFDEM.pyc b/simpegMT/FDEM/SurveyFDEM.pyc deleted file mode 100644 index 51ce020c..00000000 Binary files a/simpegMT/FDEM/SurveyFDEM.pyc and /dev/null differ diff --git a/simpegMT/FDEM/__init__.pyc b/simpegMT/FDEM/__init__.pyc deleted file mode 100644 index 6d772550..00000000 Binary files a/simpegMT/FDEM/__init__.pyc and /dev/null differ diff --git a/simpegMT/Utils/MT1Danalytic.py b/simpegMT/Utils/MT1Danalytic.py index f5605125..02406fc4 100644 --- a/simpegMT/Utils/MT1Danalytic.py +++ b/simpegMT/Utils/MT1Danalytic.py @@ -3,98 +3,99 @@ import numpy as np, SimPEG as simpeg def getEHfields(m1d,sigma,freq,zd): - '''Analytic solution for MT 1D layered earth. Returns E and H fields. + '''Analytic solution for MT 1D layered earth. Returns E and H fields. - :param SimPEG.mesh, object m1d: Mesh object with the 1D spatial information. - :param numpy.array, vector sigma: Physical property of conductivity corresponding with the mesh. - :param float, freq: Frequency to calculate data at. - :param numpy array, vector zd: location to calculate EH fields at + :param SimPEG.mesh, object m1d: Mesh object with the 1D spatial information. + :param numpy.array, vector sigma: Physical property of conductivity corresponding with the mesh. + :param float, freq: Frequency to calculate data at. + :param numpy array, vector zd: location to calculate EH fields at - Assumes a halfspace with the same conductive as the last cell below. + Assumes a halfspace with the same conductive as the last cell below. - ''' - # Note add an error check for the mesh. + ''' + # Note add an error check for the mesh and sigma are the same size. + # Need make the solution e^-iwt dependent - # Constants: Assume constant - mu = 4*np.pi*1e-7*np.ones((m1d.nC+1)) - eps = 8.85*1e-12*np.ones((m1d.nC+1)) - # Angular freq - w = 2*np.pi*freq - # Add the halfspace value to the property - sig = np.concatenate((np.array([sigma[0]]),sigma)) - # Calculate the wave number - k = np.sqrt(eps*mu*w**2-1j*mu*sig*w) + # Constants: Assume constant + mu = 4*np.pi*1e-7*np.ones((m1d.nC+1)) + eps = 8.85*1e-12*np.ones((m1d.nC+1)) + # Angular freq + w = 2*np.pi*freq + # Add the halfspace value to the property + sig = np.concatenate((np.array([sigma[0]]),sigma)) + # Calculate the wave number + k = np.sqrt(eps*mu*w**2-1j*mu*sig*w) - # Initiate the propagation matrix, in the order down up. - UDp = np.zeros((2,m1d.nC+1),dtype=complex) - UDp[1,0] = 1 # Set the wave amplitude as 1 into the half-space at the bottom of the mesh - # Loop over all the layers, starting at the bottom layer - for lnr, h in enumerate(m1d.hx): # lnr-number of layer, h-thickness of the layer - # Calculate - yp1 = k[lnr]/(w*mu[lnr]) # Admittance of the layer below the current layer - zp = (w*mu[lnr+1])/k[lnr+1] # Impedance in the current layer - # Build the propagation matrix - - # Convert fields to down/up going components in layer below current layer - Pj1 = np.array([[1,1],[yp1,-yp1]]) - # Convert fields to down/up going components in current layer - Pjinv = 1./2*np.array([[1,zp],[1,-zp]]) - # Propagate down and up components through the current layer - elamh = np.array([[np.exp(-1j*k[lnr+1]*h),0],[0,np.exp(1j*k[lnr+1]*h)]]) + # Initiate the propagation matrix, in the order down up. + UDp = np.zeros((2,m1d.nC+1),dtype=complex) + UDp[1,0] = 1 # Set the wave amplitude as 1 into the half-space at the bottom of the mesh + # Loop over all the layers, starting at the bottom layer + for lnr, h in enumerate(m1d.hx): # lnr-number of layer, h-thickness of the layer + # Calculate + yp1 = k[lnr]/(w*mu[lnr]) # Admittance of the layer below the current layer + zp = (w*mu[lnr+1])/k[lnr+1] # Impedance in the current layer + # Build the propagation matrix - # The down and up component in current layer. - UDp[:,lnr+1] = elamh.dot(Pjinv.dot(Pj1)).dot(UDp[:,lnr]) + # Convert fields to down/up going components in layer below current layer + Pj1 = np.array([[1,1],[yp1,-yp1]]) + # Convert fields to down/up going components in current layer + Pjinv = 1./2*np.array([[1,zp],[1,-zp]]) + # Propagate down and up components through the current layer + elamh = np.array([[np.exp(-1j*k[lnr+1]*h),0],[0,np.exp(1j*k[lnr+1]*h)]]) - # Calculate the fields - Ed = np.zeros((zd.size,),dtype=complex) - Eu = np.zeros((zd.size,),dtype=complex) - Hd = np.zeros((zd.size,),dtype=complex) - Hu = np.zeros((zd.size,),dtype=complex) + # The down and up component in current layer. + UDp[:,lnr+1] = elamh.dot(Pjinv.dot(Pj1)).dot(UDp[:,lnr]) - # Loop over the layers and calculate the fields - for ki,mui,epsi,dlow,dup,Up,Dp in zip(k[1::],mu[1::],eps[1::],m1d.vectorNx[:-1],m1d.vectorNx[1::],UDp[0,1::],UDp[1,1::]): - dind = np.logical_and(dup >= zd, zd > dlow) - Ed[dind] = Dp*np.exp(-1j*ki*(dup-zd[dind])) - Eu[dind] = Up*np.exp(1j*ki*(dup-zd[dind])) - Hd[dind] = (ki/(w*mui))*Dp*np.exp(-1j*ki*(dup-zd[dind])) - Hu[dind] = -(ki/(w*mui))*Up*np.exp(1j*ki*(dup-zd[dind])) + # Calculate the fields + Ed = np.zeros((zd.size,),dtype=complex) + Eu = np.zeros((zd.size,),dtype=complex) + Hd = np.zeros((zd.size,),dtype=complex) + Hu = np.zeros((zd.size,),dtype=complex) - # Return return the fields - return Ed, Eu, Hd, Hu + # Loop over the layers and calculate the fields + for ki,mui,epsi,dlow,dup,Up,Dp in zip(k[1::],mu[1::],eps[1::],m1d.vectorNx[:-1],m1d.vectorNx[1::],UDp[0,1::],UDp[1,1::]): + dind = np.logical_and(dup >= zd, zd > dlow) + Ed[dind] = Dp*np.exp(-1j*ki*(dup-zd[dind])) + Eu[dind] = Up*np.exp(1j*ki*(dup-zd[dind])) + Hd[dind] = (ki/(w*mui))*Dp*np.exp(-1j*ki*(dup-zd[dind])) + Hu[dind] = -(ki/(w*mui))*Up*np.exp(1j*ki*(dup-zd[dind])) + + # Return return the fields + return Ed, Eu, Hd, Hu def getImpedance(m1d,sigma,freq): - """Analytic solution for MT 1D layered earth. Returns the impedance at the surface. + """Analytic solution for MT 1D layered earth. Returns the impedance at the surface. - :param SimPEG.mesh, object m1d: Mesh object with the 1D spatial information. - :param numpy.array, vector sigma: Physical property corresponding with the mesh. - :param numpy.array, vector freq: Frequencies to calculate data at. + :param SimPEG.mesh, object m1d: Mesh object with the 1D spatial information. + :param numpy.array, vector sigma: Physical property corresponding with the mesh. + :param numpy.array, vector freq: Frequencies to calculate data at. - """ + """ - # Define constants - mu0 = 4*np.pi*1e-7 - eps0 = 8.85e-12 + # Define constants + mu0 = 4*np.pi*1e-7 + eps0 = 8.85e-12 - # Initiate the impedances - Z1d = np.empty(len(freq) , dtype='complex') - h = m1d.hx #vectorNx[:-1] - # Start the process - for nrFr, fr in enumerate(freq): - om = 2*np.pi*fr - Zall = np.empty(len(h)+1,dtype='complex') - # Calculate the impedance for the bottom layer - Zall[0] = (mu0*om)/np.sqrt(mu0*eps0*(om)**2 - 1j*mu0*sigma[0]*om) + # Initiate the impedances + Z1d = np.empty(len(freq) , dtype='complex') + h = m1d.hx #vectorNx[:-1] + # Start the process + for nrFr, fr in enumerate(freq): + om = 2*np.pi*fr + Zall = np.empty(len(h)+1,dtype='complex') + # Calculate the impedance for the bottom layer + Zall[0] = (mu0*om)/np.sqrt(mu0*eps0*(om)**2 - 1j*mu0*sigma[0]*om) - for nr,hi in enumerate(h): - # Calculate the wave number - # print nr,sigma[nr] - k = np.sqrt(mu0*eps0*om**2 - 1j*mu0*sigma[nr]*om) - Z = (mu0*om)/k - - Zall[nr+1] = Z *((Zall[nr] + Z*np.tanh(1j*k*hi))/(Z + Zall[nr]*np.tanh(1j*k*hi))) + for nr,hi in enumerate(h): + # Calculate the wave number + # print nr,sigma[nr] + k = np.sqrt(mu0*eps0*om**2 - 1j*mu0*sigma[nr]*om) + Z = (mu0*om)/k - #pdb.set_trace() - Z1d[nrFr] = Zall[-1] + Zall[nr+1] = Z *((Zall[nr] + Z*np.tanh(1j*k*hi))/(Z + Zall[nr]*np.tanh(1j*k*hi))) - return Z1d \ No newline at end of file + #pdb.set_trace() + Z1d[nrFr] = Zall[-1] + + return Z1d diff --git a/simpegMT/Utils/MT1Dsolutions.py b/simpegMT/Utils/MT1Dsolutions.py index 3b1149b8..fd3347d5 100644 --- a/simpegMT/Utils/MT1Dsolutions.py +++ b/simpegMT/Utils/MT1Dsolutions.py @@ -3,40 +3,41 @@ from MT1Danalytic import getEHfields from scipy.constants import mu_0 def get1DEfields(m1d,sigma,freq,sourceAmp=1.0): - """Function to get 1D electrical fields""" - - # Get the gradient - G = m1d.nodalGrad - # Mass matrices - # Magnetic permeability - Mmu = simpeg.Utils.sdiag(m1d.vol*(1.0/mu_0)) - # Conductivity - Msig = m1d.getFaceInnerProduct(sigma) - # Set up the solution matrix - A = G.T*Mmu*G - 1j*2.*np.pi*freq*Msig - # Define the inner part of the solution matrix - Aii = A[1:-1,1:-1] - # Define the outer part of the solution matrix - Aio = A[1:-1,[0,-1]] + """Function to get 1D electrical fields""" - # Set the boundary conditions - Ed_low, Eu_low, Hd_low, Hu_low = getEHfields(m1d,sigma,freq,np.array([m1d.vectorNx[0]])) - Etot_low = Ed_low + Eu_low - bc = np.r_[Etot_low,sourceAmp] - # The right hand side - rhs = -Aio*bc - # Solve the system - Aii_inv = simpeg.Solver(Aii) - eii = Aii_inv*rhs - # Assign the boundary conditions - e = np.r_[bc[0],eii,bc[1]] - # Return the electrical fields - return e + # Get the gradient + G = m1d.nodalGrad + # Mass matrices + # Magnetic permeability + Mmu = simpeg.Utils.sdiag(m1d.vol*(1.0/mu_0)) + # Conductivity + Msig = m1d.getFaceInnerProduct(sigma) + # Set up the solution matrix + A = G.T*Mmu*G - 1j*2.*np.pi*freq*Msig + # Define the inner part of the solution matrix + Aii = A[1:-1,1:-1] + # Define the outer part of the solution matrix + Aio = A[1:-1,[0,-1]] + + # Set the boundary conditions + Ed_low, Eu_low, Hd_low, Hu_low = getEHfields(m1d,sigma,freq,np.array([m1d.vectorNx[0]])) + Etot_low = Ed_low + Eu_low + ## Note: need to use conjugate of the analytic solution. It is derived with e^iwt + bc = np.r_[Etot_low.conj(),sourceAmp] + # The right hand side + rhs = -Aio*bc + # Solve the system + Aii_inv = simpeg.Solver(Aii) + eii = Aii_inv*rhs + # Assign the boundary conditions + e = np.r_[bc[0],eii,bc[1]] + # Return the electrical fields + return e if __name__ == '__main__': - hz = [(100.,18)] - M = simpeg.Mesh.TensorMesh([hz],'C') - sig = np.zeros(M.nC) + 1e-8 - sig[M.vectorCCx<=0] = sigHalf \ No newline at end of file + hz = [(100.,18)] + M = simpeg.Mesh.TensorMesh([hz],'C') + sig = np.zeros(M.nC) + 1e-8 + sig[M.vectorCCx<=0] = sigHalf diff --git a/simpegMT/Utils/__init__.py b/simpegMT/Utils/__init__.py index 4414cd54..73005269 100644 --- a/simpegMT/Utils/__init__.py +++ b/simpegMT/Utils/__init__.py @@ -1,2 +1,2 @@ from MT1Dsolutions import * # Add the names of the functions -from MT1Danalytic import * +from MT1Danalytic import *