Usage and implementation details

Best practices

The following procedure is recommended for new data sets and focuses on inversions using ccd_single and ccd_time:

  • Initially invert with variable \lambda values for the frequency regularization

  • Fine-tune with a fixed lambda (this in general yields more robust results and makes results comparable)

  • Usually the third starting model yields the most robust results:

    DD_STARTING_MODEL=3 cdd_single ...
    
  • Normalization can help… :

    ccd_single --norm 10
    
  • For time regularization: here only a fixed lambda can be used. Start with a small value and take a look at the maximum regularization strength for the time-regularization. The regularization strength is automatically plotted when the --plot option is enabled.

  • while the structure of the input files is fixed, the data format can be changed using the --data_format option. Thus a conversion from conductivities to resistivities and vice versa is not necessary, as well as a conversion between real/imaginary part and magnitude/phase format.

  • the --tmp option can improve execution speed on conventional hard drives (don’t expect huge improvements for solid state discs (SSDs).

Normalization

The CDD is linear in \rho_0/\sigma_\infty, as as such data can be normalized both in magnitude/phase, or real and imaginary parts:

\rho'_{norm} &= A \cdot \rho'\\
   \rho''_{norm} &= A \cdot \rho''\\
   \rho'(\omega)_{norm} &= A \cdot \left(\rho_0 -  \rho_0 \sum_{i=1}^N m_i
\frac{(\omega \tau_i)^2}{1 + (\omega \tau_i)^2}\right)\\
   \rho''(\omega)_{norm} &= A \cdot \left(- \rho_0 \sum_{i=1}^N m_i \frac{(\omega
\tau_k)}{1 + (\omega \tau_k)^2} \right)

The factor A is determined by norming the lowest frequency \rho'|\sigma' value to the target value B given by the --norm switch:

A = \frac{B}{\rho'/\sigma'}

Determining relaxation time ranges

The following approach to select \tau values is called ‘data’

For forward modelling and inversions there is always the question of which range of relaxation times to consider. To answer this we consider the typical frequency range of measurements from 1 mHz to 50 kHz. By considering one-term debye models we can compute the minimum and maximum \tau values using the formula:

\tau_{peak} = \frac{1}{2 \pi f_{peak}}\\
\tau_{min}(0.001~Hz) &= 159.15~s\\
\tau_{max}(1e5~Hz) &= 1.5915e-06~s

For the implementation the number of \tau values N_D per decade is specified. The maximum \tau-interval corresponds to the frequency range [1e-3~s, 1e5~s]. Now compute the total number N of \tau values using the formula

N = |log_{10}(f_{min}) - log_{10}(f_{max})| \cdot N_D

Note

The maximum frequency range considered here spans exactly 8 decades. Thus no rounding needs to take place.

The pool of possible \tau values is now created by

np.logspace(-3,5,N_D)

The \tau values for a real data set will now be selected from this pool, depending on the minimum and maximum frequency of the data set. This procedure ensures that always the same \tau values are used independently from the minimum and maximum data frequencies. However, the \tau values will still be dependend on N_D!

(Source code)

(Source code)

The following approach to selecting \tau values is called ‘data_ext’.

This approach adds one frequency decade to each of the frequency limits of the data prior to converting those limits to \tau values.

Using the Cole-Cole distribution

A single-termin Cole-Cole spectrum with c = 0.5 was fitted using kernel functions of c = (0.3, 0.5, 0.7, and 1.0).

  • c = 0.3:

    The kernel function is too wide to fit the response:

    _images/plot_spec_000_iteration0001.png
  • c = 0.5

    The kernel function has the same slope as the response. Any widening of the peak in the RTD is due to regularisation smoothing.

    _images/plot_spec_000_iteration0012.png
  • c = 0.7

    _images/plot_spec_000_iteration0004.png
  • c = 1.0

    _images/plot_spec_000_iteration00041.png

Creating synthetic relaxation time distributions

The \tau_i distribution is determined by the frequencies of the data and number of values per frequency decade set by the user. For synthetic studies or benchmarks we need to set the corresponding g_i values for those relaxation times. We do this either by explicitly setting those relaxation times for a small number of terms (usually one to three in correspondence to the Cole-Cole/Debye model), or by addition of one or more log-normal distributions to the g_i distribution.

(Source code, png, hires.png, pdf)

_images/usage_and_implementation-3.png

Normally distributed noise can then be added to this spectrum:

(Source code, png, hires.png, pdf)

_images/usage_and_implementation-4.png