/[escript]/release/4.0/doc/inversion/CookDcRes.tex
ViewVC logotype

Diff of /release/4.0/doc/inversion/CookDcRes.tex

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.5389  
changed lines
  Added in v.5390

  ViewVC Help
Powered by ViewVC 1.1.26