One of the goals of RING is to invent, design and develop game changing methods to reconcile earth processes and field observations within a stochastic and multiscale workflow. The corresponding software not only serve as proofs of concept to support publications, but also can be used and industrialized by the RING Consortium members.


LUMOS is a trianglar and tetrahedral remeshing library which aims at enabling the robust insertion of implicit geological surfaces into existing geological models. This serves two purposes:

  • Incremental geological model building,
  • Modeling of topological and large geometric uncertainties in geomodeling.

LUMOS was primarily developed by Capucine Legentil. this C++ / Python library is built on top of mmg.

SIGMA (Seismic Imaging for Geomodel Analysis) is a collection of programs to close the loop between seismic imaging/modeling on the one hand, and seismic interpretation and structural modeling on the other hand. The long term goal of the library is to develop tools needed for reducing structural uncertainties by waveform inversion...

OM-MADE is an open-source progam written in Python v3. It is designed to simulate one-dimensional solute transport in multiple exchanging conduits and storage zones.

Karstnet is an open-source python3 project providing tools for the statistical analysis of karstic networks.

Magnetostratigraphic correlation is generally a manual task. The Cupydon software allows you to automatically correlate your mag section to the reference scale. The main benefit is not so much the gain in time but the possibility to look at a large number of likely correlations depending on the length of your section and on the variations of the sedimentation rate.

Uncertainty Visualizer is a stand-alone application dedicated to uncertainty visualization, developed by Thomas Viard. It features two different methods, which respectively map uncertainty to the intensity of a 'fabric' texture pattern or to the blending ratio between a sharp and a blurred display of the model. Input data should be provided as grid slices given in the GSLIB format.
Uncertainty Visualizer reproduces the basic behavior of the UncertaintyViewer Gocad plugin. The Gocad plugin (accessible to sponsors) has much more features for the uncertainty displays on corner-point reservoir grids.


Transdimensional inversion of flow data (TIFlow) is a library to perform transdimensional inversions in history matching problems. In contrast to Bayesian sequential modelling in which permeability values are inferred in a fixed reservoir geometry, TIFlow allows transdimensional Monte Carlo methods based on a reversible jump Markov chain Monte Carlo algorithm (RJMCMC). These approaches are a way to solve the inverse problem with a self-adaptive geological parameterization in which the number of model parameters is unknown. 

The code considers a 2D layered reservoir model. The number of geological layers is variable and the algorithm will converge towards the appropriate reservoir parameter (permeability property) and reservoir geometry (number and location of layer interfaces), using flow data and static reservoir data.

structural modelingRINGToolKit was created in 2018 as the base plugin gathering useful functionalities for SKUA-GOCAD users and plugin developers.

It mainly includes georeferencing tools tailored for geological field data, import/export facilities and the implicit structural modeling tools previously available in StructuralLab. optimize

SmoothQuad is a library for 2D meshing and optimization of homogenized medium for seismic simulations. implements mesh optimization algorithm with a modified cotangent Laplacian algorithm in order to bring each node in a position in which the wave simulation would perform better (maximizing the Δx/Δt in each element). The mesh is returned in msh 2.2 format and the code provides some methods to integrate it and the homogenized model into the SpecFem2D simulator.

This library is primarily being developed by  Marius Rapenne in C++/Python/Fortran in the frame of his PhD thesis on Adaptive Homogenization for Seismic Risk Estimation.

The code is avalable on Github for sponsors here.

FAIStokes logo vf mid

The FAIStokes (Finite Element Arbitrary Lagrangian Eulerian Implementation of Stokes) software was developped to do mechanical simulations of the subsurface while considering rocks as highly viscous fluids. In particular, its focus is placed on using creeping flow for the structural restoration of geological models.

Goscope is a SKUA-GOCAD plugin dedicated to seismic interpretation.

It includes functionalities to help with the following tasks:

  • Automatic extraction of geological interfaces (faults, horizons, etc.) as point clouds
  • Stochastic simulation of salt bodies and welds
  • Other: image processing algorithms, computation of seismic attributes

ParticleEngine is a visualization engine dedicated to vector fields developed by Thomas Viard and MSc student Gregoire Piquet. It is based on particles randomly sampled over the domain of interest and displaced according to the local orientation and intensity of the vectors. The vector fields are read from a file written in an extended GSLIB format. The package features two different modes of particle displacement, one on the CPU and the other on the GPU.

The Concurrent Number Cruncher (CNC) is a high-performance preconditioned conjugate gradient solver on the GPU using the GPGPU AMD-ATI CTM and NVIDIA CUDA APIs. The CNC was developed by Luc Buatois using a general optimized implementation of sparse matrices using Block Compressed Row Storage (BCRS) blocking strategies for various block sizes, and optimized BLAS operations through massive parallelization, vectorization of the processing and register blocking strategies.

WebExporterLogoWebExporter is a Gocad plugin for exporting structural models into an HTML page. Webgl technology is used to render the structural mode within a web browser.

This method offer a simple and cross-platform way to broadcast 3D geological models. The obtained HTML page is based on Webgl ans ThreeJS Javascript libraries.

A similar functionality is implemented within the RINGMesh library.