A new approach for residual and Jacobian arrays construction in reservoir simulators

The authors describe a simple and convenient approach for constructing the residual and Jacobian arrays in a reservoir simulator. The key idea is to keep track of all the connections in a model, as opposed to the conventional approach of keeping track of gridblocks and wells when computing the flux terms. Each gridblock may have a variable number of connections that depends on the grid geometry. A connection, however, always links to nodes, which can be gridblock nodes or source/sink nodes. A data structure identifying each pair of connected nodes and the corresponding geometric factors of each connection are sufficient to implement this approach. No-flow boundaries and internal barriers are excluded because of the absence of a connection. The residual function computation is divided into two principal steps: (1) computation of the accumulation term, which is local to each grid block, and (2) computation of flux terms and/or potential difference between all connections by traversing the list of connections and their allocation to the appropriate nodes. This approach can be extended in a natural way to include node connections in well and surface flowline networks.