Files and directories

config/

config.dat

config.dat contains the measurement configurations to be modelled. A measurement configuration is defined by one or two electrodes used for current injection and one or two electrodes used for voltage (i.e. potential difference) measurement. By this, pole-pole, pole-dipole, and dipole-dipole, (multiple)-gradient configurations can be realized. The format of config.dat is explained by means of an example file:

1 2064
2 10002 40003
3 10002 50004
4 10002 60005
...
...
...
2063 300036 220016
2064 300036 230017
2065 300036 240018
  • Line 1: Number of measurement configurations

  • Line 2-End: Dipole configuration. The first number describes the current injection dipole using the formula \(A \cdot 10000 + B\). The second number describes the voltage dipole using the formula \(M \cdot 10000 + N\).

Pole-pole or pole-dipole configurations are realized by assigning a fictitious electrode ‘’0’’ (representing infinity) to the corresponding position in config.dat. For example, the line:

10000 20000

would define a pole-pole measurement, the line

10000 20003

a pole-dipole measurement.

exe/

crt.lamnull

In order to have the option to preselect a starting value for our pareto problem (lambda search), we introduce the lamnull_cri and lamnull_fpi variables which can be set by the user via the file crt.lamnull.

This can contain two variables:

<lamnull_cri> (double)
<lamnull_fpi> (double)

The last one may be left empty (defaults to zero then). They are used in the subroutine blam0 to set the lammax value.

If a complex (CRI) or DC inversion is done, the variable lamnull_cri is used.

For FPI we can use the variable lamnull_fpi, which is a NEW option.

Introduction of a separate value for the FPI is done because of two reasons:

  • lam0 for the FPI changes usually dramatically if the model is changed, thus, the preselected values of lam0 for FPI may totally differ to the value for the CRI/DC.

  • practical reasons for synthetic study

DEFAULT Value:

If a value of zero is choosen for each one of the lamnull_*, the program chooses:

\(\sum(diag{J^TJ})/<\text{number of parameters}> \cdot 2 /(\alpha_x + \alpha_y) * 5\)

The first is obvious, because we like to scale upon the ‘’mean’’ entries of our sensitivity matrix.

The scaling is done then to take the artificial anisotropy regularization (\(\alpha_x\) and \(\alpha_y\)) into account and last but not least multiply by five just to make sure we start right at the upper most boundary for the pareto problem.

crtomo.cfg

Note

Configurations can be created, imported, modified, and saved using crtomo.cfg.crtomo_config. Also see example here: Setting modeling and inversion settings

The crtomo.cfg file controls the inversion using CRTomo. It must exist in the directory where CRTomo is executed. Lines starting with the character # are treated as comments and will be removed before parsing it. All other lines are line-number dependent. That is, each setting is identified by its line number, not a keyword, within the crtomo.cfg file. Comment lines do not increase the line number!

The first non-comment line is a multi-function binary switch called mswitch. This switched controls functions by setting their corresponding bit either to 0 (inactive) or 1 (active).

Note

Use crtomo.cfg.crtomo_config.set_mswitch() to control the mswitch in a Python environment

The following functionality is implemented, with the corresponding bit given at the beginning:

  • *** : legacy values - treated a 0

  • bit 1 (+1): write L1 data-weighted coverage (lsens)

  • bit 2 (+2): write out main diagonal of posterior model covariance matrix: \(MCM_1=( A^T C_d^-1 A + \lambda C_m^-1 )^-1\) (lcov1). Note that enabling this function also writes out \(diag(A^T W_d^T W_d A)\), the L2 data-weighted cumulative sensitivity (or coverage) into the file ata.diag.

  • bit 3 (+4): write out main diagonal of resolution matrix: \(RES = MCM_1 * A^T C_d^-1 A\) (lres)

  • bit 4 (+8): = write out main diagonal of posterior model covariance matrix 2: \(MCM_2 = RES \cdot MCM_1\) (lcov2)

  • lgauss = BTEST (mswitch,4) ! +16 solve all OLS using Gauss elimination

  • lelerr = BTEST (mswitch,5).OR.lelerr ! +32 uses error ellipses in the inversion, regardless of any previous lelerr state..

  • mswitch with 2^6 is empty for now…

  • lphi0 = BTEST (mswitch,7) ! +128 force negative phase

  • lsytop = BTEST (mswitch,8) ! +256 enables sy top check of no flow boundary electrodes for enhanced beta calculation (bsytop). This is useful for including topographical effects

  • lverb = BTEST (mswitch,10) ! +1024 Verbose output of CG iterations, data read in, bnachbar calculations…

The file is further described by an example file:

  1#############################################################
  2###         NEW cfg file format::                         ###
  3#############################################################
  4### Comment lines start with (at least one) # at the first
  5### row of a  line !
  6### They are omitted during import of the cfg file
  7#############################################################
  8#############################################################
  9## NOTE:
 10## NO FURTHER EMPTY LINES, EXCEPT THE ONES ALREADY PRESENT,
 11## SHOULD BE ADDED. CRTomo IDENTIFIES PARAMETERS BY THEIR
 12## LINE NUMBER
 13##############################################################
 14##############################################################
 15#############################################################
 16# mwswitch (8 == lcov2)
 178
 18#############################################################
 19# Path to the grid file, may contain blanks
 20#############################################################
 21../grid/elem.dat
 22#############################################################
 23# Path to the file containing electrode positions, may contain blanks
 24#############################################################
 25../grid/elec.dat
 26#############################################################
 27# Path to the measurement readings (Volts!), may contain blanks
 28#############################################################
 29../mod/volt.dat
 30#############################################################
 31# Directory name to store the inversion results.., may contain blanks
 32#############################################################
 33../inv
 34############################################################
 35# Logical switch for difference inversion (ldiff) and, if a prior model (m0) is used,
 36#   this switch also controls whether or not to regularize against the prior..
 37#   (internal variable lprior=T)
 38#   leading to (m-m0)R^TR(m-m0) constraint, if no difference data are given
 39#########################################################################################
 40F
 41#########################################################################################
 42# Path to the measurement file for difference inversion, may contain blanks.
 43# If left empty, no data is assumed
 44#########################################################################################
 45../diff/dvolt.dat
 46#########################################################################################
 47# Path to the prior model (m0), which is also the model of the difference
 48#   inversion which is obtained by a previous CRTomo run (dm0).
 49# If ldiff is false, and a valid path to a prior is given,
 50#   the prior is copied into the starting model!!
 51#########################################################################################
 52../rho/prior.modl
 53#########################################################################################
 54# Path to the model response of m0 in case of difference inversion (ldiff=T)
 55#   this should be empty if you have none
 56#########################################################################################
 57../diff/dvolt2.dat
 58#########################################################################################
 59# The next line usually contains nothing but *** ....
 60# YET, if you have a prior (or starting) model and like to add noise to it.
 61#   You can then give a seed (integer) and a variance (float) for this.
 62# These numbers are useless if no prior is given..
 63#########################################################################################
 64iseed variance
 65#########################################################################################
 66# For regular grids and the old regularization you have to define the Nx (number of
 67#   elements in x-direction)
 68# THIS IS NOW OBSOLETE (but can be used, though..) because the triangulation
 69#   regularization is proofed equivalent to the old regularization for regular grids!
 70#
 71# To give it a new purpose, you can now control variogram models with it!
 72# The integer is read in as decimal leaving two digits (XY) with a control function
 73#
 74# _X_ Controls the covariance function and _Y_ the variogram model
 75#
 76# The variogram model has 4 modes:
 77#    CASE (X=1) !Gaussian variogram = (1-EXP(-(3h/a)^2))
 78#   (Ix_v = Ix_v/3 ; Iy_v = Iy_v/3: scale length are changed to match GSlib standard)
 79#    CASE (X=2) ! Spherical variogram = ((1.5(h/a)-.5(h/a)^3),1)
 80#    CASE (X=3) ! Power model variogram = (h/a)^omev
 81# in this case you can change the power model exponent, which is set to 2 as default
 82#    CASE DEFAULT! exponential variogram = (1-EXP(-(3h/a)))
 83#   (Ix_v = Ix_v/3 ; Iy_v = Iy_v/3)
 84# The default case is used if left at zero or otherwise
 85#
 86# For the covariance function there are also 4 modes implemented:
 87#    CASE (Y=1) !Gaussian covariance = EXP(-(3h/a)^2)
 88#   (Ix_c = Ix_c/3 ; Iy_c = Iy_c/3: scale length are changed to match GSlib standard)
 89#    CASE (Y=2) !Spherical covariance = ((1-1.5(h/a)+.5(h/a)^3),0)
 90#    CASE (Y=3) !Power model covariance = EXP(-va*(h/a)^omec)
 91#    CASE (Y=4) !Lemma (still to proof!) covariance = EXP(-tfac*variogram(h))
 92#    CASE DEFAULT!Exponential covariance = EXP(-3h/a)
 93#   (Ix_c = Ix_c/3 ; Iy_c = Iy_c/3)
 94#
 95# The covariance model does only makes sense with a stochastical regularization!!!
 96#
 97# EXAMPLE:
 98#   - You like to have spherical variogram but gaussian covariance set the number
 99#   to 12
100#   - If you like to have a spherical variogram and a exponential covariance
101# NOTE:
102#   The experimental variogram can be calculated (and this is default if any value
103#   is given) no matter which model function you state here..
104#########################################################################################
1050
106#########################################################################################
107# Previously, the next integer number was the number of cells in z- (or y)-direction
108# However, the same argumentation for this number holds as for Nx.
109# The new meaning for Nz is now to give a starting value for lambda:
110#   -value given here sets lam_0 = value
111# This may be further exploited (in case you do not know and do not like the whole A^TA
112#   diagonal maximum to be calculated (blam0), you can leave it as -1 which will take
113#   lam_0 = MAX(number of data points,number of model parameters)
114#########################################################################################
115-1
116#########################################################################################
117# Now, the anisotropic regularization parameters (float) can be specified:
118# alpha_x
119#########################################################################################
1201.0000
121#########################################################################################
122# alpha_z (y)
123#########################################################################################
1241.0000
125#########################################################################################
126# Next, you have to give a upper boundary for the number of iterations (int)
127# NOTE:
128# If it is set to zero, no inverse modelling is done, but coverages
129#   (resolution, variogram, etc..) may be calculated.
130# This is especially useful in conjunction with a valid prior/starting model!
131#########################################################################################
13220
133#########################################################################################
134# The next (logical) switch (ldc) controls whether we invert for COMPLEX (EIT, ldc = F)
135#   or REAL values (ERT) (ldc = T)
136#########################################################################################
137F
138#########################################################################################
139# (logical) switch (lrobust) for robust inversion (e.g. La Breque et al 1996)
140#########################################################################################
141F
142#########################################################################################
143# Do you want a Final phase improvement (FPI) ? set (lfphai) the next logical to T
144# NOTE:
145#   If (ldc == .FALSE. .and. lfphai == .TRUE.) lelerr = .FALSE. (error ellipses)
146# This has the impact, that no error ellipses are used in FPI.
147##
148# However, this may be overwritten by setting mswitch = mswitch + 32 in the first line !!
149#########################################################################################
150T
151#########################################################################################
152# The next two floats determine the error model for resistance/voltage
153# which is currently implemented as  \delta R = A * abs(R) + B
154# Thus, A gives the relative error estimate [%] and B gives the absolute error estimate.
155#
156# NOTE:
157# The first (A) Parameter also controls whether or not to couple the (maybe COMPLEX)
158#   error model to any noise additions (Yes, voltages in CRTomo can be noised...)
159# If A is set to -A , the whole error model is taken as noise model.
160# Giving this, you may want to add an ensemble seed number, which may be crucial for
161#   any kind of monte carlo study, at the end of this crt-file..
162# The noise is also written to the file 'crt.noisemod' which may be changed afterwards if
163#   you like to decouple error and noise model.
164# NOTE:
165# CRTomo is looking for crt.noisemod in the current directory as default.
166# If it is existing or a valid file, it gives a note about this and
167#   trys to get a noise model from the data contained
168#########################################################################################
169-1.0
170#########################################################################################
171# Error model parameter B [Ohm]
172#########################################################################################
1731e-3
174#########################################################################################
175# Next 4 (float) numbers control the phase error model as can be found in
176# Flores-Orozsco et al, 2011
177# \delta \phi = A1*abs(R)^B1 + A2*abs(pha) + p0
178###
179# A1 [mrad/Ohm/m]
180#########################################################################################
1810.0
182#########################################################################################
183# B1 []
184#########################################################################################
1850.0
186#########################################################################################
187# A2 [%]
188#########################################################################################
1890.0
190#########################################################################################
191# p0 [mrad]
192#########################################################################################
193#########################################################################################
194# If you use FPI, note that if P0 is set to a negative value, the phase model is set
195# to a homogenous model if FPI starts, this was used by AK as default...
196# the p0 is set to its positive value for error calc, if this is used (of course..)
197#########################################################################################
198#########################################################################################
1991e-1
200#########################################################################################
201# Here you can decide if you want a homogenous starting model (overwritten with prior)
202# logical (lrho0) for both, magnitude and phase
203#########################################################################################
204T
205#########################################################################################
206# homogenous background resistivity value for magnitude [Ohm m]
207#########################################################################################
208100.00
209#########################################################################################
210# homogenous background value for the phase [mrad]
211#########################################################################################
2120.000
213#########################################################################################
214# Some people prefer having one crt-file for many inversions.
215# If you set this logical T, CRTomo tries to read in another crt-style file after
216#   the first inversion was done.
217# This also means, that any data arrays (memory model!!) are reallocated and thus
218#   different grids/electrodes/measurements can be given to CRTomo...
219#########################################################################################
220F
221#########################################################################################
222# Dimensionality switch (integer) to control whether or not to have a _real_ 2D (=0)
223#   or a 2.5D (=1) forward solution. 2.5D assumes a 3D model space with a resistivity
224#   distribution that is homogeneous in the y direction.
225# NOTE:
226# If you like to have a true 2D (i.e. setting to 0) you have to keep in mind that
227#   the sink node setting (down below) has to be set.
228# Also note that if 2D mode is selected the singularity removal switch may be helpful to
229# reduce numerical issues.
230#########################################################################################
2311
232#########################################################################################
233# (logical) switch whether to introduce a fictitious sink node (sink is here in the sense
234#   of a -I electrode at some place in b by solving Ax=b with Cholesky
235#########################################################################################
236F
237#########################################################################################
238# Node number (int) of the sink node
239# The chosen node should conform to the following properties:
240# - not a boundary node
241# - not an electrode
242# - should be positioned at the center of the grid with a preferably large distance to
243#   all electrodes
244#########################################################################################
2450
246#########################################################################################
247# Do you like to read in some boundary potential values ? (logical)
248# The boundary values are helpful for tank experiments at known voltages (i.e.
249#   inhomogenous Dirichlet boundaries)
250#########################################################################################
251F
252#########################################################################################
253# Path to the boundary values, blanks can be included
254#########################################################################################
255empty
256#########################################################################################
257# In some older cfg files, this would be the end of the cfg-file.
258# Yet, to control regularization you can give in the next line an integer (ltri) to
259#   manage it:
260#  (=0) - Smooth regularization for regular grids only (Nx and Nz have to be correct!!)
261#  (=1) - Smooth triangular regularization (should be used as default and the method
262#   of choice
263#  (=2) - Smooth triangular regularization, second order (not yet implemented..)
264#  (=3) - Levenberg damping (i.e. C_m^-1 = lambda * I)
265#  (=4) - Marquardt-Levenberg damping (i.e. C_m^-1 = lambda * diag{A^T C_d^-1 A} )
266#  (=5) - MGS regularization (pure MGS after Zhdanov & Portniaguine):
267#   C_m^-1 \approx \int \frac{(\nabla m_{ij})^2}{(\nabla m_{ij})^2+\beta^2}\;dA
268#  (=6) - MGS with sensitivity weighted beta: = beta / f_{ij} (from Blaschek 2008)
269#   where f_{ij} = (1 + g(i) + g(k))^2 and g(i,k) = log_{10} coverage (m_{i,k})
270#  (=7) - MGS with sensitivity weighted beta (as with 6) but normalized:
271#   f_{ij} = ((1 + g(i) + g(k))/mean{coverage})^2
272#  (=8) - MGS as in 6, but here a modified version of Roland Blaschek (which I apparently
273#   didn't understood, but was given to me from Fred...).
274# For more details please have a look into bsmatm_mod.f90 -> SUBROUTINE bsmamtmmgs
275#  (=9) - Same as 8, but with mean coverage normalization
276# (=10) - Total variance (TV) regularization (not well tested, but I think it is BETA)
277#
278# NOTE:
279# For MGS and TV you can specify a beta-value (0<beta<1) in this cfg!
280#
281# (=15) - Stochastic regularization. Here, C_m is a full matrix which needs to be
282#   inverted at the beginning of the inverse process. For this regu you have to
283#   specify a proper integral scale and covariance function (see Nx-switch).
284# (>15) - not allowed
285# (+32) - Fix lambda value to a given value (1 as default)
286#   The switch is binary tested so it is as cumulative as mswitch.
287#   Also it is removed after a internal logical was set true (llamf).
288#   The lambda value can be given in a additional line after the ltri value.
289#
290# NOTE:
291# The order of the additional switches (fixed lambda, beta, seed) is treated like:
292#   - fixed lambda
293#   - MGS/TV beta
294#   - Random seed
295# Each in a seperate line!
296#########################################################################################
2971
298#########################################################################################
299# The following line depends on the previous choice you made, so it may be the Random
300#   seed, the fixed lambda value or the MGS/TV beta.
301# In case of an error (fixed format integer read!) this line is just omitted.
302#
303# NOTE:
304# For people with cfg-files with more than one inversion run (another data set = T), the
305#   next line should contain the beginning of the next cfg.
306#########################################################################################
307lam/beta/seed

..note

The crtomo.cfg file is imported in the **rall.f90** file

MGS

Allerdings könnte die beta Bestimmung etwas zeitaufwendig sein, daher sollte MGS mehr oder weniger als post-alpha Stadium bezeichnet werden.

Unterstützt werden für diesen Integer am Ende vom crtomo.cfg-file die Zahlen 5,6 & 7. Daran anschließend kann man noch ein beta angeben, sodass das cfg file in etwa so aussieht:

------ schnip ------------
F                ! fictitious sink ?
1660             ! fictitious sink node number
F                ! boundary values ?
boundary.dat
6               ! regularization switch
0.01             ! MGS beta
  • 5 ist identisch zu dem Ansatz von Zhdanov [2002], Geophysical Inverse Theory and Regularization Problems, Elsevier.

  • 6 & 7 sind im Grunde die von Blaschek et al. 2008, wobei hier ein Bug von Roland gefixt wurde der mit dem update der Sensitivität und des Modells nach jedem update zu tun hatte (im Grunde wurde die Glättung nicht wieder neu berechnet was nicht ganz korrekt ist).

Note

!!! Important !!! Man kann diese Glättung aber auch fixen, wenn man das unbedingt will. Dann wird die MGS-Glättung vom Startmodell genommen, welches in der Regel ja noch keine Struktur hat. Realisiert wird dies in dem man das MGS-beta auf einen _negativen_ Wert setzt.

crmod.cfg

The file is structured as follows. It is the configuration file of CRMod.

1 ***FILES***
2 ../grid/elem.dat
3 ../grid/elec.dat
4 ../rho/rho.dat
5 ../config/config.dat
6 F
! potentials ?
7 ../mod/pot/pot.dat
8 T
! measurements ?
9 ../mod/volt.dat
10 F
! sensitivities ?
11 ../mod/sens/sens.dat
12 F ! another dataset ?
13 1 ! 2D (=0) or 2.5D (=1)
14 F ! fictitious sink ?
15 1660 ! fictitious sink node number
16 F ! boundary values ?
17 boundary.dat
18 ! optional integer switch
  • Line 1: Not used

  • Line 2: Absolute or relative path to grid (elem.dat) file

  • Line 3: Absolute or relative path to electrode (elec.dat) file

  • Line 4: Absolute or relative path to parameter (rho.dat) file

  • Line 5: Absolute or relative path to electrode configuration (config.dat) file

  • Line 6: Switch enabling (T) or disabling (F) output of potentials for the measurement configurations.

  • Line 7: Filename prefix for potentials. A four digit number will be appended.

  • Line 8: Switch to enable (T) or disable (F) output of voltages.

  • Line 9: Filename of voltages for all measurement configurations.

  • Line 10: Switch to enable (T) or disable (F) output of sensitivities.

  • Line 11: Filename prefix for sensitivity files.

  • Line 12: Set either to T in case another configuration file (Lines 1 - 18) is appended to this file (Lines 19+), or F if the configuration file consist only of 18 lines.

  • Line 13: Assume a 2D (0) or a 2.5D (1) subsurface

  • Line 14: Use a fictitious sink (T/F)

  • Line 15: Node number of fictitious sink

  • Line 16: Use user supplied boundary values (T/F)

  • Line 17: Filename of the boundary values

  • Line 18: Optional integer switch:

    • +1: Enable analytical solution (lana)

    • +2: Modelling with K-factor (wkfak)

    • +4: Singularity removal (lsr). Please note that this option can’t be used in conjunction with the analytical solution.

crmod.pid

The file contains the process ID number, like in

ps -a
pidof CRTomo

decouplings.dat

Decoupling for triangular smooth cell interfaces can be done using this file. The first line contains the number of decouplings, and the subsequent lines contain one decoupling each. One decoupling consists of two integer numbers of the adjoining element cells, and one floating point value which determines the decoupling factor to be multiplied to the original regularisation. A value of 0 completely decouples the regularisation of a given interface, while a value of one does not change anything. Values larger than 1 increase the regularisation above the norm.

Example:

3
3   4   0.0
5   8   0.5
8   10  0.0

The numbering is independent of the application of the CutMcK algorithm to a given grid. Use the order of appearance in the elem.dat file for the numbering.

sens.dat

Each sens.dat contains the modelled sensitivity distribution for the corresponding measurement configuration defined in config.dat, i.e. the (consecutive) number in the file name corresponds to the line number in config.dat.

The modelled sensitivity is given by \(\frac{\partial V_i}{\partial \sigma_j} \left[\frac{V\ m}{S}\right]\), where \(V_i\) is the voltage (in \(V\)) of the \(i\)-th measurement (assuming a unit current of 1 \(A\)), and #:math:j is the conductivity (inverse of resistivity) (in \(S/m\)) of the \(j\)-th element (of type 8). The first line in sens.dat contains the integrated sensitivity value \(\sum_j \frac{\partial V_i}{\partial \sigma_j}\).

The format of sens.dat is explained by means of an example file:

   1.3385538       3140.5132    
  -13.399500     -0.25000000      7.50053499E-04 -8.15268550E-07
  -7.1114998     -0.25000000      1.99041306E-03 -1.93495089E-06
  -3.6995001     -0.25000000      3.69597459E-03 -3.32863351E-06
		...
		...
		...
   38.699501      -20.442499      1.44582140E-04  5.84734394E-08
   42.111500      -20.442499      1.98332040E-04 -8.41067092E-08
   48.399502      -20.442499      2.44848023E-04 -4.05481018E-07
  • Line 1:
    • The first number denotes the absolute value of the sum of sensitivities (\(abs(\sum s_{ij}\)).

    • The second number denotes the phase value of the sum of sensitivities in mrad (\(1000 \cdot atan(Im(\sum(s_{ij})) / Re(\sum s_{ij})))\)).

  • Line 2:
    • Column 1 and 2: Centered (x,z) coordinates for the element

    • Column 3 and 4: Real and Imaginary parts of sensitivity

Plotting

Plotting of sensitivity files can be accomplished using the crlab_py python library:

from crlab_py.mpl import *
import crlab_py.elem as elem
import numpy as np

if __name__ == '__main__':

elem.load_elem_file('elem.dat')
elem.load_elec_file('elec.dat')
indices = elem.load_column_file_to_elements_advanced('sens0009.dat', [2,3], False, False)
elem.plt_opt.title = ''
elem.plt_opt.cblabel = r'fill'
elem.plt_opt.reverse = True

elem.plt_opt.cbmin = -1
elem.plt_opt.cbmax = 1

elem.plot_elements_to_file('sensitivity_1.png', indices[0], scale='asinh')
elem.plot_elements_to_file('sensitivity_2.png', indices[1], scale='asinh')

The scale-setting enables a special data transformation to plot positive and negative values over a large value range. The inverse sinus hyperbolicus shows a nearly linear behaviour between -1 and 1. Outside of this interval it shows behaviour roughly similar to the logarithm (but not the same!):

../_images/asinh.png

The sensitivities \(s_{ij}\) are transformed according to the formula:

\[\begin{split}s_{ij}^{transformed} = \frac{arcsinh(10^\text{dyn} \cdot s_{ij} \cdot \frac{1}{\text{norm}})}{arcsinh(10^\text{dyn})}\\ \text{with}\\ \text{dyn} = abs(min(log10(abs(s_{ij}))))\\ \text{norm} = max(abs(s_{ij}))\end{split}\]

The factor dyn ensures that all sensitivity values are transformed to the value interval \(]-1,1[\). Therefore, all of them lie in the logarithmic’ range of the asinh function. All `s_{ij} values are normed to within the range \([0,1]\) using the factor norm. The term in the arcsin-function can thus not get larger than \(10^{\text{dyn}}\) and can be normed using the arcsinh term in the denominator.

Warning

Always provide, or at least mention, the asinh transformation when presenting sensitivity plots. Also the normalization factor norm should be provided.

inv.elecpositions

When CRTomo is called it writes the electrode positions (as read from elem.dat and elec.dat) to this file. The first line contains the number of (recognized) electrodes, and each of the following lines contains two numbers: The x and z coordinate of the corresponding electrode.

38
2.0000000000000000       -3.0000000000000000
6.0000000000000000       -3.0000000000000000
10.000000000000000       -3.0000000000000000
...
...
...
18.000000000000000       -37.000000000000000
22.000000000000000       -37.000000000000000
26.000000000000000       -37.000000000000000

inv.gstat

Created when CRTomo is called. Contains various grid statistics.

Regular grid:

Grid statistics:

Gridcells:        9360
ESP Min/Max:        0.5000    0.5000
GRID Min/Max:       0.5000   82.9247
GRID-x Min/Max:     0.5000   29.5000
GRID-y Min/Max:     0.5000   77.5000
Mean/Median/Var:        0.5000    0.5000    0.0000

inv.lastmod

  • For DC/complex inversion: Holds the (relative) path to the final iteration’s .mag file

  • For FPI: Holds the (relative) path to the FPI final iteration’s .mag file

inv.lastmod_rho

Only created if FPI is used: Holds the (relative) path to the final iteration’s .mag file of the complex inversion.

grid/

elec.dat

elec.dat contains the electrode information, i.e. the numbers of nodes where electrodes are located (the node position is determined in elec.dat). The format of elec.dat is explained by means of an example file:

36
962
964
...
2788
2870
2952
  • Line 1: Number of electrodes.

  • Line 2-End: Node numbers (as defined in elem.dat) where electrodes are located.

elem.dat

elem.dat contains all necessary information on the finite-element discretization to be used, including the position and numbering of nodes which constitute individual elements. The format of elem.dat is explained in the following by means of an example file (Line numbers are prefixed in each line):

{\tiny
\begin{verbatim}

     1	861 3 42
     2	8 800 4
     3	12 40 2
     4	11 80 2
     5	1 -7.5 0
         ...
         ...
         ...
   865	861 22.5 -12.5
   866	42 43 2 1 
         ...
         ...
         ...
  1665	860 861 820 819 
  1666	1 2 
         ...
         ...
         ...
  1705	40 41 
  1706	41 82 
         ...
         ...
         ...
  1785	42 1 
  1786	1
         ...
         ...
         ...
  1905	1
\end{verbatim}
}

  • Line 1:
    • First column: Number of nodes

    • Second column: Number of element types

    • Third column: Bandwidth of the resulting finite-element matrix

  • Line 2-4: For each element type (in this example there are three: 8 (rectangles), 11 (Mixed), 12 (Neumann)), list the following:

    • First column: Element type

    • Second column: Number of elements for this type

    • Third column: Numnber of element this type has. Elements with 2 nodes are called degenerated

  • Lines 5 - 865: Node coordinates. 3 Columns:

    1 Node number: Internal Finite-Element number for this node. 2 X-coordinate 3 Z-coordinate (positive direction: upwards)

  • Lines 866 - 1665: Nodes of the first element type. In this case four nodes define one rectangular cell.

  • Lines 1666 - 1705: Nodes of second element type. In this case two nodes define a boundary condition of type 12 (Neumann).

  • Lines 1706 - 1785: Nodes of second element type. In this case two nodes define a boundary condition of type 11 (Mixed).

  • Lines 1786 - 1905: Number of the element of type 8 adjacent to the boundary elements (in the order of previous appearance).

Notes:

  • Elements need to be defined counter-clockwise

  • Boundary elements are defined from left to right (clockwise!)

The bandwith of the resulting finite-element matrix, the last entry in line 1 of elem.dat, is given by one plus the occurring maximal difference between the numbers of any two nodes belonging to the same element. It is thus dependent on the employed numbering of nodes.

In the present CRMod version, only elements of type 8 (quadrangular element composed of four triangular elements) and boundary elements of type 12 (homogeneous Neumann boundary condition; to be used at the Earth’s surface or at boundaries of a confined tank) or type 12 (mixed, or absorbing, boundary condition; to be used at boundaries within a half or full space) are supported.

In elem.dat, boundary elements must be listed after the normal (areal) elements. Along the edges of elements, a linear behaviour of the electric potential is assumed. Although elements may exhibit an irregular shape, elements with acute angles should be avoided.

Note

New regular grids (elem.dat and elec.dat) can be created using Griev!

inv/

cjg.ctr

For each iteration, save the residuum of each Conjugate Gradient step. The number of CG-steps can also be found in the inv.ctr file for each iteration.

coverage.mag

L1 data-weighted cumulated sensitivity (normalized)

\(S_i^{L1} = \sum_j^N \frac{|\partial V_j|}{\epsilon_i |\partial \rho_i|}\)

2880  874956.88680652122
0.25000000000000000      -0.25000000000000000      -0.55853918225079879
0.75000000000000000      -0.25000000000000000      -0.28004078693583917
...
1.2500000000000000      -0.25000000000000000      -0.12203557213931025
1.7500000000000000      -0.25000000000000000      -0.14832386170628217
  • First row:

    • First column: number of sensitivity values to follow

    • Second column: Maximum sensitivity (linear value), used to normalize values down below.

  • All following rows:

    • First column: Central x-coordinate of cell

    • Second column: Central z-coordinate of cell

    • Third column: \(log_{10}\left( \frac{S_{ij}}{S_{ij}^{max}}\right)\) (Normalized log10 of summed sensitivities)

As the third column is \(log_{10}\), only negative or zero values can be expected (0-1).

Note

Computed in bbsens.f90

coverage.mag.fpi

Contains the coverage (L1) of the sensitivties used in the FPI (thus only updating the phase component of the complex resistivity) for the final model.

The structure of the file can be found in the preceding section (coverage.mag).

ata.diag

L2 data-weighted cumulated sensitivity (normalized), d_i

\(S_i^{L2} = \sum_j^N \frac{|\partial V_j|^2}{\epsilon_i |\partial \rho_i|^2}\)

2880 27.3748341 2.93462502E+09
397261824.     -0.868474960
1.72104538E+09 -0.231760025
...
2.93462502E+09   0.00000000
2.03916826E+09 -0.158099174
  • First line holds three columns:

    • number of sensitivity values (equal to number of mesh cells)

    • minimum of d_i (i.e., of the first column of all following rows)

    • maximum of d_i (i.e., of the first column of all following rows)

  • All following rows:

    • First column: Diagonal entry of \(A^T C_d^{-1} A\): d_i

    • Second column: \(log_{10} \left(\frac{d_i}{d_{max}}\right)\)

As the second column contains only \(log_{10}\) values only negative or zero values can be expected (i.e. values in the range between zero and one).

With \(C_d{^-1} = W_d^T W_d\); \(W_d = diag \left(\frac{1}{\epsilon_1}, \ldots, \frac{1}{\epsilon_n} \right)\)

Note

Computed in bmcm_mod.f90 function bata

ata_reg.diag

  • First column: Diagonal entry of \(A^T C_d^{-1} A + C_m^{-1}(\lambda)\): \(d_i\)

  • Second column: \(log_{10} \left(\frac{d_i}{d_{max}}\right)\)

Question: In what way are these values normalized?

cov1_m.diag and cov2_m.diag

  • Cov1: \(\left[A^T C_d^{-1} A + C_m^{-1}(\lambda) \right]^{-1}\)

  • Cov2: \(\left[A^T C_d^{-1} A + C_m^{-1}(\lambda) \right]^{-1} A^T C_d^{-1} A \left[A^T C_d^{-1} A + C_m^{-1}(\lambda) \right]^{-1}\)

What can I do with these files?

Both files have the format:

std err (%) | \(\delta(\sigma')\) | \(\delta(\sigma'')\)

In order to get an absolute uncertainty for a given paramter (magnitude AND phase), use the formula:

\(\delta Parameter = Parameter \cdot \frac{std err}{100}\)

For more information have a look at the ModelProbe documents D2.1.2_UBO.pdf and M2.2_UBO.pdf, which can be found in the CRTomo repository.

Examples can also be found in the examples/ subdirectory of the CRTomo repository.

res_m.diag

Stores the resolution matrix, computed from the last iteration. This file is written if the value 4 is added to the mswitch. Resolution matrix:

\(\left[A^T C_d^{-1} A + C_m^{-1}(\lambda) \right]^{-1} A^T C_d^{-1} A\)

  • the first row has four columns:

    • number of values (cells)

    • lambda that R was computed for

    • min R value

    • max R value. This is the value used to normalize the data

  • second to last row:

    • first column linear value, NOT normalized

    • second column: \(log_{10}\) value, normalized to [0, 1].

No units [1].

Note

For further information, have a look at the CRTomo source file bmcm_mod.f90 in SUBROUTINE bres.

eps.ctr

This file consists of two parts: The first part describes the errors in relation to the measurements (volt.dat). The second one describes the errors for each iteration in relation to the forward solution of the current model space.

{\tiny
\begin{verbatim}

     1	    1/eps_r  1/eps_p      1/eps      eps_r       eps_p       eps      -log(|R|)       -Phase (rad)
     2	      14.2   20000.0      14.2     0.703E-01   0.500E-04   0.703E-01  -3.553902      0.1322917E-02
		...
		...
		...
   527	       6.0   20000.0       6.0     0.167       0.500E-04   0.167       2.276732      0.3437240E-03
   528	
   529	IT#      0
   530	       eps       psi      pol     Re(f(m))       Im(f(m))
   531	   0.395        2.342500    1    0.2532884       0.000000    
		...
		...
		...
  1056	   0.718E-01    5.259448    1    -3.666626       0.000000    
  1057	
  1058	IT#      1
  1059	       eps       psi      pol     Re(f(m))       Im(f(m))
  1060	   0.395        1.881460    1    0.4353101      0.8566426E-02
		...
		...
		...
  1585	   0.718E-01    0.509647    1    -4.007404      0.5183748E-02
  1586	
  1587	IT#      2
  1588	       eps       psi      pol     Re(f(m))       Im(f(m))
  1589	   0.395        1.898024    1    0.4287698      0.8681247E-02
		...
		...
		...
  2114	   0.718E-01    0.418030    1    -4.013978      0.5163230E-02
  2115	
  2116	PIT#     2
  2117	       eps       psi      pol     Re(f(m))       Im(f(m))
  2118	   0.371E-02    0.491851    1    0.4287698      0.8681247E-02
		...
		...
		...
  2643	   0.305E-02    0.050550    1    -4.013978      0.5163230E-02
  2644	
  2645	PIT#     3
  2646	       eps       psi      pol     Re(f(m))       Im(f(m))
  2647	   0.371E-02    0.159764    1    0.4287700      0.6262148E-02
		...
		...
		...
  3172	   0.305E-02    0.409256    1    -4.013978      0.6258056E-02
  3173	
  3174	PIT#     4
  3175	       eps       psi      pol     Re(f(m))       Im(f(m))
  3176	   0.371E-02    0.160427    1    0.4287700      0.6259686E-02
		...
		...
		...
  3701	   0.305E-02    0.409742    1    -4.013978      0.6259539E-02
\end{verbatim}
}

  • Line 1: Header for the raw data description. \(eps\) is the complex error which, depending on the use of the error ellipsis, is based on both magnitude and phase errors (Error ellipsis, \(eps = \sqrt{(eps_r)^2 + (eps_p)^2}\)), or only the magnitude error (no error ellipsis, \(eps = eps_r\)). datum(Re, Im) denotes the real and imaginary parts of the measurements as stored internally in CRTomo:

\(Re(datum) = -log_e(|R|)\) (Note the natural logarithm!) and \(Im(datum) = - Phase (rad)\). \(eps_r\) is the magnitue error (logarithm) and eps_p is the phase error (rad). \(eps\) is used in the complex inversion while \(eps_p\) is used in the final phase improvement.

\(eps_r\) and \(eps\) can directly be compared to \(log_e(|R|)\) and \(eps_p\) can be compared to \(Phase (rad)\).

  • Lines 2 - 527: Error descriptions for each measurement.

  • Line 529: Indicates the Iteration the following data describes.

  • Line 530: Header for the iteration descriptions. \(eps\) is the complex error. \(psi = \frac{d_i - f_i}{\epsilon_i}\) is the error weighted residuum of the data \(d_i\) and the forward response of the current iteration \(d_i\). \(pol\) gives the polarity of the measurements, \(d\) is the forward solution, and \(f\) is the measurement.

inv.ctr

The inv.ctr file contains all information related to the inversion results. As such it is the most important file to assess and improve inversion results. In the following certain parts of the file will be explained:

  • Lines 1 to 10 hold information regarding the specific CRTomo version that was used in the inversion.

  • Lines 11 to 44 repeat the legacy parameters of the crtomo.cfg file.

  • Lines 46 to 55 contain information of the grid used and the artificial noise applied to the data.

  • Lines 57 to 73 show information regarding all regularization options that can be controlled.

  • Lines 75 to 87 hold various options.

  • Lines 89 to 101 contain fixed constants that are hardwired into the CRTomo code.

  • Line 103 separates information available before the inversion from inversion regarding the inversion process.

  • Line 105 contains a header which describes all columns to follow.

  • Lines 107 to 174 contain information of the complex inversion.

  • Lines 178 to 195 contain information of the final phase improvement.

  • Line 196 indicates that the inversion finished gracefully.

{\tiny
\begin{verbatim}

     1	##
     2	## Complex Resistivity Tomography (CRTomo)
     3	##
     4	## Git-Branch master
     5	## Git-ID 334c078edcdc3b010a9cd68c07880ae845795c2f
     6	## Compiler ifort
     7	##
     8	## Created Tue-Oct-18-14:36:17-2011
     9	##
    10	
    11	       1           #  mswitch
    12	../grid/elem.dat
    13	../grid/elec.dat
    14	../mod/volt.dat
    15	../inv
    16	F                  ! difference inversion or (m - m_{prior})
    17	
    18	
    19	
    20	***PARAMETERS***
    21	       0           ! nx-switch or # cells in x-direction
    22	      -1           ! nz-switch or # cells in z-direction
    23	 1.0000            ! smoothing parameter in x-direction
    24	 1.0000            ! smoothing parameter in z-direction
    25	      20           ! max. # inversion iterations
    26	F                  ! DC inversion ?
    27	T                  ! robust inversion ?
    28	T                  ! final phase improvement ?
    29	 5.0000            ! rel. resistance error level (%)  (parameter A1 in err(R) = A1*abs(R) + A2)
    30	0.10000E-03        ! min. abs. resistance error (ohm) (parameter A2 in err(R) = A1*abs(R) + A2)
    31	 0.0000            ! phase error model parameter A1 (mrad/ohm^B) (in err(pha) = A1*abs(R)**B + A2*abs(pha) + A3)
    32	 0.0000            ! phase error model parameter B  (-)          (in err(pha) = A1*abs(R)**B + A2*abs(pha) + A3)
    33	 0.0000            ! phase error model parameter A2 (%)          (in err(pha) = A1*abs(R)**B + A2*abs(pha) + A3)
    34	 2.5000            ! phase error model parameter A3 (mrad)       (in err(pha) = A1*abs(R)**B + A2*abs(pha) + A3)
    35	T                  ! homogeneous background resistivity ?
    36	 40.000            ! background magnitude (ohm*m)
    37	 0.0000            ! background phase (mrad)
    38	F                  ! Another dataset?
    39	       0           ! 2D (=0) or 2.5D (=1)
    40	T                  ! fictitious sink ?
    41	    4647           ! fictitious sink node number
    42	F                  ! boundary values ?
    43	boundary.dat
    44	 1
    45	
    46	***Model stats***
    47	# Model parameters               9360
    48	# Data points                     535
    49	Add data noise ?                      F
    50	Couple to Err. Modl?                  T
    51	    seed                            1
    52	    Variance                 0.0000    
    53	Add model noise ?                     F
    54	    seed                            0
    55	    Variance                 0.0000    
    56	
    57	******** Regularization Part *********
    58	Prior regualrization                  F
    59	Regularization-switch                 1
    60	Regular grid smooth                   F
    61	Triangular regu                       T
    62	Triangular regu2                      F
    63	Levenberg damping                     F
    64	Marquardt damping                     F
    65	Minimum grad supp                     F
    66	MGS beta/sns1 (RM)                    F
    67	MGS beta/sns2 (RM)                    F
    68	MGS beta/sns1 (RB)                    F
    69	MGS beta/sns2 (RB)                    F
    70	TV (Huber)                            F
    71	Stochastic regu                       F
    72	Fixed lambda?                         F
    73	Taking easy lam_0 :    9360.000    
    74	
    75	******** Additional output *********
    76	mswitch                               1
    77	Read start model?                     F
    78	Write coverage?                       T
    79	Write MCM 1?                          F
    80	Write resolution?                     F
    81	Write MCM 2?                          F
    82	Using Gauss ols?                      F
    83	Forcing negative phase?               F
    84	Calculate sytop?                      T
    85	Verbose?                              F
    86	Error Ellipses?                       F
    87	Restart FPI with homogenous phase?    F
    88	
    89	***FIXED***
    90	 -- Sytop [m] :                                  -39.000    
    91	 Force negative phase ?                          F
    92	 Ratio dataset ?                                 F
    93	 Min. L1 norm                                     1.0000    
    94	 Min. rel. decrease of data RMS :                0.20000E-01
    95	 Min. steplength              :                  0.10000E-02
    96	 Min. stepsize (||\delta m||) :                   0.0000    
    97	 Min. error in relaxation :                      0.10000E-03
    98	 Max. # relaxation iterations :                    936
    99	 Max. # regularization steps :                    30
   100	 Initial step factor :                           0.50000    
   101	 Final   step factor :                           0.90000    
   102	 
   103	-------------------------------------------------------------------------------------------------------------
   104	 
   105	 ID it.   data RMS    stepsize    lambda      roughn.    CG-steps    mag RMS     pha RMS    - # data    L1-ratio    steplength
   106	 
   107	************************************************************************************************************* 
   108	 IT   0    7.632                                                     7.630       3.887         0         1.13    
   109	************************************************************************************************************* 
   110	 UP   1    2.874       736.       9360.      0.1551       226                                           1.000
   111	 UP   2    2.429       731.       4680.      0.3507       179                                           1.000
   112	 UP   3    2.044       726.       2569.      0.6208       143                                           1.000
   113	 UP   4    1.762       723.       1553.      0.9112       117                                           1.000
   114	 UP   5    1.573       723.       1020.       1.183       100                                           1.000
   115	 UP   6    1.448       725.       713.1       1.424        89                                           1.000
   116	 UP   7    1.363       726.       522.3       1.637        80                                           1.000
   117	 UP   8    1.302       728.       395.7       1.833        73                                           1.000
   118	 UP   9    1.258       730.       307.4       2.016        67                                           1.000
   119	 UP  10    1.223       731.       243.5       2.194        60                                           1.000
   120	 UP  11    1.196       733.       195.9       2.368        55                                           1.000
   121	 UP  12    1.174       735.       159.6       2.543        51                                           1.000
   122	 UP  13    1.155       735.       131.3       2.732        45                                           1.000
   123	 UP  14    1.139       734.       109.1       2.932        39                                           1.000
   124	 UP  15    1.126       735.       91.30       3.123        36                                           1.000
   125	 UP  16    1.115       736.       76.90       3.321        33                                           1.000
   126	 UP  17    1.105       737.       65.12       3.543        30                                           1.000
   127	 UP  18    1.095       738.       55.43       3.786        28                                           1.000
   128	 UP  19    1.087       737.       47.42       4.049        25                                           1.000
   129	 UP  20    1.078       737.       40.74       4.324        23                                           1.000
   130	 UP  21    1.071       736.       35.15       4.639        21                                           1.000
   131	 UP  22    1.064       736.       30.45       4.973        20                                           1.000
   132	 UP  23    1.058       736.       26.48       5.331        19                                           1.000
   133	 UP  24    1.052       734.       23.10       5.715        18                                           1.000
   134	 UP  25    1.047       736.       20.21       6.091        18                                           1.000
   135	 UP  26    1.042       737.       17.73       6.491        18                                           1.000
   136	 UP  27    1.037       737.       15.59       6.913        18                                           1.000
   137	 UP  28    1.030       735.       13.76       7.422        17                                           1.000
   138	 UP  29    1.026       736.       12.18       7.897        17                                           1.000
   139	 UP  30    1.023       737.       10.80       8.405        17                                           1.000
   140	 UP  31    3.409       368.       12.18       1.974        17                                           0.500
   141	************************************************************************************************************* 
   142	 IT   1    1.026       736.3      12.18       7.897        17        1.235      0.9566         0         1.23       1.000
   143	************************************************************************************************************* 
   144	 UP   0   0.5746       22.2       12.18       6.673        43                                           1.000
   145	 UP   1   0.5989       22.8       18.42       5.641        46                                           1.000
   146	 UP   2   0.6257       24.6       27.23       4.841        46                                           1.000
   147	 UP   3   0.6546       27.7       39.28       4.211        51                                           1.000
   148	 UP   4   0.6850       31.5       55.25       3.718        54                                           1.000
   149	 UP   5   0.7160       35.8       75.79       3.333        56                                           1.000
   150	 UP   6   0.7479       40.5       101.4       3.023        57                                           1.000
   151	 UP   7   0.7807       45.3       132.5       2.771        58                                           1.000
   152	 UP   8   0.8144       50.2       169.0       2.560        59                                           1.000
   153	 UP   9   0.8494       55.2       210.5       2.379        61                                           1.000
   154	 UP  10   0.8853       60.1       256.1       2.222        63                                           1.000
   155	 UP  11   0.9212       64.9       304.5       2.087        66                                           1.000
   156	 UP  12   0.9564       69.4       354.2       1.970        67                                           1.000
   157	 UP  13   0.9899       73.5       403.4       1.871        68                                           1.000
   158	 UP  14    1.021       77.3       450.8       1.787        69                                           1.000
   159	 UP  15   0.7534       36.8       403.4       3.787        68                                           0.500
   160	************************************************************************************************************* 
   161	 IT   2   0.6577       3.546      403.4       7.405        68        1.238      0.9554         0        0.048
   162	************************************************************************************************************* 
   163	 UP   0   0.9914       66.8       403.4       1.866        68                                           1.000
   164	 UP   1    1.022       70.3       450.4       1.783        69                                           1.000
   165	 UP   2   0.7629       33.4       403.4       3.640        68                                           0.500
   166	************************************************************************************************************* 
   167	 IT   3   0.9914       66.77      403.4       1.866        68        1.528      0.9726         0        1.000
   168	************************************************************************************************************* 
   169	 UP   0    1.008      0.152       403.4       1.812        69                                           1.000
   170	 UP   1   0.9788      0.201       361.5       1.893        78                                           1.000
   171	 UP   2   0.9994      0.761E-01   403.4       1.837        69                                           0.500
   172	************************************************************************************************************* 
   173	 IT   4    1.000      0.8132E-01  403.4       1.835        69        1.536      0.9723         0        0.534
   174	************************************************************************************************************* 
   175	
   176	-----------------------------------------------------------------------------------------------------------------
   177	
   178	************************************************************************************************************* 
   179	PIT   4   0.9723                                                     1.536      0.9723         0
   180	************************************************************************************************************* 
   181	PUP   1   0.9305      0.798E-02   9360.      0.1051E-02    26                                           1.000
   182	PUP   2   0.9263      0.144E-01   4680.      0.1684E-02    30                                           1.000
   183	PUP   3   0.9305      0.798E-02   9360.      0.1051E-02    26                                           1.000
   184	PUP   4   0.9348      0.438E-02  0.1808E+05  0.7200E-03    25                                           1.000
   185	PUP   5   0.9391      0.241E-02  0.3373E+05  0.5406E-03    28                                           1.000
   186	PUP   6   0.9437      0.134E-02  0.6071E+05  0.4388E-03    32                                           1.000
   187	PUP   7   0.9489      0.774E-03  0.1053E+06  0.3719E-03    42                                           1.000
   188	PUP   8   0.9560      0.526E-03  0.1749E+06  0.3192E-03    50                                           1.000
   189	PUP   9   0.9656      0.587E-03  0.2746E+06  0.2747E-03    62                                           1.000
   190	PUP  10   0.9772      0.952E-03  0.3992E+06  0.2385E-03    70                                           1.000
   191	PUP  11   0.9888      0.151E-02  0.5297E+06  0.2118E-03    74                                           1.000
   192	PUP  12   0.9985      0.207E-02  0.6415E+06  0.1943E-03    83                                           1.000
   193	************************************************************************************************************* 
   194	PIT   5   0.9888      0.1509E-02 0.5297E+06  0.2118E-03    74        1.536      0.9888         0        1.000
   195	************************************************************************************************************* 
   196	***finished***
\end{verbatim}
}

.modl files

The first row contains the number of grid cells (conductivities). Starting with the second row, the magnitude (in \(\Omega m\)) and the phase (in \(mrad\)) are displayed for each grid cell.

.mag files

The first row again contains the number of grid cells along with the normalized magnitude or phase misfit for the current inversion iteration. The following rows contain the x and z centroid coordinates and the magnitude (in \(\Omega m\)) or phase (in \(mrad\)) value for the corresponding cell.

\(log_{10}(\rho) (\Omega m)\) \(\phi (mrad)\)

.pha files

Structure is similar to the .mag files, except that the third columns contains the element phase values in mrad.

run.ctr

Provides an overview of the inversion process. Due to the adaption to screen output, this file look somewhat garbled when viewed in a text editor.

If the inversion finished sucessfully, the used CPU time will be saved to the file (grep "\^CPU" run.ctr)

voltXX.dat

voltXX.dat contains the modelled resistances and phases for all measurement configurations for iteration XX.

Line 1: number of measurement configurations
Line 2-End: Column 1: current injection electrode pair
(CRTomo format, as defined in config.dat)
Column 2: potential reading electrode pair
(CRTomo format, as defined in config.dat)
Column 3: resistance value in Ohm
Column 4: phase value in mrad

mod/

crt-files/volt.dat

volt.dat contains the modeled or measured resistances (not resistivities) for all measurement configurations defined in config.dat. Multiple input formats are currently recognized. The input formats are partially determined by external switches and partially by certain key structures in the files themselfs:

External switches:

  • DC or complex inversion/fpi (ldc)

Key structures:

  • individual errors (lindiv - determined from the first line of the file itself)

  • there are two basic file formats recognized, the “CRTomo standard” and the “industry standard”.

The format of volt.dat is explained by means of example files:

DC/Complex/FPI case, CRTomo standard:

3
10002 40003 4.3 -0.1
20003 50004 2.3 -0.2
30004 60005 9.2 -0.6
  • Line 1: number of measurement configurations (here: 3)

  • Line 2-End:
    • Column 1: current injection electrode pair (CRTomo format, as defined in config.dat)

    • Column 2: potential reading electrode pair (CRTomo format, as defined in config.dat)

    • Column 3: resistance value in \(\Omega\) (CRTomo uses a current of 1 A, thus this value can also be interpreted as a voltage!)

    • Column 4: phase value (\(\varphi\)) in mrad

DC case individual errors:

3 T
10002 40003 4.3 0.43
20003 50004 2.3 0.23
30004 60005 9.2 0.92
1
  • Line 1 contains the number of measurements, plus the activation switch for the individual errors.

  • Lines 2-(End-1):
    • Column 1: current injection electrode pair (CRTomo format, as defined in config.dat)

    • Column 2: potential reading electrode pair (CRTomo format, as defined in config.dat)

    • Column 3: resistance value in \(\Omega\) (CRTomo uses a current of 1 A, thus this value can also be interpreted as a voltage!)

    • Column 4: Normalized individual error (see last line)

  • Last line: Square root of the normalization factor of individual errors: \(\sqrt{\Delta R_{norm}}\)

Each individual error is computed using the value in column 4, multiplied with the inverse square of the normalization factor: \(\Delta R_i = R_i / \Delta R_{norm} ^ 2\). Also note that the input here is always linear, despite the inversion being formulated as log(R). Common values for the normalization factors, are as follows. To increasing error parameters by a factor of

  • 2, use a norm factor of 0.7

  • 3, use a norm factor of 0.577

  • 0.5, use a norm factor of 1.4

  • 0.33, use a norm factor of 1.73

Complex/FPI case:

3 T
10002 40003 4.3 -5 0.43 0.05
20003 50004 2.3 -10 0.23 0.1
30004 60005 9.2 -200 0.92 2
1 1
  • Line 1 contains the number of measurements, plus the activation switch for the individual errors.

  • Lines 2-(End-1):
    • Column 1: current injection electrode pair (CRTomo format, as defined in config.dat)

    • Column 2: potential reading electrode pair (CRTomo format, as defined in config.dat)

    • Column 3: resistance value in \(\Omega\) (CRTomo uses a current of 1 A, thus this value can also be interpreted as a voltage!)

    • Column 4: phase values [mrad]

    • Column 5: Normalized individual magnitude error (see last line)

    • Column 6: Normalized individual phase error (see last line)

  • Last line: Square root of the normalization factors of individual errors: \(\sqrt{\Delta R_{norm}} \sqrt{\Delta \varphi_{norm}}\)

pot/pot.dat

Each pot.dat contains the modelled potential distribution for the corresponding current injection configuration defined in config.dat (assuming a unit current of 1 \(A\)), i.e., the (consecutive) number in the file name corresponds to the line number (+1) in config.dat. The potential values of the individual elements are listed as determined in elem.dat.

  • Line 1-End:
    • Column 1: x coordinate in m

    • Column 2: z coordinate in m

    • Column 3: real part of complex potential, [V]

    • Column 4: imaginary part of complex potential, [V]

rho/

rho.dat

rho.dat contains the resistivity distribution, i.e. the resistivity values of the individual elements determined in elem.dat. The format of rho.dat is explained by means of an example file:

2296                   2296 elements (of type 8)
100.000000    -5       resistivity and phase of 1st element (in m)
100.000000    -10      .
100.000000    -13.4    .
.             .
.             .
.             .
99.999756    0        .
99.999893    0        .
99.999954    0        resistivity and phase of 2296th element (in m)
  • Line 1: number of elements (of type 8)

  • Line 2-End:
    • Column 1: resistivity in Ohmm

    • Column 2: phase in mrad