################################################################################ MODELLING CO2 INJECTION IN THE 10TH SPE RESERVOIR. The problem is from paper: Afanasyev A. Multiphase Compositional Modelling of CO2 Injection Under Subcritical Conditions: The Impact of Dissolution and Phase Transitions Between Liquid and Gaseous CO2 on Reservoir Temperature. //2013. Int. J. Greenhouse Gas Control. 9, P.731-742. DOI: 10.1016/j.ijggc.2013.01.042. See description at: http://dx.doi.org/10.1016/j.ijggc.2013.01.042. -------------------------------------------------------------------------------- Last update on 25.05.2015 Program Version: 2015.C05 ################################################################################ -------------------------------------------------------------------------------- Note: We type all comments in small letters while all keywords and mnemonics are always in capital letters. -------------------------------------------------------------------------------- Note: -- any line beginning with '!' or '--' is a comment line; any line not beginning with capital letter outside keyword ! instruction is also a comment line. -------------------------------------------------------------------------------- Note: Any data line must be terminated by the slash '/' sign. -------------------------------------------------------------------------------- Note: We denote by the repeated symbols the following structural elements of this RUN-file: '##############' - delimits the sections of the RUN-file. '<<<<<<<<<<<<<<' - designates an opening bracket. '>>>>>>>>>>>>>>' - designates a closing bracket. '^^^^^^^^^^^^^^' - designates the keyword, which affects the order of the data input for all the following keywords (both in the current and in the following sections). '==============' - merge the keywords and the comments in paragraphs. -------------------------------------------------------------------------------- RUNSPEC ################### RUNSPEC section begins here ###################### In this section, the general options and parameters of the simulation are specified. We enable: SATCRT - saturation functions scaling under near critical conditions; HCROCK - heat conduction in rock material. FAST We use FAST option. GRID ##################### GRID section begins here ####################### In this section, we must define the geometrical and logical structures of the reservoir (computational grid, boundaries, faults, wells, point sources, etc.). Every new reservoir is specified within the brackets MAKE/ENDMAKE. MAKE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< CART 60 220 85 / The opening bracket MAKE has associated data, which define the type of the grid we want to use. CART data item designates that we want to use cartesian grid. 60 220 85 data items designate that the grid has 60 cell along X-axis, 220 cell along Y-axis and 85 cells along Z-axis. ====================================================================== The following 4 keywords are used for specification the geometrical properties of the reservoir and the grid blocks. XYZBOUND -- xmin-xmax ymin-ymax zmin-zmax 2* 2* 1000.0 / The top boundary of the reservoir is at depth=1000 m. DXV 60*7.62 / Using the keyword DXV, we specify that the length of all 60 grid blocks along x-axis is 7.62 meters. DYV 220*7.62 / Using the keyword DYV, we specify that the length of all 220 grid blocks along y-axis is 7.62 meters. DZV 85*0.762 / Using the keyword DZV, we specify that the length of all 85 grid blocks along z-axis is 0.762 meters. Note that father (when the following keyword ACTNUM is read) MUFITS automatically converts the cartesian grid to the corner point grid. ====================================================================== The following keyword are used for setting active only the 50th layer of the reservoir. The cell activity is defined by the property ACTNUM. If ACTNUM=0 then the cell is inactive. If ACTNUM=1 then the cell is active. If ACTNUM=2 then the cell is active but its parameters are fixed, the parameters are not modified during the simulation. By default, all cells have the property ACTNUM=1. Firstly, we will make all cells inactive. We will set the property ACTNUM=0 for all cells. Secondly, we will make the 50th layer active. We will set the property ACTNUM=1 for all cells belonging to the 50th layer. ACTNUM 10000000*0 / The keyword ACTNUM can be used for specification the property ACTNUM for every cell. This keyword must be followed by the value of the property ACTNUM for every cell in the current input box. The input data order is defined by the ijk-indexes of the cells. The i-index is running in the first place, the j-index is running in the second place and the k-index running in the third place. Therefore, the keyword ACTNUM must be followed by the value 0 for every cell. The number of cells in the current input box is less than 10000000. Thus, simply typing '10000000*0' as the input data item we set the property ACTNUM to 0 in all cells. BOX ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- imin-imax jmin-jmax kmin-kmax 2* 2* 50 50 / The input box defines a region of the grid based on the ijk-indexes of the grid blocks. The region is i=[imin,imax], j=[jmin,jmax], k=[kmin,kmax]. The input box affects the keywords used for the properties input, like the keyword ACTNUM. By default, the input box is positioned to the whole reservoir i=[1,60], j=[1,220], k=[1,85]. The input box is modified by the keyword BOX. Using this keyword we set the input box in a position when only the 50th layer belong the box: i=[1,60], j=[1,220], k=[50,50]. ACTNUM 10000000*1 / The keyword ACTNUM can be used for the property ACTNUM specification only in the current input box. As the box is positioned to the 50th layer we can simply type '10000000*1' as the input data item to make the 50th layer active. ENDBOX ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The keyword ENDBOX set the input box in the default position (the reservoir). This keyword doesn't have associated data. After this keyword is executed, the input box is in the position i=[1,60], j=[1,220], k=[1,85]. SKIP <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< CARFIN ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- name imin-imax jmin-jmax kmin-kmax ni nj nk parent_grid LGR1 14 28 66 90 2*50 30 50 1 / The LGRs of cartesian grid type are specified by the keyword CARFIN. The LGR is specified by the ijk-indexes. The data associated with this keyword are as follows: item 1 (name) - the name of LGR. Father we can reference to the LGR by its name 'LGR1'; items 2,3 (imin-imax) - the minimal and the maximal i-index of the parent grid, to which the LGR is applied; items 4,5 (jmin-jmax) - the minimal and the maximal j-index of the parent grid, to which the LGR is applied; items 6,7 (kmin-kmax) - the minimal and the maximal k-index of the parent grid, to which the LGR is applied; item 8 (ni) - the number of cells in the LGR along the i-indexation axis (ni>imax-imin); item 9 (nj) - the number of cells in the LGR along the j-indexation axis (nj>jmax-jmin); item 10 (nk) - the number of cells in the LGR along the k-indexation axis (nk>kmax-kmin). ENDFIN ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ After the keyword CARFIN is executed, MUFITS automatically creates the LGR and makes this grid active. The keyword ENDFIN makes the parent grid of the reservoir active. This keyword doesn't have associated data. The grid activity affect a lot of input data, e.g. the following keyword BOUNDARY, which is applied only to the cells nested in the active grid. ENDSKIP >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ====================================================================== The following two keywords control the local grid refinement (LGR). The LGR can be disabled by commenting out these two keywords. ====================================================================== BOUNDARY -- FLUXNUM 6 default dire 5 default option -- ID values ction values 111 6* J- 5* INFTHIN / -- left boundary 222 6* J+ 5* INFTHIN / -- right boundary / We specify the left (y=0 m) and the right (y=1676.4 m) boundary of the reservoir by the keyword BOUNDARY. This keyword has associated data of the tabular form. The first data row describes the left boundary, the second data row describes the right boundary. Every row contains the following data items: item 1 - the boundary ID. For every boundary MUFITS automatically creates auxiliary cells, which are marked out by the property FLUXNUM=ID. By default, the property FLUXNUM=0; items 2-7 - imin,imax,jmin,jmax,kmin,kmax the region of the grid, for which the boundary is created; items 8-12 - the direction tags (I-,I+,J-,J+,K-,K+). This data items define the sides of the reservoir region, for which the auxiliary cells are created; item 13 - option. The record INFTHIN targets MUFITS to create infinitely thin boundary cells. Father the left boundary is marked out by the property FLUXNUM=111. The right boundary is marked out by the property FLUXNUM=222. ====================================================================== ENDMAKE >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> REGALL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The switch REGALL does not have associated data. This keyword targets MUFITS to perform operations on array for all cells in the simulation but not only for the cells in the current input box. This keyword affects the data processing by the following keyword EQUALREG, which is related to the auxiliary cells of the boundary condition. It also affects the boundary conditions specification in the section INIT. EQUALS We equal rock heat conductivity HCONDCFX 2. / to 2.0 W/m/K in the whole domain. HCONDCFY 2. / / EQUALREG -- new -- property value marker marker value -- -------- -------- --------- --------- ACTNUM 2 FLUXNUM 111 / ACTNUM 2 FLUXNUM 222 / -- -------- -------- --------- --------- / We must have the auxiliary cells created by MUFITS for the boundary conditions under the fixed state conditions (the Dirichlet boundary conditions). The parameters of these cells must not be modified during the simulation. This behavior is engaged by setting the property ACTNUM=2 for all auxiliary cells. The specification is done by the keyword EQUALREG which has tabular associated data. Every new row of the table engages a new data transformation. In every row item 1 - the mnemonic of the property, which is modified; item 2 - the new value of the property; item 3 - the marker property; item 4 - the value of the marker property. The EQUALREG operation can be described as follows: 'property' = 'new value' for all cells, which have the property 'marker' equal to the 'marker value'. ====================================================================== In this paragraph, we load the petrophysical properties from files. POROMIN 0.01 / The keyword POROMIN targets MUFITS to increase all the properties PORO to the value 0.01 if they are below this value. By the default option, the minimal porosity is 0.001. This option eliminates the cells with small pore volume from the simulation and consequently makes the simulation more stable. PORO ASCII 'EXAMPLE-H2.PORO' / The keyword PORO can be tuned up to load the porosity from an include file. If the 1st data item of this keyword is the mnemonic ASCII or BINARY then the loading is invoked. In this case, the 2nd data item is file name, from which the porosity is loaded. The mnemonic ASCII signifies that the porosity file is a formatted file. The mnemonic BINARY signifies that the the porosity file is a binary file. According to the earlier specification of the arrays loading mode (the keyword LOADING), the file EXAMPLE-H2.PORO must contain the porosity value for every cell of the reservoir. The values are ordered in that i-index is running in the 1st place, j-index is running in the 2nd place, k-index is running in the 3rd place. PERMX ASCII 'EXAMPLE-H2.PERMX' / The syntax of the keyword PERMI is identical to the syntax of the keyword PORO except that the keyword is for loading the x-direction permeabilities. The permeability dimension is mD (millidarcy). PERMY ASCII 'EXAMPLE-H2.PERMY' / The syntax of the keyword PERMJ is identical to the syntax of the keyword PORO except that the keyword is for loading the y-direction permeabilities. The permeability dimension is mD (millidarcy). PERMZ ASCII 'EXAMPLE-H2.PERMZ' / The syntax of the keyword PERMK is identical to the syntax of the keyword PORO except that the keyword is for loading the z-direction permeabilities. The permeability dimension is mD (millidarcy). ====================================================================== RPTRES MPINUM PORO PERMX PERMY PERMZ / We specify the properties we want to save in the file 'EXAMPLE-H2.GRID.SUM'. PROPS ####################### PROPS section begins here #################### In this section, we must define the thermophysical properties of binary mixture, host rock as well as the relative permeability curves. LOADEOS '../../INCLUDE/CO2H2O_V3.0.EOS' / The keyword LOADEOS is used for loading the mixture properties from the EOS-file. This keyword has as associated data the system path to the file. The rock properties for every region ROCKNUM are specified within the brackets ROCK/ENDROCK. ROCK <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< / The opening bracket ROCK has one associated data item, which is the ROCKNUM region ID. By default, all cells belong to the region ROCKNUM=1. ROCKDH -- grain density heat capacity -- [kg/m^3] [kJ/kg/K] 2500 1.0 / The easiest way for the rock properties specification is by using the keyword ROCKDH. ENDROCK >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> The relative permeabilities for every region SATNUM are specified within the brackets SAT/ENDSAT. SAT <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< / The opening bracket SAT has one associated data item, which is the SATNUM region ID. By default, all cells belong to the region SATNUM=1. SATTAB -- sH2O krH2O krCO2 0.2 0.000000 1.000000 / 0.3 0.000316 0.737758 / The Brooks and Corey curves 0.4 0.005056 0.499535 / 0.5 0.025600 0.302400 / Sl_min=0.2 0.6 0.080908 0.155832 / Sg_min=0.05 0.7 0.197530 0.061728 / 0.8 0.409600 0.014400 / 0.9 0.758834 0.000572 / 0.95 1.000000 0.000000 / / The keyword SATTAB is followed by the tabular data for the relative permeabilites. The 1st column is the liquid phase saturation, which is water (sH2O). The 2nd column is the liquid phase relative permeability (krH2O). The 3rd column is the gaseous phase relative permeability, which is the relative permeability of supercritical CO2 phase. ENDSAT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> PHASES -- name pres enth composition -- [MPa] [kJ/mol] CO2 H2O LH2O 1.0 5.0 0.0 1.0 / - H2O rich phase SCO2 10.0 10.0 1.0 0.0 / - CO2 rich phase / The keyword PHASES defines new MNEMONICS for data output. This keyword is followed by tabular data and every line of these data defines an individual phase. The 1st column is the phase name (not more than 4 characters). The following data items define typical thermodynamic parameters of the phase. The 2nd column is pressure, the 3rd is the enthalpy, the 4th and 5th are the molar composition of binary mixture. We define two phases. The 1st is the liquid water (LH2O). The 2nd is the supercritical CO2 phase. RPTSATTA / INIT ####################### INIT section begins here ##################### In this section, we must define the initial and boundary conditions. We must define the required number of parameters for every cell associated with the simulation. OPERAREG -- modified argument marker opera paramet paramet paramet -- property property marker value tion er1 er2 er3 -- -------- -------- --------- --------- -------- -------- -------- --------- PRES YCOORD FLUXNUM 1 MULTA 7.5 -1.789549034E-3 / -- -------- -------- --------- --------- -------- -------- -------- --------- / It is easy to calculate that if pressure is 7.5 MPa at the boundary y=0 m, and pressure 4.5 MPa at the boundary y=1676.4 m then the pressure distribution must be the following function: PRESSURE=7.5-1.789E-3*YCOORD [MPa] To specify this distribution of pressure we use the keyword OPERAREG. This keyword has tabular associated data. The keyword data items are as follows: item 1 - the modified property mnemonic; item 2 - the argument property mnemonic; item 3 - the marker mnemonic; item 4 - the marker value; item 5 - the data transformation mnemonic. This argument specifies, which operation is applied to the data; items 6-8 - the parameters of the operation. If the operation is MULTA then MUFITS do the following: 'modified property'='parameter1'+'parameter2'*'argument property' for all cells marked out as 'marker' is equal to 'marker value'. EQUALREG -- -------- -------- --------- --------- COMP1T 0.0 FLUXNUM 1 / TEMP 295.15 / -- -------- -------- --------- --------- PRES 4.5 FLUXNUM 222 / COMP1T 0.0 / TEMP 295.15 / -- -------- -------- --------- --------- PRES 7.5 FLUXNUM 111 / COMP1T 1.0 / TEMP 320.15 / -- -------- -------- --------- --------- / The other initial condition except the conditions for pressure as well as the boundary conditions are specified by the keyword EQUALREG. We specify that: data row 1 - the reservoir is initially saturated by pure H2O; data row 2 - the initial reservoir temperature is 295.15 K; data row 3 - the pressure at the right boundary (y=1676.4 m) is 4.5 MPa; data row 4 - there is pure H2O at the right boundary; data row 5 - the temperature at the right boundary is 295.15 K; data row 6 - the pressure at the left boundary (y=0 m) is 7.5 MPa; data row 7 - pure CO2 is injected through the left boundary; data row 8 - the temperature of the injected CO2 is 320.15 K. Note that the numbers 111 and 222 are the boundary markers, which are specified by the keyword BOUNDARY in the section GRID. =================== output specification ============================= RPTSOL PHST PRES TEMP SAT#LH2O SAT#SCO2 COMP1T ENTHT COMP2T / The properties, which we want to save in summary files during the simulation, can be specified using the keyword RPTSOL. We want to save the properties DEPTH, PHST, PRES etc. Note that SAT#LH2O is the saturation of the phase LH2O which was defined using keyword PHASES in the section PROPS. Note that the keyword RPTSOL has an arbitrary number (up to 10000) of associated data items. The data items are the property mnemonics. The mnemonics with the special meaning are as follows: CLEAN - targets MUFITS to delete all data items in the list RPTSOL; INSERT - the subsequent mnemonics are added to the list RPTSOL (default option); DELETE - the subsequent mnemonics are deleted from the list RPTSOL. The input of the same type is for the keywords RPTGRID, PHYSICS and REPORTS in this RUN-file. SCHEDULE #################### SCHEDULE section begins here #################### VARS Maximal pressure alteration is 3.0 MPa. PRES DMAX 3.0 / DEN DMAX 1000 / / REPORTS No reports in LOG file. NOTHING / ILUTFILL We change default linear solver 5.0 / settings. Ilut fill factor is equal to ILUTDROP 5. Ilut drop is equal to 0.001. 0.001 / TUNING -- timestep setup -- limit max next min 0.001 31 10 0.00001 / The timestep control can be tuned up using the keyword TUNING. The data items related to the timestep control are: item 1 - the timestep limit [days]. The next timestep can't be greater than this value; item 2 - the maximal timestep [days]; item 3 - the explicitly specified next timestep [days]; item 4 - the minimal timestep [days]. ===================================================================== TSTEP 50*365.25 / By the keyword TSTEP we define the time of output. The year duration in days is estimated as 365.25 days. We want to simulate the flow over 50 years and save the simulation results after every year in the simulation schedule. This behavior is specified by the argument '50*365.25'. Thus, the output will be saved in the summary files at times: 365.25, 730.50, 1095.75, etc. days. When the simulator comes to this record TSTEP in the RUN-file it performs simulation and produces output for the described times. POST ####################### POST section begins here ##################### CONVERT We convert the output to ParaView compatible format. END #####################################################################