Input Data
General Considerations
Techniques Control File or Terminal I/O Startup
The input/output (I/O) file information is provided to the code from an input control file or the terminal. The default control file name is fehmn.files
. If a control file with the default name is present in the directory from which the code is being executed, no terminal input is required. If the default control file is not present, it is possible to supply the name of the control file on the command line, otherwise input prompts are written to the screen preceded by a short description of the I/O files used by FEHM. It should be noted that a control file name entered on the command line will take precedence over the default control file. The descriptions of the I/O files are elaborated on in Data Files. The initial prompt asks for the name of a control file. It is also If a control file name is entered for that prompt no further terminal input is required. If a control file is not used, the user is then prompted for I/O file names, the tty output flag, and user subroutine number. When the input file name is entered from the terminal the user has the option of letting the code generate the names for the remainder of the auxiliary files using the input file name prefix. The form of the input file name is filen
or filen.*
where filen
is the prefix used by the code to name the auxiliary files and .*
represents an arbitrary file extension.
Multiple Realization Simulations
The code has an option for performing multiple simulation realizations (calculations) where input (e.g., porosity, permeability, saturation, transport properties or particle distributions) is modified for each realization but the calculations are based on the same geometric model. Multiple realizations are initiated by including a file called fehmn.msim in the directory from which the code is being run. If invoked, a set number of simulations are performed sequentially, with pre- and post-processing steps carried out before and after each simulation. This capability allows multiple simulations to be performed in a streamlined fashion, with processing to change input files before each run and post-processing to obtain relevant results after each run.
Macro Control Structure
The finite element heat and mass transfer code (FEHM) contains a macro control structure for data input that offers added flexibility to the input process. The macro command structure makes use of a set of control statements recognized by the input module of the program. When a macro control statement is encountered in an input file, a certain set of data with a prescribed format is expected and read from the input file. In this way, the input is divided into separate, unordered blocks of data. The input file is therefore a collection of macro control statements, each followed by its associated data block. Blocks of data can be entered in any order, and any blocks unnecessary to a particular problem need not be entered. The macro control statements must appear in the first four columns of a line. The other entries are free format, which adds flexibility, but requires that values be entered for all input variables (no assumed null values).
As an aid to the user, the capabilities of FEHM summarized in Capabilities of FEHM with Macro Command References refer to applicable macro commands. Macro Control Statements for FEHM lists the macro control statements with a brief description of the data associated with each. A more detailed description of each macro control statement and its associated input are found in their respective pages. Macro control statements may be called more than once, if, for example, the user wishes to reset some property values after defining alternate zones. Some statements are required, as indicated in Macro Control Statements for FEHM, the others are optional.
Macro Control Statements for FEHM (Alphabetical List)
Macro | Description |
---|---|
adif | Air-water vapor diffusion |
airwater or air | Isothermal air-water input |
anpe | Anisotropic permeability |
boun | Boundary conditions (required for flow problem if macro flow is not used) |
bous | Boussinesq-type approximation |
carb | CO2 input |
cden | Concentration-dependent density |
cflx | Molar flow rate through a zone |
cgdp | Rate-limited gdpm node |
chea | Output in terms of head, not pressures (non-head problem) |
cond | Thermal conductivity data (required for non-isothermal problem) |
conn | Print number of connections for each node and stop |
cont | Contour plot data |
conv | Head input conversion for thermal problems |
coor | Node coordinate data (required if macro fdm is not used) |
cont | Program control parameters (required) |
dpdp | Double porosity/double permeability model input |
dual | Dual porosity model input |
dvel | Velocity printout (formerly macro velo) |
elem | Element node data (required if macro fdm is not used) |
eos | Simple equation of state data |
evap | Evaporation model |
exrl | Explicit evaluation of relative permeability |
fdm | Finite difference grid generation (required if macro coor and elem are not used) |
finv | Finite volume flow coefficients |
flgh | Generalized head boundary conditions (confined aquifer) |
flow | Flow data (required for flow problem if macro boun is not used) |
flo2 | Alternate format for flow data (input using 3-D planes) |
flo3 | Alternate format for flow data (defined for see page faces) |
floa | Alternate format for flow data (additive to previous flow definition) |
flwt | Movable source or sink (wtsi only) |
flxn | Write all non-zero source/sink internodal mass flows by node to an output file. |
flxo | Internodal mass flow printout |
flxz | Zone based mass flow output |
fper | Permeability scaling factor |
frlp | Relative permeability factors for residual air effect |
ftsc | Flux correction for saturations over 1 |
gdkm | Generalized dual permeability model |
gdpm | Generalized dual porosity model |
grad | Gradient model input |
hcon | Set solution to heat conduction only |
head | Hydraulic head input |
hflx | Heat flow input |
hist | User selected history output |
hyco | Hydraulic conductivity input (required if macro perm is not used) |
ice or meth | Ice phase calculations, methane hydrate input |
imex | implicit-explicit solution |
impf | Time step control based on maximum allowed variable change |
init | Initial value data (required if macro pres or restart file is not used) |
intg | Set integration type for finite element coefs |
isot | Isotropic definition of control volume/finite element coefficients |
iter | Iteration parameters |
itfc | Flow and transport between zone interfaces |
ittm | Sticking time for phase changes |
itup | Iterations used with upwinding |
iupk | Upwind transmissibility including intrinsic permeability |
ivfc | Enable exponential fracture and volume model |
mdnode | Enables extra connections to be made to nodes |
meth or ice | Methane hydrate input |
mptr | Multiple species particle tracking simulation input |
nfinv | Finite element instead of finite volume calculations |
ngas | Noncondensible gas (air) data |
nobr | Don’t break connection between nodes with boundary conditions |
node | Node numbers for output and time histories |
nod2 | Node numbers for output and time histories, and alternate nodes for terminal output |
nod3 | Node numbers for output and time histories, alternate nodes for terminal output, and alternate nodes for variable porosity model information |
nrst | Stop NR iterations on variable changes |
para | Parallel FEHM (isothermal only) |
perm | Permeability input (required if macro hyco is not used) |
pest | Parameter estimation routine output |
phys | Non-darcy well flow |
ppor | Pressure and temperature dependent porosity and permeability |
pres | Initial pressure, temperature, and saturation data, boundary conditions specification (required if macro init or restart file is not used) |
ptrk | Particle tracking simulation input |
renu | Renumbers nodes |
rest | Manage restart options |
rflo | Read in flux values |
rich | Enable Richards’ equation |
rive or well | River or implicit well package |
rlp | Relative permeability input (required for 2-phase problem if macro rlpm is not used, otherwise optional) |
rlpm | Alternate style relative permeability input (required for 2-phase problem if macro rlp is not used, otherwise optional) |
rock | Rock density, specific heat, and porosity input (required) |
rxn | Chemical reaction rate model input |
sol | Solver specifications |
sptr | Streamline particle tracking simulation input |
stea | Steady state program termination |
stop | Signals the end of input (required) |
strs | Stress solution enabled |
subm | Submodel boundary condition output |
svar | Enable pressure-enthalpy variables |
text | Text input to be written to output file |
thic | Variable thickness input for two-dimensional problems |
time | Time step and time of simulation data (required) |
trac | Solute simulation input |
trxn | A user-friendly replacement for [[wiki:MacroTra |
user | User subroutine call |
vapl | Vapor pressure lowering |
vbou | read non-pyhsical gridblock volumes |
vcon | Variable thermal conductivity input |
weli | Peaceman type well impedance |
well or rive | Implicit well package or River |
wgtu | Areas, weights (user-defined) for boundary conditions |
wflo | Alternate submodel boundary output |
wtsi | Water table, simplified |
zneg | Problem solving tool removes negative coefs |
zone | Geometric definition of grid for input parameter assignment |
zonn | Same as zone, except zonn definitions are not overwritten |
Old Macro | Original Description, current behavior is undefined. |
---|---|
alti | Alternate element and coordinate input, grid format out of date. |
dof | no longer used |
exuz | no longer used |
naple or szna | Isothermal water input, enable simplified napl solution |
rflx | Radiation source term |
solv | no longer used |
wlbr | no longer used, replaced by [[wiki:MacroRiv |
zeol | Zeolite water balance input |
Comments may be entered in the input file by beginning a line with a #
symbol (the #
symbol must be found in the first column of the line). Comments may precede or follow macro blocks but may not be found within a block.
Optional input files may be used by substituting a keyword and file name in the main input file (described in detail in Optional Input Files). The normal macro input is then entered in the auxiliary file.
A macro may be disabled (turned off or omitted from a run) by adding keyword “off” on the macro line and terminating the macro with an end statement of the form end//macro//
or end //macro//
(see Option to disable a macro).
Input Parameters
Many input parameters such as porosity or permeability vary throughout the grid and need to have different values assigned at different nodes. This is accomplished in two ways. The first uses a nodal loop-type definition (which is the default):
JA, JB, JC, PROP1, PROP2, …
where
JA - first node to be assigned with the properties PROP1, PROP2, …
JB - last node to be assigned with the properties PROP1, PROP2, …
JC - loop increment for assigning properties PROP1, PROP2, ….
PROP1, PROP2, etc. - property values to be assigned to the indicated nodes.
In the input blocks using this structure, one or more properties are manually entered in the above structure. When a blank line is entered, that input block is terminated and the code proceeds to the next group or control statement. (Note that blank input lines are shaded in the examples shown in Individual Input Records or Parameters.) The nodal definition above is useful in simple geometries where the node numbers are easily found. Boundary nodes often come at regular node intervals and the increment counter JC can be adjusted so the boundary conditions are easily entered. To set the same property values at every node, the user may set JA and JC to 1 and JB to the total number of nodes, or alternatively set JA = 1
, and JB = JC = 0
.
For dual porosity problems, which have three sets of parameter values at any nodal position, nodes 1 to N [where N is the total number of nodes in the grid (see macro coor)] represent the fracture nodes, nodes N + 1 to 2N are generated for the second set of nodes, the first matrix material, and nodes 2N + 1 to 3N for the third set of nodes, the second matrix material. For double porosity/double permeability problems, which have two sets of parameter values at any nodal position, nodes 1 to N represent the fracture nodes and nodes N + 1 to 2N are generated for the matrix material.
For more complicated geometries, such as 3-D grids, the node numbers are often difficult to determine. Here a geometric description is preferred. To enable the geometric description the zone control statement wgtu is used in the input file before the other property macro statements occur. The input macro zone requires the specification of the coordinates of 4-node parallelograms for 2-D problems or 8-node polyhedrons in 3-D. In one usage of the control statement zone all the nodes are placed in geometric zones and assigned an identifying number. This number is then addressed in the property input macro commands by specifying a JA < 0 in the definition of the loop parameters given above. For example if JA = -1, the properties defined on the input line would be assigned to the nodes defined as belonging to geometric Zone 1 (JB and JC must be input but are ignored in this case). The control statement zone may be called multiple times to redefine geometric groupings for subsequent input. The previous zone definitions are not retained between calls. Up to 1000 zones may be defined. For dual porosity problems, which have three sets of parameter values at any nodal position, Zone ZONE_DPADD + I
is the default zone number for the second set of nodes defined by Zone I, and Zone 2*ZONE_DPADD + I
is the default zone number for the third set of nodes defined by Zone I. For double porosity/double permeability problems, which have two sets of parameter values at any nodal position, Zone ZONE_DPADD + I
is the default zone number for the second set of nodes defined by Zone I. The value of ZONE_DPADD
is determined by the number of zones that have been defined for the problem. If less than 100 zones have been used ZONE_DPADD
is set to 100, otherwise it is set to 1000. Zones of matrix nodes may also be defined independently if desired.
Alternatively, the zonn control statement may be used for geometric descriptions. Regions are defined the same as for control statement zone except that previous zone definitions are retained between calls unless specifically overwritten.
Interface
To interface with GoldSim, FEHM is compiled as a dynamic link library (DLL) subroutine that is called by the GoldSim code. When FEHM is called as a subroutine from GoldSim, the GoldSim software controls the time step of the simulation, and during each call, the transport step is carried out and the results passed back to GoldSim for processing and/or use as radionuclide mass input to another portion of the GoldSim system, such as a saturated zone transport submodel. The interface version of FEHM is set up only to perform particle tracking simulations of radionuclide transport, and is not intended to provide a comprehensive flow and transport simulation capability for GoldSim. Information concerning the GoldSim user interface may be found in the GoldSim documentation (Golder Associates, 2002).
Consecutive Cases
Consecutive cases can be run using the multiple realizations simulation option (see Multiple Realization Simulations). The program retains only the geometric information between runs (i.e., the grid and coefficient information). The values of all other variables are reinitialized with each run, either from the input files or a restart file when used.
Defaults
Default values are set during the initialization process if overriding input is not provided by the user.
Individual Input Records or Parameters
Other than the information provided through the control file or terminal I/O and the multiple realization simulations file, the main user input is provided using macro control statements in the input file, geometry data file, zone data file, and optional input files. Data provided in the input files is entered in free format with the exception of the macro control statements and keywords which must appear in the first four (or more) columns of a line. Data values may be separated with spaces, commas, or tabs. The primary input file differs from the others in that it begins with a title line (80 characters maximum) followed by input in the form of the macro commands. Each file containing multiple macro commands should be terminated with the stop control statement. In the examples provided in the following subsections, blank input lines are depicted with shading.
Control File or Terminal I/O Input
The file name parameters enumerated below [nmfil(2-13)]
, are entered in order one per line in the control file (excluding the control file name [nmfil(1)]
and error file name [nmfil(14)]
) or in response to a prompt during terminal input. If there is a control file with the name fehmn.files in your local space (current working directory), FEHM will execute using that control file and there will be no prompts. If another name is used for the control file, it can be entered on the command line or at the first prompt.
A blank line can be entered in the control file for any auxiliary files not required, for the “none” option for tty output, and for the “0” option for the user subroutine number.
In version 2.30 an alternate format for the control file has been introduced that uses keywords to identify which input and output files will be used. Please note that the file name input styles may not be mixed.
Group 1:NMFIL(i)
(a file name for each i = 2 to 13)
or
Group 1:
KEYWORD: NMFIL
Group 2:
TTY_FLAG
Group 3:
USUB_NUM
Unlike previous versions of the code, if a file name is not entered for the output file, check file, or restart file, the file will not be generated. An error output file will still be generated for all runs (default name fehmn.err
). However, with the keyword input style the user has the option of naming the error file. File names that do not include a directory or subdirectory name, will be located in the current working directory. With keyword input a root filename may be entered for output files that use file name generation (hist macro output, cont macro avs, surfer or tecplot output, etc.). The data files are described in more detail in Data Files.
Input Variable | Format | Default | Description |
---|---|---|---|
keyword | character*5 | No keywords, old style file format is used | Keyword specifying input or output file type. The keyword is entered followed immediately by a “:” with a “space” preceding the filename. Keywords, which must be entered starting in the first column, are: |
input - Main input filegrid - Geometry data file; or grida or gridf - Ascii formatted geometry file; or gridu or gridb - Unformatted geometry filezone - Initial zone fileoutp - Output filersti - Restart input filersto - Restart output filehist - Simulation history outputtrac - Solute history outputcont - Contour outputdual, dpdp - Dual porosity, double porosity outputstor - Coefficient storage filecheck – Input check output filenopf - Symbolic factorization filecolu - Column data file for free surface problemserror - Error output fileroot - Root name for output file name generationco2i - CO,,2,, parameter data file (default co2_interp_table.txt)look - Equation of state data lookup table file (default lookup.in) | |||
Keyword file name input is terminated with a blank line. The keywords and file names may be entered in any order unlike the old style input. | |||
nmfil | character*100 | Input or output file name | |
fehmn.files | nmfil( 1) - Control file name (this file is not included in the old style control file) (optional) | ||
fehmn.dat | nmfil( 2) - Main input file name (required) | ||
not used | nmfil( 3) - Geometry data input file name (optional) | ||
not used | nmfil( 4) - Zone data input file name (optional) | ||
not used | nmfil( 5) - Main output file name (optional) | ||
not used | nmfil( 6) - Restart input file name (optional) | ||
not used | nmfil( 7) - Restart output file name (optional) | ||
not used | nmfil( 8) - Simulation history output file name (optional) | ||
not used | nmfil( 9) - Solute history output file name (optional) | ||
not used | nmfil(10) - Contour plot output file name (optional) | ||
not used | nmfil(11) - Dual porosity or double porosity / double permeability contour plot output file name (optional) | ||
not used | nmfil(12) - Coefficient storage file name (optional) | ||
not used | nmfil(13) - Input check output file name (optional) | ||
fehmn.err | nmfil(14) - Error output file name (this file is not included in the old style control file). The default name is used if not input. | ||
tty_flag | character*4 | none | Terminal output flag: all, some, none |
usub_num | integer | 0 | User subroutine call number |
The following are examples of the input control file. The first example (left) uses keyword style input, while the second and third examples (right) use the original style control file input form. In the first example, four files are explicitly named, the input file, geometry file, tracer history output file and output error file. A root file name is also provided for file name generation. The “all” keyword indicates that all information should be written to the terminal and the ending “0” indicates that the user subroutine will not be called. In the second example in the center, all input will be found in the current working directory and output files will also be written to that directory. The blank lines indicate that there is no restart initialization file or restart output file, a dual porosity contour plot file is not required, and the coefficient storage file is not used. The “some” keyword indicates that selected information is output to the terminal. The ending “0” indicates that the user subroutine will not be called. In the third example on the right, input will be found in the “groupdir” directory, while output will be written to the current working directory. The “none” keyword indicates that no information should be written to the terminal and the ending “0” indicates that the user subroutine will not be called.
Files fehmn.files
:
input: /groupdir/c14-3 | tape5.dat | /groupdir/c14-3 | ||
trac: c14-3.trc | tape5.dat | /groupdir/grid-402 | ||
grid: /groupdir/grid-402 | tape5.dat | /groupdir/c14-3 | ||
root: c14-3 | tape5.out | c14-3.out | ||
error: c14-3.err | /groupdir/c14-3.ini | |||
c14-3.fin | ||||
all | tape5.his | c14-3.his | ||
0 | tape5.trc | c14-3.trc | ||
tape 5.con | c14-3.con | |||
c14-3.dp | ||||
c14-3.stor | ||||
tape5.chk | c14-3.chk | |||
some | none | |||
0 | 0 |
Multiple Realization Simulations
The multiple realization simulations input file (fehmn.msim) contains the number of simulations to be performed and, on UNIX systems, instructions for pre- and post-processing input and output data during a multiple realization simulation. The file uses the following input format:
Line 1 nsim
Lines 2-N single_line
Input Variable | Format | Description |
---|---|---|
nsim | integer | Number of simulation realizations to be performed |
single_line | character*80 | An arbitrary number of lines of UNIX shell script or Windows bat file instructions: lines 2-n:lines which are written to a file called fehmn.pre (UNIX) or fehmn.pre.bat (Windows), which is invoked before each realization using the following command: sh fehmn.pre $1 $2 (UNIX systems) or fehmn.pre.bat $1 $2 (Windows) |
line n+1: the keyword ‘post’, placed in the first four columns of the input file, denotes that the previous line is the last line in the fehmn.pre script, and that the data for the post-processing script fehmn.post follows | ||
lines n+2 to N: lines which are written to a file called fehmn.post (UNIX) or fehmn.post.bat (Windows), which is invoked after each realization using the following command: sh fehmn.post $1 $2 (UNIX) or fehmn.post.bat $1 $2 (Windows) | ||
Thus, the files fehmn.pre and fehmn.post are created by the code and are meant to provide the capability to perform complex pre- and post-processing steps during a multiple realization simulation. Script arguments $1 and $2 represent the current simulation number and nsim, the total number of simulations, respectively. |
In the following (UNIX style) example, 100 simulations are performed with pre and post-processing steps carried out. File “fehmn.msim” contains the following:
echo This is run number $1 of $2
rm fehmn.filescurnum=`expr $1`
cp control.run fehmn.filesrm ptrk.inputcp ptrk.np$curnum ptrk.input
echo starting up the run
post
curnum=`expr $1`/home/robinson/fehm/chun_li/ptrk/process1_fujrm
np$curnum.outputmv results.output np$curnum.output
echo finishing the run again
The first line after the number of simulations demonstrates how the current and total number of simulations can be accessed in the fehmn.pre shell script. This line will write the following output for the first realization:
This is run number 1 of 100
The pre-processing steps in this example are to remove the fehmn.files file from the working directory, copy a control file to fehmn.files, copy a particle tracking macro input file to a commonly named file called ptrk.input, and write a message to the screen. The fehmn.files files should be used or else the code will require screen input of the control file name for every realization. One hundred particle tracking input files would have been generated previously, and would have the names ptrk.np1, ptrk.np2, …, ptrk.np100. Presumably, these files would all have different transport parameters, resulting in 100 different transport realizations. The post-processing steps involve executing a post-processor program for the results (process1_fuj). This post-processor code generates an output file called results.output, which the script changes to np1.output, np2.output, …, np100.output, for further processing after the simulation.
One other point to note is that the variable “curnum” in this example is defined twice, once in the pre-processor and again in the post-processor. This is necessary because fehmn.pre and fehmn.post are distinct shell scripts that do not communicate with one another.
Transfer function curve data input file
In the FEHM particle tracking models, diffusion of solute from primary porosity into the porous matrix is captured using an upscaling procedure designed to capture the small scale behavior within the field scale model. The method is to impart a delay to each particle relative to that of a nondiffusing solute. Each particle delay is computed probabilistically through the use of transfer functions. A transfer function represents the solution to the transport of an idealized system with matrix diffusion at the sub-grid-block scale. After setting up the idealized model geometry of the matrix diffusion system, a model curve for the cumulative distribution of travel times through the small-scale model is computed, either from an analytical or numerical solution. Then, this probability distribution is used to determine, for each particle passing through a given large-scale grid block, the travel time of a given particle. Sampling from the distribution computed from the small scale model ensures that when a large number of particles pass through a cell, the desired distribution of travel times through the model is reproduced. In FEHM, there are equivalent continuum and dual permeability formulations for the model, each of which call for a different set of sub-grid-block transfer function curves. These curves are numerical input to the FEHM, with a data structure described below. Optional input in macros mptr, ptrk, and sptr is used to tell the code when transfer function curves are required and whether 2 or 3 (numparams) parameter curves are to be used.
Input Variable | Format | Description |
---|---|---|
DUMMY_STRING | character*4 | If keyword “free” is input at the beginning of the file, the code assumes an irregular distribution of transfer function parameters and performs either a nearest neighbor search to choose the transfer function curve, or a more computationally intensive multi-curve interpolation. |
NCURVES | integer | Total number of transfer function curves input in the file when keyword “free” is used. |
LOG_FLAG | integer | Array of flags to denote whether to take the natural log of the parameter before determining the distance from the input parameter to the values for each transfer function when keyword “free” is used. If 0, use the input value, if 1, use ln(value). |
NORMAL_PARAM | real | Array of values for normalizing the parameters before performing the nearest neighbor or multi-curve interpolation. Each value is divided by NORMAL_PARAM(i) if LOG_FLAG is 0, and ln(LOG_FLAG) if LOG_FLAG is 1. |
CURVE_STRUCTURE | integer | Flag to denote the type of interpolation to be performed when keyword “free” is used. If 1, simple nearest neighbor search, if > 1, a multi-curve interpolation is performed with curve_strucuture points nearest to the input values of the parameters. It is recommended that values no greater than 4 be used. |
WEIGHT_FACTOR | real | Optional wieght factor used when CURVE_STRUCTURE > 1. The default value is 1e-3. When determining the interpolated value of time using a multi-curve interpolation there are occasions where the algorithm yields large values of the weights used to compute the particle residence time. In a few such cases numerical errors can make the scheme fail so that the interpolated values for time erroneously get very large. This occurs when the sum of the weights divided by any individual weight is small, that is, large weights of opposite sign cancelling one another out. To prevent this error in the scheme from affecting the results, the code reverts to a nearest neighbor approach to obtain the time. The criterion for this option is that the sum of the weights divided by any individual weight is less than weight_factor. Increasing this value to 1.e-2 or higher can eliminate such occurrences. This parameter is very problem dependent, so this parameter is included for flexibility. It is recommended that the default of 1.e-3 or a higher value of 1.e-2 or so be used. |
NUMP1 | integer | Number of parameter 1 values used to define transfer function curves. |
PARAM1 | real | nump1 parameter 1 values defining transfer function curves. |
NUMP2 | integer | Number of parameter 2 values used to define transfer function curves. |
PARAM2 | real | nump2 parameter 2 values defining transfer function curves. |
NUMP3 | integer | Number of parameter 3 values used to define transfer function curves. |
PARAM3 | real | nump3 parameter 3 values defining transfer function curves. |
D4 | integer | Fracture-matrix flow interaction flag (d4 = 1, 4). For the three-parameter option, the dual permeability model requires four transfer function curves for each set of parameters. Interactions can occur from fracture-fracture (d4=1), fracture-matrix (d4=2), matrix-fracture (d4=3), and matrix-matrix (d4=4). |
NUMP_MAX | integer | Maximum number of delay time and concentration values for transfer function curves. |
NUMP | integer | Number of delay time and concentration values in each transfer function curve (nump1, nump2, nump3, d4). |
DTIME | real | Transfer function curve delay times (nump1, nump2, nump3, d4, nump). |
CONC | real | Transfer function curve concentrations (nump1, nump2, nump3, d4, nump). |
OUTPUT_FLAG | character*3 | If optional keyword “out” is entered at the end of the file the code outputs information on the parameter space encountered during the simulation in the *.out file. See [[wiki:MacroMptr |
The transfer function curve data file uses the following format if a regular grid of parameters is input. Please note that parameter values for this format should be input from smallest to largest value:
nump1
param1 (i), i = 1 to nump1
nump2
param2 (j), j = 1 to nump2
If 2 parameter curves are being input
nump_max
For each i, j (nump3 =1, d4 = 1)
nump(i, j, 1, 1), param1(i), param2(j)
followed by for each nump(i, j, 1, 1)
time(i, j, 1, 1, nump), conc(i, j, 1, 1, nump)
Or if 3 parameter curves are being input
nump3
param3(k), k = 1 to nump3
nump_max
For each d4, i, j, k
nump(i, j, k, d4), param1(i), param2(j), param3(k), d4
followed by for each nump(i, j, k, d4)
time(i, j, k, d4, nump), conc(i, j, k, d4, nump)
out_flag (optional) - keyword "out"
The transfer function curve data file uses the following format for the case in which the transfer functions are input without a regular grid of parameters:
dummy_flag - keyword "free"
log_flag(i), i = 1 to numparams
normal_param(i), i = 1 to numparams
curve_structure, weight_factor (optional)
ncurves
nump_max
For “free” form input of transfer function curves (nump1 = ncurves, nump2 = 1, and nump3 = 1)
If 2 parameter curves are being input
For each i = 1to ncurve (d4 = 1)
nump(i, 1, 1, 1), param1(i), param2(i)
followed by for each nump(i, 1, 1, 1)
time(i, 1, 1, 1, nump), conc(i, 1, 1, 1, nump)
Or if 3 parameter curves are being input
For each d4 = 1 to 4, i = 1 to ncurve
nump(i, 1, 1, d4), param1(i), param2(i), param3(i), d4
followed by for each nump(i, 1, 1, d4)
time(i, 1, 1, d4, nump), conc(i, 1, 1, d4, nump)
out_flag (optional) - keyword "out"
Please note that all fracture-fracture curves are input followed by fracture-matrix curves, followed by matrix-fracture curves, followed by matrix-matrix curves.
Optional Input Files
The data for any of the FEHM macros (with the exception of coor and elem, where use of a separate geometry input file is handled through control file input) may be entered in an alternate input file. To use this option the keyword ‘file’ must appear on the input line immediately following the control statement (macro name). The line immediately following this keyword will contain the name of the alternate input file. The contents of the alternate input file consist of the regular full macro description: the macro name followed by the data. Note that data from only one macro may be entered per auxilliary file. The entries in the optional input file may be preceded or followed by comments using the “#” designator (see discussion on `Comments`_ may be entered in the input file by beginning a line with a ‘#’ symbol (the ‘#’ symbol must be found in the first column of the line). Comments may precede or follow macro blocks but may not be found within a block.). As with regular macro input, comments may not be embedded within the data block.
Group 1 -
LOCKEYWORD
Group 2 -
LOCFILENAME
Input Variable | Format | Description |
---|---|---|
LOCKEYWORD | character*4 | Keyword ‘file’ to designate an auxiliary input file is used. |
LOCFILENAME | character*100 | Name of the optional data input file. |
The following illustrate the use of an optional input file and its contents. In this example, optional file “rockfile” is located in the current working directory. Input for macro “rock” is described in Control statement rock (required).
rock
file
rockfile
File “rockfile”:
# Auxiliary file used for rock macro input
rock
1 140 1 2563. 1010. 0.3500
# End of rock macro input
Option to disable a macro
The data from any input macro may be omitted from a simulation by including the “off” keyword on the macro line and terminating the macro with an end macro statement. This also allows the inclusion of an end macro statement for any input macro. The end macro will follow the last specified line of input. If a macro is normally terminated with an end keyword, the macro id is appended to that keyword (an additional end macro line is not added). This facilitates experimentation with input options without the need to comment out or remove unwanted macros from the input file.
In the following example the perm macro is turned off and the hyco macro is used in its place.
perm off
1 0 0 1.e-12 1.e-12 1.e-12
end perm
hyco
1 0 0 3.8e-3 3.8e-3 3.8e-3
end hyco
© Copyright 2018, Los Alamos National Laboratory