GeoModel: Mutable object composition to represent Geological Model

The key feature of RINGMesh is the RINGMesh::GeoModel. It aims at representing a geological model with a level of complexity adapted to the problem to solve. Geological objects are complex and multiscale.

GeoModel Constitutive Elements: GeoModelEntity

A model is defined by its constitutive elements RINGMesh::GeoModelEntity. There are two main kinds of entities (see figure below):

Figure: Geomodel entities divided into the geometrical entities and the geological entities. Figure from Pellerin et al. (2017).

We know that this is not a complete list. A lot of entities would be valuable to complete the model. We strongly encourage people to contribute and complete these lists :)

GeoModel Geometrical Entities: GeoModelMeshEntity

A set of RINGMesh::GeoModelMeshEntity holds the discretization and the boundary representation of the geological model. Each mesh entity knows all connected higher and lower dimension mesh entities. Even if the topology between Entities is known, each RINGMesh::GeoModelMeshEntity stores its own mesh data structure independently of each other and you cannot get any global information. Geometrical information is contained by an abstract mesh class implemented in RINGMesh. This abstraction level is a strength of RINGMesh because it can be adapted to any data structure and eases the coupling between softwares (more details about meshes).

GeoModel Geological Entities: GeoModelGeologicalEntity

A RINGMesh::GeoModelGeologicalEntity stores a geological-based topological structure. It uses a kind of parent/child implementation where RINGMesh::GeoModelGeologicalEntity is the parent of its children RINGMesh::GeoModelMeshEntity. The main idea is to cluster several geometrical entities that compose a geological object.

GeoModel Global Representation: GeoModelMesh

The GeoModelMesh is one mesh built by copying and merging all RINGMesh::GeoModelMeshEntity of the GeoModel in a global and unique mesh. It allows to access to (1) a more general information than the one stored inside the mesh of RINGMesh::GeoModelEntity, and (2) a single mesh representing the entire geological model.

To ease the global access to vertices, edges, facets and cells without redundancy at GeoModel geometrical entity borders; four databases are available. These databases are empty by default and are automatically filled as soon as they are used.