Tutorial 3 – CO2 Storage site connected to a nearby hydrocarbon field

You will learn about :

  • set up a model using a reservoir geometry and geology given in ECLIPSE format

  • use calendar dates to define simulation events

  • set up horizontal wells

What do you need to run this tutorial:

Five input files that can be downloaded using the following links:

Tutorial sections:

Problem description

This tutorial describes a CO2 storage problem into a saline aquifer in proximity of a hydrocarbon field. As the two are pressure-connected, the depletion of the hydrocarbon field causes a pressure gradient that drives the CO2 plume migration. The depletion of the hydrocarbon field is modelled using a dummy well producing brine. The storage layer is split in two compartments by a fault, which is crossed by the CO2 plume during the post-injection migration phase.

The target layer extends 3 km x 3 km in the horizontal directions, and has a thickness of about 100 meters.

../../_images/tut3_im1.png

Setup of the input file

With a text editor open the input deck provided for this tutorial, ccs_3df.in. The explanation below discuss only sections with instructions not covered in Tutorial 1.

Grid

You must define the simulation grid and its static properties (permeabilities, porosities, etc.) by an include file in the grid block:

GRID
  TYPE grdecl ccs_3df.grdecl
END

This the ccs_3df.grdecl file provided with this tutorial, which you can open with a text editor:

DIMENS
30 30 12 /

external_file ccs_3df_geom.grdecl

external_file ccs_3df_prop.grdecl

EQUALS
 ACTNUM 0 7 7 15 15 1 1
 ACTNUM 0 30 30 29 29 12 12
/

The instructions describe a grid of 10800 blocks, with their locations defined by the coordinates of their corner points, listed in the include file “ccs_3df_geom.grdecl”, and their static properties (porosity and permeability) given in the other include file “ccs_3df_prop.grdecl”. These two files follow the format of a GRDECL Grid, as any other input card defined in ccs_3df.grdecl.

This tutorial shows also an example of deactivating cells using the ACTNUM keyword.

Time

In the time block you can use calendar dates to define the start and end of the simulation. In this tutorial a 200 years simulation is set up, starting from 1 JAN 2025:

TIME
  START_DATE 1 JAN 2025
  FINAL_DATE 1 JAN 2225  ! 200 years simulation
  INITIAL_TIMESTEP_SIZE 1 d
  MAXIMUM_TIMESTEP_SIZE 30 d at 0. d
  MAXIMUM_TIMESTEP_SIZE 1 y at 10 y
END

Output

You can ask for a solution report every 20 time steps and for key events such as the start and stop of CO2 injection, the stop of hydrocarbon production and the simulation end. You can include the reporting of these key events by specifying the number of days since the simulation START_DATE:

OUTPUT
  MASS_BALANCE_FILE
   PERIODIC TIMESTEP 1
  END
  ECLIPSE_FILE
    PERIOD_SUM TIMESTEP 5
    PERIOD_RST TIMESTEP 20
    WRITE_DENSITY
    ! 1 JAN 2027 =   730 days - no leap years between 2025 and 2027 - CO2 injection starts
    ! 1 JAN 2031 =  2191 days -  1 leap years between 2025 and 2031 - CO2 injection stops
    ! 1 JAN 2033 =  2922 days -  2 leap years between 2025 and 2033 - Production stops
    ! 1 JAN 2025 = 73048 days - 48 leap years between 2025 and 2225 - Simulation ends
    TIMES d 730 2191 2922 73048
    OUTFILE
  END
  LINEREPT
END

As the simulator does not support reporting dates, when converting to the number of days you must account explicitly for leap years. Although this is an inconvenient, it helps to identify events when monitoring the simulation screen output or log files, where the physical time progress is given in days.

Wells

You can define an horizontal CO2 injector by including completed grid blocks one by one, specifying the X or Y drilling direction.

In this tutorial, the horizontal injector is defined by 8 completions, all in the layer above the bottom one. The injector is shut during the first 2 years, it then opens on 1 JAN 2027 with a target mass rate of 0.682 Mt/year, and it shuts on 1 JAN 2031.

WELL_DATA injg
  CIJK_D 21 21 11 11
  CIJK_D 22 22 11 11
  CIJK_D 23 23 11 11
  CIJK_D 24 24 11 11
  CIJK_D 24 25 11 11
  CIJK_D 25 25 11 11
  CIJK_D 25 26 11 11
  CIJK_D 26 26 11 11
  CONST_DRILL_DIR DIR_X
  DIAMETER 0.1524 m
  WELL_TYPE GAS_INJECTOR
  BHPL     400    Bar
  SHUT
  DATE 1 JAN 2027            ! Open injector 2 years after simulation starts
  OPEN
  TARG_GM 0.682 Mt/y
  DATE 1 JAN 2031            ! Shut well 4 years after injection started
  SHUT
END

The brine producer that models the pressure depletion caused by the nearby hydrocarbon field, is vertical and located at the opposite corner of the injector, in the other side of the fault.

Production occurs since the start of the simulation and lasts 8 years until 1 JAN 2033.

WELL_DATA prod
  CIJK_D 1 1 1 12
  DIAMETER 0.1524 m
  WELL_TYPE PRODUCER
  BHPL      150 Bar
  TARG_WSV  1000 m^3/day
  DATE 1 JAN 2033            ! Close producer 8 years after simulation starts
  SHUT
END

After the simulation has completed the first time step and produced an output for the initial solution, you can open the CCS_3DF.GRID output file with ResInsight and display the well location. To do this click on the icon “Show Well Cells”:

../../_images/tut3_im2.png

You will see a display like the one below:

../../_images/tut3_im3.png

Run on your Ubuntu Desktop

Open a terminal window, navigate to the folder where you have downloaded the input files for this tutorial and launch a simulation.

You can use file pft.sh script to run the simulation using the following command:

./pft.sh  CCS_3DF.in 4

This will run the case on 4 cores. As the simulation progresses the screen output shows you the physical time progress, the time step size, and at the end of each time step the values of the field gas injection rate and total (fgir, fgit), the field average pressure (fpav), etc.

../../_images/tut3_im4.png

If you want to run the case in the background, and write the screen output on a log file, use the following command:

nohup ./pft.sh DS_3DF.in 4 > CCS_3DF.log &

The screen output will be saved to CCS_3DF.log.

Run on the OGS WebApp

Login into your OGS account.

Upload the input deck CCS_3DF.in, and upload and link the following external files:

  • ccs_3df.grdecl

  • ccs_3df_geom.grdecl

  • ccs_3df_prop.grdecl

  • co2_dbase.dat

Turn on a small test machine, with maximum duration of 1 hour.

Submit to the test machine with 8 cores.

Once the run is complete, download all the output files into a folder you can access later to analyse the results.

Analyse the results

Launch ResInsight, and open the “CCS_3DF.GRID” file. In the dynamic property select Pressure. Then expand “Cell Result” in the left-side menu, and in the bottom left, under “Mapping”, “Range Type”, select “Min and Max for the Current Time Step”.

../../_images/tut3_im5.png

Then on the top bar select the report date at the start of the injection, 1 JAN 2027:

../../_images/tut3_im6.png

When the injection starts, the production has already been going for two years, creating a low pressure region around the injector, in a shallower layer already at lower pressure due to hydrostatic pressure.

Now click again on “Cell Result” on the left-side menu, and select gas saturation (SGAS) in the property editor. Select two times to analyse, the end of the injection (1 JAN 2031) and the end of the simulation (1 JAN 2225):

../../_images/tut3_im7.png
../../_images/tut3_im8.png