sptr
¶
Streamline particle tracking is invoked with this control statement.
Group 1 - DTMX, IPRT, IPRTO, RSEED, TPLIM, DISTLIM, LINELIM, DIVD_WEIGHT
Group 2 - COURANT_FACTOR, IPRTR, ITENSOR, IREVERS, FREEZ_TIME, MAX_JUMP
Keywords and their associated input are described below. These keywords may be entered in any order following Group 2, but must be directly followed by any associated data. All keywords are optional except “tprp” which flags input of the particle transport properties.
Optional keyword “tcurve” is input to indicate that transfer function curves should be input to model matrix diffusion. It is followed by NUMPARAMS and TFILENAME.
- KEYWORD “tcurve”
- NUMPARAMS
- TFILENAME
Optional keyword “omr” is input to indicate the grid has octree mesh refinement. It is followed by the number of refined (OMR) nodes in the grid. An optional keyword, “file”, which if input is followed by the name of a file from which to read or to write omr initialization calculation arrays, and the file format. The “file” option should only be used for particle tracking runs using steady state flow. It should also be noted that the file should be re-generated if parameter changes that affect velocity are made since velocities will not be recalculated if the file exists.
- KEYWORD “omr”
- OMR_NODES
- KEYWORD “file”
- OMRFILENAME
- OMR_FORM
Optional keyword “tpor” is input to indicate tracer porosity will be input and is followed by tracer porosity values input using JA, JB, JC format or the keyword “file” and the name of a file containing the tracer porosity values.
- KEYWORD “tpor”
- JA, JB, JC, PS_TRAC (JA, JB, JC - defined on page 33)
-or-
- KEYWORD “tpor”
- KEYWORD “file”
- TPORFILENAME
Optional keyword “wtdt” to indicate initial particle locations should be moved below the water table by distance DELTAWT.
- KEYWORD “wtdt”, DELTAWT
Optional keyword “volum” to indicate control volumes associated with computation of sptr velocities should be written to an output file. These volumes are used with PLUMECALC to account for the approximate control volumes used for the velocity calculations on an OMR grid. The “volume” keyword may be followed by the file format.
- KEYWORD “volum”
-or-
- KEYWORD “volum”, SPTRX_FORMAT
Optional keywords “po”, “sa”, “pe”, “de”, “pr”, “te”, “zo”, “id” define parameters to be output. No data is associated with the parameter output flags. These parameters are output in the ‘*.sptr2” file in the order entered.
Optional keyword “xyz” indicates that coordinate data should be included in the abbreviated ‘*.sptr2’ output file (see IPRTO below).
The optional keyword “zbtc” indicates that breakthrough curves will be computed for specified zones. It is followed by NZBTC … and ZBTC. If keyword “alt” follows the “zbtc” keyword an alternate output format will be used where,
- KEYWORD “zbtc”
-or-
- KEYWORD “zbtc” “alt”
- NZBTC, DTMN, PART_MULT, PART_FRAC, DELTA_PART, PART_STEPS, TIME_BTC
- ZBTC
Optional keyword “cliff”
Optional keyword “corner”
Optional keyword “capture”
Optional keyword “spring”
Keyword (‘tprp’) specifies that the particle transport properties will be entered on subsequent lines. The transport properties input (Group 4) depends on the value of TPRP_FLAG, the first value input for that group. For TPRP_FLAG = 2 or 4, format of Group 4 input also depends on the form of the dispersion coefficient tensor, as selected using the flag ITENSOR (Group 2).
- KEYWORD “tprp”
TPRP_FLAG = 1:
Group 3 - TPRP_FLAG, KD
TPRP_FLAG = 2:
ITENSOR = 1
Group 3 - TPRP_FLAG, KD, DM, A1, A2, A3, A4, ASX, ASY, VRATIO
ITENSOR = 2
Group 3 - TPRP_FLAG, KD, DM, AL, ATH, ATV, VRATIO
ITENSOR = 3
Group 3 - TPRP_FLAG, KD, DM, ALH, ALV, ATH, ATV, VRATIO
ITENSOR = 4
Group 3 - TPRP_FLAG, KD, DM, AL, AT, VRATIO
ITENSOR = 5
Group 3 - TPRP_FLAG, KD, AL, ATH, ATV, DM, VRATIO
TPRP_FLAG = 3:
Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE
TPRP_FLAG = 4:
ITENSOR = 1
Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE, DM, A1, A2, A3, A4, ASX, ASY, VRATIO
ITENSOR = 2
Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE, DM, AL, ATH, ATV, VRATIO
ITENSOR = 3
Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE, DM, ALH, ALV, ATH, ATV, VRATIO
ITENSOR = 4
Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE, DM, AL, AT, VRATIO
ITENSOR = 5 (not recommended, included for compatibility with older versions of the code)
Group 3 - TPRP_FLAG, KD, DIFM, RD_FRAC, POR_MATRIX, APERTURE, AL, ATH, ATV, DM, VRATIO
TPRP_FLAG =11 or TPRP_FLAG = 12:
Group 3- TPRP_FLAG, SIMNUM
- KEYWORD ‘file’
- CDF_FILENAME
TPRP_FLAG =13 or TPRP_FLAG = 14:
Group 3 - TPRP_FLAG, SIMNUM
- KEYWORD ‘file’
- CDF_FILENAME
or
Group 3 - TPRP_FLAG, K_REV, R_MIN, R_MAX, SLOPE_KF, CINT_KF, AL, ATH, ATV, DM, VRATIO
Group 4 - JA, JB, JC, MODEL_NUMBER
Group 3 is ended when a blank line is encountered. The MODEL_NUMBER is incremented each time a Group 3 line is read, and Group 4 lines refer to this parameter.
Group 5 - ITM, IST
-or-
Group 5 - ITM, IST, COUNT_STEPS_MAX, SPTR_FLAG
Group 6 - NX, NY, NZ
Group 7 - X10, Y10, Z10
Group 8 - XDIM, YDIM, ZDIM
Group 9 - IJKV(I), X1(I), Y1(I), Z1(I) for I = 1 to NUMPART
Group 9 input is terminated with a blank line.
-or-
Group 9 - KEYWORD “file”
- SPTR_FILENAME
Restart runs for particle tracking may be accomplished by reading particle starting locations from a file. A particle restart file is generated by adding the optional SPTR_FLAG, keyword “save” to group 5.
Note when IST = 0 or 1, Group 10 is used and place holders are inserted for Groups 7-9 and NUMPART is equal to the number of particle starting locations that are entered; however, when IST = 2, Group 10 is not implemented and Groups 7-9 are used followed by a blank line. NUMPART equals NX*NY*NZ in this case.
Input Variable | Format | Description |
---|---|---|
DTMX | real | Time step control (seconds). FEHM will account for all particles every abs(dtmx) seconds and write information to the “.sptr3” file if the “zbtc” keyword is present. This controls the output density for breakthrough curve information only. If you are not using/creating breakthrough curves, set DTMX very large (e.g. 1e20). If DTMX is negative, the time step for streamline calculations is forced to be abs(DTMX) seconds. |
IPRT | integer | Flag to denote whether individual particle positions are written at specified intervals to the “.sptr1” file. The particle coordinate positions are used to get a snapshot of the particle plume at various times during the simulation.IPRT = 0, No outputIPRT > 0, Output is written to the “.sptr1” file every IPRT time steps. |
IPRTO | integer | Flag to denote if particle streamline information is written to the “.sptr2” file. The information is used to draw complete particle streamlines (for a relatively small number of particles).IPRTO = 0, No outputIPRTO > 0, Extended output is written to the “.sptr2” file.IPRTO < 0, Abbreviated output is written to the “.sptr2” file.If abs(IPRTO) = 1,output is formatted, abs(IPRTO) = 2 output is unformatted, and abs(IPRTO) = 3 output is in binary format. |
RSEED | integer | Random number seed for the random number generator. For compatibility with earlier versions of FEHM in which this input did not exist, if no value of RSEED is input, the code assigns a value of 466201. |
TPLIM | real | Minimum amount of time (days) a particle should move before location is output. Default is 0 days. |
DISTLIM | real | Minimum distance (m) a particle should move before location is output. Default is 0 meters. |
LINELIM | integer | Maximum number of lines that will be written to sptr2 file. |
DIVD_WEIGHT | real | Weight factor for the derivative of the dispersion tensor term. Default is 1. If a value of zero is entered, the derivative term is not used. |
COURANT_FACTOR | integer | Fraction of the distance through a cell that a particle moves in a single time step. This is used to ensure that the particle, on average, traverses less than one cell before a random-walk dispersion step is performed. For example, a factor of 0.25 indicates that the particle should take at least 4 time steps to move through a cell. |
IPRTR | integer | Flag for choosing the method for computing concentrations in cells based on the particle tracking information that will be written to the “.trc” or AVS output files.IPRTR Š 0, particle concentrations are computed as number of particles residing in the cell divided by the fluid mass in the cell.IPRTR < 0, an integral of the particle concentration specified above is made and reported. This integral is the normalized cumulative concentration, which for a steady state flow field is equivalent to the response to a step change in particle concentration (note that the particles are input as a pulse). |
ITENSOR | integer | Flag indicating the mathematical form of the dispersion coefficient tensor to be selected.ITENSOR = 0, No dispersion.ITENSOR = 1, Generalized form of the axisymmetric tensor, from Lichtner et al. (2002)ITENSOR = 2, Axisymmetric form of the dispersion coefficient tensor of Burnett and Frind (1987)ITENSOR = 3, Modified form of the dispersion coefficient tensor of Burnett and Frind (1987). See Lichtner et al. (2002) for detailsITENSOR = 4, Isotropic form of the dispersion coefficient tensor of Tompson et al. (1987)ITENSOR = 5, Original form of the Burnett and Frind (1987) tensor as implemented in FEHM Version 2.10. |
Note: for Version 2.10 and earlier, the variable ITENSOR did not exist. For compatibility with these earlier versions, when ITENSOR is omitted from the input file, the code uses the ITENSOR = 5 formulation and the pre-existing input format. It is recommended that new simulations use one of the other tensor formulations (ITENSOR = 1 to 4). | ||
In addition, the sign of ITENSOR is used as a switch as follows: if ITENSOR < 0, abs(ITENSOR) is the flag, but the \(\nabla \cdot D\) term is not included in the computation of particle displacements. Under normal circumstances, an approximation of the term \(\nabla \cdot D\) is used in the particle tracking algorithm to obtain accurate solutions in cases where there are gradients in \(D\). | ||
IREVERS | integer | Flag indicating if reverse particle tracking should be performed. If omitted, forward tracking is performed.IREVERS = 0, Standard forward trackingIREVERS = -1, Forward tracking only after exiting the time loop (this is needed for comparing results with reverse tracking)IREVERS = +1, Reverse tracking.Note: When using reverse tracking, turn off the dispersion, ITENSOR = 0, as it does not make sense to try to reverse the random part of the displacement. The value for ITENSOR must be entered to use this option. |
FREEZ_TIME | real | If greater than zero, time (days) at which flow solution is frozen and only particle transport is computed after that time. If omitted, the flow solution continues for the entire simulation. Values for ITENSOR and IREVERS must be entered to use this option. |
MAX_JUMP | integer | When using random walk, the maximum number of cells a particle is allowed to jump in a single step. (Default is 10). |
KEYWORD | character | Optional keyword “tcurve” indicating transfer function curve data should be input to model matrix diffusion. If the keyword is found then NUMPARAMS and FILENAME are entered, otherwise they are omitted. |
NUMPARAMS | integer | Number of parameters that define the transfer function curves being used. |
TFILENAME | character | Name of input file containing the transfer function curve data. |
KEYWORD | character | Optional keyword “omr” to indicate the grid has octree mesh refinement. If the keyword is found then OMR_NODES is entered, and optionally keyword “file” with OMRFILENAME and OMR_FORM, otherwise they are omitted. |
OMR_NODES | integer | Number of refined (omr) nodes in the grid. |
KEYWORD | character | Optional keyword “file” indicating that the omr initialization calculation arrays should be written to or read from a file. This option should only be used with steday-state flow. |
OMRFILENAME | character | Name of file from which to read or to write omr arrays. |
OMR_FORM | character | Format of the omr file, formatted or unformatted. |
KEYWORD | character | Optional keyword “tpor” to indicate tracer porosities should be read. |
PS_TRAC | real | Tracer porosity |
KEYWORD | character | Optional keyword “file” indicating that the tracer porosities should be read from a file. |
TPORFILENAME | character | Name of file from which to read tracer porosity. |
KEYWORD | character | Optional keyword “wtdt” |
DELTAWT | real | Distance below the water table that particles should be started. |
KEYWORD | character | Optional keyword “volum” to indicate control volumes should be output. Output is written to the “.sptrx” file. |
SPTRX_FORMAT | character | File format for control volume output file “formatted” or “unformatted”. Default is formatted. |
KEYWORD | character | Optional keywords “po” (porosity), “sa” (saturation), “pe” (permeability), “de” (density), “pr” (pressure), “te” (temperature), “zo” (zone number), “id” (particle identifier) 1 per line, indicating which parameters will be output along the particle path (written to “.sptr2” file). If no keywords are present no parameter ddata will be output. Note that in older versions of FEHM porosity and saturation were output if no keywords were entered. |
KEYWORD | character | Keyword ‘tprp’ specifying that transport properties are to follow on subsequent lines. |
TPRP_FLAG | integer | Flag indicating what type of transport property information is to follow on the line
1 - KD only
2 - KD and 5 terms of dispersivity tensor
3 - (Dual porosity) - Matrix KD, diffusion coefficient, retardation factor in fracture, and fracture aperture. No dispersion
4 - (Dual porosity) - Matrix KD, diffusion coefficient, retardation factor in fracture, fracture aperture, and 5 terms of dispersivity tensor
11 - Colloid diversity model with importance sampling, CDF vs Retardation Factor specified as a table in the optional file specified by CDF_FILENAME
12 - Similar to case 11 above , except the SQRT(CDF) is used instead of CDF for importance sampling
13 - Colloid diversity model with importance sampling, CDF vs \(K_f\) (attachment rate constant) specified as a straight line equation in the log-log space either on this line or in the optional file specified by CDF_FILENAME
14 - Similar to case 13 above, except the SQRT(CDF) is used instead of CDF for importance sampling
|
SIMNUM | integer | Simulation number, used for selecting the table/equation from the colloid diversity file. |
KEYWORD | character*4 | Optional keyword ‘file’ designating the cumulative probability distribution function (CDF) retardation parameters for the colloid diversity model should be read from an external file |
CDF_FILENAME | character*80 | Name of the file containing the cumulative probability distribution function (CDF) (entered if optional keyword ‘file’ follows keyword ‘dive’).
If TPRPFLAG = 11 or 12, Table option.
If TPRPFLAG = 13 or 14, Equation option.
The following equations are used for \(R_{min} \le R \le R_{max}\), \(R = 1 + K_f / K_{rev}\), \(\log_{10}(CDF) = b + m \cdot \log_{10}(K_f)\)
|
KD | real | Matrix sorption coefficient |
DIFM | real | Diffusion coefficient applying to matrix diffusion submodel (m2/s) |
RD_FRAC | real | Retardation factor in fracture media |
POR_MATRIX | real | Matrix porosity (fracture volume fraction is specified in rock macro) |
APERTURE | real | Fracture aperture (m) |
AL | real | Longitudinal dispersivity, αL (m). ITENSOR = 2, 4, or 5 |
ALH | real | Horizontal longitudinal dispersivity, αLH (m). ITENSOR = 3 |
ALV | real | Vertical longitudinal dispersivity, αLT (m). ITENSOR = 3 |
AT | real | Transverse dispersivity, αT (m). ITENSOR = 4 |
ATH | real | Transverse horizontal dispersivity, αTH (m). ITENSOR = 2, 3, or 5 |
ATV | real | Transverse vertical dispersivity, αTV (m). ITENSOR = 2, 3, or 5 |
A1 | real | Generalized dispersivity term α1 (m) from Lichtner et al. (2002) |
A2 | real | Generalized dispersivity term α2 (m) from Lichtner et al. (2002) |
A3 | real | Generalized dispersivity term α3 (m) from Lichtner et al. (2002) |
A4 | real | Generalized dispersivity term α4 (m) from Lichtner et al. (2002) |
ASX | real | Direction cosine of the axis of symmetry from Lichtner et al. (2002) |
ASY | real | Direction cosine of the axis of symmetry from Lichtner et al. (2002) |
DM | real | Molecular diffusion coefficient (m2/s) |
VRATIO | real | Parameter to control the movement of particles into low velocity cells via random walk. Used to restrict the artificial migration of particles into low permeability zones due to dispersion. The value of VRATIO is used as a ratio for determining if random walk into a new cell is allowed. If the ratio of the average velocity in the new cell divided by the velocity in the previous cell is less than VRATIO, then the particle is not allowed to migrate into the new cell. It is returned to its previous location, and a new random walk is computed and applied. Up to 10 attempts at a random walk are allowed, after which the particle location is left at the current location for the next advective step. |
MODEL_NUMBER | integer | Number of model (referring to the sequence of models read) to be assigned to the designated nodes or zone. |
KEYWORD | keyword | Optional keyword ‘zbtc’ specifying that zone breakthrough curves will be computed. Output will be written to the “.sptr3” file. If ‘zbtc’ is omitted, so are NZBTC and ZBTC. Note that the zones must be specified in a zone macro preceding the sptr macro in the input file before they are invoked using the keyword ‘zbtc’. |
NZBTC | integer | Number of zones for which breakthrough curves will be computed. |
Note that DTMN, PART_MULT, PART_FRAC, DELTA_PART, PART_STEPS, and TIME_BTC are optional input. They must be entered in the order given. When not entered the default values will be used. | ||
DTMN | real | Time step control (seconds). FEHM will account for all particles at time step intervals starting with dtmn seconds and write information to the “.sptr3” file if the “zbtc” keyword is present. This controls the output density for breakthrough curve information only. (Default DTMX) |
PART_MULT | real | Time step multiplication factor. (Default 2.) |
PART_FRAC | real | Fraction of particles that should break through before checking if time step should be increased. (Default 0.1*NUMPART) |
DELTA_PART | real | Fraction of particles that should break through during a time step so that the time step is not increased |
PART_STEPS | integer | Number of time steps that should be checked for DELTA_PART before increasing the time step |
TIME_BTC | real | Time to start using small breakthrough time steps (DTMN) for late initial breakthrough (days). |
ZBTC | integer | NZBTC zone numbers of the zone(s) for which breakthrough curves will be computed. |
ITM | integer | Maximum number of time steps to accomplish the FEHM time step ‘day’ |
IST | integer | Flag to specify type of input for particlesIST = 0, local position and corresponding element number (Group 10)IST = 1, global position (Group 10)IST = 2, specify a zone of particles (Groups 7-9) |
COUNT_STEPS_MAX | integer | Maximim number of steps a particle is allowed to take in a sptr run. (Default 1000000) Input of this value is optional. If this value is omitted, the default will be used. The value must precede SPTR_FLAG if being used. |
SPTR_FLAG | character | Optional keyword “save” to signal that final particle locations and times should be written to a file, *.sptrs, for a particle restart run. |
NX | integer | Number of divisions in the x-direction |
NY | integer | Number of divisions in the y-direction |
NZ | integer | Number of divisions in the z-direction |
X10 | real | X-coordinate of the origin (xmin) |
Y10 | real | Y-coordinate of the origin (ymin) |
Z10 | real | Z-coordinate of the origin (zmin) |
XDIM | real | Length of X-direction |
YDIM | real | Length of Y-direction |
ZDIM | real | Length of Z-direction |
IJKV(I) | integer | Node or element number |
X1(I) | real | Starting X-coordinate for a particle |
Y1(I) | real | Starting Y-coordinate for a particle |
Z1(I) | real | Starting Z-coordinate for a particle |
KEYWORD | character | Optional keyword “file” indicating that the particle starting locations should be read from a file. If this file has been generated by the code using the “save” keyword in Group 6, particle starting times will also be read. |
SPTRFILENAME | character | Name of file from which to read initial particle locations. |
The following are examples of sptr. In the first example 10000 particles are inserted at the inlet within a single cell, and the breakthrough curve at a downstream location (defined in a call to zone) is recorded for the case of longitudinal dispersion with a dispersivity of 100 m and sorption with a KD of 0.0223715. Breakthrough concentration is output every 1.728e8 seconds to the “.sptr3” file.
sptr
1.728e8 0 0 0 Group 1
0.25 0 5 0 Group 2
tprp
2 0.0223715 100. 0. 0. 0. 0. Group 3
1 0 0 1 Group 4
zbtc
1
5
1000 2 Group 5
1 100 1000 Group 6
0. -1500. 0. Group 7
10. 3000. 12.5 Group 8
Group 9
In the second example, both longitudinal and transverse dispersion are invoked, but no sorption. The solute is input as a patch on the inlet face of the model. The dimensions of the patch will be 3,000 m in the y-direction and 12.5 m in the vertical direction, starting at the surface, and 100000 particles are injected. Data to generate a steady state concentration plume is output in the “.trc” file.
sptr
2.88e7 0 0 0 Group 1
0.25 0 5 0 Group 2
tprp
2 0. 100. 0.1 0.1 0. -1.e-10 Group 3
1 0 0 1 Group 4
1000 2 Group 5
1 100 1000 Group 6
0. -1500. 0. Group 7
10. 3000. -12.5 Group 8
The third example uses the colloid diversity model with importance sampling specified as an equation using an external input file, using the third set of parameters in the rcoll_eqn.dat, with the file rcoll_eqn.dat as:
Colloid diversity model equation parameters
1 1.5641426E-5 1.0 63933.785 0.7081742 0.0E+0 100. 10. 0.1 5.e-12 0.1
2 1.1755084E-3 1.0 851.69573 0.7676392 0.0E+0 100. 10. 0.1 5.e-12 0.1
3 1.0417102E-5 1.0 95996.984 0.7438557 0.0E+0 100. 10. 0.1 5.e-12 0.1
.
.
.
100 2.0808208E-4 1.0 4806.7954 0.62846046 0.0E+0 100. 10. 0.1 5.e-12 0.1
The fourth example uses the colloid diversity model with importance sampling specified as an equation with parameters input in the sptr macro.
sptr
1.728e8 0 0 0 Group 1
0.25 0 5 0 Group 2
tprp
13 3 Group 3
rcoll_eqn.dat
1 0 0 1 Group 4
zbtc
1
5
1000 2 Group 5
1 100 1000 Group 6
0. -1500. 0. Group 7
10. 3000. -12.5 Group 8
Group 9
© Copyright 2018, Los Alamos National Laboratory