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. PROCESS MODELING

EOS4

PreviousEOS3NextEOS6
  1. Description

EOS4 is originally an adaptation of the EOS3 module, and implements vapor pressure lowering effects. As EOS3 has also included vapor pressure lowering effects in TOUGH4, the only differences between EOS3 and EOS4 is the use of different primary variables.

Vapor pressure PvP_vPv​ is expressed by Kelvin’s equation, Eq. 7-3 (Edlefsen and Anderson, 1943); it is a function not only of temperature, but depends also on capillary pressure, which in turn is a function of saturation.

Pv(T,Sl)=fVPL(T,Sl)Psat(T)P_v(T,S_l)=f_{VPL}(T,S_l)P_{sat}(T)Pv​(T,Sl​)=fVPL​(T,Sl​)Psat​(T) (7-3)

where

fVPL=exp[MwPcl(Sl)ρlR(T+273.15)]f_{VPL}=exp[\dfrac{M_wP_{cl}(S_l)}{\rho_lR(T+273.15)}]fVPL​=exp[ρl​R(T+273.15)Mw​Pcl​(Sl​)​] (7-4)

is the vapor pressure lowering factor. PsatP_{sat}Psat​is the saturated vapor pressure of bulk aqueous phase, T is temperature, SlS_lSl​ is the liquid (water) saturation, PclP_{cl}Pcl​ is the capillary pressure (i.e., the difference between aqueous and gas phase pressures), MwM_wMw​is the molecular weight of water, ρl\rho_lρl​ is the liquid density, and R is the universal gas constant.

  1. Specifications

A summary of EOS4 specifications and parameters is given in Table 8. The default number of mass components is 2. Simulation can be run in isothermal or non-isothermal. The default choice of primary thermodynamic variables is (P, PairP_{air}Pair​, T) for single-phase, (Pg, Sg, PairP_{air}Pair​) for two-phase conditions, where PairP_{air}Pair​ is the partial pressure of air. Note that in two-phase conditions temperature is not among the primary variables. It is implicitly determined from the relationship Pg−Pair=PvP_g-P_{air}=P_vPg​−Pair​=Pv​, with Pv=Pv(T,Sl)P_v=P_v(T,S_l)Pv​=Pv​(T,Sl​)as given in Eq. 7-3.

Table 8 Summary for EOS4

Specification
Parameters

Components

(1) Water

(2) AIR

(3-7) Tracer1-Tracer5 (optional)

Phase condition and its state name and index

(1) Gas, GAS

(2) Aqueous, AQU

(3) two-phase, AQG

Primary variables

See

Optional process modeling

Molecular diffusion, Vapor pressure Lowering, Wellbore simulation, Biodegradation reactions, and non-isothermal simulation.

It would be possible to use other sets of primary variables; in particular, temperature could be used also in two-phase conditions. Test calculations for a number of examples indicated, however, that the choice (Pg, Sg, PairP_{air}Pair​) usually leads to better convergence behavior than the choice (Pg, Sg, T). The reason for the numerically inferior behavior of the latter set is in the air mass balance. With the variables (Pg, Sg, T), the amount of air present in a grid block becomes controlled by the difference between total gas pressure Pg and effective vapor pressure Pv (Eq. 7-3), which can be subject to very severe numerical cancellation. From the application's viewpoint, however, initialization of a flow problem with the set (Pg, Sg, T) may be much more physical and convenient. TOUGH4/EOS4 can , which allows the initialization of two-phase points as (Pg, Sg, T); this capability can be selected by specifying MOP(19) = 1. When using MOP(19) = 1, the second primary variable upon initialization can also be relative humidity RH, expressed as a fraction (0 < RH ≤ 1); this choice is made by entering the second primary variable as a negative number, which will serve as a flag to indicate that it means (negative of) relative humidity, and will be internally converted to saturation in the initialization phase. The conversion consists of iteratively solving Kelvin’s equation for given RH=fVPL(T,Sl)RH=f_{VPL}(T,S_l)RH=fVPL​(T,Sl​)for SlS_lSl​. Users need to beware that relative humidity specifications must be within the range that is feasible for the capillary pressure functions used. If maximum capillary pressures are not strong enough to accommodate a chosen value of RH, a diagnostic will be printed and execution will terminate. As a further convenience to users, EOS4 is also allowed to be initialized with EOS3 variables of (P, X, T) for single-phase, (Pg, Sg + 10, T) for two-phase.

Vapor pressure lowering effects raise new issues because they make it possible for a liquid phase to exist under conditions where vapor partial pressure and gas phase total pressure are less than the saturation pressure. What is the appropriate pressure at which liquid phase density, enthalpy and viscosity are to be evaluated? We believe that a physically plausible choice is to take PlP_lPl​ = max(Pg, PsatP_{sat}Psat​), and this has been implemented in EOS4. The implementation faces a difficulty, however, because temperature is not among the primary variables in two-phase conditions, so that PsatP_{sat}Psat​ is only implicitly known; moreover, vapor pressure lowering effects are functionally dependent on liquid phase density, which is also a function of temperature. This leads to a potentially unstable situation with regard to the choice of liquid phase pressure under conditions where PgP_gPg​ ≈ PsatP_{sat}Psat​, which happens to be a common occurrence in boiling regions. In order to avoid this problem, we evaluate liquid water density in the Kelvin equation for vapor pressure lowering (Eq. 7-3) always at Pl=PsatP_l=P_{sat}Pl​=Psat​, which will be an excellent approximation due to the small compressibility of liquid water. In all accumulation and flow terms the density of liquid water is evaluated at PlP_lPl​ = max( PgP_gPg​, PsatP_{sat}Psat​). Vapor pressure lowering can be optionally suppressed by setting MOP(20) = 1.

7️⃣
reading initial condition inputs of TOUGH3/EOS3/EOS4
Table 22