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. Appendix
  2. A: RELATIVE PERMEABILITY FUNCTIONS

IRP=12 Regular hysteresis

IRP = 12 Regular hysteresis

The hysteretic form of the van Genuchten model (Parker and Lenhard, 1987; Lenhard and Parker, 1987) has been implemented. Details of the implementation are described in Doughty (2013). The regular hysteresis model is invoked by setting both IRP and ICP to 12.

krl=Sˉl[1−(1−Sˉgt1−SˉlΔ)(1−(Sˉl+Sˉgt)1/m)m−(Sˉgt1−SˉlΔ)(1−(SˉlΔ)1/m)m]2{k_{rl}} = \sqrt {{{\bar S}_l}} {\left[ {1 - \left( {1 - \frac{{{{\bar S}_{gt}}}}{{1 - \bar S_l^\Delta }}} \right){{(1 - {{({{\bar S}_l} + {{\bar S}_{gt}})}^{1/m}})}^m} - \left( {\frac{{{{\bar S}_{gt}}}}{{1 - \bar S_l^\Delta }}} \right){{(1 - {{(\bar S_l^\Delta )}^{1/m}})}^m}} \right]^2}krl​=Sˉl​​[1−(1−1−SˉlΔ​Sˉgt​​)(1−(Sˉl​+Sˉgt​)1/m)m−(1−SˉlΔ​Sˉgt​​)(1−(SˉlΔ​)1/m)m]2

krg=krgmax⁡(1−(Sˉl+Sˉgt))γ(1−(Sˉl+Sˉgt)1/m)2m{k_{rg}} = {k_{rg\max }}{(1 - ({\bar S_l} + {\bar S_{gt}}))^\gamma }{(1 - {({\bar S_l} + {\bar S_{gt}})^{1/m}})^{2m}}krg​=krgmax​(1−(Sˉl​+Sˉgt​))γ(1−(Sˉl​+Sˉgt​)1/m)2m

where

Sˉl=Sl−Slr1−Slr{\bar S_l} = \frac{{{S_l} - {S_{lr}}}}{{1 - {S_{lr}}}}Sˉl​=1−Slr​Sl​−Slr​​, SˉlΔ=SlΔ−Slr1−Slr\bar S_l^\Delta = \frac{{S_l^\Delta - {S_{lr}}}}{{1 - {S_{lr}}}}SˉlΔ​=1−Slr​SlΔ​−Slr​​, Sˉgt=SgrΔ(Sl−SlΔ)(1−Slr)(1−SlΔ−SgrΔ){\bar S_{gt}} = \frac{{S_{gr}^\Delta ({S_l} - S_l^\Delta )}}{{(1 - {S_{lr}})(1 - S_l^\Delta - S_{gr}^\Delta )}}Sˉgt​=(1−Slr​)(1−SlΔ​−SgrΔ​)SgrΔ​(Sl​−SlΔ​)​

SgrΔ=11/(1−SlΔ)+1/Sgrmax⁡−1/(1−Slr)S_{_{gr}}^\Delta = \frac{1}{{1/(1 - S_l^\Delta ) + 1/{S_{gr\max }} - 1/(1 - {S_{lr}})}}Sgr​Δ​=1/(1−SlΔ​)+1/Sgrmax​−1/(1−Slr​)1​

SlΔS_l^\Delta SlΔ​ is the turning-point saturation, and SgrΔS_{gr}^\DeltaSgrΔ​ is the residual gas saturation.

RP(1) = m; van Genuchten m for liquid relative permeability (need not equal CP(1) or CP(6)); krlk_{rl}krl​ uses the same m for drainage and imbibition.

RP(2) = SlrS_{lr}Slr​ : klr(Slr)k_{lr}(S_{lr})klr​(Slr​) = 0, krg(Slr)=krgmaxk_{rg}(S_{lr}) = k_{rgmax}krg​(Slr​)=krgmax​. Must have SlrS_{lr}Slr​ > SlminS_{lmin}Slmin​ in capillary pressure (CP(2)). SlrS_{lr}Slr​ is minimum saturation for transition to imbibition branch. For SlS_{l}Sl​ < SlrS_{lr}Slr​ , curve stays on primary drainage branch even if SlS_{l}Sl​ increases.

RP(3) = SgrmaxS_{grmax}Sgrmax​; maximum possible value of SgrΔS_{gr}^\DeltaSgrΔ​ . Note that the present version of the code requires that SlrS_{lr}Slr​ + SgrmaxS_{grmax}Sgrmax​ < 1, otherwise there will be saturations for which neither fluid phase is mobile, which the code cannot handle. Setting SgrmaxS_{grmax}Sgrmax​ = 0 effectively turns off hysteresis. As a special option, a constant, non-zero value of Sgr may be employed by setting CP(10)>1 and making RP(3) negative. The code will set SgrΔS_{gr}^\DeltaSgrΔ​ = -RP(3) for all grid blocks at all times.

RP(4) = γ\gammaγ; typical values 0.33 – 0.50.

RP(5) = krgmaxk_{rgmax}krgmax​

RP(6) = fitting parameter for krg extension for SlS_{l}Sl​ < SlrS_{lr}Slr​ (only used when < 1); determines type of function for extension and slope of krgk_{rg}krg​ at SlS_{l}Sl​ = 0.

≤ 0 use cubic spline for 0 < SlS_{l}Sl​ < SlrS_{lr}Slr​ , with slope at SlS_{l}Sl​ = 0 of RP(6)

> 0 use linear segment for 0 < SlS_{l}Sl​ < RP(8)Slr and cubic spline for RP(8) SlrS_{lr}Slr​ < SlS_{l}Sl​ < SlrS_{lr}Slr​ , with slope at SlS_{l}Sl​ = 0 of –RP(6).

RP(7) = numerical factor used for krl extension to SlS_{l}Sl​ > Sl∗S_{l}^*Sl∗​ ,. RP(7) is the fraction of Sl* at which krl curve departs from the original van Genuchten function. Recommended range of values: 0.95–0.97. For RP(7)=0, krl =1 for SlS_{l}Sl​ > Sl∗S_{l}^*Sl∗​ (not recommended).

RP(8) = numerical factor used for linear krg extension to SlS_{l}Sl​ < SlrS_{lr}Slr​ (only used when krgmaxk_{rgmax}krgmax​< 1). RP(8) is the fraction of SlrS_{lr}Slr​ at which the linear and cubic parts of the extensions are joined.

RP(9) = flag to turn off hysteresis for krlk_{rl}krl​ (no effect on Pc and krgk_{rg}krg​ ; to turn off hysteresis entirely, set SgrmaxS_{grmax}Sgrmax​ = 0 in RP(3)).

=0 hysteresis is on for krl

=1 hysteresis is off for krl (force krlk_{rl}krl​ to stay on primary drainage branch ( krldk_rl^{d}kr​ld) at all times)

RP(10) = mgasm_{gas}mgas​ ; van Genuchten m for gas relative permeability (need not equal CP(1) or CP(6)); krgk_{rg}krg​ uses same mgas for drainage and imbibition. If zero or blank, use RP(1) so that mgasm_{gas}mgas​ = m.

PreviousIRP=11 Modified van Genuchten ModelNextIRP=13 Simple hysteresis

Last updated 1 year ago

☑️