Computer implemented method for manipulating a numerical model of a 3D domain
A computer implemented method for manipulating a numerical model of a 3D domain, the numerical model includes a plurality of geometrical entities. The method provides a set of specific lists of indexing keys increasing the speed of access including writing and reading operations for one or more geometrical entities.
1 . A method for configuring and using a data storage and retrieval system to simulate the behavior of a physical 3D reservoir domain having geometrical entities contained therein, the physical 3D reservoir domain being represented by a numerical model instantiated in a computer memory by a data structure of the data storage and retrieval system, the method comprising the steps of:
using field data acquired from the reservoir domain, creating in the computer memory a data storage block having a list of records, each record storing data relating to a geometrical entity in the reservoir domain, the data including a first index key and coordinates of a location of the geometrical entity in the reservoir domain or coordinates of locations in the reservoir domain that include at least part of the geometrical entity;
defining a grid by discretizing a space containing the 3D reservoir domain of the numerical model into a plurality of cells, such that each point of space of the numerical model is associated to a cell of the grid, and each geometrical entity is associated with the one or more of the plurality of cells in which the geometrical entity, in whole or in part, is located;
for each of the plurality of cells in the grid, creating in the computer memory a list of first records appended to the data storage block, wherein creating the list of first records includes:
generating a null list for each cell of the grid; and
sequentially reading, only once, each record in the list of records stored in the data storage block to determine in which cell(s) of the grid each geometrical entity is located, and
based on the determined location for each geometrical entity, for each of the plurality of cells in the grid, generating a list of first records, wherein each first record of a list identifies a geometrical entity, which in whole or in part, is located in the cell associated with the list and includes at least a second index key that stores the first index key of the identified geometrical entity, and
executing, via a computer system, a simulation operation of the numerical model using data relating one or more geometrical entities in the reservoir domain, the data accessed via the second index keys.
2 . The method according to claim 1 , wherein when a cell of the grid contains no geometrical entity, the list of first records for that cell is empty, and when a cell of the grid contains in whole or in part one or more geometrical entities, the list of first records for that cell includes a corresponding number of first records such that there is one first record for each geometrical entity identified in that cell, and wherein each first record allows direct access to the corresponding geometrical entity.
3 . The method according to claim 2 , wherein the structured grid is a Cartesian structured grid.
4 . The method according to claim 2 , wherein the grid is indexed and a set of lists are indexed according to the index of the grid.
5 . The method according to claim 1 , wherein the grid is a structured grid.
6 . The method according to claim 1 , wherein the first index key identifying each geometrical entity is indexed by a tree structure.
7 . The method according to claim 1 , wherein a post-processing method is carried out according to the following steps:
for each geometrical entity stored in the data storage block, appending to each geometrical entity a list of second records having at least a third index key wherein:
the list of second records includes a second record for each cell of the grid satisfying that the coordinates of the location of the geometrical entity or the coordinates of the locations of part of the geometrical entity are located within the cell, and
the third index key of each second record stores an index of the cell according to the previous condition.
8 . The method according to claim 1 , wherein a sub-set of geometrical entities of the numerical model are manipulated using manipulating operations according to the following steps:
selecting one or more cells that include the geometrical entities to be manipulated;
accessing the geometrical entities of the sub-set of geometrical entities by the second index keys contained in the list of second records for the selected cells.
9 . The method according to claim 8 , wherein the manipulating operations are at least reading and writing.
10 . The method according to claim 8 , wherein collisions between at least a first set of geometrical entities of the geometrical entities and a second set of geometrical entities of the geometrical entities are determined according to the following steps:
i. selecting one or more cells containing the first set of geometrical entities;
ii. selecting one or more cells containing the second set of geometrical entities;
iii. determining a set of cells being a union between the set of first selected cells and the set of second selected cells; and
iv. for each cell of the set of cells determined in step iii), computing collisions between the geometrical entities indexed in the second index key in the list associated to that cell.
11 . A non-transitory computer program product stored on a computer-readable medium and comprising computer-implementable instructions which, when executed by a computer, cause the computer to carry out the method according to claim 1 .