Abstract
Practical production optimization problems typically involve large, highly complex reservoir models, thousands of unknowns and many nonlinear constraints, which makes the numerical calculation of gradients for the optimization process impractical. This work explores a new algorithm for production optimization using optimal control theory. The approach is to use the underlying simulator as the forward model and its adjoint for the calculation of gradients. Direct coding of the adjoint model is, however, complex and time consuming, and the code is dependent on the forward model in the sense that it must be updated whenever the forward model is modified.
We investigate an adjoint procedure that avoids these limitations. For a fully implicit forward model and specific forms of the cost function and nonlinear constraints, all information necessary for the adjoint run is calculated and stored during the forward run itself. The adjoint run then requires only the appropriate assembling of this information to calculate the gradients. This makes the adjoint code essentially independent of the forward model and also leads to enhanced efficiency, as no calculations are repeated. Further, we present an efficient approach for handling nonlinear constraints that also allows us to readily apply commercial constrained optimization packages. The forward model used in this work is the General Purpose Research Simulator (GPRS), a highly flexible compositional/black oil research simulator developed at Stanford University.
Through two examples, we demonstrate that the linkage proposed here provides a practical strategy for optimal control within a general-purpose reservoir simulator. These examples illustrate production optimization with conventional wells as well as with smart wells, in which well segments can be controlled individually.