We discuss an object-oriented, component-based architecture for a parallel reservoir simulator. The architecture successfully balances the need for extensibility, maintainability, and reuse with the need for efficient computation. Parallelism is hidden from the application developer via a set of abstractions and a unifying framework that supports static and dynamic load balancing on unstructured and structured grids. We explain how the simulator architecture supports black oil and compositional models within a general formulation, and how it achieves parallel scalability for all the major components: property calculation, Jacobian construction, linear solver, well model, input/output etc. Some initial results are discussed for a selection of models ranging from standard benchmarks to large complex field cases.
展开▼