From 3b88366681e4fa52529f8ea76425c33bf89daeb8 Mon Sep 17 00:00:00 2001 From: GudniRos Date: Fri, 13 Nov 2015 13:35:19 -0800 Subject: [PATCH] Add a scale flag in MT1Danalytic to scale the solution to be 1 at the top. --- .gitignore | 207 +++++++++++++++++++++++++++++++++ simpegMT/Utils/MT1Danalytic.py | 9 +- 2 files changed, 214 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index e0dd4d72..2c242ac7 100644 --- a/.gitignore +++ b/.gitignore @@ -73,3 +73,210 @@ notebooks/scipy2015/027-Inversion_NoStoppingregMesh_smoothFalse.npy notebooks/scipy2015/028-Inversion_NoStoppingregMesh_smoothFalse.npy notebooks/scipy2015/029-Inversion_NoStoppingregMesh_smoothFalse.npy notebooks/scipy2015/030-Inversion_NoStoppingregMesh_smoothFalse.npy +notebooks/001-InversionModel-2015-11-05-10-20.npy +notebooks/001-InversionModel-2015-11-05-13-19.npy +notebooks/001-InversionModel-2015-11-05-14-57.npy +notebooks/001-InversionModel-2015-11-10-16-51.npy +notebooks/001-InversionModel-2015-11-10-19-15.npy +notebooks/001-InversionModel-2015-11-13-10-29.npy +notebooks/002-InversionModel-2015-11-05-10-20.npy +notebooks/002-InversionModel-2015-11-05-13-19.npy +notebooks/002-InversionModel-2015-11-05-14-57.npy +notebooks/002-InversionModel-2015-11-10-16-51.npy +notebooks/002-InversionModel-2015-11-10-19-15.npy +notebooks/002-InversionModel-2015-11-13-10-29.npy +notebooks/003-InversionModel-2015-11-05-10-20.npy +notebooks/0??-InversionModel-2015-11-05-13-19.npy +notebooks/006-InversionModel-2015-11-05-14-57.npy +notebooks/003-InversionModel-2015-11-05-14-57.npy +notebooks/003-InversionModel-2015-11-10-16-51.npy +notebooks/003-InversionModel-2015-11-10-19-15.npy +notebooks/003-InversionModel-2015-11-13-10-29.npy +notebooks/004-InversionModel-2015-11-05-10-20.npy +notebooks/004-InversionModel-2015-11-05-14-57.npy +notebooks/004-InversionModel-2015-11-10-16-51.npy +notebooks/004-InversionModel-2015-11-10-19-15.npy +notebooks/004-InversionModel-2015-11-13-10-29.npy +notebooks/005-InversionModel-2015-11-05-10-20.npy +notebooks/005-InversionModel-2015-11-05-14-57.npy +notebooks/005-InversionModel-2015-11-10-16-51.npy +notebooks/005-InversionModel-2015-11-10-19-15.npy +notebooks/005-InversionModel-2015-11-13-10-29.npy +notebooks/006-InversionModel-2015-11-05-10-20.npy +notebooks/006-InversionModel-2015-11-10-16-51.npy +notebooks/006-InversionModel-2015-11-10-19-15.npy +notebooks/006-InversionModel-2015-11-13-10-29.npy +notebooks/007-InversionModel-2015-11-05-10-20.npy +notebooks/007-InversionModel-2015-11-05-14-57.npy +notebooks/007-InversionModel-2015-11-10-16-51.npy +notebooks/007-InversionModel-2015-11-10-19-15.npy +notebooks/007-InversionModel-2015-11-13-10-29.npy +notebooks/008-InversionModel-2015-11-05-10-20.npy +notebooks/008-InversionModel-2015-11-05-14-57.npy +notebooks/008-InversionModel-2015-11-10-16-51.npy +notebooks/008-InversionModel-2015-11-10-19-15.npy +notebooks/008-InversionModel-2015-11-13-10-29.npy +notebooks/009-InversionModel-2015-11-05-10-20.npy +notebooks/009-InversionModel-2015-11-05-14-57.npy +notebooks/009-InversionModel-2015-11-10-16-51.npy +notebooks/009-InversionModel-2015-11-10-19-15.npy +notebooks/009-InversionModel-2015-11-13-10-29.npy +notebooks/010-InversionModel-2015-11-05-10-20.npy +notebooks/010-InversionModel-2015-11-05-14-57.npy +notebooks/010-InversionModel-2015-11-10-16-51.npy +notebooks/010-InversionModel-2015-11-10-19-15.npy +notebooks/010-InversionModel-2015-11-13-10-29.npy +notebooks/011-InversionModel-2015-11-05-14-57.npy +notebooks/011-InversionModel-2015-11-10-16-51.npy +notebooks/011-InversionModel-2015-11-10-19-15.npy +notebooks/011-InversionModel-2015-11-13-10-29.npy +notebooks/012-InversionModel-2015-11-05-14-57.npy +notebooks/012-InversionModel-2015-11-10-16-51.npy +notebooks/012-InversionModel-2015-11-10-19-15.npy +notebooks/012-InversionModel-2015-11-13-10-29.npy +notebooks/013-InversionModel-2015-11-05-14-57.npy +notebooks/013-InversionModel-2015-11-10-16-51.npy +notebooks/013-InversionModel-2015-11-10-19-15.npy +notebooks/013-InversionModel-2015-11-13-10-29.npy +notebooks/014-InversionModel-2015-11-05-14-57.npy +notebooks/014-InversionModel-2015-11-10-16-51.npy +notebooks/014-InversionModel-2015-11-10-19-15.npy +notebooks/014-InversionModel-2015-11-13-10-29.npy +notebooks/015-InversionModel-2015-11-05-14-57.npy +notebooks/015-InversionModel-2015-11-10-16-51.npy +notebooks/015-InversionModel-2015-11-10-19-15.npy +notebooks/015-InversionModel-2015-11-13-10-29.npy +notebooks/016-InversionModel-2015-11-05-14-57.npy +notebooks/016-InversionModel-2015-11-10-16-51.npy +notebooks/016-InversionModel-2015-11-10-19-15.npy +notebooks/016-InversionModel-2015-11-13-10-29.npy +notebooks/017-InversionModel-2015-11-05-14-57.npy +notebooks/017-InversionModel-2015-11-10-16-51.npy +notebooks/017-InversionModel-2015-11-10-19-15.npy +notebooks/017-InversionModel-2015-11-13-10-29.npy +notebooks/018-InversionModel-2015-11-05-14-57.npy +notebooks/018-InversionModel-2015-11-10-16-51.npy +notebooks/018-InversionModel-2015-11-10-19-15.npy +notebooks/019-InversionModel-2015-11-05-14-57.npy +notebooks/019-InversionModel-2015-11-10-16-51.npy +notebooks/019-InversionModel-2015-11-10-19-15.npy +notebooks/020-InversionModel-2015-11-05-14-57.npy +notebooks/020-InversionModel-2015-11-10-16-51.npy +notebooks/020-InversionModel-2015-11-10-19-15.npy +notebooks/021-InversionModel-2015-11-05-14-57.npy +notebooks/021-InversionModel-2015-11-10-16-51.npy +notebooks/021-InversionModel-2015-11-10-19-15.npy +notebooks/022-InversionModel-2015-11-05-14-57.npy +notebooks/022-InversionModel-2015-11-10-16-51.npy +notebooks/022-InversionModel-2015-11-10-19-15.npy +notebooks/023-InversionModel-2015-11-05-14-57.npy +notebooks/023-InversionModel-2015-11-10-16-51.npy +notebooks/023-InversionModel-2015-11-10-19-15.npy +notebooks/024-InversionModel-2015-11-05-14-57.npy +notebooks/024-InversionModel-2015-11-10-16-51.npy +notebooks/024-InversionModel-2015-11-10-19-15.npy +notebooks/025-InversionModel-2015-11-05-14-57.npy +notebooks/025-InversionModel-2015-11-10-16-51.npy +notebooks/025-InversionModel-2015-11-10-19-15.npy +notebooks/026-InversionModel-2015-11-05-14-57.npy +notebooks/026-InversionModel-2015-11-10-16-51.npy +notebooks/026-InversionModel-2015-11-10-19-15.npy +notebooks/027-InversionModel-2015-11-05-14-57.npy +notebooks/027-InversionModel-2015-11-10-16-51.npy +notebooks/027-InversionModel-2015-11-10-19-15.npy +notebooks/028-InversionModel-2015-11-05-14-57.npy +notebooks/028-InversionModel-2015-11-10-16-51.npy +notebooks/028-InversionModel-2015-11-10-19-15.npy +notebooks/029-InversionModel-2015-11-05-14-57.npy +notebooks/029-InversionModel-2015-11-10-16-51.npy +notebooks/029-InversionModel-2015-11-10-19-15.npy +notebooks/030-InversionModel-2015-11-05-14-57.npy +notebooks/030-InversionModel-2015-11-10-16-51.npy +notebooks/030-InversionModel-2015-11-10-19-15.npy +notebooks/InversionModel-2015-11-05-10-20_001.vtr +notebooks/InversionModel-2015-11-05-10-20_002.vtr +notebooks/InversionModel-2015-11-05-10-20_003.vtr +notebooks/InversionModel-2015-11-05-10-20_004.vtr +notebooks/InversionModel-2015-11-05-10-20_005.vtr +notebooks/InversionModel-2015-11-05-10-20_006.vtr +notebooks/InversionModel-2015-11-05-10-20_007.vtr +notebooks/InversionModel-2015-11-05-10-20_008.vtr +notebooks/InversionModel-2015-11-05-10-20_009.vtr +notebooks/InversionModel-2015-11-05-10-20_010.vtr +notebooks/InversionModel-2015-11-05-13-19_001.vtr +notebooks/InversionModel-2015-11-05-13-19_002.vtr +notebooks/InversionModel-2015-11-05-13-19_003.vtr +notebooks/InversionModel-2015-11-05-13-19_004.vtr +notebooks/InversionModel-2015-11-05-13-19_005.vtr +notebooks/InversionModel-2015-11-05-13-19_006.vtr +notebooks/InversionModel-2015-11-05-13-19_007.vtr +notebooks/InversionModel-2015-11-05-13-19_008.vtr +notebooks/InversionModel-2015-11-05-13-19_009.vtr +notebooks/InversionModel-2015-11-05-13-19_010.vtr +notebooks/InversionModel-2015-11-05-13-19_011.vtr +notebooks/InversionModel-2015-11-05-13-19_012.vtr +notebooks/InversionModel-2015-11-05-14-57_001.vtr +notebooks/InversionModel-2015-11-05-14-57_002.vtr +notebooks/InversionModel-2015-11-05-14-57_003.vtr +notebooks/InversionModel-2015-11-05-14-57_004.vtr +notebooks/InversionModel-2015-11-05-14-57_005.vtr +notebooks/InversionModel-2015-11-05-14-57_006.vtr +notebooks/InversionModel-2015-11-05-14-57_007.vtr +notebooks/InversionModel-2015-11-05-14-57_008.vtr +notebooks/InversionModel-2015-11-05-14-57_009.vtr +notebooks/InversionModel-2015-11-05-14-57_010.vtr +notebooks/InversionModel-2015-11-05-14-57_011.vtr +notebooks/InversionModel-2015-11-05-14-57_012.vtr +notebooks/InversionModel-2015-11-05-14-57_013.vtr +notebooks/InversionModel-2015-11-05-14-57_014.vtr +notebooks/InversionModel-2015-11-05-14-57_015.vtr +notebooks/InversionModel-2015-11-05-14-57_016.vtr +notebooks/InversionModel-2015-11-05-14-57_017.vtr +notebooks/InversionModel-2015-11-05-14-57_018.vtr +notebooks/InversionModel-2015-11-05-14-57_019.vtr +notebooks/InversionModel-2015-11-05-14-57_020.vtr +notebooks/InversionModel-2015-11-05-14-57_021.vtr +notebooks/InversionModel-2015-11-05-14-57_022.vtr +notebooks/InversionModel-2015-11-05-14-57_023.vtr +notebooks/InversionModel-2015-11-05-14-57_024.vtr +notebooks/InversionModel-2015-11-05-14-57_025.vtr +notebooks/InversionModel-2015-11-05-14-57_026.vtr +notebooks/InversionModel-2015-11-05-14-57_027.vtr +notebooks/InversionModel-2015-11-05-14-57_028.vtr +notebooks/InversionModel-2015-11-05-14-57_029.vtr +notebooks/InversionModel-2015-11-05-14-57_030.vtr +notebooks/InversionModel-2015-11-10-16-51_001.vtr +notebooks/InversionModel-2015-11-10-16-51_002.vtr +notebooks/InversionModel-2015-11-10-16-51_003.vtr +notebooks/InversionModel-2015-11-10-16-51_004.vtr +notebooks/InversionModel-2015-11-10-16-51_005.vtr +notebooks/InversionModel-2015-11-10-16-51_006.vtr +notebooks/InversionModel-2015-11-10-16-51_007.vtr +notebooks/InversionModel-2015-11-10-16-51_008.vtr +notebooks/InversionModel-2015-11-10-16-51_009.vtr +notebooks/InversionModel-2015-11-10-16-51_010.vtr +notebooks/InversionModel-2015-11-10-16-51_011.vtr +notebooks/InversionModel-2015-11-10-16-51_012.vtr +notebooks/InversionModel-2015-11-10-16-51_013.vtr +notebooks/InversionModel-2015-11-10-16-51_014.vtr +notebooks/InversionModel-2015-11-10-16-51_015.vtr +notebooks/InversionModel-2015-11-10-16-51_016.vtr +notebooks/InversionModel-2015-11-10-16-51_017.vtr +notebooks/InversionModel-2015-11-10-16-51_018.vtr +notebooks/InversionModel-2015-11-10-16-51_019.vtr +notebooks/InversionModel-2015-11-10-16-51_020.vtr +notebooks/InversionModel-2015-11-10-16-51_021.vtr +notebooks/InversionModel-2015-11-10-16-51_022.vtr +notebooks/InversionModel-2015-11-10-16-51_023.vtr +notebooks/InversionModel-2015-11-10-16-51_024.vtr +notebooks/InversionModel-2015-11-10-16-51_025.vtr +notebooks/InversionModel-2015-11-10-16-51_026.vtr +notebooks/InversionModel-2015-11-10-16-51_027.vtr +notebooks/InversionModel-2015-11-10-16-51_028.vtr +notebooks/InversionModel-2015-11-10-16-51_029.vtr +notebooks/InversionModel-2015-11-10-16-51_030.vtr +notebooks/MT Script-3D_InversionTest.ipynb +notebooks/MT3D_dobs.npy +notebooks/MT3D_dtrue.npy +notebooks/trueModel.vtr +notebooks/018-InversionModel-2015-11-13-10-29.npy diff --git a/simpegMT/Utils/MT1Danalytic.py b/simpegMT/Utils/MT1Danalytic.py index d656fa84..1f634f1f 100644 --- a/simpegMT/Utils/MT1Danalytic.py +++ b/simpegMT/Utils/MT1Danalytic.py @@ -1,14 +1,16 @@ # Analytic solution of EM fields due to a plane wave import numpy as np, SimPEG as simpeg +from IPython.core.debugger import Tracer -def getEHfields(m1d,sigma,freq,zd): +def getEHfields(m1d,sigma,freq,zd,scaleUD=True): '''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 bollean, scaleUD: scales the output to be 1 at the top, increases numeracal stability. Assumes a halfspace with the same conductive as the last cell below. @@ -27,7 +29,7 @@ def getEHfields(m1d,sigma,freq,zd): # 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 + 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 @@ -45,6 +47,9 @@ def getEHfields(m1d,sigma,freq,zd): # The down and up component in current layer. UDp[:,lnr+1] = elamh.dot(Pjinv.dot(Pj1)).dot(UDp[:,lnr]) + if scaleUD: + UDp[:,lnr+1::-1] = UDp[:,lnr+1::-1]/UDp[1,lnr+1] + # Calculate the fields Ed = np.empty((zd.size,),dtype=complex) Eu = np.empty((zd.size,),dtype=complex)