Gravity and Magnetic 3D Inversion

a4cf17e668bf434f88093670b285091d

This application provides an interface to the open-source SimPEG package for the inversion of gravity and magnetic data (fields and tensor components). The application handles:

  • Gravity inversion for the recovery of residual density (g/cc).

  • Scalar magnetic inversion (MAG) for the recovery of susceptibility (SI).

  • Vector magnetic inversion (MVI) for the recovery of 3-component magnetization (effective susceptibility and angles).

All inversions are performed on a 3D octree mesh.

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.potential_fields.application import InversionApp

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

Project Selection

Select and connect to an existing geoh5 project file containing data

OR

Select a *.ui.json input file to re-load parameters from. See the Input ui.json section for details.

[2]:
app.project_panel

See the Project Panel page for more details.

[ ]:

Survey Selection

Object

List of objects available containing geophysical data to be inverted. Currently supports objects of type Points, Curve, Surface and Grid2D.

[3]:
app.objects

Inversion Type

List of available inversion types.

  • gravity: Invert bouguer corrected (mGal) or tensor (Etvos) data for the recovery of residual density (g/cc).

  • magnetic scalar: Invert magnetic data for the recovery of scalar susceptibility (SI).

  • magnetic vector: Invert magnetic data for the recovery of 3-component magnetization (effective susceptibility + angles).

[4]:
app.survey_type_panel

Inducing field parameters

For magnetic data only, set the inducing field parameters:

Data Channel Options

Define the geophysical data to be inverted.

Channel Options

Set parameters to invividual channels.

[5]:
app.data_channel_choices.data_channel_options['tmi']

Active

Checked if the channel is to be used in the inversion

Channel:

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

Uncertainty floor

Estimated data uncertainty floor (constant) value associated with the data channel.

Uncertainty channel

Optionally, use a data channel to assign point-based uncertainties. Uncertainty floor value is ignored if a channel of uncertainties is selected.

Window Selection

Manual selection of an area of interest and data resolution.

[6]:
app.window_selection

See the Map View Selection page for more details.

Spatial information

Topography

Set the air/ground interface of the inversion model.

[7]:
app.topography_group()

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).

[8]:
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 systems 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.

[9]:
app.option_choices

Starting Model

Initial model used to begin the inversion.

[10]:
app._starting_model_group()

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.

Mesh

Select an existing Octree mesh object from the target geoh5.

[11]:
app._mesh_octree.objects

Regularization Panel

Parameters controlling the regularization function.

[12]:
app.inversion_options['regularization']

Reference model

Reference model values used to constrain the inversion.

[13]:
app._reference_model_group()

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.

Scaling (alpha) parameters

[14]:
app._alphas

Scaling between the components of the regularization function.

See the SimPEG.API for technical details.

\(l_p\)-norms

Approximated norms applied to the components of the regularization.

[15]:
app._norms

See notes on Sparse and Blocky Norms for technical details.

Upper-Lower Bounds

Upper and lower bound constraints applied on physical property model.

[16]:
app.bound_panel

Bounds can be defined as either: - Model: Values defined on a cell-by-cell basis. The values are projected onto the inversion mesh using a nearest neighour interpolation. - Constant: Constant value defining the bounds. - None: The inversion uses [\(-\infty\), \(\infty\)] as physical property bounds.

Detrend (optional)

Remove a polynomial trend from the selected data channels.

[17]:
app.workspace

[17]:
<geoh5py.workspace.workspace.Workspace at 0x19ce3413df0>
[19]:
app._detrend_panel

Order

Order [0, 1 or 2] of the polynomial defining the trend. The 0th order trend corresponds to removing the mean value.

Method

  • all: Use all data points to compute the trend

  • perimeter: Use only the edge points to compute the trend.

Ignore Values

[20]:
app.ignore_values

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

Optimization

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

[21]:
app.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 documentation on Data Misfit and Uncertainties for mathematical details)

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.

Storage device

Option to store the sensitivities in memory (RAM) or in chunks on a solid-state drive (disk). The RAM execution will be faster but limits the problem size to the available memory. The disk option will be slower as it depends on the read-write speed of the SSD, but the memory requirement is reduced (2-3 times the chunk size times the number of threads). This option permits much larger inversions than the amount RAM available on a machine.

Number of tiles

Number of data tiles used by the mesh decoupling algorithm. Nested sensitivities for each data blocks are interpolated to the global inversion mesh with a volumetric weighted averaging scheme.

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.

Input ui.json

This application relies on a structured json file to store the parameters and run the program. The ui.json can be used to re-load the parameters from a previous run by selecting the ui.json file from the Project Selection widget, instead of a geoh5 file.

Command line execution

The same input ui.json file can be used to run the program from command line:

activate geoapps
python -m geoapps.inversion.driver [Name].ui.json

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

Geoscience ANALYST Pro v3.4

Geoscience ANALYST Pro users (v3.4) can execute this application directly from an active session with a drag & drop of a *.ui.json file to the Viewport.

../../_images/GA_pro_grav_mag_inversion.gif