EM (Time/Frequency) 1D Inversion

7784ba162ae74f5f9a06e74fa26ad0ab

This application provides an interface to the open-source SimPEG package for the inversion of electromagnetic (EM) data using a Laterally Constrained 1D approach. The application supports several known EM systems, for both frequency and time-domain.

New user? Visit the Getting Started page.

Application

The following sections provide details on the different parameters controlling the application. Interactive widgets shown below are for demonstration purposes only.

[1]:
from geoapps.inversion.airborne_electromagnetics.application import InversionApp

app = InversionApp(h5file=r"../../../assets/FlinFlon.geoh5")
app()

Project Selection

Select and connect to an existing geoh5 project file containing data.

[2]:
app.project_panel

See the Project Panel page for more details.

Object/Data Selection

List of objects available containing geophysical data to be inverted. Currently supports objects of type Points, Curve, Surface and Grid2D. Multiple data channels and/or data groups can be selected.

[3]:
app.data_panel

Geophysical System

List of known EM systems with pre-recorded parameters (frequencies/times, offsets, uncertainties, waveform, etc.).

Note: Users can add custom systems by appending to the configuration file: geoapps/utils/geophysical_systems.py

[4]:
app.system

The application will attempt to assign the correct system based on known data field name (e.g. CPI => DIGHEM).

Window Selection

Manual selection of an area of interest and data resolution.

[5]:
app.window_selection

See the Map View Selection page for more details.

Input Data

Channel Options

Set parameters to invividual Data channels.

[6]:
app.data_channel_choices.data_channel_options['CPI900']

Active

Checked if the channel is to be used in the inversion.

Frequency/Time

Specify the frequency (Hz) or time (s) of the given channel.

Data channel:

Association between the “data channel” and one of the expected “system channel”.

Error (%, floor)

Estimated data uncertainties associated with the data channel, expressed as a percent (decimal) and floor value.

As an example for magnetic data: 0.1, 1 => \(0.1 * |d_{tmi}| + 1\;nT\)

Offsets (EM systems)

Determine the constant offsets, in meters, between the receiver and the transmitter center location.

Note: Users can edit the default parameters by modifying the configuration file: geoapps/utils/geophysical_systems.py

Line ID

[7]:
app.lines()

Set the field defining the line IDs to be inverted. At least one line must be selected. The selection will be highlighted in the Window Selection panel.

Spatial information

Topography

Set the air/ground interface of the inversion model.

[8]:
app.topography()

Object

Set the topography based on an object stored in the target geoh5 project. The Z value of the cells/vertices can be assigned based on a chosen Data field.

Relative to Sensor

Topography is defined by a fixed vertical offset from a selected object position (vertices or centroids), also referred to as a “draped height”.

Constant

Topography is defined as a flat surface with constant elevation.

Sensor Location

Defines the sensors position in 3D space. The vertical position can be referenced to: - sensor location: Use the target object vertices or centroids z-locations - topo + radar: Interpolate the topography to set the elevation. Typically used for gridded data with constant draped height or for airborne survey with inaccurate GPS elevation (see radar channel).

[9]:
app.sensor()

Constant offsets (dx, dy, dz)

Sensor position shifted by a constant offset from the vertices of the selected object. Typically used for towed system where the GPS receiver is on the aircraft.

  • dx: East(+) or West(-) offset.

  • dy: North(+) or South(-) offset

  • dz: Up(+) or Down(-) offset

Radar channel (optional)

Channel defining the ground clearance (radar) of each data point.

Inversion Options

List of parameters controlling the inversion.

[10]:
app.inversion_parameters.main

Output Name

Name given to the inversion group added to the Geoscience ANALYST project.

Target Misfit

Target data misfit where 1 = number of data

[11]:
app.inversion_parameters.chi_factor

Uncertainty mode (optional)

Global change to the data uncertainties based on the forward simulation of the starting (background) model.

[12]:
app.inversion_parameters.uncert_mode

Estimated Floor uncertainties re-assgined based on the best-fitting halfspace model. Useful when dealing with fast time domain decays due to IP effects.

User Input (Default) Keep the same uncertainties as defined in the Channel Options

Starting Model

Initial model used to begin the inversion.

[13]:
app.inversion_parameters.starting_model.main

Model

Model object and values selected from any Points, Curve, Surface, BlockModel or Octree object. Values are interpolated onto the inversion mesh using a nearest neighbor approach.

Constant

Constant background half-space value.

Susceptibility model

(Frequency EM only)

Susceptibility values used in the forward calculations only.

[14]:
app.inversion_parameters.susceptibility_model.main

None

No susceptibility model used.

Model

Susceptibitlity model selected from any Points, Curve, Surface, BlockModel or Octree object. Values are interpolated onto the inversion mesh using a nearest neighbor approach.

Constant

Constant susceptibility half-space value.

Regularization

See the Regularization Panel section.

Upper-Lower Bounds

Upper and lower bound constraints applied on physical property model.

[15]:
app.inversion_parameters.bound_panel

If left empty, the inversion uses [\(-\infty\), \(\infty\)] physical property bounds.

Ignore Values

Data

Flag value ignored by the inversion by assigning \(\infty\) uncertainties on the data points.

[16]:
app.inversion_parameters.ignore_values

Optimization

Parameters controlling various aspects of the projected Gauss-Newton inversion algorithm.

[17]:
app.inversion_parameters.optimization

Max beta Iterations

Maximum number of \(\beta\)-iterations allowed. Note that when applying sparse norms, the inversion may require \(>20\) iterations to converge.

Target misfit

Target data misfit where \(\chi=1\) corresponds to \(\phi_d=N\) (number of data). (See Data Misfit and Uncertainties)

Starting trade-off (\(\beta\))

ratio: Factor multiplying the initial \(\beta\) defined by the ratio between the initial misfit and regularization:

\begin{equation} \beta_0 = \gamma * \frac{\phi_d}{ \phi_m} \end{equation}

value: Fixed \(\beta\) value specified by the user.

Max CG Iterations

Maximum number of Conjugate Gradient (CG) iterations per Gauss-Newton solve.

CG Tolerance

Threshold on the minimum Conjugate Gradient (CG) step to end the Gauss-Newton solve.

Max CPUs

Maximum number of threads used for the parallelization. Defaults to half the system thread count.

Max RAM (Gb)

Approximate memory (RAM) used during the inversion. The value is used to calculate the chunk size for the storage of the sensitivity matrix on a solid-state drive. (See dask.array.to_zarr)

Regularization Panel

Parameters controlling the regularization function.

Reference model

Reference model values used to constrain the inversion.

[18]:
app.inversion_parameters.reference_model.main

None

No reference model used. This is equivalent as setting the Alphas s parameter to zero.

Model

Reference model selected from any Points, Curve, Surface, BlockModel or Octree object. Values are interpolated onto the inversion mesh using a nearest neighbor approach.

Constant

Constant reference half-space value.

Best-fitting halfspace

Run a preliminary inversion to determine a best-fitting halfspace (single conductivity value) at each data station.

Alpha Parameters

Scaling between the components of the regularization function.

[19]:
app.inversion_parameters.alphas

See the SimPEG.API for technical details.

\(l_p\)-norms

Approximated norms applied to the components of the regularization.

[20]:
app.inversion_parameters.norms

See notes on Sparse and Blocky Norms for technical details.

Mesh

Define the 1D layer mesh. The same mesh is copied below each transmitter/receiver pairs. For the laterally constrained 1D inversion, neighboring layer meshes are connected by the regularization function.

[21]:
app.mesh_1D.main

Smallest cell (m)

Smallest layer at the top of the 1D mesh.

Expansion factor

Rate of cell expansion from the smallest cell size.

Number of cells

Total number of layers below each station.

Max depth

Returns the full depth of the 1D mesh given the parameters selected above.

Output panel

Setup the inversion and launch the process.

Output Name

[22]:
app.ga_group_name

Name given to the inversion group added to the Geoscience ANALYST project.

Working directory

[23]:
app.export_directory

Specify the working directory where the inversion occurs.

It is highly recommended to chose a location on a solid-state drive (SSD) to fully take advantage of the ``Dask`` parallelization.

Write input

[24]:
app.write

Click to write the input parameters to a *.json file and a workspace (.geoh5) with all required entities.

Run Inversion:

[25]:
app.trigger

Launch the inversion routine. Results will be written directly to the target geoh5 project.

Write input: Click to write the input parameters to a *.json file

Run SimPEG: Launch the inversion routine. Results will be written directly to the target geoh5 project.

Command line execution

Alternatively, the inversion can be launched on a different computer from command line:

activate geoapps

python -m geoapps.drivers.em1d_inversion [Name].json

This assumes that the geoapps have been installed and that the reference *.json and *.geoh5 project are accessible.