TOUGH+RealGasBrine for CO2 injection


I am working on CO2 injection in depleted Oil and Gas reservoirs for enhanced oil recovery and sequestration. I am planning to buy TOUGH+RealGasBrine for this purpose, and plan to couple it with FLAC3D.

I wanted to know if TOUGH+RGB has the capability to execute such simulation, as it is a continuation of TOUGH2 capabilities and I see CO2 properties included, but not a lot of focus is given on it in the manual.

Also if present, how the capabilities are compared to TOUGH2 ECO2N/ECO2M.

Thanks in advance!



12replies Oldest first
  • Oldest first
  • Newest first
  • Active threads
  • Popular
  • A late contribution to an old post.

    I have never used TOUGH+RealGasBrine V.1.0 (T+RGB), but I have looked to the user’s guide (Moridis and Freeman, 2014) quite carefully when I was interested to the T+RGB capabilities in modeling tight gas reservoirs.

    T+RGB can simulate the thermodynamics of fluid mixtures composed by water, NaCl, and up to 11 real gases (CH4, C2H6, C3H8, n-C4H10, i-C4H10, CO2, H2S, O2, N2, C2H5OH, and H2)  including inorganic gases often encountered in gas reservoirs (CO2, H2S, N2) and the lighter alkanes up to C4 constituting most of the components found in ‘dry’ gas reservoirs (not enough for condensate gas reservoirs).

    As clearly stated in the user’s guide, T+RGB was developed for gas reservoirs, including tight sands and shale gas, but not for oil reservoirs. In fact, the mixture components can be partitioned among 3 phases: the aqueous, the gas and the solid salt (halite) phases. A condensed non-aqueous phase (the oil phase or a CO2-rich liquid phase) is not foreseen.

    Gas phase properties are computed using cubic EOS (PR, RK, SRK) and other EOS and correlations (such as the LK EOS for the enthalpy of real gas mixture, the Quinones-Cisneros model for real gas mixture viscosity, etc.).

    The equilibrium between the aqueous and gas phase in solved by equating the activity of each component in both phases, but the details of the procedure used are not specified. They probably use the GasEOS package by M. Reagan (2005) or an improved version of it.

    Thus, the possible applications of T+RGB, looking at the code capabilities and at what is specifically stated in the user’s guide, are:

    -          the non-isothermal two- (for pure water) or three-phase (for brine) flow of an aqueous phase and a real gas mixture in a gas-bearing medium, with a particular focus in ultra-tight (such as tight-sand and shale gas) systems;

    -          the geologic storage of greenhouse gas mixtures;

    -          the behavior of geothermal reservoirs with multi-component noncondensable gas mixtures;

    -          the transport of water and released H2 in nuclear waste storage applications.

    It can model the CO2 sequestration in both saline aquifers and gas reservoirs, providing the sequestration occurs at temperature above that allowing the condensation of a CO2-rich liquid mixture. Enhanced gas recovery with CO2 sequestration can be modeled.

    The simulated conditions can go up to 1000 bar (using the IAPWS-IF97 correlations) or above 1000 bar using IAPWS correlations requiring iterative calculations. No detailed info seems to be given about the temperature limits. The correlations for water, brine and solid salt (when Driesner’s correlations are chosen) can be safely used up to 350°C (and up to 365°C with minor errors). The correlations for the real gas mixture could have a lower T limit, in particular the approach for the equilibrium of aqueous and gas phases (mutual solubilities of H2O in the gas phase, and gas components solubility in the aqueous phase).

    T+RGB seems to be able to simulate the same conditions modeled by ECO2N V.1 and V.2, even though its calculation of CO2-H2O mutual solubilities should be compared with those of ECO2N. With respect to ECO2N it has the advantage to model also real gas reservoirs. Modeled gas composition accounts for more gases than EOS7C V.1.0 (limited to CH4-CO2, or CH4-N2).

    It cannot model the 3-phase flow of a aqueous, a gas and a condensed CO2-rich phase as ECO2M. This capability might be required in shallow aquifers or to study the migration of the CO2-rich supercritical phase towards the surface in case of leakages from the deep disposal aquifer.


    Like 1
    • Alfredo Battistelli 

      am getting the error"


       >>>>>>>>>>   F L O W   S I M U L A T I O N   A B O R T E D   <<<<<<<<<< "

      I know I have to change this 2800 to somewhere around 50000 for it to run my simulation (26001 ) elements

      but i searched all files, couldn't locate where to change?


      I found the error comes from file HRS_Inputs.f




      where to change this value of 2800 to 50000 ? i am perplexed , i am not familiar with fortran at all

      here's a snapshot of all files in the code and relevant code files are uploaded here.

      Please help me locate where to change 2800 to 50000

      i read the discussion

      but still couldn't do it

    • Alfredo Battistelli Thanks Alfredo! This helps a lot. I had assumed that T+RGB had similar capabilities as ECO2M for 3-phase flow. I also had another query if you have some idea: what part of the source code do I edit to suppress the dissolution of CO2 in H2O?

    • Yashvardhan Verma 

      I do not have the code, so I cannot answer your question. The user's guide does not help at this respect.

      As gas solubility in the aqueous phase is computed from phase equilibrium calculations involving the computation of components fugacity in both phases (gaseous & aqueous), I guess that simply neglecting gas solubility should not be possible. And would also alter considerably the behaviour of the gas-brine mixture ( an infinitesimal amount of CO2 in the liquid brine would force the gas phase to evolve).



      Like 1
    • Yashvardhan Verma I don't know if this will work for your problem, but when I wanted to inject supercritical CO2 into water and have no dissolution, I specified the water to be saturated with CO2 as an initial condition.  Then none of the injected CO2 dissolved. Christine

      Like 1
    • Christine Doughty Thank you for your comment. I can try doing that but I think the increased pressure through CO2 injection would force more CO2 dissolution in the aqueous phase, even if it is initially saturated.

      Alfredo Battistelli On a closer look at the source code, I found the subroutine Gas_solubility in RealGas_Properties.f90 and I changed the calculation of gas molality and set it to zero, indirectly setting the mass fraction dissolved in aqueous phase zero as well. I am not sure of all the implications of this but I will try and see if it works.



  • An update: i found the following piece of code in HRS_Inputs.f  this code checks number of mesh elements and compares with MaxNum_Elem

    and consequently, causes simulation to be skipped

    DO_NumEle1: DO n=1,10000000
    ! -------------
    ! ...... Check if "MaxNum_Elem" is exceeded
    ! -------------
             IF(n > MaxNum_Elem) THEN
                WRITE(6,6001) MaxNum_Elem
                NoFloSimul = .TRUE.              ! Bypass simulation
             END IF
    ! ...... Initialize the element name
             elem(n)%name = '        '
    ! >>>>>>>>>>>>>>>>>>
    ! ......
    ! ...... For 5-character elements
    ! ......
    ! >>>>>>>>>>>>>>>>>>

    But still i can't find where to change MaxNum_Elem??

  • I don't know this version of the code and don't have it, but it should be easy to find where MaxNum_Elem is set. You may need to extend your search, i.e., not just in the *.f Fortran source code files, but there may be include files. Under Linux/Unix, I would just go to the directory where all the source code files are and type:

    grep -i maxnum_elem *

    and I'm sure it will pop up.


    • Stefan Finsterle i tried searching all files

      still i had no luck

      i can send you all thesourcee code files, if you have some free time

  • The "HRS" prefix suggests this is HydrateResSim, a much older version of our codes distributed and supported by NETL. 


    TOUGH+ lets you set the variable Max_NumElem (spelling different than above) in the MEMORY block of the main input file. The only versions of TOUGH+ with a hardwired Max_NumElem would be unlicensed versions of the code used during LBNL's training courses.

    • Matthew Reagan yes you are right 

      This is Hydrateressim, a much older version of your code, released prior to tough+hydrate

      But , plz explain clearly, how can i change Max_NumElem in Hydrateressim code files

      its limited to 2800 elements

      i want to run simulation with 50,000

      so, where to change this Max_NumElem??

    • telegramboy i got the solution and its working

Like Follow
  • 3 mths agoLast active
  • 12Replies
  • 97Views
  • 6 Following