IP Library Granted Patent US 8,725,481
Granted Patent B2
US 8,725,481 · App. 13/856,300 · Granted May 13, 2014

Parallel adaptive data partitioning on a reservoir simulation using an unstructured grid

Inventors: Adam K. Usadi (Basking Ridge, NJ); Ilya D Mishev (Houston, TX)
Assignee: ExxonMobil Upstream Research Company
E21B49/00E21B43/00
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,725,481
App. No.
13/856,300
Granted
May 13, 2014
Kind
B2
Abstract

A computer implemented system and method for parallel adaptive data partitioning on a reservoir simulation using an unstructured grid includes a method of simulating a reservoir model which includes generating the reservoir model. The generated reservoir model is partitioned into multiple sets of different domains, each one corresponding to an efficient partition for a specific portion of the model.

Claims (120)

1. A method of simulating a reservoir model, comprising:

generating the reservoir model;

partitioning the generated reservoir model into multiple sets of different domains, each domain corresponding to a partition for a specific portion of the model that optimizes parallel processing efficiency of the reservoir simulation;

re-partitioning the generated reservoir model into a plurality of domains dynamically in order to improve parallel performance, wherein the re-partitioning comprises:

a) pre-processing the reservoir model by choosing a partitioning scheme and determining parameters of the partitioning scheme;

b) partitioning the generated reservoir model into a plurality of domains using the partitioning scheme;

c) post-processing the partitioned reservoir model to further refine the parallel performance of a partitioned calculation;

d) evaluating a quality of the post-processed partitioned reservoir model; and

e) if the quality of the post-processed partitioned reservoir model is less than a predetermined value, then repeating a, b, c, d, and e using a modified partitioning scheme and parameters;

dividing the simulating of the reservoir model into a plurality of processing elements; and

processing a plurality of the processing elements in parallel, based on the re-partitioned reservoir model;

wherein partitioning the generated reservoir model into a plurality of domains comprises:

identifying subsets or blocks of nodes which are isolated from each other;

sorting the identified subsets or blocks of nodes by size;

weighting the sorted subsets or blocks of nodes to account for processing costs associated with each subset or block;

sorting the weighted subsets or blocks of nodes based on processing cost; and

allocating the weighted subsets or blocks of nodes to corresponding domains.

2. A method of simulating a reservoir model, comprising:

generating the reservoir model;

partitioning the generated reservoir model into multiple sets of different domains, each domain corresponding to a partition for a specific portion of the model that optimizes parallel processing efficiency of the reservoir simulation;

re-partitioning the generated reservoir model into a plurality of domains dynamically in order to improve parallel performance, wherein the re-partitioning comprises:

a) pre-processing the reservoir model by choosing a partitioning scheme and determining parameters of the partitioning scheme;

b) partitioning the generated reservoir model into a plurality of domains using the partitioning scheme;

c) post-processing the partitioned reservoir model to further refine the parallel performance of a partitioned calculation;

d) evaluating a quality of the post-processed partitioned reservoir model; and

e) if the quality of the post-processed partitioned reservoir model is less than a predetermined value, then repeating a, b, c, d, and e using a modified partitioning scheme and parameters;

dividing the simulating of the reservoir model into a plurality of processing elements; and

processing a plurality of the processing elements in parallel, based on the re-partitioned reservoir model;

wherein partitioning the generated reservoir model into a plurality of domains comprises:

determining a velocity field associated with the generated reservoir model;

tracing streamlines associated with the velocity field;

projecting the streamlines to generate streamline curtains; and

extending the streamline curtains to boundaries of the generated reservoir model to partition the generated reservoir model into domains.

3. A method of simulating a reservoir model, comprising:

generating the reservoir model;

partitioning the generated reservoir model into multiple sets of different domains, each domain corresponding to a partition for a specific portion of the model that optimizes parallel processing efficiency of the reservoir simulation;

re-partitioning the generated reservoir model into a plurality of domains dynamically in order to improve parallel performance, wherein the re-partitioning comprises:

a) pre-processing the reservoir model by choosing a partitioning scheme and determining parameters of the partitioning scheme;

b) partitioning the generated reservoir model into a plurality of domains using the partitioning scheme;

c) post-processing the partitioned reservoir model to further refine the parallel performance of a partitioned calculation;

d) evaluating a quality of the post-processed partitioned reservoir model; and

e) if the quality of the post-processed partitioned reservoir model is less than a predetermined value, then repeating a, b, c, d, and e using a modified partitioning scheme and parameters;

dividing the simulating of the reservoir model into a plurality of processing elements; and

processing a plurality of the processing elements in parallel, based on the re-partitioned reservoir model;

wherein partitioning the generated reservoir model into a plurality of domains comprises:

partitioning the domains;

determining distances between boundaries of the domains and adjacent wells defined within the generated reservoir model; and

re-partitioning the generated reservoir model as required as a function of the determined distances in order to move the domain partition away from the wells and thus improve a solver performance.

4. The method of claim 3 , wherein partitioning the domains comprises:

identifying subsets or blocks of nodes which are isolated from each other;

sorting the identified subsets or blocks of nodes by size;

weighting the sorted subsets or blocks of nodes to account for processing costs associated with each subset or block;

sorting the weighted subsets or blocks of nodes based on processing cost; and

allocating the weighted subsets or blocks of nodes to corresponding domains.

5. The method of claim 3 , wherein partitioning the domains comprises:

determining a level of processing cost associated with each node within the generated reservoir model;

sorting nodes in a geometric direction as a function of the determined level of processing cost;

summing computational weight factors of the sorted nodes;

binning the sorted nodes based on the processing cost to generate bins of equal weight; and

assigning each bin of sorted nodes from the bins to one of the plurality of domains.

6. The method of claim 3 , wherein partitioning the domains comprises:

determining a velocity field associated with the generated reservoir model;

tracing streamlines associated with the velocity field;

projecting the streamlines to generate streamline curtains; and

extending the streamline curtains to boundaries of the generated reservoir model to partition the generated reservoir model into domains.

7. The method of claim 3 , wherein partitioning the domains comprises:

determining a processing cost associated with each node of the generated reservoir model;

determining a processing cost associated with the connectivity level between each of the nodes of the generated reservoir model; and

partitioning the generated reservoir model into a plurality of domains as a function of the determined processing cost.

8. A method of simulating a reservoir model, comprising:

generating the reservoir model;

partitioning the generated reservoir model into multiple sets of different domains, each domain corresponding to a partition for a specific portion of the model that optimizes parallel processing efficiency of the reservoir simulation;

re-partitioning the generated reservoir model into a plurality of domains dynamically in order to improve parallel performance, wherein the re-partitioning comprises:

a) pre-processing the reservoir model by choosing a partitioning scheme and determining parameters of the partitioning scheme;

b) partitioning the generated reservoir model into a plurality of domains using the partitioning scheme;

c) post-processing the partitioned reservoir model to further refine the parallel performance of a partitioned calculation;

d) evaluating a quality of the post-processed partitioned reservoir model; and

e) if the quality of the post-processed partitioned reservoir model is less than a predetermined value, then repeating a, b, c, d, and e using a modified partitioning scheme and parameters;

dividing the simulating of the reservoir model into a plurality of processing elements; and

processing a plurality of the processing elements in parallel, based on the re-partitioned reservoir model;

wherein partitioning the generated reservoir model into a plurality of domains comprises:

partitioning the domains;

determining all nodes within the generated reservoir model positioned along boundaries between the domains;

projecting the boundary nodes to a plane and fitting a curve through the projected boundary nodes; and

projecting a curve in a direction orthogonal to the fitted curve to redefine boundaries between the domains of the generated reservoir model.

9. A method for simulating a reservoir model, comprising:

generating the reservoir model;

partitioning the generated reservoir model into a plurality of domains;

dividing the simulating of the reservoir model into a plurality of processing elements;

processing a plurality of the processing elements in parallel; and

partitioning the generated reservoir model into another plurality of domains at least once during the parallel processing;

wherein partitioning the generated reservoir model into a plurality of domains comprises:

a) pre-processing the reservoir model by choosing a partitioning scheme and determining parameters of the partitioning scheme;

b) partitioning the generated reservoir model into a plurality of domains using a partition scheme;

c) post-processing the partitioned reservoir model to correct the partitioned reservoir model;

d) evaluating a quality of the post-processed partitioned reservoir model; and

e) if the quality of the post-processed partitioned reservoir model is less than a predetermined value, then repeating a, b, c, and d, and e with a modified partitioning scheme and/or parameters of the partitioning scheme;

wherein partitioning the domains comprises:

identifying subsets or blocks of nodes which are isolated from each other;

sorting the identified subsets or blocks of nodes by size;

weighting the sorted blocks of nodes to account for processing costs associated with each block or subset;

sorting the weighted subsets or blocks of nodes based on the processing costs; and

allocating the weighted subsets or blocks of nodes to corresponding domains.

10. A method for simulating a reservoir model, comprising:

generating the reservoir model;

partitioning the generated reservoir model into a plurality of domains;

dividing the simulating of the reservoir model into a plurality of processing elements;

processing a plurality of the processing elements in parallel; and

partitioning the generated reservoir model into another plurality of domains at least once during the parallel processing;

wherein partitioning the generated reservoir model into a plurality of domains comprises:

a) pre-processing the reservoir model by choosing a partitioning scheme and determining parameters of the partitioning scheme;

b) partitioning the generated reservoir model into a plurality of domains using a partition scheme;

c) post-processing the partitioned reservoir model to correct the partitioned reservoir model;

d) evaluating a quality of the post-processed partitioned reservoir model; and

e) if the quality of the post-processed partitioned reservoir model is less than a predetermined value, then repeating a, b, c, and d, and e with a modified partitioning scheme and/or parameters of the partitioning scheme;

wherein partitioning the domains comprises:

determining a velocity field associated with the generated reservoir model;

tracing streamlines associated with the velocity field;

projecting the streamlines to generate streamline curtains; and

extending the streamline curtains to boundaries of the generated reservoir model to partition the generated reservoir model into domains.

Continuity (3)
Continuation 12682731
Provisional Application 61007470 · Dec 13, 2007
Related Publication 20130246030A1 · Sep 19, 2013