Preparation of Input Data#
To characterize a flow system, users need to prepare input data, including hydrogeologic and thermal parameters and constitutive relations of the permeable medium (absolute and relative permeability, porosity, capillary pressure, heat conductivity, etc.), thermophysical properties of the fluids (mostly provided internally), initial and boundary conditions of the flow system, and sinks and sources. In addition, TOUGH3 requires specification of space-discretized geometry, and various program options, computational parameters, and time-stepping information. Here we summarize the basic conventions adopted for TOUGH3 input data (Section TOUGH3 Input Data), and provide a detailed explanation of input data formats (Section TOUGH3 Input Format); the summary and input formats for internal grid generation through the MESHMaker module are explained in Sections Geometry Data and Input Formats for MESHMAKER, respectively. Some of the EOS modules have specialized input requirements (discussed in the addenda for those modules). The TMVOC, ECO2N, and ECO2M modules have special options and input requirements, which are explained in separate reports (TMVOC: Pruess and Battistelli, 2002; ECO2N: Pruess, 2005, Pan et al., 2015; ECO2M: Pruess, 2013).
TOUGH3 Input Data#
Input can be provided to TOUGH3 in a flexible manner by means of one or several ASCII data files. All TOUGH3 input is in fixed format (a few exceptions, such as data blocks GENER and TIMBC) and standard metric (SI) units, such as meters, seconds, kilograms, ˚C, and the corresponding derived units, such as Newtons, Joules, and Pascal = N/m2 for pressure.
In the standard TOUGH3 input file data are organized in blocks which are defined by five-character keywords typed in columns 1-5; see Table 2. The first record must be a problem title of up to 80 characters. The last record usually is ENDCY; alternatively, ENDFI may be used if no flow simulation is to be carried out (useful for mesh generation). Data records beyond ENDCY (or ENDFI) will be ignored. Some data blocks, such as those specifying reservoir domains (ROCKS), volume elements (ELEME), connections (CONNE), sinks/sources (GENER), and initial conditions (INDOM and INCON), have a variable number of records, while others have a fixed number of records. The end of variable-length data blocks is indicated by a blank record. The data blocks can be provided in arbitrary order; exceptions are (1) the first line must be the title line, (2) ELEME, if present, must precede CONNE, (3) START, if present, must be specified before INCON, and (4) MULTI must be specified before PARAM, INDOM, INCON (only if \(NKIN \ne NK\)), and OUTPU. The blocks ELEME and CONNE must either be both provided through the input file, or must both be absent, in which case alternative means for specifying geometry data will be employed (see Section Geometry Data). If START is present, the block INCON can be incomplete, with elements in arbitrary order, or can be absent altogether. Elements for which no initial conditions are specified in INCON will then be assigned domain-specific initial conditions from block INDOM, if present, or will be assigned default initial conditions given in block PARAM, along with default porosities given in ROCKS. If START is not present, INCON must contain information for all elements, in exactly the same order as they are listed in block ELEME (note that initial conditions will be assigned to elements according to their order, not the element name).
Keyword |
Function |
---|---|
TITLE |
first record, single line with a title for the simulation problem |
MESHM |
parameters for internal grid generation through MESHMaker |
ROCKS |
hydrogeologic parameters for various reservoir domains |
MULTI |
specifies number of fluid components and balance equations per grid block |
SELEC |
used with certain EOS-modules to supply thermophysical property data |
START |
one data record for more flexible initialization |
PARAM |
computational parameters; time stepping and convergence parameters; program options; default initial conditions |
MOMOP |
more program options |
SOLVR |
parameters for linear equation solver |
DIFFU |
diffusivities of mass components |
FOFT |
specifies grid blocks for which time series data are desired |
COFT |
specifies connections for which time series data are desired |
GOFT |
specifies sinks/sources for which time series data are desired |
RPCAP |
parameters for relative permeability and capillary pressure functions |
HYSTE |
parameters for hysteretic characteristic curves; required only if non-default values of parameters are used |
TIMES |
specification of times for generating printout |
ELEME* |
list of grid blocks (volume elements) |
CONNE* |
list of flow connections between grid blocks |
GENER* |
list of mass or heat sinks and sources |
INDOM |
list of initial conditions for specific reservoir domains |
INCON* |
list of initial conditions for specific grid blocks |
TIMBC |
specifies time-dependent Dirichlet boundary conditions |
OUTPU |
specifies variables/parameters for printout |
ENDCY |
last record to close the TOUGH3 input file and initiate the simulation |
ENDFI |
alternative to ENDCY for closing a TOUGH3 input file; will cause flow simulation to be skipped; useful if only mesh generation is desired |
Note
* These blocks can be provided on separate disk files, in which case they would be omitted from the INPUT file.
Between data blocks, an arbitrary number of records with arbitrary data may be present that do not begin with any of the TOUGH3 keywords. This is useful for inserting comments about problem specifications directly into the input file. TOUGH3 will gather all these comments and will print the first 50 such records in the output file.
Much of the data handling in TOUGH3 is accomplished by means of disk files, which are written in a format of 80 characters per record, so that they can be edited and modified with any text editor.
Table 3 summarizes the disk files other than (default) INPUT and OUTPUT used in TOUGH3. The initialization of the arrays for geometry, generation, and initial condition data is always made from the disk files MESH (or MINC), GENER, and INCON. A user can either provide these files at execution time, or they can be written from TOUGH3 input data during the initialization phase of the program. During this initialization phase, two binary files MESHA and MESHB are created from the disk file MESH. If MESHA and MESHB exist in the working folder, the code will ignore the MESH file and the ELEME and CONNE blocks in the input file, and read geometric information directly from these two files, which will reduce the memory requirement for the master processor and enhance I/O efficiency. If the mesh is changed, MESHA and MESHB must be deleted from the working folder to make the changes take effect. If no data blocks GENER and INCON are provided in the input file, and if no disk files GENER and INCON are present, defaults will take effect (no generation; domain-specific initial conditions from block INDOM, or defaults from block PARAM). If a user intends to use these defaults, the user has to make sure that at execution time no disk files INCON or GENER are present from a previous run (or perhaps from a different problem). A safe way to use default GENER and INCON is to specify “dummy” data blocks in the input file, consisting of one record with GENER or INCON, followed by a blank record.
The format of data blocks ELEME, CONNE, GENER, and INCON is basically the same when these data are provided as disk files as when they are given as part of the input file. However, specification of these data through the input file rather than as disk files offers some added conveniences, which are useful when a new simulation problem is initiated. For example, a sequence of identical items (volume elements, connections, sinks or sources) can be specified through a single data record. Also, indices used internally for cross-referencing elements, connections, and sources will be generated internally by TOUGH3 rather than having them provided by the user. MESH, GENER, and INCON disk files written by TOUGH3 can be merged into an input file without changes, keeping the cross-referencing information.
File |
Use |
---|---|
MESH |
written in subroutine INPUT from ELEME and CONNE data, or in module MESHMaker from mesh specification data; read in RFILE to initialize all geometry data arrays used to define the discretized flow problem |
GENER |
written in subroutine INPUT from GENER data; read in RFILE to define nature, strength, and time-dependence of sinks and sources |
INCON |
written in subroutine INPUT from INCON data; read in RFILE to provide a complete specification of initial thermodynamic conditions |
SAVE |
written in subroutine WRIFI to record thermodynamic conditions at the end of a TOUGH3 simulation run; compatible with formats of file or data block INCON for initializing a continuation run |
MINC |
written in module MESHMaker with MESH-compatible specifications, to provide all geometry data for a fractured-porous medium mesh (double porosity, dual permeability, multiple interacting continua); read (optionally) in subroutine RFILE to initialize geometry data for a fractured-porous system |
TABLE |
written in subroutine CYCIT to record coefficients of semi-analytical linear heat exchange with confining beds at the end of a TOUGH3 simulation run; read (optionally) in subroutine QLOSS to initialize heat exchange coefficients in a continuation run |
TOUGH3 Input Format#
Here we cover the common input data for all EOS modules of TOUGH3. Additional EOS-specific input data are discussed in the addendum for each EOS module. The format described is for the default five-character element names.
TITLE#
This is the first record of the input file, containing a header of up to 80 characters, to be printed on output. This can be used to identify a problem. If no title is desired, leave this record blank.
ROCKS#
Introduces material parameters for different reservoir domains.
Parameter |
Format |
Description |
---|---|---|
|
A5 |
material name (rock type). |
|
I5 |
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.
|
|
E10.4 |
rock grain density (kg/m3`). If |
|
E10.4 |
default porosity (void fraction) for all elements belonging to domain |
|
E10.4 |
|
|
E10.4 |
formation heat conductivity under fully liquid-saturated conditions (W/m ˚C). |
|
E10.4 |
rock grain specific heat (J/kg ˚C). Domains with |
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:
Here, \(k_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, \(k_n^{'}\) is the modified permeability, and \(\zeta_n\) is the PM coefficient. When PM is in effect, the strength of capillary pressure will be automatically scaled according to (Leverett, 1941)
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 TOUGH3. Alternatively, externally defined permeability modifiers may be provided as part of the geometry data (PMX) in block ELEME. Available PM options are:
Externally supplied: \(\zeta_n = PMX - PER(2)\)
“Linear”: \(\zeta_n = PER(1) \times s - PER(2)\)
“Logarithmic”: \(\zeta_n = \exp \left( - PER(1) \times s \right) - PER(2)\)
where \(s\) is a random number between 0 and 1.
Data provided in domain “SEED
” are used to select the following options.
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
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. |
|
E10.4 |
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. |
|
E10.4 |
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) ). |
|
E10.4 |
shift (optional) for internal or external permeability modifiers:
= 0: (default) no shift is applied to permeability modifiers.
> 0: permeability modifiers are shifted according to \(\zeta_n^{'} = \zeta_n - PER(2)\). All \(\zeta_n^{'} \lt 0\) are set equal to zero.
|
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.
Note that the domain “SEED
” is not required in TOUGH3 if externally defined permeability modifiers in block ELEME are used without any shift.
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
pore compressiblity (Pa-1), \(\frac{1}{\phi} \left( \frac{\partial \phi}{\partial P} \right)_T\), (default is 0). |
|
E10.4 |
pore expansivity (1/ ˚C), \(\frac{1}{\phi} \left( \frac{\partial \phi}{\partial T} \right)_P\), (default is 0). |
|
E10.4 |
formation heat conductivity under desaturated conditions (W/m ˚C), (default is |
|
E10.4 |
tortuosity factor for binary diffusion. If |
|
E10.4 |
Klinkenberg parameter b (Pa-1`) for enhancing gas phase permeability according to the relationship \(k_{gas} = k \left( 1 + \frac{b}{P} \right)\). |
|
E10.4 |
Distribution coefficient for parent radionuclide, Component 3, in the aqueous phase, m3` kg-1 (EOS7R only). |
|
E10.4 |
Distribution coefficient for daughter radionuclide, Component 4, in the aqueous phase, m3` kg-1 (EOS7R only). |
Parameter |
Format |
Description |
---|---|---|
|
I5 |
integer parameter to choose type of relative permeability function. |
5X |
(void) |
|
|
E10.4 |
|
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|
Parameter |
Format |
Description |
---|---|---|
|
I5 |
integer parameter to choose type of capillary pressure function. |
5X |
(void) |
|
|
E10.4 |
|
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|
Repeat records 1, 1.1, 1.2, 1.2.1., 1.3, and 1.3.1 for different reservoir domains.
A blank record closes the ROCKS data block.
MULTI#
Permits the user to select the number and nature of balance equations that will be solved. For most EOS modules this data block is not needed, as default values are provided internally. Available parameter choices are different for different EOS modules (see the addendum of the EOS module of interest).
Parameter |
Format |
Description |
---|---|---|
|
I5 |
number of mass components. |
|
I5 |
number of balance equations per grid block. Usually we have |
|
I5 |
number of phases that can be present (2 for most EOS modules). |
|
I5 |
number of secondary parameters in the PAR-array other than component mass fractions. Available options include |
|
I5 |
number of mass components in INCON data (default is |
START (optional)#
A record with START typed in columns 1-5 allows a more flexible initialization. More specifically, when START is present, INCON data can be in arbitrary order, and need not be present for all grid blocks (in which case defaults will be used). Without START, there must be a one-to-one correspondence between the data in blocks ELEME and INCON.
PARAM#
Introduces computation parameters, time stepping information, and default initial conditions.
Parameter |
Format |
Description |
---|---|---|
|
I2 |
specifies the maximum number of Newtonian iterations per time step (default is 8). |
|
I2 |
specifies amount of printout (default is 1):
0 or 1: print a selection of element variables.
2: in addition, print a selection of connection variables.
3: in addition, print a selection of generation variables.
If the above values for
KDATA are increased by 10, printout will occur after each Newton-Raphson iteration (not just after convergence).If negative values are used, printout for the selection of variables will be generated in the file format of TECPLOT. The amount of printout is given by the absolute value of
KDATA . |
|
I4 |
maximum number of time steps to be calculated. If a negative value is used, |
|
I4 |
maximum duration, in CPU seconds, of the simulation (default is infinite). |
|
I4 |
printout will occur for every multiple of |
|
I1 |
|
|
I1 |
if unequal 0, a short printout for non-convergent iterations will be generated. |
MOP(2) …
MOP(6) |
I1 |
generate additional printout in various sub-routines, if set unequal 0. This feature should not be needed in normal applications, but it will be convenient when a user suspects a bug and wishes to examine the inner workings of the code. The amount of printout increases with |
|
I1 |
CYCIT (main subroutine). |
|
I1 |
MULTI (flow- and accumulation-terms). |
|
I1 |
QU (sinks/sources). No longer supported in TOUGH3. |
|
I1 |
EOS (equation of state). |
|
I1 |
LINEQ (linear equations). No longer supported in TOUGH3. |
|
I1 |
if unequal 0, a printout of input data will be provided. |
|
I1 |
if |
|
I1 |
determines the composition of produced fluid with the MASS option (see GENER). The relative amounts of phases are determined as follows:
0: according to relative mobilities in the source element.
1: produced source fluid has the same phase composition as the producing element.
|
|
I1 |
chooses the interpolation formula for heat conductivity as a function of liquid saturation (\(S_l\)):
0: \(C(S_l) = CDRY + \sqrt{S_l} \left( CWET - CDRY \right)\).
1: \(C(S_l) = CDRY + S_l \left( CWET - CDRY \right)\).
|
|
I1 |
determines evaluation of mobility and permeability at interfaces:
0: mobilities are upstream weighted with
WUP (see PARAM.3), permeability is upstream weighted.1: mobilities are averaged between adjacent elements, permeability is upstream weighted.
2: mobilities are upstream weighted, permeability is harmonic weighted.
3: mobilities are averaged between adjacent elements, permeability is harmonic weighted.
4: mobility and permeability are both harmonic weighted.
|
|
I1 |
determines interpolation procedure for time dependent sink/source data (flow rates and enthalpies):
0: triple linear interpolation; tabular data are used to obtain interpolated rates and enthalpies for the beginning and end of the time step; the average of these values is then used.
1: step function option; rates and enthalpies are taken as averages of the table values corresponding to the beginning and end of the time step.
2: rigorous step rate capability for time dependent generation data. A set of times \(t_i\) and generation rates \(q_i\) provided in data block GENER is interpreted to mean that sink/source rates are piecewise constant and change in discontinuous fashion at table points. Specifically, generation is assumed to occur at constant rate \(q_i\) during the time interval \([t_i, t_{i+1})\), and changes to \(q_{i+1}\) at \(t_{i+1}\). Actual rate used during a time step that ends at time \(t\), with \(t_i \le t \le t_{i+1}\), is automatically adjusted in such a way that total cumulative exchanged mass at time \(t\)
(47)#\[Q(t) = \int_0^t q dt^{'} = \sum_{j=1}^{i-1} q_j \left( t_{j+1} - t_j \right) + q \left( t - t_i \right)\]
is rigorously conserved. If also tabular data for enthalpies are given, an analogous adjustment is made for fluid enthalpy, to preserve \(\int qh dt\).
|
|
I1 |
determines content of INCON and SAVE files:
0: standard content.
1: writes user-specified initial conditions to file SAVE.
2: reads parameters of hysteresis model from file INCON.
|
|
I1 |
(void) |
|
I1 |
determines conductive heat exchange with impermeable geologic formations using semi-analytical methods:
0: heat exchange is off.
1: linear heat exchange between a reservoir and confining beds is on (for grid blocks that have a non-zero heat transfer area; see data block ELEME). Initial temperature in cap- or base-rock is assumed uniform and taken as the temperature with which the last element in data block ELEME is initialized.
2: linear heat exchange between a reservoir and confining beds is on. Initial temperature for the confining bed adjacent to an element that has a non-zero heat transfer area is taken as the temperature of that element in data block INCON.
Heat capacity and conductivity of the confining beds are specified in block ROCKS for the particular domain to which the very last volume element in data block ELEME belongs. Thus, if a semi-analytical heat exchange calculation is desired, the user would append an additional dummy element of a very large volume at the end of the ELEME block, and provide the desired parameters as initial conditions and domain data, respectively, for this element. It is necessary to specify which elements have an interface area with the confining beds, and to give the magnitude of this interface area. This information is input as parameter
AHTX in columns 31-40 of volume element data in block ELEME. Volume elements for which a zero-interface area is specified will not be subject to heat exchange. A sample problem using MOP(15) = 1 is included in the addendum for EOS1.5: radial heat exchange between fluids in a wellbore and the surrounding formation is on. Constant well and formation properties are given in a material named QLOSS with the following parameters:
-
DROK : Rock grain density [kg/m3] of formation near well-
POR : Well radius [m]-
PER(1) : Reference elevation [m]; specify Z coordinate in block ELEME, columns 71-80-
PER(2) : Reference temperature [˚C]-
PER(3) : Geothermal gradient [˚C/m]-
CWET : Heat conductivity [W/kg ˚C] of formation near well-
SPHT : Rock grain specific heat [J/kg ˚C] of formation near well6: radial heat exchange between fluids in a wellbore and the surrounding formation is on. Depth-dependent well and formation properties (depth, radius, temperature, conductivity, density, capacity) are provided on an external file named radqloss.dat with the information in the following format: on the first line,
NMATQLOSS is the number of elevations with geometric and thermal data, and NMATQLOSS lines are provided with the following data in free format: elevation [m], well radius [m], initial temperature [˚C], CWET , DROK , SPHT . Between elevations, properties are calculated using linear interpolation.RESTART is possible for linear heat exchange between a reservoir and confining beds (
MOP(15) = 1 or 2), but not for radial heat exchange (MOP(15) = 5 or 6). The data necessary for continuing the linear heat exchange calculation in a TOUGH3 continuation run are written onto a disk file TABLE. When restarting a problem, this file has to be provided under the name TABLE. If file TABLE is absent, TOUGH3 assumes that no prior heat exchange with confining beds has taken place. |
|
I1 |
provides automatic time step control:
0: automatic time stepping based on maximum change in saturation.
1: automatic time stepping based on number of iterations needed for convergence.
>1: time step size will be doubled if convergence occurs within ITER ≤
MOP(16) Newton-Raphson iterations. It is recommended to set MOP(16) in the range of 2-4. |
|
I1 |
handles time stepping after linear equation solver failure:
0: no time step reduction despite linear equation solver failure.
9: reduce time step after linear equation solver failure.
|
|
I1 |
selects handling of interface density:
0: perform upstream weighting for interface density.
>0: average interface density between the two grid blocks. However, when one of the two phase saturations is zero, upstream weighting will be performed.
|
|
I1 |
switch used by different EOS modules for conversion of primary variables. |
|
I1 |
switch for vapor pressure lowering in EOS4; |
|
I1 |
selects the linear equation solver:
0: defaults to
MOP(21) = 3, DSLUCS, Lanczos-type preconditioned bi-conjugate gradient solver.1: (void)
2: DSLUBC, bi-conjugate gradient solver.
3: DSLUCS (default).
4: DSLUGM, generalized minimum residual preconditioned conjugate gradient solver.
5: DLUSTB, stabilized bi-conjugate gradient solver.
6: LUBAND, banded direct solver.
7: AZTEC parallel iterative solver.
8: PETSc parallel iterative solver.
All conjugate gradient solvers use incomplete LU-factorization as a default preconditioner. Other preconditioners may be chosen by means of a data block SOLVR.
|
|
I1 |
(void) |
|
I1 |
(void) |
|
I1 |
determines handling of multiphase diffusive fluxes at interfaces:
- 0: harmonic weighting of fully coupled effective multiphase diffusivity.
- 1: separate harmonic weighting of gas and liquid phase diffusivities.
|
|
E10.4 |
parameter for temperature dependence of gas phase diffusion coefficient (see Eq. (13)). |
|
E10.4 |
(optional) parameter for effective strength of enhanced vapor diffusion; if set to a non-zero value, will replace the parameter group \(\phi \tau_0 \tau_{\beta}\) for vapor diffusion (see Eq. (10)). |
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
starting time of simulation in seconds (default is 0). |
|
E10.4 |
time in seconds at which simulation should stop (default is infinite). |
|
E10.4 |
length of time steps in seconds. If |
|
E10.4 |
upper limit for time step size in seconds (default is infinite). |
|
A5 |
no longer supported in TOUGH3. For printout after each time step, use FOFT instead. |
5X |
(void) |
|
|
E10.4 |
magnitude (m/s2) of the gravitational acceleration vector. Blank or zero gives “no gravity” calculation. |
|
E10.4 |
factor by which time step is reduced in case of convergence failure or other problems (default is 4). |
|
E10.4 |
scale factor to change the size of the mesh (default = 1.0). |
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
Length (in seconds) of time step |
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
convergence criterion for relative error (default 10-5`). |
|
E10.4 |
convergence criterion for absolute error (default 1). |
|
E10.4 |
(void) |
|
E10.4 |
upstream weighting factor for mobilities and enthalpies at interfaces (default 1.0 is recommended). 0 ≤ |
|
E10.4 |
weighting factor for increments in Newton/Raphson - iteration (default 1.0 is recommended). 0 < |
|
E10.4 |
increment factor for numerically computing derivatives (default value is |
|
E10.4 |
factor to change the size of the time step during the Newtonian iteration (default 1.0). |
|
E10.4 |
maximum permissible residual during the Newtonian iteration. If a residual larger than |
Parameter |
Format |
Description |
---|---|---|
|
E20.13 |
|
The number of primary variables, NKIN
+ 1, is normally assigned internally in the EOS module, and is usually equal to the number NEQ
of equations solved per grid block.
See data block MULTI for special assignments of NKIN
.
When more than four primary variables are used more than one line (record) must be provided.
INDOM#
Introduces domain-specific initial conditions. These will supersede default initial conditions specified in PARAM.4, and can be overwritten by element-specific initial conditions in data block INCON. Option START is needed to use INDOM conditions.
Parameter |
Format |
Description |
---|---|---|
|
A5 |
name of a reservoir domain, as specified in data block ROCKS. |
Parameter |
Format |
Description |
---|---|---|
|
E20.13 |
|
A blank record closes the INDOM data block. Repeat records INDOM.1 and INDOM.2 for as many domains as desired. The ordering is arbitrary and need not be the same as in block ROCKS.
INCON#
Introduces element-specific initial conditions.
Parameter |
Format |
Description |
---|---|---|
|
A3, I2 |
code name of element. |
|
I5 |
number of additional elements with the same initial conditions. |
|
I5 |
increment between the code numbers of two successive elements with identical initial conditions. |
|
E15.9 |
porosity; if zero or blank, porosity will be taken as specified in block ROCKS if option START is used. |
|
E10.4 |
|
Parameter |
Format |
Description |
---|---|---|
|
E20.14 |
|
A blank record closes the INCON data block.
Alternatively, initial condition information may terminate on a record with +++
typed in the first three columns, followed by time stepping information.
This feature is used for a continuation run from a previous TOUGH3 simulation.
SOLVR (optional)#
Introduces a data block with parameters for linear equation solvers.
For the parallel solvers, only MATSLV
is used, and the other options should be specified through the PETSc (.petscrc) and Aztec (.aztecrc) option files.
Parameter |
Format |
Description |
---|---|---|
|
I1 |
selects the linear equation solver:
1: (void)
2: DSLUBC, a bi-conjugate gradient solver
3: DSLUCS, a Lanczos-type bi-conjugate gradient solver
4: DSLUGM, a generalized minimum residual solver
5: DLUSTB, a stabilized bi-conjugate gradient solver
6: direct solver LUBAND
7: AZTEC parallel iterative solver
8: PETSc parallel iterative solver
|
2X |
(void) |
|
|
A2 |
selects the Z-preconditioning (Moridis & Pruess, 1998). Regardless of user specifications, Z-preprocessing will only be performed when iterative solvers are used (2 ≤
MATSLV ≤ 5), and if there are zeros on the main diagonal of the Jacobian matrix:Z0: no Z-preprocessing (default for
NEQ = 1)Z1: replace zeros on the main diagonal by a small constant (10-25; default for
NEQ ≠ 1)Z2: make linear combinations of equations for each grid block to achieve non-zeros on the main diagonal
Z3: normalize equations, followed by Z2
Z4: affine transformation to unit main-diagonal submatrices, without center pivoting
|
3X |
(void) |
|
|
A2 |
selects the O-preconditioning (Moridis & Pruess, 1998):
O0: no O-preprocessing (default, also invoked for
NEQ = 1)O1: eliminate lower half of the main-diagonal submatrix with center pivoting
O2: O1, plus eliminate upper half of the main-diagonal submatrix with center pivoting
O3: O2, plus normalize, resulting in unit main-diagonal submatrices
O4: affine transformation to unit main-diagonal submatrices, without center pivoting
|
|
E10.4 |
selects the maximum number of CG iterations as a fraction of the total number of equations (0.0 < |
|
E10.4 |
convergence criterion for the CG iterations (10-12 ≤ |
FOFT (optional)#
Introduces a list of elements (grid blocks) for which time-dependent data are to be written out for plotting during the simulation.
A separate file is generated for each element in CSV format.
The name of each file starts with FOFT, and includes the element name. If regular or simple hysteresis is invoked via IRP
= ICP
= 12 or IRP
= ICP
= 13, then relevant hysteresis parameters are also written to FOFT.
If MOP2(17)
> 0, print variables according to the input data in block OUTPU.
Parameter |
Format |
Description |
---|---|---|
|
A5 |
element name. |
5X |
(void) |
|
|
I5 |
a flag to control the amount of printout:
0: default printout of pressure, temperature, and saturation of flowing phases.
>0: print out mass fraction of each component in the specified phase in addition to the default printout.
<0: print out mass fraction of each component in each of all the flowing phases in addition to the default printout.
|
A blank record closes the FOFT data block. Repeat records FOFT.1 for as many elements as desired.
COFT (optional)#
Introduces a list of connections for which time-dependent data are to be written out for plotting during the simulation. A separate file is generated for each connection in CSV format. The name of each file starts with COFT, and includes the pair of two element names.
Parameter |
Format |
Description |
---|---|---|
|
A10 |
a connection name, i.e., an ordered pair of two element names (no blank between elements). |
10X |
(void) |
|
|
I5 |
a flag to control the amount of printout:
0: default printout of heat flux and flow rate of each flowing phase.
>0: print out fractional mass flow of each component in the specified phase in addition to the default printout.
<0: print out fractional mass flow of each component in each of all the flowing phases in addition to the default printout.
|
A blank record closes the COFT data block. Repeat records COFT.1 for as many connections as desired.
GOFT (optional)#
Introduces a list of sinks/sources for which time-dependent data are to be written out for plotting during the simulation. A separate file is generated for each sink/source in CSV format. The name of each file starts with GOFT, and includes the sink/source name.
Parameter |
Format |
Description |
---|---|---|
|
A5 |
the name of an element in which a sink/source is defined. |
5X |
(void) |
|
|
I5 |
a flag to control the amount of printout:
0: default printout of mass flow rate and flowing enthalpy.
>0: print out fractional mass flow rate of the specified phase in addition to the default printout.
<0: print out fractional mass flow rate of each of all the flowing phases in addition to the default printout.
|
A blank record closes the GOFT data block. Repeat records GOFT.1 for as many sinks/sources as desired.
DIFFU (optional)#
Introduces diffusion coefficients (needed only for NB
= 8).
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|
Provide a total of NK
records with diffusion coefficients for all NK
mass components.
SELEC#
Introduces a number of integer and floating point parameters that are
used for different purposes in different TOUGH3 modules (EOS7, EOS7R,
EWASG, ECO2N, ECO2M, TMVOC).
Note that TOUGH3 includes additional IE
options for the calculation of brine properties in EWASG, ECO2N, and ECO2M.
Parameter |
Format |
Description |
---|---|---|
|
I5 |
|
|
I5 |
number of records with floating point numbers that will be read (default is |
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|
Provide as many SELEC.2 (Table 28) records with floating point numbers as specified in IE(1)
, up to a maximum of 64 records.
RPCAP#
Introduces information on relative permeability and capillary pressure functions, which will be applied for all flow domains for which no data were specified in records ROCKS.1.2 (Table 7) and ROCKS.1.3 (Table 9).
Parameter |
Format |
Description |
---|---|---|
|
I5 |
integer parameter to choose type of relative permeability function. |
5X |
(void) |
|
|
E10.4 |
|
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|
Parameter |
Format |
Description |
---|---|---|
|
I5 |
integer parameter to choose type of capillary pressure function. |
5X |
(void) |
|
|
E10.4 |
|
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|
HYSTE (optional)#
Provides numerical controls on the hysteretic characteristic curves. It is not needed if the default values of all its parameters are to be used.
Parameter |
Format |
Description |
---|---|---|
|
I5 |
flag to print information about hysteretic characteristic curves:
=0: no additional print out.
≥1: print a one-line message to the output file every time a capillary-pressure branch switch occurs (recommended).
|
|
I5 |
flag indicating when to apply capillary-pressure branch switching:
=0: after convergence of time step (recommended).
>0: after each Newton-Raphson iteration.
|
|
I5 |
run parameter for sub-threshold saturation change:
=0: no branch switch unless \(\left\vert \Delta S \right\vert\) >
CP(10) .>0: allow branch switch after run of
IEHYS(3) consecutive time steps for which all \(\left\vert \Delta S \right\vert\) < CP(10) and all \(\Delta S\) are the same sign. Recommended value 5-10. This option may be useful if the time step is cut to a small value due to convergence problems, making saturation changes very small. |
TIMES (optional)#
Permits the user to obtain printout at specified times. This printout will occur in addition to printout specified in record PARAM.1.
Parameter |
Format |
Description |
---|---|---|
|
I5 |
number of times provided on records TIMES.2, TIMES.3, etc. |
|
I5 |
total number of times desired ( |
|
E10.4 |
maximum time step size after any of the prescribed times have been reached (default is infinite). |
|
E10.4 |
time increment for times with index |
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|
ELEME#
Introduces element (grid block) information.
Parameter |
Format |
Description |
---|---|---|
|
A3, I2 |
five-character code name of an element. The first three characters are arbitrary, the last two characters must be numbers. |
|
I5 |
number of additional elements having the same volume and belonging to the same reservoir domain. |
|
I5 |
increment between the code numbers of two successive elements. (Note: the maximum permissible code number |
|
A3, A2 |
a five-character material identifier corresponding to one of the reservoir domains as specified in block ROCKS. If the first three characters are blanks and the last two characters are numbers then they indicate the sequence number of the domain as entered in ROCKS. If both |
|
E10.4 |
element volume (m3`). |
|
E10.4 |
interface area (m2) for linear heat exchange with semi-infinite confining beds. Internal MESH generation via MESHMaker will automatically assign |
|
E10.4 |
block-by-block permeability modification coefficient, \(\zeta_n\) (optional). The
PMX may be used to specify spatially correlated heterogeneous fields. But users need to run their own geostatistical program to generate the fields they desire, and then use preprocessing programs to place the modification coefficients into the ELEME data block, as TOUGH3 provides no internal capabilities for generating such fields.If a dummy domain “
SEED ” is specified in data block ROCKS, it will be used as multiplicative factor for all the permeability parameters from block ROCKS (see Eq. (45)), and strength of capillary pressure will be scaled according to Eq. (46). With a dummy domain “SEED ” in data block ROCKS, PMX = 0 will result in an impermeable block.In TOUGH3,
PMX can be active without a dummy domain “SEED ” in the ROCKS block. If a dummy domain “SEED ” is not specified in data block ROCKS, it can be used to specify grid block permeabilities or permeability modifiers. If a positive value less than 10-4 is given, it is interpreted as absolute permeability; if a negative value is provided, it is interpreted as a permeability modifier, i.e., a factor with which the absolute permeability specified in block ROCKS is multiplied. Alternatively, the same information can be provided through USRX (columns 31-40) in block INCON.If
PMX is blank for the first element, the element-by-element permeabilities are ignored. If a dummy domain “SEED ” is not specified in data block ROCKS, strength of capillary pressure will not be automatically scaled. Leverett scaling of capillary pressure can be applied with MOP2(6) > 0 in data block MOMOP. |
|
3E10.4 |
Cartesian coordinates of grid block centers. These may be included in the ELEME data to make subsequent plotting of results more convenient. Note that coordinates are not used in TOUGH3; the exceptions are for optional initialization of a gravity-capillary equilibrium with EOS9 and for optional addition of potential energy to enthalpy with |
|
E10.4 |
anisotropic permeability or permeability modifier of the X-, Y-, and Z-direction for |
Repeat record ELEME.1 for the number of elements desired.
A blank record closes the ELEME data block.
CONNE#
Introduces information for the connections (interfaces) between elements.
Parameter |
Format |
Description |
---|---|---|
|
A3, I2 |
code name of the first element. |
|
A3, I2 |
code name of the second element. |
|
I5 |
number of additional connections in the sequence. |
|
I5 |
increment of the code number of the first element between two successive connections. |
|
I5 |
increment of the code number of the second element between two successive connections. |
|
I5 |
set equal to 1, 2, or 3; specifies absolute permeability to be |
|
E10.4 |
distance (m) from first element to interface. |
|
E10.4 |
distance (m) from second element to interface. |
|
E10.4 |
interface area (m2). |
|
E10.4 |
cosine of the angle between the gravitational acceleration vector and the line between the two elements. |
|
E10.4 |
“radiant emittance” factor for radiative heat transfer, which for a perfectly “black” body is equal to 1. The rate of radiative heat transfer between the two grid blocks is
(48)#\[G_{rad} = SIGX \times \sigma_0 \times AREAX \times \left( T_2^4 - T_1^4 \right)\]
where \(\sigma_0\) = 5.6687e-8 J/m2 K4 s is the Stefan-Boltzmann constant, and \(T_1\) and \(T_1\) are the absolute temperatures of the two grid blocks.
SIGX may be entered as a negative number, in which case the absolute value will be used, and heat conduction at the connection will be suppressed. SIGX = 0 will result in no radiative heat transfer. |
Repeat record CONNE.1 for the number of connections desired.
A blank record closes the CONNE data block.
Alternatively, connection information may terminate on a record with +++
typed in the first three columns, followed by element cross-referencing information.
This is the termination used when generating a MESH file with TOUGH3.
GENER#
Introduces sinks and/or sources.
Parameter |
Format |
Description |
---|---|---|
|
A3, I2 |
code name of the element containing the sink/source. |
|
A3, I2 |
code name of the sink/source. The first three characters are arbitrary, the last two characters must be numbers. |
|
I5 |
number of additional sinks/sources with the same injection/production rate (not applicable for |
|
I5 |
increment between the code numbers of two successive elements with identical sink/source. |
|
I5 |
increment between the code numbers of two successive sinks/sources. |
|
I5 |
number of points in table of generation rate versus time. Set 0 or 1 for constant generation rate. For wells on deliverability, |
5X |
(void) |
|
|
A4 |
specifies different options for fluid or heat production and injection. For example, different fluid components may be injected, the nature of which depends on the EOS module being used. Different options for considering wellbore flow effects may also be specified:
- HEAT: Introduces a heat sink/source
- WATE: water
- COM1: component 1
- COM2: component 2
- COM3: component 3
- …
- COMn: component n
- MASS: mass production rate specified
- DELV: well on deliverability, i.e., production occurs against specified bottomhole pressure. If well is completed in more than one layer, bottommost layer must be specified first, with number of layers given in
LTAB . Subsequent layers must be given sequentially for a total number of LTAB layers.- F— or f—: well on deliverability against specified wellhead pressure. By convention, when the first letter of a type specification is F or f, TOUGH3 will perform flowing wellbore pressure corrections using tabular data of flowing bottomhole pressure vs. flow rate and flowing enthalpy. The tabular data used for flowing wellbore correction must be generated by means of a wellbore simulator ahead of a TOUGH3 run as ASCII data of 80 characters per record, according to the format specifications below.
The capability for flowing wellbore pressure correction is presently only available for wells with a single feed zone.
|
|
A1 |
unless left blank, table of specific enthalpies will be read ( |
|
E10.4 |
constant generation rate; positive for injection, negative for production; |
|
E10.4 |
fixed specific enthalpy (J/kg) of the fluid for mass injection ( |
|
E10.4 |
thickness of layer (m; wells on deliverability with specified bottomhole pressure only). |
*f725d* - (q,h) from ( .5000E+00, .1000E+07) to ( .9050E+02, .1400E+07)
11 9
.5000E+00 .1050E+02 .2050E+02 .3050E+02 .4050E+02 .5050E+02 .6050E+02 .7050E+02
.8050E+02 .9050E+02 1.e3
.1000E+07 .1050E+07 .1100E+07 .1150E+07 .1200E+07 .1250E+07 .1300E+07 .1350E+07
.1400E+07
.1351E+07 .1238E+07 .1162E+07 .1106E+07 .1063E+07 .1028E+07 .9987E+06 .9740E+06
.9527E+06
.1482E+07 .1377E+07 .1327E+07 .1299E+07 .1284E+07 .1279E+07 .1279E+07 .1286E+07
.1292E+07
.2454E+07 .1826E+07 .1798E+07 .1807E+07 .1835E+07 .1871E+07 .1911E+07 .1954E+07
.1998E+07
.4330E+07 .3199E+07 .2677E+07 .2280E+07 .2322E+07 .2376E+07 .2434E+07 .2497E+07
.2559E+07
.5680E+07 .4772E+07 .3936E+07 .3452E+07 .2995E+07 .2808E+07 .2884E+07 .2967E+07
.3049E+07
.6658E+07 .5909E+07 .5206E+07 .4557E+07 .4158E+07 .3746E+07 .3391E+07 .3402E+07
.3511E+07
.7331E+07 .6850E+07 .6171E+07 .5627E+07 .5199E+07 .4814E+07 .4465E+07 .4208E+07
.3957E+07
.7986E+07 .7548E+07 .7140E+07 .6616E+07 .6256E+07 .5908E+07 .5634E+07 .5399E+07
.5128E+07
.8621E+07 .8177E+07 .7820E+07 .7560E+07 .7234E+07 .6814E+07 .6624E+07 .6385E+07
.6254E+07
.8998E+07 .8732E+07 .8453E+07 .8124E+07 .7925E+07 .7671E+07 .7529E+07 .7397E+07
.7269E+07
.5555e+08 .5555e+08 .5555e+08 .5555e+08 .5555e+08 .5555e+08 .5555e+08 .5555e+08
.5555e+08
Parameter |
Format |
Description |
---|---|---|
|
E14.7 |
|
Parameter |
Format |
Description |
---|---|---|
|
E14.7 |
|
Parameter |
Format |
Description |
---|---|---|
|
E14.7 |
|
Repeat records GENER.1, GENER.1.1, GENER.1.2, and GENER.1.3 for the number of sinks/sources desired.
A blank record closes the GENER data block.
Alternatively, generation information may terminate on a record with +++
typed in the first three columns, followed by element cross-referencing information.
In addition to the standard input format, time-dependent generation rates (i.e., if LTAB
> 1 in block GENER.1) can be provided as a free-format table with time in the first column, injection or production rate in the second column, and (if ITAB
is not left blank) specific enthalpy in the third column.
The number of table rows is given by LTAB
.
The tabular format is chosen by providing the character “T” or “D” in Column 7 after keyword GENER.
Moreover, time and rate conversion factors can be given in columns 11-20 and 21-30.
If character “D” is specified in Column 7, time can be given in (any) date format; it will be converted to seconds (relative to the first date given).
These conversion factors only apply to sinks/source with time-dependent generation rates (i.e., constant rates given in columns 41-50 of block
GENER.1 are not affected).
The free-format options are only available if sinks/sources are given directly in the TOUGH3 input deck.
The external file GENER has to be provided in the standard format.
TIMBC#
Permits the users to specify time-dependent Dirichlet boundary conditions. All values in this data block are read in free format.
Parameter |
Format |
Description |
---|---|---|
|
Free |
number of elements with time-dependent boundary conditions. |
Parameter |
Format |
Description |
---|---|---|
|
Free |
number of times. |
|
Free |
number of primary variable that is time dependent, e.g., 1 for pressure. |
Parameter |
Format |
Description |
---|---|---|
|
Free |
name of boundary element (start in Column 1). |
Parameter |
Format |
Description |
---|---|---|
|
Free |
|
Repeat records TIMBC.2, TIMBC.3, and TIMBC.4 for NTPTAB
times.
MOMOP (optional)#
Describes additional options.
Parameter |
Format |
Description |
---|---|---|
|
I1 |
Minimum number of Newton-Raphson iterations:
0, 1: Allow convergence in a single Newton-Raphson iteration
2: Perform at least two iterations; primary variables are always updated
|
|
I1 |
Length of element names (default: 5 characters). Format of blocks ELEME, CONNE, INCON, and GENER change depending on element-name length as follows
ELEME
5: (A3,I2,I5,I5,A2,A3,6E10.4)
6: (A3,I3,I5,I4,A2,A3,6E10.4)
7: (A3,I4,I4,I4,A2,A3,6E10.4)
8: (A3,I5,I4,I3,A2,A3,6E10.4)
9: (A3,I6,I3,I3,A2,A3,6E10.4)
CONNE
5: (2(A3,I2),I5,2I5,I5,4E10.4)
6: (2(A3,I3),I5,2I4,I5,4E10.4)
7: (2(A3,I4),I5,2I3,I5,4E10.4)
8: (2(A3,I5),I3,2I3,I5,4E10.4)
9: (2(A3,I6),I3,2I2,I5,4E10.4)
INCON
5: (A3,I2,I5,I5,E15.8,4E12.4)
6: (A3,I3,I5,I4,E15.8,4E12.4)
7: (A3,I4,I4,I4,E15.8,4E12.4)
8: (A3,I5,I4,I3,E15.8,4E12.4)
9: (A3,I6,I3,I3,E15.8,4E12.4)
GENER
5: (A3,I2,A3,I2,I5,2I5,I5,5X,A4,A1,3E10.4)
6: (A3,I3,A3,I2,I6,2I4,I5,5X,A4,A1,3E10.4)
7: (A3,I4,A3,I2,I5,2I4,I5,5X,A4,A1,3E10.4)
8: (A3,I5,A3,I2,I4,2I4,I5,5X,A4,A1,3E10.4)
9: (A3,I6,A3,I2,I5,2I3,I5,5X,A4,A1,3E10.4)
|
|
I1 |
Honoring generation times in block GENER:
0: Generation times ignored
>0: Time steps adjusted to match generation times
|
|
I1 |
Vapor pressure reduction:
0: No vapor pressure reduction at low liquid saturation
>0: Reduces vapor pressure for \(S_l\) < 0.02 to prevent liquid disappearance by evaporation (only certain EOS modules)
|
|
I1 |
Active Fracture Model:
0: Active Fracture Model applied to liquid phase only
>0: Active Fracture Model applied to all phases
|
|
I1 |
Leverett scaling of capillary pressure:
0: No Leverett scaling
>0: Rescale capillary pressure: \(P_c = P_{c, ref} \sqrt{\frac{k_{ref}}{k}}\) if element-specific permeabilities are specified
|
|
I1 |
Zero nodal distance:
0: Take absolute permeability from other element
>0: Take absolute and relative permeability from other element
|
|
I1 |
Conversion of element names:
0: No conversion
>0: Convert non-leading spaces in element names to zeros
|
|
I1 |
Time stepping after time-step reduction to honor printout time:
0: Continue with time step used before forced time-step reduction
>0: Continue with time step imposed by forced time-step reduction
|
|
I1 |
Writing SAVE file:
0: Write SAVE file only at the end of a forward run
1: Write SAVE file after each printout time
2: Write separate SAVE files after each printout time
|
|
I1 |
Water properties:
0: International Formulation Committee (1967)
1: IAPWS-IF97
|
|
I1 |
Enthalpy of liquid water:
0: Potential energy not included in enthalpy of liquid water
>0: Potential energy included in enthalpy of all phases (Stauffer et al., 2014)
|
|
I1 |
Adjustment of Newton-Raphson increment weighting:
0: No adjustment
>0: Reduce
WNR by MOP2(13) percent if Newton-Raphson iterations oscillate and time step is reduced because ITER = NOITE |
|
I1 |
Print input file to the end of output file:
0: Do not reprint input files
1: Print TOUGH3 input file to the end of TOUGH3 output file
|
|
I1 |
Porosity used for calculation of rock energy content:
0: Use porosity of block ROCKS; this assumes that the porosities provided in block INCON were the result of a pore compressibility/expansivity calculation; the “original” porosity from block ROCKS is used to compensate for equivalent rock-grain density changes
>0: Use porosity from block INCON; this assumes that these porosities were not the result from a pore compressibility/expansivity calculation; changes in rock-grain density due to pore compressibility/expansivity are not compensated.
|
|
I1 |
Porosity-permeability relationships for heterogeneous media:
0: No deterministic correlation
1: Material-specific empirical correlations (see subroutine PER2POR)
|
|
I1 |
Variables printed on FOFT files:
0: Print variables according to input data in block FOFT
1: Print variables according to input data in block OUTPU
|
|
I1 |
(void) |
|
I1 |
(void) |
|
I1 |
Reading anisotropic permeability modifiers in block ELEME:
0: Read isotropic permeability modifiers from columns 41-50
1: Read anisotropic permeability modifiers from columns 81-110
2: Read anisotropic permeability modifiers for
ISOT = 1 from columns 41-50 and for ISOT = 2 and 3 from columns 91-110 |
|
I1 |
Honoring generation times in blocks TIMBC:
0: Time stepping ignores times specified in block TIMBC
>0: Time steps adjusted to match times in block TIMBC
|
|
I1 |
Format for reading coordinates in block ELEME:
0: Read coordinates in format 3E10.4 from columns 51-80
>0: Read coordinates in format 3E20.14 from columns 51-110
|
|
I1 |
(void) |
|
I1 |
(void) |
|
I1 |
Check mesh for duplicate element names:
0: Do not check the mesh
1: Check the mesh
|
|
I1 |
Printout format:
0: Both traditional output and CSV formats
1: CSV/TECPLOT format (types separated; times combined)
2: CSV/TECPLOT format (types separated; times separated)
3: CSV/TECPLOT format (types combined; times combined)
|
|
I1 |
Element naming in MESHMAKER:
0: Traditional element naming scheme
1: Element name is equal to consecutive element number
|
OUTPU (optional)#
Permits the users to obtain printout of specified variables.
OUTPU specifications will supersede the default condition specified in KDATA
in data block PARAM.
Block OUTPU must be specified after block MULTI.
Parameter |
Format |
Description |
---|---|---|
|
A20 |
a keyword indicating the desired output format, currently either CSV, TECPLOT, or PETRASIM. |
Parameter |
Format |
Description |
---|---|---|
|
I5 |
number of variables to be printed out. |
Parameter |
Format |
Description |
---|---|---|
|
A20 |
name of variable, to be chosen among the available options. They include primary variables, secondary parameters, flow terms, and more. The name of variables is all capital letters, and should be typed in the input file as shown in Table 50. |
|
I5 |
first option for the corresponding keyword in |
|
I5 |
second option for the corresponding keyword in |
Keyword |
ID1 |
ID2 |
Output variable |
Header |
---|---|---|---|---|
SET |
|
Prints predefined sets of output variables:
ISET = 1: Set of main element-related output variablesISET = 2: Set of main connection-related output variablesISET = 3: Set of main generation-related output variables |
||
NO COMMA |
Omit commas between values |
|||
NO QUOTES |
Omit quotes around values |
|||
NO NAME |
Omit element names |
|||
COORDINATE
COORD
|
|
Grid-block or connection coordinates; mesh dimension and orientation are automatically determined, or can be specified through variable
NXYZ :NXYZ = 1 : Mesh is 1D “X “NXYZ = 2 : Mesh is 1D “ Y “NXYZ = 3 : Mesh is 1D “ Z “NXYZ = 4 : Mesh is 2D “XY “NXYZ = 5 : Mesh is 2D “X Z”NXYZ = 6 : Mesh is 2D “ YZ”NXYZ = 7 : Mesh is 3D “XYZ” |
||
INDEX |
Index (running number) of elements, connections, or sinks/sources |
|||
MATERIAL
ROCK
ROCK TYPE
|
Material number |
ROCK |
||
MATERIAL NAME
ROCK NAME
ROCK TYPE NAME
|
Material name |
ROCK |
||
ABSOLUTE |
|
Absolute permeability in direction |
ABS |
|
POROSITY |
Porosity |
POR |
||
TEMPERATURE |
Temperature |
TEMP |
||
PRESSURE |
|
Pressure of phase |
PRES |
|
SATURATION |
|
Saturation of phase |
SAT |
|
RELATIVE |
|
Relative permeability of phase |
REL |
|
VISCOSITY |
|
Viscosity of phase |
VIS |
|
DENSITY |
|
Density of phase |
DEN |
|
ENTHALPY |
|
Enthalpy of phase |
ENT |
|
CAPILLARY |
|
Capillary pressure:
if
IPH = 1, difference between gas and aqueous phase pressures (for ECO2M, difference between gaseous CO2 and aqueous phase pressures)if
IPH = 2, difference between gas-NAPL phase pressures for TMVOC, and difference between gaseous and liquid CO2 phase pressures for ECO2M |
PCAP |
|
MASS FRACTION |
|
|
Mass fraction of component |
X1, X2, … |
DIFFUSION1 |
|
Diffusion parameter group 1 \(\left( \phi \tau_0 \tau_{\beta} \rho_{\beta} \right)\) of phase \(\beta\) = |
DIFF1 |
|
DIFFUSION2 |
|
Diffusion parameter group 2 \(\left( \frac{P_0}{P} \left( \frac{T + 273.15}{273.15} \right)^{\theta} \right)\) of phase \(\beta\) = |
DIFF2 |
|
PSAT |
Saturated vapor pressure |
PSAT |
||
BIOMASS |
Biomass concentration |
BIO |
||
PRIMARY |
|
Primary variable No. |
||
SECONDARY |
|
|
Secondary parameter No.
ISP related to phase IPH , whereISP = 0: All secondary parametersISP = 1: Phase saturationISP = 2: Relative permeabilityISP = 3: ViscosityISP = 4: DensityISP = 5: EnthalpyISP = 6: Capillary pressureISP = 7: Diffusion parameter group 1ISP = 8: Diffusion parameter group 2 |
|
TOTAL FLOW
TOTAL FLOW RATE
|
Total flow rate |
FLOW |
||
FLOW
RATE
FLOW RATE
|
|
|
Advective flow rate:
IPH = 0; IC = 0: Total flowIPH > 0; IC = 0: Flow of phase IPH IPH < 0; IC = 0: Flow of each phaseIPH > 0; IC > 0: Flow of component IC in phase IPV IPH > 0; IC < 0: The flow of each component in phase IPH |
FLOW |
DIFFUSIVE FLOW |
|
|
Diffusive flow rate:
IPH = 0; IC = 0: Total flowIPH > 0; IC = 0: Flow of phase IPH IPH < 0; IC = 0: Flow of each phaseIPH > 0; IC > 0: Flow of component IC in phase IPH IPH > 0; IC < 0: The flow of each component in phase IPH |
FDIFF |
HEAT FLOW |
Heat flow rate |
HEAT |
||
VELOCITY |
|
Flow velocity of phase |
VEL |
|
GENERATION
GENERATION RATE
|
Production or injection rate |
GEN |
||
FLOWING ENTHALPY |
Flowing enthalpy |
ENTG |
||
WELLBORE PRESSURE |
Wellbore pressure (wells on deliverability only) |
PWB |
Note
† If IPH
= 0, the output variables of all phases are printed.
ENDCY#
Closes the TOUGH3 input file and initiates the simulation.
Geometry Data#
General concepts#
Flow geometry in TOUGH3 is defined by means of a list of volume elements (“grid blocks”) and a list of flow connections between them, as in other “integral finite difference” codes (Narasimhan & Witherspoon, 1976). This formulation can handle regular and irregular flow geometries in one, two, and three dimensions. Single- and multiple-porosity systems (porous and fractured media) can be specified, and higher-order methods, such as seven- and nine-point differencing, can be implemented by means of appropriate specification of geometric data (Pruess & Bodvarsson, 1983).
In TOUGH3, volume elements are identified by names that consist of a string of by default five characters, 12345
, unless a different length of element names is specified in data block
MOMOP (MOP2(2)
> 5).
These are arbitrary, except that the last two characters (#4 and 5) must be numbers if grids are generated using NSEQ
in data block ELEME and CONNE; an example of a valid element name is “ELE10
”.
Flow connections are specified as ordered pairs of elements, such as “(ELE10
, ELE11
)”.
A variety of options and facilities are available for entering and processing geometric data (see Figure 4).
Element volumes and domain identification can be provided by means of a data block ELEME in the input file, while a data block CONNE can be used to supply connection data, including interface area, nodal distances from the interface, and orientation of the nodal line relative to the vertical.
These data are internally written to a disk file MESH, which in turn initializes the geometry data arrays used during the flow simulation.
It is also possible to omit the ELEME and CONNE data blocks from the input file, and provide geometry data directly on a disk file MESH.
Meshmaker#
TOUGH3 offers an additional way for defining flow system geometry by means of a special program module MESHMaker. This can perform a number of mesh generation and processing operations and is invoked with the keyword MESHM in the input file (see Figure 5). The MESHMaker module has a modular structure. At the present time, there are three sub-modules available in MESHMaker: keywords RZ2D or RZ2DL invoke generation of a one or two-dimensional radially symmetric R-Z mesh; XYZ initiates generation of a one, two, or three dimensional Cartesian X-Y-Z mesh; and MINC calls a modified version of the GMINC program (Pruess, 1983) to sub-partition a primary porous medium mesh into a secondary mesh for fractured media, using the method of “multiple interacting continua” (Pruess & Narasimhan, 1985), which will be described in detail below.
Several naming conventions for the elements created with keywords RZ2D (or RZ2DL) and XYZ have been adopted in the internal mesh generation process.
In addition to the traditional TOUGH2 conventions, the other conventions are adopted to accommodate large numbers of grid blocks in cases with MOP2(2)
> 5 or MOP2(27)
> 0.
Both RZ2D and XYZ assign all grid blocks to domain #1 (first entry in block ROCKS); a user desiring changes in domain assignments must do so by hand, either through editing of the MESH file with a text editor, or by means of preprocessing with an appropriate utility program, or by appropriate source code changes in subroutines WRZ2D and GXYZ.
TOUGH3 runs that involve RZ2D or XYZ mesh generation will produce a special printout, showing element names arranged in their actual geometric pattern.
The naming conventions for the MINC process are as follows.
For a primary grid block with name 12345
, the corresponding fracture subelement in the secondary mesh is named 12345
(character #1 replaced with a blank for easy recognition).
The successive matrix continua are labeled by running character #1 through 2, …, 9, A, B, …, Z.
The domain assignment is incremented by 1 for the fracture grid blocks, and by 2 for the matrix grid blocks.
Thus, domain assignments in data block ROCKS should be provided in the following order: the first entry is the single (effective) porous medium, then follows the effective fracture continuum, and then the rock matrix.
Users should be aware that the MINC process may lead to ambiguous element names when the inactive element device is used to keep a portion of the primary mesh as unprocessed porous medium.
Also, the MINC process may generate duplicate element names. TOUGH3 will check the element names after reading disk file MESH, and abort the simulation if duplicate element names are found.
As a convenience for users desiring graphical display of data, the internal mesh generation process will also write nodal point coordinates on file MESH.
By default these data are written in 3E10.4 format into columns 51-80 of each grid block entry in data block ELEME, unless a longer effective digit of 3E20.14 format into columns 51-110 is specified in data block MOMOP (MOP2(22)
> 0).
No internal use is made of nodal point coordinates in TOUGH3, except for optional initialization of a gravity-capillary equilibrium with EOS9 (see the addendum for EOS9) and for optional addition of potential energy to enthalpy with MOP2(12)
> 0 in data block MOMOP.
Mesh generation and/or MINC processing can be performed as part of a simulation run. Alternatively, by closing the input file with the keyword ENDFI (instead of ENDCY), it is possible to skip the flow simulation and only execute the MESHMaker module to generate a MESH or MINC file. These files can then be used, with additional user-modifications by hand if desired, in subsequent flow simulations. Execution of MESHMaker produces printed output which is self-explanatory.
Multiple-porosity processing#
Multiple-porosity processing for simulation of flow in naturally fractured reservoirs can be invoked by means of a keyword MINC, which stands for “multiple interacting continua” (Pruess & Narasimhan, 1985). The MINC-process operates on the data of the primary (porous medium) mesh as provided on disk file MESH, and generates a “secondary” mesh containing fracture and matrix elements with identical data formats on file MINC. By appropriate subgridding of the matrix blocks, as shown in Figure 6, and therefore by resolving the driving pressure, temperature, and mass fraction gradients at the matrix and fracture interface, the transient, multiphase interporosity flows between rock matrix and fractures can accurately be described. The MINC concept is based on the notion that changes in fluid pressures, temperatures, phase compositions, etc, due to the presence of sinks and sources (production and injection wells) will propagate rapidly through the fracture system, while invading the tight matrix blocks only slowly. Therefore, changes in matrix conditions will (locally) be controlled by the distance from the fractures. Fluid and heat flow from the fractures into the matrix blocks, or from the matrix blocks into the fractures, can then be modeled by means of one-dimensional strings of nested grid blocks, as shown in Figure 6. The MINC-method lumps all fractions within a certain reservoir subdomain into continuum #1, all matrix material within a certain distance from the fractures into continuum #2, matrix material at larger distance into continuum #3, and so on. Quantitatively, the subgridding is specified by means of a set of volume fractions, into which the primary porous medium grid blocks are partitioned. The MINC-process in the MESHMaker module operates on the element and connection data of a porous medium mesh to calculate, for given data on volume fractions, the volumes, interface areas, and nodal distances for a secondary fractured medium mesh. The information on fracturing (spacing, number of sets, shape of matrix blocks) required for this is provided by a “proximity function” PROX(x) which expresses, for a given reservoir domain \(V_0\), the total fraction of matrix material within a distance \(x\) from the fractures. If only two continua are specified (one for fractures, one for matrix), the MINC approach reduces to the conventional double-porosity method (Warren & Root, 1963). Full details are given in a separate report (Pruess, 1983). For any given fractured reservoir flow problem, selection of the most appropriate gridding scheme must be based on a careful consideration of the physical and geometric conditions of flow. The MINC approach is not applicable to systems in which fracturing is so sparse that the fractures cannot be approximated as a continuum.
The file MESH used in this process can be either directly supplied by the user, or it can have been internally generated either from data in input blocks ELEME and CONNE, or from RZ2D or XYZ mesh- making. The MINC process of sub-partitioning porous medium grid blocks into fracture and matrix continua will only operate on active grid blocks, while inactive grid blocks are left unchanged as single porous medium blocks. In TOUGH3, elements in data block ELEME (or file MESH) are taken to be “active” unless they have very large volumes, which are taken to be “inactive”. In order to exclude selected reservoir domains from the MINC process and make them remain single porous media, the user needs to change the volume of the corresponding blocks to a very large number before MINC partitioning is made. Note that here the concept of inactive blocks is used in an unrelated manner with respect to the one to maintain time-independent Dirichlet boundary conditions (see Section Initial and Boundary Conditions).
Input Formats for MESHMAKER#
Generation of radially symmetric grid#
Keyword RZ2D (or RZ2DL) invokes generation of a radially symmetric mesh. Nodal points will be placed half-way between neighboring radial interfaces. When RZ2D is specified, the mesh will be generated by columns; i.e., in the ELEME block we will first have the grid blocks at smallest radius for all layers, then the next largest radius for all layers, and so on. With keyword RZ2DL the mesh will be generated by layers; i.e., in the ELEME block we will first have all grid blocks for the first (top) layer from smallest to largest radius, then all grid blocks for the second layer, and so on. Apart from the different ordering of elements, the two meshes for RZ2D and RZ2DL are identical. The reason for providing the two alternatives is as a convenience to users in implementing boundary conditions by way of inactive elements (see Section Initial and Boundary Conditions). RZ2D makes it easy to declare a vertical column inactive, facilitating assignment of boundary conditions in the vertical, such as a gravitationally equilibrated pressure gradient. RZ2DL on the other hand facilitates implementation of areal (top and bottom layer) boundary conditions.
RADII#
RADII is the first keyword following RZ2D; it introduces data for defining a set of interfaces (grid block boundaries) in the radial direction.
Parameter |
Format |
Description |
---|---|---|
|
I5 |
number of radius data that will be read. At least one radius must be provided, indicating the inner boundary of the mesh. |
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|
EQUID#
Introduces data on a set of equal radial increments.
Parameter |
Format |
Description |
---|---|---|
|
I5 |
number of desired radial increments. |
5X |
(void) |
|
|
E10.4 |
number of desired radial increments. |
Note that at least one radius must have been defined via block RADII before EQUID can be invoked.
LOGAR#
Introduces data on radial increments that increase from one to the next by the same factor (\(\Delta R_{n + 1} = f \cdot \Delta R_n\)).
Parameter |
Format |
Description |
---|---|---|
|
I5 |
number of additional interface radii desired. |
5X |
(void) |
|
|
E10.4 |
desired radius of the last (largest) of these radii. |
|
E10.4 |
reference radial increment: the first \(\Delta R\) generated will be equal to f × |
Additional blocks RADII, EQUID, and LOGAR can be specified in arbitrary order.
Note that at least one radius must have been defined before LOGAR can be invoked.
If DR
= 0, at least two radii must have been defined.
LAYER#
Introduces information on horizontal layers, and signals closure of RZ2D input data.
Parameter |
Format |
Description |
---|---|---|
|
I5 |
number of horizontal grid layers. |
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|
The LAYER data close the RZ2D data block. Note that one blank record must follow to indicate termination of the MESHM data block. Alternatively, keyword MINC can appear to invoke MINC-processing for fractured media (see below).
Generation of rectilinear grids#
XYZ#
Invokes generation of a Cartesian (rectilinear) mesh.
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
angle (in degrees) between the Y-axis and the horizontal. If gravitational acceleration (parameter |
Parameter |
Format |
Description |
---|---|---|
|
A2 |
set equal to NX, NY or NZ for specifying grid increments in X, Y, or Z direction. |
3X |
(void) |
|
|
I5 |
number of grid increments desired. |
|
E10.4 |
constant grid increment for |
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|
A blank record closes the XYZ data block.
Note that the end of block MESHMaker is also marked by a blank record. Thus, when MESHMaker/XYZ is used, there will be two blank records at the end of the corresponding input data block.
MINC processing for fractured media#
MINC#
Invokes postprocessing of a primary porous medium mesh from file MESH. The input formats in data block MINC are identical to those of the GMINC program (Pruess, 1983), with two enhancements: there is an additional facility for specifying global matrix-matrix connections (“dual permeability”); further, only active elements will be subjected to MINC-processing, the remainder of the MESH remaining unaltered as porous medium grid blocks.
PART#
PART is the first keyword following MINC; it will be followed on the same line by parameters TYPE
and DUAL
with information on the nature of fracture distributions and matrix-matrix connections.
Parameter |
Format |
Description |
---|---|---|
|
A5 |
identifier of data block with partitioning parameters for secondary mesh. |
|
A5 |
a five-character word for selecting one of the six different proximity functions provided in MINC (Pruess, 1983):
ONE-D: a set of plane parallel infinite fractures with matrix block thickness between neighboring fractures equal to
PAR(1) .TWO-D: two sets of plane parallel infinite fractures, with arbitrary angle between them. Matrix block thickness is
PAR(1) for the first set, and PAR(2) for the second set. If PAR(2) is not specified explicitly, it will be set equal to PAR(1) .THRED: three sets of plane parallel infinite fractures at right angles, with matrix block dimensions of
PAR(1) , PAR(2) , and PAR(3) , respectively. If PAR(2) and/or PAR(3) are not explicitly specified, they will be set equal to PAR(1) and/or PAR(2) , respectively.STANA: average proximity function for rock loading of Stanford large reservoir model (Lam et al., 1988).
STANB: proximity function for the five bottom layers of Stanford large reservoir model.
STANT: proximity function for top layer of Stanford large reservoir model.
Note: a user wishing to employ a different proximity function than provided in MINC needs to replace the function subprogram PROX(x) in file Mesh_Maker.f90 with a routine of the form:
FUNCTION PROX(x)
PROX = (arithmetic expression in x)
RETURN
END
It is necessary that PROX(x) is defined even when x exceeds the maximum possible distance from the fractures, and that PROX = 1 in this case. Also, when the user supplies his/her own proximity function subprogram, the parameter
TYPE has to be chosen equal to ONE-D, TWO-D, or THRED, depending on the dimensionality of the proximity function. This will assure proper definition of innermost nodal distance (Pruess, 1983). |
5X |
(void) |
|
|
A5 |
a five-character word for selecting the treatment of global matrix matrix flow:
blank: (default) global flow occurs only through the fracture continuum, while rock matrix and fractures interact locally by means of interporosity flow (“double-porosity” model).
MMVER: global matrix-matrix flow is permitted only in the vertical; otherwise like the double-porosity model; for internal consistency this choice should only be made for flow systems with one or two predominantly vertical fracture sets.
MMALL: global matrix-matrix flow in all directions; for internal consistency only two continua, representing matrix and fractures, should be specified (“dual-permeability”).
|
Parameter |
Format |
Description |
---|---|---|
|
I3 |
total number of multiple interacting continua. |
|
I3 |
total number of explicitly provided volume fractions ( |
|
A4 |
specifies whether the sequentially specified volume fractions begin with the fractures ( |
|
E10.4 |
|
Parameter |
Format |
Description |
---|---|---|
|
E10.4 |
|