Direct-Current and Induced Polarization (DC-IP) 3D Inversion¶
This application provides an interface to the open-source SimPEG package for the inversion of direct-current (DC) and induced polarization (IP) data.
Direct-current potential data (V) inversion for the recovery of conductivity (S/m).
Secondary potentials data (V) for the recovery of chargeability (mV/V).
All inversion 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.electricals.application import InversionApp
app = InversionApp(geoh5=r"../../../assets/FlinFlon_dcip.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 PotentialElectrode
surveys available in the target geoh5 that contains data to be inverted.
[3]:
app.objects
Inversion Type¶
List of available inversion types.
direct current: Invert potential (volt) data data for the recovery of conductivity (S/m).
[4]:
app.survey_type_panel
Data Channel Options¶
Define the geophysical data to be inverted.
[5]:
app.data_channel_choices
Channel Options¶
Set parameters to invividual channels.
[6]:
app.data_channel_choices.data_channel_options['potential']
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¶
Optionaly, 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.
[7]:
app.window_selection
See the Map View Selection page for more details.
Spatial information¶
Topography¶
Set the air/ground interface of the inversion model.
[8]:
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.
[9]:
app.sensor()
Set Z from topo + offset¶
Recommended option for most surface surveys to enforce contact of the electrodes with the active ground cells. Only consider unselecting for borehole measurements.
Constant offsets (dx, dy, dz)¶
Sensor position shifted by a constant offset from the vertices of the selected object.
dx: East(+) or West(-) offset.
dy: North(+) or South(-) offset
dz: Up(+) or Down(-) offset
Inversion Options¶
List of parameters controlling the inversion.
[10]:
app.option_choices
Starting Model¶
Initial model used to begin the inversion.
[11]:
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.
Regularization Panel¶
Parameters controlling the regularization function.
[13]:
app.inversion_options['regularization']
Reference model¶
Reference model values used to constrain the inversion.
[14]:
app._reference_model_group()
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¶
[15]:
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.
[16]:
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.
[17]:
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.
Ignore Values¶
[18]:
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.
[19]:
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¶
[20]:
app.ga_group_name
Name given to the inversion group added to the Geoscience ANALYST project.
Working directory¶
[21]:
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¶
[22]:
app.write
Click to write the input parameters to a *.json
file and a workspace (.geoh5) with all required entities.
Run Inversion:¶
[23]:
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
.