# Contents of /release/4.0/doc/inversion/CookDcRes.tex

Revision 5387 - (show annotations)
Tue Dec 16 05:43:05 2014 UTC (4 years, 4 months ago) by sshaw
File MIME type: application/x-tex
File size: 5645 byte(s)
spelling and grammar fixes for docs

 1 %!TEX root = inversion.tex 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3 % Copyright (c) 2003-2014 by University of Queensland 4 5 % 6 % Primary Business: Queensland, Australia 7 % Licensed under the Open Software License version 3.0 8 9 % 10 % Development until 2012 by Earth Systems Science Computational Center (ESSCC) 11 % Development 2012-2013 by School of Earth Sciences 12 % Development from 2014 by Centre for Geoscience Computing (GeoComp) 13 % 14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 15 16 \chapter{DC Resistivity Forward modelling}\label{Chp:cook:Dc Resistivity inversion} 17 \section{Introduction} 18 DC resistivity surveys involve placing electrodes into the ground and injecting a current 19 into them. The current propagates through the ground and generates a potential field. 20 The change in potential between a set of electrodes can then be measured. 21 22 As the separation between the electrodes increases, the current has a longer 23 distance to travel and will consequently travel deeper. This is not always true 24 as a highly conductive layer will keep the current close to the surface. 25 26 The final objective is to perform an inversion and develop a resistivity profile of the subsurface. 27 This profile can then be matched up to known resistivities of material and used 28 to make inferences about the material contained in the subsurface. 29 There are 30 a number of different ways to set up a DC resistivity survey, each providing 31 different spatial information\cite[pg 5]{LOKE2014}. 32 33 Escript currently supports the forward modelling of DC resistivity surveys. Forward modelling 34 involves performing a survey artificially by solving the PDEs which describe the underlying 35 physics. Escript provides a number of classes for solving forward modelling problems, these are 36 detailed in section \ref{sec:forward DCRES}. 37 38 \section{Example} 39 In this section we will look at an example forward problem. The domain consists of 40 a homogenous half-space with a half-sphere embedded within it (Figure~\ref{fig:HalfSphere}). 41 In this example\footnote{The script is similar to 42 \examplefile{dc_forward.py} within the \escript example file directory.} 43 a Schlumberger survey is used. 44 45 46 \begin{figure} 47 \centering 48 \includegraphics[width=0.7\textwidth]{HalfSphere.png} 49 \caption{ 50 (file \examplefile{data/HalfSphere_v1.4.geo}). model created using gmsh.} 51 \label{fig:HalfSphere} 52 \end{figure} 53 54 \begin{pyc}\label{code: dc1} 55 \ 56 \begin{python} 57 #Header 58 import esys.finley as finley 59 import esys.escript as escript 60 from esys.downunder import * 61 import math 62 63 #Constants 64 pi = math.pi 65 66 #Setup Input 67 mesh_file = "data/HalfSphere_v1.4.msh" 68 # Tag volume names and conductivity values (S/m) for primary and secondary potential: 69 tag_p = {"domain" : 1/10.0, "sphere" : 1/10.0} # Primary (homogeneous). 70 tag_s = {"domain" : 1/10.0, "sphere" : 1/1.0 } # Secondary. 71 72 xe_0 = -5.0 # start X-coordinate 73 numEle = 21 # number of electrodes 74 a = 0.5 # step size 75 n = 9 #max electrode step 76 midPoint = [xe_0 + (((numEle-1)*estp)/2), 0, 0] 77 current = 1.0 # (Ampere) 78 domain = finley.ReadGmsh(mesh_file, 3) 79 mesh_tags = escript.getTagNames(domain) 80 directionVector = [1,0] 81 sig_p = escript.Scalar(0,escript.ContinuousFunction(domain)) 82 sig_s = escript.Scalar(0,escript.ContinuousFunction(domain)) 83 for tag in tag_p: 84 # All initially defined tags must be in the tag list. 85 # Print an error if it doesn't and exit the program. 86 if tag in mesh_tags: 87 # Assign value: 88 sig_p.setTaggedValue( tag, tag_p[tag] ) 89 sig_s.setTaggedValue( tag, tag_s[tag] ) 90 else: 91 print("Error: the defined tag is not defined in the mesh: " & tag) 92 sys.exit() 93 94 # Expand the data objects for output. 95 sig_p.expand() 96 sig_s.expand() 97 #solve for result 98 schs=SchlumbergerSurvey(domain, sig_p, sig_s, current, a, n, midPoint, directionVector, numEle) 99 pot=schs.getPotential() 100 totalApparentRes=schs.getApparentResistivityTotal() 101 #print result 102 n=1 103 print ("Total:\n") 104 for i in totalApparentRes: 105 print ("n = %d:"%n) 106 print (i,"\n") 107 n=n+1 108 \end{python} 109 \end{pyc} 110 111 112 The example begins with constructing the domain, loaded from a pre-prepared 113 \emph{gmsh} model. The \emph{gmsh} script used can be found in \examplefile{data/HalfSphere_v1.4.geo}. 114 \emph{gmsh} can be used to generate the \texttt{msh} file. The values for primary and secondary 115 conductivity, in siemens per meter, are specified for the different regions. These regions have been tagged 116 in the \emph{gmsh} script. The survey is constructed to have 21 electrodes spanning from -5m to 5m 117 in the $x$-axis, with a fixed interval between each electrode and the next in 118 line. These electrodes, once placed, are not moved for the remainder of the 119 survey. The potentials and total apparent resistivity is then calculated. 120 121 The SchlumbergerSurvey class uses four electrodes at a time, beginning with the 122 electrode at location \texttt{xe_0}. In each set of four electrodes, electrodes 123 1 and 4 are used as current electrodes and 124 2 and 3 used as potential electrodes. The next set of electrodes are then used 125 for the next measurement, beginning with the previous electrode 2. This is 126 repeated until the last four electrodes are used. 127 128 This process is itself repeated with a continually increasing step size between 129 the electrodes pairs at each end of the set. As an example, the first time the 130 process is repeated, the initial set will be made up of electrodes 1, 3, 4, and 131 6. During the second repeat the initial set will be electrodes 1, 4, 5, and 8. 132 The maximal step size in the above script is given as $n$. 133