FieldOpt: Enhanced Software Framework for Petroleum Field Optimization - Development of Software Support System for the Integration of Oil Production Problems with Optimization Methodology
Abstract
This thesis concerns the development of FieldOpt, a software framework that aims at being a common platform for MSc. and Ph.D. students of optimization theory and petroleum engineering to conduct research. With FieldOpt, we seek to simplify and speed up the process of developing and applying new optimization methodologies to interesting petroleum cases. We achieve this by structuring the source code in a way that facilitates modifications and additions through the use of abstract classes and clearly defined interfaces, and by implementing process-level parallelization.
We present some background on topics relevant to our work. We start with a general description of optimization algorithms, in particular pattern search algorithms, focusing on the compass search algorithm that we implemented in FieldOpt. Other key topics are reservoir simulation; parallel computing, focusing on process-level parallelization in distributed systems; and software architecture, which is crucial to the implementation of any software framework. We then go on to describe how FieldOpt was implemented, using class- and sequence diagrams to describe the structure of the code and the sequence of instructions during execution. We also present a case study examining the correctness and performance of our implementation under various conditions.
The optimization interface we created is simple and well defined. It should be flexible enough to facilitate implementation of most pattern search algorithms, but it will likely need some modifications in the future. We find that our implementation exhibits exceptional performance for large problems and that the performance scales very well when a large number of processors are available. When run in parallel, our implementation reaches a solution more than 90% faster than when run in serial for large problems. However, we also identify some issues linked to our implementation of workload scheduling, caused by irregular behavior in the reservoir simulator. These irregularities may cause the program to have a very long execution time for some problems, and a systematic handling of them should be implemented.