e3ddocumentation - e3d version 2 tiled package

55
e3d Documentation Release 5.0 UBC-GIF Aug 03, 2021

Upload: others

Post on 04-Jun-2022

23 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: e3dDocumentation - E3D version 2 tiled package

e3d DocumentationRelease 5.0

UBC-GIF

Aug 03, 2021

Page 2: e3dDocumentation - E3D version 2 tiled package
Page 3: e3dDocumentation - E3D version 2 tiled package

CONTENTS

1 Package overview 31.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Program Library Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Licensing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4 Installing E3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Background Theory 72.1 Fundamental Physics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2 Octree Mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.3 Discretization of Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.4 Forward Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.5 Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.6 Inverse Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3 Elements of the Program 153.1 Program Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2 Main Input Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.3 Supporting Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Running the programs 354.1 Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5 Examples 415.1 Create OcTree Mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.2 Create Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.3 Forward Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445.4 Inversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6 References 49

Bibliography 51

i

Page 4: e3dDocumentation - E3D version 2 tiled package

ii

Page 5: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

Important: E3D version 2 tiled performs forward modeling and inversion with the executable e3d_v2_tiled.exe. Pastiterations of this code may have been given the name ‘AEM.exe’, although its application is not limited to airborne. Touse this code, ensure you have downloaded the E3D version 2 tiled package from the UBC-GIF website.

E3D version 2 tiled is a program library for carrying out forward modelling and inversion of frequency domain EM dataover 3D structures. Unlike E3D version 2, the E3D version 2 ‘tiled’ code performs the forward modeling in parallel ona set of local OcTree meshes. The contents of this manual are as follows:

CONTENTS 1

Page 6: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

2 CONTENTS

Page 7: e3dDocumentation - E3D version 2 tiled package

CHAPTER

ONE

PACKAGE OVERVIEW

Important: E3D version 2 tiled performs forward modeling and inversion with the executable e3d_v2_tiled.exe. Pastiterations of this code may have been given the name ‘AEM.exe’, although its application is not limited to airborne. Touse this code, ensure you have downloaded E3D version 2 ‘tiled’ package from the UBC-GIF website.

1.1 Description

This manual provides instruction and background for the E3D version 2 tiled program library for the forward modellingand inversion of frequency domain electromagnetic survey data. New to this program is the ability to create many smalllocal meshes on which to solve the EM forward problems for each transmitter in parallel. The mesh generation codeis parallelized with OpenMP and is meant to run on a single node. It will use as many threads as available, or the usercan use the OMP_NUM_THREADS environment variable to indicate the number of threads.

Fig. 1.1: 2D (QuadTree) mesh discretization about a ring (left). Cell refinement for OcTree mesh (right).

In order to decrease computational time and increase accuracy by mesh refinement in areas of interest, models arediscretized on an Octree mesh. For ease of use the program library includes several utilities which generate a regularbase mesh, enabling the user to construct initial or simulation models on a regular mesh and then convert to an octree

3

Page 8: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

mesh. From the users point of view the software operates in much the same way as previous GIF codes. This versionis currently run through the command line only.

The program library provides codes to do the following:

• Construct models on a rectangular mesh, where each cell is assigned a constant value of conductivity, and trans-fers the model to an octree mesh.

• Forward model magnetic field anomaly responses to a 3D volume of contrasting conductivity, on and octreemesh.

• Convert from and octree mesh to a regular base mesh.

• Invert of surface, airborne, and/or borehole EM data to generate 3D conductivity models:

The inversion is solved as an optimization problem with the simultaneous goals of (i) minimizing an objective functiondependent on the model and (ii) generating synthetic data that match observations to within a degree of misfit consistentwith the statistics of those data.

To counteract the inherent lack of information, the formulation incorporates reference model and smoothing by regu-larization.

Capacity for the user to directionally weight smoothing and reference model influence as well as overall influence ofregularization on objective function minimization. Explicit prior information may also take the form of upper and lowerbounds on the conductivity contrast in any cell.

The regularization parameter (controlling relative importance of objective function and misfit terms). The initial re-search underlying this program library was funded principally by the mineral industry consortium “Joint and Coopera-tive Inversion of Geophysical and Geological Data” (1991 - 1997) which was sponsored by NSERC and the following11 companies: BHP Minerals, CRA Exploration, Cominco Exploration, Falconbridge, Hudson Bay Exploration andDevelopment, INCO Exploration & Technical Services, Kennecott Exploration Company, Newmont Gold Company,Noranda Exploration, Placer Dome, and WMC.

In comparison with the E3D version 1 and 2 program libraries there are several new features for mesh generation andinversion. These include:

• Surface and below surface topography cell size control. This allows the user to generate a mesh with refinedcells near the surface of the topography to better capture features.

• Small (tile) meshes are generated and focused around each source/receiver so that the forward problem can besplit into many small problems and solved in parallel. The solutions are then interpolated back to the large baseoctree mesh. The user can specify the depth of each tile mesh, the number of cells surrounding source/receivers,and expand the polygon around the data.

• A more versatile format for survey and observations files

1.2 Program Library Content

The main executable programs within the AEM program library are:

• e3d_v2_tiled: Single executable file for carrying out forward modeling and inversion of FEM data

• create_octree_mesh_e3d_v2_tiled: creates a global OcTree mesh for the inversion based on the survey geom-etry and a set of local OcTree meshes about each transmitter and its receivers

The following Octree utility programs are also used:

• blk3cellOct: creates a conductivity model on the OcTree mesh

• extract_mesh: extracts a specified local OcTree mesh from a hexidecimal file containing all local meshes

• create_weight_file: creates cell weighting for the recovered model

4 Chapter 1. Package overview

Page 9: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

• interface_weights: creates weights on the faces of cells for the recovered model

1.3 Licensing

Licensing for commercial use is managed by distributors, not by the UBC-GIF research group. Details are in theLicensing policy document.

1.4 Installing E3D

1.4.1 E3D Executables

There is no automatic installer currently available for the E3D program library. Please follow the following steps inorder to use the software:

1. Extract all files provided from the given zip-based archive and place them all together in a new folder.

2. Add this directory as new path to your environment variables.

3. Make sure to create a separate directory for each new inversion, where all the associated files will be stored. Donot store anything in the bin directory other than executable applications and Graphical User Interface applica-tions (GUIs).

1.4.2 MPI Executables

Message passaging interface (MPI) programming allows E3D version 2 tiled to utilize parallel computing. Even ifthe code is being run on a single machine, the user is required to download the necessary MPI package to use theexecutables. To set up MPI:

1. Download and install:

• Microsoft MPI v10.0 : Required for window machines

• MPICH : Required for Linux machines

2. Path the folders containing MPI executables to your environment variables.

1.3. Licensing 5

Page 10: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

6 Chapter 1. Package overview

Page 11: e3dDocumentation - E3D version 2 tiled package

CHAPTER

TWO

BACKGROUND THEORY

This section aims to provide the user with a basic review of the physics, discretization, and optimization techniquesused to solve the frequency domain electromagnetics problem. It is assumed that the user has some background inthese areas. For further reading see ([Nab91]).

Important:

This code uses the following coordinate system and Fourier convention to solve Maxwell’s equations:

• X = Easting, Y = Northing, Z +ve downward (left-handed)

• An 𝑒−𝑖𝜔𝑡 Fourier convention

2.1 Fundamental Physics

Maxwell’s equations provide the starting point from which an understanding of how electromagnetic fields can be usedto uncover the substructure of the Earth. In the frequency domain Maxwell’s equations are:

∇×E− 𝑖𝜔𝜇H = 0 (2.1)∇×H− 𝜎E = s(2.1)

n×H = 0(2.1)

where E and H are the electric and magnetic fields, s is some external source and 𝑒−𝑖𝜔𝑡 is suppressed. Symbols 𝜇,𝜎 and 𝜔 are the magnetic permeability, conductivity, and angular frequency, respectively. This formulation assumes aquasi-static mode so that the system can be viewed as a diffusion equation (Weaver, 1994; Ward and Hohmann, 1988in [Nab91]). By doing so, some difficulties arise when solving the system;

• the curl operator has a non-trivial null space making the resulting linear system highly ill-conditioned

• the conductivity 𝜎 varies over several orders of magnitude

• the fields can vary significantly near the sources, but smooth out at distance thus high resolution is required nearsources

7

Page 12: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

2.2 Octree Mesh

By using an Octree discretization of the earth domain, the areas near sources and likely model location can be give ahigher resolution while cells grow large at distance. In this manner, the necessary refinement can be obtained withoutadded computational expense. The figure below shows an example of an Octree mesh, with nine cells, eight of whichare the base mesh minimum size.

When working with Octree meshes, the underlying mesh is defined as a regular 3D orthogonal grid where the numberof cells in each dimension are 2𝑛1 × 2𝑛2 × 2𝑛3 . The cell widths for the underlying mesh are ℎ1, ℎ2, ℎ3, respectively.This underlying mesh is the finest possible, so that larger cells have side lengths which increase by powers of 2. Theidea is that if the recovered model properties change slowly over a certain volume, the cells bounded by this volumecan be merged into one without losing the accuracy in modeling, and are only refined when the model begins to changerapidly.

2.3 Discretization of Operators

The operators div, grad, and curl are discretized using a finite volume formulation. Although div and grad do notappear in (2.1), they are required for the solution of the system. The divergence operator is discretized in the usualflux-balance approach, which by Gauss’ theorem considers the current flux through each face of a cell. The nodalgradient (operates on a function with values on the nodes) is obtained by differencing adjacent nodes and dividing byedge length. The discretization of the curl operator is computed similarly to the divergence operator by utilizing Stokestheorem by summing the magnetic field components around the edge of each face. Please see [HHG+12] for a detaileddescription of the discretization process.

8 Chapter 2. Background Theory

Page 13: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

2.4 Forward Problem

To solve the forward problem, we must first discretize and solve for the fields in Eq. (2.1), where 𝑒−𝑖𝜔𝑡 is suppressed.Using finite volume discretization, the electric fields on cell edges (ue) are obtained by solving the following systemat every frequency:

A(𝜎)ue = −𝑖𝜔se (2.1)

where se is a source term discretized to cell edges and matrix A(𝜎) is given by:

A(𝜎) = CT M𝜇 C+ 𝑖𝜔M𝜎 (2.2)

C is the curl operator and the mass matricies M𝜎 and M𝜇 are given by:

M𝜇 = 𝑑𝑖𝑎𝑔(AT

f2cV𝜇−1)

(2.3)M𝜎 = 𝑑𝑖𝑎𝑔

(AT

e2cV𝜎)

(2.4)(2.5)

where V is a diagonal matrix containing all cell volumes, Af2c averages from faces to cell centres and Ae2c averagesfrom edges to cell centres. The magnetic permeabilities and conductivities for each cell are contained within vectors𝜇 and 𝜎, respectively.

2.4.1 Total vs Secondary Field

To compute the total field or the secondary field, we define a different right-hand-side for Eq. (2.1)

Total Field Computation:

For total field data, the analytic source current s defined in Eq. (2.1) is interpolated to cell edges by a function 𝑓(s). Itis then multiplyied by an inner-product matrix Me that lives on cell-edges. Thus for the right-hand-side in Eq. (2.1),the discrete source term se is given by:

se = Me 𝑓(s)

where

Me = 𝑑𝑖𝑎𝑔(AT

e2cv)

Secondary Field Computation:

For secondary field data, we compute the analytic electric field in a homogeneous full-space due to a current loopor wire. We do this for a background conductivity 𝜎0 and permeability 𝜇0. The analytic solution for our source iscomputed by taking the analytic solution for an electric dipole and integrating over the path of the wire/loop, i.e.:

u0(r) =

∫𝑠′Ee(r, r

′)𝑑s′

For an electric dipole at the origin and oriented along the �� direction, the electric field in a homogeneous full-space isgiven by:

Ee =𝐼𝑑𝑠

4𝜋(𝜎 − 𝑖𝜔𝜀)𝑟3𝑒𝑖𝑘𝑟

[(𝑥2

𝑟2x+

𝑥𝑦

𝑟2y +

𝑥𝑧

𝑟2z

)...

(− 𝑘2𝑟2 − 3𝑖𝑘𝑟 + 3

)+(𝑘2𝑟2 + 𝑖𝑘𝑟 − 1

)x

].

(2.6)

2.4. Forward Problem 9

Page 14: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

where

𝑘2 = 𝜔2𝜇𝜀+ 𝑖𝜔𝜇𝜎

Once the analytic background field is computed on cell edges, we construct the linear operator A(𝜎0) from Eq. (2.2)using the background conductivity and permeability. Then we use A(𝜎0) and u0 to compute the right-hand-side thatis used to solve Eq. (2.1)

A(𝜎0)u0 = −𝑖𝜔se

2.4.2 Computing Fields at Receivers

Once the electric field on cell edges has been computed, we must project to the receivers. For E3D version 2, closedwire loops are used to measure the average magnetic field perpendicular to the loop. Magnetic field measurements(𝐻) are obtained by integrating the electric field (e) over the path of close loop to compute the EMF. The EMF is thendivided by 𝑖𝜔𝜇0𝐴, where 𝐴 is the cross-sectional area, to represent the quantity in terms of the average magnetic fieldnormal to the receiver. In practice, magnetic field measurements can be approximated accurately by applying a linearprojection matrix (𝑃 ) to the electric fields computed on cell edges:

𝐻 =1

𝑖𝜔𝜇0𝐴

∫𝐶

e · 𝑑l ≈ 1

𝑖𝜔𝑃 ue

Where (P) is the projection matrix that takes the electric fields on cell edges to all receivers, the vector containing allmagnetic field measurements is given by:

H =1

𝑖𝜔Pue = −PA(𝜎)−1s (2.7)

2.5 Sensitivity

The total magnetic field data are split into their real and imaginary components. Thus the data at a particular frequencyfor a particular reading is organized in a vector of the form:

d = [H′,H′′]𝑇 (2.8)

where ′ denotes real components and ′′ denotes imaginary components. To determine the sensitivity of the data (i.e.(2.8)) with respect to the model (𝜎), we must compute:

𝜕d

𝜕𝜎=

[𝜕H′

𝜕𝜎,𝜕H′′

𝜕𝜎

]𝑇where the conductivity model 𝜎 is real-valued. To differentiate the data with with respect to the model, we require thederivative of the electric fields on cell edges (ue) with respect to the model (Eq. (2.7)). This is given by:

𝜕ue

𝜕𝜎= −𝑖𝜔A−1𝑑𝑖𝑎𝑔(ue)A

Te2cV (2.9)

10 Chapter 2. Background Theory

Page 15: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

2.6 Inverse Problem

We are interested in recovering the conductivity distribution for the Earth. However, the numerical stability of theinverse problem is made more challenging by the fact rock conductivities can span many orders of magnitude. To dealwith this, we define the model as the log-conductivity for each cell, e.g.:

m = 𝑙𝑜𝑔(𝜎)

The inverse problem is solved by minimizing the following global objective function with respect to the model:

𝜑(m) = 𝜑𝑑(m) + 𝛽𝜑𝑚(m) (2.10)

where 𝜑𝑑 is the data misfit, 𝜑𝑚 is the model objective function and 𝛽 is the trade-off parameter. The data misfit ensuresthe recovered model adequately explains the set of field observations. The model objective function adds geologicalconstraints to the recovered model. The trade-off parameter weights the relative emphasis between fitting the data andimposing geological structures.

2.6.1 Data Misfit

Here, the data misfit is represented as the L2-norm of a weighted residual between the observed data (𝑑𝑜𝑏𝑠) and thepredicted data for a given conductivity model 𝜎, i.e.:

𝜑𝑑 =1

2

Wd

(dobs − F[𝜎]

)2 (2.11)

where 𝑊𝑑 is a diagonal matrix containing the reciprocals of the uncertainties 𝜀 for each measured data point, i.e.:

Wd = diag[𝜀−1

]

Important: For a better understanding of the data misfit, see the GIFtools cookbook .

2.6.2 Model Objective Function

Due to the ill-posedness of the problem, there are no stable solutions obtained by freely minimizing the data misfit, andthus regularization is needed. The regularization uses penalties for both smoothness, and likeness to a reference model𝑚𝑟𝑒𝑓 supplied by the user. The model objective function is given by:

𝜑𝑚 =𝛼𝑠

2

∫Ω

𝑤𝑠|𝑚−𝑚𝑟𝑒𝑓 |2𝑑𝑉 +𝛼𝑥

2

∫Ω

𝑤𝑥

𝜕𝜕𝑥(𝑚−𝑚𝑟𝑒𝑓

)2

𝑑𝑉 (2.12)

+𝛼𝑦

2

∫Ω

𝑤𝑦

𝜕𝜕𝑦 (𝑚−𝑚𝑟𝑒𝑓

)2

𝑑𝑉 +𝛼𝑧

2

∫Ω

𝑤𝑧

𝜕𝜕𝑧 (𝑚−𝑚𝑟𝑒𝑓

)2

𝑑𝑉(2.12)

where 𝛼𝑠, 𝛼𝑥, 𝛼𝑦 and 𝛼𝑧 weight the relative emphasis on minimizing differences from the reference model and thesmoothness along each gradient direction. And 𝑤𝑠, 𝑤𝑥, 𝑤𝑦 and 𝑤𝑧 are additional user defined weighting functions.

An important consideration comes when discretizing the regularization onto the mesh. The gradient operates on cellcentered variables in this instance. Applying a short distance approximation is second order accurate on a domain withuniform cells, but only 𝒪(1) on areas where cells are non-uniform. To rectify this a higher order approximation is used([HHG+12]). The second order approximation of the model objective function can be expressed as:

𝜑𝑚(m) =(m−mref

)TWTW

(m−mref

)2.6. Inverse Problem 11

Page 16: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

where the regularizer is given by:

WTW = 𝛼𝑠diag(ws ⊙ v) (2.12)+ 𝛼𝑥G

Tx diag(wx ⊙ vx)Gx(2.12)

+ 𝛼𝑦GTy diag(wy ⊙ vy)Gy(2.12)

+ 𝛼𝑧GTz diag(wz ⊙ vz)Gz(2.12)

The Hadamard product is given by ⊙, vx is the volume of each cell averaged to x-faces, wx is the weighting function𝑤𝑥 evaluated on x-faces and Gx computes the x-component of the gradient from cell centers to cell faces. Similarlyfor y and z.

If we require that the recovered model values lie betweenmL ⪯ m ⪯ mH , the resulting bounded optimization problemwe must solve is:

min𝑚

𝜑𝑑(m) + 𝛽𝜑𝑚(m) (2.12)

s.t. mL ⪯ m ⪯ mH(2.12)

A simple Gauss-Newton optimization method is used where the system of equations is solved using ipcg (incompletepreconditioned conjugate gradients) to solve for each G-N step. For more information refer again to [HHG+12] andreferences therein.

2.6.3 Inversion Parameters and Tolerances

Cooling Schedule

Our goal is to solve Eq. (2.12), i.e.:

min𝑚

𝜑𝑑(m) + 𝛽𝜑𝑚(m−mref ) (2.12)

s.t. mL ≤ m ≤ mH(2.13)

but how do we choose an acceptable trade-off parameter 𝛽? For this, we use a cooling schedule. This is described inthe GIFtools cookbook . The cooling schedule can be defined using the following parameters:

• beta_max: The initial value for 𝛽

• beta_factor: The factor at which 𝛽 is decrease to a subsequent solution of Eq. (2.12)

• nBetas: The number of times the inversion code will decrease 𝛽 and solve Eq. (2.12) before it quits

• Chi Factor: The inversion program stops when the data misfit 𝜑𝑑 ≤ 𝑁 ×𝐶ℎ𝑖 𝐹𝑎𝑐𝑡𝑜𝑟, where 𝑁 is the numberof data observations

Gauss-Newton Update

For a given trade-off parameter (𝛽), the model m is updated using the Gauss-Newton approach. Because the problem isnon-linear, several model updates may need to be completed for each 𝛽. Where 𝑘 denotes the Gauss-Newton iteration,we solve:

H𝑘 𝛿m𝑘 = −∇𝜑𝑘 (2.14)

using the current model m𝑘 and update the model according to:

m𝑘+1 = m𝑘 + 𝛼𝛿m𝑘 (2.15)

where 𝛿m𝑘 is the step direction, ∇𝜑𝑘 is the gradient of the global objective function, H𝑘 is an approximation of theHessian and 𝛼 is a scaling constant. This process is repeated until any of the following occurs:

12 Chapter 2. Background Theory

Page 17: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

1. The gradient is sufficiently small, i.e.:

‖∇𝜑𝑘‖2 < 𝑡𝑜𝑙_𝑛𝑙

2. The smallest component of the model perturbation its small in absolute value, i.e.:

max(|𝛿m𝑘|) < 𝑚𝑖𝑛𝑑𝑚

3. A max number of GN iterations have been performed, i.e.

𝑘 = 𝑖𝑡𝑒𝑟_𝑝𝑒𝑟_𝑏𝑒𝑡𝑎

Gauss-Newton Solve

Here we discuss the details of solving Eq. (2.14) for a particular Gauss-Newton iteration 𝑘. Using the data misfit fromEq. (2.11) and the model objective function from Eq. (2.12), we must solve:[

JTWTdWdJ+ 𝛽WTW

]𝛿m𝑘 = −

[JTWT

dWd

(dobs − F[m𝑘]

)+ 𝛽WTWm𝑘

](2.16)

where J is the sensitivity of the data to the current model m𝑘. The system is solved for 𝛿m𝑘 using the incomplete-preconditioned-conjugate gradient (IPCG) method. This method is iterative and exits with an approximation for 𝛿m𝑘.Let 𝑖 denote an IPCG iteration and let 𝛿m(𝑖)

𝑘 be the solution to (2.16) at the 𝑖𝑡ℎ IPCG iteration, then the algorithm quitswhen:

1. the system is solved to within some tolerance and additional iterations do not result in significant increases insolution accuracy, i.e.:

‖𝛿m(𝑖−1)𝑘 − 𝛿m

(𝑖)𝑘 ‖2/‖𝛿m(𝑖−1)

𝑘 ‖2 < 𝑡𝑜𝑙_𝑖𝑝𝑐𝑔

2. a maximum allowable number of IPCG iterations has been completed, i.e.:

𝑖 = 𝑚𝑎𝑥_𝑖𝑡𝑒𝑟_𝑖𝑝𝑐𝑔

2.6. Inverse Problem 13

Page 18: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

14 Chapter 2. Background Theory

Page 19: e3dDocumentation - E3D version 2 tiled package

CHAPTER

THREE

ELEMENTS OF THE PROGRAM

This section provides a brief description of each program in the E3D version 2 tiled package. In addition, we describethe file formats for all input and supporting files used by the coding library.

3.1 Program Library

The main executable programs within the AEM program library are:

• e3d_v2_tiled: Single executable file for carrying out forward modeling and inversion of FEM data

• create_octree_mesh_e3d_v2_tiled: creates a global OcTree mesh for the inversion based on the survey geom-etry and a set of local OcTree meshes about each transmitter and its receivers

The following Octree utility programs are also used:

• blk3cellOct: creates a conductivity model on the OcTree mesh

• extract_mesh: extracts a specified local OcTree mesh from a hexidecimal file containing all local meshes

• create_weight_file: creates cell weighting for the recovered model

• interface_weights: creates weights on the faces of cells for the recovered model

3.2 Main Input Files

Here, we describe the main input files for executables contained with the E3D version 2 tiled package.

3.2.1 Create OcTree Mesh Input File

OcTree meshes used in the e3d code are created using the program create_octree_mesh_e3d_v2_tiled.exe. Thisincludes a global mesh (the mesh for which the inverse problem is solved) and a set of local meshes (OcTree meshesuse to solve the set of forward problems). Parameters necessary for creating all of the OcTree meshes are set in theinput file. The lines within the input file are as follows:

Important: This code has parameters which define the global mesh used in the inversion (where the recovered modellives) and parameters defining the local meshes where the forward problem is solved for each transmitter. The formerwill be referred to as the global inversion mesh and the latter will be referred to as local forward meshes.

15

Page 20: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

Line#

Parameter Descriptions

1 dx dy dz min. cell widths in x, y and z for base mesh2 min_cell_fact min_cell_size_fwd

max_topo_celladditional cell size parameters

3 x_pad y_pad down_pad up_pad sets the extent of mesh in x, y and z direction4 dist_inv_1 dist_inv_2 dist_inv_3 sets core mesh discretization for the inverse mesh5 dist_fwd_1 dist_fwd_2 dist_fwd_3 sets core mesh discretization for local forward meshes6 n1 n2 n3 sets thickness of cells of finest discretization near

receivers7 locFile the file containing observation locations8 txFile the file defining all transmitters9 rxFile the file defining all receivers10 freqFile the file containing the frequencies being measured11 topoFile sets topography12 polygon edge width sets horizontal extent of core region for the inversion

mesh13 read/create mesh read in or create global inversion mesh

Fig. 3.1: Example input file for creating octree mesh (Download )

Line Descriptions

• dx dy dz: Minimum cell widths in x, y and z for the base mesh.

• min_cell_fact min_cell_size_fwd max_topo_cell: These parameters determine the rate of cell expansion forregions near topography and for the local forward meshes.

– min_cell_fact: Defines the rate of topography-based cell size increase on the global inversion mesh withrespect to depth. After each layer of N cells, the cell size will increase by a factor of 2 until a maximumcell size (max_topo_cell) is reached. N must be an integer value that is a power of 2.

– min_cell_size_fwd: This sets the minimum cell size for the local forward meshes. A value of 2 means theminimum cell size in the local mesh has a side width of 2 times the base mesh cell size. This parametermust be an integer value that is a power of 2.

– max_topo_cell: This determines the maximum cell size for which topography-based cell size increase isused on the global inversion mesh; after which typical OcTree cell expansion is used. This parameter must

16 Chapter 3. Elements of the Program

Page 21: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

be an integer value that is a power of 2.

• x_pad y_pad down_pad up_pad: Distance from the core mesh region in the x, y, downward and upwarddirections, respectively, that the global inversion mesh extends.

• dist_inv_1 dist_inv_2 dist_inv_3: For the global inversion mesh, these parameters set the discretization of thecore mesh region (i.e. the region near the transmitters and receivers) in terms of depth. Up to a depth of dist_inv_1from the surface, the smallest cell size is used (set by dx, dy, dz). For the following dist_inv_2 metres, a cell width2 times large is used. For the following dist_inv_3 metres, the cell width is doubled again. Below the third depthregion, the cells widths increase by a factor of 2 for every additional layer (see the figure below).

• dist_fwd_1 dist_fwd_2 dist_fwd_3: For the local forward meshes, these parameters set the discretization of thecore mesh region (i.e. the region near the transmitter and receivers) in terms of depth. Up to a depth of dist_fwd_1from the surface, the smallest cell size is used (set by dx, dy, dz). For the following dist_fwd_2 metres, a cellwidth 2 times large is used. For the following dist_fwd_3 metres, the cell width is doubled again. Below the thirddepth region, the cells widths increase by a factor of 2 for every additional layer (see the figure below).

Note: These values must be entered. However, they are only relevant for the e3dinv_ver2_tiled code.

• n1 n2 n3: This sets the thicknesses of layers of finest discretization near the receivers. n1 = 4 means that aroundeach receiver, there is a layer 4 cells thick that uses the finest discretization. This is followed by a layer which isn2 cells thick, where the cell dimensions are increased by a factor of 2. Likewise for the 3rd layer.

• locFile: Path to the file containing the survey information. This can be either an observed data file, or a surveyindex file.

• txFile: Path to the file defining the transmitters; i.e. the transmitter file.

• rxFile: Path to the file defining the receivers; i.e. the receiver file.

• freqFile: Path to the file defining the frequencies used in the survey; i.e. the frequencies file.

• topoFile: If a topography file is available, the file path to the topography file is entered; see topography file forformat. In the case of flat topography, the user instead enter “TOPO_CONST”, followed by a space, then theelevation of the surface topography; for example “TOPO_CONST 125.5”.

• polygon edge width: Here we define the horizontal extent of the core inversion mesh region. The user maydo this by providing the path to a file containing the points for a polygon. The user may also set the horizontalextent of the core mesh region based on transmitter and receiver locations. The set of transmitter and receiverlocations can be used to create a convex hull. For this option the user types “MAKE_POLYGON d”, where d isthe distance outside the convex hull the user want to extend to core mesh region.

• read/create mesh: If the global inversion mesh has already been created, then it may be loaded by typing“READ_LARGE_MESH filepath”. In this case, the global inversion mesh is used to define the local forwardmeshes. If the global inversion mesh needs to be created, the user types “CREATE_LARGE_MESH filename”,where the global inversion mesh is output to the file filename.

3.2.2 Create Model Input File

The file blk3cellOct.inp defines the model (conductivity/active). The user specifies the locations, dimensions andvalues for a set of blocks. All undefined cells within the mesh are set to the background value. The format for this fileis as follows:

3.2. Main Input Files 17

Page 22: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

Line # Parameter Description1 Octree Mesh path to octree mesh2 Out Model Name output model name3 𝜎𝑏 background conductivity/susceptibility4 𝑁 number of blocks5 𝑥

(1)1 𝑥

(1)2 𝑦

(1)1 𝑦

(1)2 𝑧

(1)1 𝑧

(1)2 𝑚(1) Block 1

6 𝑥(2)1 𝑥

(2)2 𝑦

(2)1 𝑦

(2)2 𝑧

(2)1 𝑧

(2)2 𝑚(2) Block 2

......

...𝑥(𝑁)1 𝑥

(𝑁)2 𝑦

(𝑁)1 𝑦

(𝑁)2 𝑧

(𝑁)1 𝑧

(𝑁)2 𝑚(𝑁) Block N

where superscript (𝑖) for 𝑖 = 1, 2, ..., 𝑁 refers to a particular block. 𝑥1, 𝑥2, 𝑦1, 𝑦2, 𝑧1 and 𝑧2 define the nodes of eachblock and 𝑚 defines conductivity/susceptibility value.

Fig. 3.2: Example input file for creating octree mesh (Download )

3.2.3 Forward Modeling Input File

Both the forward problem and inverse problem are solved using the executable program e3d_v2_tiled.exe. As a result,the input file will be described within the running the inversion section.

3.2.4 Cell and Face Weights

Cell Weights Input File

The parameters used to create cell weights are defined in the input file. The lines within the input file are as follows:

Line#

Parameter Description

1 OcTree Mesh path to octree mesh2 Active Cells path to active cells model3 # Surface Layers set number of cells below surface in which weighting horizontal smoothing

is applied4 Horizontal Surface

Weightssurface weights values

5 Output Name name for output face weighting file

18 Chapter 3. Elements of the Program

Page 23: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

Fig. 3.3: Example input file for creating interface weights (Download )

Line Descriptions

• OcTree Mesh: file path to the OcTree mesh file

• Active Topography Cells: Here, the user can choose to specify the cells which lie below the surface topography.To do this, the user may supply the file path to an active cells model file or type “ALL_ACTIVE”. The activecells model has values 1 for cells lying below the surface topography and values 0 for cells lying above.

• # Surface Layers: This represents the first parameter used to apply surface weighting. Here, the user specifieshow many cell layers below the surface will have surface weighting in X and Y.

• Horizontal Surface Weights: Here, the user specifies the weights on X and Y faces for every layer (from surfacelayer downwards). Essentially, we are invoking a smoothness along the X and Y directions that decreases withdepth. The user must enter a set of decreasing values separated by spaces. The number of values that must beentered is equal to the integer value set on the previous line.

• Output Name: File name for the output interface weights file.

Interface Weights Input File

The parameters used to create interface weights are defined in the input file. The lines within the input file are asfollows:

Line#

Parameter Description

1 OcTree Mesh path to octree mesh2 Active Cells path to active cells model3 Model path to a reference conductivity model4 Mapping Type set as log or linear mapping5 Gradient Tolerance set threshold for largest gradients preserved in recovered model6 # Surface Layers set number of cells below surface in which weighting horizontal smoothing

is applied7 Horizontal Surface

Weightssets the weighting for horizontal smoothing for each layer

8 Output Name name for output face weighting file

3.2. Main Input Files 19

Page 24: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

Fig. 3.4: Example input file for creating interface weights.

Line Descriptions

• OcTree Mesh: file path to the OcTree mesh file

• Active Topography Cells: Here, the user can choose to specify the cells which lie below the surface topography.To do this, the user may supply the file path to an active cells model file or type “ALL_ACTIVE”. The activecells model has values 1 for cells lying below the surface topography and values 0 for cells lying above.

• Conductivity Model: Here, the user provides reference model containing the conductivity structures they wouldlike to preserve. The flag “NO_MODEL” may be used if only surface weighting is applied.

• Mapping Type: Here, the user specifies whether the mapping between the model value and the physical propertyvalue on the mesh is linear or logarithmic. To specify, use the flags “LIN_MODEL” or “LOG_MODEL”. In thecase of E3DMT, the inversion recovers the log-conductivity. As a result, the user should use “LOG_MODEL”.

• Gradient Tolerance: Here, the user specifies the threshold for the largest gradients that can be preserved fol-lowed by a replacement value if the gradient is over the threshold (i.e. Val1 Val2). If we try to preserve verylarge gradients due to blocky models, we may fit these features at the expense of others. The tolerance thresh-old and replacement value should be determined from the expected physical property values and cell size. Forlog-conductivity and 100m cell widths, a good threshold might be: 𝜎𝑚𝑎𝑥/𝑑ℎ.

• # Surface Layers: This represents the first parameter used to apply surface weighting. Here, the user specifieshow many cell layers below the surface will have surface weighting in X and Y.

• Horizontal Surface Weights: Here, the user specifies the weights on X and Y faces for every layer (from surfacelayer downwards). Essentially, we are invoking a smoothness along the X and Y directions that decreases withdepth. The user must enter a set of decreasing values separated by spaces. The number of values that must beentered is equal to the integer value set on the previous line.

• Output Name: File name for the output interface weights file.

20 Chapter 3. Elements of the Program

Page 25: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

3.2.5 Inversion Input File

Both the forward and inverse problems are solved using the e3d_v2_tiled.exe executable program. In both cases, thelines of the input file are the same. However in the case of forward modeling, some lines in the input file are not usedby the code and can be given any value. The lines of input file are as follows:

Line # Parameter Description1 Inversion Mesh path to inversion mesh file2 Forward Mesh path to forward mesh file3 Observations File path to observations file4 Transmitters File path to transmitters file5 Receivers File path to receivers file6 Frequencies File path to frequencies file7 Initial/FWD Model initial model/forward model8 Reference Model reference model9 Susceptibility Model background susceptibility model10 Active Topography Cells topography11 Active Model Cells active model cells12 Cell Weights additional cell weights13 Face Weights additional face weights14 Norm Sparseness set parameters to recover smooth, sparse or blocky models15 beta_max beta_min beta_factor cooling schedule for beta parameter16 alpha_s alpha_x alpha_y alpha_z weighting constants for smallness and smoothness constraints17 Chi Factor stopping criteria for inversion18 iter_per_beta nBetas set the number of Gauss-Newton iteration for each beta value19 tol_ipcg max_iter_ipcg set the tolerance and number of iterations for Gauss-Newton solve20 Reference Model Update reference model21 Hard Constraints use SMOOTH_MOD or SMOOTH_MOD_DIFF22 Bounds upper and lower bounds for recovered model23 Calculate sensitivity use CALC_SENS or NOT_CALC_SENS24 Field Options model total or secondary field25 Memory Options options for storing factorizations of forward system (RAM vs disk)26 PCT_FACT fractional percent of tiles used for sensitivity calculation27 Active tiles file option to invert using only subset of data

Line Descriptions

• Inversion Mesh: file path to the inversion (OcTree) mesh file

• Forward Mesh: file path to the forward (OcTree) mesh file

• Observation File: file path to the observed data file

• Transmitter File: file path to the transmitter file

• Receiver File: file path to the receiver file

• Frequencies File: file path to the frequencies file

• Initial/FWD Model: On this line we specify either the starting model for the inversion or the conductivity modelfor the forward modeling. On this line, there are 3 possible options:

– If the program is being used to forward model data, the flag ‘FWDMODEL’ is entered followed by the pathto the conductivity model.

3.2. Main Input Files 21

Page 26: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

Fig. 3.5: Example input file for the inversion program (Download ). Example for forward modeling only (Download )

22 Chapter 3. Elements of the Program

Page 27: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

– If the program is being used to invert data, only the path to a conductivity model is required; e.g. inversionis assumed unless otherwise specified.

– If a homogeneous conductivity value is being used as the starting model for an inversion, the user can enter“VALUE” followed by a space and a numerical value; example “VALUE 0.01”.

Important: If data are only being forward modeled, only the active topography cells and tol_ipcg max_iter_ipcgfields are relevant. However, the remaining fields must not be empty and must have correct syntax for the code to run.

• Reference Model: The user may supply the file path to a reference conductivity model. If a homogeneousconductivity value is being used for all active cells, the user can enter “VALUE” followed by a space and anumerical value; example “VALUE 0.01”.

• Susceptibility Model: The user may supply the file path to a background susceptibility model. If the Earth isnon-susceptible, the user may enter the flag NO_SUS.

• Active Topography Cells: Here, the user can choose to specify the cells which lie below the surface topography.To do this, the user may supply the file path to an active cells model file or type “ALL_ACTIVE”. The activecells model has values 1 for cells lying below the surface topography and values 0 for cells lying above.

• Active Model Cells: Here, the user can choose to specify the model cells which are active during the inversion.To do this, the user may supply the file path to an active cells model file or type “ALL_ACTIVE”. The activecells model has values 1 for cells lying below the surface topography and values 0 for cells lying above. Valuesfor inactive cells are provided by the background conductivity model.

• Cell Weights: Here, the user specifies whether cell weights are supplied. If so, the user provides the file path toa cell weights file If no additional cell weights are supplied, the user enters “NO_WEIGHT”.

• Face Weights: Here, the user specifies whether face weights are supplied. If so, the user provides thefile path to a face weights file cell weights file. If no additional cell weights are supplied, the user enters“NO_FACE_WEIGHT”. The user may also enter “EKBLOM” for 1-norm approximation to recover sharperedges.

• Sparseness: The sparseness of the recovered model is determined by the terms within the model objectivefunction . A standard approach is to use an L2-norm for all terms

– To use the L2-norm, enter the flag ‘USE_L2’

– To specify the Ekblom norm, enter the flag ‘USE_EKBLOM’ followed by values for 𝑝 and 𝜀 where theEkblom norm is given by:

𝑀∑𝑖=1

(𝜎2𝑖 + 𝜀2)𝑝/2 s.t. 1 ≤ 𝑝 ≤ 2, 𝜀 > 0

• beta_max beta_min beta_factor: Here, the user specifies protocols for the trade-off parameter (beta). beta_maxis the initial value of beta. beta_min is generally used to denote the minimum allowable trade-off parameter theprogram can use before quitting. For this code however, the minimum beta is determined through the nBetaparameter on line 15 and the beta_min parameter has no function. beta_factor defines the factor by which betais decreased at each iteration; example “1E4 10 0.2”. The user may also enter “DEFAULT” if they wish to havebeta calculated automatically. See theory on cooling schedule.

• alpha_s alpha_x alpha_y alpha_z: Alpha parameters . Here, the user specifies the relative weighting betweenthe smallness and smoothness component penalties on the recovered models.

• Chi Factor: The chi factor defines the target misfit for the inversion. A chi factor of 1 means the target misfit isequal to the total number of data observations. For more, see the GIFtools cookbook .

3.2. Main Input Files 23

Page 28: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

• iter_per_beta nBetas: Here, iter_per_beta is the number of Gauss-Newton iterations per beta value. nBetas isthe number of times the inverse problem is solved for smaller and smaller trade-off parameters until it quits. Seetheory section for cooling schedule and Gauss-Newton update.

• tol_ipcg max_iter_ipcg: Here, the user specifies solver parameters. tol_ipcg defines how well the iterative solverdoes when solving for 𝛿𝑚 and max_iter_ipcg is the maximum iterations of incomplete-preconditioned-conjugategradient. See theory on Gauss-Newton solve

• Reference Model Update: Here, the user specifies whether the reference model is updated at each inversionstep result. If so, enter “CHANGE_MREF”. If not, enter “NOT_CHANGE_MREF”.

• Hard Constraints: SMOOTH_MOD runs the inversion without implementing a reference model (essential𝑚𝑟𝑒𝑓 = 0). “SMOOTH_MOD_DIF” constrains the inversion in the smallness and smoothness terms using areference model.

• Bounds: Bound constraints on the recovered model. Choose “BOUNDS_CONST” and enter the val-ues of the minimum and maximum model conductivity; example “BOUNDS_CONST 1E-6 0.1”. Enter“BOUNDS_NONE” if the inversion is unbounded, or if there is no a-prior information about the subsurfacemodel.

• Calculate sensitivity: When the flag CALC_SENS is used, the sensitivity matrix (J) is computed and stored forthe current model. When the flag NOT_CALC_SENS is used, the product of the sensitivity and any vector is donewithout storing the sensitivity matrix. The former option is faster but uses a lot more memory. Unless the forwardmeshes and/or the number of data are sufficiently small, it is suggested the user choose NOT_CALC_SENS.

• Field Options: The user can model the total field or the secondary field. In the latter case, the user may choosewhether the primary field is computed analytically or numerically for a homogeneous background conductivity.

– Use the flag TOTAL_FIELD to model the total field.

– Use the flag SECONDARY_ANALYTIC followed by a value for the background conductivity to model thesecondary field. In this case, the code will compute the total field for the conductivity model provided, thensubtract the analytic total field using the homogeneous background conductivity provided. To subtract thefree-space primary field, let the background conductivity be 1e-8 S/m.

– Use the flag SECONDARY_NUMERIC followed by a value for the background conductivity to model thesecondary field. In this case, the code will compute the total field for the conductivity model provided, thensubtract the numerically computed total field using the homogeneous background conductivity provided.To subtract the free-space primary field, let the background conductivity be 1e-8 S/m.

• Memory Options: This code uses a factorization to solve the forward system at each frequency. These factor-izations must be stored. By using the flag ‘FACTOR_IC’ (in cpu), factorizations are stored within a computer’sRAM. Although this is faster, larger problems cannot be solved if insufficient temporary memory is available.The factorizations are stored in permanent memory (disk) if the flag ‘FACTOR_OOC’ (out of cpu) is used fol-lowed by the path to a directory. This is slower because the program must read these files many times. Thesecond options is ill-advised if files are being transferred over a network.

• PCT_FACT: To save time and memory, we can approximate the sensitivity matrix at each iteration by usinga random subset of the data/local forward meshes. Thus PCT_FACT is the fractional percent of tiles (localforward meshes) which are used to approximate the sensitivity at each iteration; e.g. 0 < PCT_FACT < 1. As adefault option, we should use all of the tiles; i.e. PCT_FACT = 1.

• Active tiles file: This line allows the user to invert only a subset of the data by specifying the tiles (local forwardmeshes) they wish to be used in the inversion. If the flag USE_ALL_TILES is used, then all the data are inverted;e.g. all the tiles are used. If the path to an active tiles file is used, then only the ‘active tiles’ are inverted. Theactive tiles file is a vector of 1s and 0s, where a 1 denotes a local forward mesh that is used in the inversion, and azero denotes a local forward mesh that is not. The number of values in the active tiles file must equal the numberof local forward meshes.

24 Chapter 3. Elements of the Program

Page 29: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

3.3 Supporting Files

Here, we describe the formats of supporting files used to run e3d_v2_tiled.exe. The input files for each executableprogram are described in the running the programs section.

3.3.1 Survey Index File

This file is input when forward modeling data. Using 4 columns, the observation file indexes the frequencies, transmit-ters and receivers used for each measurement. Each row defines a unique field measurement. The general format is asfollows:

tx_ind f_ind rx_ind data_opttx_ind f_ind rx_ind data_opttx_ind f_ind rx_ind data_opt

...tx_ind f_ind rx_ind data_opt

Important:

Due to the way the forward problem is solved, it is imperative that the user sort the survey index file:

• First by transmitter

• Next by frequency

• Then finally by receiver

Parameter Descriptions

• tx_ind: The index corresponding to the desired transmitter within the transmitter file.

• f_ind: The index corresponding to the desired frequency within the frequencies file.

• rx_ind: The index corresponding to the desired receiver within the receiver file.

• 1: As of May 2018, a flag value of 1 is entered here. In future iterations of the code, this entry may be related toadditional functionality.

3.3.2 Observations File

This file is input when forward modeling or inverting field-collected data. Using 8 columns, the observation file in-dexes the frequencies, transmitters and receivers used for each measurement as well as the field observations and datauncertainties. Each row defines a unique field measurement. The general format is as follows:

Note:

• Blue hyperlinked entries are values specified by the user

• To omit a particular datum in the inversion, used the flag -99 on its corresponding uncertainty.

3.3. Supporting Files 25

Page 30: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

tx_ind f_ind rx_ind data_opt data_real unc_real data_imag unc_imagtx_ind f_ind rx_ind data_opt data_real unc_real data_imag unc_imagtx_ind f_ind rx_ind data_opt data_real unc_real data_imag unc_imag

...tx_ind f_ind rx_ind data_opt data_real unc_real data_imag unc_imag

Important:

Due to the way the forward problem is solved, it is imperative that the user sort the observations:

• First by transmitter

• Next by frequency

• Then finally by receiver

Parameter Descriptions

• tx_ind: The index corresponding to the desired transmitter within the transmitter file.

• f_ind: The index corresponding to the desired frequency within the frequencies file.

• rx_ind: The index corresponding to the desired receiver within the receiver file.

• 1: As of May 2018, a flag value of 1 is entered here. In future iterations of the code, this entry may be related toadditional functionality.

• data_real: The real component of the observed data.

• unc_real: The uncertainty for the real component of the observed data.

• data_imag: The imaginary component of the observed data.

• unc_imag: The uncertainty for the real component of the observed data.

3.3.3 Predicted Data File

E3D version 2 tiled models magnetic field data in a left-handed coordinate system where X is Easting, Y is Northingand Z is +ve downwards. For a given model, E3D version 2 computes the data by integrating the electric field (E)over each receiver loop to obtain the induced EMF, then uses the dipole moment of the receiver and Faraday’s law torepresent the voltage in the coil as magnetic field value:

𝐻 =1

𝑖𝜔𝜇𝐴

∮𝐶

E · 𝑑l

If the receive loop is sufficiently small, the data are just the dot product of the total field H with the direction definingthe receiver’s dipole moment:

𝐻 = H · m

|m|

26 Chapter 3. Elements of the Program

Page 31: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

Predicted data files output from e3d_v2_tiled.exe have a simple 2 column format. Column 1 contains the real compo-nent of the total magnetic field data measured by the receiver, and column 2 contains the imaginary component. Therows are ordered the same as in the survey index or observations file. Thus predicted data files take the format:

𝐻 ′1 𝐻 ′′

1

𝐻 ′2 𝐻 ′′

2

𝐻 ′3 𝐻 ′′

3

...

𝐻 ′4 𝐻 ′′

4

3.3.4 Frequencies File

The format of the frequencies file is as follows:

𝑘1 𝑓1𝑘2 𝑓2𝑘3 𝑓3𝑘4 𝑓4𝑘4 𝑓5𝑘5 𝑓6

...𝑘𝑁−1 𝑓𝑁−1

𝑘𝑁 𝑓𝑁

where

• 𝑁 is the number of unique frequencies within the file

• 𝑘𝑖 defines the index value (1,2,. . . .,N) for a particular frequency. Should be ordered 1 to N.

• 𝑓𝑖 is the frequency in Hz.

Below we see an example of a frequencies file which defines 7 unique frequencies.

3.3. Supporting Files 27

Page 32: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

3.3.5 Transmitter and Receiver Files

The exact dimensions of the transmitters or receivers used to model FEM data are defined within a transmitter ora receiver file, respectively; i.e. transmitters are defined within a transmitter file and receivers are defined within areceivers file. Because transmitters and receivers are both defined as closed loops made up of wire segments, theformat of the transmitter and receiver files is identical.

Note:

• Bolded entries are fixed flags recognized by the Fortran codes and blue hyperlinked entries are values/regularexpressions specified by the user

Format

The lines of a transmitter/receiver file are formatted as follows:

ID N 1𝑥1 𝑦1 𝑧1

...𝑥𝑁 𝑦𝑁 𝑧𝑁

ID N 1𝑥1 𝑦1 𝑧1

...𝑥𝑁 𝑦𝑁 𝑧𝑁

ID N 1𝑥1 𝑦1 𝑧1

...𝑥𝑁 𝑦𝑁 𝑧𝑁

28 Chapter 3. Elements of the Program

Page 33: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

Parameter Descriptions

• ID: A unique index number for the transmitter or receiver. The index numbers should be increasing.

• N: The number of points defining the transmitter/receiver.

• 1: As of May 2018, a flag value of 1 is entered here. In future iterations of the code, this entry may be related toadditional functionality.

• xi yi zi: Denotes the X (Easting), Y (Northing) and Z (elevation) locations for nodes defining transmit-ter/receiver.

– Loop transmitter/receiver: When defining a loop transmitter or receiver, you must close the loop; e.g.the fist and last nodes must be at the same locations. The transmitters and receivers are defined in a left-handed (clockwise) manner. For example, a horizontal loop must be defined in a clockwise manner for itsdipole moment to be in the vertical direction. If a closed loop is used to define a receiver, the correspondingdata are the magnetic field in units A/m.

– Wire transmitter/receiver: If the first and last nodes are not in the same place, the user will define agrounded receiver which measures the electric field. The grounded loop can be more than one segmentlong. In this case, the corresponding data are the electric field in units V/m.

3.3.6 Topography Data/Polygon File

Topography and polygon files share the same format and are both used in the generation of OcTree meshes. Whereas to-pography files (topo.txt) are used to define surface topography, polygon files (poly.txt) are used to define the horizontalextent of the core mesh region.

The first line in the topography/polygon file gives the number of points followed by an (x,y,z) position for each point.Note that in the case of topography, this is not the file that is used to define active topography in the forward modelingand inversion programs. Forward modeling and inversion executables require active cell models to define topography.

Fig. 3.6: Example topography file

3.3.7 Tensor Mesh File

Tensor meshes are output when creating Octree meshes. The format for tensor mesh files is as follows:

nx ny nzx0 y0 z0pad_lower ncx * dx pad_upperpad_lower ncy * dy pad_upperpad_lower ncz * dz pad_upper

3.3. Supporting Files 29

Page 34: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

An example of a tensor mesh file and the resulting mesh are shown below

Fig. 3.7: Example tensor mesh file with different paddings in x, y and z.

Fig. 3.8: Tensor mesh generated by the file above.

Parameter Descriptions

• nx ny nz: The number of tensor mesh cells in the x, y and z direction

• x0 y0 z0: The x, y and z location denoting the top southwest corner of the mesh

• ncx, ncy and ncz: These parameters denote the number of core mesh cells in the x, y and z direction, respectively

• dx, dy and dz: These parameters denoted the widths of each core mesh cell in the x, y and z direction, respectively

• pad_lower: The individual widths of padding cells, separated by spaces, which are applied. Values shoulddecrease from left to right. The user may leave this blank if they do not wish to pad in this direction.

• pad_upper: The individual widths of padding cells, separated by spaces, which are applied. Values shouldincrease from left to right. The user may leave this blank if they do not wish to pad in this direction.

Note:

30 Chapter 3. Elements of the Program

Page 35: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

• In each direction, the number of cells (nx for example) must be equal to the total number of padding cells plusthe number of core mesh cells.

• In the z direction, the ordering of cells is from top to bottom! So pad_lower is padding in the up direction.

3.3.8 Octree Mesh File

Octree meshes define the global domain for which the inverse problem is solved and the local domains for which theset of forward problems are solved in parallel. The format of Octree mesh files is as follows:

nx ny nz xpL xpU ypL ypU zpL zpUx0 y0 z0dx dy dzNLx_1 Ly_1 Lz_1 M_1Lx_2 Ly_2 Lz_2 M_2

...Lx_N Ly_N Lz_N M_N

An example of an octree mesh file is shown below

3.3. Supporting Files 31

Page 36: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

Note: The set of local meshes for which the

Parameter Descriptions

• nx ny nz: Dimensions of the mesh in x, y and z respectively, in terms of the number of base mesh cells (cells ofsmallest size). Thus the mesh has dimensions [𝑛𝑥× 𝑑𝑥, 𝑛𝑦 × 𝑑𝑦, 𝑛𝑧 × 𝑑𝑧].

• xpL xpU ypL ypU zpL zpU: These parameters set the padding distance, relative to the core region, in terms ofthe number of base mesh cells. For example, the region of padding cells in the southern direction (defined byxpL) has a width of 𝑥𝑝𝐿× 𝑑𝑦.

• x0 y0 z0: The x, y and z location denoting the top southwest corner of the mesh

• dx dy dz: Sets the x, y and z widths of the base mesh cells (smallest cells)

• N: Total number of cells in the mesh. Note that 𝑛𝑥× 𝑛𝑦 × 𝑛𝑧 = 𝑁

• Lx_i Ly_i Lz_i M_i: The location and dimensions of each cell i=1,. . . ,N is defined by 4 parameters. Lx_idefines how many base cell widths in the x direction (i.e. dx) the top southwest corner of this cell is from the topsouthwest corner of the mesh plus one; i.e. the cell is 𝑑𝑥 × (𝐿𝑥 − 1) metres from the top southwest corner inthe x direction. This is likewise for Ly_i and Lz_i. M_i defines the width of the cell in x,y and z in terms of thenumber of base mesh cells. Thus, the volume of each cell is 𝑉 = 𝑑𝑥× 𝑑𝑦 × 𝑑𝑧 ×𝑀3

Note:

• Cell locations are defined by their distances from the top southwest corner.

• See the first cell defined in the Octree mesh file (line 5). The top southwest corner if this cell corresponds withthat of the mesh. However, its location is defined as 1 1 1 instead of 0 0 0 due to convention.

3.3.9 Local Forward Meshes (tiles) in binary File

The local Octree meshes used to solve forward problems parallel are stored in a binary file. The ordering of localOcTree meshes in this file is the same as the ordering of transmitter indexes in the survey index or observations thatwas used to make the meshes. The user may extract any local mesh and save it as a standard OcTree mesh by runningthe extract_mesh code.

3.3.10 Active Tiles File

The active tiles file contains a vector of 1s and 0s, where 1 is used to denote a tile (local forward mesh) that is used inthe inversion and 0 is used to denote a tile that is not. For example:

111110

32 Chapter 3. Elements of the Program

Page 37: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

011

Note that the 6 𝑡ℎ and 7 𝑡ℎ tiles specified in the forward mesh file (and their associated data) will not be used in theinversion.

3.3.11 Model File

For a given model, the model file has the following format:

𝑚1

𝑚2

𝑚3

𝑚4

𝑚5

𝑚6

...𝑚𝑁−1

𝑚𝑁

where 𝑁 is the total number of cells in the corresponding tensor or Octree mesh.

Conductivity Models

For conductivity models, conductivity values are entered in units S/m.

Active Cells Model

Within active cells models, all cells lying below surface topography (or set as active) are given a flag value of 1. Allinactive cells are given a flag value of 0.

3.3. Supporting Files 33

Page 38: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

3.3.12 Cell and Face Weights File

Cell Weights

Cell weights files have the same format as model files. When creating cells weights:

• All cells must be assigned a weight values larger than 0! This is to ensure the problem is sufficiently well-conditioned.

• Model weight values should be set relative to a value of 1. This is to ensure the relative emphasis on modelweights and surface weights is preserved. A value of 1 implies that no cell weighting is being applied.

• Large model weights (𝑤 ≫ 1 ) are used for cells that we want to match the reference model.

• Small model weights (𝑤 ≪ 1 ) are used for cells to reduce the impact of the reference model on the cells.

Interface Weights

Interface weights files contain the interface weights in x, y and z in a single column vectors; as the number of faces inx, y and z may differ. When creating interface weights:

• All interface weights must be larger than 0! This is to ensure the problem is sufficiently well-conditioned.

• Interface weight value should be set relative to a value of 1. This is to ensure the relative emphasis on modelweights and surface weights is preserved. A value of 1 implies that no interface weighting is being applied.

• Large interface weights (𝑤 ≫ 1 ) preserve gradients within reference model.

• Small interface weights (𝑤 ≪ 1 ) results in smoother gradients within

34 Chapter 3. Elements of the Program

Page 39: e3dDocumentation - E3D version 2 tiled package

CHAPTER

FOUR

RUNNING THE PROGRAMS

This section provides describes how to run all executables pertaining to the E3D version 2 tiled package.

Note: All executable files, input files, output filenames and files specified within input files can be specified in thefollowing manner:

• as just the filename if contained within the current working directory (Example: filename.txt)

• as a file path relative to the current working directory (Example: sub_dir\filename.txt)

• as the full path (Example: C:\Users\Name\Tests\filename.txt)

Executable files should not be renamed. However, input file names can be specified by the user if desired.

The main executable programs within the AEM program library are:

• e3d_v2_tiled: Single executable file for carrying out forward modeling and inversion of FEM data

• create_octree_mesh_e3d_v2_tiled: creates a global OcTree mesh for the inversion based on the survey geom-etry and a set of local OcTree meshes about each transmitter and its receivers

The following Octree utility programs are also used:

• blk3cellOct: creates a conductivity model on the OcTree mesh

• extract_mesh: extracts a specified local OcTree mesh from a hexidecimal file containing all local meshes

• create_weight_file: creates cell weighting for the recovered model

• interface_weights: creates weights on the faces of cells for the recovered model

4.1 Contents

To learn the specifics of running each executable, see the following sections:

35

Page 40: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

4.1.1 Create OcTree Mesh

OcTree meshes used in the E3D version 2 tiled code are created using the program cre-ate_octree_mesh_e3d_v2_tiled.exe. The program creates a global OcTree mesh (on which the modellives) and a set of local OcTree meshes (referred to as ‘tiles’) based on survey geometry. Parametersnecessary for creating the OcTree meshes are set in the input file; referred to here as octree_mesh.inp.

To generate the OcTree meshes, open a command window. Type the path to the code cre-ate_octree_mesh_e3d_v2_tiled.exe, followed by a space, followed by the path to the input file.

The program create_octree_mesh_e3d_v2_tiled.exe creates 5 output files:

• 3D_mesh.txt: the underlying regular tensor mesh corresponding to the global OcTree mesh. Thismesh is comprised of the smallest cell size and is very large (>> 1M cells). As a result, it is unwiseto plot this mesh.

• 3D_core_mesh.txt: a 3D regular tensor mesh defining the core region of the global OcTree mesh.

• octree_mesh.txt: the global OcTree mesh.

• active_cells_topo.txt: an active cells model on the global OcTree mesh which defines the topogra-phy. Cells are active (underground) if assigned a value of 1 and inactive (in the air) if assigned avalue of 0.

• octree_small_mesh.dat: a binary data file containing the local forward meshes for all transmitters.

• create_octree_mesh_e3d_v2_tiled.log: log file

4.1.2 Create Model

Models (conductivity) used within the this programming package are generated using blk3cellOct.exe.The model output by the executable is comprised of a set of overlapping rectangular blocks whose locations,dimensions and values are specified within the input file; denoted here as blk3cellOct.inp.

Note: This workflow can also be used to create a model weights file.

To generate the model on the octree mesh, open a command window. Enter the path to blk3cellOct.exe,followed by the path to the input file; denoted here as blk3cellOct.inp.

blk3cellOct.exe outputs a model which contains a single value for each cell in the octree mesh.

36 Chapter 4. Running the programs

Page 41: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

4.1.3 Extract Local OcTree Mesh

The output of using the code create_octree_mesh_e3d_v2_tiled.exe to create OcTree meshes includes abinary file octree_small_mesh.dat. To extract a particular local OcTree mesh and save as an OcTree meshfile, we use the program extract_mesh.exe. This executable does not require an input file.

The syntax for extracting local OcTree meshes is the path to the program extract_mesh.exe, followed bythe path to the binary file containing all local meshes, followed by the index of the local mesh you wouldlike to extract.

The program outputs a file named octree_mesh_xxxx.txt where ‘xxxx’ is a placeholder for the indexnumber.

4.1.4 Forward Modeling

Both the forward problem and inverse problem are solved using the executable program e3d_v2_tiled.exe.As a result, the input file will be described within the running the inversion section.

4.1.5 Create Additional Cell and Face Weights

The creation of specific cell and face weights is not required to run the inversion. However, the user maywant to weight the relative contributions of cells and/or gradients in certain regions towards the modelobjective function; see theory: inversion. The user may also want to apply weights that reduce the impactof near surface artifacts due to receivers.

Generating Model Weights File

Model weights are applied in the smallness term of the model objective function; see theory: inversion. Togenerate a model weights file, use the same workflow described on the create model page. When creatinga model weight file, consider the following:

• All cells must be assigned a weight values larger than 0! This is to ensure the problem is sufficientlywell-conditioned.

• Model weight values should be set relative to a value of 1. This is to ensure the relative emphasis onmodel weights and surface weights is preserved.

• Large model weights (𝑤 ≫ 1 ) are used for cells that we want to match the reference model. Smallmodel weights (𝑤 ≪ 1 ) are used for cells to reduce the impact of the reference model on the cells.

Generating Interface Weights File

Interface weights are used to preserve the gradients or edges within certain regions of the reference model.They are also used to reduce near-surface artifacts which result from the sensitivity to the receiver loca-tions. Interface weights are applied within the gradient terms of the model objective function; see theory:inversion. When creating interface weights, consider the following:

• All interface weights must be larger than 0! This is to ensure the problem is sufficiently well-conditioned.

4.1. Contents 37

Page 42: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

• Interface weight values should be set relative to a value of 1. This is to ensure the relative emphasison model weights and surface weights is preserved.

• Large interface weights (𝑤 ≫ 1 ) preserve gradients within reference model. Small interface weights(𝑤 ≪ 1 ) results in smoother gradients within the recovered model.

To generate interface weights on an Octree mesh, open a command window. In order, enter the path tointerface_weights.exe, followed by the path to the input file; denoted here as interface_weights.inp:

Output File

The executable outputs an interface_weights file with the specified output name. This file stores the in-terface weights in X, Y and Z in a single column; as the number of faces in the X, Y and Z direction arelikely different.

4.1.6 Inversion Program

Both the forward and inverse problems are solved using the e3d_v2_tiled.exe executable program. In eachcase, format of the input file (denoted here as e3dinv.inp) is the same. In the case of forward modelinghowever, some lines in the input file are omitted.

Running the Program

Here, the mpiexec call is used to parallelize multiple processes (large-scale independent operations) withinthe code. To run the executable, open a command window and type the following:

The call mpiexec is followed by the flag -n, then the number of processes (“nFreq” ) to be carried out si-multaneously. This is followed by the paths to the executable and the corresponding input file, respectively.The number of simultaneous processes (“nFreq” ) must be equal or less than the number of frequencies.Ideally there is enough memory for nFreq to be equal to the number of frequencies.

Setting Number of Threads with Open MPI

Before running the executable, the number of threads used to carry out all simultaneous processes can beset with Open MPI. This is set in the command window before running the executable. To set the numberof threads (nThreads ), use the following syntax:

• Windows computer: “set OMP_NUM_THREADS=nThreads”

• Linux (bash shell): “export OMP_NUM_THREADS=nThreads”

• Linux (csh shell): “setenv OMP_NUM_THREADS nThreads”

Important: The number of processes (nFreq ) times the number of threads (nThreads ) cannot exceedthe total number of threads available from the computer.

38 Chapter 4. Running the programs

Page 43: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

Units

Input and outputs:

• Magnetic field data: the component of the total magnetic field or secondary magnetic field alongthe direction of the receiver’s dipole moment in units A/m

• Electric field data: the component of the electric field along the path of the wire segment

• Conductivity model: S/m

• Reference/starting conductivity model: S/m

• Model/interface weights: unitless

Important:

• If a flag value of -99 is used as the uncertainty for a particular datum, the inversion will omit thatdatum. Using this, we are not required to invert all of the data.

Output Files

THIS IS NOT CORRECT

The program e3d_v2_tiled.exe creates the following output files:

• inv.con: recovered conductivity model for the final beta value

• inv_n.con: recovered conductivity model for the nth beta value

• dpred0.txt predicted data for the initial model

• dpredn.txt predicted data for the nth beta value

• dpred.txt predicted data for final recovered model

• e3d_v2_tiled.log: log file for the inversion

• e3d_v2_tiled.out: inversion summary

4.1. Contents 39

Page 44: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

40 Chapter 4. Running the programs

Page 45: e3dDocumentation - E3D version 2 tiled package

CHAPTER

FIVE

EXAMPLES

Here, the program library for E3D version 2 tiled will be used to:

• create an Octree mesh based on the survey

• create octree models

• predict frequency-domain airborne data for a synthetic model

• invert the data to recover our synthetic model

Zip folders containing all necessary files can be downloaded here:

• Files for example using E3D version 2 tiled

The full examples are parse into 4 sections:

5.1 Create OcTree Mesh

Here, the code create_octree_mesh_e3d_v2_tiled.exe and the input file octree_mesh.inp (see format) are used tocreate an OcTree mesh based on the set of observation location and surface topography. Files relevant to this part ofthe example are in the sub-folder octree_mesh. Before running this example, you may want to do the following:

• Download and open the zip folder containing the entire E3D version 2 tiled example (if not done already)

• Learn how to run code from command line

• Learn the format of the input file

To generate the OcTree mesh, the following input file was used:

41

Page 46: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

To keep the problem simple, the topography is given a constant elevation of 0 m. The resulting OcTree mesh is shownbelow:

5.2 Create Model

Here, the code blk3cellOct.exe and the input file blk3cellOct.inp (see format) are used to create a conductivity modelon the OcTree mesh. For this example, we use the mesh that was created in the example “create OcTree mesh”. Filesrelevant to this part of the example are in the sub-folder octree_model. Before running this example, you may want todo the following:

• Download and open the zip folder containing the entire E3D version 2 tiled example (if not done already)

• Learn how to run blk3cellOct from command line

• Learn the format of the input files blk3cellOct.inp

Here is the input file for blk3cellOct.exe

The resulting Octree model shows a more conductive block (𝜎 = 0.01 S/m) within a more resistive background (𝜎𝑏 =0.0001 S/m). A constant topography of 0 m in elevation is shown in gray. The observation locations are shown in blue.

42 Chapter 5. Examples

Page 47: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

5.2. Create Model 43

Page 48: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

5.3 Forward Modeling

Here, the code e3d_v2_tiled.exe and the input file e3dfwd.inp (see format) are used to forward model secondary fieldFEM data for a synthetic model. The flag SECONDARY_NUMERIC was used to compute the primary field numerically.Files relevant to this part of the example are in the sub-folder fwd. For this example, we use the model that was createdin the example “create model”. Before running this example, you may want to do the following:

• Download and open the zip folder containing the entire E3D version 2 tiled example (if not done already)

• Learn how to run code from command line

• Learn the format of the input file

To forward model the data, the following input file was used:

Predicted data are shown below.

5.4 Inversion

Here, the code e3d_v2_tiled.exe and the input file e3dinv.inp (see format) are used to invert Hz data. FEM data werecreated in the example “forward modeling”. Because we are doing a simple example, a floor uncertainty of 5e-10 A/mwas added to all data. In practice, data are noisy and choosing appropriate uncertainties is very important for successfulinversion. Files relevant to this part of the example are in the sub-folder inv. Before running this example, you maywant to do the following:

• Download and open the zip folder containing the entire E3D version 2 tiled example (if not done already)

• Learn how to run code from command line

44 Chapter 5. Examples

Page 49: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

5.4. Inversion 45

Page 50: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

• Learn the format of the input file

To invert the synthetic data, the input file below was used:

The true model (left) and recovered model at iteration 6 (right). A cutoff of 0.001 S/m was used. The recovered modelwas sliced horizontally at an elevation of -200 m.

46 Chapter 5. Examples

Page 51: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

5.4. Inversion 47

Page 52: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

48 Chapter 5. Examples

Page 53: e3dDocumentation - E3D version 2 tiled package

CHAPTER

SIX

REFERENCES

49

Page 54: e3dDocumentation - E3D version 2 tiled package

e3d Documentation, Release 5.0

50 Chapter 6. References

Page 55: e3dDocumentation - E3D version 2 tiled package

BIBLIOGRAPHY

[HHG+12] E. Haber, E. Holtham, J. Granek, D. Marchant, D. Oldenburg, C. Schwarzbach, and R. Shekhtman. Anadaptive mesh method for electromagnetic inverse problems. In SEG Technical Program Expanded Ab-stracts. Society of Exploration Geophysicists, 2012. doi:10.1190/segam2012-0828.1.

[Nab91] M. N. Nabighian. Electromagnetic Methods in Applied Geophysics. Volume 3 of Investigation in Geo-physics. Society of Exploration Geophysicists, 1991. doi:10.1190/1.9781560802686.

51