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, the lines of the input file are the same. However in the case of forward modeling, some lines in the input file are not used by the code and can be given any value. The lines of input file are as follows:
Line # 
Parameter 
Description 

1 
path to inversion mesh file 

2 
path to forward mesh file 

3 
path to observations file 

4 
path to transmitters file 

5 
path to receivers file 

6 
path to frequencies file 

7 
initial model/forward model 

8 
reference model 

9 
background susceptibility model 

10 
topography 

11 
active model cells 

12 
additional cell weights 

13 
additional face weights 

14 
set parameters to recover smooth, sparse or blocky models 

15 
cooling schedule for beta parameter 

16 
weighting constants for smallness and smoothness constraints 

17 
stopping criteria for inversion 

18 
set the number of GaussNewton iteration for each beta value 

19 
set the tolerance and number of iterations for GaussNewton solve 

20 
reference model 

21 
use SMOOTH_MOD or SMOOTH_MOD_DIFF 

22 
upper and lower bounds for recovered model 

23 
use CALC_SENS or NOT_CALC_SENS 

24 
model total or secondary field 

25 
options for storing factorizations of forward system (RAM vs disk) 

26 
fractional percent of tiles used for sensitivity calculation 

27 
option to invert using only subset of data 
3.2.5.1. 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 model for 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 path to the conductivity model.
If the program is being used to invert data, only the path to a conductivity model is required; e.g. inversion is 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_ipcg fields 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 homogeneous conductivity value is being used for all active cells, the user can enter “VALUE” followed by a space and a numerical value; example “VALUE 0.01”.
Susceptibility Model: The user may supply the file path to a background susceptibility model. If the Earth is nonsusceptible, 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 active cells 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 active cells model has values 1 for cells lying below the surface topography and values 0 for cells lying above. Values for 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 to a 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 the file 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 1norm approximation to recover sharper edges.
Sparseness: The sparseness of the recovered model is determined by the terms within the model objective function . A standard approach is to use an L2norm for all terms
To use the L2norm, enter the flag ‘USE_L2’
To specify the Ekblom norm, enter the flag ‘USE_EKBLOM’ followed by values for \(p\) and \(\varepsilon\) where the Ekblom norm is given by:
beta_max beta_min beta_factor: Here, the user specifies protocols for the tradeoff parameter (beta). beta_max is the initial value of beta. beta_min is generally used to denote the minimum allowable tradeoff parameter the program can use before quitting. For this code however, the minimum beta is determined through the nBeta parameter on line 15 and the beta_min parameter has no function. beta_factor defines the factor by which beta is decreased at each iteration; example “1E4 10 0.2”. The user may also enter “DEFAULT” if they wish to have beta calculated automatically. See theory on cooling schedule.
alpha_s alpha_x alpha_y alpha_z: Alpha parameters . Here, the user specifies the relative weighting between the 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 is equal to the total number of data observations. For more, see the GIFtools cookbook .
iter_per_beta nBetas: Here, iter_per_beta is the number of GaussNewton iterations per beta value. nBetas is the number of times the inverse problem is solved for smaller and smaller tradeoff parameters until it quits. See theory section for cooling schedule and GaussNewton update.
tol_ipcg max_iter_ipcg: Here, the user specifies solver parameters. tol_ipcg defines how well the iterative solver does when solving for \(\delta m\) and max_iter_ipcg is the maximum iterations of incompletepreconditionedconjugate gradient. See theory on GaussNewton solve
Reference Model Update: Here, the user specifies whether the reference model is updated at each inversion step 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 \(m_{ref}=0\)). “SMOOTH_MOD_DIF” constrains the inversion in the smallness and smoothness terms using a reference model.
Bounds: Bound constraints on the recovered model. Choose “BOUNDS_CONST” and enter the values of the minimum and maximum model conductivity; example “BOUNDS_CONST 1E6 0.1”. Enter “BOUNDS_NONE” if the inversion is unbounded, or if there is no aprior information about the subsurface model.
Calculate sensitivity: When the flag CALC_SENS is used, the sensitivity matrix (\(\mathbf{J}\)) is computed and stored for the current model. When the flag NOT_CALC_SENS is used, the product of the sensitivity and any vector is done without storing the sensitivity matrix. The former option is faster but uses a lot more memory. Unless the forward meshes 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 choose whether 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 the secondary field. In this case, the code will compute the total field for the conductivity model provided, then subtract the analytic total field using the homogeneous background conductivity provided. To subtract the freespace primary field, let the background conductivity be 1e8 S/m.
Use the flag SECONDARY_NUMERIC followed by a value for the background conductivity to model the secondary field. In this case, the code will compute the total field for the conductivity model provided, then subtract the numerically computed total field using the homogeneous background conductivity provided. To subtract the freespace primary field, let the background conductivity be 1e8 S/m.
Memory Options: This code uses a factorization to solve the forward system at each frequency. These factorizations must be stored. By using the flag ‘FACTOR_IC’ (in cpu), factorizations are stored within a computer’s RAM. 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 followed by the path to a directory. This is slower because the program must read these files many times. The second options is illadvised 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 using a random subset of the data/local forward meshes. Thus PCT_FACT is the fractional percent of tiles (local forward meshes) which are used to approximate the sensitivity at each iteration; e.g. 0 < PCT_FACT < 1. As a default 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 forward meshes) 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. The active tiles file is a vector of 1s and 0s, where a 1 denotes a local forward mesh that is used in the inversion, and a zero denotes a local forward mesh that is not. The number of values in the active tiles file must equal the number of local forward meshes.