>> USER (: anno)
This command selects a user-specified parameter. This option enables a user to estimate any conceivable parameter which can be any TOUGH2 variable or function thereof. The user must program the function in subroutine USERPAR, file it2user.f. Identification of and details about the parameter can be given in the iTOUGH2 input file and will be transferred to subroutine USERPAR. A parameter annotation anno should be provided following a colon on the command line. This annotation (or a substring thereof) will be available in subroutine USERPAR (variable ANNO) and can be used to identify the parameter type. The significant part of the string should therefore not be changed by command >>>> ANNOTATION. Furthermore, multiple material names as well as grid block or sink/source code names defined by the corresponding third-level command will be transferred to the subroutine in array NAMEA. Integers read after command >>>> INDEX are provided through array IDA. A flag (variable IVLF) indicates whether the estimate is a value, logarithm, or multiplication factor of the corresponding parameter. The user must ensure that all TOUGH2 variables used by the function are transferred to subroutine USERPAR via COMMON blocks. If a variable is not predefined in one of the standard COMMON blocks, a new COMMON block must be created which and added to the include file usercom.inc. Subroutine USERPAR has two major blocks. In the first block (IUIG=1), the value specified in the TOUGH2 input file is transferred to iTOUGH2 as an initial guess. Programming this first part is optional because initial guesses can also be provided through the iTOUGH2 input file by means of command >> GUESS, >>>> PRIOR, or >>>> GUESS. Programming the second part (IUIG=2) is mandatory. In this part, the parameter is updated, i.e., the generic parameter value calculated by iTOUGH2, which is stored in variable XX, must be assigned to the appropriate TOUGH2 variable.
In this simple example, the tortuosity factor (TOUGH2 variable TORT(NMAT)) is treated as
a user-specified parameter. Variable TORT is provided through COMMON block SOLI11 in
include file rock.inc.
>> USER-specified parameter: TORTUOSITY
>>> MATERIAL: SAND1
Additional examples can be found in file it2user.f .