TOUGH4 User Manual
  • Quick Entry to Keywords for Data Input
  • 1️⃣INTRODUCTION
    • About TOUGH
    • TOUGH Development History
    • TOUGH4 Implementation
    • Scope and Methodology
  • 2️⃣WHAT IS NEW IN TOUGH4
  • 3️⃣CODE COMPILATION AND INSTALLATION
    • Setup for Compilation
    • Code Compilation
      • 1. Compilation of TOUGH4 using Visual Studio
      • 2. Compilation of TOUGH4 on Linux-like platform
    • Installation
    • Running the Executable for Simulations
  • 4️⃣GOVERNING EQUATIONS
    • Mass-Balance Equation
    • Accumulation Terms
    • Flux Terms
    • Sink and Source Terms
    • Virtual Node Well Treatment
    • Semi-Analytical Conductive Heat Exchange
    • Drift Model
    • Non-Darcy Flow
  • 5️⃣NUMERICAL METHOD
    • Space and Time Discretization
    • Interface Weighting Schemes
    • Initial and Boundary Conditions
      • Initial Conditions and Restarting
      • Neumann Boundary Conditions
      • Dirichlet Boundary Conditions
      • Atmospheric Boundary Conditions
      • Constant Temperature Boundary Conditions
    • Parallel computing schemes
    • Linear Solvers
    • Python Functions
      • Relative Permeability
      • Capillary Pressure
      • Initial Condition Calculation
      • Fetching Output Data
      • Fetching Thermophysical Property Data From NIST Webbook
      • Coupling With Third-Party Software
  • 6️⃣SOFTWARE ARCHITECTURE
    • Program Design
    • Data Structure
    • Linear Equation Setup
  • 7️⃣PROCESS MODELING
    • EOS1
    • EOS2
    • EOS3
    • EOS4
    • EOS6
    • EOS7
    • EOS9
    • ECO2
    • EWASG
    • TMVOC
    • Tracers/Decay Chain
    • Biodegradation Reaction
    • Wellbore Flow
    • Non-Darcy Flow
    • Enhanced Coal Bed Methane
  • 8️⃣PREPARATION OF MODEL INPUT
    • Input Formatting
    • Keywords and Input Data
      • TITLE
      • BIODG
      • CBMDA
      • CHEMP
      • COFT
      • CONNE
      • COUPL
      • DIFFU
      • ELEME
      • ENDCY
      • ENDFI
      • FLAC
      • FNIST
      • FOFT
      • FORCH
      • GASES
      • GENER
      • GOFT
      • HYSTE
      • INCON
      • INDOM
      • MESHM
      • MODDE
      • MOMOP
      • MULTI
      • OUTPU
      • PARAM
      • ROCKS
      • ROFT
      • RPCAP
      • SELEC
      • SOLVR
      • SPAVA
      • TIMBC
      • TIMES
      • TRACR
      • WELLB
    • Inputs for Initial Conditions
      • EOS1
      • EOS2
      • EOS3
      • EOS4
      • EOS6
      • EOS7
      • EOS9
      • ECO2
      • EWASG
      • TMVOC
    • Geometry Data
      • General Concepts
      • MESHMaker
      • Multiple-continuum processing
    • Inputs for MESHMaker
      • Generation of radially symmetric grids
        • RADII
        • EQUID
        • LOGAR
        • LAYER
      • Generation of rectilinear grids
      • MINC processing for fractured media
    • Adjustment of Computing Parameters at Run-time
  • 9️⃣OUTPUTS
  • 🔟VALIDATION AND APPLICATION EXAMPLES
    • EOS1
      • Problem 1 - Code Demonstration
      • Problem 2 - Heat Sweep in a Vertical Fracture (rvf)
      • Problem 3 - Five-spot Geothermal Production/Injection (rfp)
      • Problem 4 - Coupled Wellbore Flow (r1q)
      • Problem 5 - Five-Spot Geothermal Production/Injection under extremely high temperature
    • EOS2
      • Problem 1 -Five-spot Geothermal Production/Injection (rfp)
    • EOS3
      • Problem 1 - Code Demonstration (eos3p1)
      • Problem 2 - 1D TH Problem with Heating and Gas Source (by Guanlong Guo)
      • Problem 3 - Heat Pipe in Cylindrical Geometry (rhp)
      • Problem 4 - 3D Thermal Consolidation Test, Coupling with FLAC3D Simulator (by Guanlong Guo)
    • EOS4
      • Problem 1 - Code Demonstration (eos4p1)
      • Problem 2 - Heat Pipe in Cylindrical Geometry (rhp)
    • EOS6
      • Problem 1-Validation with EOS2
      • Problem 2-Noble Gas Transport
    • EOS7
      • Problem 1-Multiphase and Nonisothermal Processes in a System with Variable Salinity (rf1)
      • Problem 2-Thermal and Tracer Diffusion (EOS7R/rdif7)
      • Problem 3-Contamination of an Aquifer from VOC Vapors in the Vadose Zone (EOS7R/rdica)
      • Problem 4-Density, Viscosity, Solubility, and Enthalpy of Real Gas Mixtures (EOS7C/SAM7C1)
      • Problem 5-CO2 Injection into a Depleted Gas Reservoir (EOS7C2/SAM7C2)
      • Problem 6- CO2 Injection into a Saturated System (EOS7C/SAM7C3)
      • Problem 7-Density, Viscosity, and Enthalpy of Real Gas Mixtures (EOS7CA/SAM7CA1)
      • Problem 8-CO2 Injection into a Shallow Vadose Zone (EOS7CA/SAM7CA2)
      • Problem 9-Non-Isothermal Compressed Air Energy Storage in Reservoir (by Julien Mouli-Castillo)
    • EOS9
      • Page 1
    • ECO2
      • Problem 1-Demonstration of Initialization Options (ECO2N/rtab)
      • Problem 2-Radial Flow from a CO2 Injection Well (ECO2N/rcc3)
      • Problem 3-CO2 Discharge Along a Fault Zone (ECO2N/r1dv)
      • Problem 4-CO2 Injection into a 2-D Layered Brine Formation (ECO2N/rtp7)
      • Problem 5-Upflow of CO2 along a Deep Fault Zone (ECO2M/r1d)
      • Problem 6-Migration of a CO2 Plume in a Sloping Aquifer, Intersected by a Fault (ECO2M/rwaf)
      • Problem 7-GCS/GHE with a double-porosity reservoir (Case6_50kg_DP/ECO2NV2)
    • EWASG
      • Problem 1 - Brine Density Calculation (dnh)
      • Problem 2 - Production from a Geothermal Reservoir with Hypersaline Brine and CO2 (rhbc)
    • TMVOC
      • Problem 1-Initialization of Different Phase Conditions (r7c)
      • Problem 2-1-D Buckley-Leverett Flow (rblm)
      • Problem 3-Diffusion of components (rdif2)
      • Problem 4-Steam Displacement of a NAPL in a Laboratory Column (rtcem)
      • Problem 5-Steam Displacement of a Benzene-Toluene Mixture in a Laboratory Column (rbt)
      • Problem 6 -Air Displacement of a NAPL from a Laboratory Column (rad)
      • Problem 7-NAPL Spill in the Unsaturated Zone (r2dl)
    • T4.Well
      • Problem 1-Steady-state two-phase flow upward
      • Problem 2-Non-isothermal CO2 flow through a wellbore initially full of water
  • CONCLUSION REMARKS
  • REFERENCES
  • ACKNOWLEDGEMENT
  • Appendix
    • ☑️A: RELATIVE PERMEABILITY FUNCTIONS
      • IRP=1 Linear function
      • IRP=2 Power function
      • IRP=3 Corey's curves
      • IRP=4 Grant's curve
      • IRP=5 Perfectly mobile
      • IRP=6 Fatt and Klikoff function
      • IRP=7 van Genuchten-Mualem Model
      • IRP=8 Verma function
      • IRP=10 Modified Brooks-Corey Model
      • IRP=11 Modified van Genuchten Model
      • IRP=12 Regular hysteresis
      • IRP=13 Simple hysteresis
      • IRP=31 Three phase perfectly mobile
      • IRP=32 Modified Stone's first 3-phase method
      • IRP=33 Three-phase Parker's function
      • IRP=34 Alternative Stone 3-phase
      • IRP=35 Power-law function
      • IRP=36 Faust for two-phase Buckley-Leverett problem
      • IRP=37 Another alternative to Stone function
      • IRP=40 Table lookup
      • IRP=41 User-Defined relative permeability function
    • ☑️B: CAPILLARY PRESSURE FUNCTIONS
      • ICP=1 Linear function
      • ICP=2 Function of Pickens
      • ICP=3 TRUST capillary pressure
      • ICP=4 Milly’s function
      • ICP=6 Leverett’s function
      • ICP=7 van Genuchten function
      • ICP=8 No capillary pressure
      • ICP=10 Modified Brooks-Corey Model
      • ICP=11 Modified van Genuchten Model
      • ICP=12 Regular hysteresis
      • ICP=13 Simple hysteresis
      • ICP=31 Parker et al 3-phase function
      • ICP=32 Parker 3-phase function, alternative 1
      • ICP=33 Parker 3-phase function, alternative 2
      • ICP=34 Parker 3-phase function, alternative 3
      • ICP=40 Table lookup
      • ICP=41 User-Defined capillary pressure function
    • ☑️C: ADDITIONAL PROGRAM OPTIONS
    • ☑️D: DESCRIPTION OF FRACTURED FLOW
      • Multiple Continuum Approaches
      • Active Fracture Modle
Powered by GitBook
On this page
  1. PREPARATION OF MODEL INPUT
  2. Keywords and Input Data

ROCKS

ROCKS introduces material parameters for different reservoir domains.

Record ROCKS.1

Free Format for 9 parameters, or Format (A5, I5, 7E10.4)

MAT, NAD, DROK, POR, (PER (I), I = 1,3), CWET, SPHT

MAT material name (rock type). In wellbore simulation, the rock name for the wellbore cell must start with the letter “w” or “x”, where “w” indicates normal (open) wellbore cell whereas “x” indicates the wellbore cells filled with porous medium;

NAD if zero or negative, defaults will take effect for a number of parameters (see below);

≥1: will read another data record to override defaults.

≥2: will read two more records with domain-specific parameters for relative permeability and capillary pressure functions.

DROK rock grain density (kg/m3). If DROK is set to a very large value (typically 1.0E50), a constant temperature boundary condition can be specified (but variable pressure/saturation).

POR default porosity (void fraction) for all elements belonging to domain “MAT" for which no other porosity has been specified in block INCON.

PER(I) I = 1,3 absolute permeabilities along the three principal axes, as specified by ISOT in block CONNE.

CWET formation heat conductivity under fully liquid-saturated conditions (W/m ˚C).

SPHT rock grain specific heat (J/kg ˚C). Domains with SPHT > 10410^4104J/kg ˚C will not be included in global material balances. This provision is useful for boundary nodes, which are given very large volumes so that their thermo-dynamic state remains constant. Because of the large volume, inclusion of such nodes in global material balances would make the balances useless.

Some specific rock names may have special meanings. When a (dummy) domain named “SEED” is specified, the absolute permeabilities specified in PER(I) are modified by the block-by-block permeability modifiers (PM) according to

kn→kn′=kn∗ζnk_n\rarr k_n'=k_n*\zeta_nkn​→kn′​=kn​∗ζn​ (8-5)

Here, κn\kappa_nκn​ is the absolute (“reference”) permeability of grid block n, as specified in data block ROCKS for the domain to which that grid block belongs, is the modified permeability, and ζn\zeta_nζn​ is the PM coefficient. When PM is in effect, the strength of capillary pressure will be automatically scaled according to (Leverett, 1941)

Pcap,n→Pcap,n′=Pcap,n/ζnP_{cap,n}\rarr P_{cap,n}'=P_{cap,n}/\sqrt{\zeta_n}Pcap,n​→Pcap,n′​=Pcap,n​/ζn​​ (8-6)

No grid blocks should be assigned to this domain; the presence of domain ‘SEED’ simply serves as a flag to put permeability modification into effect. Random (spatially uncorrelated) PM data can be internally generated in TOUGH4. Alternatively, externally defined permeability modifiers may be provided as part of the geometry data (PMX) in block ELEME. Available PM options are:

(1) externally supplied : ζn=PMX−PER(2)\zeta_n=PMX-PER(2)ζn​=PMX−PER(2)

(2) “linear” : ζn=PER(1)×s−PER(2)\zeta_n=PER(1)\times s-PER(2)ζn​=PER(1)×s−PER(2)

(3) “logarithmic” : ζn=e−PER(1)×s−PER(2)\zeta_n=e^{-PER(1)\times s}-PER(2)ζn​=e−PER(1)×s−PER(2)

where s is a random number between 0 and 1

Data provided in domain ‘SEED’ are used to select the following options.

DROK random number seed for internal generation of "linear" permeability modifiers.

= 0: (default) no internal generation of "linear" permeability modifiers.

> 0: perform "linear" permeability modification; random modifiers are generated internally with DROK as seed.

POR random number seed for internal generation of "logarithmic" permeability modifiers

= 0: (default) no internal generation of "logarithmic" permeability modifiers.

> 0: perform "logarithmic" permeability modification; random modifiers are generated internally with POR as seed.

Note if both DROK and POR are specified as non-zero, DROK takes precedence. And if both DROK and POR are zero, permeability modifiers as supplied through ELEME data will be used.

PER(1) scale factor (optional) for internally generated permeability modifiers.

= 0: (defaults to PER(1) = 1): permeability modifiers are generated as random numbers in the interval (0, 1).

> 0: permeability modifiers are generated as random numbers in the interval (0, PER(1)).

PER(2) shift (optional) for internal or external permeability modifiers.

= 0: (default) no shift is applied to permeability modifiers.

> 0: permeability modifiers are shifted according to = – PER(2). All < 0 are set equal to zero.

Note that the domain ‘SEED’ is not required in TOUGH4 if externally defined permeability modifiers in block ELEME are used without any shift.

Other specific rock names:

(1) “REFCO”, input density, viscosity and compressibility at the reference pressure, temperature at data lot 5, 6, 7, 3, and 4, respectively. This is used by EOS9 only.

(2) “GEOTH”, input reference elevation, temperature, and geothermal gradient at data lot 5, 6, and 7. This is used for wellbore simulation only.

Record ROCKS.1.1 (optional, NAD ≥ 1 only)

Free format for 10 parameters, or Format (10E10.4)

COM, EXPAN, CDRY, TORTX, GK, XKD1-XKD5 (FOCM)

COM pore compressibility (Pa-1), (1/ϕ)(∂ϕ/∂P)T(1/\phi)(\partial \phi/\partial P)_T(1/ϕ)(∂ϕ/∂P)T​ (default is 0).

EXPAN pore expansivity (1/ ˚C), (1/ϕ)(∂ϕ/∂P)P(1/\phi)(\partial \phi/\partial P)_P(1/ϕ)(∂ϕ/∂P)P​ (default is 0).

CDRY formation heat conductivity under desaturated conditions (W/m ˚C), (default is CWET).

TORTX tortuosity factor for binary diffusion. If TORTX = 0, a porosity and saturation-dependent tortuosity will be calculated internally from the Millington and Quirk (1961) model, Eq. (4-11). When diffusivities, FDDIAG in data block DIFFU, are specified as negative numbers, τ0τβ=Sβ\tau_0\tau_\beta=S_\betaτ0​τβ​=Sβ​will be used.

GK Klinkenberg parameter b ( Pa−1Pa^{-1}Pa−1) for enhancing gas phase permeability according to the relationship kgas = k * (1 + b/P).

XKD1-5 Distribution coefficients for as more as 5 tracers in current rock, in the aqueous phase, m3kg−1m^3kg^{-1}m3kg−1. Distribution coefficients can also be inputted through key word “TRACR” for specific tracer.

Record ROCKS.1.2 (optional, NAD ≥ 2 only)

Free format for 11 parameters, or Format (I5, 5X,7E10.4)

IRP, (RP(I), I= 1,10)

IRP integer parameter to choose type of relative permeability function (see Appendix A).

Record ROCKS.1.2.1 (optional, IRP = 12 or 41, use the formatted input only)

Format (3E10.4)

RP(I), I= 8,10

Record ROCKS.1.3 (optional, NAD ≥ 2 only)

Free format for 14 parameters, or Format (I5, 5X,7E10.4)

ICP, (CP(I), I = 1,13)

Record ROCKS.1.3.1 (optional, ICP = 12 or 41, formatted input only)

Format (6E10.4)

CP(I), I = 8,13

CP(I) I = 8, ..., 13 parameters for capillary pressure function (Appendix B).

Record ROCKS.1.4 (optional, IRP=40 and ICP=40 only)

Free format for 1 parameter

Num_Sg

Num_Sg The total number of gas saturations (rows) for the input table of relative permeability and capillary pressure.

Record ROCKS.1.4.1 (optional, Num_Sg>0 only)

Free format for 4 parameters, or Format (4E10.4)

Sg, kg, kw, pc

sg gas saturation.

kg relative permeability in gas phases corresponding to gas saturation sg.

kw relative permeability in aqueous phases corresponding to gas saturation sg.

pc capillary pressure corresponding to gas saturation sg.

Repeat record 1.4.1 for Num_Sg times.

Repeat records 1, 1.1, 1.2, 1.2.1., 1.3, 1.3.1, 1.4, and 1.4.1 for different reservoir domains.

Record ROCKS.2 A blank record closes the ROCKS data block.

Used in: All EOS modules

Example:

ROCKS

SANDY, 2, 2500., 1.e-4, 1.e-12*3, 2.5 ,1000. //ROCKS.1

1.e-8, , , 0.25 //ROCKS.1.1

1, 0., 0., 1., 1., //ROCKS.1.2

8 //ROCKS.1.3

PreviousPARAMNextROFT

Last updated 5 months ago

(3) “QLOSS”, input parameters for analytical solution of radial heat exchange between fluids in a wellbore and the surrounding formation for option MOP(15)=5. Details of the parameters for input can be found at the discussion for input. The initial temperature of surrounding rock can be provided through POR in record ROCKS.1.

FOCM fraction of organic carbon present in domain; used for calculating amount of VOC adsorbed. FOCM is used only in TMVOC. FOCM shares the same input data lot with XKD1. This conflict may be avoided through IE(25), see . The purpose of remaining this option is to maintain the compatibility of input file for TMVOC and other modules from TOUGH3.

RP(I) I = 1, ..., 10 (use free format) or 7 (use formatted input) parameters for relative permeability function (.

RP(I) I = 8, ..., 10 parameters for relative permeability function ().

ICP integer parameter to choose type of capillary pressure function (see ).

CP(I) I = 1, ..., 13 (for free format) or 7 (for formatted input) parameters for capillary pressure function ().

8️⃣
MOP(15)
Appendix C
Appendix A)
Appendix A
Appendix B
Appendix B