Cold CO injection into a reactive, elastic reservoir - a multi-phase THMC problem

Another example describes cold CO injection into a warmer, elastic reservoir, and the MOOSE results were benchmarked against analytical solutions. This page extends that example by assuming the reservoir is chemically reactive to demonstrate how to solve thermal-hydraulic-mechanical-chemical (THMC) problems. There are two possibilities for including geochemical reactions in such a model:

  1. use the simple chemical-reactions functionality built into the PorousFlow module, as described in this page;

  2. couple with the Geochemistry module for more sophisticated geochemical modelling functionality

The geochemistry included here is only meant to illustrate how the functionality of the PorousFlow module could be used, and is not intended to represent reactions in any realistic reservoir.

The chemical reaction

Consider a hypothetical, kinetically-controlled, dissolution reaction of the form In this equation

  • [dimensionless] is the stoichiometric coefficient for basis chemical species

  • [mol] is the mole number of the basis chemical species

  • [mol] is the mol number of mineral that is being dissolved

The general form of the reaction rate for such an equation in PorousFlow is where

  • [L(mineral)/L(solution)/s] is the reaction rate

  • [dimensionless] is the saturation of the phase involved in the chemical reaction

  • [dimensionless] is the porosity

  • [mol.m.s] is the intrinsic reaction rate

  • [m/L(solution)] is the specific reactive surface area

  • [L(mineral).mol] is the molar volume of the mineral

  • [J.mol] is the activation energy

  • [J.mol.K] is the gas constant

  • [K] is the temperature

  • [K] is the reference temperature

  • is the activity of the primary species

  • is the equilibrium constant for the reaction

  • and are dimensionless exponents

This reaction rate without the term is computed using a PorousFlowAqueousPreDisChemistry Material. The time-dependent volume-fraction of mineral is computed using a PorousFlowAqueousPreDisMineral Material.

In the case at hand, it is assumed that the hypothetical reaction only occurs when the gas phase is present. It is also assumed that the activities of all the primary chemical species are fixed. Physically, this could be due to the CO(g) causing changes in the equilibrium aqueous geochemistry, perhaps by altering the pH, which in turn causes mineral dissolution. To model this, can be taken to be the gas saturation and . It is also assumed the Arrhenius prefactor is irrelevant.

These idealised, hypothetical assumptions lead to a particularly simple reaction rate. In the presence of gas, the reaction rate is controlled by the temperature-dependence of the equilibrium constant, and reads with . Assuming that and there is some gas present, this reaction will continue until all the mineral has dissolved.

Using s, the Materials that compute the reaction rate and the resulting Mineral concentration (m(mineral)/m(porous-material)) are

  [predis]
    type = PorousFlowAqueousPreDisChemistry
    num_reactions = 1
    primary_concentrations = 1.0 # fixed activity
    equilibrium_constants_as_log10 = true
    equilibrium_constants = eqm_const
    primary_activity_coefficients = 1.0 # fixed activity
    reactions = 1
    kinetic_rate_constant = 1E-6
    molar_volume = 1.0
    specific_reactive_surface_area = 1.0
    activation_energy = 0.0 # no Arrhenius
  []
  [mineral_conc]
    type = PorousFlowAqueousPreDisMineral
    initial_concentrations = 0.1
  []
(modules/porous_flow/examples/thm_example/2D_c.i)

The PorousFlowDictator must be enhanced to include the number of reactions and a specification of the phase number of the phase involved in these reactions.

  [dictator]
    type = PorousFlowDictator
    porous_flow_vars = 'temp pwater sgas disp_r'
    number_fluid_phases = 2
    number_fluid_components = 2
    number_aqueous_kinetic = 1
    aqueous_phase_number = 1
  []
(modules/porous_flow/examples/thm_example/2D_c.i)

The phase involved in the reactions is usually the aqueous phase, hence the aqueous in the keywords, but in this case setting aqueous_phase_number = 1 means the in the above equation is actually the gas saturation.

The equilibrium constant is assumed to be temperature dependent:

  [eqm_const_auxk]
    type = ParsedAux
    variable = eqm_const
    coupled_variables = temp
    expression = '(358 - temp) / (358 - 294)'
  []
(modules/porous_flow/examples/thm_example/2D_c.i)

Impact of dissolution on porosity

In PorousFlow, the porosity can depend on mineral concentration as well as the effective porepressure, strain and temperature. In this case, assume that the porosity only depends on the degree of mineralisation: Here:

  • [dimensionless] is the porosity

  • [dimensionless] is the reference porosity when

  • [m(mineral)/m(porous-material)] is the "concentration" of the mineral that is dissolving

  • [m(mineral)/m(porous-material)] is the reference concentration

For this example, assume and . The relevant Material is:

  [porosity_reservoir]
    type = PorousFlowPorosity
    porosity_zero = 0.2
    chemical = true
    reference_chemistry = 0.1
    initial_mineral_concentrations = 0.1
  []
(modules/porous_flow/examples/thm_example/2D_c.i)

Results

Figure 1 shows the results. The porosity changes due to reservoir dissolution are kinetically controlled and temperature-dependent, so do not occur as soon as the gas front reaches any given point. Nevertheless, after gas has occupied a region for some time and cooled it, the mineral will completely dissolve, resulting in a porosity of .

Comparing with the case that has no chemistry active (Figure 2 from here), it is seen that the CO front appears at a similar position, but the gas saturation profile is influenced by the porosity changes.

Figure 1: Gas saturation and porosity are impacted through reservoir-rock dissolution.

Figure 2: Gas saturation when there is no chemistry active.

References

No citations exist within this document.