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

Revision 5390 - (show annotations)
Tue Dec 16 06:50:01 2014 UTC (4 years, 4 months ago) by jduplessis
File MIME type: application/x-tex
File size: 5787 byte(s)
doco changes

 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 an other 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 can potentially travel deeper. This is not necessarily the case 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 image of the subsurface. 27 This image can then be compared to known resistivities of material and used 28 to make inferences about the material contained in the subsurface. 29 There are a number of different ways to set up a DC resistivity survey, each providing 30 different spatial information\cite[pg 5]{LOKE2014}. 31 32 Escript currently supports the forward modelling of DC resistivity surveys. Forward modelling 33 involves performing a survey artificially by solving the PDEs which describe the underlying 34 physics. Escript provides a number of classes for solving forward modelling problems, these are 35 detailed in section \ref{sec:forward DCRES}. 36 37 \section{Example} 38 In this section we will look at an example forward problem. The domain consists of 39 a homogeneous half-space with a half-sphere embedded within it (Figure~\ref{fig:HalfSphere}). 40 In this example\footnote{The script is similar to 41 \examplefile{dc_forward.py} within the \escript example file directory.} 42 a Schlumberger survey is used. 43 44 45 \begin{figure} 46 \centering 47 \includegraphics[width=0.7\textwidth]{HalfSphere.png} 48 \caption{ 49 (file \examplefile{data/HalfSphere_v1.4.geo}). model created using gmsh.} 50 \label{fig:HalfSphere} 51 \end{figure} 52 53 \begin{pyc}\label{code: dc1} 54 \ 55 \begin{python} 56 #Header 57 import esys.finley as finley 58 import esys.escript as escript 59 from esys.downunder import * 60 import math 61 62 #Constants 63 pi = math.pi 64 65 #Setup Input 66 mesh_file = "data/HalfSphere_v1.4.msh" 67 # Tag volume names and conductivity values (S/m) for primary and secondary potential: 68 tag_p = {"domain" : 1/10.0, "sphere" : 1/10.0} # Primary (homogeneous). 69 tag_s = {"domain" : 1/10.0, "sphere" : 1/1.0 } # Secondary. 70 71 xe_0 = -5.0 # start X-coordinate 72 numEle = 21 # number of electrodes 73 a = 0.5 # step size 74 n = 9 #max electrode step 75 midPoint = [xe_0 + (((numEle-1)*estp)/2), 0, 0] 76 current = 1.0 # (Ampere) 77 domain = finley.ReadGmsh(mesh_file, 3) 78 mesh_tags = escript.getTagNames(domain) 79 directionVector = [1,0] 80 sig_p = escript.Scalar(0,escript.ContinuousFunction(domain)) 81 sig_s = escript.Scalar(0,escript.ContinuousFunction(domain)) 82 for tag in tag_p: 83 # All initially defined tags must be in the tag list. 84 # Print an error if it doesn't and exit the program. 85 if tag in mesh_tags: 86 # Assign value: 87 sig_p.setTaggedValue( tag, tag_p[tag] ) 88 sig_s.setTaggedValue( tag, tag_s[tag] ) 89 else: 90 print("Error: the defined tag is not defined in the mesh: " & tag) 91 sys.exit() 92 93 # Expand the data objects for output. 94 sig_p.expand() 95 sig_s.expand() 96 #solve for result 97 schs=SchlumbergerSurvey(domain, sig_p, sig_s, current, a, n, midPoint, directionVector, numEle) 98 pot=schs.getPotential() 99 totalApparentRes=schs.getApparentResistivityTotal() 100 #print result 101 n=1 102 print ("Total:\n") 103 for i in totalApparentRes: 104 print ("n = %d:"%n) 105 print (i,"\n") 106 n=n+1 107 \end{python} 108 \end{pyc} 109 110 111 The example begins with constructing the domain, loaded from a pre-prepared 112 \emph{gmsh} model. The \emph{gmsh} script used can be found in \examplefile{data/HalfSphere_v1.4.geo}. 113 \emph{gmsh} can be used to generate the \texttt{msh} file. The values for primary and secondary 114 conductivity, in Siemens per meter, are specified for the different regions. These regions have been tagged 115 in the \emph{gmsh} script. The survey is constructed to have 21 electrodes spanning from -5m to 5m 116 in the $x$-axis, with a fixed interval between each electrode and the next in 117 line. These electrodes, once placed, are not moved for the remainder of the 118 survey. The potentials and total apparent resistivity is then calculated. 119 120 The SchlumbergerSurvey class uses four electrodes at a time, beginning with the 121 electrode at location \texttt{xe_0}. In each set of four electrodes, electrodes 122 1 and 4 are used as current electrodes and 123 2 and 3 used as potential electrodes. The next set of electrodes are then used 124 for the next measurement, beginning with the previous electrode 2. This is 125 repeated until the last four electrodes are used. 126 127 This process is itself repeated with a continually increasing step size between 128 the electrodes pairs at each end of the set. As an example, the first time the 129 process is repeated, the initial set will be made up of electrodes 1, 3, 4, and 130 6. During the second repeat the initial set will be electrodes 1, 4, 5, and 8. 131 The maximal step size in the above script is given as $n$. 132