New Release: TOUGH3

Fast Links

What is New?

TOUGH3 replaces TOUGH2 in the TOUGH family of codes. TOUGH3 consolidates more than a decade of independent developments of the TOUGH codes by multiple researchers, including the massively parallel version TOUGH2-MP, into a single flagship simulator coded in FORTRAN90 capable of exploiting multi-processor machines. While TOUGH3 has significant coding changes to facilitate parallel execution particularly in parts of the code related to linear equation solution, experienced TOUGH2 users will find familiar subroutine names and FORTRAN code in the subsurface process (e.g., flow, transport, phase equilibria, capillary pressure, etc.) subroutines which remain relatively unchanged from the originals developed by Karsten Pruess and others over the last several decades.

New Parallel Capabilities for Large Problems

TOUGH3 can utilize not only the standard serial conjugate gradient solvers available in TOUGH2 and the Aztec parallel linear- equation solver, but also all the solvers in the Portable, Extensible Toolkit for Scientific Computation (PETSc). When installed on computers with multiple processors, TOUGH3 can simulate very large problems with on the order of millions of grid blocks (2-4 equations per grid block).

Above: Performance test of TOUGH3-EOS3 for a single-phase injection of cold water into a homogeneous geothermal reservoir 10 km × 10 km × 4 km in volume discretized into 853,128 volume elements (grid blocks) showing scaling of run time with number of processors (test performed by Antonio Pio Rinaldi (ETH), 2018).

New Licensing Model

To simplify purchasing and processing, TOUGH3 is now sold as a single package that contains the TOUGH3 core and related Equation-of-State (EOS) modules: EOS1, EOS2, EOS3, EOS4, EOS5, EOS7, EOS7R, EOS7C, EOS7CA, EOS8, EOS9, EWASG, ECO2N, ECO2N V2, ECO2M, TMVOC. Please see the TOUGH3 webpage for more details on the core and related EOS modules.

Either executable-only, or source code and executables, are available along with test and demonstration problems for each EOS. Executables are provided for single or multiprocessor Macintosh, and single processor PC Windows machines. Compilation instructions are provided for Linux, Macintosh, and Cygwin (a Linux environment for PC Windows that enables creation of multiprocessor executable). For additional information, please see the webpages for licensing, pricing, ordering, and discounts

Additions and Improvements Relative to TOUGH2

  • Numerous bug fixes and improvements in consistency that will facilitate code maintenance and added capabilities for years to come
  • Incorporates several new EOS modules, which were either developed after TOUGH2 V2, or were separate, stand-alone codes, e.g., TMVOC, ECO2N, ECO2M, EOS7C, and EOS7CA
  • Dynamically allocates problem size-dependent arrays during the initialization phase
  • Significantly improved output options (e.g., printout in CSV, TECPLOT, or PETRASIM format for selected element-, connection-, and generation-related output variables)
  • Includes more flexible input options (e.g., time dependent GENER block)
  • Incorporates many enhancements over TOUGH2 that are implemented in iTOUGH2 (e.g., hysteresis modules for all EOS’s, semi-analytical heat solutions for wellbores, multiple biodegradation reactions in TMVOC)


Development of TOUGH3 was partially supported by TOUGH royalty funds that were provided by revenue from TOUGH code licenses. The primary developers of TOUGH3 are George Pau, Yoojin Jung, and Stefan Finsterle.