# Exploring nonlinear inversions: A 1D magnetotelluric example

This tutorial originally appeared as a featured article in The Leading Edge in August 2017 — see issue. |

At some point in many geophysical workflows, an inversion is a necessary step for answering the geoscientific question at hand, whether it is recovering a reflectivity series from a seismic trace in a deconvolution problem, finding a susceptibility model from magnetic data, or recovering conductivity from an electromagnetic survey. This is particularly true when working with data sets where it may not even be clear how to plot the data: 3D direct current resistivity and induced polarization surveys (it is not necessarily clear how to organize data into a pseudosection) or multicomponent data, such as electromagnetic data (we can measure three spatial components of electric and/or magnetic fields through time over a range of frequencies). Inversion is a tool for translating these data into a model we can interpret. The goal of the inversion is to find a “model” — some description of the earth's physical properties — that is consistent with both the data and geologic knowledge.

In a general inverse problem, we start from a forward problem, of the form , where is the forward operator (the mathematical description of the physics/problem), **d** is our data, and **m** is our earth model (an array of numbers that describes the physical properties of the earth). Matt Hall kicked off the discussion of inversions in *The Leading Edge* in his Linear Inversion tutorial.^{[1]} He walked through how to solve the classic linear inverse problem in which the forward simulation takes the form . The example he demonstrated is a deconvolution problem; in that case, **G** is a convolution matrix, **m** is the reflectivity series, and **d** is a seismic trace. He introduced the concepts of an underdetermined problem, motivated the need for regularization, formulated the inversion in terms of an optimization problem, and solved the linear inverse problem (in true polyglot fashion, using Python, Lua, Julia, and R). In this tutorial, we will pick up from there and explore a nonlinear forward problem, of the form ; in this case, our forward operator is a function of the model. In the accompanying notebooks (https://github.com/seg), we use SimPEG (http://simpeg.xyz) for the implementation in Python of the physics simulations, optimization, and structure necessary to perform an inversion.^{[2]}

## Contents

## Magnetotellurics

We will explore the 1D magnetotelluric (MT) survey technique, which is a natural source electromagnetic method. In MT, plane-wave source fields are generated by solar wind (giving us low-frequency signals <1 Hz) and lightning strikes worldwide (giving us higher frequency signals >1 Hz). In MT, the model **m** is a description of the earth's electrical conductivity , and solves Maxwell's equations — giving the electric field and the magnetic field — for a plane-wave source. In the continuous world, Maxwell's equations are:

**(**)

where is magnetic permeability, generally taken to be the permeability of free space , and is the angular frequency ( is frequency in Hz). When we discretize Maxwell's equations so they can be solved numerically (see the first notebook), we obtain a matrix system of the form

**(**)

where **A(m)** is a matrix capturing the physics, **u** is a vector of the electric and magnetic fields everywhere in our simulation domain, and **b** includes the boundary conditions that describe the plane wave source. This problem is nonlinear because this matrix **A** depends on the conductivity model. When we solve equation 2 for **u**, we obtain the electric and magnetic fields everywhere on our mesh. Our data consist of samples of the electric and magnetic fields where we have receivers. For the MT problem, the measured data, **d**, are impedances; for the 1D problem, the impedance at a single frequency is given by

**(**)

Note that the impedance is a complex number, consisting of real and imaginary parts. Impedance is a nonintuitive quantity; often, we instead consider apparent resistivity (Note that resistivity is the inverse of conductivity ) and phase , given by

**(**)

For an earth that is a half-space, the apparent resistivity equals the true resistivity, and the phase is 45°. When we implement the computation of the data, we define a method that: (1) selects the values of the electric and magnetic fields at the surface of the earth from the fields that we computed everywhere in our domain **u** and (2) computes their ratio to provide us with impedance data, that is: **P(u) = d**.

In summary, to implement the forward simulation for the MT problem (), we break it into two steps:

- solve
**A(m)u = b**; and - compute the impedance data
**d = P(u)**.

In the first notebook, we provide details on how each step is performed using a finite difference approach. If you are looking for more on numerical discretization, we wrote a tutorial on finite volume methods.^{[3]}

The inversion aims to solve for a model. Just as in the linear problem, we require regularization to select a model from the infinitely many that can fit the data. Before we tackle this ill-posed inverse problem, let's explore an example of nonuniqueness: how can different models give us the same data?

## Go forwards

A classic example that demonstrates the nonuniqueness of MT data is the equivalence of the conductivity-thickness product (conductance) of a thin layer. If we start with a layer that has a conductivity of , halve its thickness, and double its conductivity, the resulting data will be similar. In Figure 1, we show apparent resistivity and phase data for five models, each of which has the same conductance. In all of the simulations, the data show a decrease in apparent resistivity and an increase in phase starting at ∼10 Hz. Thus, in all of the data we have evidence of a conductive layer, and the frequency range at which it appears is an indicator of the `depth`

of the layer (you can explore by changing the depth variable in the model setup of the second notebook). However, all scenarios produce similar data. Even with a small amount of noise, we cannot expect an inversion code to separate the conductivity and thickness of a conductive unit without incorporating additional information. When setting up the inverse problem and defining regularization (next up), it is important to realize that the choices we make there will influence the character of the model we recover, as the data alone do not provide us with a unique model.

## Go backwards

There are many models that can fit the data, so we need a means of *regularizing* our inversion so that we can select a single, reasonable model from the (infinitely) many that agree with the data. We will come back to how the regularization is defined, but for now, consider it as a measure of how “reasonable” the model is based on our prior knowledge about the earth. Formally, we pose the inversion as an optimization problem:

**(**)

Essentially we are saying “find the model **m** that best fits the assumptions we are making in the regularization , and that agrees with the observed data .” In practice, our data are noisy, so there is no sense in fitting them exactly. Rather, we pose the optimization problem as a trade-off between fitting the data and fitting the regularization, so our inverse problem can be stated as:

**(**)

where is the data misfit, a measure of how far our simulated data are from the observed data; is the regularization; and is a trade-off parameter that weights the relative importance of the data misfit and regularization in the optimization. A larger says that we want our model to do a good job minimizing the regularization, while a smaller turns down the importance of the regularization and says that fitting the data is more important in the inversion.

The data misfit is often taken to be a weighted norm:

**(**)

where captures the noise model (typically it is a diagonal matrix containing the standard deviation of each datum).

The regularization is one place where a priori information about the geologic setting can be brought in. There are a variety of regularization functionals that can be chosen, but one of the most widely used is Tikhonov regularization, which again uses norms:

**(**)

The first term is often referred to as the "smallness" as it measures the "size" of the model (in the sense). The matrix is generally taken to be a diagonal matrix that may contain information about the length scales of the model or be used to weight the relative importance of various parameters in the model. The scalar weights the relative importance of this term in the regularization. Notice that we include a reference model, . Often this is defined as a constant value, but if more information is known about the background, that can be used to construct a more intricate reference model. Here, we will not delve too far into how the reference model impacts the recovered results, but you are encouraged to change `mref`

in the notebooks and investigate its impact.

The second term is often referred to as the "smoothness". The matrix approximates the derivative of the model with respect to depth, and is hence a measure of how "smooth" the model is. The term weights the relative importance of smoothness in the regularization.

From this setup, we see that there are quite a number of choices to make: defining uncertainties on the data (), selecting a reference model (), choosing the importance of smallness and smoothness ( and ), and selecting a trade-off parameter (). Let’s start by assuming a known noise model, fix and , and explore the impact of the trade-off parameter . Our forward problem depends upon the electrical conductivity. For the inverse problem, however, we are free to use any function of the conductivity as a parameter. The electrical conductivity of earth materials varies by many orders of magnitude and is strictly positive. Thus it is advantageous to use as the model in the inverse problem. For a nonlinear problem, we also have the additional choice of the initial model at which to start the inversion. Although we will not discuss the choice of , you are encouraged to change the initial model in the notebooks and examine the impact it makes because it can be significant!

### The knob

If the noise is Gaussian, then the sum of squares (our data misfit) is a Chi-squared distribution, which has an expected value of (in our case, we divide this by two to match our definition of ). Thus, the ideal choice of is one that gives us . To demonstrate the effect of , we consider a five-layer model, originally shown in Whitall and Oldenburg (1992), and will demonstrate inversions when we achieve the target misfit, underfit the data, and overfit the data.^{[4]} The conductivity model used is the solid black line in Figure 2a. For these inversions we fix the regularization parameters to , and set , and the initial model, (feel free to change them in the notebook!). We start the inversion with a large and decrease its value to plot the trade-off or Tikhonov curve (Figure 2b). In blue, we show the inversion that is stopped when the data misfit approximately equals the target misfit (the star in Figure 2b). Figures 2c and 2d show the data as apparent resistivity and phase, which is a visualization of our complex-valued impedance data. The blue line in Figure 2a shows the recovered model, which identifies the general structure and conductivity values of the five layers. In this case, we are employing a smooth regularization, thus we expect to recover smoothly varying structures.

If we instead choose a larger , reducing the contribution of the data misfit to the objective function, we underfit the data, as is shown in orange in Figure 2. Although we still see evidence of two conductive structures, we do not recover their amplitudes and do a poor job resolving the location and widths of the conductive layers. (If you had to pick the top of the first layer, where should it be?) Examining the plots in Figures 2c and 2d, there is more insight about the subsurface conductivity that can be learned by pushing the inversion to extract more from the data.

On the other extreme, we can choose a very small and try to fit all of the details in the data. Doing this, we obtain the results shown in green in Figure 2. When we push the inversion to fit the (noisy) data very closely, we end up fitting the noise. To do this, conductivity contrasts are exaggerated and oscillatory and erroneous conductivity structures are introduced in the inversion.

### The knobs

For the inversions shown in Figure 2, we prescribed the values , . What impact do they have on the character of the model we recover?

In Figure 3, we compare two inversions with different regularization parameters: (1) a ``smooth* inversion (blue line), with and , and (2) a ``small* inversion (brown line): with and . In both, was chosen so that a desired target misfit was achieved. The smooth inversion penalizes large gradients; the resulting model has two smooth peaks. Note that we smooth over the resistive third layer, overestimating its conductivity. The small inversion instead favors models that are close to the reference model; this model has more structure. The resistivity of the first layer matches well, and the conductivity of the third layer is closer to its true value, but additional oscillatory structures are introduced at depth. In the third notebook, you can explore the impact of these parameters yourself.

In practice, these parameters are often determined by experimentation; strategies such as examining length scales are often successfully adopted (see page 38 in Oldenburg and Li, 2005)^{[5]}. Changing the relative values of and is one way to bring in a priori information. If we know very little, often starting with a smooth inversion is a good option; this penalizes structure (high gradients) while showing general trends. If more structure is expected, or a reliable reference model can be built from additional data such as physical property measurements, well logs, or additional geophysical/geologic data, then the influence of the smallness term may be increased. There are a few other ways to bring in additional a priori information. If we are expecting a more “blocky” model, we can choose a different norm (such as an norm), or if we have structural constraints, we can introduce other weighting structures (e.g., on the smoothness); these are knobs for another tutorial, and there is discussion in Oldenburg and Li (2005).^{[5]}

## Summary

In this tutorial, we have introduced the forward simulation for MT and explored a few aspects of the inverse problem. Prior to jumping into an inversion, it is important to know the limitations of the survey and data, and what you can and cannot resolve, even if there is no noise. Forward modeling is a powerful tool for setting realistic expectations of an inversion.

To set up and solve the inverse problem, we posed the inversion as an optimization problem that searches for a model of the earth that minimizes an objective function consisting of a data misfit and a regularization term. There are many choices to be made in defining the various elements of the inverse problem, including how to assign uncertainties, selecting a trade-off parameter, defining the regularization function, and choosing initial and reference models. In this tutorial we explored two of the knobs: (1) the trade-off parameter and (2) the relative importance of smallness and smoothness contributions in Tikhonov regularization. The interactive notebooks that are provided allow you to change parameters and experiment with their impact.

## References

- ↑ Hall, M., 2016, Linear inversion: The Leading Edge,
**35**, no. 12, 1085–1087, http://dx.doi.org/10.1190/tle35121085.1 - ↑ Cockett, R., S. Kang, L. J. Heagy, A. Pidlisecky, and D. W. Oldenburg, 2015, SimPEG: An open source framework for simulation and gradient based parameter estimation in geophysical applications: Computers & Geosciences,
**85**, 142–154, http://dx.doi.org/10.1016/j.cageo.2015.09.015 - ↑ Cockett, R., L. J. Heagy, and D. W. Oldenburg, 2016, Pixels and their neighbors: Finite volume: The Leading Edge, 35, no. 8, 703–706, http://dx.doi.org/10.1190/tle35080703.1.
- ↑ Whittall, K., and D. Oldenburg, 1992, Inversion of magnetotelluric data for a one-dimensional conductivity: Society of Exploration Geophysicists. http://dx.doi.org/10.1190/1.9781560802419
- ↑
^{5.0}^{5.1}Oldenburg, D. W., and Y. Li, 2005, Inversion for applied geophysics: A tutorial,*in*D. K. Butler, ed., Investigations in Geophysics: Near-Surface Geophysics, 89–150, http://dx.doi.org/10.1190/1.9781560801719.ch5

## Corresponding author

- Corresponding author: Seogi Kang, University of British Columbia Geophysical Inversion Facility,
`skangeos.ubc.ca`

## External links

**Debug data:**

`IP: 54.81.71.219`

`Start request GET /wiki/Exploring_nonlinear_inversions:_A_1D_magnetotelluric_example`

HTTP HEADERS:

HOST: wikidev.seg.org

ACCEPT-ENCODING: x-gzip, gzip, deflate

USER-AGENT: CCBot/2.0 (http://commoncrawl.org/faq/)

ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

IF-MODIFIED-SINCE: Tue, 20 Mar 2018 21:09:44 GMT

CONNECTION: close`[caches] cluster: APCBagOStuff, WAN: mediawiki-main-default, stash: db-replicated, message: APCBagOStuff, session: APCBagOStuff`

`[caches] LocalisationCache: using store LCStoreDB`

`[authentication] Overriding AuthManager primary authn because $wgAuth is SSOAuthPlugin`

`[CryptRand] 0 bytes of randomness leftover in the buffer.`

`[session] SessionBackend "8cj54jdkbrhabc3hl17iplg5v52a784e" is unsaved, marking dirty in constructor`

`[session] SessionBackend "8cj54jdkbrhabc3hl17iplg5v52a784e" save: dataDirty=1 metaDirty=1 forcePersist=0`

`[cookie] already deleted setcookie: "mediawiki_session", "", "1497942683", "/", "", "1", "1"`

`[cookie] already deleted setcookie: "mediawikiUserID", "", "1497942683", "/", "", "1", "1"`

`[cookie] already deleted setcookie: "mediawikiToken", "", "1497942683", "/", "", "1", "1"`

`[cookie] already deleted setcookie: "forceHTTPS", "", "1497942683", "/", "", "", "1"`

`[DBReplication] Wikimedia\Rdbms\LBFactory::getChronologyProtector: using request info {`

"IPAddress": "54.81.71.219",

"UserAgent": "CCBot\/2.0 (http:\/\/commoncrawl.org\/faq\/)",

"ChronologyProtection": false

}`[DBConnection] Wikimedia\Rdbms\LoadBalancer::openConnection: calling initLB() before first connection.`

`[DBConnection] Connected to database 0 at 'localhost'.`

`[session] User::loadFromSession called before the end of Setup.php`

`Unstubbing $wgParser on call of $wgParser::setFunctionHook from require_once`

`Parser: using preprocessor: Preprocessor_DOM`

`Title::getRestrictionTypes: applicable restrictions to [[Exploring nonlinear inversions: A 1D magnetotelluric example]] are {edit,move}`

`[ContentHandler] Created handler for wikitext: WikitextContentHandler`

`[MessageCache] MessageCache::load: Loading en... local cache is empty, got from global cache`

`Unstubbing $wgLang on call of $wgLang::_unstub from ParserOptions->__construct`

`[caches] parser: APCBagOStuff`

`Article::view using parser cache: yes`

`Article::view: doing uncached parse`

`[Preprocessor] Cached preprocessor output (key: mediawiki:preprocess-xml:7fe95f7f28154f8e400fbb8672fd2edf:0)`

`[Preprocessor] Loaded preprocessor output from cache (key: mediawiki:preprocess-xml:9c321fe2436753d00ac504d489691818:1)`

`[Preprocessor] Loaded preprocessor output from cache (key: mediawiki:preprocess-xml:f31132723f57e1dd3201135c452d5c73:1)`

`[Preprocessor] Loaded preprocessor output from cache (key: mediawiki:preprocess-xml:acbe882187d4d79d0d331c0fcb7a33f8:1)`

`[Preprocessor] Loaded preprocessor output from cache (key: mediawiki:preprocess-xml:b5dc157e711c29071dcf2873a5e1099b:1)`

`[Preprocessor] Loaded preprocessor output from cache (key: mediawiki:preprocess-xml:832771b250011b90650e286801462dad:1)`

`[Math] Start rendering ${\displaystyle \mathcal{F}[\mathbf{m}] = \mathbf{d}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathcal{F}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathcal{F}[\mathbf{m}] = \mathbf{G}\mathbf{m} = \mathbf{d}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathcal{F}[\mathbf{m}] = \mathbf{d}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \sigma}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathcal{F}[\mathbf{m}]}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \vec{E}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \vec{H}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \nabla \times \vec{E} + i\omega\mu\vec{H}= 0}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \nabla \times \vec{H} + \sigma\vec{E}= 0}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \text{with boundary conditions}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mu}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mu_0}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \omega = 2 \pi f}$ in mode mathml`

`[Math] Start rendering ${\displaystyle f}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{A}(\mathbf{m})\mathbf{u} = \mathbf{b}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle Z_{xy}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle Z_{xy} = -\frac{E_x}{H_y}.}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \rho = 1 / \sigma}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \rho_\mathrm{a}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \psi}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \rho_\mathrm{a} = \frac{1}{\mu_0\omega} \big|Z_{xy}\big|^2,`

\quad

\psi = \tan^{-1}\left(\frac{\text{Im}(Z_{xy})}{\text{Re}(Z_{xy})}\right).

}$ in mode mathml`[Math] Start rendering ${\displaystyle (\mathcal{F}[\mathbf{m}] = \mathbf{d}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathcal{F}^{-1}[\mathbf{d}]}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \sigma}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \rho_a}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \phi}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \phi_{\text{m}}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \underset{\mathbf{m}}{\text{minimize}} \quad \phi_\text{m}(\mathbf{m})}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \text{subject to }\quad \mathcal{F}[\mathbf{m}] = \mathbf{d}_{\text{obs}}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \phi_\text{m}(\mathbf{m})}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{d}_{\text{obs}}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \underset{\mathbf{m}}{\text{minimize}} \quad \phi(\mathbf{m}) = \phi_\mathrm{d}(\mathbf{m}) + \beta\phi_\mathrm{m}(\mathbf{m})}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \phi_d(\mathbf{m})}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \phi_m(\mathbf{m})}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \ell_2}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \phi_d(\mathbf{m}) = \frac{1}{2}\|\mathbf{W_d} (\mathcal{F}(\mathbf{m}) - \mathbf{d}_{\text{obs}})\|^2_2}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{W_d}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \ell_2}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \phi_m(\mathbf{m}) = \frac{1}{2}\big(\alpha_\mathrm{s}\|\mathbf{W_\mathrm{s}} (\mathbf{m} - \mathbf{m}_{\text{ref}})\|^2_2 + \alpha_\mathrm{z}\|\mathbf{W_\mathrm{z}} (\mathbf{m})\|^2_2 \big)}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \ell_2}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{W_\mathrm{s}}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_s}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{m}_{\text{ref}}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{W_\mathrm{z}}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_\mathrm{z}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{W_\mathrm{d}}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{m}_{\text{ref}}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_\mathrm{s}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_\mathrm{z}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_\mathrm{s}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_\mathrm{z}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{\log(\sigma)}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{m}_0}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{m}_0}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle N_\text{data}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \phi_\mathrm{d}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \phi_\mathrm{d}^* \approx \frac{1}{2} N_\text{data}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_\mathrm{s} = 10^{-2}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_\mathrm{z} = 1}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{m}_{\text{ref}} = 10^{-2} S/m}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \mathbf{m}_0 = \mathbf{m}_{\text{ref}}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_s}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_z}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_s = 10^{-5}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_z = 1}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_s = 1}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_z = 10^{-5}}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \beta}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_s}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \alpha_z}$ in mode mathml`

`[Math] Start rendering ${\displaystyle \ell_1}$ in mode mathml`

`[Preprocessor] Cached preprocessor output (key: mediawiki:preprocess-xml:019947b8d3cd3049cd393644e097296c:0)`

`[Preprocessor] Loaded preprocessor output from cache (key: mediawiki:preprocess-xml:019947b8d3cd3049cd393644e097296c:0)`

`[Preprocessor] Loaded preprocessor output from cache (key: mediawiki:preprocess-xml:08fc4d88684fb723724974ed77c765c0:1)`

`[error] [386805b5693ba5c9c1ade7d4] /wiki/Exploring_nonlinear_inversions:_A_1D_magnetotelluric_example ErrorException from line 206 of /var/www/html/mediawiki/includes/MagicWordArray.php: PHP Deprecated: The each() function is deprecated. This message will be suppressed on further calls`

`[Mime] MimeAnalyzer::loadFiles: loading mime types from /var/www/html/mediawiki/includes/libs/mime/mime.types`

`[Mime] MimeAnalyzer::loadFiles: loading mime info from /var/www/html/mediawiki/includes/libs/mime/mime.info`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/c/c8/Ambox_notice.png/40px-Ambox_notice.png`

`TransformationalImageHandler::doTransform: creating 40x40 thumbnail at mwstore://local-backend/local-thumb/c/c8/Ambox_notice.png/40px-Ambox_notice.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/c/c8/Ambox_notice.png/60px-Ambox_notice.png`

`TransformationalImageHandler::doTransform: creating 60x60 thumbnail at mwstore://local-backend/local-thumb/c/c8/Ambox_notice.png/60px-Ambox_notice.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/c/c8/Ambox_notice.png/80px-Ambox_notice.png`

`TransformationalImageHandler::doTransform: creating 80x80 thumbnail at mwstore://local-backend/local-thumb/c/c8/Ambox_notice.png/80px-Ambox_notice.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/f/f8/Tle36080696.1_fig1.gif/450px-Tle36080696.1_fig1.gif`

`[FileOperation] FileBackendStore::getFileStat: File mwstore://local-backend/local-thumb/f/f8/Tle36080696.1_fig1.gif/450px-Tle36080696.1_fig1.gif does not exist.`

`TransformationalImageHandler::doTransform: creating 450x433 thumbnail at /tmp/transform_2c7c05eb6b32.gif using scaler im`

`TransformationalImageHandler::doTransform: called wfMkdirParents(/tmp)`

`BitmapHandler::transformImageMagick: running ImageMagick: '/usr/bin/convert' '-background' 'white' '/var/www/html/mediawiki/images/f/f8/Tle36080696.1_fig1.gif' '-thumbnail' '450x433!' '-set' 'comment' 'File source: http://wikidev.seg.org/wiki/File:Tle36080696.1_fig1.gif' '+set' 'Thumb::URI' '-depth' '8' '-rotate' '-0' '/tmp/transform_2c7c05eb6b32.gif'`

`MediaWiki\Shell\Command::execute: /bin/bash '/var/www/html/mediawiki/includes/shell/limit.sh' 'OMP_NUM_THREADS='\''1'\'' '\''/usr/bin/convert'\'' '\''-background'\'' '\''white'\'' '\''/var/www/html/mediawiki/images/f/f8/Tle36080696.1_fig1.gif'\'' '\''-thumbnail'\'' '\''450x433!'\'' '\''-set'\'' '\''comment'\'' '\''File source: http://wikidev.seg.org/wiki/File:Tle36080696.1_fig1.gif'\'' '\''+set'\'' '\''Thumb::URI'\'' '\''-depth'\'' '\''8'\'' '\''-rotate'\'' '\''-0'\'' '\''/tmp/transform_2c7c05eb6b32.gif'\''' 'MW_INCLUDE_STDERR=1;MW_CPU_LIMIT=180; MW_CGROUP='\'''\''; MW_MEM_LIMIT=307200; MW_FILE_SIZE_LIMIT=102400; MW_WALL_CLOCK_LIMIT=180; MW_USE_LOG_PIPE=yes'`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/f/f8/Tle36080696.1_fig1.gif/500px-Tle36080696.1_fig1.gif`

`[FileOperation] FileBackendStore::getFileStat: File mwstore://local-backend/local-thumb/f/f8/Tle36080696.1_fig1.gif/500px-Tle36080696.1_fig1.gif does not exist.`

`TransformationalImageHandler::doTransform: creating 500x481 thumbnail at /tmp/transform_684e982fed08.gif using scaler im`

`TransformationalImageHandler::doTransform: returning unscaled image`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/f/f8/Tle36080696.1_fig1.gif/500px-Tle36080696.1_fig1.gif`

`TransformationalImageHandler::doTransform: creating 500x481 thumbnail at /tmp/transform_8ca8397664e4.gif using scaler im`

`TransformationalImageHandler::doTransform: returning unscaled image`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/a/a4/Tle36080696.1_fig2.gif/450px-Tle36080696.1_fig2.gif`

`[FileOperation] FileBackendStore::getFileStat: File mwstore://local-backend/local-thumb/a/a4/Tle36080696.1_fig2.gif/450px-Tle36080696.1_fig2.gif does not exist.`

`TransformationalImageHandler::doTransform: creating 450x200 thumbnail at /tmp/transform_0e9de0276482.gif using scaler im`

`TransformationalImageHandler::doTransform: called wfMkdirParents(/tmp)`

`BitmapHandler::transformImageMagick: running ImageMagick: '/usr/bin/convert' '-background' 'white' '/var/www/html/mediawiki/images/a/a4/Tle36080696.1_fig2.gif' '-thumbnail' '450x200!' '-set' 'comment' 'File source: http://wikidev.seg.org/wiki/File:Tle36080696.1_fig2.gif' '+set' 'Thumb::URI' '-depth' '8' '-rotate' '-0' '/tmp/transform_0e9de0276482.gif'`

`MediaWiki\Shell\Command::execute: /bin/bash '/var/www/html/mediawiki/includes/shell/limit.sh' 'OMP_NUM_THREADS='\''1'\'' '\''/usr/bin/convert'\'' '\''-background'\'' '\''white'\'' '\''/var/www/html/mediawiki/images/a/a4/Tle36080696.1_fig2.gif'\'' '\''-thumbnail'\'' '\''450x200!'\'' '\''-set'\'' '\''comment'\'' '\''File source: http://wikidev.seg.org/wiki/File:Tle36080696.1_fig2.gif'\'' '\''+set'\'' '\''Thumb::URI'\'' '\''-depth'\'' '\''8'\'' '\''-rotate'\'' '\''-0'\'' '\''/tmp/transform_0e9de0276482.gif'\''' 'MW_INCLUDE_STDERR=1;MW_CPU_LIMIT=180; MW_CGROUP='\'''\''; MW_MEM_LIMIT=307200; MW_FILE_SIZE_LIMIT=102400; MW_WALL_CLOCK_LIMIT=180; MW_USE_LOG_PIPE=yes'`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/a/a4/Tle36080696.1_fig2.gif/500px-Tle36080696.1_fig2.gif`

`[FileOperation] FileBackendStore::getFileStat: File mwstore://local-backend/local-thumb/a/a4/Tle36080696.1_fig2.gif/500px-Tle36080696.1_fig2.gif does not exist.`

`TransformationalImageHandler::doTransform: creating 500x222 thumbnail at /tmp/transform_8c1285358aac.gif using scaler im`

`TransformationalImageHandler::doTransform: returning unscaled image`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/a/a4/Tle36080696.1_fig2.gif/500px-Tle36080696.1_fig2.gif`

`TransformationalImageHandler::doTransform: creating 500x222 thumbnail at /tmp/transform_ebb699630185.gif using scaler im`

`TransformationalImageHandler::doTransform: returning unscaled image`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/f/f8/Tle36080696.1_fig3.gif/450px-Tle36080696.1_fig3.gif`

`[FileOperation] FileBackendStore::getFileStat: File mwstore://local-backend/local-thumb/f/f8/Tle36080696.1_fig3.gif/450px-Tle36080696.1_fig3.gif does not exist.`

`TransformationalImageHandler::doTransform: creating 450x178 thumbnail at /tmp/transform_87a06a46c13f.gif using scaler im`

`TransformationalImageHandler::doTransform: called wfMkdirParents(/tmp)`

`BitmapHandler::transformImageMagick: running ImageMagick: '/usr/bin/convert' '-background' 'white' '/var/www/html/mediawiki/images/f/f8/Tle36080696.1_fig3.gif' '-thumbnail' '450x178!' '-set' 'comment' 'File source: http://wikidev.seg.org/wiki/File:Tle36080696.1_fig3.gif' '+set' 'Thumb::URI' '-depth' '8' '-rotate' '-0' '/tmp/transform_87a06a46c13f.gif'`

`MediaWiki\Shell\Command::execute: /bin/bash '/var/www/html/mediawiki/includes/shell/limit.sh' 'OMP_NUM_THREADS='\''1'\'' '\''/usr/bin/convert'\'' '\''-background'\'' '\''white'\'' '\''/var/www/html/mediawiki/images/f/f8/Tle36080696.1_fig3.gif'\'' '\''-thumbnail'\'' '\''450x178!'\'' '\''-set'\'' '\''comment'\'' '\''File source: http://wikidev.seg.org/wiki/File:Tle36080696.1_fig3.gif'\'' '\''+set'\'' '\''Thumb::URI'\'' '\''-depth'\'' '\''8'\'' '\''-rotate'\'' '\''-0'\'' '\''/tmp/transform_87a06a46c13f.gif'\''' 'MW_INCLUDE_STDERR=1;MW_CPU_LIMIT=180; MW_CGROUP='\'''\''; MW_MEM_LIMIT=307200; MW_FILE_SIZE_LIMIT=102400; MW_WALL_CLOCK_LIMIT=180; MW_USE_LOG_PIPE=yes'`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/f/f8/Tle36080696.1_fig3.gif/500px-Tle36080696.1_fig3.gif`

`[FileOperation] FileBackendStore::getFileStat: File mwstore://local-backend/local-thumb/f/f8/Tle36080696.1_fig3.gif/500px-Tle36080696.1_fig3.gif does not exist.`

`TransformationalImageHandler::doTransform: creating 500x198 thumbnail at /tmp/transform_52a01a16e7af.gif using scaler im`

`TransformationalImageHandler::doTransform: returning unscaled image`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/f/f8/Tle36080696.1_fig3.gif/500px-Tle36080696.1_fig3.gif`

`TransformationalImageHandler::doTransform: creating 500x198 thumbnail at /tmp/transform_660cab4198f9.gif using scaler im`

`TransformationalImageHandler::doTransform: returning unscaled image`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/9/99/At_sign.gif/12px-At_sign.gif`

`[FileOperation] FileBackendStore::getFileStat: File mwstore://local-backend/local-thumb/9/99/At_sign.gif/12px-At_sign.gif does not exist.`

`TransformationalImageHandler::doTransform: creating 12x12 thumbnail at /tmp/transform_a9af84714b9a.gif using scaler im`

`TransformationalImageHandler::doTransform: returning unscaled image`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/9/99/At_sign.gif/12px-At_sign.gif`

`TransformationalImageHandler::doTransform: creating 12x12 thumbnail at /tmp/transform_dd5a010a2882.gif using scaler im`

`TransformationalImageHandler::doTransform: returning unscaled image`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/9/99/At_sign.gif/12px-At_sign.gif`

`TransformationalImageHandler::doTransform: creating 12x12 thumbnail at /tmp/transform_3ad9441d8b11.gif using scaler im`

`TransformationalImageHandler::doTransform: returning unscaled image`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/0/09/SEG_button_search.png/48px-SEG_button_search.png`

`TransformationalImageHandler::doTransform: creating 48x48 thumbnail at mwstore://local-backend/local-thumb/0/09/SEG_button_search.png/48px-SEG_button_search.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/0/09/SEG_button_search.png/72px-SEG_button_search.png`

`TransformationalImageHandler::doTransform: creating 72x72 thumbnail at mwstore://local-backend/local-thumb/0/09/SEG_button_search.png/72px-SEG_button_search.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/0/09/SEG_button_search.png/96px-SEG_button_search.png`

`TransformationalImageHandler::doTransform: creating 96x96 thumbnail at mwstore://local-backend/local-thumb/0/09/SEG_button_search.png/96px-SEG_button_search.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/1/19/Datapages_button.png/48px-Datapages_button.png`

`TransformationalImageHandler::doTransform: creating 48x48 thumbnail at mwstore://local-backend/local-thumb/1/19/Datapages_button.png/48px-Datapages_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/1/19/Datapages_button.png/72px-Datapages_button.png`

`TransformationalImageHandler::doTransform: creating 72x72 thumbnail at mwstore://local-backend/local-thumb/1/19/Datapages_button.png/72px-Datapages_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/1/19/Datapages_button.png/96px-Datapages_button.png`

`TransformationalImageHandler::doTransform: creating 96x96 thumbnail at mwstore://local-backend/local-thumb/1/19/Datapages_button.png/96px-Datapages_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/7/7d/GeoScienceWorld_button.png/48px-GeoScienceWorld_button.png`

`TransformationalImageHandler::doTransform: creating 48x48 thumbnail at mwstore://local-backend/local-thumb/7/7d/GeoScienceWorld_button.png/48px-GeoScienceWorld_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/7/7d/GeoScienceWorld_button.png/72px-GeoScienceWorld_button.png`

`TransformationalImageHandler::doTransform: creating 72x72 thumbnail at mwstore://local-backend/local-thumb/7/7d/GeoScienceWorld_button.png/72px-GeoScienceWorld_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/7/7d/GeoScienceWorld_button.png/96px-GeoScienceWorld_button.png`

`TransformationalImageHandler::doTransform: creating 96x96 thumbnail at mwstore://local-backend/local-thumb/7/7d/GeoScienceWorld_button.png/96px-GeoScienceWorld_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/0/00/OnePetro_button.png/48px-OnePetro_button.png`

`TransformationalImageHandler::doTransform: creating 48x48 thumbnail at mwstore://local-backend/local-thumb/0/00/OnePetro_button.png/48px-OnePetro_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/0/00/OnePetro_button.png/72px-OnePetro_button.png`

`TransformationalImageHandler::doTransform: creating 72x72 thumbnail at mwstore://local-backend/local-thumb/0/00/OnePetro_button.png/72px-OnePetro_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/0/00/OnePetro_button.png/96px-OnePetro_button.png`

`TransformationalImageHandler::doTransform: creating 96x96 thumbnail at mwstore://local-backend/local-thumb/0/00/OnePetro_button.png/96px-OnePetro_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/a/a1/Schlumberger_button.png/48px-Schlumberger_button.png`

`TransformationalImageHandler::doTransform: creating 48x48 thumbnail at mwstore://local-backend/local-thumb/a/a1/Schlumberger_button.png/48px-Schlumberger_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/a/a1/Schlumberger_button.png/72px-Schlumberger_button.png`

`TransformationalImageHandler::doTransform: creating 72x72 thumbnail at mwstore://local-backend/local-thumb/a/a1/Schlumberger_button.png/72px-Schlumberger_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/a/a1/Schlumberger_button.png/96px-Schlumberger_button.png`

`TransformationalImageHandler::doTransform: creating 96x96 thumbnail at mwstore://local-backend/local-thumb/a/a1/Schlumberger_button.png/96px-Schlumberger_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5c/Google_button.png/48px-Google_button.png`

`TransformationalImageHandler::doTransform: creating 48x48 thumbnail at mwstore://local-backend/local-thumb/5/5c/Google_button.png/48px-Google_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5c/Google_button.png/72px-Google_button.png`

`TransformationalImageHandler::doTransform: creating 72x72 thumbnail at mwstore://local-backend/local-thumb/5/5c/Google_button.png/72px-Google_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/5/5c/Google_button.png/96px-Google_button.png`

`TransformationalImageHandler::doTransform: creating 96x96 thumbnail at mwstore://local-backend/local-thumb/5/5c/Google_button.png/96px-Google_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/f/f9/AGI_button.png/48px-AGI_button.png`

`TransformationalImageHandler::doTransform: creating 48x48 thumbnail at mwstore://local-backend/local-thumb/f/f9/AGI_button.png/48px-AGI_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/f/f9/AGI_button.png/72px-AGI_button.png`

`TransformationalImageHandler::doTransform: creating 72x72 thumbnail at mwstore://local-backend/local-thumb/f/f9/AGI_button.png/72px-AGI_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`File::transform: Doing stat for mwstore://local-backend/local-thumb/f/f9/AGI_button.png/96px-AGI_button.png`

`TransformationalImageHandler::doTransform: creating 96x96 thumbnail at mwstore://local-backend/local-thumb/f/f9/AGI_button.png/96px-AGI_button.png using scaler im`

`TransformationalImageHandler::doTransform: Transforming later per flags.`

`[Preprocessor] Loaded preprocessor output from cache (key: mediawiki:preprocess-xml:7fe95f7f28154f8e400fbb8672fd2edf:0)`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`[Math] Rendering successful. Writing output`

`[Math] Writing of cache requested.`

`[Math] Nothing was changed. Don't write to database.`

`Title::getRestrictionTypes: applicable restrictions to [[Exploring nonlinear inversions: A 1D magnetotelluric example]] are {edit,move}`

`[Math] New cache key: canonical!math=5`

`Saved in parser cache with key mediawiki:pcache:idhash:36289-0!canonical!math=5 and timestamp 20180620071123 and revision id 72123`

`MediaWiki::preOutputCommit: primary transaction round committed`

`MediaWiki::preOutputCommit: pre-send deferred updates completed`

`MediaWiki::preOutputCommit: LBFactory shutdown completed`

`Title::getRestrictionTypes: applicable restrictions to [[Exploring nonlinear inversions: A 1D magnetotelluric example]] are {edit,move}`

`User::getBlockedStatus: checking...`