Client

Technologies Used

Ocean Framework, C#, .NET, Python, socket-based IPC, Eclipse

The Situation

Optimizing oil production in Brazilian pre-salt fields involves a multidimensional problem: defining, over time, the controls of producer and injector wells (rates, pressures, status, fluid mixing) that maximize the field's net present value (NPV), while simultaneously honoring the physical limits of the reservoir and the short-term operational constraints imposed by the platforms, such as processing, separation, and injection capacity. In complex reservoirs such as the pre-salt carbonates, this problem is especially challenging, as it involves large numbers of wells, long simulation horizons, and multiple injection strategies, including WAG (Water Alternating Gas).


The Challenge

Within the RESSIM-STORMS R&D project, led by UnB in partnership with Repsol Sinopec Brasil and funded by ANP, an optimization methodology was developed specifically for the characteristics of the pre-salt, capable of incorporating short-term constraints into the search for optimal production strategies. The methodology was implemented in a software package, STORMS, originally operated outside the geological and reservoir modeling environment.


The challenge delivered to DeepSoft was to turn this tool into an operational asset within Repsol's workflow: connect STORMS to Petrel, the platform where the operator's reservoir models, simulation cases, and development strategies actually live, without compromising the maintainability of the original software and without duplicating its optimization routines inside the Ocean Framework.


The DeepSoft Solution

DeepSoft developed Storms Petrel, a plug-in that integrates STORMS into Petrel's native environment. The architecture was deliberately designed as integration, not rewrite: the plug-in, built on the Ocean Framework, embeds a Python interpreter that runs STORMS as a process, communicating with the plug-in via sockets for data and command exchange. The optimization algorithms remain inside STORMS, preserving a single codebase for maintenance and evolution, while case generation, strategy configuration, Eclipse simulation runs, and result reading happen in Petrel.

From a dedicated interface, the reservoir engineer configures the optimization project without editing external YAML files: defining the base case, the temporal starting point (with restart support), the optimization algorithm from the five available (Direct simulation, Normal reactive mode, Enhanced reactive mode, MNPV-like simulation, and Simplex), the controls and constraints for producer and injector wells per date, and additional schedule parameters. During execution, the plug-in automatically identifies wells with identical controls and groups them into wellsets, simplifying and speeding up the generation of development strategies.

A dedicated progress window tracks every iteration, dynamically displaying the cumulative NPV curve, total field injection and production rates, individual well performance, and a complete process log, allowing users to monitor the evolution of the optimization in real time. All cases simulated during the optimization are preserved in the Petrel project, available for analysis with the platform's other tools.