This example goes through the construction of a simple multiscale solver based on restriction-smoothed basis functions. We begin by defining the fine-scale problem and plotting the permeability field, which represents a number of layers sampled from the SPE10 model. Layers from 1 to 35 will result in smooth, lognormal permeabilities, whereas Layers 36 to 85 will result in channelized formations that are considered to be significantly more challenging for upscaling and multiscale methods.
We solve the flow problem using three methods: a fine-scale TPFA solver from the 'incomp' module, the multiscale finite-volume (MsFV) method from the 'msfv' module, and the MsRSB method implemented in this module.
Extensive numerical experiments have shown that contemporary multiscale methods provide approximate solutions of good quality for highly heterogeneous media. However, cases with large permeability contrasts are generally challenging and it is not difficult to construct pathological test cases on which a particular method fails to produce accurate solutions. Kippe et al. (DOI: 10.1007/s10596-007-9074-6) proposed a simple and illuminating example consisting of a narrow high-permeable channel in a low-permeable background, where the channel is aligned with the diagonal direction.
This example corresponds to Example 4.3.3 in [1].
This example is a simple demonstration in how to use the multiscale solver to solve a 2-phase quarter five-spot problem defined with petrophysical properties sampled from the bottom layer of Model 2, SPE10. The fluid has equal viscosities and quadratic relative permeabilities. Since the total mobility does not change significantly, we neither update basis functions nor introduce extra iterations to reduce the fine-scale residual towared machine precision. As a result, the multiscale approximation will deviate somewhat from the fine-scale TPFA solution.
A tough test case for any multiscale solver is a grid with many inactive cells that make coarse grids highly challenging. We consider a quater-five spot simulation with lognormal permeabilities and a number of circular impermeable inclusions, which are modelled by setting the corresponding cells to be inactive. This example demonstrates the robustness of MsRSB when faced with a large number of inactive cells.
This example corresponds to Example 4.3.5 in [1].
Pinchouts create non-neighboring connections and is one of the principal gridding challenges for real-life reservoir models. To exemplify, we consider a highly detailed 30x30x6 cm^3 model of realistic bedding structures . The bedding structure consists of six different rock types and is realized on a 30x30x333 corner-point grid. Almost 2/3 of the cells are pinched or inactive, giving a fine grid of approximate dimensions 30x30x100. The volumes of the cells, as well as the areas of the (vertical) faces, vary almost four orders of magnitudes. We partition the fine grid into 6x6x5 coarse blocks.
The model not only has a difficult geometry, but also has a large number of low-permeable shale layers pinched between the other high-permeable layers. Impermeable regions like this are known to pose monotonicity problems for the MsFV method. Here, we demonstrate that this is not the case for the MsRSB method.
This example is a modified version of Example 4.3.6 in [1], and demonstrates the use of the MsRSB method to a synthethic waterflood on the grid and petrophysical properties from a real field. The setup uses the reservoir geometry and petrophysical properties from the Norne field, which is an oil and gas field from the Norwegian Sea. Wells are placed somewhat arbitrarily throughout the model and we use a simplfied 2-phase fluid model. To partition the domain, we use METIS with edge-weights determined from the fine-scale transmissibilities. This way, the coarse grid will adapt to the heterogeneity by trying to form blocks that have as small permeability variation as possible.
For efficiency, the example uses MEX-accelerated computation of basis functions, which requires that MEX is set up and configured to work with an installed C++ compiler on your machine.
Published December 8, 2016