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. B: CAPILLARY PRESSURE FUNCTIONS

ICP=12 Regular hysteresis

ICP = 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 hysteretic model is invoked by setting both IRP and ICP to 12.

Pc=−P0p[(Sl−Slmin⁡1−SgrΔ−Slmin⁡)−(1mp)−1](1−mp){P_c} = - P_0^p{\left[ {{{\left( {\frac{{{S_l} - {S_{l\min }}}}{{1 - S_{gr}^\Delta - {S_{l\min }}}}} \right)}^{ - \left( {\frac{1}{{{m^p}}}} \right)}} - 1} \right]^{(1 - {m^p})}}Pc​=−P0p​[(1−SgrΔ​−Slmin​Sl​−Slmin​​)−(mp1​)−1](1−mp)

where

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​

CP(1) = mdm^dmd; van Genuchten m for drainage branch Pcd(Sl)P_{c}^d(S_l)Pcd​(Sl​).

CP(2) = SlminS_{lmin}Slmin​; saturation at which original van Genuchten Pc goes to infinity.

Must have SlminS_{lmin}Slmin​< SlrS_{lr}Slr​ , where SlrS_{lr}Slr​ is the relative permeability parameter RP(2).

CP(3) = P0dP_{0}^dP0d​; capillary strength parameter for drainage branch Pcd(S1)P_{c}^d(S_1)Pcd​(S1​) [Pa].

CP(4) = Pc,maxP_{c,max}Pc,max​; maximum capillary pressure [Pa] obtained using original van Genuchten PcP_cPc​. Inverting the original van Genuchten function for Pc,maxP_{c,max}Pc,max​ determines SmS_mSm​, the transition point between the original van Genuchten function and an extension that stays finite as SlS_lSl​ goes to zero. For functional form of extension, see description of CP(13) below.

CP(5) = scale factor for pressures for unit conversion (1 for pressure in Pa).

CP(6) = mwm^wmw; van Genuchten m for imbibition branch Pcw(Sl)P_{c}^w(S_l)Pcw​(Sl​). Default value is CP(1) (recommended unless compelling reason otherwise).

CP(7) = Pw0P_w^0Pw0​; capillary strength parameter for imbibition branch Pcw(Sl)P_{c}^w(S_l)Pcw​(Sl​) [Pa]. Default value is CP(3) (recommended unless compelling reason otherwise).

CP(8) = parameter indicating whether to invoke non-zero Pc extension for SlS_lSl​ > Sl∗S_l^*Sl∗​

= 1 – SgrΔS_{gr}^\DeltaSgrΔ​

=0 no extension; PcP_cPc​ = 0 for SlS_lSl​ > Sl∗S_l^*Sl∗​

>0 power-law extension for Sl∗S_l^*Sl∗​ <SlS_lSl​ <1, with PcP_cPc​ = 0 when SlS_lSl​ = 1. A non-zero CP(8) is the fraction of Sl∗S_l^*Sl∗​ at which the Pc curve departs from the original van Genuchten function. Recommended range of values: 0.97–0.99.

CP(9) = flag indicating how to treat negative radicand, which can arise for SlS_lSl​> SlΔ23S_l^{\Delta23}SlΔ23​ for second-order scanning drainage curves (ICURV = 3), where SlΔ23S_l^{\Delta23}SlΔ23​ is the turning-point saturation between first-order scanning imbibition (ICURV = 2) and second-order scanning drainage. None of the options below have proved to be robust under all circumstances. If difficulties arise because SlS_lSl​> SlΔ23S_l^{\Delta23}SlΔ23​ for ICURV = 3, also consider using IEHYS(3) > 0 or CP(10) < 0, which should minimize the occurrence of SlS_lSl​> SlΔ23S_l^{\Delta23}SlΔ23​ for ICURV = 3.

=0 radicand = max(0,radicand) regardless of SlS_lSl​ value

=1 if SlS_lSl​> SlΔ23S_l^{\Delta23}SlΔ23​ , radicand takes value of radicand at SlS_lSl​= SlΔ23S_l^{\Delta23}SlΔ23​

=2 if SlS_lSl​> SlΔ23S_l^{\Delta23}SlΔ23​ , use first-order scanning imbibition curve (ICURV = 2)

CP(10) = threshold value of ∣ΔS∣\vert \Delta S \vert∣ΔS∣ (absolute value of saturation change since previous time step) for enabling a branch switch (default is 1E-6; set to any negative number to do a branch switch no matter how small ∣ΔS∣\vert \Delta S \vert∣ΔS∣ is; set to a value greater than 1 to never do a branch switch). See also IEHYS(3).

CP(11) = threshold value of SgrΔS_{gr}^\DeltaSgrΔ​. If value of SgrΔS_{gr}^\DeltaSgrΔ​ calculated from SlΔS_{l}^\DeltaSlΔ​(Equation (2)) is less than CP(11), use SgrΔS_{gr}^\DeltaSgrΔ​ = 0. Recommended value 0.01–0.03; default is 0.02.

CP(12) = flag to turn off hysteresis for PcP_cPc​ (no effect on krlk _{rl}krl​ and krgk _{rg}krg​; to turn off hysteresis entirely, set SgrmaxS_{grmax}Sgrmax​ = 0 in RP(3)).

=0 hysteresis is on for PcP_cPc​

=1 hysteresis is off for PcP_cPc​ (switch branches of PcP_cPc​ as usual, but set SgrS_{gr}Sgr​ = 0 in PcP_cPc​ calculation. Make sure other parameters of PcdP_c^dPcd​ and PcwP_c^wPcw​ are the same: CP(1) = CP(6) and CP(3) = CP(7))

CP(13) = parameter to determine functional form of Pc extension for SlS_lSl​>< SlminS_{lmin}Slmin​ (i.e., PcP_cPc​ > PcmaxP_{cmax}Pcmax​ )

=0 exponential extension

>0 power-law extension with zero slope at SlS_lSl​ = 0 and Pc(0)P_{c}(0)Pc​(0) =CP(13). Recommended value: 2 to 5 times CP(4)=PcmaxP_{cmax}Pcmax​ . Should not be less than or equal to CP(4).

PreviousICP=11 Modified van Genuchten ModelNextICP=13 Simple hysteresis
☑️