Composition-Based Reservoir Simulation Architecture
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Inheritance-based architectures in reservoir simulation lead to complex and inflexible class hierarchies, limiting code reuse and extensibility, and failing to efficiently handle structured and unstructured grids, which are essential for modern reservoir modeling demands.
Innovation Solution
A composition-based extensible object-oriented program is developed, featuring a framework subsystem, engine subsystem, and model components that separate 'types of connections' from 'computation types,' allowing for dynamic partitioning and easy addition of new compute classes without modifying the entire hierarchy, and supporting unified treatment of structured and unstructured grids.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of manufacture
If inheritance-based architectures are used in reservoir simulation, then code structure is established, but class hierarchy becomes complex and inflexible, limiting code reuse and extensibility
Solution Approach 1:
The patent segments the monolithic inheritance hierarchy into multiple independent composition-based modules. Each module (e.g., grid module, fluid module, geology module) can be independently developed, modified, and reused without affecting other parts of the system, thereby reducing overall system complexity while maintaining code structure.
Solution Approach 2:
The patent creates universal base classes and interfaces that can serve multiple purposes across different simulation contexts. These universal components can be composed in various ways to handle different grid types (structured, unstructured, adaptive), fluid models, and geological configurations, eliminating the need for separate inheritance hierarchies for each case.
2Ease of manufacture
If inheritance-based architectures are used, then initial code organization is achieved, but extensibility for new compute classes and grid types is limited
Solution Approach 1:
The patent implements dynamic composition where the system can adapt its structure at runtime based on the specific simulation requirements. New compute classes, grid types, and physical models can be dynamically added and composed without requiring modifications to the core inheritance hierarchy, enabling the system to evolve with new research and application needs.
Solution Approach 2:
The patent introduces intermediary abstraction layers (interfaces, virtual classes) that mediate between the core simulation engine and specific implementations. These intermediaries provide stable interfaces that allow new compute classes and grid types to be added without disrupting the existing code organization, thereby enhancing extensibility while preserving initial code structure.
3Adaptability or versatility
If traditional inheritance hierarchies are used to handle different grid types, then structured grids are supported, but unified treatment of structured and unstructured grids becomes difficult
Solution Approach 1:
The patent designs universal grid interface classes that can handle both structured and unstructured grids through a unified composition framework. The same base classes and computational kernels can work with different grid types by composing them with appropriate grid-specific implementation modules, eliminating the need for separate inheritance hierarchies for structured and unstructured grids.
Solution Approach 2:
The patent uses parameter-based configuration to switch between different grid types and treatment methods. By changing parameters and composition configurations rather than modifying the inheritance structure, the system can efficiently handle both structured and unstructured grids with a unified codebase, reducing grid handling complexity.
Data Source
AI summary
The present invention provides a method, a system and a program storage device containing instructions for simulating the flow of fluid in a physical system using a composition-based extensible object-oriented program. A computer program includes: (i) a framework subsystem providing a graph package, a compute package and a property package; (ii) an engine subsystem including engine subsystem packages for performing numerical simulation, the engine subsystem packages including a linear solver package and a non-linear solver package; and (iii) a set of model components providing physical and numerical modeling behaviors utilized by the engine subsystem, the model components including at least one of a reservoir model, a well model, an aquifer model, a fluid model and a SCAL model. The framework subsystem, the engine subsystem and the model components work with one other to simulate the flow of fluid. Preferably, a partition package is used to create a partition of subsets of node and edge indices which can be used optimize computations by the program.


