Bravo Dome tutorial
The Bravo Dome carbon dioxide gas field is located in northeast New Mexico. The Bravo Dome field covers approximately 3200 km^2. Production in 1989 was 3.2e9 cubic meter of gas from 272 wells. Cumulative production at the end of 1989 was 17e9 cubic meter. Estimated recoverable reserves are more than 283e9 cubic meter. The gas is 98-99% CO We consider a compositional system composed of Helium, Neon, Carbon dioxide and Water. We use Henry's law to compute the ratio of each component in the gas and liquid phase. For water, we assume that the water vapor pressure is constant. We refer to the note tutorial bravo note for a description of the model with the assumptions that are used. The grid is constructed from raw data tables consisting of arrays (dimension 100x100) which contains the permeability, the porosity, the depths of the lower and upper layers for a Cartesian grid. See function setupGeometry.m. Below, we list the files that are needed to set up this compositional solver. In the first list, we have the main functions that have been written for this tutorial. In the list We observe that - The size of the code needed to implement this compositional simulator on top of MRST is particularly short.
- Moreover, only a few functions from MRST are in fact used. They reflect two of the most interesting features of MRST when it comes to rapid prototyping: a flexible and robust grid structure and a set of handy AD tools.
## Main functions- runBravo.m : In this function, the parameters for the computation are set. The geometry is loaded. The fluid properties are set. The non-dynamical computational structures (transmissibilities, discrete differential operators ) are computed, by calling setupSystem.m. The control variables (injection rate and composition, output pressure) are set up by calling setupControls.m. The schedule is set up. Finally, the computation is started by solving at each time step the fully-implicit system.
- solvefi.m: This function is a one-step Newton solver. The equations are assembled using equationCompositional.m.
- flash_calculation.m: This function computes the liquid saturation and the concentrations of all the components in the gas and liquid phase, given the total concentrations and the pressure.
- equationCompositional.m: The is the function where the equations are assembled. The equations are four mass conservation equations, one for each element (He, Ne, CO
_{2}, H_{2}O), and one equilibrium equation, the saturation equation. The residual are evaluated. Using the*automatic differentiation*framework, the Jacobians of the residual equations is also automatically computed.
- setupControls.m: In this function, we set the control variables: We define the cells where the injection is performed and the faces where the output pressure is set. The injection rate and output pressure value are set.
- setupGeometry.m: Set up the geometry from raw data.
- setupSystem.m: In this function, we compute the transmissibilities and set up the discrete differential operators div and grad.
## Helper functions- computeComposition.m: Computes the concentrations in the gas and liquid phase of all elements except water, given the total concentration, pressure
**and**liquid saturation
- computeWaterComp.m: Compute the concentrations of water in both phases given given the total concentration, pressure and liquid saturation.
- getHenryCoef.m: Returns the Henry solubility coefficients for each component.
- getR.m: Returns the ideal gas constant.
- initStateBravo.m: Initialize the state variables.
- omega_l.m: Computes the molar volume for the liquid phase.
- vaporPressure.m: Return the water vapor pressure.
- quadraticRelPerm.m: Set up quadratic relative permeabilities,
- setNonlinearSolverParameters.m: Set up nonlinear parameters for the solver.
## MRST functions used in this tutorial
## Download tutorial files## Numerical resultsInitially, we set the initial molar fractions of neon and water equal to 0.5% and 99.5% respectively, with no helium and carbon dioxyde. The pressure in the whole reservoir is set to the output pressure, that is, 80 bar. We inject a mixture composed of 10% Helium and 90% CO The injection is done on four cells on the western side of the reservoir and the output pressure is set on one face at the most eastern cell, see setupControls.m. The simulation is run for 10000 days with a time step of 200 days. The following plots show the result of the simulation at end time. We observe that, as espected, the helium travels faster than the carbon dioxyde because of its lower solubility in the liquid phase. |
||||||||||||||||||||||