# SPE Journal Volume 17, Number 2, June 2012, pp. 441-454

SPE-118877-PA

### Determination of Active Constraints in a Network

View full textPDF ( 3,191 KB )

DOI  10.2118/118877-PA http://dx.doi.org/10.2118/118877-PA

### Citation

• Watts, J.W., Fleming, G.C., and Lu, Q. 2012. Determination of Active Constraints in a Network. SPE J.  17 (2): 441-454. SPE-118877-PA. http://dx.doi.org/10.2118/118877-PA.

### Discipline Categories

• 6.5 Reservoir Simulation
• 6.5.1 Simulator Development
• 5.8 Fundamental Research in Production and Operations
• 5.4 Production Monitoring and Control

### Keywords

• production and operations

### Summary

There is increasing interest in modeling networks of wells, including subsurface components of complex wells and surface facilities. Such modeling requires setting constraints at various points in the network. Typical constraints are maximum phase-flow rates and minimum flowing pressures. A major difficulty in network calculations is determining which of these constraints is active.

This paper presents a method that uses slack variables in determining active constraints. The linearized equations of interest generally come in pairs, with each pair consisting of a base equation and a constraint equation. The base equation is the equation that normally applies. The constraint equation replaces it if the constraint is active. Normally, only one of these two equations can be satisfied. The slack variable provides a way to ensure that both are satisfied, regardless of which is active. If the constraint is inactive, the slack variable is added to the constraint equation and accounts for the slack, which by definition is the amount by which the inactive equation is not satisfied. On the other hand, if the constraint is active, the slack variable is instead added to the base equation, and the constraint equation as originally written is satisfied. To obtain this behavior, we define a parameter w and add w times the slack variable to the base equation and (1 - w) times the slack variable to the constraint equation. Thus, if w = 1, the slack variable is added to the base equation, and the constraint is active. On the other hand, if w = 0, the slack variable is added to the constraint equation, and the base equation is active. The slack is always in the inactive equation. There is a w associated with each slack variable.

Determining the parameter w is an iterative process. The efficiency of the process is improved by manipulating the network matrix such that we can create a Schur complement that has the slack variables as its unknowns and contains the only references to the ws. To determine the slack variables, we need only to work with this matrix, which typically is much smaller than the network matrix.

The resulting method is implemented within a general-purpose reservoir simulator. Testing of the method in more than 700 cases has shown it to be much more robust than an earlier heuristic procedure.

View full textPDF ( 3,191 KB )

### History

• Original manuscript received: 25 June 2010
• Meeting paper published: 3 February 2009
• Revised manuscript received: 6 July 2011
• Manuscript approved: 3 August 2011
• Published online: 29 March 2012
• Version of record: 11 June 2012