Grok Commands
HGS Simulations is a product of Aquanty Inc.
564 Weber Street North, Unit 2
Waterloo, Ontario N2L 5C6
c 2015, Aquanty Inc. All rights reserved.
Copyright This publication is a product of Aquanty Inc. and may not be reproduced either commercially or non-commercially by any means including but not limited to electronic replication,
photocopy, or mechanical replication without direct written permission from Aquanty Inc.
Permissions may be sought directly from Aquanty Inc:
Phone: 1-855-aquanty
Fax: (519) 279-1081
Email: [email protected]
Contents
1 Quick Start Guide
1
1.1
HGS Installation Folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Key Executable Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2.1
Grok (grok.exe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2.2
HGS (phgs.exe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2.3
HSPLOT (hsplot.exe) . . . . . . . . . . . . . . . . . . . . . . . . .
4
Running a Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.3
2 Input/Output Instructions
2.1
5
General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.1.1
File Process Control Options . . . . . . . . . . . . . . . . . . . . . .
9
2.1.2
Units and Physical Constants . . . . . . . . . . . . . . . . . . . . . .
10
2.1.3
Pre-processor Considerations . . . . . . . . . . . . . . . . . . . . . .
12
2.1.3.1
Array Dimensioning . . . . . . . . . . . . . . . . . . . . . .
12
2.2
Problem Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.3
Grid Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.3.1
Simple Grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.3.2
Interactive Block Grids . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.3.3
3-D Random Fracture Generator for Block Grids . . . . . . . . . . .
19
2.3.4
2-D Random Fracture Generator . . . . . . . . . . . . . . . . . . . .
22
2.3.5
Interactive 3-D Mesh Generator . . . . . . . . . . . . . . . . . . . .
29
2.3.5.1
29
Defining a 2-D Mesh . . . . . . . . . . . . . . . . . . . . . .
i
CONTENTS
2.4
2.5
ii
2.3.5.2
3-D Mesh Generation . . . . . . . . . . . . . . . . . . . . .
33
2.3.5.3
Adding a New Layer . . . . . . . . . . . . . . . . . . . . . .
34
2.3.5.4
Elevation Instructions . . . . . . . . . . . . . . . . . . . . .
37
2.3.6
Tetrahedral Element Grids . . . . . . . . . . . . . . . . . . . . . . .
39
2.3.7
Axisymmetric Flow
. . . . . . . . . . . . . . . . . . . . . . . . . . .
40
2.3.8
Reading an Existing 3-D Grid . . . . . . . . . . . . . . . . . . . . . .
40
2.3.9
Manipulating the 3D Grid . . . . . . . . . . . . . . . . . . . . . . . .
42
2.3.10 Grid Projection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
2.3.11 Ending Grid Generation . . . . . . . . . . . . . . . . . . . . . . . . .
44
Selecting Mesh Components . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
2.4.1
Selecting Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
2.4.2
Selecting Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
2.4.3
Selecting Faces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
2.4.4
Selecting Inclined Faces . . . . . . . . . . . . . . . . . . . . . . . . .
63
2.4.5
Selecting Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
Simulation Control Options . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
2.5.1
69
General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1.1
Finite-difference Options . . . . . . . . . . . . . . . . . . . . 71
2.5.1.2
Matrix Solver
. . . . . . . . . . . . . . . . . . . . . . . . .
72
Timestep Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
2.5.2.1
Adaptive Timesteps . . . . . . . . . . . . . . . . . . . . . .
76
2.5.3
Saturated Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
2.5.4
Variably-saturated Flow . . . . . . . . . . . . . . . . . . . . . . . . .
80
2.5.2
2.5.4.1
Newton Iteration Parameters . . . . . . . . . . . . . . . . . . 81
2.5.5
Discrete Fracture Flow . . . . . . . . . . . . . . . . . . . . . . . . .
85
2.5.6
Surface Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
2.5.7
Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
2.5.8
Density-dependent Flow and Transport Solution . . . . . . . . . . .
89
2.5.8.1
89
Relative concentration as primary variable . . . . . . . . .
CONTENTS
2.5.9
2.6
2.7
iii
2.5.8.2
Absolute concentration and temperature as primary variables 90
2.5.8.3
Salt mass fraction as primary variable . . . . . . . . . . . .
90
Heat transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
2.5.10 Inactive Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
Initial Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
2.6.1
Subsurface Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
2.6.2
Surface Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
100
2.6.3
Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
2.6.3.1
Solute Definition . . . . . . . . . . . . . . . . . . . . . . . .
104
2.6.3.2
Travel Time Probability . . . . . . . . . . . . . . . . . . .
112
2.6.3.3
Heat Transfer . . . . . . . . . . . . . . . . . . . . . . . . .
112
Boundary Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
114
2.7.1
General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
114
2.7.2
Set Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
115
2.7.3
Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
116
2.7.3.1
Specified Head . . . . . . . . . . . . . . . . . . . . . . . . .
116
2.7.3.2
Specified Flux . . . . . . . . . . . . . . . . . . . . . . . . .
118
2.7.3.3
Seepage . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
120
2.7.3.4
Fluid Transfer . . . . . . . . . . . . . . . . . . . . . . . . .
122
2.7.3.5
Free Drainage . . . . . . . . . . . . . . . . . . . . . . . . .
122
2.7.3.6
Potential Evapotranspiration . . . . . . . . . . . . . . . . .
123
2.7.3.7
Specified Flowrate . . . . . . . . . . . . . . . . . . . . . . .
124
2.7.3.8
River Flux . . . . . . . . . . . . . . . . . . . . . . . . . . .
125
2.7.3.9
Drain Flux . . . . . . . . . . . . . . . . . . . . . . . . . . .
126
2.7.3.10 Surface loading . . . . . . . . . . . . . . . . . . . . . . . . .
127
2.7.3.11 Hydromechanical Stress . . . . . . . . . . . . . . . . . . . .
128
2.7.3.12 Pore Water Freezing and Thawing . . . . . . . . . . . . . .
129
2.7.3.13 Surface Flow
. . . . . . . . . . . . . . . . . . . . . . . . . . 131
2.7.3.14 Snowmelt . . . . . . . . . . . . . . . . . . . . . . . . . . . .
133
CONTENTS
2.7.4
Node and Face Sets . . . . . . . . . . . . . . . . . . . . . . . . . . .
134
2.7.5
Time-varying Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . .
135
2.7.5.1
Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . .
137
2.7.5.2
Intermittent Conditions . . . . . . . . . . . . . . . . . . . .
137
Constraints and Tecplot Options . . . . . . . . . . . . . . . . . . . .
138
2.7.6.1
Nodal Flux Head Constraints . . . . . . . . . . . . . . . . .
138
2.7.6.2
Tecplot Output . . . . . . . . . . . . . . . . . . . . . . . .
139
Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
139
2.7.7.1
Specified Concentration . . . . . . . . . . . . . . . . . . . .
139
2.7.7.2
Specified Mass Flux . . . . . . . . . . . . . . . . . . . . . . . 141
2.7.7.3
Specified Third-type Concentration . . . . . . . . . . . . .
142
2.7.7.4
Thermal Energy . . . . . . . . . . . . . . . . . . . . . . . .
145
2.7.7.5
Imported From GMS . . . . . . . . . . . . . . . . . . . . .
150
2.7.7.6
Immiscible Phase Dissolution Source . . . . . . . . . . . . .
150
2.7.7.7
Zero-order Source . . . . . . . . . . . . . . . . . . . . . . . . 151
2.7.6
2.7.7
2.8
iv
Materials and Material Properties
2.8.1
2.8.2
. . . . . . . . . . . . . . . . . . . . . . . . 151
General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
2.8.1.1
Defining a New Zone . . . . . . . . . . . . . . . . . . . . .
152
2.8.1.2
Saving and Retrieving Element Zone Numbers . . . . . . .
154
2.8.1.3
Defining New Zones Using ARCVIEW Files . . . . . . . .
155
2.8.1.4
Defining New Zones Using GridBuilder .GEN Files . . . . .
157
2.8.1.5
Selecting Zones . . . . . . . . . . . . . . . . . . . . . . . . .
157
2.8.1.6
Modifying Zoned Properties . . . . . . . . . . . . . . . . . .
158
Saturated Subsurface Flow . . . . . . . . . . . . . . . . . . . . . . .
160
2.8.2.1
Porous Medium . . . . . . . . . . . . . . . . . . . . . . . .
160
2.8.2.2
Discrete Fractures . . . . . . . . . . . . . . . . . . . . . . .
172
2.8.2.3
Dual Continuum . . . . . . . . . . . . . . . . . . . . . . . .
176
2.8.2.4
Wells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
179
2.8.2.5
Tile Drains . . . . . . . . . . . . . . . . . . . . . . . . . . .
183
CONTENTS
2.8.2.6
Channel Flow . . . . . . . . . . . . . . . . . . . . . . . . .
187
2.8.2.7
Cutoff Walls . . . . . . . . . . . . . . . . . . . . . . . . . .
192
2.8.2.8
Imported from FRACTRAN . . . . . . . . . . . . . . . . .
193
Variably-saturated Subsurface Flow . . . . . . . . . . . . . . . . . .
193
2.8.3.1
Porous Medium . . . . . . . . . . . . . . . . . . . . . . . .
193
2.8.3.2
Discrete Fractures . . . . . . . . . . . . . . . . . . . . . . .
195
2.8.3.3
Dual continuum . . . . . . . . . . . . . . . . . . . . . . . .
197
2.8.3.4
Functional Constitutive Relationships . . . . . . . . . . . .
198
2.8.3.5
Tabular Constitutive Relationships . . . . . . . . . . . . .
205
2.8.4
Surface Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
206
2.8.5
Evapotranspiration . . . . . . . . . . . . . . . . . . . . . . . . . . . .
208
2.8.6
Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
216
2.8.6.1
Porous Medium . . . . . . . . . . . . . . . . . . . . . . . .
216
2.8.6.2
Discrete Fractures . . . . . . . . . . . . . . . . . . . . . . .
220
2.8.6.3
Dual continuum . . . . . . . . . . . . . . . . . . . . . . . . . 221
2.8.6.4
Surface Runoff . . . . . . . . . . . . . . . . . . . . . . . . .
223
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
225
Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
226
2.9.1.1
GMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
227
2.9.1.2
GRID BUILDER . . . . . . . . . . . . . . . . . . . . . . .
228
2.9.1.3
TECPLOT . . . . . . . . . . . . . . . . . . . . . . . . . . .
228
2.9.1.4
IBM Data Explorer (OPENDX) . . . . . . . . . . . . . . .
230
Flow Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
230
2.9.2.1
Observation Wells And Points . . . . . . . . . . . . . . . .
232
2.9.2.2
Fluid Mass Balance . . . . . . . . . . . . . . . . . . . . . .
234
2.9.3
Surface Flow Hydrographs . . . . . . . . . . . . . . . . . . . . . . . .
237
2.9.4
Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
237
2.9.4.1
Observation Wells And Points . . . . . . . . . . . . . . . .
240
2.9.4.2
Solute Mass Balance . . . . . . . . . . . . . . . . . . . . . . . 241
2.8.3
2.9
v
Output
2.9.1
2.9.2
CONTENTS
vi
2.9.4.3
Index
Travel Time Probability . . . . . . . . . . . . . . . . . . .
243
245
List of Figures
2.1
Element Types and Local Node Numbering Conventions. . . . . . . . . . .
2.2
Example Grid which was Created Using Generate blocks interactive Instructions. 18
2.3
Default Random Fracture Distribution . . . . . . . . . . . . . . . . . . . . .
27
2.4
Example for an Irregular Fracture Network . . . . . . . . . . . . . . . . . .
29
2.5
Mesh in Geographic Coordinates (lat/long). The map of Canada is shown as
a reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
Mesh using Albers Equal-area Projection. The map of Canada now shows
much less distortion but the elements are deformed. . . . . . . . . . . . . .
45
2.7
Definition of a Parent Solute With Zoned Properties. . . . . . . . . . . . . .
110
2.8
Definition of a Daughter Solute With Zoned Properties. . . . . . . . . . . . . 111
2.9
Example of a Material Defined in an .mprops File . . . . . . . . . . . . . .
2.6
14
159
2.10 Example Output for a Porous Media Material . . . . . . . . . . . . . . . . . . 161
2.11 Example of fracture generation showing 3D porous medium domain (grey
cube), tecplot triangles (yellow triangles) and the resulting fracture elements
(blue triangles). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
175
2.12 Sample well domain property file prefix.wprops. . . . . . . . . . . . . . . . . 181
2.13 Sample tile drain domain property file prefix.tprops. . . . . . . . . . . . .
185
2.14 Sample channel domain property file prefix.cprops. . . . . . . . . . . . . .
190
2.15 Example of Using Functional Parameters to Generate Tabular Constitutive
Relationships. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
204
2.16 Normalized Root Depth Functions. . . . . . . . . . . . . . . . . . . . . . . .
212
2.17 Sample Fluid Balance Information for Example Abdul. . . . . . . . . . . . .
235
2.18 Sample Mass Balance Information for Example PM CD. . . . . . . . . . . .
242
vii
List of Tables
2.1
Default Values for 2-D Random Fracture Orientation. . . . . . . . . . . . .
23
2.2
Default Values for 2-D Random Fracture Aperture. . . . . . . . . . . . . . .
24
2.3
Default Values for 2-D Random Fracture Length, Log-normal Distribution.
25
2.4
Default Values for 2-D Random Fracture Length, Exponential Distribution.
26
2.5
Default Values for Porous Media Saturated Flow Properties. . . . . . . . .
162
2.6
Default Values for Fractured Media Saturated Flow Properties. . . . . . . .
172
2.7
Default Values for Dual-continuum Saturated Flow Properties. . . . . . . .
177
2.8
Default Values for Well Properties. . . . . . . . . . . . . . . . . . . . . . . .
179
2.9
Default Values for Tile Drain Properties.
. . . . . . . . . . . . . . . . . . .
184
2.10 Default Values for Channel Properties. . . . . . . . . . . . . . . . . . . . . .
187
2.11 Default Values for Functions Defining the Porous Media Constitutive Relationships, for the Van Genuchten and Brooks-Corey models. . . . . . . . . . 194
2.12 Default Pressure-saturation and Saturation-relative permeability Tables for
Variably-saturated Porous Media. . . . . . . . . . . . . . . . . . . . . . . . .
194
2.13 Default Values for Functions Defining the Discrete Fracture Constitutive
Relationships, for the Van Genuchten and Brooks-Corey models. . . . . . .
195
2.14 Default Pressure-saturation and Saturation-relative permeability Tables for
Variably-saturated Discrete Fractures. . . . . . . . . . . . . . . . . . . . . .
195
2.15 Default Pressure-Effective Area Table for Variably-saturated Discrete Fractured Media. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
2.16 Default Values for Functions Defining the Dual Continuua Constitutive
Relationships, for the Van Genuchten and Brooks-Corey models. . . . . . .
197
2.17 Default Pressure-saturation and Saturation-relative permeability Tables for
Variably-saturated Dual Continuua. . . . . . . . . . . . . . . . . . . . . . .
197
viii
LIST OF TABLES
ix
2.18 Default Properties for Surface Flow. . . . . . . . . . . . . . . . . . . . . . .
206
2.19 Default Properties for Evapotranspiration. . . . . . . . . . . . . . . . . . . .
209
2.20 Observed Values of Leaf Area Index [Scurlock et al., 2001] and Maximum
Rooting Depth [Canadell et al., 1996] for Various Terrestrial Biomes. . . . . . 211
2.21 Default Values for Porous Media Transport Properties.
. . . . . . . . . . .
217
2.22 Default Values for Discrete Fracture Transport Properties. . . . . . . . . .
220
2.23 Default Values for Dual-continuua Transport Properties. . . . . . . . . . . .
222
2.24 Default Values for Surface Flow Transport Properties. . . . . . . . . . . . .
223
Chapter 1
Quick Start Guide
The goal of this guide is to get you up to speed quickly on the basic operation of HydroGeoSphere (HGS). The topics covered include:
• The HGS installation folder.
• A brief overview of the key executable files (grok.exe, phgs.exe, hsplot.exe).
• Running a model.
1.1
HGS Installation Folder
By default HGS is installed in the directory:
C:\Program_Files\HydroGeoSphere
The installation folder contains the key executable files (grok.exe, phgs.exe, hsplot.exe)
required for simulation and results post-processing. Folders within the installation directory
include:
• docs: This folder contains the Theory and Reference Manuals which are important
references for model setup.
• illustration and verification: These folders contain example problems, some of which
are discussed in the Theory Manual.
Note that in order to run the HGS executable phgs.exe, a valid HGS license file hgs.lic
must be present in the installation directory.
1
CHAPTER 1. QUICK START GUIDE
1.2
2
Key Executable Overview
There are three steps required to setup, simulate, and view the results of a simulation.
1. A data file is prepared for the pre-processor (called grok) which is then run to generate
the input data files for HGS.
2. HGS is run to solve the problem and generate output data files.
3. Depending on the problem, post-processing of the data is completed using HSPLOT,
to convert the data into a Tecplot compatible format for visualization and analysis.
1.2.1
Grok (grok.exe)
The grok input file contains all of the information and instruction required for the HGS
simulation. This file name consists of a meaningful prefix (up to 40 characters) to which the
extension .grok is appended. For example, if the problem prefix created by the user is test,
then the general input file created by the user will be test.grok. Information contained
within the grok file includes mesh definition, model parameterization, initial conditions,
boundary conditions, convergence criteria, and simulation output criteria. The pre-processor,
grok, performs its task in the following order:
1. Read and allocated default array sizes.
2. Read the problem identification information.
3. Read instructions for generating the grid.
4. Perform grid modifications if necessary.
5. Generate default properties for all parameters.
6. Read optional instructions for modifying the default parameters.
7. Write the HGS-compatible data types.
Once the *.grok file has been built by the user it is compiled by running grok.exe. A more
detailed description of grok and its associated commands are contained in Chapter 2 of
this document. We note that *.grok files in the illustration and verification folders are an
excellent resource for reviewing grok structure and the use of grok commands.
1.2.2
HGS (phgs.exe)
After the execution of grok.exe, which writes all the HGS-compatible data files, phgs.exe is
executed to perform the model simulation. There is little user involvement at this stage
other than the configuration of the parallel execution details in the file parallelindx.dat.
CHAPTER 1. QUICK START GUIDE
3
The file parallelindx.dat does not exist, phgs.exe will create it when it is launched. This
file tells phgs.exe how many processors to use the simulation. By default parallelindx.dat
is created assuming the simulation is being performed in serial mode, i.e., 1 processor.
__Number_of_CPU
1
__Num_Domain_Partitiong
1
__Solver_Type
1
__Coloring_Input
F
__Wrting_Output_Time
-1.00000000000000
__Simulation_Restart
1
To increase the level of parallelization, change the values of ‘‘ Number of CPU’’ and
‘‘ Num Domain Partitiong’’ (these values should be the same). When setting these values
it is important to make sure you don’t exceed the number of processors available on your
machine. In general we recommend that at most you use up to two fewer than the total
number available. For example, if your machine has 8 processors, we recommend that you
use up to 6 if you plan on using the machine for other tasks. Note that when the number of
CPUs requested is greater than 1, the solver type must be changed to 2.
The following example shows how the parallelindx.dat file would be set up to use 6
processors for a simulation.
__Number_of_CPU
6
__Num_Domain_Partitiong
6
__Solver_Type
2
__Coloring_Input
F
__Wrting_Output_Time
-1.00000000000000
__Simulation_Restart
1
You do not have to wait for phgs.exe to generate the parallelindx.dat file each time
you run a simulation. You can copy the file from a previous simulation to your current
model folder. Changing parallelindx.dat while the simulation is running will not affect
CHAPTER 1. QUICK START GUIDE
4
the number of processors being used. To change the level of parallelization it is necessary to
stop and restart the simulation.
1.2.3
HSPLOT (hsplot.exe)
The executable hsplot.exe is used the post-process the simulation results for viewing in
Tecplot. HSPLOT can be executed during an HGS run or following its completion. The
resulting surface (*o.olf.dat) and subsurface output files (*o.pm.dat) can be opened in
Tecplot to view the simulation results in three dimensions.
1.3
Running a Model
We conclude this chapter by describing the steps to run the Abdul model problem, the
model files for which can be found in
C:\Program_Files\HydroGeoSphere\verification\abdul
For additional details on this problem the user is referred to the Verification Examples
chapter of the Theory Manual. The steps to run this model problem are as follows.
1. Copy grok.exe, phgs.exe, and hsplot.exe to C:\Program_Files\HydroGeoSphere\
verification\abdul.
2. Run grok.exe.
3. Run phgs.exe.
4. Run hsplot.exe.
5. Open abdulo.olf.dat and abdulo.pm.dat with Tecplot to view the simulation results.
Note that Windows 10 users (or, users that receive a dll error when running phgs.exe)
should copy the dll files (libmmd.dll, libiomp5md.dll, and libifcoremd.dll) from the
installation folder to the current simulation folder. Alternatively, Windows users can add the
directory C:\Program_Files\HydroGeoSphere to their system path. Note that appending
to the system path makes it possible to run a model from any folder without copying any
HGS executable files or dll files to that folder.
Chapter 2
Input/Output Instructions
2.1
General
Before presenting in detail the input data needed for the numerical simulations, some general
information about the format and nature of the input data is first given.
There are two steps involved in solving a given problem. First, a data file is prepared
for the pre-processor (called grok1 ) which is then run to generate the input data files for
HydroGeoSphere. Second, HydroGeoSphere is run to solve the problem and generate
output data files.
The grok input file name consists of a meaningful prefix of up to 40 characters to which
the extension .grok is appended. This prefix will determine the input and output filenames.
The grok listing file name will be the problem prefix to which the letter o and the file
extension .eco are appended. For example, if the problem prefix specified by the user is
test, the general input file to be created by the user will be test.grok and the output
listing, or echo, file generated by the pre-processor will be testo.eco. Some simulations
will require more than one input file (e.g. initial heads read from file) and will result in the
generation of more than one output file. As a rule, all input files needed during a specific
simulation will have the problem prefix plus a given extension as filename while all generated
output files will have the problem prefix, the letter o, plus a given extension as filename.
Throughout the manual, we will adopt the convention of using italics to indicate problemdependent, user-defined portions of filenames (e.g. prefix, species name etc.) and typewriter
font to indicate invariant portions generated by HydroGeoSphere. For example, in the
filename prefixo.conc.species.001 the prefix and species portions would be the user-defined
1
grok /grok/, var. /grohk/ vt. [from the novel ”Stranger in a Strange Land”, by Robert A. Heinlein,
where it is a Martian word meaning literally ‘to drink’ and metaphorically ‘to be one with’] The emphatic
form is ‘grok in fullness’. 1. To understand, usually in a global sense. Connotes intimate and exhaustive
knowledge. Contrast zen, which is similar supernal understanding experienced as a single brief flash. See
also glark. 2. Used of programs, may connote merely sufficient understanding. ”Almost all C compilers grok
the void type these days.”
5
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
6
prefix and name of a solute, or species, while the o.conc. and .001 portions would be
generated by HydroGeoSphere automatically.
After the pre-processor starts executing, it prompts the user to enter the prefix for the
problem interactively from the keyboard. For cases in which the same input file is being
used repeatedly, you can create a file called batch.pfx which consists of a single line which
contains the problem prefix. If the file is present, the prefix will automatically be read from
the file and you will not be prompted to enter it from the keyboard. This file should be
placed in the same directory as the prefix.grok file.
Briefly, the pre-processor performs its tasks in the following order:
1. Read and allocate default array sizes
2. Read problem identification information
3. Read instructions for generating grid
4. Perform grid modifications if necessary
5. Generate default properties for all parameters
6. Read optional instructions for modifying the default parameters
7. Write the HydroGeoSphere-compatible data files
Tasks 3 and 6 are guided by instructions issued by the user in the prefix.grok file. The
generation of a complete set of default data by Task 5 tends to minimize the amount of
data which must be supplied by the user.
Here is an example instruction and some input data which illustrates some common conventions that will be used throughout the manual:
Example instruction text
1. xl, nbx Domain length and number of blocks in the x-direction
2. xi(i),i=1,nx x-coordinates of the nx nodes.
3. inode...end Node numbers.
•••
The pre-processor instruction is separated from the preceding text by a horizontal line, and
is written using the sans serif font. It must be typed in the prefix.grok file exactly as shown,
with the exception that it is not case-sensitive, and blanks before and after the instruction
are optional. Note that only one blank is allowed between any two words in an instruction.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
7
If the instruction requires input data, there will follow a series of numbered lines, each
containing bolded variable names and a description of what is to be read. Each numbered
line will correspond to one or more FORTRAN read statements.
Usually, the number of items required in the data file are indicated by how many bolded
variable names are present on the line. The default FORTRAN variable naming conventions
are in effect. This means variables starting with the letters I--N inclusive require integer
values, while all the rest require real values, unless stated otherwise in the case of string or
logical variables. Numerical values are read in free-format so integers and reals do not need
to be lined up in columns and they can be separated by blanks or commas. A descriptive
comment can be included inline after the last data value has been read from the line, but
should be avoided when reading character strings (e.g. file names).
In this example, 3 items of input are required. The first item xl, nbx requires that the user
enter a real value (i.e. domain length) followed by an integer value (i.e. number of blocks)
on the first non-blank or uncommented line following the instruction.
The second item xi(i),i=1,nx reads nx real values into the array xi. The size of nx is
problem dependent (e.g. number of nodes in x, number of species etc.) and it is up to the
user to supply enough values to satisfy the read statement. The values may be entered on
one line or spread out over multiple lines as desired. If they are entered on one line, they
should be separated by spaces or commas.
Finally, the third item inode...end indicates a list, in this case of node numbers, that is to
be read until an end card is encountered. The list values must be entered one per line.
The end of the documentation that pertains to a specific instruction is designated by 3 dots:
• • •.
So for this example instruction, assuming that nx is equal to 5, the following statements in
the prefix.grok file would satisfy the input requirements:
Example instruction text
10.0
100
0.0
2.0
4.0
6.0
8.0
1
2
3
5
6
end
10.0
Some instructions are controlled by input routines that have their own subset of input
instructions, some or all of which may be optional. For example, the instruction Solute is
used to define a new solute and in it’s simplest form appears as:
Solute
end
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
8
In this case, the End instruction immediately follows the Solute instruction, and no optional
instructions have been issued. The End statement is required so that grok knows when to
exit the solute definition routine. Such instructions will be indicated using the following
convention:
Example instruction text...End
•••
where the text ...End indicates that the instruction (e.g. Solute) will be followed by optional
instructions or input and terminated by an End instruction.
Before grok processes instructions contained in a prefix.grok or a material properties file
(see Section 2.8.1.6) it first makes a working copy of the file in which any line which is
completely blank or which begins with an exclamation point(!) is removed and in which
the contents of any included file are copied. This allows you to include blank lines and
comments when and where required to improve the readability and clarity of the input.
Included files can be used to avoid having to cut and paste or comment and uncomment
large sections of input instructions. Long lists (e.g. of node numbers or boundary condition
data) and cases where various different grid generation approaches are being tried are
good candidates for application of the include feature. For example, if we wanted to use
include to supply data to the example given above, we could use the following instruction in
prefix.grok:
Example instruction text
10.0
100
0.0
2.0
4.0
6.0
8.0
include my.node_list
10.0
and where the file my.node list could contain, for example:
1
2
3
5
6
end
If you now wanted to substitute another node list you could, for example, supply different
node numbers in the file my other.node list and then just change the file name given in
the include instruction.
Included files can contain groups of instructions and input, or just bits of input for a single
instruction. Only one level of include instruction is allowed, and so included files can not
themselves contain include instructions.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
9
As grok reads and processes the copy of the prefix.grok file it also creates the prefixo.eco
file. Results of the HydroGeoSphere data generation procedures are written to this file
so if there are any problems reported by the pre-processor you should check this file first to
determine their nature and how you might fix them. If an error occurs while reading the
input data, then grok will halt execution and issue an error message (to the screen and the
prefixo.eco file) of the form:
INSTRUCTION: 500
**************************************
*** INPUT ERROR, HALTING EXECUTION ***
**************************************
GRID GENERATION: Unrecognized instruction
Press any key to continue
In this case the last instruction (i.e. 500) has, for some reason, caused an error. You should
now check the input files to further investigate the cause of the problem, starting with the
prefix.grok and material properties files.
2.1.1
File Process Control Options
The following instructions control how the pre-processor treats instructions in the prefix.grok
file and can be inserted at any point in the file and as often as required, except of course
when input for a specific instruction is expected.
Echo off
By default, as instructions are read by grok they are echoed to the screen. This command
turns off this feature.
•••
Echo on
This commands turns on the echoing of instructions to the screen.
•••
Skip on
With skip mode turned on, grok will read but not act on any subsequent instructions.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
10
Skip off
Turns skip mode off, so grok will resume acting on instructions.
•••
Skip rest
grok exits the loop for reading instructions from the prefix.grok file and proceeds to
generate the HydroGeoSphere data files.
•••
Pause
This instruction causes grok to pause at the current location in the prefix.grok file until
the user presses a key.
•••
We will now describe in detail the various actions of the pre-processor, giving instructions
for setting up the prefix.grok file where necessary.
2.1.2
Units and Physical Constants
The units used in the program are not preset, although a default of kilogram-metre-second
units is assumed and used to define the values of certain physical constants as discussed
below. The user should decide which units will be used for mass (M), length (L) and time (T)
for the various input variables, issue the appropriate units instruction (or assign appropriate
values for the physical constants) and then consistently use those chosen units for all other
input data. For example, if you want to specify the dimensions of your domain in metres
and the time at which you want a solution is in seconds, then all measures of time and
length will have to be in seconds and metres, respectively. The hydraulic conductivity
should therefore be specified in m s−1 , a pumping rate in m3 s−1 etc. The program does not
perform any checks to ensure unit consistency.
Default values are assigned for the gravitational acceleration and fluid properties which
correspond to standard values in the kilogram-metre-second system. These parameters are
used when defining the properties of fractures, open wells and tile drains.
The following default values will be used for the physical constants and correspond to typical
values in the kilogram-metre-second system:
• Gravitational acceleration g = 9.80665 m s−2 , Equation 2.3.
• Fluid density ρ = 1000.0 kg m−3 , Equation 2.13.
• Fluid viscosity µ = 1.124 × 10−3 kg m−1 s−1 , Equation 2.13.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
11
• Fluid compressibility αw = 4.4 × 10−10 (m s2 ) kg−1 , Equation 2.15.
• Fluid surface tension χ = 0.07183 kg s−2 , Equation 4.5.
If you are using different units or you want to change the default values you can do so using
the following instructions.
Units: kilogram-metre-minute
Converts the default values given above into the kilogram-metre-minute system. This
instruction also converts the porous media, dual continuum, fractured media and surface
flow default properties which are defined in the code. NOTE: It does not convert properties
specified in any prefix.grok .mprops, etc. file. Similar instructions exist for converting to
the following systems:
• Kilogram-metre-hour.
• Kilogram-metre-day.
• Kilogram-metre-year.
• Kilogram-centimetre-second.
• Kilogram-centimetre-minute.
• Kilogram-centimetre-hour.
• Kilogram-centimetre-day.
• Kilogram-centimetre-year.
You can change the default values of the physical constants using the following instructions.
If you change the default units from the kilogram-metre-second system make sure the values
given here are in the new system.
•••
Gravitational acceleration
1. grav Gravitational acceleration constant [L T−2 ], g in Equation 2.3.
•••
Reference fluid density
1. rho Fluid density [M L−3 ], ρ in Equation 2.13.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
12
•••
Reference fluid viscosity
1. visc Fluid viscosity [M L−1 T−1 ], µ in Equation 2.13.
•••
Fluid compressibility
1. wcomp Fluid compressibility [(LT2 ) M−1 ], αw in Equation 2.15.
•••
Zero fluid compressibility
Assigns a value of zero for fluid compressibility (i.e. incompressible).
•••
Fluid surface tension
1. tensn Fluid surface tension [M T−2 ], χ in Equation 4.5.
•••
2.1.3
2.1.3.1
Pre-processor Considerations
Array Dimensioning
When performing Task 1, grok first checks for the existence of a file array sizes.default
in the directory where the prefix.grok file is located. If it is not found, the file is automatically created and default array sizes are written which are then used by the preprocessor.
Associated with each default are a descriptor and a default value. A portion of the file is
shown here:
dual: material zones
20
dual flow bc: flux nodes
10000
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
13
...etc...
tiles: flux function panels
20
wells: injection concentration function panels
100
end
So, for example, the default maximum number of dual continuum material zones is 20. If
the problem is defined such that an array exceeds the default maximum (e.g. the number of
dual continuum material zones exceeds 20) then grok will halt execution and issue an error
message (to the screen and the prefixo.eco file) of the form:
*********************************************
*** DIMENSIONING ERROR, HALTING EXECUTION ***
*********************************************
Pre-processor request exceeds default array size
dual: material zones
Default value: 20
Increase the default value in file ARRAY_SIZES.DEFAULT
Given the descriptor in the error message, you can now edit the array sizes.default file
and increase the appropriate value. Note that the file is sorted alphabetically by descriptor.
When you run grok again, it will read the new default value from the file. Re-compilation
of the code is not necessary, since it uses Fortran 95 ALLOCATE statements to define array
sizes at run-time.
HydroGeoSphere does not utilize the file array sizes.default, but instead uses exact
array sizes determined and passed by grok.
Remember, this process is problem dependent, and each time you run grok in a different
directory, a fresh array sizes.default file will be generated with default values.
2.2
Problem Identification
The first section of the prefix.grok file should consist of a description of the problem being
defined. As for the rest of the file, blank lines and lines beginning with an exclamation point
(!) are ignored.
The description can contain from zero up to as many lines as the user requires to describe
the problem. Each line can contain up to 60 characters. The description is printed at the
beginning of the listing files for grok (prefixo.eco) and HydroGeoSphere (prefix.lst).
The user must signal the end of the description using the End instruction.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
14
Figure 2.1: Element Types and Local Node Numbering Conventions.
End
This instruction signals the end of the description, and control is then passed back to the
pre-processor.
•••
2.3
Grid Generation
The next section of the prefix.grok file should consist of instructions for grid generation
followed by an End instruction.
Currently, grok is capable of generating grids which are composed of either hexahedral
blocks or triangular prisms. Figure 2.1 shows the local node numbering conventions for each
of these elements and also the positive directions of the x, y, and z axes.
There is also an option for subdividing hexahedral block elements into 4-node tetrahedral
elements (see Section 2.3.6). We will first discuss options for generating simple grids, followed
by irregular grids.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.3.1
15
Simple Grids
Simple grids can be generated for rectangular domains which are adequate for many problems.
They can have uniform or variable element sizes and can be made of hexahedral block or
triangular prismatic elements. Each element in the grid is given a default zone number of 1.
Generate uniform blocks
1. xl, nbx, (x0) Domain length and number of blocks in the x-direction, the optional
origin in the x-direction (zero by default)
2. yl, nby, (y0) Domain length and number of blocks in the y-direction, the optional
origin in the y-direction (zero by default)
3. zl, nbz, (z0) Domain length and number of blocks in the z-direction, the optional
origin in the z-direction (zero by default)
Generates a grid for a rectangular domain made up of uniform blocks. In this case, the
grid is formed by subdividing the domain in the x-direction into nbx blocks, each of length
xl/nbx. The domain is subdivided in a similar fashion in the y- and z-directions, using the
other input parameters.
•••
Generate uniform prisms
Generates a grid for a rectangular domain made up of uniform prisms. Requires identical
input to the routine Generate uniform blocks described above. In this case though, instead of
generating block elements, this instruction generates prism elements by subdividing each
block into two prism elements.
•••
Generate variable blocks
1. nx Number of nodes in the x-direction
2. xi(i),i=1,nx x-coordinates of the nx nodes.
3. ny Number of nodes in the y-direction
4. yi(i),i=1,ny y-coordinates of the ny nodes.
5. nz Number of nodes in the z-direction
6. zi(i),i=1,nz z-coordinates of the nz nodes.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
16
Generates a grid for a rectangular domain made up of variably-sized blocks. It is almost identical to the generate uniform blocks instruction except that instead of entering a domain length
in each direction we enter a list of coordinates, which are each used to define the position of
a plane of nodes along that axis. The structure xi(i),i=1,nx is called an implied do and
means that you must supply nx values for the array xi. One or more values can be entered
per line until the read statement is satisfied, then a new line should be started for the next
read statement. Note that the line length is limited by 3000 characters in any input instructions and thus, use additional lines for xi(i), y(i), z(i) should your input exceed this limit.
•••
Generate variable prisms
Generates a grid for a rectangular domain made up of variably-sized prisms. Requires
identical input to the routine Generate variable blocks described above. In this case though,
instead of generating block elements, this instruction generates prism elements by subdividing each block into two prism elements.
•••
2.3.2
Interactive Block Grids
Interactive block instructions can be used to generate a grid made up of variably-sized
blocks. The user can grade the mesh as desired in each of the 3 principal directions. This is
particularly useful for regions in which fine meshes are required, for example, near a discrete
fracture or well.
Note that these instructions cannot be used in conjunction with the other grid generation
instructions like Generate uniform/variable blocks/prisms.
Generate blocks interactive...End
Causes grok to begin reading a group of interactive block instructions until it encounters
an End instruction. The group should contain of at least one instruction for each of the
principal directions.
•••
The available instructions are:
Grade x
1. x1, x2, dxstart, xfac, dxmax Start and end x-coordinate, starting element size,
element size multiplication factor and maximum element size.
Grid lines (i.e. elements) are generated along the x-axis from x1 to x2 which grade up in
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
size from dxstart to dxmax. Element sizes are increased steadily by a factor of xfac.
•••
Grade y
As above but for the y-axis.
•••
Grade z
As above but for the z-axis.
•••
The instructions used to generate the mesh shown in Figure 2.2 are:
generate blocks interactive
grade
75.0
grade
75.0
grade
125.0
grade
125.0
x
0.0
0.01
1.5
5.
100.0
0.01
1.5
5.
100.0
0.01
1.5
5.
200.0
0.01
1.5
5.
0.01
1.5
5.
0.01
1.5
5.
0.0
0.25
1.0
0.25
1.0
0.01
1.3
0.25
11.0
0.01
1.3
0.25
12.0
0.25
1.0
0.25
x
x
x
grade y
100.0
0.0
grade y
100.0
200.0
grade
1.0
grade
3.0
grade
3.0
grade
11.0
z
z
z
z
end generate blocks interactive
17
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
18
Figure 2.2: Example Grid which was Created Using Generate blocks interactive Instructions.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.3.3
19
3-D Random Fracture Generator for Block Grids
The following command can be used to generate a 3-D random fracture network in an
orthogonal domain (i.e. composed of 8-node block elements). Fractures with random
locations, lengths and apertures can be generated.
Rfgen driver
1. rfgfile Name of the file which contains the random fracture grid and fracture generation
information.
The structure of the file is discussed below.
•••
Grid information
1. x1, x2 x-range of the domain.
2. y1, y2 y-range of the domain.
3. z1, z2 z-range of the domain.
4. botfracbnd(1) Elevation of lowest extent of a fracture. No fractures will be generated
below this elevation.
5. nwell Number of wells. Read the following nwell times:
(a) xwell, ywell xy-coordinates of the well. x− and y−gridlines will be generated
at this point.
6. xsource1, xsource2 x-coordinates of the source. x−gridlines will be generated at
these points.
7. ysource1, ysource2 y-coordinates of the source. As above but for the y-direction.
8. zsource1, zsource2 z-coordinates of the source. As above but for the z-direction.
9. mingrspacx,mingrspacy,mingrspacz Minimum grid spacing in the x−, y− and
z−directions respectively. For example, a mingrspacx value of 1.0 would ensure that
no gridlines are more than 1.0 length units apart along the x-axis.
10. fixed grid This is a logical variable which controls whether grid lines are generated
randomly or according to fixed spacing input parameters. If true read the following:
(a) fixed spac This is a logical variable which controls whether uniform or variable
grid line spacing is applied. If true read the following:
i. fixgrspacx,fixgrspacy,fixgrspacz Fixed spacing values in the x−, y− and
z−directions respectively.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
20
If false read the following:
i.
ii.
iii.
iv.
v.
vi.
nx Number of nodes in the x-direction
xi(i),i=1,nx x-coordinates of the nx nodes.
ny Number of nodes in the y-direction
yi(i),i=1,ny y-coordinates of the ny nodes.
nz Number of nodes in the z-direction
zi(i),i=1,nz z-coordinates of the nz nodes.
This instruction should be placed at the start of the file and should not appear more than
once.
•••
Fracture information
1. seed Seed for the random number generator. If this number is changed, a new random
number sequence is produced, which in turn causes new realizations of fracture location,
length and aperture to be generated.
2. xmeanfreq Mean fracture frequency in x-direction.
3. ymeanfreq As above but in the y-direction.
4. zmeanfreq As above but in the z-direction.
5. zeta Aperture decay constant. Aperture size can be made to decrease with increasing
depth. Set to zero for no decay.
6. lnsbetween Minimum number of grid lines between fractures.
7. cap cap on the number of times to attempt generating a fracture.
This instruction should follow the Grid information instruction and should not appear more
than once.
•••
Fracture location distribution x-axis
1. type An integer value indicating the type of function to use to generate the variable
fracture locations in the x−direction. Acceptable values are:
1
2
3
Uniform.
Normal.
Exponential.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
21
2. var1, var2 Distribution parameters which control the function.
For a uniform distribution var1 is the minimum and var2 is the maximum.
For a normal distribution var1 is the mean and var2 is the variance.
For an exponential distribution var1 is the mean and var2 is the standard deviation.
The following instructions use the same input data structure except they are applied to the
y and z directions:
Fracture location distribution y-axis
Fracture location distribution z-axis
The following instructions use the same input data structure to generate fracture lengths in
the 3 principal directions:
Fracture length distribution x-axis
Fracture length distribution y-axis
Fracture length distribution z-axis
The following instructions use the same input data structure to generate fracture apertures
in the 3 principal orientations:
Xy fracture aperture distribution
Xz fracture aperture distribution
Yz fracture aperture distribution
•••
The remaining commands are optional but should not be used more than once:
Vertical fracture from top
1. vertical frac top This is a logical variable which, if true, ensures that all vertical
fractures start from the top of the domain.
•••
Zone fractures how
1. zone rfgen fracs Controls how fracture zone numbers are assigned. Acceptable
values are:
1
Assign zone numbers by fracture.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2
22
Assign zone numbers by orientation.
If zoned by orientation, horizontal fracture are assigned to zone 1, vertical fractures parallel
to the xy-axis are in zone 2 and vertical fractures parallel to the xz-axis are in zone 3.
•••
End
This instruction signals the end of the 3-D random fracture generator input, and control is
then passed back to the pre-processor.
•••
Once the 3-D grid is generated, it is possible to change the random fracture apertures to
zoned fracture apertures by following the procedures outlined in Section 2.8.1.6.
2.3.4
2-D Random Fracture Generator
The 2D Random Fracture Generator can be used to generate random fracture networks in
two dimensions, currently only in the xz-plane. Nevertheless, in the y-direction, more than
one block can be used.
Begin 2D random fractures...End
Causes grok to begin reading instructions that describe the generation of 2-D random
fractures until it encounters an End instruction.
•••
The folowing optional instructions can be used to modify the default behaviour of the
fracture generator:
Number of random fractures
1. n rfractures Number of random fractures to generate.
By default, the 2-D random fracture network will consist of 80 fractures.
•••
Use constant seed
1. the seed Seed for the 2-D Random Fracture Generator.
Causes the 2-D Random Fracture Generator to use a constant seed the seed to produce
the same random fracture network each time grok is run.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
23
Table 2.1: Default Values for 2-D Random Fracture Orientation.
Parameter
Value Unit
Number of orientation classes
13
Middle of the smallest orientation class
30
degrees
Middle of the largest orientation class
150
degrees
Standard deviation of both classes σ
15
degrees
Mean of the first Gaussian distribution µ1
60
degrees
Mean of the second Gaussian distribution µ2 120
degrees
By default, the 2-D Random Fracture Generator is seeded with a time-dependent value,
based on the current system time. In that case, it produces a different fracture network
each time grok is run.
In either case, the seed value is written to the prefixo.eco file and can be used to generate
the same random fracture network many times.
•••
Generate orientation distribution
1. or n classes Number of orientation classes.
2. or first class middle Middle of the smallest orientation class.
3. or last class middle Middle of the largest orientation class.
4. or sigma Standard deviation σ of both Gaussian distributions.
5. or mu1 Mean µ1 of the first Gaussian distribution.
6. or mu2 Mean µ2 of the second Gaussian distribution.
Causes grok to read the parameters that are used to define the distribution of fracture
orientation, which follows a mixed Gaussian distribution according to:
1
1
P (x) = P1 (x) + P2 (x)
2
2
(2.1)
where the ith Gaussian distribution with mean µi and variance σ 2 has probability density
function
(x−µi )2
1
(2.2)
Pi (x) = √ e− 2σ2
σ 2π
defined for all x ∈ (−∞, ∞).
By default, the values given in Table 2.1 are used to define these relationships.
•••
Generate aperture distribution
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
Table 2.2: Default Values for 2-D Random
Parameter
Number of aperture classes
Middle of the smallest aperture class
Middle of the largest aperture class
λ of the exponential aperture distribution
24
Fracture
Value
10
50
300
9000
Aperture.
Unit
microns
microns
1. ap n classes Number of aperture classes.
2. ap first class middle Middle of the smallest aperture class.
3. ap last class middle Middle of the largest aperture class.
4. ap lambda λ of the exponential aperture distribution.
Causes grok to read the parameters that are used to define the distribution of fracture
aperture, which follows an exponential distribution, according to:
P (x) = Po · e−λ x
(2.3)
Note that for a high value of λ, the exponential distribution becomes steeper and small
apertures are more numerous, whereas a small value of λ favours larger apertures.
By default, the values given in Table 2.2 are used to define these relationships.
•••
Generate log-normal length distribution
1. le n classes Number of length classes.
2. le first class middle Middle of the smallest length class.
3. le last class middle Middle of the largest length class.
4. lognormal m µ of the log-normal distribution.
5. lognormal s σ of the log-normal length distribution.
Causes grok to read the parameters that are used to define the distribution of fracture
length, which follows a log-normal distribution according to:
P (x) =
(ln x−µ)2
1
√ e− 2σ2
σx 2π
(2.4)
By default, the values given in Table 2.3 are used to define these relationships.
It should be noted that the log-normal distribution Λ(µ, σ 2 ) results from the curve Λ(0, σ 2 )
by:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
25
Table 2.3: Default Values for 2-D Random Fracture Length, Log-normal Distribution.
Parameter
Value
Unit
Number of length classes
10
Middle of the smallest length class
0.1 · min(Lx , Lz ) † m ‡
Middle of the largest length class
min(Lx , Lz )
m
µ of the log-normal distribution
2.9
σ of the log-normal length distribution 0.45
†
The symbols Lx and Lz denote the length of the simulation domain
the the x and z directions respectively.
‡
Although metre units of length are shown in this table they may be
defined differently by the user as outlined in Section 2.1.2.
• Stretching of eµ in the x-direction.
• Stretching of e−µ in the z-direction.
Thus, larger values for µ will move the peak to the right. Altering the standard deviation
σ will have an impact on the scattering of the distribution where a small σ leads to less
scattering and a sharper peak.
•••
Exponential length distribution
Causes grok to use an exponential distribution of the fracture trace, as opposed to the
default log-normal distibution.
•••
Generate exponential length distribution
1. le n classes Number of length classes.
2. le first class middle Middle of the smallest length class.
3. le last class middle Middle of the largest length class.
4. le lambda λ of the exponential length distribution.
Used in conjunction with the Exponential length distribution instruction, this causes grok
to read the parameters that are used to define the distribution of fracture length, which
follows an exponential distribution according to:
P (x) = Po · e−λ x
(2.5)
Note that for a high value for λ, the exponential distribution becomes steeper and short
fractures are more numerous whereas a small λ favors longer fractures.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
26
Table 2.4: Default Values for 2-D Random Fracture Length, Exponential Distribution.
Parameter
Value
Unit
Number of length classes
10
Middle of the smallest length class
0.1 · min(Lx , Lz ) † m ‡
Middle of the largest length class
min(Lx , Lz )
m
λ of the exponential length distribution 0.05
†
The symbols Lx and Lz denote the length of the simulation domain in
the x and z directions respectively.
‡
Although metre units of length are shown in this table they may be
defined differently by the user as outlined in Section 2.1.2.
By default, the values given in Table 2.4 are used to define these relationships.
•••
Output random apertures
Writes the generated aperture distribution data and individual fracture apertures to the
output file prefixo.rfrac.apertures.
•••
Output random lengths
Writes the generated length distribution data and individual fracture lengths to the output
file prefixo.rfrac.lengths.
•••
Output random orientations
Writes the generated orientation distribution data and individual fracture orientations to
the output file prefixo.rfrac.orientations.
•••
Output random fractures
Writes fracture zone aperture, conductivity and location data to the output file
prefixo.rfrac.fractures.
•••
Figure 2.3 gives an overview of the default distributions which the 2D Random Fracture
Generator employs. The orientation distribution (Figure 2.3a) is based on the assumption
that tectonic stress results in the creation of two fracture families as depicted in Figure 2.3b.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
27
15
10
5
b)
number of fractures
a)
0
0
30
60
90
120
150
180
orientation [1°]
10
5
0
50
100
150
200
250
300
number of fractures
15
d)
20
15
10
5
number of fractures
25
20
c)
0
0
aperture [µm]
10
20
30
40
50
length [m]
Figure 2.3: Default Random Fracture Distribution
However, upon assigning identical values for µ1 and µ2 , the distribution collapses to a
one-peak distribution. The default distribution for the aperture (Figure 2.3c) is exponential
and can be modified by the user. By default, the fracture traces are distributed log-normally
(Figure 2.3d), which can be changed to exponential. Note that the fracture trace distribution
depends on the domain dimensions. Here, a block has been used with Lx = 100m, Ly = 1m
and Lz = 50m.
The following instructions were used to generate the irregular fracture network shown in
Figure 2.4. Note the dominance of the two orientations 800 and 1350 .
!_______________________ grid definition
generate uniform blocks
100.0 200
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
1.0 1
50.0 100
adapt grid to fractures
3
end
...etc...
!_______________________ fracture media properties
use domain type
fracture
properties file
eval.fprops
begin random fractures
use constant seed
0.5
number of random fractures
70
exponential length distribution
generate orientation distribution
10
60.
150.
10.
80.
135.
output
output
output
output
random
random
random
random
apertures
lengths
orientations
fractures
end
read properties
fracture
28
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
29
Figure 2.4: Example for an Irregular Fracture Network
2.3.5
Interactive 3-D Mesh Generator
Irregular grids can be generated by supplying nodal coordinates, element incidences and
element zones for a 2-D slice which is composed of triangular or quadrilateral elements.
Currently, triangles and quadrilaterals can not be mixed in the same slice. These slices can
then be replicated to form a 3-D mesh composed of 6-node prisms (from triangles) or 8-node
hexahedra (from quadrilaterals).
2.3.5.1
Defining a 2-D Mesh
The following instructions can be used to obtain 2-D slice data.
Generate uniform rectangles
1. xl, nbx Length and number of rectangles in the x-direction
2. yl, nby Length and number of rectangles in the ydirection
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
30
Generates a 2-D grid for a rectangular domain made up of uniform rectangles. Each rectangular element will be assigned a default zone number of 1. It is identical to the generate
uniform blocks instruction except that we drop the z-axis parameters.
•••
Generate variable rectangles
1. nx Number of nodes in the x-direction
2. xi(i),i=1,nx x-coordinates of the nx nodes.
3. ny Number of nodes in the y-direction
4. yi(i),i=1,ny y-coordinates of the ny nodes.
Generates a 2-D grid for a rectangular domain made up of variably-sized rectangles. Each
rectangular element will be assigned a zone number of 1. It is almost identical to the generate
variable blocks instruction except that we drop the z-axis parameters. Note that the line
length is limited by 3000 characters in any input instructions and thus, use additional lines
for xi(i), y(i) should your input exceed this limit.
•••
Generate rectangles interactive
This instruction works in exactly the same way as the Generate blocks interactive instruction
described in Section 2.3.2, except that input is limited to the x− and y-directions and a 2-D
mesh of 4-node rectangular elements is generated.
•••
Read gms 2d grid
1. gmsfile Name of the file which contains the 2-D slice data.
Reads a file which contains data defining a 2-D slice. The format of this file is described in
detail in Section F.1 and is compatible with that produced by the Groundwater Modeling
System (GMS) software which was developed at Brigham Young University for the US
Department of Defense.
•••
Read gb 2d grid
1. prefix Prefix of the GRID BUILDER files which contain the node coordinates, element
incidences and element zone numbers for the 2-D triangular mesh. This is a string
variable.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
31
Reads the files which contain data defining a 2-D slice composed of 3-node triangular
elements. These files are described in detail in Section G.1 and are compatible with output
generated by the GRID BUILDER program.
•••
Read algomesh 2d grid
1. ah2 mesh Filename (including extension) of the 2d *.ah2 mesh exported from AlgoMesh.
•••
Refine 2d grid
Causes grok to refine 2d irregular triangular grid (1 triangle to 4 triangles). This command
can be repeated multiple times after 2d grid is imported. Note that the number of nodes
increases about four times with this command.
•••
Reduce 2d grid, boundary file
1. polygon file Filename (including extension) of a text file where a polygon is defined
with x- and y-coordinates in each line (the number of lines in this file is the same as
the number of points to define the polygon). Note that first and last points need to be
identical. The reduced 2d grid system includes only those triangular elements when
all the vertices are located within the polygon.
•••
Read fractran 2d grid
1. prefix Prefix of the FRACTRAN files which contain the node coordinates, element
incidences and element zone numbers for the 2-D rectangular element mesh. This is a
string variable.
Reads the files which contain data defining a 2-D slice composed of 4-node rectangular
elements. These files are compatible with output generated by the FRACTRAN program.
•••
For a 2-D slice made of 4-node rectangular elements, the following instructions can be used
to remove elements:
Remove rectangles with shapefile
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
32
1. arcview prefix Prefix of the ARCVIEW shape file.
2. unproject file If .true, this logical switch causes grok to read grid unprojection data
as described in Section 2.3.10 and to apply it to the data read from the ARCVIEW
shapefile.
3. project file If .true, this logical switch causes grok to read grid projection data as
described in Section 2.3.10 and to apply it to the data read from the ARCVIEW
shapefile.
4. outside If .true, elements located outside the area defined in the ARCVIEW shapefile
are removed. If .false, elements located inside the area are removed.
•••
Remove rectangles with blanking file
As above except a blanking file in surfer format is used instead of an ARCVIEW shape file.
•••
Raster to scl
1. arcview file name Name of the Arcview ASCII file.
2. bandwidth Cell bandwidth used for averaging.
Reads an ARCVIEW ascii file and interpolates a value for each 2-D mesh node. The results
are written to a GMS formatted scalar file called output.scl.
•••
Raster to nprop
1. arcview file name Name of the Arcview ASCII file.
2. bandwidth Cell bandwidth used for averaging.
Reads an ARCVIEW ascii file and interpolates a value for each 2-D mesh node. The results
are written to a Grid Builder compatible binary file called raster2nprop.output.nprop.
•••
Raster to element
1. arcview file name Name of the Arcview ASCII file.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
33
2. Statistic Statistic to be used to interpolate values. Acceptable values for the variable
statistic are:
max count
nearest
If variable statistic is set to max count read the following:
(a) bandwidth Cell bandwidth used for averaging.
Reads an ARCVIEW ascii file and interpolates a value for each 2-D mesh element. The
results are written as a list of element number and value to a file called output.el.
•••
2.3.5.2
3-D Mesh Generation
Once you have a 2-D slice, you have the option of exiting the grid definition procedure,
which will cause grok to automatically generate a unit thickness 3-D grid. It does this by
duplicating the 2-D slice and constructing the appropriate 6-node prism or 8-node hexahedral
element incidences and assigning a unit element length perpendicular to the slice. The
element zone numbers for the slice are used to assign default zone numbers for each element.
Such a grid could be used to simulate 2-D cross-sectional problems.
More often, you will want to generate a 3-D layered grid, perhaps with topography defined
by a DEM (Digital Elevation Model) and/or uneven layer contacts based on the observed
hydrostratigraphy.
To do so you should start by issuing the following instruction:
Generate layers interactive...End
Causes grok to begin reading a group of 3-D grid generation instructions until it encounters
an End instruction.
•••
The basic procedure is to build up the 3-D mesh by defining the base, then adding layers
one at a time from the base to ground surface.
By default, the domain will contain a single layer, one element high with a base elevation of
zero and a top elevation of 1, and the element zone numbering scheme from the 2-D slice
will be used to assign the 3D mesh element zone numbers. Instructions that change the
default behaviour are described below:
These commands are optional but should not be used more than once:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
34
Zone by layer
Causes grok to assign the 3D mesh layer number to the element zone number.
By default, the element zone numbering scheme from the 2-D slice is used to assign the 3D
mesh element zone number.
•••
Base elevation...End
Causes grok to begin reading a group of base elevation instructions until it encounters an
End instruction. Available instructions are described in Section 2.3.5.4.
By default, the base elevation of the domain will be set to zero.
•••
2.3.5.3
Adding a New Layer
For each layer in the domain, you should include a single instance of the following instruction:
New layer...End
Causes grok to begin reading a group of new layer instructions until it encounters an End
instruction.
By default, the top elevation of the layer will be set to zero by assigning all nodes in the
lowermost 2-D slice to have a z-coordinate value of zero. You can change the layer top
elevation using the instructions described in Section 2.3.5.4.
•••
The following instructions are all optional:
Layer name
1. layer name Layer name.
Changes the layer name, which defaults to Layer n, where n is the current layer number.
•••
Minimum layer thickness
1. z added Minumum thickness value[L].
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
35
This instruction causes grok to enforce a minimum thickness constraint for the current
layer. At nodes where the computed layer top elevation is less than or equal to the current
base elevation, z added will be added to the current base elevation to get the top elevation.
If this constraint is not enforced, grok will stop and issue a warning message if the computed
top elevation is less than or equal to the current base elevation.
•••
By default, a new layer will not be subdivided vertically unless one of the following two
instructions is issued:
Uniform sublayering
1. nsublayer Number of sublayers.
This instruction divides the layer vertically into nsublayer elements, which will each have
the same height, equal to the top elevation minus the current base elevation divided by
nsublayer.
•••
Proportional sublayering
1. nsublayer Number of proportional sublayers.
2. sub thick(i),i=1,nsublayer Proportional thiknesses in order from top to bottom.
This instruction can be used if you want to refine the mesh vertically, for example in the
subsurface near the surface flow domain or a fracture.
It is important to understand that the variable sub thick is not a true thickness, but is
instead a relative thickness, which is used along with the layer thickness to determine the
element heights in the current column.
For example, these instructions would subdivide the current layer vertically into three
elements, between the current base and top elevation, with element height proportions of .1,
1 and 10 from top to bottom:
Proportional sublayering
3
0.1
1.0
10.0
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
36
•••
Offset top
1. value Thickness value (L) by which to offset the layer top elevation.
This instruction causes the elevation of the top layer to be offset vertically by the given
value. This can be used to create a surface a given distance below another surface.
•••
Offset base
1. value Thickness value (L) by which to offset the base elevation.
This instruction causes the base elevation to be offset vertically by the given value.
For example, these instructions create two layers with the elevations 2 and 1 metre below
the elevation defined in the raster gs.asc and the raster elevation:
base elevation
elevation from raster file
gs.asc
offset base
-2.0
end
new layer
Uniform sublayering
10
elevation from raster file
gs.asc
offset top
-1.0
end
new layer
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
37
Uniform sublayering
3
elevation from raster file
gs.asc
end
•••
2.3.5.4
Elevation Instructions
These instructions are used to define 3-D mesh base elevations and new layer top elevations.
Elevation constant
1. elev Elevation value [L].
•••
Elevation from gms file
1. basefile Name of the data file containing the elevation values for each node in the 2-D
grid. This is a string variable. The file should be formatted as outlined in Section F.2.
•••
Elevation from gb file
1. basefile Name of the data file containing the base elevation values for each node in
the 2-D grid. This is a string variable. The file should be formatted as outlined in
Section G.2.
•••
Elevation from raster file
1. rasterfile Name of the raster file containing the base elevation values. This is a string
variable. The file should be formatted as outlined in Section H.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
38
•••
Elevation from bilinear function in xy
1. xfrom, xto, yfrom, yto x and y ranges.
2. a1,a2,a3,a4,a5 Constants for bilinear function.
For nodes falling within the given x and y range, the z-coordinate is computed according to
the following function:
z = a1 + a2(x − xfrom) + a3 ∗ (x − xfrom)2 + a4(y − yfrom) + a5(y − yfrom)2
•••
Elevation from sine function in xy
1. xfrom, xto, yfrom, yto x and y ranges.
2. zz0 Elevation at xfrom, yfrom.
3. num sw x,amplitude x,slope x Number of sine wave cycles, sine wave amplitude
and surface slope in the x−direction.
4. num sw y,amplitude y,slope y As above but in the y−direction.
For nodes falling within the given x and y range, the z-coordinate is computed according to
the following function:
z = zz0 + amplitude x(1 + sin(f (x))) + slope x(x − xfrom)
+amplitude y(1 + sin(f (y))) + slope y(y − yfrom)
where:
f (x) = (x − xfrom)/(xto − xfrom) ∗ 2π ∗ num sw x
f (y) = (y − yfrom)/(yto − yfrom) ∗ 2π ∗ num sw y
•••
The number of cycles of the sine wave can be a fraction and the sine function rises from a
value of zz0 at (xfrom, yfrom) as x and y values increase. Where the peaks coincide, the
maximum elevation is the sum of zz0 + amplitude x + amplitude y.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
39
Elevation from cosine function in xy
As above but uses the cosine function instead of the sine function.
•••
Elevation from xz pairs
1. xval, zval xz pair 1.
2. xval, zval xz pair 2.
3. ...etc...
4. xval, zval xz pair n.
5. end Signals end of list.
Listed xz coordinate pairs are read until an End instruction is encountered. They should be
given in order from smallest to largest x. For each node in the 2-D grid, the x coordinate of
the node is used to determine it’s position in the list, and a z coordinate is then interpolated
from the neighbouring xz pairs.
•••
Elevation from file
1. ascii elevation file name Name of the ascii text file containing the elevation values
(NN2D number of floating point elevation values - one per each line). This is a string
variable.
•••
2.3.6
Tetrahedral Element Grids
Tetrahedra
Subdivides block elements into tetrahedra (4-node) elements. If the grid does not contain
block elements the pre-processor will stop and you will be issued a warning.
•••
Block elements must be orthogonal or nearly so in order to avoid introducing numerical error,
while tetrahedral elements can handle irregular geometries. The subdivision into tetrahedra
is carried out by HydroGeoSphere during problem solution and is transparent to the
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
40
user. Faces which can be designated as fracture elements are restricted to the original block
elements. This is merely a matter of convenience and future versions may allow tetrahedral
element faces to be designated as fractures.
2.3.7
Axisymmetric Flow
Axisymmetric coordinates
This instruction is used for simulating radial flow to a well. It should only be applied to a
vertical cross-section, of unit thickness in the y-direction. The x coordinate is taken as the
radial distance.
One should define a vertical cross-section of unit thickness in the y-direction (with 2 nodes
in that direction), and locate a pumping/injection well at the origin (x=0.0).
•••
2.3.8
Reading an Existing 3-D Grid
In some cases, the grid generation step can be very time consuming. If this is so, then the
following instruction can be used to read a grid which was generated in a previous run:
Read 3D grid
The grid whose prefix matches that of the prefix.grok file will be read in.
These instructions show how to set up the grid generation section of the prefix.grok file to
use the Read 3d grid instruction:
!
Generate the grid for first run
! skip on
read gb 2d grid
laurel
generate layers from gb 2d grid
.true.
.false.
laurel.nprop.Bedrock
1
Whole domain
20
.false.
laurel.nprop.Topography
!
!
zone by layer?
base elevation constant?
!
layer
!
!
sublayer
top elevation constant?
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
41
write faces and segments
!skip off
skip on
! Read previously defined grid for subsequent runs
read 3D grid
skip off
end grid definition
In the first run, one can read the slice and generate the layered grid. It is important that
the instruction write faces and segments be included if you are using any of the choose face
or choose segment instructions later in the prefix.grok file.
On subsequent runs, one can skip over the grid generation commands and use the read 3D
grid instruction instead.
•••
Read 3D grid, ascii
Force grok to read prefix.coordinates and prefix.elements to create a 3D mesh. Formats
are as follows:
prefix.coordinates
• Line 1: nn (1 integer), total number of nodes
• Lines 2 to nn+1: x(i), y(i), z(i) (3 floats), nodal coordinates for node 1 to node nn
• Line nn+2: nx, ny, nz, nsptot (4 integer), number of grid lines in x, y, and z coordinates
+ number of species for transport (for unstructured grid, nx and ny are neglected;
nsptot = 0 always)
• Line nn+3: ne2d (1 integer), number of triangles or rectangles in the 2D node sheet
• Line nn+4: tetramesh (1 logical), logical switch (.true. if it is a tetrahedral mesh)
• Line nn+5: gal mode (1 logical), logical switch (.true. if the Galerkin method is used
for tetramesh)
• Line nn+6: do write face seg (1 logical), should always be .false.
• Line nn+7: nb2d (1 integer), maximum number of nodes connected to a node for the
2D triangular mesh
prefix.elements
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
42
• Line 1: nln (1 integer), number of nodes in a single element (4: tetrahedron; 6:
triangular prism; 8: hexahedron)
• Line 2: ne (1 integer), total number of elements
• Lines 3 to ne+2: n(1,i), n(2,i),. . . , n(nln,i) (nln integers), node numbers for element
incidences for elements 1 to ne
• Lines ne+3 to 2ne+2: id(i) (1 integer), element ID (zone number) for elements 1 to ne
•••
2.3.9
Manipulating the 3D Grid
Tilt grid x
Tilts a grid by 90o around the x-axis. This is especially suitable in conjunction with the
instruction read slice which reads a two-dimensional grid (parallel to the xy-plane) in gms
format.
•••
Tilt grid y
As above but for the y-axis.
•••
Adapt grid to fractures
1. adapt g2f mode An integer value indicating how the grid is adapted to inclined
fractures.
If block elements are used, two inclined fractures may intersect in the middle of an element
instead of on a grid node, so the fractures will not be connected unless additional nodes are
specified.
Acceptable values for the variable adapt g2f mode and the actions taken in each case are:
0
1
2
3
No action is taken.
New grid lines are added.
The block element is substituted by four prisms.
Inclined faces are not selected in the block element where the problem occurs.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
43
The default value is 1.
•••
2.3.10
Grid Projection
Figure 2.5 illustrates the degree of distortion that can occur (which is especially severe at
the poles) when a spherical geographic coordinate system, such as longitude and latitude, is
mapped directly into a planar 2-D coordinate system. The following command can be used
to correct the distortion which occurs when modelling large continental scale problems.
Project grid
1. projt The projection type to be applied. Currently, the only valid input for projt
are albers equal-area or lambert azimuthal equal-area, which apply the Albers
conical or Lambert azimuthal equal-area projections respectively. For the Albers
projection, the following additional data are required:
(a) lon0, lat0 The longitude and latitude for the origin of the projection.
(b) lat1, lat2 The latitude of the standard parallels.
(c) datum The datum used for the projection. Acceptable values for the variable
datum are:
1
2
Sphere.
Ellipsoid (Clarke 1866).
For the Lambert projection, the following additional data are required:
(a) lon0, lat0 The longitude and latitude for the origin of the projection.
(b) datum The datum used for the projection. Acceptable values for the variable
datum are:
1
Sphere.
Transforms the current mesh from a spherical system into a planar 2-D coordinate system.
It must be inserted just before the End grid generation command.
The following example uses the Project Grid instruction:
generate blocks interactive
grade x
-150 -50 5 1 5
grade y
40 85 5 1 5
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
44
grade z
0 10 10 1 10
end
project grid
albers equal-area
-100 60
55 70
1
!
!
!
projection origin
standard parallels
1=sphere, 2=ellipsoid
end
The grid produced by the Generate blocks interactive instruction is shown on Figure 2.5 and
once projected, the grid looks like the one on Figure 2.6.
•••
Project 2d grid
The input data for this instruction is identical to that required for the Project grid instruction
described above.
Transforms the current mesh from a planar 2-D coordinate system into a spherical system.
It must be inserted just before the End grid generation command.
•••
Unproject 2d grid
The input data for this instruction is identical to that required for the Project 2d grid
instruction described above.
Transforms the current mesh from a spherical coordinate system into a planar 2-D system.
It must be inserted just before the End grid generation command.
•••
2.3.11
Ending Grid Generation
End
Signals the end of the user-controlled portion of the grid definition section of the input
data file. At this stage, the pre-processor will automatically perform grid modifications if
appropriate. For example, if you read in 2-D slice data but did not specify layer information
using for example, the generate layers interactive instruction, the pre-processor would generate
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
45
Figure 2.5: Mesh in Geographic Coordinates (lat/long). The map of Canada is shown as a
reference.
Figure 2.6: Mesh using Albers Equal-area Projection. The map of Canada now shows much
less distortion but the elements are deformed.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
46
a default 3-D system by duplicating the 2-D slice to form a single layer of unit-thickness
elements.
•••
2.4
Selecting Mesh Components
In order to assign boundary conditions, material properties etc. we need to be able to choose
subsets of the grid. The method of choice must be flexible and easy to use as well as being
able to handle complex input requirements.
The following is a list of grid components, ranked in order of increasing complexity:
1. nodes -- used to assign initial heads and first-type boundary conditions
2. segments -- used to represent wells, tile drains or obsevation wells
3. faces (triangles or rectangles) -- used to represent fractures or high-conductivity planes
(as 2-D triangular or rectangular elements) and to assign second- and third-type
boundary conditions to these as well as 3-D prism or block elements.
4. elements(blocks, prisms or tetrahedra) -- sometimes used to assign hydraulic conductivities or distribution coefficients
5. zones -- generally used to assign material properties such as hydraulic conductivity.
Elements are grouped into zones by assigning them the same ID number.
We will assign to all members of a grid component an attribute called ‘chosen’, which can be
toggled on or off by the user. If the attribute is chosen for certain members of a component,
then subsequent instructions issued by the user will affect those members only. For example,
the following section of a hypothetical prefix.grok file would initially turn off all chosen
nodes (i.e. instruction clear chosen nodes which requires no further input), then turn on only
those nodes satisfying the requirement that they are within 1.e-5 distance units of the plane
defined by the equation x = 0.0 (i.e. instruction choose nodes x plane followed by two lines
of input).
clear chosen nodes
choose nodes x plane
0.0
1.e-5
X coordinate of plane
distance criteria
Once these nodes were chosen, we could set the property of interest by issuing another
instruction like:
create node set
mynodeset
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
47
In this case we are assigning a constant head of 10.0 to all chosen nodes at time 0.0, which
will apply for the duration of the simulation. Note that the instruction specified head acts
on nodes by definition. It is up to the user to be aware of which components each group of
instruction acts on.
The effect of issuing two such instructions in succession is cumulative. For example, the
following input would choose nodes which were within 1.e-5 distance units of the planes at
x = 0.0 and x = 10.0.
clear chosen nodes
choose nodes x plane
0.0
1.e-5
choose nodes x plane
10.0
1.e-5
X coordinate of plane
distance criteria
X coordinate of plane
distance criteria
The following sections introduce all the instructions which are available for choosing subsets
of the various grid components.
2.4.1
Selecting Nodes
We can use the following instructions to alter the set of chosen nodes.
Clear chosen nodes
All nodes in the domain will be flagged as not chosen. This is recommended if you are
unsure of which nodes are chosen due to previously issued instructions.
•••
Choose nodes all
All nodes in the domain will be chosen. This is useful if you wish to assign a property to all
nodes in the grid. For example, you could issue this instruction and then assign a uniform
initial head for the problem.
•••
Choose node
1. x1, y1, z1 xyz-coordinate.
The node closest to the given coordinate will be chosen.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
48
Choose node number
1. i Node number.
The node with this number will be chosen. You should use this instruction with caution
since node numbering will change if the grid structure changes.
•••
Choose nodes x plane
1. x1 x-coordinate of the plane.
2. ptol Distance from the plane.
Nodes within distance ptol of the plane defined by the equation x = x1 will be chosen.
This command is particularly useful when assigning boundary conditions to a specific side
of a rectangular domain.
•••
Choose nodes y plane
As above but for the y-plane.
•••
Choose nodes z plane
As above but for the z-plane.
•••
Choose nodes 3pt plane
1. x1, y1, z1 xyz-coordinate of the first point.
2. x2, y2, z2 xyz-coordinate of the second point.
3. x3, y3, z3 xyz-coordinate of the third point.
4. ptol Distance from the plane.
Nodes within distance ptol of the plane defined by the 3 points will be chosen. This allows
you to choose planes of nodes with an arbitrary orientation.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
49
Choose nodes 3pt plane bounded
1. x1, y1, z1 xyz-coordinate of the first point.
2. x2, y2, z2 xyz-coordinate of the second point.
3. x3, y3, z3 xyz-coordinate of the third point.
4. ptol Distance from the plane.
5. x4, x5 x-range of the block.
6. y4, y5 y-range of the block.
7. z4, z5 z-range of the block.
Nodes within distance ptol of the plane defined by the 3 points and within the rectangular
block defined by the 3 ranges will be chosen.
•••
Choose nodes block
1. x1, x2 x-range of the block.
2. y1, y2 y-range of the block.
3. z1, z2 z-range of the block.
Nodes within the rectangular block defined by the 3 ranges are chosen. Note that the values
given for one, two or all of the ranges can be identical and in that case, the block will
collapse to a plane, line or point respectively.
•••
Choose nodes top
All nodes in the top sheet of the domain are chosen.
•••
Choose nodes top block
1. x1, x2 x-range of the block.
2. y1, y2 y-range of the block.
3. z1, z2 z-range of the block.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
50
Nodes in the top sheet whose centroids are within the rectangular block defined by the
3 ranges are chosen. Note that the values given for one, two or all of the ranges can be
identical and in that case, the block will collapse to a plane, line or point respectively.
•••
Choose nodes bottom
All nodes in the bottom sheet of the domain are chosen.
•••
Choose nodes sheet
1. nsheet Sheet number.
All nodes in this sheet are chosen.
•••
Choose nodes top gb
1. fname Name of the GRID BUILDER chosen nodes file gb prefix.nchos.description.
Nodes flagged as .TRUE. in the file and that are in the top sheet are chosen.
•••
Choose nodes gb
1. fname Name of the GRID BUILDER chosen nodes file gb prefix.nchos.description.
2. nsheet bot,nsheet top Bottom and top sheet numbers.
Nodes flagged as .TRUE. in the file and that are between the bottom and top sheet (inclusive)
are chosen.
•••
Choose nodes list
1. fname Name of the file which contains the list of node numbers.
The file consists of a list of node numbers, one entry per line. The procedure exits automatically when end-of-file is reached. The nodes in the list are chosen.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
51
•••
Choose nodes xyz list
1. fname Name of the file which contains the list of xyz-coordinates.
The file consists of a list of xyz-coordinates, one entry per line. The node nearest the given
coordinate will be chosen. The procedure exits automatically when end-of-file is reached.
•••
Choose surface flow nodes
Nodes currently flagged as surface flow nodes are chosen.
•••
Choose nodes top boundary
Nodes around the top edge of the surface flow domain are chosen.
•••
Choose nodes top overlay file
1. fname Name of the GRID BUILDER overlay file.
Only the first group of entries in the overlay file are considered. If an overlay line segment
intersects an element edge, then the node in the top sheet closest to the point of intersection
is chosen.
•••
Choose nodes between gb surfaces
1. surffile Name of the GRID BUILDER nodal properties file gb prefix.nprop.description
for the bottom surface.
2. surffile Name of the GRID BUILDER nodal properties file gb prefix.nprop.description
for the top surface.
For the 3-D mesh node with the same x− and y−coordinate as a 2-D mesh node, if the
z−coordinate of the 3-D node is greater than the nodal property value given in the bottom
surface file and less than the nodal property value given in the top surface file the 3-D node
is chosen.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
52
•••
Choose nodes tecplot geometry
1. geofile Name of the TECPLOT geometry file which contains polyline data.
The node nearest to each point on the polyline is chosen.
•••
Choose nodes horizontal circle
1. x mid, y mid, z mid xy-coordinates of the centre of the circle and elevation of the
circle.
2. radius Radius of the circle.
3. ptol Vertical tolerance.
4. rtol Horizontal tolerance.
Nodes within a vertical distance ptol of elevation z mid, and within a horizontal distance
rtol of the circle with centre x mid, y mid and radius radius are chosen. This allows you
to choose nodes in a domain that has a circular ground-plan.
•••
Choose nodes active/inactive boundary
Nodes which lie on the boundary between active and inactive elements will be chosen.
This instruction was intended to be used to select the surface of nodes on top of the set
of active elements so that flow boundary conditions (e.g. head equals elevation) could be
assigned.
•••
Choose nodes 2d-list sheet
1. nsheet Sheet number.
2. fname Name of the file which contains the list of 2d node numbers.
The file consists of a list of 2d node numbers, one entry per line. The procedure exits automatically when end-of-file is reached. The 3d nodes in the sheet are chosen based on the 2d
node number and the sheet number. If the 2d node number in the list is larger than nn2d but
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
53
less than or equal to nn, it is automatically converted to a corresponding 2d node number.
•••
Choose nodes top 2d-list
1. fname Name of the file which contains the list of 2d node numbers.
The file consists of a list of 2d node numbers, one entry per line. The procedure exits
automatically when end-of-file is reached. The 3d nodes in the top sheet are chosen based
on the 2d node number. If the 2d node number in the list is larger than nn2d but less than
or equal to nn, it is converted to a corresponding 2d node number.
•••
Choose nodes by zone
1. zone number Zone number
This instruction is intended to choose all the nodes within a zone of the given zone number.
•••
Choose nodes between zones
1. zone number1, zone number2 Two zone numbers interface of which will be chosen.
This instruction is intended to choose the interface nodes between two zones.
•••
Write chosen nodes
1. fname Name of the file to which the chosen node numbers will be written.
•••
Write chosen nodes xyz
1. fname Name of the file to which the chosen node information will be written.
As above except xyz-coordinates are written instead of node numbers.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.4.2
54
Selecting Segments
We can use the following instructions to alter the set of chosen segments.
Clear chosen segments
All segments in the domain are flagged as not chosen. This is recommended if you are unsure
of which segments are chosen due to previously issued instructions.
•••
Choose segments all
All segments in the domain will be chosen. This is useful if you wish to assign a property to
all segments in the grid.
•••
Choose segments line
1. x1, y1, z1 xyz-coordinates of the first end point of the line.
2. x2, y2, z2 xyz-coordinates of the second end point of the line.
Segments which fall on or close to the line are chosen. The routine finds the two nodes
closest to the end points of the line and then finds the group of connected line segments
which form the shortest path between the two nodes.
•••
Choose segments polyline
1. npts The number of points defining the polyline, which should be entered in order
from one end of the polyline to the other. Read the following npts times:
(a) x1, y1, z1 xyz-coordinates of a point on the polyline.
Segments which fall on or close to the polyline are chosen. The routine proceeds along the
polyline, considering two points at a time, finds the two nodes closest to the two current
points and then finds the group of connected line segments which form the shortest path
between the two nodes.
•••
Choose segments gb node list
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
55
1. npts The number of points defining the polyline, which should be entered in order
from one end of the polyline to the other. Read the following npts times:
(a) x1, y1, isheet1 xy-coordinates and sheet number of a point on the polyline.
Segments which fall on or close to the polyline are chosen. This instruction is intended to
help to build horizontal wells/drains.
•••
Choose segments xy between sheets
1. x1, y1 xy-coordinates to define a vertical segment.
2. isheet1, isheet2 Bottom and top sheet numbers to define the segment.
This instruction is intended to help to build vertical wells/drains.
•••
2.4.3
Selecting Faces
Allow internal faces
Causes grok to define internal faces, which cut through elements.
By default, only the external faces (6 orthogonal faces for 8-node blocks and 5 faces for
6-node prisms) are defined for the mesh.
•••
The following instructions are used to alter the set of chosen faces:
Clear chosen faces
All faces in the domain are flagged as not chosen. This is recommended if you are unsure of
which faces are chosen due to previously issued instructions.
•••
Choose faces all
All faces in the domain will be chosen. This is useful if you wish to assign a property to all
faces in the grid. Rarely used.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
56
Choose faces x plane
1. x1 x-coordinate of the plane.
2. ptol Distance from the plane.
Faces within distance ptol of the plane defined by the equation x = x1 will be chosen. This
command is particularly useful when assigning boundary conditions to a specific face of a
rectangular domain.
•••
Choose faces y plane
As above but for the y-plane.
•••
Choose faces z plane
As above but for the z-plane.
•••
Choose faces 3pt plane
1. x1, y1, z1 xyz-coordinate of the first point.
2. x2, y2, z2 xyz-coordinate of the second point.
3. x3, y3, z3 xyz-coordinate of the third point.
4. ptol Distance from the plane.
Faces within distance ptol of the plane defined by the 3 points will be chosen. This allows
you to choose planes of faces with an arbitrary orientation, and is particularly useful for
setting up a set of sloping fractures.
•••
Choose faces 3pt plane bounded
1. x1, y1, z1 xyz-coordinate of the first point.
2. x2, y2, z2 xyz-coordinate of the second point.
3. x3, y3, z3 xyz-coordinate of the third point.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
57
4. ptol Distance from the plane.
5. x4, x5 x-range of the block.
6. y4, y5 y-range of the block.
7. z4, z5 z-range of the block.
Faces within distance ptol of the plane defined by the 3 points and within the rectangular
block defined by the 3 ranges will be chosen.
•••
Choose faces block
1. x1, x2 x-range of the block.
2. y1, y2 y-range of the block.
3. z1, z2 z-range of the block.
Faces whose centroids are within the rectangular block defined by the 3 ranges are chosen.
Note that the values given for one, two or all of the ranges can be identical and in that case,
the block will collapse to a plane, line or point respectively.
•••
Choose faces block by layer
1. x1, x2 x-range of the block.
2. y1, y2 y-range of the block.
3. z1, z2 z-range of the block.
4. nlaybot, nlaytop Bottom and top element layer numbers.
Faces whose centroids are within the rectangular block which is defined by the 3 coordinate
ranges, and which lie within the element layers defined by nlaybot and nlaytop are chosen.
These layer numbers do not correspond to those given during grid generation but are simply
defined by numbering each sheet of elements from 1 (bottom) to nz-1 (top) where nz is the
number of sheets of nodes (2-D meshes) making up the grid.
This instruction is designed for grids that are regular in x and y, but which have a variable z
for a given element layer, and can be used if the top and bottom elevations of a 3-D element
layer vary spatially.
Note that the values given for one, two or all of the ranges can be identical and in that case,
the block will collapse to a plane, line or point respectively.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
58
•••
Choose faces sheet
1. nsheet bot,nsheet top Bottom and top sheet numbers.
Faces which are between the two specified sheets (inclusive) and are not oriented perpendicular to the sheet will be chosen.
•••
Choose faces top
All faces in the top sheet of the domain will be chosen.
•••
Choose faces top block
1. x1, x2 x-range of the block.
2. y1, y2 y-range of the block.
3. z1, z2 z-range of the block.
Faces in the top layer whose centroids are within the rectangular block defined by the
3 ranges are chosen. Note that the values given for one, two or all of the ranges can be
identical and in that case, the block will collapse to a plane, line or point respectively.
•••
Choose faces bottom
All faces in the bottom sheet of the domain will be chosen.
•••
Choose faces front
Faces on the front of the domain will be chosen. This instruction can only be applied to
meshes composed of block elements. Front faces are parallel to the xz coordinate plane and
have small y coordinates.
•••
Choose faces back
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
59
Faces on the back of the domain will be chosen. This instruction can only be applied to
meshes composed of block elements. Back faces are parallel to the xz coordinate plane and
have large y coordinates.
•••
Choose faces left
Faces on the left side of the domain will be chosen. This instruction can only be applied to
meshes composed of block elements. Left side faces are parallel to the yz coordinate plane
and have small x coordinates.
•••
Choose faces right
Faces on the right side of the domain will be chosen. This instruction can only be applied
to meshes composed of block elements. Right side faces are parallel to the yz coordinate
plane and have large x coordinates.
•••
Choose faces top gb
1. fname Name of the GRID BUILDER chosen elements file gb prefix.echos.description.
Faces flagged as .TRUE. in the file, are in the top sheet and are not oriented perpendicular
to the sheet are chosen.
•••
Choose faces top gb common
1. fname1 Name of the GRID BUILDER chosen elements file gb prefix.echos.description1.
2. fname2 Name of the GRID BUILDER chosen elements file gb prefix.echos.description2.
Faces flagged as .TRUE. in the both files, are in the top sheet and are not oriented perpendicular to the sheet are chosen.
•••
Choose faces top gb exclude
1. fname1 Name of the GRID BUILDER chosen elements file gb prefix.echos.description1.
2. fname2 Name of the GRID BUILDER chosen elements file gb prefix.echos.description2.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
60
Faces flagged as .TRUE. in the first file and flagged as .FALSE. in the second file, are in
the top sheet and are not oriented perpendicular to the sheet are chosen.
•••
Choose faces top for chosen elements
Faces are chosen if they are in the top sheet and the 3-D element they belong to is chosen.
•••
Choose faces gb
1. fname Name of the GRID BUILDER chosen elements file gb prefix.echos.description.
2. nsheet bot,nsheet top Bottom and top sheet numbers.
Faces flagged as .TRUE. in the file, that are between the bottom and top sheets (inclusive),
and that are not oriented perpendicular to the sheet are chosen.
•••
Choose faces vertical from gb nodes
1. fname Name of the GRID BUILDER chosen nodes file gb prefix.nchos.description.
2. nsheet bot,nsheet top Bottom and top sheet numbers.
This instruction is intended for use with meshes that are generated from GRID BUILDER
2-D meshes, and is used to choose faces that are oriented perpendicular to the mesh.
If a node is chosen in the 2D mesh, then the nodes in the 3D mesh that have the same
XY-coordinate (i.e. that fall in the same column of nodes as the 2D node) and between
the top and bottom sheets will be chosen. A face is then chosen if all of its four nodes are
chosen.
•••
Choose horizontal faces on layer
1. nlayer Element layer number.
2. x1, x2 The x-range of the block.
3. y1, y2 The y-range of the block.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
61
Horizontal faces which are in the layer of elements numbered nlayer and within the rectangular block which is defined by the x and y ranges are chosen. This instruction can be
used to select horizontal faces (e.g. to make fractures) when the elevation of a given layer of
nodes is irregular.
•••
Choose faces stairway
1. x1, y1, z1 xyz-coordinates of the first point.
2. x2, y2, z2 xyz-coordinates of the second point.
3. x3, y3, z3 xyz-coordinates of the third point.
Horizontal and vertical faces of an inclined plane that is defined by three points are chosen.
This instruction is mainly designed for verification purpose of modelling results using inclined
fractures. Note that if using this instruction, fracture velocities are multiplied by a correction
factor that accounts for the longer path that contaminants have to travel from node to node.
•••
Choose fracture faces block
1. x1, x2 x-range of the block.
2. y1, y2 y-range of the block.
3. z1, z2 z-range of the block.
Faces which are fracture elements and whose centroids are within the rectangular block
defined by the 3 ranges are chosen. Note that the values given for one, two or all of the
ranges can be identical and in that case, the block will collapse to a plane, line or point
respectively.
•••
Choose face by nodes
1. n1, n2, n3, n4 Node numbers of the face to be chosen.
The rectangular face which is made up of the 4 given nodes will be chosen.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
62
Clear chosen faces by nodes
As above except the face will be cleared (i.e. not chosen).
•••
Choose faces horizontal circle
1. x mid, y mid, z mid xy-coordinates of the centre of the circle and elevation of the
circle.
2. radius Radius of the circle.
3. ptol Vertical tolerance.
Faces within a vertical distance ptol of elevation z mid, and within the circle with centre
x mid, y mid and radius radius are chosen. This allows you to choose faces in a domain
that has a circular ground-plan.
•••
Write chosen faces
1. fname Name of the file to which the chosen face information will be written.
Setting up complex fracture networks with combinations of choose face instructions can be
very time consuming in grok and this step does not need to be repeated as long as the grid
structure remains the same. This instruction is intended to be used in conjunction with the
following instruction.
•••
Write chosen faces and host element numbers
1. fname Name of the file to which the chosen face and host element information will be
written.
For each currently chosen face, this instruction writes the face number and associated 3-D
element numbers. If the second element number is zero, the face is on the outside of the
3-D domain.
•••
Read chosen faces
1. fname Name of the file from which the chosen face information will be read.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
63
If you want only those faces read from the file to be chosen then make sure to issue the
instruction clear chosen faces before you use read chosen faces. If not, the results will be
merged with the currently chosen set of faces. This could be useful if you want to apply a
certain set of fracture material properties to more than one group of faces at a time.
•••
Echo chosen faces
Causes the current set of chosen face numbers to be written to the prefixo.eco file.
•••
2.4.4
Selecting Inclined Faces
These instructions only work for rectangular meshes with the standard element numbering
scheme.
For each block element, there are 6 potential inclined faces which may be selected. These
are given ID numbers according to the following convention:
PLANE ID
1
2
3
4
5
6
LOCAL NODES
1-2-7-8
4-3-6-5
2-3-8-5
1-4-7-6
1-3-7-5
2-4-8-6
Clear chosen inclined faces
All faces in the domain are flagged as not chosen. This is recommended if you are unsure of
which inclined faces are chosen due to previously issued instructions.
Note that this instruction also clears chosen regular (horizontal and vertical) faces. This
is necessary because a previously defined inclined plane may also consist of horizontal or
vertical faces which have to be unselected as well.
•••
Choose faces 3pt inclined plane
1. nplane Plane ID number, as defined above.
2. x1, y1, z1 xyz-coordinates of the first point on the plane.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
64
3. x2, y2, z2 xyz-coordinates of the second point on the plane.
4. x3, y3, z3 xyz-coordinates of the third point on the plane.
5. ptol Distance from the plane.
6. xmin, xmax x-range of the block.
7. ymin, ymax y-range of the block.
8. zmin, zmax z-range of the block.
Faces which have the appropriate plane ID, whose centroids lie within the distance ptol of
the plane which is defined by the 3 points, and whose centroids are within the rectangular
block defined by the 3 ranges are chosen.
Note that if the plane defined by the 3 points is parallel to one coordinate axis, the preprocessor will automatically use the ID of the plane parallel to that axis, and the user-defined
plane ID will be ignored.
•••
2.4.5
Selecting Elements
We can use the following instructions to alter the set of chosen elements.
Clear chosen elements
All elements in the domain will be flagged as not chosen. This is recommended if you are
unsure of which elements are chosen due to previously issued instructions.
•••
Choose elements all
All elements in the domain will be chosen. This is useful if you wish to assign a property to
all elements in the grid.
•••
Choose elements by zone
1. nval Zone number.
Elements which have zone numbers equal to the given value are chosen.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
65
Choose elements by zone, within overlay
1. nval Zone number.
2. fname Name of the GRID BUILDER overlay file.
Elements which have zone numbers equal to the given value and whose centroid lies within
the first group of entries in the overlay file are chosen.
•••
Choose elements x plane
1. x1 The x-coordinate of the plane.
2. ptol Distance from the plane.
Elements within distance ptol of the plane defined by the equation x = x1 will be chosen.
•••
Choose elements y plane
As above but for the y-plane.
•••
Choose elements z plane
As above but for the z-plane.
•••
Choose elements 3pt plane
1. x1, y1, z1 xyz-coordinate of the first point.
2. x2, y2, z2 xyz-coordinate of the second point.
3. x3, y3, z3 xyz-coordinate of the third point.
4. ptol Distance from the plane.
Elements whose centroids are within distance ptol of the plane defined by the 3 points
will be chosen. This allows you to choose planes of elements with an arbitrary orientation.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
66
Choose elements block
1. x1, x2 x-range of the block.
2. y1, y2 y-range of the block.
3. z1, z2 z-range of the block.
Elements whose centroids are within the rectangular block defined by the 3 ranges are
chosen. Note that the values given for one, two or all of the ranges can be identical and in
that case, the block will collapse to a plane, line or point respectively.
•••
Choose elements block by layer
1. x1, x2 x-range of the block.
2. y1, y2 y-range of the block.
3. z1, z2 z-range of the block.
4. nlaybot, nlaytop Bottom and top element layer numbers.
Elements whose centroids are within the rectangular block which is defined by the 3
coordinate ranges, and which lie within the element layers defined by nlaybot and nlaytop
are chosen. These layer numbers do not correspond to those given during grid generation
but are simply defined by numbering each sheet of elements from 1 (bottom) to nz-1 (top)
where nz is the number of sheets of nodes (2-D meshes) making up the grid.
This instruction is designed for grids that are regular in x and y, but which have a variable z
for a given element layer, and can be used if the top and bottom elevations of a 3-D element
layer vary spatially.
Note that the values given for one, two or all of the ranges can be identical and in that case,
the block will collapse to a plane, line or point respectively.
•••
Choose elements by layer
1. nlaybot,nlaytop Bottom and top element layer numbers.
Elements which are between the bottom and top layers are chosen.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
67
Choose elements top
All elements which are in the top layer are chosen.
•••
Choose elements list
1. fname Name of the file which contains the list of element numbers.
The file consists of a list of element numbers, one entry per line. The procedure exits
automatically when end-of-file is reached. The elements in the list are chosen.
•••
Choose elements xyz list
1. fname Name of the file which contains the list of xyz-coordinates.
One set of coordinates should be entered per line. If a coordinate falls within an element,
then that element is chosen. This instruction only works for rectangular structured meshes
with the standard element numbering scheme, where the number of nodes in each of the x-,
y-, z-directions (nx, ny, nz) is defined. It does not work for irregular grids generated with
GridBuilder or GMS.
•••
Choose elements gb
1. fname Name of the GRID BUILDER chosen elements file gb prefix.echos.description.
2. nsheet bot,nsheet top Bottom and top sheet numbers.
Elements flagged as .TRUE. in the file and that are between the bottom and top sheet are
chosen.
•••
The following instructions allow you to choose elements based on raster surfaces, as described
in Section H. Since rasters are independent of the 3-D mesh, they do not have to be regenerated if the mesh changes, as is the case with Grid Builder or GMS formatted surfaces
that have values corresponding to each node in the 2-D mesh.
Choose elements between raster surfaces
1. rasterfile Name of the raster file for the bottom surface.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
68
2. rasterfile Name of the raster file for the top surface.
The xy-coordinates of the element centroid are used to determine if it falls in a valid cell
(i.e. a cell that has no missing values) in both raster files. If it does, the coordinates are
used to interpolate a raster value from the cell’s four corner values. If the z−coordinate of
the element centroid is greater than the raster value of the bottom surface, and less than
the raster value of the top surface, then the element is chosen.
•••
The following instructions use the same input data structure except that a single raster file
is read and used for comparison:
Choose elements above raster surface
Choose elements below raster surface
The following instructions use the same input data structure except that there is an additional constraint that the element is chosen only if it’s current zone number is zero. They
are intended to be used in conjunction with the instruction Assign zone zero:
Choose elements between raster surfaces, iprop zero
Choose elements above raster surface, iprop zero
Choose elements below raster surface, iprop zero
The following instructions use the same input data structure except that GRID BUILDER
nodal property files (i.e gb prefix.nprop.description) are read instead of raster files. The
element is chosen based on the z-coordinate of the first node in it’s node list:
Choose
elements between gb surfaces
Choose elements above gb surface
Choose elements below gb surface
The following instructions use the same input data structure except that GMS scalar files
are read instead of raster files. The element is chosen based on the z-coordinate of the first
node in it’s node list:
Choose elements between gms surfaces
Choose elements above gms surface
Choose elements below gms surface
Choose elements from arcview ascii thickness map
1. arcfile Name of the Arcview ASCII file.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
69
Reads an ARCVIEW ascii file containing thickness values (e.g. overburden thickness). For
each 3-D element, it’s position (row and column) in the raster is determined and it’s centroid
is calculated. It is chosen if its centroid is greater than the surface elevation minus the
thickness at that location.
•••
Choose elements horizontal circle
1. x mid, y mid, z mid xy-coordinates of the centre of the circle and elevation of the
circle.
2. radius Radius of the circle.
3. ptol Vertical tolerance.
4. rtol Horizontal tolerance.
Elements whose centroids are within a vertical distance ptol of elevation z mid, and within
a horizontal distance rtol of the circle with centre x mid, y mid and radius radius are
chosen. This allows you to choose elements in a domain that has a circular ground-plan.
•••
2.5
2.5.1
Simulation Control Options
General
Once the grid generation step is completed, the pre-processor generates a set of data for a
default problem by assuming saturated, steady-state flow in a non-fractured, homogeneous
porous medium. The porous medium properties for the default problem, which are hardwired
in the code, are listed in Table 2.5. By default, the finite-element approach is used and
a transport simulation is not done. If the default problem setup and material properties
are acceptable, it is likely that the only additional data required to complete the definition
of the problem are some flow boundary conditions, which can be assigned as described in
Section 2.7.
Transient flow
Causes HydroGeoSphere to perform a time-stepping, transient flow solution.
•••
Unsaturated
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
70
Causes HydroGeoSphere to perform a variably-saturated flow solution.
•••
Do transport
Causes HydroGeoSphere to perform a transport solution.
•••
If surface loading with hydromechanical coupling is required, you must issue the following
instruction:
Surface loading
Causes HydroGeoSphere to consider surface loading with hydromechanical coupling.
•••
The following instructions are used to define the behaviour of the Travel Time Probability
Package described in Section 2.9.
Travel time PDF
Defines if a travel time PDF computation is to be performed.
•••
Travel time CDF
Defines if a travel time CDF computation is to be performed.
•••
Travel time PDF from CDF
Defines if the travel time PDF must be deduced from the CDF at observation points.
•••
Mean age
Defines if a mean age/mean life expectancy computation is to be performed.
•••
Backward-in-time
Defines if flow is to be reversed (backward transport solution).
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
71
•••
Evaluate capture zone
Defines if an outlet capture zone is to be evaluated.
•••
Species attribution
Defines the species number (absolutely necessary in the case of multi-species transport).
•••
These instructions are of general interest:
Y vertical
Causes HydroGeoSphere to assume that the y-coordinate points in the vertical direction
(i.e. instead of the z-coordinate).
This instruction does not switch coordinates, but merely cause HydroGeoSphere to use
the y-coordinate of a node to calculate the total hydraulic head (pressure + elevation) for
variably-saturated simulations. It is intended to be used for variably-saturated flow problems
when using triangular prism elements, when one wants to have the triangular mesh (which
is defined in the xy plane) to be oriented along the vertical direction.
•••
Data check only
Causes HydroGeoSphere to halt execution after reading all data files, initializing arrays
etc. but prior to the start of the solution procedure
This can be useful for very large problems, where it is desirable to make sure that all the
input is correct before actually doing the simulation.
•••
2.5.1.1
Finite-difference Options
Finite difference mode
Causes HydroGeoSphere to use the finite difference approach instead of the default finite
element method.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
72
The following instructions affect the transport simulation in a general way when finite difference method is being used.
Compute fd cross terms
Causes HydroGeoSphere to compute cross terms explicitly when a finite difference representation is chosen, which, by default, are ignored.
•••
Control volume
Causes the control-volume finite difference approach to be used instead of the default
standard finite difference approach. This instruction has no effect when the finite element
approach is being used because the control volume approach is always used in that case.
•••
2.5.1.2
Matrix Solver
The matrix solution procedure consists of three phases: initialization, preconditioning and
solution. The instructions presented here can be used to control the preconditioning and
solution phases in order to increase the efficiency of the model.
The default preconditioning scheme is level-based factorization without red/black system
reduction. Improving model performance requires a good understanding of these options,
and so if you are unsure you should just use the default settings. However, if you decide to
experiment with the solver preconditioning parameters, here are a few suggestions for doing
so:
1. For transient, simple (i.e. small number of nodes) problems, level-based preconditioning
works better, because the static data structure analysis does not need to be done for
each time step.
2. For steady state or complex problems, drop tolerance preconditioning works better,
because WATSIT spends most of its time in the solution phase, not the preconditioning
phase.
3. For a very smoothly varying solution (e.g. a weakly stressed, homogeneous property
field) red/black reduction will speed convergence.
Level of fill
1. level Level of fill.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
73
Assigns the level of fill to be preserved in level-based factorization, which defaults to 0. If
drop tolerance preconditioning is used, this value is not used.
•••
Red black reduction
Tells the solver to use red black reduction. This can be used either using level-based or drop
tolerance preconditioning.
•••
Drop tolerance preconditioning
Tells the solver to use drop tolerance preconditioning. This will remove elements based on
how small they are. The default threshold is 0.1.
•••
Drop tolerance threshold
1. thres Drop tolerance threshold.
Assign a new drop tolerance threshold.
•••
Once the preconditioning phase is complete, the matrix can be solved using several acceleration techniques. The following command can be used to change the solver procedure:
Solver acceleration technique
1. iaccel Type of acceleration to use.
Assigns a new value for the acceleration technique for the linear solver, which defaults to 3
(CGSTAB-P). Appropriate values are 0 (CG, for symmetric matrices only), 1 (OrthoMin), 2
(CGS), 3 (CGSTAB-P) or 4 (GMRES). If unsure, don’t use this command.
•••
No matrix scaling
Tells the solver not to use matrix scaling preconditioning.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.5.2
74
Timestep Control
Before we discuss the instructions which are available for controlling the behaviour of
a transient solution, some background information is required. The pre-processor grok
generates an array of target times, which are derived from the following sources:
• Times specified by the user to meet timestep constraints.
• Times specified by the user to meet output requirements.
• Times at which transient boundary condition values change.
This target time array is passed to HydroGeoSphere which uses it to produce timestep
values.
As well, adaptive timestepping, as discussed in Section 2.5.2.1, can be used to adjust the
timestep values based on changes in head, saturation and/or concentration as the solution
progresses.
The following instructions can be used to modify the time-stepping behaviour of a transient
solution:
Initial time
1. tinit Initial time.
Assigns a new value for the initial time, which defaults to zero. This is useful if you are
restarting the simulation and want to index the times used to an earlier run.
•••
Initial timestep
1. val Initial timestep size.
Assigns a new value for the initial timestep, which defaults to 0.01 time units.
•••
Maximum timestep
1. val Maximum timestep size.
Assigns a new value for the maximum timestep size, which defaults to 1025 time units.
•••
Minimum timestep
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
75
1. val Minimum timestep size.
Assigns a new value for the minimum timestep size, which defaults to 1 × 10−10 time units.
If the timestep becomes smaller than this value as a result of the adaptive timestepping
procedure, HydroGeoSphere will stop and issue a diagnostic message.
•••
Target times
1. target time...end Target times.
Listed times are added to the current set of target times.
•••
Generate target times
1. tstart Start time [T].
2. delta Initial time step size [T].
3. tinc Time step multiplier.
4. dtmax Maximum time step size allowed [T].
5. tend End time [T].
New target times are generated from the start time tstart to end time tend by repeatedly
adding the time step delta, which is increased each time by the multiplier tinc until it
reaches a maximum size of dtmax.
•••
Output times
1. output time...end Output time.
Listed times are added to the current set of output times (i.e. times for which you want
detailed output). Note that these values will automatically become part of the target time
array.
•••
Auto save on
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
76
1. asv interval Time interval in seconds for auto-saving restart files.
This command reads a wall clock time interval in seconds with which restart files for
head and concentration will be automatically recorded/updated in prefixo head.asv and
prefixo conc.asv. Last time saved can be found in the prefixo.lst file.
•••
2.5.2.1
Adaptive Timesteps
If required, HydroGeoSphere can modify timestep values as the solution proceeds, based
on the transient behaviour of the system (see Equation 3.102). The following instructions
can be used to activate this feature, and set targets for specific variables (e.g. pressure head,
saturation etc.). These targers are used to modify timestep size as the solution proceeds.
Head control
1. dhead allowed Maximum allowed absolute change in nodal head during any time
step [L].
•••
Water depth control
1. ddepth allowed Maximum allowed absolute change in nodal surface water depth
during any time step [L].
•••
Saturation control
1. dsat allowed Maximum allowed absolute change in nodal saturation during any time
step [L].
•••
Newton iteration control
1. nnri allowed Maximum allowed number of Newton-Raphson iterations during any
time step.
•••
DDF Picard iteration control
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
77
1. npicard allowed Maximum allowed number of density-flow Picard iterations during
any time step.
•••
Concentration control
1. dconc allowed Maximum allowed absolute change in nodal concentration during any
time step.
•••
Concentration control, multi-species
1. dconc allowed(i) Maximum allowed absolute change in nodal concentration for ith
species during any time step. This needs to be repeated the number of species times
(one per each line).
•••
Mass change control
1. dmass change allowed Maximum allowed absolute change in mass during any time
step [L].
•••
Mass error control
1. dmass error allowed Maximum allowed absolute mass error during any time step
[L].
•••
The following controls are used to generate a timestep multiplier according to Equation 3.102.
There are limits to how large or small the multiplier can be, and these are set by default to
be in the range of 0.5 to 2 respectively. If you want to modify these limits you can do so
using the following instructions:
Maximum timestep multiplier
1. val Maximum timestep multiplier value.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
78
Assigns a new value for the maximum timestep multiplier, which defaults to 2.
•••
Minimum timestep multiplier
1. val Minimum timestep multiplier value.
Assigns a new value for the minimum timestep multiplier, which defaults to 0.5. Currently,
HydroGeoSphere ignores this parameter and allows any non-zero minimum, no matter
how small.
•••
2.5.3
Saturated Flow
Pressure head input
Causes all heads which are input to be treated as pressure heads instead of hydraulic heads.
•••
Freshwater pressure head
Causes all heads which are input and output to be treated as freshwater pressure heads
instead of hydraulic heads.
•••
Fluid pressure
Causes all heads which are input and output to be treated as fluid pressures instead of
hydraulic heads.
•••
No fluid mass balance
This instruction suppresses the calculation of fluid mass balance information which is, by
default, computed at each time step.
•••
Flow time weighting
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
79
1. tw Time-weighting factor for the flow solution.
Assigns a new value for the time-weighting factor for the flow solution, which defaults to
1.0. Values must be greater than 0.0 and less than or equal to 1.0.
•••
Flow solver maximum iterations
1. maxfit Maximum number of flow solver iterations.
Assigns a new value for the maximum number of flow solver iterations, which defaults to
2000.
•••
Flow solver convergence criteria
1. restol Flow solver convergence criteria.
Assigns a new value for the flow solver convergence criteria, which defaults to 1 × 10−10 .
Convergence is obtained when this criteria is less than the absolute maximum value of the
residual (error) of the latest flow solution. For the matrix equation:
[A]x = b
where [A] is the coefficient matrix, x the vector of unknowns and b the vector of knowns,
we can calculate the residual r, given a solution for x as:
r = b − [A]x
•••
Flow solver detail
1. isolv info Flow solver detail level.
Assigns a new value for the flow solver detail level, which defaults to 0. This value controls
the level of detail of solver performance information printed to the screen and listing file,
and can have values of 0 (no information) or 1 (full information).
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.5.4
80
Variably-saturated Flow
By default, HydroGeoSphere uses the upstream weighting scheme (weighted harmonic
mean) for relative permeability, with an upstream weighting factor value of 1.0. The default
behaviour can be changed using the following commands:
Upstream weighting factor
1. upwfactor Upstream weighting factor.
Assigns a new value for the upstream weighting factor, which defaults to 1.0. This value
should be in the range from 0.5 (central weighting) to 1.0 (upstream weighting).
•••
Central weighting
Causes HydroGeoSphere to use central weighting (weighted arithmetic mean) instead of
upstream weighting.
•••
Primary variable switching
Causes HydroGeoSphere to use the primary variable substitution technique outlined in
Section 3.13.3. If desired, the default values of tolf and tolb , the upper and lower limits for
variable substitution (see Equation 3.99) can be changed using the following commands:
•••
Upper limit
1. switch t Upper limit of the variable substitution approach, tolf in Equation 3.99.
The default value is 0.99.
•••
Lower limit
1. switch f Lower limit of the variable substitution approach, tolb in Equation 3.99.
The default value is 0.89.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.5.4.1
81
Newton Iteration Parameters
The following parameters can be used to control the Newton-Raphson iteration scheme for
solution of the variably-saturated flow problem as described in Section 3.13.2.
Newton maximum iterations
1. maxnewt Maximum number of Newton iterations.
Assigns a new value for the maximum number of Newton iterations, which defaults to 15. If
this number is exceeded during a time step, the current time step value is reduced by half
and a new solution is attempted.
•••
Newton minimum iterations
1. minnewt Minimum number of Newton iterations.
Assigns a new value for the minimum number of Newton iterations, which defaults to 0.
•••
Jacobian epsilon
1. epsilon Jacobian epsilon.
Assigns a new value for the Jacobian epsilon, which defaults to 1 × 10−4 . The Jacobian
epsilon is the shift in pressure head used to numerically compute the derivatives in the
Jacobian matrix. As a rule of thumb, a value equal to 10−5 times the average pressure head
in the domain is recommended.
•••
Newton absolute convergence criteria
1. delnewt Newton absolute convergence criteria.
Assigns a new value for the Newton absolute convergence criteria, which defaults to 1 × 10−5 .
Convergence of the solution occurs when the maximum absolute nodal change in pressure
head over the domain for one Newton iteration is less than this value.
•••
Newton residual convergence criteria
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
82
1. resnewt Newton residual convergence criteria.
Assigns a new value for the Newton residual convergence criteria, which defaults to 1 × 10−8 .
Convergence of the solution occurs when the maximum absolute nodal residual (see Section 2.5.3) in the domain for one Newton iteration exceeds this value.
•••
Minimum relxation factor for convergence
1. minrelfac convergence Minimum relaxation factor to declare the convergence.
Assigns a new value for the minimum relaxation factor for convergence, which defaults to
0.95. Convergence of the solution occurs only when the relation factor is larger than the
minimum.
•••
Newton maximum update for head
1. NR dhtol Newton maximum update for head.
Assigns a new value for the Newton maximum update for head, which defaults to 1.0. This
is used to calculate the underrelaxation factor ωr in such a way that:
ωr = NR dhtol/ max(dhr )
(2.6)
hr = hr−1 + ωr ∗ dhr
(2.7)
where max(dhr ) is the computed maximum update for head in rth Newton iteration, and
hr is the head flow solution after r iterations. As NR dhtol becomes smaller, the Newton
solution becomes more stable but with possibly more iterations. For highly nonlinear
problems for which Newton linearization easily fails to converge, it is recommended to set
this value smaller.
•••
Newton maximum update for depth
1. NR ddtol Newton maximum update for depth.
Assigns a new value for the Newton maximum update for water depth, which defaults to
1 × 10−2 . The same as NR dhtol above but applies only to water depth.
•••
Newton maximum residual increase
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
83
1. NR resnorm fac Newton maximum residual increase.
Assigns a new value for the Newton maximum residual increase, which defaults to 1 × 1030 .
If the Newton maximum residual increases by more than the value .The same as NR resnorm fac,
the Newton loop is restarted with a smaller time step.
•••
Remove negative coefficients
Forces negative inter-nodal conductances to zero. Negative inter-nodal conductances result
in inter-nodal flow from lower to higher heads and can cause oscillatory behavior during
Newton iterations [Letniowski and Forsyth, 1991].
•••
Nodal flow check tolerance
1. n flow check tol Assigns a new value for the nodal flow check tolerance, which
defaults to 1 × 10−2 .
This checks that the relative local (nodal) fluid mass balance is acceptable for all nodes:
[(Qin − Qout + dM )/Qin ] < n flow check tol
Absolute fluid mass balance can always be satisfied against the global convergence criteria,
if local inflows and outflows, and mass accumulation are very small.
(Qin − Qout + dM ) < global tolerance
and where Qin , Qout , and dM (mass accumulation) are much less than 1.0. This can
deteriorate the transport solution, as the concentration is defined as solute mass per unit
fluid mass.
•••
No nodal flow check
Turns off the nodal flow check feature. In cases where a transport solution is not required,
the nodal flow check is not necessary.
•••
Underrelaxation factor
1. under rel Underrelaxation factor.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
84
Assigns a new value for the underrelaxation factor for the Newton iteration, which defaults
to 1. This value can range from 0 (full underrelaxation) to 1 (no underrelaxation).
•••
Compute underrelaxation factor
Causes the underrelaxation factor ω to be computed according to the following method
described by Cooley [1983]:
ωr+1 =
=
3+s
3+|s|
1
2|s|
if s ≥ −1
if s < −1
(2.8)
where:
s=
=
er+1
er ωr
if r > 1
1
if r = 1
(2.9)
In the equations presented above, r and r + 1 represent the previous and current iteration
level, ωr and ωr+1 represent the underrelaxation factor for the previous and current iteration
levels, and e represents the maximum value of the largest difference between head values
for 2 successive iterations, er = M axI | ψIr − ψIr−1 |.
•••
Compute underrelaxation factor limit
1. dellim Upper limit on the computed underrelaxation factor.
Assigns a new value for the upper limit on the computed underrelaxation factor, which
defaults to 1000. A suggested value is 10 times the system domain thickness.
•••
Minimum relaxation factor allowed
1. min relfac allowed Minimum value allowed for computed underrelaxation factor.
Assigns a new value for the lower limit on the computed underrelaxation factor, which
defaults to 0.001. If not the first timestep, and the computed underrelaxation factor is less
than this value, the current timestep is cut in half and the Newton Raphson iteration loop
is re-started.
•••
Newton information
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
85
Causes HydroGeoSphere to write more detailed information to the listing file about the
performance of the Newton iteration process.
•••
2.5.5
Discrete Fracture Flow
By default, HydroGeoSphere does not simulate discrete fracture flow unless a discrete
fracture flow zone is created using the methods and instructions outlined in Section 2.8.2.
Also by default, HydroGeoSphere uses the common node approach to define the discrete
fracture flow domain. If the dual-node approach is required, you must issue the following
instruction:
Dual nodes for fracture flow
2.5.6
Surface Flow
By default, HydroGeoSphere does not simulate surface flow unless a surface flow zone is
created using the methods and instructions outlined in Section 2.8.2.
Dual nodes for surface flow
Causes HydroGeoSphere to use the dual-node approach to define the discrete surface
flow domain. By default, the common node approach is used.
•••
2.5.7
Transport
Transport time weighting
1. twc Time-weighting factor for the transport solution.
Assigns a new value for the time-weighting factor for the transport solution, which defaults
to 0.5. Values can range from 0.0 (explicit) to 0.5 (central or Crank-Nicholson) or 1.0 (fully
implicit). Fully implicit time-weighting is less prone to exhibit oscillations but more prone
to numerical smearing than central time-weighting.
•••
Peclet number
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
86
1. pectol Peclet number.
Assigns a new value for the Peclet number, which defaults to 1 × 1020 . The Peclet number
does not influence the solution in any way, but is merely used to generate warning messages.
The Peclet number can be computed as:
Pe = v
∆x
D
where v is a flow velocity, ∆x is an element length, in this case in the x-direction, and
D is a dispersion coefficient. It is a measure of the adequacy of mesh fineness, with large
numbers indicating poor spatial discretization.
The large default value suppresses the generation of warning messages.
•••
Output peclet number
This instruction causes HydroGeoSphere to write the Peclet number for each element to
the file prefixo.peclet number, at the first timestep only.
•••
Courant number
1. courtol Courant number.
Assigns a new value for the Courant number, which defaults to 1 × 1020 . The Courant
number does not influence the solution in any way, but is merely used to generate warning
messages. The Courant number can be computed as:
Ce = v
∆t
∆x
where v is a flow velocity, ∆x is an element length, in this case in the x-direction, and ∆t is
the timestep length. It is a measure of the adequacy of timestep size, with large numbers
indicating poor temporal discretization.
•••
Transport solver convergence criteria
1. restolc Transport solver convergence criteria.
Assigns a new value for the transport solver convergence criteria, which defaults to 1 × 10−10 .
Convergence is obtained when this criteria is less than the absolute maximum value of the
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
87
residual (error) of the latest transport solution.
•••
Transport solver detail
1. isolv infoc Transport solver detail level.
Assigns a new value for the transport solver detail level, which defaults to 0. This value
controls the level of detail of solver performance information printed to the screen and listing
file, and can have values of 0 (no information) or 1 (full information).
•••
Transport solver maximum iterations
1. maxtit Maximum number of transport solver iterations.
Assigns a new value for the maximum number of transport solver iterations, which defaults
to 2000.
•••
Upstream weighting of velocities
1. almax,btmax,gammax Upstream weighting factors for the x-, y-, and z-directions
respectively.
Causes upstream-weighting of velocities to be used, as opposed to the default, central
weighting of velocities. Values can range from 0.0 (no upstream-weighting) to 1.0 (full
upstream weighting). Note that these variables do not apply for the control volume case,
where full upstream weighting is always applied when the switch upstrvel is true.
•••
Flux limiter for transport
This instruction causes HydroGeoSphere to use the van Leer flux limiter as described in
Section 3.9.1.
•••
Iteration parameters flux limiter
1. maxiter flim, resmax flim, delmax flim Maximum number of iterations, residual
and absolute convergence criteria respectively for the non-linear flux limiter iteration
procedure.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
88
Assigns new values to the parameters that affect the behaviour of the van Leer flux limiter,
and which default to 15, 1 × 10−5 and 1 × 10−8 respectively.
•••
Overland advective solute exchange only
This instruction only affects transport in coupled surface/subsurface systems, and causes
HydroGeoSphere to neglect dispersive/diffusive exhange between the two domains. This
is intended to be used to gauge the relative importance of advective vs. dispersive exchange
or when comparing HydroGeoSphere to codes that neglect dispersive exchange.
•••
Fracture advective solute exchange only
This instruction only affects transport in coupled fracture/subsurface systems, and causes
HydroGeoSphere to neglect dispersive/diffusive exhange between the two domains. This
is intended to be used to gauge the relative importance of advective vs. dispersive exchange
or when comparing HydroGeoSphere to codes that neglect dispersive exchange.
•••
The following three instructions can be used to define a threshold concentration for flagging
output and optionally stopping a run.
Detection threshold concentration
1. detection threshold conc Detection threshold concentration [M L−3 ]. This instruction sets the value which will be used to control the behaviour of the next two
instructions.
•••
Flag observation nodes if exceed detection threshold concentration
Causes HydroGeoSphere to tag observation well output with the string > detection
threshold if the concentration at the node exceeds detection threshold conc, defined
above.
•••
Stop run if flux output nodes exceed detection threshold concentration
Causes HydroGeoSphere to halt execution if the concentration at any observation well
node exceeds detection threshold conc, defined above.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.5.8
89
Density-dependent Flow and Transport Solution
This option should only be used for fully-saturated flow conditions.
2.5.8.1
Relative concentration as primary variable
The following instruction can be used to enable a density-dependent flow and transport
solution. Note that the single species involved in the transport process is described by
RELATIVE CONCENTRATIONS.
Density-dependent transport
1. rhomax The maximum fluid density (which corresponds to the maximum solute
concentration).
2. toldens The minimum absolute difference in head and concentration for convergence
of the non linear Picard loop.
3. maxitdens The maximum number of iterations for the Picard loop. If the maximum
number of iterations is reached without obtaining convergence, the time step is cut in
half and the loop is started over.
4. linear rho c A logical switch which determines how fluid density is calculated from
relative concentration. If .true., a linear relationship is used, otherwise nonlinear.
5. cmax The maximum relative concentration, corresponding to the fluid with maximum
density. This instruction proved to be especially useful to simulate the lab experiments
by Oswald and Kinzelbach (2004), where the concentration of the fluid with maximum
density is not 1.
Note that you must set up the problem with relative concentrations. Therefore, rhomax is
the fluid density for a relative concentration equal to 1.
As an example:
1200.0
0.02
100
.true.
1.0
!
!
!
!
!
rhomax
tolerance
maximum iterations
linear rho-c relationship
maximum concentration
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
90
In this case, the maximum density is 1200.0 kg/m3 , and the reference density is 1000 kg/m3 ,
the tolerance on absolute head and concentration change to terminate the non-linear loop is
equal to 0.02, and the maximum number of non linear iterations is 100. A linear relationship
between fluid density and concentration is used and the maximum relative concentration
(associated with the maximum fluid density) is 1.0
•••
2.5.8.2
Absolute concentration and temperature as primary variables
The following instruction can be used to enable a density-dependent flow and transport solution. In this case, fluid density is directly calculated from individual species concentrations
2−
and temperature. The allowed species are Na+ , K+ , Ca2+ , Mg2+ , Cl− , SO2−
4 , CO3 and
−
HCO3 and fluid temperature T , which have to be defined within the solute definition block
(Chapter 2.6.3.1). Note that the units must be mg l−1 and o C, respectively.
Use Pitzer model
With this instructions, fluid density is calculated from species concentrations using Pitzer’s
ion interaction model. Note that this method can be very time-consuming because fluid
density is calculated by iterating between density and molality. The default is a faster and
non-iterative empirical approach.
•••
Picard convergence criteria
1. toldens The minimum absolute difference in head, concentration and temperature for
convergence of the non linear Picard loop.
2. maxitdens The maximum number of iterations for the Picard loop. If the maximum
number of iterations is reached without obtaining convergence, the time step is cut in
half and the loop is started over.
Similar to the use of the ”Density-dependent transport” instruction when using relative
concentration, the above instruction assigns new values to the convergence criteria. The
defaults are 1.0 × 10−5 and 100, respectively.
•••
2.5.8.3
Salt mass fraction as primary variable
The following instruction can be used to enable a density-dependent flow and transport
solution. Note that the single species involved in the transport process is described by
RELATIVE CONCENTRATIONS.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
91
Density-dependent transport
1. rhomax The maximum fluid density (which corresponds to the maximum solute
concentration).
2. toldens The minimum absolute difference in head and concentration for convergence
of the non linear Picard loop.
3. maxitdens The maximum number of iterations for the Picard loop. If the maximum
number of iterations is reached without obtaining convergence, the time step is cut in
half and the loop is started over.
4. linear rho c A logical switch which determines how fluid density is calculated from
relative concentration. If .true., a linear relationship is used, otherwise nonlinear.
5. cmax The maximum relative concentration, corresponding to the fluid with maximum
density. This instruction proved to be especially useful to simulate the lab experiments
by Oswald and Kinzelbach (2004), where the concentration of the fluid with maximum
density is not 1.
Note that you must set up the problem with RELATIVE CONCENTRATIONS. Therefore,
rhomax is the fluid density for a relative concentration equal to 1.
•••
As an example:
1200.0
0.02
100
.true.
1.0
rhomax
tolerance
maximum iterations
linear rho-c relationship
maximum concentration
In this case, the maximum density is 1200.0 kg/m3 , and the reference density is 1000 kg/m3 ,
the tolerance on absolute head and concentration change to terminate the non-linear loop is
equal to 0.02, and the maximum number of non linear iterations is 100. A linear relationship
between fluid density and concentration is used and the maximum relative concentration
(associated with the maximum fluid density) is 1.0
2.5.9
Heat transfer
To enable heat transfer, you must define the temperature species in the solute definition
block as described in Chapter 2.6.3.1. Note that the unit for temperature must be o C and
that all heat transfer properties must be given in the SI-units kilogram-meter-second-Celsius.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
92
The thermal properties of the solids are specified in the material property file. The following
instructions can be used to control the heat transfer solution:
Do heat transfer...End
Causes grok to begin reading a group of heat transfer instructions until it encounters an
End instruction.
•••
The available instructions are:
Thermal conductivity of water
1. k l [W L−1 K−1 ] Thermal conductivity of the liquid phase.
Assigns a uniform value to the thermal conductivity of groundwater. If this instructions is
used, the thermal conductivity of water is assumed constant and equal to kl . It is therefore
not calculated from the water temperature, which is the default setting.
•••
Specific heat capacity of water
1. c l [J kg−1 K−1 ] Specific heat capacity of the liquid phase.
Assigns a uniform value to the specific heat capacity of water. If this instructions is used,
the specific heat capacity of water is assumed constant and equal to cl . It is therefore not
calculated from the water temperature, which is the default setting.
•••
Mechanical heat dispersion
Causes mechanical heat dispersion to be simulated. The default is no mechanical heat
dispersion.
•••
The following instruction can be used to define initial temperatures for the problem:
Initial temperature profile
1. temp top [o C] The temperature at the top of the domain.
2. temp grad [K m−1 ] The prevailing geothermal gradient.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
93
Calculates a depth profile of temperature and assigns the values to the initial temperature.
•••
The following instructions can be used to define the heat source boundary condition:
Zero order source
1. npanel Number of panels in the time-variable, zero-order source function. For each
panel, enter the following:
(a) ton val,toff val, (bc val(j),j=1,nspeciesmob) Time on [T], time off [T] and
mass of solute produced per unit volume of porous medium solids per unit time
[M L−3 ].
Nodes in the chosen zones area assigned zero-order source boundary conditions.
A panel is a point in time at which the source term is set to a new value. The first panel
would normally start at time zero. The source term given for the last panel will be maintained
until the end of the simulation. You can assign a static source term for the duration of the
simulation by setting npanel to 1, ton val to 0.0 and toff val to a large number.
Note that if nspeciesmob is greater than 1, additional values of bc val should be included.
•••
Exponential zero order source
1. heat q zero Heat production at t=0.
2. heat constant Constant in the exponential function.
Nodes in the chosen zones area assigned an exponentially decreasing zero-order heat source
boundary conditions.
•••
2.5.10
Inactive Elements
These instructions can be used to discretize irregular boundaries with block elements by
deactivating portions of the grid, where all elements become inactive for both the flow and
transport simulation. Elemental assembly is skipped and all nodes that only belong to
the inactive element, and are not at all connected to active elements, are assigned default
values of head and concentration equal to -9999.0. This option is similar to what is done in
MODFLOW to specify inactive cells.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
94
Make element inactive
All chosen elements will become inactive.
•••
Make zone inactive
All elements in the current set of chosen zones will become inactive.
•••
For a 2-D slice made of 4-node rectangular elements, the following instruction can be used
to make elements inactive:
Make element inactive using shapefile
1. arcview prefix Prefix of the ARCVIEW shape file.
2. unproject file If .true, this logical switch causes grok to read grid unprojection data
as described in Section 2.3.10 and to apply it to the data read from the ARCVIEW
shapefile.
3. project file If .true, this logical switch causes grok to read grid projection data as
described in Section 2.3.10 and to apply it to the data read from the ARCVIEW
shapefile.
4. outside If .true, elements located outside the area defined in the ARCVIEW shapefile
will become inactive. If .false, elements located inside the area will become inactive.
•••
Write inactive elements to file
1. inactive file Name of the file to which the inactive element information will be
written.
Setting up inactive elements with the Make element inactive using shapefile instruction can
be time consuming in grok and this step does not need to be repeated as long as the grid
structure remains the same. This instruction is intended to be used in conjunction with the
following instruction.
•••
Read inactive elements from file
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
95
1. inactive file Name of the file from which the inactive element information will be
read.
The results of successive calls to this instruction are cumulative, if different sets of inactive
elements are read.
•••
2.6
2.6.1
Initial Conditions
Subsurface Flow
Initial heads should be given for both steady-state and transient problems since the iterative
solver uses them as a starting point in achieving a solution. These heads can be assigned or
read from a file.
Initial head
1. hval Initial head [L].
Chosen nodes in the currently active media (see Section 2.8.1) are assigned an initial head
value.
•••
Initial head surface elevation
All nodes in the currently active media (see Section 2.8.1) are assigned an initial head value
equal to the surface elevation at the same xy location.
•••
Initial head from depth-saturation table
Scope: .grok
1.
2.
depth(1), saturation(1) First entry.
depth(2), saturation(2) Second entry.
..
. etc.
n.
depth(n), saturation(n) nth entry.
n+1. end The string ’end’
Paired values of depth z and saturation S should be entered from smallest to largest depth.
The last line of the table must be an end card, and the number of entries in the list are
counted automatically to determine the table size.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
96
Chosen nodes in the currently active media (see Section 2.8.1) are first assigned a saturation
which is interpolated from the depth-saturation table. The nodes depth is calculated relative
to the node on ground surface at the same xy location. The computed saturation is then
converted to an initial head value using the constitutive relationships (see Section 2.8.3)
for the zone number of the element containing the chosen node. In cases where a node is
shared by two elements with different zone numbers, then the zone number of the lowest
numbered element is used.
•••
Initial head from file
1. fname Name of the file which contains the initial head data.
All nodes in the currently active media (see Section 2.8.1) are assigned an initial head value
which is read from a free-format ascii file. The heads must be listed in the file in order from
node 1 to node NN. Each line can contain one or more values.
•••
Initial head from output file
1. fname Name of the file which contains the initial head data.
All nodes in the currently active media (see Section 2.8.1) are assigned an initial head value
which is read from a previously generated output file with a name of the style prefixo.head.suffix, where suffix is a 3-digit number identifying the output file. Since it is applied to
the current media type you can use, for example, prefixo.head.003 for the porous media
and prefixo.head overland.003 for the surface domain. This can be useful, for example,
when a run crashes (since you don’t have to start simulation from scratch) or if you want to
use separate solutions of groundwater and surface flow to start a coupled surface-subsurface
simulation.
•••
Initial head subsurface from surface output file
1. fname Name of the file which contains the initial surface domain head data.
All nodes in the currently active media (see Section 2.8.1) are assigned an initial head value
equal to the surface domain head at the same xy location. The surface heads are read from
a previously generated output file with a name of the style prefixo.head overland.suffix,
where suffix is a 3-digit number identifying the output file.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
97
Function x initial head
1. x1,h1 The x-coordinate and initial head value for the first point.
2. x2,h2 The x-coordinate and initial head value for the second point.
Using linear interpolation, chosen nodes in the currently active media (see Section 2.8.1)
are assigned initial head values, based on their x-coordinate and given heads at two points.
•••
Function z initial head
As above but as a function of z.
•••
Initial head raster
1. rasterfile Name of the raster file containing the initial head data. This is a string
variable. The file should be formatted as outlined in Section H.
All nodes in the currently active media (see Section 2.8.1) are assigned an initial head value
equal to the raster value at the same xy location.
•••
Map initial head from raster
1. rasterfile Name of the raster file containing the initial head values. This is a string
variable. The file should be formatted as outlined in Section H.
For each node in each element in the set of currently chosen zones, a value for the initial
head will be interpolated from the raster file data.
This instruction currently only generates initial head values for the porous medium.
•••
Initial head depth to water table
1. depth2wtable Depth of watertable below ground surface for initial condition.
For each node in each element in the set of currently chosen zones, a value for the initial
head will be calculated based on the assigned depth to watertable.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
98
•••
Function surface elevation initial head
1. z0, zscale reference elevation and scaling factor.
Initial head is assigned as a function of the ground surface elevation (zsurf ) following
h = z0 + (zsurf − z0 ) × zscale.
•••
Restart file for heads
1. flow restart file name Name of the file which contains the results of the previous
flow solution.
All nodes are assigned an initial head value which is read from the file. This allows heads
from a previous run to be used as initial conditions for a subsequent simulation, for example,
if one wants to carry on the simulation further in time without restarting from time zero.
Since, by default, head values for the last time step are output in BINARY format to a
file with the suffix prefixo.hen, these are always available for restarting a flow run. It is
recommended that this file be renamed in order to avoid accidentally overwriting it and
changing the restart conditions for a later run.
•••
Initial head from xyh file
1. maximum distance
2. ascii text file name Name of the file which contains the coordinates x and y and
head values.
For each of chosen nodes, an initial head value is assigned from the cloest point from the
given file when the distance between the node and the closest point given is smaller than
the given maximum distance. The ascii text file contains the number of data points (first
line) and three floating point values per each line for x- and y-coordinates, and head values
from the second line.
•••
Initial head from porous medium
Initial head for any medium is set to be the same as initial head specified in porous medium.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
99
•••
Initial head from regional output file
1. fname Name of the output file from the regional simulation. Typically prefix regionalo.head pm.000x for the porous medium domain or prefix regionalo.head olf.000x for
the surface domain.
This command needs to come after a regional model is defined using regional model
command.
•••
Regional model
1. prefix regional prefix for the regional simulation model. This command requires to
read prefix regionalo.coordinates pm and prefix regionalo.elements pm files. In the
case that the regional model includes the overland flow domain, it will also read the
corresponding overland coordinates and elements files.
•••
Map zone numbers from regional model
This command can be used to map porous medium or overland domain zone numbers from
the regional model which is defined by regional model command.
•••
Elevation from regional model gb file
1. regional gb file Name of a grid builder nprops file for the regional model. The
elevation data for the regional model will be mapped for the local model for each layer.
•••
Compute velocity field from head
1. v head file Name of the file which contains the results of the previous flow solution.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
100
A flow solution is not performed. Instead, the velocity field is computed from the previous
flow solution, a steady-state flow field is assumed, and the transport solution proceeds.
The heads are read from a previously generated output file with a name of the style prefixo.head.suffix, where suffix is a 3-digit number identifying the output file.
•••
Compute velocity field from head and conc.
1. v head file Name of the file which contains the results of the previous flow solution.
2. v conc file Name of the file which contains the results of the previous transport
solution.
3. vrhomax, vcmax Assumed maximum density and concentration.
A flow solution is not performed. Instead, the velocity field is computed from the previous
flow solution and transport solution, a steady-state flow field is assumed, and the densitydependent transport solution proceeds.
The heads are read from a previously generated output file with a name of the style
prefixo.head.suffix, where suffix is a 3-digit number identifying the output file.
The concentrations are read from a previously generated output file with a name of the
style prefixo.concentration.species.suffix, where suffix is a 3-digit number identifying
the output file.
•••
2.6.2
Surface Flow
Initial water depth
1. val Initial water depth.
Chosen surface flow nodes are assigned an initial depth value.
•••
Initial water depth from gb file
1. fname Name of the GRID BUILDER ascii-formatted nodal properties file gb prefix.ascii nprop.description which contains the initial water depth data.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
101
This instruction assumes that the surface flow domain covers the entire top of the 3-D
domain, and contains NN2D (number of nodes in the 2-D slice) nodes. All surface flow
media nodes (see Section 2.8.1) are assigned an initial water depth value which is read from
file fname. This is an ascii formatted file, with the water depth values listed in order from
node 1 to NN2D.
•••
2.6.3
Transport
It should be noted that the instructions given here affect the behaviour of one or more
solutes, which should already have been defined according to the instructions given in
Section 2.6.3.1.
Currently the initial condition (for both mobile and immobile zones if dual porosity) defaults
to 0.0 unless one of the following instructions are included.
Initial concentration
1. bc val(i), i=1,nspeciesmob Initial concentration [M L−3 ] for each solute.
Chosen nodes in the currently active media (see Section 2.8.1) are assigned an initial concentration value.
•••
Initial concentration from output file
1. maximum distance
2. ascii text file name Name of the file which contains the coordinates x and y and
concentration values.
All nodes in the currently active media (see Section 2.8.1) are assigned an initial concentration
value which is read from a previously generated output file with a name of the style prefixo.concentration.suffix, where suffix is a 3-digit number identifying the output file. Since it
is applied to the current media type you can use, for example, prefixo.concentration.003
for the porous media and prefixo.concentration overland.003 for the surface domain.
This can be useful, for example, when a run crashes (since you don’t have to start simulation
from scratch).
•••
Initial concentration from xyc file
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
102
1. fname Name of the file which contains the initial concentration data.
For each of chosen nodes, an initial concentration value is assigned from the cloest point from
the given file when the distance between the node and the closest point given is smaller than
the given maximum distance. The ascii text file contains the number of data points (first
line) and three floating point values per each line for x- and y-coordinates, and concentration
values from the second line.
•••
z function initial concentration
1. z1, conc1 first elevatin and concentration data pair
2. z2, conc2 second elevatin and concentration data pair
For all the chosen nodes, initial concentration is assigned as a linear function of the elevation
which satisfies the two pairs of specified elevation and concentration data.
•••
Specified concentration from initial concentration
For all the chosen nodes, a specified concentration boundary condition is applied with the
concentration values from the initial concentration values.
•••
Initial immobile concentration from output file
1. fname Name of the file which contains the initial immobile zone concentration data.
As above for the instruction Initial concentration from output file except immobile zone initial
concentrations are assigned. This insures that the mobile and immobile zones will be in
equilibrium at the start of a simulation if the same file concentration output file is used to
define the initial conditions.
•••
Initial concentration from file
1. fname Name of the file which contains the initial concentration data.
All nodes in the currently active media (see Section 2.8.1) are assigned an initial concentration value which is read from a free-format ascii file. The concentrations must be
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
103
listed in the file in order from node 1 to node NN. Each line can contain one or more values.
•••
Initial concentration for zones
1. izone, czone...end Zone number, initial concentration.
This instruction takes as input a list of zone numbers and initial concentrations. Nodes that
are in the currently active media (see Section 2.8.1), and that are also in elements whose
zone number is in the list will be assigned the listed initial concentration value. All other
nodes will be assigned an initial concentration of zero. If a node straddles the boundary
between one or more zones, an average initial concentration value is assigned.
•••
Initial immobile zone concentration
1. val Initial concentration [M L−3 ].
All nodes are assigned an initial concentration value for the first solute only.
•••
Initial immobile zone concentration from file
1. fname Name of the file which contains the initial immobile zone concentration data.
All nodes are assigned an initial concentration value, for the first solute only, which is read
from a free-format ascii file. The concentrations must be listed in the file in order from node
1 to node NN. Each line can contain one or more values.
•••
Restart file for concentrations
1. transport restart file name Name of the file which contains the results of the
previous transport solution.
All nodes are assigned an initial concentration value which is read from the file. This
allows concentrations from a previous run to be used as initial conditions for a subsequent
simulation, for example, if one wants to carry on the simulation further in time without
restarting from time zero.
Since, by default, concentration values for the last time step are output in BINARY format
to a file with the suffix prefixo.cen, these are always available for restarting a transport
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
104
run. It is recommended that this file be renamed in order to avoid accidentally overwriting
it and changing the restart conditions for a later run.
•••
2.6.3.1
Solute Definition
These instructions can be used to add a new solute (i.e. species) to the system. HydroGeoSphere is able to handle more than one solute per simulation, and straight and branching
decay chains are also supported. An example of a straight decay chain is the following
system:
Uranium234 → Thorium230 → Radium226
which indicates that the decay of the radioactive isotope Uranium234 produces the daughter
product Thorium230 , which in turn decays to form Radium226 . For an example of a straight
decay chain see Section 4.5.1. Branching decay chains can have a single isotope which decays
into one or more daughter products, or daughter products which have one or more parents.
Note that a solute can have different values for the decay constant and distribution coefficient
(retardation factor for fractured media) in porous, dual or fractured media or from zone to
zone in a single medium.
Solute
Causes grok to begin reading a group of solute definition instructions until it encounters an
End instruction.
•••
The available instructions are:
Name
1. spname Solute name.
Changes the solute name, which defaults to Species n, where n is the current solute number.
•••
Free-solution diffusion coefficient
1. diffrac Free-solution diffusion coefficient [L2 T−1 ], Df ree in Equation 2.97.
Assigns a new value for the free-solution diffusion coefficient, which defaults to 0.0 (zero).
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
105
•••
Parents
1. npa Number of parent species for the current species. If the current species has one
or more parents, enter the following npa times (i.e. once for each parent):
(a) kparen, aparen Parent species number and the mass fraction.
Assigns a value for the number of parent species, which defaults to 0. The mass fraction is
a number between 0 and 1 which defines how much of the parent species transforms into
the daughter species (i.e. the current species).
•••
The following parameters affect porous media solute properties:
Decay constant
1. clambda First-order decay constant [T−1 ], λ in Equation 2.95.
Assigns a uniform value for the solute first-order decay constant for all porous media zones
in the domain. The default value is 0.0 (no decay).
•••
Zoned decay constant
1. clambda(i,j),j=1,nzones prop First-order decay constant [T−1 ] for species i for
each porous media zone j, λ in Equation 2.95.
Assigns a unique value for the solute first-order decay constant to each porous media zone
in the domain. The default value is 0.0 (no decay).
•••
Distribution coefficient
1. dkd Distribution coefficient, K 0 in Equation 2.96.
Assigns a uniform value for the solute distribution coefficient for all porous media zones in
the domain. The default value is 0.0 (no attenuation).
•••
Zoned distribution coefficient
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
106
1. dkd(i,j),j=1,nzones prop Distribution coefficient for species i for each porous media
zone j, K 0 in Equation 2.96.
Assigns a unique value for the distribution coefficient to each porous media zone in the
domain. The default value is 0.0 (no attenuation).
•••
Dual decay constant
1. clambda First-order decay constant [T−1 ], λd in Equation 2.103.
Assigns a uniform value for the solute first-order decay constant for all dual continuua zones
in the domain. The default value is 0.0 (no decay).
•••
Zoned dual decay constant
1. clambda(i,j),j=1,nzones prop First-order decay constant [T−1 ] for species i for
each dual continuua zone j, λd in Equation 2.103.
Assigns a unique value for the solute first-order decay constant to each zone in the domain.
The default value is 0.0 (no decay).
•••
Dual distribution coefficient
1. dkd Distribution coefficient, Kd0 in Equation 2.104.
Assigns a uniform value for the solute distribution coefficient for all dual continuua zones in
the domain. The default value is 0.0 (no attenuation).
•••
Zoned dual distribution coefficient
1. dkd(i,j),j=1,nzones prop Distribution coefficient for species i for each dual continuua zone j, Kd0 in Equation 2.104.
Assigns a unique value for the distribution coefficient to each dual continuua zone in the
domain. The default value is 0.0 (no attenuation).
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
107
The following parameters affect fractured media solute properties:
Fracture Decay constant
1. clambda f First-order decay constant [T−1 ], λf in Equation 2.99.
Assigns a uniform value for the solute first-order decay constant for all discrete fracture
zones in the domain. The default value is 0.0 (no decay).
•••
Zoned fracture decay constant
1. clambda f(i,j),j=1,nzones prop First-order decay constant [T−1 ] for species i for
each discrete fracture zone j, λf in Equation 2.99.
Assigns a unique value for the solute first-order decay constant to each discrete fracture
zone in the domain. The default value is 0.0 (no decay).
•••
Fracture retardation factor
1. rfrac Fracture retardation factor, Rf in Equation 2.100.
Assigns a uniform value for the fracture retardation factor for all discrete fracture zones in
the domain. The default value is 1.0 (no attenuation).
•••
Zoned fracture retardation factor
1. rfrac(i,j),j=1,nzones prop retardation factor for species i for each discrete fracture
zone j, Rf in Equation 2.100.
Assigns a unique value for the fracture retardation factor to each discrete fracture zone in
the domain. The default value is 1.0 (no attenuation).
•••
The following parameters affect overland media solute properties:
Overland Decay constant
1. clambda o First-order decay constant [T−1 ], λf in Equation 2.110.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
108
Assigns a uniform value for the solute first-order decay constant for all overland flow zones
in the domain. The default value is 0.0 (no decay).
•••
Zoned overland decay constant
1. clambda o(i,j),j=1,nzones prop First-order decay constant [T−1 ] for species i for
each overland flow zone j, λf in Equation 2.99.
Assigns a unique value for the solute first-order decay constant to each overland flow zone
in the domain. The default value is 0.0 (no decay).
•••
Overland retardation factor
1. rolf Overland flow retardation factor, Ro in Equation 2.100.
Assigns a uniform value for the overland retardation factor for all overland zones in the
domain. The default value is 1.0 (no attenuation).
•••
Zoned overland retardation factor
1. rfrac(i,j),j=1,nzones prop retardation factor for species i for each overland flow
zone j, Ro (similar to Rf in Equation 2.100).
Assigns a unique value for the overland flow retardation factor to each overland zone in the
domain. The default value is 1.0 (no attenuation).
•••
The following instructions can be used to identify certain species. This is especially important
to calculate fluid density and viscosity (for variable-density transport) from individual species
concentrations and temperature. Note that fluid temperature is treated as a mobile species.
Sodium species
The presently defined species is identified as sodium, Na+ .
•••
The following instructions can be used likewise to identify other species:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
109
Potassium species
Calcium species
Magnesium species
Chloride species
Sulphate species
Hydrogencarbonate species
Carbonate species
Salt mass fraction
Temperature species
By default, no species impacts fluid density or viscosity. This default can be changed with
the following instruction:
Affects fluid properties
With this instruction, the presently defined species has an impact on both fluid density and
viscosity. This instruction can only be applied to the following species: Na+ , K+ , Ca2+ ,
2−
−
Mg2+ , Cl− , SO2−
4 , CO3 and HCO3 , fluid temperature T and salt mass fraction smf . Note
that, for the moment, if salt mass fraction affects fluid properties, no other species can
impact fluid properties.
•••
Note that instructions like decay constant and zoned decay constant are mutually exclusive
for a given solute, and should not appear in the same Solute . . . End solute block. This also
applies to distribution coefficient definitions for all types of media. You can however, define
a solute with decay or attenuation properties which are uniform throughout the domain
while a second solute has a zoned behaviour.
Since a new species is created each time the instruction solute is used, any instructions (e.g.
make fractures, specified concentration, specified third-type concentration etc. which depend
on it should be placed after it in the prefix.grok file.
The following simple example shows how to define a single, conservative, non-decaying
solute called ’Species 1’ with a free-solution diffusion coefficient of (0.0) zero:
Solute
End solute
An example of a more complex system with two solutes and 7 material zones is shown in
Figure 2.7 for the first solute, called DCB, which only decays in zone 1, and has distribution
coefficients which vary from zone to zone. Figure 2.8 shows how to define the second solute,
called BAM, which is a daughter product of DCB, and does not decay. This solute has the
same zoned distribution coefficients as the first solute.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
solute
name
DCB
free-solution diffusion coefficient
3.689e-5
! free solution diffusion coefficient (m2/d)
zoned decay constant
0.693
! 1 first-order decay constant (1/d)
0.0
! 2
0.0
! 3
0.0
! 4
0.0
! 5
0.0
! 6
0.0
! 7
zoned distribution coefficient
0.0005
! 1
distribution coefficient (kg/m3)
0.0005
! 2
0.0005
! 3
0.0013
! 4
0.005
! 5
0.014
! 6
0.020
! 7
end solute
Figure 2.7: Definition of a Parent Solute With Zoned Properties.
110
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
solute
name
BAM
free-solution diffusion coefficient
3.7295e-5
! free solution diffusion coefficient (m2/d)
parents
1
! parent #
!==========
1
! i.e. DCB
! mass ratio
=============
1.0
decay constant
0.0
! first-order decay constant (1/d)
zoned distribution coefficient
0.0005
! 1
distribution coefficient (kg/m3)
0.0005
! 2
0.0005
! 3
0.0013
! 4
0.005
! 5
0.014
! 6
0.020
! 7
end solute
Figure 2.8: Definition of a Daughter Solute With Zoned Properties.
111
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.6.3.2
112
Travel Time Probability
Find zero age zones
HydroGeoSphere will automatically find the inlet (or outlet for the backward problem)
nodes and assign the proper initial condition (or boundary condition for the moment equations). This option is valid for the case of age/life expectancy computations at aquifer scale,
in which case each node belonging to the inlet/outlet zone is to be assigned a zero age/life
expectancy condition.
•••
Zero travel time
Assigns a zero travel time condition for the chosen nodes.
•••
2.6.3.3
Heat Transfer
To enable heat transfer, you must define the temperature species in the solute definition
block as described in Chapter 2.6.3.1. Note that the unit for temperature must be o C and
that all heat transfer properties must be given in the SI-units kilogram-meter-second-Celsius.
The thermal properties of the solids are specified in the material property file. The following
instructions can be used to control the heat transfer solution:
Do heat transfer...End
Causes grok to begin reading a group of heat transfer instructions until it encounters an
End instruction.
•••
The available instructions are:
Thermal conductivity of water
1. k l [W L−1 K−1 ] Thermal conductivity of the liquid phase.
Assigns a uniform value to the thermal conductivity of groundwater. If this instructions is
used, the thermal conductivity of water is assumed constant and equal to kl . It is therefore
not calculated from the water temperature, which is the default setting.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
113
Specific heat capacity of water
1. c l [J kg−1 K−1 ] Specific heat capacity of the liquid phase.
Assigns a uniform value to the specific heat capacity of water. If this instructions is used,
the specific heat capacity of water is assumed constant and equal to cl . It is therefore not
calculated from the water temperature, which is the default setting.
•••
Mechanical heat dispersion
Causes mechanical heat dispersion to be simulated. The default is no mechanical heat
dispersion.
•••
The following instruction can be used to define initial temperatures for the problem:
Initial temperature profile
1. temp top [o C] The temperature at the top of the domain.
2. temp grad [K m−1 ] The prevailing geothermal gradient.
Calculates a depth profile of temperature and assigns the values to the initial temperature.
•••
The following instructions can be used to define the heat source boundary condition:
Zero order source
1. npanel Number of panels in the time-variable, zero-order source function. For each
panel, enter the following:
(a) ton val,toff val, (bc val(j),j=1,nspeciesmob) Time on [T], time off [T] and
mass of solute produced per unit volume of porous medium solids per unit time
[M L−3 ].
Nodes in the chosen zones area assigned zero-order source boundary conditions.
A panel is a point in time at which the source term is set to a new value. The first panel
would normally start at time zero. The source term given for the last panel will be maintained
until the end of the simulation. You can assign a static source term for the duration of the
simulation by setting npanel to 1, ton val to 0.0 and toff val to a large number.
Note that if nspeciesmob is greater than 1, additional values of bc val should be included.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
114
•••
Exponential zero order source
1. heat q zero Heat production at t=0.
2. heat constant Constant in the exponential function.
Nodes in the chosen zones area assigned an exponentially decreasing zero-order heat source
boundary conditions.
•••
2.7
Boundary Conditions
2.7.1
General
The boundary condition input routines have been completely rewritten in this version of
HydroGeoSphere. The old routines were developed over the years by many different
developers and for a host of reasons. There was a lack of continuity between the routines
that has made it increasingly difficult to update and maintain HydroGeoSphere. With
this in mind, a more well defined data structure has been developed for defining boundary
conditions and, where possible, the functionality of the old routines has been incorporated.
For the end user, this means having to learn a new approach to defining boundary conditions,
but one that we hope will be more logical and therefore easier to understand and apply.
In it’s simplest form, a boundary condition is defined by a value that is associated with
a node, for example, a specified head. In some cases, such as a well that has a variable
pumping rate, the value may change temporally. If the well were turned off abruptly then
started up again at a later time, the value would not be applied continuously. Some inputs
are not defined by a single value, but rather by a 2 or 3-dimensional field. For example,
rainfall may be given in the form of 2-D raster data defined in a certain region. Other inputs
might be in the form of tables of values at defined locations, which is often the case when
we incorporate information from another model. As you can see, we need a combination of
data structure and input format that are general, yet flexible.
All flow boundary conditions require inputs for the bc type, node and face set, and the
time-varying inputs described in Sections 2.7.3, 2.7.4, and 2.7.5. The constraints and tecplot
opitions are optional values. A general boundary condition layout is shown as the following
instruction:
boundary condition
type
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
115
{bc_type}
node set/face set/segment set
{bc_set_name}
time value table/time raster table/time file table
{bc_time(i), bc_file(i)...end}
or
{bc_time(i), bc_raster(i)...end}
or
{bc_time(i), bc_file(i)...end}
constraints/tecplot options
!optional not required
end
Boundary condition...End
grok reads instructions that define a new boundary condition until it encounters an End
instruction.
•••
2.7.2
Set Creation
The generic boundary condition format requires that either a node set, face set, or segment
set be created. Once you have selected nodes you can create the appropriate sets by issuing
the following commands:
Create node set
Creates a node set from the selected nodes.
•••
Create face set
Creates a face set from the selected nodes.
•••
Create segment set
Creates a segment set from the selected nodes.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
116
Additionally if you already have selected faces you can use:
Create face set from chosen faces
The selected faces become a face set that can be used with boundary condition assignments.
•••
2.7.3
Type
To define what type of boundary condition (e.g. head, flux etc.) is to be applied use:
Type
1. bc type The type of boundary condition to be applied.
The allowable flow boundary condition types are described below in detail.
•••
2.7.3.1
Specified Head
This is also known as a first-type, Dirichlet, or constant head boundary condition. It is a
nodal property so you should first define the subset of nodes for which you want to apply
the condition and write them to a nodal data set.
The following instructions can be used as input to the Type instruction inside the Boundary
condition...End instruction group to assign various specified head boundary conditions:
Head
Sets the input type to be a general specified head boundary condition.
•••
For example:
boundary condition
type
head
node set
inflow
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
117
time value table
0.0
100.0
end
end ! new specified head
would define a specified head of 100.0 from time zero for the duration of the simulation for
all of the nodes contained in the node set inflow.
These heads can be interpolated or turned on and off as discussed in Section 2.7.
Head equals elevation
Sets the input type to be a special form of the specified head boundary condition where
head is set equal to the elevation of the node. This is normally the z-coordinate, unless the
instruction y vertical has been issued, in which case the y-coordinate is used instead.
•••
For example:
boundary condition
type
head equals elevation
node set
inflow
end ! new specified head
This example shows that a time-value table is not required, since heads are derived from
the nodal elevation. However, if you wish to turn the boundary condition on or off, then
this can be accomplished by including a time value table instruction:
boundary condition
type
head equals elevation
node set
inflow
time value table
0.0
1.0
10.0
-99999.
end
end ! new specified head
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
118
The value 1.0 at time zero is ignored, but the NODATA value -99999 at time 10.0 causes
the boundary conditon to be turned off and the nodes become unconstrained.
Head equals initial
Sets the input type to be a special form of the specified head boundary condition where
head is set equal to the initial head at the node.
•••
For example:
boundary condition
type
head equals initial
node set
inflow
end ! new specified head
This condition can be turned on and off as discussed above for Head equals elevation.
Each time you issue a Boundary condition...End instruction, a new boundary condition is
formed with a unique ID number. HydroGeoSphere processes the boundary conditions
in order and later ones may take precedence over later ones. The position in the grok file
determines the order.
If the node was assigned a specified head or fluid flux value by a previous instruction then
it might be overwritten by later head boundary conditions, depending on whether or not
both nodes are active at a given time.
Note that the definition of a seepage face (see Section 2.7.3.3) may lead to the formation of
a specified head boundary condition at the seepage nodes.
2.7.3.2
Specified Flux
This is also known as a second-type, Neumann, specified or constant flux boundary condition.
It is an areal property and so you should first choose the subset of faces for which you want
to apply the condition. These faces should normally be part of the outer boundary of the
grid.
The following instructions can be used as input to the Type instruction inside the Boundary
condition...End instruction group to assign various specified flux boundary conditions:
Flux
Sets the input type to be a general specified flux boundary condition and converts fluxes to
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
119
nodal volumetric fluxes [L3 T−1 ] by multiplying by the contributing area of the chosen face.
•••
For example:
boundary condition
type
flux
face set
top
time raster table
0.0
recharge.asc
end
end ! new specified head
would define a specified flux that is mapped from the raster file recharge.asc and is applied
from time zero for the duration of the simulation for all of the nodes contained in the face
set top.
Rain
Sets the input type to be a general specified flux boundary condition and converts fluxes to
nodal volumetric fluxes [L3 T−1 ] by multiplying by the contributing area of the chosen face
when projected onto the xy plane.
•••
Flux nodal
Sets the input type to be a general specified flux boundary condition and treats the fluxes
as nodal volumetric fluxes [L3 T−1 ] which are applied directly to nodes in the given node set.
•••
For example:
boundary condition
type
flux nodal
node set
top
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
120
time file table
0.0
nflux.txt
end
nodal flux reduction by pressure head
0.01
0.1
end ! new specified head
would assign a specified nodal flux that is read from the input file nflux.txt and is applied
from time zero for the duration of the simulation for all of the nodes contained in the node
set top. Note that the number of entries in the file must be the same as the number of
nodes in the set.
These fluxes can be interpolated or turned on and off as discussed in Section 2.7.
In cases where flux boundary inputs overlap, fluid fluxes will be accumulated.
Note that the definition of wells or tile drains (see Section 2.8.2.4) in the problem may create
a non-zero specified flux boundary condition.
Nodal flux reduction by pressure head
The specified nodal flux can be optionally reduced as a function of the nodal pressure head
to avoid pumping from the dry materials. In the above example, if the pressure head (h) is
below 0.01 (h1 ), then the flux is reduced to 0; if the pressure head is between 0.01 (h1 ) and
0.1 (h2 ), then the applied flux increases from 0 to the value specified α = ((h − h1 )/(h2 − h1 ))
and Q = α2(1−α) if Q < 0; and if the pressure head is above 0.1, then the flux is not reduced.
•••
2.7.3.3
Seepage
A seepage boundary condition can be applied to any node, but they are usually restricted to
those on the surface of the domain. If the hydraulic head at a seepage node rises above its
elevation, it becomes a specified head node, and the pressure head is set to zero and water
is allowed to flow out. If, subsequently, the hydraulic head drops below the node elevation,
then it reverts to an unconstrained state.
The following instructions can be used as input to the Type instruction inside the Boundary
condition...End instruction group to assign seepage boundary conditions:
Seepage
Sets the input type to be a seepage boundary condition.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
121
For example:
boundary condition
type
seepage
node set
outflow
end ! new specified head
This example shows that a time-value table is not mandatory, since a pressure head of zero
is applied if the nodal head is above the nodal elevation. However, if you wish to turn the
seepage boundary condition on or off, then this can be accomplished by including a time
value table instruction:
boundary condition
type
seepage
node set
outflow
time value table
0.0
1.0
10.0
-99999.
end
end ! new specified head
The value 1.0 at time zero is ignored, but the NODATA value -99999 at time 10.0 causes
the boundary conditon to be turned off and the nodes become unconstrained.
The overall rate of fluid outflow for all seepage face nodes is given in the mass balance
output sections of the prefixo.lst file.
Details of the seepage node calculations, including which nodes are currently acting as
seepage nodes and the fluid flux exiting the domain at each active seepage node can be
written to the .lst file by using the run-time debug utility instruction Write seepage face
output to .lst file described in Section C.
Seepage Node
The seepage node boundary condition is the same as the seepage boundary condition but is
used for saturated flow.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
122
•••
2.7.3.4
Fluid Transfer
This is also known as a third-type, or Cauchy boundary condition and consists of a head
value at a distance and a hydraulic conductivity representing the intermediate material. The
direction of fluid flow, either in, or out, of the boundary condition, is determined hydraulic
head and the reference head at some distance. The flux rate is determined by the gradient
and hydraulic conductivity. This boundary condition may be assigned to the faces at the
edge (side) of a model to represent the regional influence on the model domain. For example:
boundary condition
type
fluid transfer
face set
outflow
time value table
0 100
end
fluid transfer coefficients
1e-5 ! hydraulic conductivity
1e3 ! distance
end
would assign a fluid transfer with a head value of 100 m at a distance of 1000 m and a
hydraulic conductivity of 10−5 m/s for the material external to the boundary condition.
2.7.3.5
Free Drainage
Assigns a free drainage boundary condition, as described in Section 3.7.1 to nodes on all
faces in the specified set. These faces should be on the surface of the domain.
The following instructions can be used as input to the Type instruction inside the Boundary
condition...End instruction group to assign free drainage boundary conditions:
Free drainage
Sets the input type to be a free drainage boundary condition.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
123
•••
For example:
boundary condition
type
free drainage
face set
outflow
end
This example shows that a time-value table is not mandatory. However, if you wish to turn
the free drainage boundary condition on or off, then this can be accomplished by including
a time value table instruction:
boundary condition
type
free drainage
face set
outflow
time value table
0.0
1.0
10.0
-99999.
end
end
The value 1.0 at time zero is ignored, but the NODATA value -99999 at time 10.0 causes
the boundary condition to be turned off and the nodes become unconstrained.
2.7.3.6
Potential Evapotranspiration
This is a special form of the second-type, Neumann, specified or constant flux boundary
condition which is used in conjunction with evapotranspiration properties which can be
defined as described in Section 2.8.5. It is an areal property and so you should first choose
the subset of faces for which you want to apply the condition. These faces should be part of
the top boundary of the grid, and in this case the top boundary must be coincident with
the 2-D slice which was used to define the 3-D mesh. This means that you cannot use
the boundary condition if the Y-vertical instruction has been used. This restriction arises
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
124
because of grid numbering assumptions which are made when applying evapotranspiration
as a function of depth. Note also that if ET domains are not defined and this boundary
condition is applied, then grok will stop and issue a warning message.
The following instructions can be used as input to the Type instruction inside the Boundary
condition...End instruction group to assign various specified flux boundary conditions:
Potential Evapotranspiration
Sets the input type to be a special specified flux boundary condition and converts the
evaporative fluxes to nodal volumetric fluxes [L3 T−1 ] by multiplying by the contributing
area of the chosen face.
•••
For example:
boundary condition
type
potential evapotranspiration
face set
top
time value table
0.0
0.001
end
end ! new specified head
would define a potential evapotranspiration of 0.001 from time zero for the duration of the
simulation for all of the nodes contained in the face set top.
Although this instruction is currently restricted to be applied to porous media only, the
potential evapotranspiration is applied to the surface water domain and subsurface domain
in a stepwise manner. Nodes in the chosen faces and as a function of depth may be assigned
a time-variable flux value, depending on factors such as the current nodal saturation, which
may inhibit for example, transpiration from occurring.
2.7.3.7
Specified Flowrate
This is a special case of the second-type, Neumann, specified or constant flux boundary
condition. It is a nodal property and so you should first choose the subset of nodes for which
you want to apply the condition.
If the node was assigned a specified head or fluid flux by a previous instruction then it will
not be modified by specified flowrate instructions.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
125
Specified volumetric flowrate
1. npanel Number of panels in the time-variable volumetric flowrate. For each panel,
enter the following:
(a) ton val, bc val Time on [T] and specified volumetric flowrate [L3 T−1 ].
Chosen nodes in the currently active media (see Section 2.8.1) are assigned a time-variable
flowrate value. A panel is a point in time at which the specified flowrate is set to a new
value. The first panel would normally start at time zero. The flowrate given for the last
panel will be maintained until the end of the simulation. You can assign a static flowrate
for the duration of the simulation by setting npanel to 1 and ton val to 0.0.
Nodal volumetric flowtrates [L3 T−1 ] are applied directly to the chosen nodes.
•••
2.7.3.8
River Flux
Assigns a river flux boundary condition, as described in Section 3.7.1 to nodes in the specified
set. These nodes are normally located on the surface of the domain. For river flux nodes,
water may flow in or out of the domain depending on the difference in head between the
river node and the specified river head value.
The following instructions can be used as input to the Type instruction inside the Boundary
condition...End instruction group to assign a river flux boundary condition:
Simple river
Sets the input type to be a river flux drainage boundary condition.
•••
For example:
boundary condition
type
simple river
node set
my_river
time value table
0.0
25.
1.e-5
end
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
126
end
This example shows the use of a time value table instruction to define the river head (25.)
and river conductance (1.e-5) values. This would not be very useful in most cases, since
conductance and head vary from node to node along a river. In such cases, the inputs would
be defined by a time file table, with unique values given for each node:
boundary condition
type
simple river
node set
my_river
time file table
0.0
my_river.lst
1000.
none
end
end
Here, the river flux boundary condition would become inactive after time 1000 and the
nodes would become unconstrained. In this case, the file my river.lst would contain two
values per line, the river conductance and head value, and one line for each node in the set.
2.7.3.9
Drain Flux
Assigns a drain flux boundary condition, as described in Section 3.7.1 to nodes in the specified
set. These nodes are normally located on the surface of the domain. The fundamental
difference between river and drain flux nodes is that drain nodes only allow water to flow
out of the system, depending on the difference in head between the drain node and the
specified drain head value.
The following instructions can be used as input to the Type instruction inside the Boundary
condition...End instruction group to assign a drain flux boundary condition:
Simple drain
Sets the input type to be a drain flux drainage boundary condition.
•••
For example:
boundary condition
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
127
type
simple drain
node set
my_drain
time value table
0.0
25.
end
1.e-5
end
This example shows the use of a time value table instruction to define the drain head (25.)
and drain conductance (1.e-5) values. This would not be very useful in most cases, since
conductance and head would vary from drain node to drain node. In such cases, the inputs
would be defined by a time file table, with unique values given for each node:
boundary condition
type
simple drain
node set
my_drain
time file table
0.0
my_drain.lst
1000.
none
end
end
Here, the drain flux boundary condition would become inactive after time 1000 and the
nodes would become unconstrained. In this case, the file my drain.lst would contain two
values per line, the drain conductance and head value, and one line for each node in the set.
2.7.3.10
Surface loading
It is a nodal property, but because surface loading is applied to all nodes of a vertical column
of nodes, only one node of the column needs to be chosen.
Specified stress variation
1. npanel Number of panels in the time-variable specified stress function. For each
panel, enter the following:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
128
(a) ton val, bc val Time on [T] and specified stress variation [L T−1 ].
Chosen nodes in the currently active media (see Section 2.8.1) are assigned a time-variable
specified stress variation value. The specified stress variation value corresponds to the term
∂ (σzz /ρg)
∂t
(2.10)
which has units of [L T−1 ] and corresponds to an equivalent freshwater head change per
unit time.
•••
Specified stress variation from file
1. fname Name of the file which contains the list of nodes to which specified stress
variation will be assigned. It should contain the following data for each node:
2. nde, npanel Node number, number of panels
(a) ton val, bc val Time on [T], stress variation [L T−1 ].
Nodes listed in the file and in the currently active media (see Section 2.8.1) are assigned a
unique stress variation value. The specified stress variation value is described in the previous
command.
•••
Echo 1d loading conditions
If this command is included in the input file, a listing of the loading conditions will be issued
in the prefixo.eco file.
•••
2.7.3.11
Hydromechanical Stress
Hydromechanical stresses can be computed externally and used as input to grok using the
following instruction:
Elemental stress field from files
1. npanel Number of panels (i.e. files) defining the time-variable external stress field
For each panel, enter the following:
(a) ton val, esvfile Time on [T] and name of file containing elemental stress stress
values [L].
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
129
This information is passed to HydroGeoSphere. At each timestep, the current time is
compared to the array ton val to determine whether or not to apply the update the current
set of elemental stress values by reading the next file in the list.
Each file must be in ASCII format and contain a list of elemental stress values (i.e. one
value for each element in the 3-D domain), expressed as equivalent freshwater head.
•••
2.7.3.12
Pore Water Freezing and Thawing
To calculate the freezing and thawing of pore water, HydroGeoSphere requires the
following set of instructions:
Pore water freezing-thawing...End
grok reads instructions that define the pore water freezing and thawing parameters for the
domain until it encounters an End instruction.
•••
For example,
pore water freezing-thawing
surface temperature
0
-7.0
2592000
-6.1
5184000
-0.9
7776000
6.2
10368000
12.9
12960000
18.0
15552000
20.2
18144000
19.3
20736000
14.8
23328000
8.6
25920000
2.4
28512000
-4.0
31104000
-7.0
end
thermal diffusivity
0.2d-6
background temperature
6.0d0
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
130
melting temperature
0.5d0
freezing temperature
-0.5d0
maximum freezing depth
2.0d0
integration convergence criteria
1.0e-4
memory length for convolution integral
15552000.0d0
! 6*30*86400 sec = 6 months
end
Surface temperature
1. time(i), val(i)...end The time and surface temperature value list.
At time time(i) the value val(i) is applied and maintained until time time(i+1). The
last value entered in the list will be applied until the end of the simulation.
•••
Thermal diffusivity
1. val Thermal diffusivity [L2 T−1 ].
•••
Background temperature
1. val Background temperature [Θ].
•••
Melting temperature
1. val Melting temperature [Θ].
•••
Freezing temperature
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
131
1. val Freezing temperature [Θ].
•••
Maximum freezing depth
1. val Maximum freezing depth [L].
•••
Integration convergence criteria
1. val Integration convergence criteria.
•••
Memory length for convolution integral
1. val Memory length for convolution integral.
•••
2.7.3.13
Surface Flow
You can assign a critical depth or zero depth gradient boundary condition, as described in
Section 3.7.2 to segments in the specified set. These segments should be part of the overland
flow domain and are typically located on the outer boundary.
The following instructions can be used as input to the Type instruction inside the Boundary
condition...End instruction group to assign critical depth boundary conditions:
Critical depth
Sets the input type to be a critical depth boundary condition.
•••
For example:
boundary condition
type
critical depth
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
132
segment set
outflow
end
This example shows that a time-value table is not mandatory. However, if you wish to turn
the critical depth boundary condition on or off, then this can be accomplished by including
a time value table instruction:
boundary condition
type
critical depth
segment set
outflow
time value table
0.0
1.0
10.0
-99999.
end
end
The value 1.0 at time zero is ignored, but the NODATA value -99999 at time 10.0 causes
the boundary conditon to be turned off and the nodes become unconstrained.
Zero-depth gradient
Sets the input type to be a zero-depth gradient boundary boundary condition.
•••
For example:
boundary condition
type
zero-depth gradient
segment set
outflow
end
If you wish to turn the zero-depth gradient boundary condition on or off, then this can be
accomplished by including a time value table instruction.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.7.3.14
133
Snowmelt
You can assign a snowmelt boundary condition to faces in the specified set. These faces
should be part of the overland flow domain and are typically located on the outer boundary.
The following instructions can be used as input to the Type instruction inside the Boundary
condition...End instruction group to assign snowmelt boundary conditions:
Snowmelt
Sets the input type to be a snowmelt boundary condition.
•••
For example:
boundary condition
type
snowmelt
face set
top
time value table
! time
0
2592000
5184000
7776000
10368000
12960000
15552000
18144000
20736000
23328000
25920000
28512000
31104000
end
snowfall
2.5848E-07
2.0447E-07
2.5463E-07
0
0
0
0
0
0
0
0
2.7006E-07
2.7006E-07
interpolate
snowmelt constants
100.0d0
! snow density
5.78704E-06
! melting constant
0.0
! sublimation constant
air temperature
-7
-6.1
-0.9
6.2
12.9
18
20.2
19.3
14.8
8.6
2.4
-4
-4
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
0.0
0.1
134
! threshold temperature
! initial snow depth
tecplot output
end
This example shows the use of a time value table instruction to define the snowfall and air
temperature values with the density of snow, melting constant, the rate of sublimation,
threshold temperature, and the initial snow depth being assigned with snowmelt constants
instruction.
Snowmelt Constants
1. snow rho Snow density [M L−3 ]. the results of the previous flow solution.
2. snow melt Snow melting constant.
3. snow sublimation Snow sublimation constant.
4. snow threshold temp Snow threshold temperature.
5. snow initial depth Initial snow depth [L].
The snowmelt constants command requires 5 values for the snow density, melting constant, sublimation constant, threshold temperature, and initial snow depth. The five snow
parameters must be listed in the above order for correct reading by grok.
•••
2.7.4
Node and Face Sets
Some boundary condition types are applied to nodes (e.g. head) while others are applied to
faces (e.g. flux). To define the group of nodes use:
Node set
1. bc set name Name of the node set to apply the boundary condition to.
•••
To define the group of faces use:
Face set
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
135
1. bc set name Name of the face set to apply the boundary condition to.
•••
2.7.5
Time-varying Inputs
To define more complex spatial and temporal properties for a boundary condition use:
Time value table
1. bc time(i), bc val(i)...end The time and boundary condition value list.
At time bc time(i) the value bc val(i) is applied and maintained until time bc time(i+1).
The last value entered in the list will be applied until the end of the simulation.
•••
Time raster table
1. bc time(i), bc raster(i)...end The time and raster file name list.
At time bc time(i) the raster file bc raster(i) is applied and maintained until time
bc time(i+1). The last raster file entered in the list will be applied until the end of the
simulation. HydroGeoSphere uses the node (or face centroid) xy-coordinate for each
member of the set to interpolate a value for the boundary condition at that point.
•••
The following instructions use the same input data structure except they are applied to xz
or yz coordinates:
time raster xz table
time raster yz table
Time file table
1. bc time(i), bc file(i)...end The time and file name list.
At time bc time(i) the values read from file bc file(i) are applied and maintained until
time bc time(i+1). The data from the last file entered in the list will be applied until the
end of the simulation. HydroGeoSphere reads a list of values from the file and assigns
them in order to the current set of nodes or faces, depending on what type of boundary
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
136
condition is being applied. The number of values in the file must match the number of
nodes or faces in the set or grok will stop with an error message.
•••
This instruction can be used in conjunction with other instructions to create files of nodal
values and then read them in to define boundary conditions. For example, these instructions:
clear chosen nodes
choose nodes x plane
0.0
1.e-5
nodal function z to file
inflow.txt
! Z
value
0.0
0.
3.
10.
10.
4.
end
create node set
inflow
create a file inflow.txt which contains a value for each currently chosen node. It uses the
nodal z-coordinate to interpolate the value from the tabulated function of z versus value.
We can now use the file like this:
boundary condition
type
head
node set
inflow
time file table
0.0
inflow.txt
11.
none
end
end ! new specified head
Note that we use the node set inflow in conjunction with the file inflow.txt. Any mismatch
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
137
in the number of nodes bwtween the node set file and the data file will cause grok to stop
with an error message.
2.7.5.1
Interpolation
Time-varying boundary conditions change abruptly from value bc val(i) to value bc val(i+1)
at time bc time(i+1). To have HydroGeoSphere use linear interpolation to smooth the
values used between time panel endpoints use:
Interpolate
This command causes time-varying values to be interpolated between panel values for the
boundary condition currently being defined. This results in a smoother application of the
time-varying function.
•••
2.7.5.2
Intermittent Conditions
Boundary conditions can be turned on and off by assigning special NODATA values instead
of normal input in the time-value, time-raster and time-file tables. For example, the default
NODATA value is -99999., and the following table:
boundary condition
type
head
... etc
time value table
0.0
100.0
1000.0
-99999.
2000.0
100.0
end
end ! new specified head
would apply the specified head of 100 from time 0.0 to time 1000.0 and then allow the node
to revert to an unconstrained condition until time 2000.0, when a specified head of 100.0
would again be applied for the duration of the simulation.
For rasters and files, the default NODATA value is the string ’none’.
If for some reason you need to change the default NODATA value you can use:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
138
Nodata value
1. nodata value The value that indicates there is no data.
•••
The following instructions are used to change the NODATA values used for rasters a files :
nodata raster
nodata file
2.7.6
2.7.6.1
Constraints and Tecplot Options
Nodal Flux Head Constraints
The old instructions Specified volumetric flowrate and Specified volumetric flowrate, head
constrained are no longer used, as they are covered by the boundary condition type Nodal flux
described below. If you want to force the nodal flux to operate within a specified hydraulic
head range, you can do so using the following instruction:
Nodal flux head constraints
1. bc constraint 1, bc constraint 2 Minimum and maximum constraining head values
for positive nodal flux (i.e. inflow).
2. bc constraint 3, bc constraint 4 Minimum and maximum constraining head values
for negative nodal flux (i.e. outflow).
If the nodal flux is positive, and the head at the node is less than bc constraint 1, then
the flux will be applied until such time as the head at the node exceeds bc constraint 2.
Once the head at the node exceeds bc constraint 2, then the flowrate will be set to zero
until such time as the head at the node drops below bc constraint 1.
If the flowrate is negative, and the head at the node is greater than bc constraint 3,
then the flowrate will be applied until such time as the head at the node drops below
bc constraint 4. Once the head at the node drops below bc constraint 4, then the
flowrate will be set to zero until such time as the head at the node exceeds bc constraint 3.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.7.6.2
139
Tecplot Output
Tecplot-formatted output files can be created for a specific boundary condition using this
instruction:
Tecplot output
This command causes node specific information about the boundary condition to be written
at each output time. The results are written to a file called prefixo.bc.bcname.dat
•••
2.7.7
Transport
There are three basic options available for assigning boundary conditions to the transport
solution. These are to specify either first-type (concentration), second-type (mass flux,
concentration gradient), or third-type (Cauchy) at a node. Although these are typically
applied to nodes located on the surface of the domain, first- and second-type boundary
conditions can can also be applied to internal nodes.
Once they are defined, you can check the transport boundary conditions using the following
instruction, which causes the current configuration to be written to the prefixo.eco file:
Echo transport boundary conditions
Causes the current boundary conditions to be written to the prefixo.eco file.
•••
2.7.7.1
Specified Concentration
This is also known as a first-type, Dirichlet, or constant concentration boundary condition.
It is a nodal property so you should first choose the subset of nodes for which you want to
apply the condition and then issue one of the following instructions.
If the node was assigned a specified concentration, mass flux or third-type value by a previous
instruction then it will not be modified by subsequent specified concentration instructions.
Specified concentration
1. npanel Number of panels in the time-variable concentration function. For each panel,
enter the following:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
140
(a) ton val,toff val,(bc val(j),j=1,nspeciesmob) Time on [T], time off [T], and
specified concentration [M L−3 ] of each species.
Chosen nodes in the currently active media (see Section 2.8.1) are assigned a time-variable
concentration value. If a node was previously assigned a specified concentration, it will
remain in effect.
A panel is a point in time at which the specified concentration is set to a new value. The
first panel would normally start at time zero. The concentration given for the last panel
will be maintained until the end of the simulation. You can assign a static concentration
for the duration of the simulation by setting npanel to 1, ton val to 0.0 and toff val to a
large number.
Note that if nspeciesmob is greater than 1, additional values of bc val should be included.
•••
Specified concentration from file
1. fname Name of the file which contains the time-varying concentration information.
This file should contain the following input data:
1. nnde Number of nodes to be assigned concentration data.
2. npanel Number of panels in the time-variable concentration function. For each panel,
enter the following:
(a) ton val,toff val Time on [T], time off [T].
3. nde, (bc val(j),j=1,nspeciesmob) Node number and specified concentration [M
L−3 ] of each species.
Listed nodes are assigned the time-variable concentration values contained in the file. If a
node was previously assigned a specified concentration it will remain in effect.
Although all nodes in the file share the same time on/time off panel information the concentration values in each panel can vary from node to node.
•••
Specified well concentration
1. iw Identification number of the well to which the concentration is to be applied. For
each species defined, enter the following:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
141
(a) ninjc Number of panels in the injection concentration history for this well and
species. For each panel enter the following:
i. cinjc,toninjc,toffinjc Injection concentration [M L−3 ], time on [T] and
time off [T].
All nodes in well iw are assigned a time-variable first-type concentration value, which is
uniform along the length of the well.
Since this instruction loops over all defined species, you must supply input even if it is a
zero concentration.
•••
Specified tile concentration
1. iw Identification number of the tile drain to which the concentration is to be applied.
For each species defined, enter the following:
(a) ntdc Number of panels in the injection concentration history for this tile and
species. For each panel enter the following:
i. c tile,ton c tile,toff c tile Injection concentration [M L−3 ], time on [T]
and time off [T].
All nodes in tile drain iw are assigned a time-variable first-type concentration value, which
is uniform along the length of the tile.
Since this instruction loops over all defined species, you must supply input even if it is a
zero concentration.
•••
2.7.7.2
Specified Mass Flux
This is also known as a second-type, Neumann, or constant mass flux boundary condition.
It is a distributed property so you should first choose the subset of faces for which you want
to apply the condition.
If the node was assigned a specified concentration or third-type concentration by a previous
instruction then it will not be modified by further specified mass flux instructions.
If the node was assigned a specified mass flux value by a previous instruction then mass
fluxes assigned in by subsequent instructions will be cumulative. This is because mass fluxes
are applied to faces, and any node common to two such faces requires a contribution from
each face
Specified mass flux
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
142
1. npanel Number of panels in the time-variable mass flux function. For each panel,
enter the following:
(a) ton val,toff val,(bc val(j),j=1,nspeciesmob) Time on [T], time off [T], and
specified mass flux [M T−1 ] of each species.
Chosen nodes in the currently active media (see Section 2.8.1) are assigned a time-variable
mass flux value. This is a passive injection of solute mass which has no effect on the flow
solution. If a node was previously assigned a first or third-type concentration, it will remain
in effect.
A panel is a point in time at which the specified mass flux is set to a new value. The
first panel would normally start at time zero. The mass flux given for the last panel will
be maintained until the end of the simulation. You can assign a static mass flux for the
duration of the simulation by setting npanel to 1, ton val to 0.0 and toff val to a large
number.
Note that if nspeciesmob is greater than 1, additional values of bc val should be included.
Note that the mass flux values are per unit time and the total mass which will be injected
for a given timestep can be calculated by multiplying the value given here by the timestep
length and the number of chosen nodes.
•••
Interpolate mass flux
This command causes time-varying mass fluxes to be interpolated between panel values.
This results in a smoother application of the mass flux function.
•••
2.7.7.3
Specified Third-type Concentration
This is also known as a third-type or Cauchy boundary condition. It is a distributed property
so you should first choose the subset of faces for which you want to apply the condition and
then issue one of the following instructions.
If the node was assigned a specified concentration by a previous instruction then it will not
be modified by further specified mass flux instructions.
If the node was assigned a third-type concentration value by a previous instruction then
third-type concentration fluxes assigned in subsequent instructions will be cumulative. This
is because third-type concentrations are applied to faces, and any node common to two such
faces requires a contribution from each face.
Specified third-type concentration
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
143
1. calcflux A logical switch which determines how fluid fluxes are handled for this
third-type boundary condition. If false, read the following:
(a) userflux Fluid flux value [L/T].
2. npanel Number of panels in the time-variable concentration function. For each panel,
enter the following:
(a) ton val,toff val, (bc val(j),j=1,nspeciesmob) Time on [T], time off [T], and
specified concentration [M L−3 ] of each species.
Chosen nodes in the currently active media (see Section 2.8.1) are assigned a time-variable
third-type concentration value unless they were previously assigned a first-type concentration.
If the variable calcflux is true, nodal fluxes are calculated by HydroGeoSphere from the
flow solution and used to calculate the third-type boundary condition. Only positive fluxes
(i.e. flowing into domain) are used. If false, HydroGeoSphere reads a flux value userflux
which is used instead.
A panel is a point in time at which the specified third-type concentration is set to a new
value. The first panel would normally start at time zero. The concentration given for
the last panel will be maintained until the end of the simulation. You can assign a static
concentration for the duration of the simulation by setting npanel to 1, ton val to 0.0 and
toff val to a large number.
Note that if nspeciesmob is greater than 1, additional values of bc val() should be included.
•••
Specified third-type concentration from file
1. fname Name of the file which contains the time-varying third-type concentration
information.
This file should contain the following input data:
1. nelem3 Number of elements.
2. npanel Number of panels in the time-variable concentration function.
3. calcflux A logical switch which determines how fluid fluxes are handled for this
third-type boundary condition. If false, read the following:
(a) userflux Fluid flux value [L/T].
For each panel, enter the following:
(a) ton val,toff val Time on [T] and time off [T].
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
144
For each of the nelem3 elements, enter the following:
1. nel, n1, n2, n3, n4, (bc val(i,j),i=1,npanel, j=1,nspeciesmob) Element number, 4 node numbers defining face and third-type concentration [M L−3 ] history of
each species.
Faces defined by the 4 nodes in the listed elements in the currently active media (see
Section 2.8.1) are assigned a time-variable third-type concentration value unless they were
previously assigned a first-type concentration. It is the responsibility of the user to ensure
that the nodes define a face that is on the exterior of the domain.
For 3-node faces, enter a value of zero for node n4.
If the variable calcflux is true, nodal fluxes are calculated by HydroGeoSphere from the
flow solution and used to calculate the third-type boundary condition. Only positive fluxes
(i.e. flowing into domain) are used. If false, HydroGeoSphere reads a flux value userflux
which is used instead.
If nspeciesmob is greater than 1, additional values of bc val should be included.
Although all elements in the file share the same time on/time off panel information the
concentration values in each panel can vary from element to element.
•••
Specified third-type concentration from face file
1. fname Name of the file which contains the time-varying third-type concentration
information.
This file should contain the following input data:
1. nface3 Number of faces.
2. npanel Number of panels in the time-variable concentration function.
3. calcflux A logical switch which determines how fluid fluxes are handled for this
third-type boundary condition. If false, read the following:
(a) userflux Fluid flux value [L/T].
For each panel, enter the following:
(a) ton val,toff val Time on [T] and time off [T].
For each of the nface3 faces, enter the following:
1. nfce, (bc val(i,j),i=1,npanel, j=1,nspeciesmob) Face number and third-type
concentration [M L−3 ] history of each species.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
145
Listed faces in the currently active media (see Section 2.8.1) and which are located on the
exterior of the domain are assigned a time-variable third-type concentration value unless
they were previously assigned a first-type concentration.
If the variable calcflux is true, nodal fluxes are calculated by HydroGeoSphere from the
flow solution and used to calculate the third-type boundary condition. Only positive fluxes
(i.e. flowing into domain) are used. If false, HydroGeoSphere reads a flux value userflux
which is used instead.
If nspeciesmob is greater than 1, additional values of bc val should be included.
Although all faces in the file share the same time on/time off panel information the concentration values in each panel can vary from face to face.
•••
Specified third-type flushing
1. npanel Number of panels in the time-variable fluid flux function. For each panel,
enter the following:
(a) ton val,toff val, q val Time on [T], time off [T], and flux per unit area [ L/T].
A flushing boundary condition q(t)C is applied using the time series of q for chosen faces.
•••
2.7.7.4
Thermal Energy
Specified temperature flux
1. ntime Number of panels in the time-variable, specified temperature flux function. For
each panel, enter the following:
(a) ton val, toff val, bc val, bc temp Time on [T], time off [T], specified volume
flux (of liquid) [L3 /T] multiplied by the heat capacity [J kg−1 K−1 ] and density
[M/L3 ] of the boundary medium, temperature of water entering [K].
Nodes in both the chosen faces and the currently active media (see Section 2.8.1) are assigned
a time-variable temperature flux value.
Although a fluid volume flux bc val is specified, this does not influence the flow solution in
any way. It is merely intended to give the user a straightforward way to input a known
amount of energy to the system, as a function of fluid volume and temperature.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
146
To define the atmospheric inputs discussed in Section 2.6.1.10, and summarized in Equation 2.121, HydroGeoSphere requires the following set of instructions:
Atmosphere...End
grok reads instructions that define atmospheric input parameters until it encounters an
End instruction.
•••
Incoming Shortwave Radiation
1. ntime Number of panels in the time-variable, incoming shortwave radiation function.
For each panel, enter the following:
(a) ton val, value Time on [T], incoming shortwave radiation [M/T3 ], K ↓ in
Equation 2.122. Default value is 1.10 × 102 J/(m2 s).
•••
Sinusoidal Incoming Shortwave Radiation
1. ntime Number of panels in the time-variable, sinusoidal incoming shortwave radiation
function. For each panel, enter the following:
(a) ton val, value, amp, phase, period Time on [T], vertical shift (mid-point
incoming shortwave radiation, K ↓ in Equation 2.122) [M/T3 ], amplitude [M/T3 ],
phase, period [T].
•••
Cloud Cover
1. ntime Number of panels in the time-variable, cloud cover function. For each panel,
enter the following:
(a) ton val, value Time on [T], cloud cover [-], Cc in Equation 2.124. Default value
is 0.50.
•••
Incoming Longwave Radiation
1. ntime Number of panels in the time-variable, incoming longwave radiation function.
For each panel, enter the following:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
147
(a) ton val, value Time on [T], incoming longwave radiation [M/T3 ], L↓ in Equation 2.125. Default value is 3.0 × 102 J/(m2 s).
•••
Temperature of Air
1. ntime Number of panels in the time-variable, air temperature function. For each
panel, enter the following:
(a) ton val, value Time on [T], air temperature [K], Ta in Equation 2.126. Default
value is 15o C.
•••
Sinusoidal Temperature of Air
1. ntime Number of panels in the time-variable, sinusoidal air temperature function.
For each panel, enter the following:
(a) ton val, value, amp, phase, period Time on [T], vertical shift (mid-point
temperature, Ta in Equation 2.126) [K], amplitude [K], phase, period [T]
•••
These instructions are used to define the sensible heat flux Qh in Equation 2.128 and latent
heat flux QE in Equation 2.129.
Density of Air
1. ntime Number of panels in the time-variable, air density function. For each panel,
enter the following:
(a) ton val, value Time on [T], density of air [M/L3 ], ρa in Equation 2.128. Default
value is 1.225 kg/m3 .
•••
Specific Heat of Air
1. ntime Number of panels in the time-variable, air specific heat function. For each
panel, enter the following:
(a) ton val, value Time on [T], specific heat of air [L2 /(T2 K)], ca in Equation 2.128.
Default value is 7.17 × 102 J/(kg o K).
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
148
•••
Wind Speed
1. ntime Number of panels in the time-variable, wind speed function. For each panel,
enter the following:
(a) ton val, value Time on [T], wind speed [L/T], Va in Equation 2.128. Default
value is 1.0 m/s.
•••
Sinusoidal Wind Speed
1. ntime Number of panels in the time-variable, sinusoidal wind speed function. For
each panel, enter the following:
(a) ton val, value, amp, phase, period Time on [T], vertical shift (mid-point
wind speed, Va in Equation 2.128) [L/T], amplitude [L/T], phase, period [T]
•••
Drag Coefficient
1. ntime Number of panels in the time-variable, drag coefficient function. For each
panel, enter the following:
(a) ton val, value Time on [T], drag coefficient [-], cD in Equation 2.128. Default
value is 2.0 × 10− 3.
•••
Latent Heat of Vapourization
1. ntime Number of panels in the time-variable, latent heat of vapourization function.
For each panel, enter the following:
(a) ton val, value Time on [T], latent heat of vapourization [L2 /T2 ], LV in Equation 2.129. Default value is 2.258 × 106 J/kg.
•••
Specific Humidity of Air
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
149
1. ntime Number of panels in the time-variable, air specific hunidity function. For each
panel, enter the following:
(a) ton val, value Time on [T], specific humidity of air [M/M], SHa in Equation 2.129. Default value is 0.01062.
•••
Soil-Water Suction at Surface
1. ntime Number of panels in the time-variable, soil-water suction at surface function.
For each panel, enter the following:
(a) ton val, value Time on [T], soil-water suction at surface [L], ψg in Equation 2.131
. Default value is 0.138 m.
•••
Saturation Vapour Pressure
1. ntime Number of panels in the time-variable, saturation vapour pressure function.
For each panel, enter the following:
(a) ton val, value Time on [T], saturation vapour pressure [M/(L T2 )], esat [Tg ] in
Equation 2.132. Default value is 1.704 × 103 Pa.
•••
Relative Humidity
1. ntime Number of panels in the time-variable, relative humidity function. For each
panel, enter the following:
(a) ton val, value Time on [T], relative humidity [-]. Default value is 0.75.
•••
Pressure of Air
1. ntime Number of panels in the time-variable, air pressure function. For each panel,
enter the following:
(a) ton val, value Time on [T], air pressure [M/L T2 ], pa in Equation 2.132. Default
value is 1.013 × 105 Pa.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.7.7.5
150
Imported From GMS
Read gms transport boundary conditions
1. gmsfile Name of the file which contains the GMS boundary condition data.
Reads a GMS boundary condition file which has been produced by the FEMWATER module
and extracts pertinent transport boundary condition information.
Currently, only Dirichlet and Cauchy transport boundary conditions are recognized by
HydroGeoSphere. Also, this feature only works for a single species. If more than one
species is present in the simulation, use the instructions specified concentration and specified
third-type concentration to define the input data.
Dirichlet (first-type) boundary conditions can be assigned in GMS using the Select Boundary
Nodes tool in the 3D mesh module. Once the appropriate nodes are chosen, you can assign
the boundary condition using the Assign Node/Face BC... tool under the FEMWATER
menu option. In the GMS Node BC dialog, you can select either Constant or Variable
concentration to produce a static or time-variable concentration function.
Cauchy (third-type) boundary conditions can be assigned in GMS using the Select Boundary
Faces tool in the 3D mesh module. Once the appropriate faces are chosen, you can assign the
boundary condition using the Assign Node/Face BC... tool under the FEMWATER menu
option. In the GMS Node BC dialog, you should select Flux then Constant or Variable to
produce a static or time-variable mass flux function.
•••
2.7.7.6
Immiscible Phase Dissolution Source
An immiscible phase dissolution source is one in which it is assumed that there is dissolution
of an immobile liquid or solid phase into the subsurface water until all dissolvable material
is exhausted. The following instruction can be used to define the source:
Immiscible phase dissolution data
1. diss mass Mass of dissolvable material per unit volume of porous medium.
2. diss conc The aqueous solubility value for the immiscible phase in mass of solute per
unit volume of aqueous solution.
Chosen nodes are assigned first-type concentration values equal to diss conc, which are
maintained until all the material associated with a node is dissolved, at which time the node
reverts back to an unconstrained condition. Once unconstrained, any water flowing in will
generate mass due to the nonzero concentration, and so dissolution nodes should not be
located on the outer surface of the domain.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
151
It is assumed that the total mass of dissolvable material is located in the matrix only.
The total mass available for dissolution associated with a given node is then calculated by
multiplying contributing volume (from all shared elements) times the porosity times the
variable diss mass.
•••
2.7.7.7
Zero-order Source
A zero-order source is one in which the medium itself produces a solute. For example, some
soils produce radon gas as a result of radioactive decay.
Zero order source
1. npanel Number of panels in the time-variable, zero-order source function. For each
panel, enter the following:
(a) ton val,toff val, (bc val(j),j=1,nspeciesmob) Time on [T], time off [T] and
mass of solute produced per unit volume of porous medium solids per unit time
[M L−3 ].
Nodes in the chosen zones area assigned zero-order source boundary conditions.
A panel is a point in time at which the source term is set to a new value. The first panel
would normally start at time zero. The source term given for the last panel will be maintained
until the end of the simulation. You can assign a static source term for the duration of the
simulation by setting npanel to 1, ton val to 0.0 and toff val to a large number.
Note that if nspeciesmob is greater than 1, additional values of bc val should be included.
•••
2.8
2.8.1
Materials and Material Properties
General
Currently, the following five basic types of media can be defined in HydroGeoSphere:
1. porous
2. dual continuua
3. discretely-fractured
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
152
4. surface runoff
5. channel flow
6. et
Porous media and dual continuua are defined by three-dimensional 8-node (brick) or 6node (prism) elements, discretely-fractured, surface flow and ET media are defined by
two-dimensional 4-node (rectangle) or 3-node (triangle) elements and channel flow media
are defined by 1-node (line) elements. By default, every 3-D element in the problem domain
is a porous media element. Elements of the other four types of media may or may not be
defined for a specific problem.
Each porous media element is assigned a zone (i.e. material) number during grid generation.
In simple cases, all elements will be assigned a zone number of 1, while in more complex cases,
elements may have been assigned different zone numbers. For example, if a multilayered
grid was generated using the instruction Generate layers from slice then the elements would
have been assigned zone numbers based on the layer number (i.e. elements in the lowest
layer number 1 would be assigned a material number of 1).
By default, all zones, and therefore all elements in the domain, are assigned the same default
porous media properties, which are listed in Table 2.5. These values are set in software and
cannot be modified by the user unless the code is changed and recompiled. However, there
are other ways of changing the porous media zone properties as we will discuss below.
The first step in modifying zoned properties for a given problem is to indicate which type of
medium is to be manipulated. The following instruction does this:
Use domain type
1. zone type Can be one of the strings: porous media, dual, fracture, surface, channel
or et.
Causes grok to read a string defining the type of domain to which additional instructions
should be applied.
•••
2.8.1.1
Defining a New Zone
In order to define a new zone, elements of the proper type must first be chosen using the
instructions given in Section 2.4. For example, 3-D block elements must first be selected
before a new porous media or dual zone can be defined, 2-D rectangular faces are selected
for fracture or surface zones and 1-D segments are selected for channel zones.
In a problem where there are to be dual, fracture, surface or channel zone types, a new
zone must be defined since the default situation after grid generation is that there are no
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
153
elements of these types. This is not the case for porous media zones, where by default all
3-D elements are in porous media zone 1.
Once elements of the appropriate type have been chosen, the following command groups
them into a single zone.
New zone
1. num zone Zone number.
Chosen elements are assigned a new zone number.
If num zone is greater than the total number of zones of the current media type, the total
number of zones will be incremented and default properties for that media type will be
assigned.
•••
The following set of instructions, inserted in the prefix.grok file would create a new fracture
zone.
use domain type
fracture
clear chosen faces
choose faces z plane
0.05
1.e-5
new zone
1
Assign zone zero
Assign all elements to zone number zero.
•••
This instruction was added for the case where we are using multiple surfaces to choose
elements and assign them unique zone numbers. If we first assign all elements to zone zero,
we can then find elements that were not chosen by any surface and are still assigned to zone
zero.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.8.1.2
154
Saving and Retrieving Element Zone Numbers
The following commands can be used to store and retrieve porous media element zone
numbers.
Write zones to file
1. zone file Name of the file to which element zone numbers will be written.
•••
Read zones from file
1. zone file Name of the file from which zone information will be read.
•••
For example, if you want elements 1, 5, 9, and 44 to have the zone number 2 and element 8
to have the zone number 3, the file would contain:
1
5
9
44
8
2
2
2
2
3
read zones from raster for chosen elements
1. zone raster Raster containing integers representing zones. Note: zone numbers
should be sequential starting from 1.
Assigns a zone number to selected elements based on a raster containing zone information.
•••
read overland zones from raster
1. zone raster Raster containing integers representing zones. Note: zone numbers
should be sequential starting from 1.
Assigns a zone number to the overland elements based on a raster containing zone information. The raster information at the center of each element will be assigned to the element.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
155
•••
read overland zones from raster, dominant class
1. zone raster Raster containing integers representing zones. Note: zone numbers
should be sequential starting from 1.
Assigns a zone number to the overland elements based on a raster containing zone information. For each element, the most dominant zone number is assigned to the element by area.
•••
2.8.1.3
Defining New Zones Using ARCVIEW Files
The following commands can be used to assign porous media and surface flow element zone
numbers using files created by ESRI Arcview. Note that Arcview .shp and .dbf files should
have the same prefix and be in the same directory. Currently, the following Arcview features
are not supported:
1. Attributes with a date format.
2. Files containing anything except polygons.
3. Shape files with, for example, geographical projections or coordinate translations that
are stored in .shx and .prj files.
Zones from arcview ASCII grid
1. arcview file name Name of the Arcview ASCII grid file.
2. nodata replace Zone number to assign to cells with no data.
3. nzone add arcview A number to be added to zone numbers read from the ASCII
grid file.
Chosen elements will be assigned zone numbers from the Arcview ASCII grid file (.asc).
Since these files are 2 dimensional, elements with the same x and y coordinate will be
assigned the same zone number, regardless of their z coordinate.
In cells where there is no data value, the variable nodata replace will replace the Arcview
default(usually -9999).
The variable nzone add arcview can be used to preserve existing zone numbers. For
example, if there are zones already defined in the model which are numbered from 1 to 7, and
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
156
the Arcview file contains zones numbered from from 1 to 4, you can set nzone add arcview
to 7, and zones assigned from the Arcview file would be numbered from 8 to 11.
•••
Zones from arcview
1. arcview file name Prefix of the Arcview shape file.
2. nodata replace Zone number to assign to an element which is not in any polygon
3. attribute Field name used to assign the zones, which must be written exactly as in
the .dbf file (case sensitive).
4. nzone add arcview A number to be added to zone numbers read from the ASCII
grid file.
5. unproject file If true, you must supply input data which is identical to that required
for the Project grid instruction described in Section 2.3.10.
6. project file If true, you must supply input data which is identical to that required
for the Project grid instruction described in Section 2.3.10.
Chosen elements will be assigned zone numbers from the Arcview shape file (.shp). Since
these files are 2 dimensional, elements with the same x and y coordinate will be assigned
the same zone number, regardless of their z coordinate.
If an element centroid falls within a polygon, it will receive the attribute of that polygon.
Since a polygon may have several attributes, the variable attribute can be used to specify
which one is to be applied. For example, a shapefile of the geology of a region may contain
polygons having the attributes age, type, domain, unit, formation and name. Setting the
value of attribute to ‘domain’ will assign zone numbers based on the domain number.
The choice of a different attribute will result in a different pattern of zone numbering.
The variable attribute is chosen from the database file (.dbf ), which can be opened in a
spreadsheet program in order to choose the name.
The variable nzone add arcview can be used to preserve existing zone numbers. For
example, if there are zones already defined in the model which are numbered from 1 to 7, and
the Arcview file contains zones numbered from from 1 to 4, you can set nzone add arcview
to 7, and zones assigned from the Arcview file would be numbered from 8 to 11.
•••
Since Arcview shape files created on a Windows platform may not be binary compatible
with a UNIX platform, the zone numbers can be written to an ASCII file using the write
zones to file and then read on the UNIX platform using the read zones from file instruction
(as described in Section 2.8.1.2. This can also be useful in cases where the zones from arcview
instruction takes a long time to execute, since the results can be stored initially and then
read much more quickly in subsequent runs.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.8.1.4
157
Defining New Zones Using GridBuilder .GEN Files
The following commands can be used to assign porous media element zone numbers using
.gen files created by GridBuilder.
Zone by gb gen file
1. fname Name of the GridBuilder .gen file.
All elements in the grid will be assigned zone numbers from the GridBuilder .gen file. Since
these files are 2 dimensional, elements with the same x and y centroid coordinates will be
assigned the same zone number, regardless of their z coordinate.
If elements are found which are outside the region defined in the GridBuilder file, the zone
number 0 (zero) will be assigned and a warning will be issued.
In the case of grok grids which have been flipped using the Y vertical instruction, the x and
z centroid coordinates are used instead to determine the zone number.
•••
2.8.1.5
Selecting Zones
These instructions can be used to alter the set of chosen zones for the current zone type (i.e.
porous media, dual, fracture or surface.)
Clear chosen zones
Returns the set to the default state, in which no zones are chosen. This is recommended if
you are unsure of which zones are chosen due to previously issued instructions.
•••
Choose zones all
Selects all zones. This is useful if you wish to assign a property to all zones in the grid.
•••
Choose zone number
1. num zone Zone number.
Selects the zone numbered num zone.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.8.1.6
158
Modifying Zoned Properties
There are a number of instructions which can be used to modify the property values
associated with a zone or group of zones. Before these instructions are issued, it is necessary
to select the appropriate type of media and then choose the zones which you want to modify.
For example, suppose that you wished to assign a new porous media hydraulic conductivity
to all zones, and thus to all elements in the problem. The following set of instructions,
inserted in the prefix.grok file would accomplish this:
use domain type
porous media
clear chosen zones
choose zones all
k isotropic
1.e-5
In this case, we are applying the instruction k isotropic to zones of type porous media,
although it is equally valid to use it with dual-type zones. However, if you try to use this
instruction with zones of type fracture or surface, warning messages will be issued to the
screen and prefixo.eco file and execution will halt.
The instructions which are valid in specific situations are discussed in the relevant sections
of the manual. For example, instructions which can be used for defining saturated flow
properties are described in Section 2.8.2.
Another way to define zone properties is through the use of a material properties file, which
should be located in the same directory as the prefix.grok file. This file contains lists of
media-specific instructions which can be used to define properties for one or more named
materials. These material properties can then be assigned to the current set of chosen zones.
To assign new properties through the use of a material properties file, we first need to issue
the following instruction:.
Properties file
1. props file name Name of the material properties file.
This file will be searched for materials given as input to the Read properties instruction
discussed below.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
159
!-----------------------------------------Porous medium
k isotropic
500.0
specific storage
0.0
porosity
1.0
longitudinal dispersivity
10.0
transverse dispersivity
0.1
transverse vertical dispersivity
0.1
tortuosity
0.1
end material
Figure 2.9: Example of a Material Defined in an .mprops File
The Properties file instruction has two benefits: first, it allows you to create sets of material
properties and give them meaningful file names and second, it allows you to easily switch
between material property sets merely by changing the file name given in the prefix.grok
file.
Any line in a material properties file which is completely blank or which begins with an
exclamation point (!) is treated as a comment and is ignored by grok. This allows you to
include comments whenever required.
Each distinct material in the file is identified by a unique label and may contain instructions
which are to be applied to the current zone type. For example, instructions which can be
used for defining porous media properties when simulating saturated flow (as described in
Section 2.8.2.1) may be included. Figure 2.9 shows an example of a material defined for the
verification problem discussed in Section 4.5.1.
To make use of the material properties file, you would issue the following instruction:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
160
Read properties
1. mat name Name of the material.
Chosen zones are assigned properties of the material named mat name in the current
material properties file as defined in a properties file instruction.
•••
So for example, the following set of instructions could be inserted in the prefix.grok file:
use domain type
porous media
properties file
my.mprops
clear chosen zones
choose zones all
read properties
sand
The instruction read Properties would, in this case, search the porous media material
properties file my.mprops for a material named sand. If found, it would read the instructions
defining the material and modify the porous media properties for the current set of chosen
zones.
A summary of the final data which has been defined for each zone is listed in the prefixo.eco
file, and an example is shown in Figure 2.10.
In this example, because flow is saturated, no variably-saturated porous media flow properties
need to be defined in the material properties file. Also, default values for properties (e.g.
bulk density, immobile zone porosity etc.) which have not been modified in the prefix.grok
or material properties file are used.
2.8.2
2.8.2.1
Saturated Subsurface Flow
Porous Medium
HydroGeoSphere is designed to perform the flow simulation in saturated mode unless
instructed otherwise, and unless you modify the default values, all zones (and elements) in
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
161
---------------------------------------------------------POROUS MEDIA PROPERTIES
ZONE: 1
MATERIAL: porous medium
Consists of
100 elements out of
Kxx:
500.000
Kyy:
500.000
Kzz:
500.000
Specific storage:
0.00000
Porosity:
1.00000
100
Longitudinal dispersivity
10.0000
Transverse dispersivity
0.100000
Transverse vertical dispersivity
0.100000
Tortuosity
0.100000
Bulk density
2650.00
Immobile zone porosity
0.00000
Mass transfer coefficient
0.00000
100 elements of
100 have been assigned properties
Figure 2.10: Example Output for a Porous Media Material
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
162
Table 2.5: Default Values for Porous Media Saturated Flow Properties.
Parameter
Value
Unit
Name
Default Sand
Hydraulic conductivity terms:
Kxx
7.438×10−5
m s−1
Kyy
7.438×10−5
m s−1
−5
Kzz
7.438×10
m s−1
Kxy
0.0
m s−1
Kxz
0.0
m s−1
Kyz
0.0
m s−1
Specific storage Ss
1.0×10−4
m−1
Porosity θs
0.375
Poisson’s ratio ν ∗
0.3
Solids compressibility γs
0.0
kg−1 m s2
Loading efficiency ζ
1.0
Unsaturated flow relation type Pseudo-soil
the domain will be assigned the default porous media properties which are listed in Table 2.5.
These values are representative of a sand.
Note that the default state of the hydraulic conductivity tensor (K in Equation 2.2) is that
it is isotropic and that all off-diagonal terms are zero.
You can use the general methods and instructions outlined in Section 2.8.1 to modify the
default distribution of saturated porous media properties. A general porous medium layout
is shown as the following instruction:
use domain type
porous media
properties file
{props_file_name.mprops}
clear chosen nodes/elements/segments/faces/faces by nodes/zones
{choose nodes/elements/segments/faces/faces by nodes/zones}
{choose_description}
new zone
{zone_type}
clear chosen zones
choose zone number
{num_zone} ! same as {zone_type}
read properties
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
163
{mat_name}
Note that each instruction given here has an associated scope of operation. For example,
some can only be used in the prefix.grok file, in which case they will affect the current
set of chosen zones or elements. Other instructions can only be used in a porous media
properties (.mprops) file, in which case they affect only the named material of which they
are a part. Finally, some instructions can be used in both types of files, in which case their
behaviour will be as described above, and will depend on which type of file (i.e. prefix.grok
or .mprops) that they are placed in. It is very important that the user understand this
behaviour, and the scope of each instruction will be clearly indicated as they are introduced
and discussed below.
K isotropic
Scope: .grok .mprops
1. kval Hydraulic conductivity [L T−1 ].
Assign an isotropic hydraulic conductivity (i.e. Kxx = Kyy = Kzz ).
•••
K anisotropic
Scope: .grok .mprops
1. kvalx, kvaly, kvalz Hydraulic conductivities [L T−1 ] in the x-, y- and z-directions
respectively.
Assigns anisotropic hydraulic conductivities.
•••
K tensor
Scope: .grok .mprops
1. valx, valy, valz Main-diagonal terms of the hydraulic conductivity tensor Kxx , Kyy
and Kzz [L T−1 ].
2. valxy, valxz, valyz Off-diagonal terms of the hydraulic conductivity tensor Kxy , Kxz
and Kyz [L T−1 ].
Assign hydraulic conductivities which include the off-diagonal terms. Note that this option
will only work if HydroGeoSphere is running in finite element mode and so this switch
will automatically be set.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
164
Specific storage
Scope: .grok .mprops
1. val Specific storage [L−1 ], Ss in Equation 2.10.
•••
Porosity
Scope: .grok .mprops
1. val Porosity [L3 L−3 ], θs in Equation 2.1.
•••
Poisson ratio
Scope: .grok .mprops
1. val Poisson’s Ratio [dimensionless], ν ∗ in Equation 2.28b.
•••
Loading efficiency
Scope: .grok .mprops
1. val Loading efficiency [dimensionless], ζ ∗ in
Equation 2.28b.
•••
Compute loading efficiency
Scope: .grok .mprops This command should be included in the input file if you want the
preprocessor to compute the loading efficiency [dimensionless] based on Equation 2.28b. In
this case, values of Poisson’s ratio and compressibility of solids and water for the current
media will be used. Porous media compressibility will be computed from the specific storage
value. If this command is not included, the default or user-defined loading efficiency value
is used instead.
•••
Solids compressibility
Scope: .grok .mprops
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
165
1. val Solids compressibility [L T2 M−1 ], Ks in Equation 2.22.
•••
Element K isotropic
Scope: .grok
1. kval Hydraulic conductivity [L T−1 ].
Chosen elements are assigned isotropic hydraulic conductivities (i.e. Kxx = Kyy = Kzz ).
•••
Element K anisotropic
Scope: .grok
1. kvalx, kvaly, kvalz Hydraulic conductivities [L T−1 ] in the x-, y- and z-directions
respectively.
Chosen elements are assigned anisotropic hydraulic conductivities.
•••
Read elemental k from file
Scope: .grok
1. input k file name Name of the file which contains the variable K data supplied by
the user.
•••
This file should contain one of the following input data formats:
1. element number, kxx. Element number, isotropic hydraulic conductivity [L T−1 ].
2. element number, kxx, kyy, kzz. Element number, hydraulic conductivities [L
T−1 ] in the x-, y- and z-directions, respectively.
3. element number, kxx, kyy, kzz, kxy, kyz, kzx. Element number, hydraulic
conductivity matrix components [L T−1 ].
All elements are assigned a variable K from the file. For example, if there are 4 elements,
with Kxx = Kyy = 5 m day−1 and Kzz =2 m d−1 , the file would contain:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
1
2
3
4
5.0
5.0
5.0
5.0
5.0
5.0
5.0
5.0
166
2.0
2.0
2.0
2.0
The user can supply variable values for any number of elements in file input k file name.
grok will then produce data for all elements honouring any previous zoned values and the
user specified element-variable values, which are written to the file prefixo.elemental k.
Map isotropic k from raster
Scope: .grok
1. rasterfile Name of the raster file containing the hydraulic conductivity [L T−1 ] values.
This is a string variable. The file should be formatted as outlined in Section H.
For each element in the set of currently chosen zones, a value for the isotropic hydraulic
conductivity (i.e. Kxx = Kyy = Kzz ) will be interpolated from the raster file data.
•••
Map anisotropic k from raster
Scope: .grok
1. rasterfile x Name of the raster files containing the x component (i.e. Kxx ) hydraulic
conductivity [L T−1 ] values. This is a string variable. The file should be formatted as
outlined in Section H.
2. rasterfile y As above but for the y component (i.e. Kyy ) hydraulic conductivity [L
T−1 ] values.
3. rasterfile z As above but for the z component (i.e. Kzz ) hydraulic conductivity [L
T−1 ] values.
For each element in the set of currently chosen zones, values for the anisotropic hydraulic
conductivity (i.e. Kxx , Kyy and Kzz ) will be interpolated from the raster file data.
•••
Map porosity from raster
Scope: .grok
1. rasterfile Name of the raster file containing the porosity values. This is a string
variable. The file should be formatted as outlined in Section H.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
167
For each element in the set of currently chosen zones, a value for the porosity will be
interpolated from the raster file data.
•••
Read elemental porosity from file
Scope: .grok
1. input por file name Name of the file which contains the variable porosity data
supplied by the user. This file should contain the following input data:
(a) element number, por Element number, porosity.
All elements are assigned a variable porosity from the file. The user can supply variable values for any number of elements in file input por file name. grok will then produce data
for all elements honouring any previous zoned values and the user specified element-variable
values, which are written to the file prefixo.elemental por.
•••
Read elemental specific storage from file
Scope: .grok
1. input stor file name Name of the file which contains the variable specific storage
data supplied by the user. This file should contain the following input data:
(a) element number, stor Element number, specific storage [L−1 ], Ss in Equation 2.10..
All elements are assigned a variable specific storage from the file. The user can supply
variable values for any number of elements in file input stor file name. grok will then
produce data for all elements honouring any previous zoned values and the user specified
element-variable values, which are written to the file prefixo.elemental stor.
•••
Map tortuosity from raster
Scope: .grok
1. rasterfile Name of the raster file containing the tortuosity values. This is a string
variable. The file should be formatted as outlined in Section H.
For each element in the set of currently chosen zones, a value for the tortuosity will be
interpolated from the raster file data.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
168
Read elemental tortuosity from file
Scope: .grok
1. input tort file name Name of the file which contains the variable tortuosity data
supplied by the user. This file should contain the following input data:
(a) element number, tort Element number, tortuosity.
All elements are assigned a variable tortuosity from the file. The user can supply variable
values for any number of elements in file input por file name. grok will then produce
data for all elements honouring any previous zoned values and the user specified elementvariable values, which are written to the file prefixo.elemental tort.
•••
Write element k
Scope: .grok
1. filenm Name of the file in which to write the hydraulic conductivity information.
Writes a file of element hydraulic conductivity values in ascii format.
•••
The following FORTRAN code segment shows how the file is opened and the data written:
open(itmp,file=filenm,status=’unknown’)
if(k_variable .or. k_rand) then
write(itmp,’(i10,3e12.5)’) (i,kxx(i),kyy(i),kzz(i),i=1,ne)
else
write(itmp,’(i10,3e12.5)’) (i,kxx(iprop(i)),kyy(iprop(i)),kzz(iprop(i)),i=1,
end if
where kxx, kyy and kzz are the hydraulic conductivity values in the three principal
directions and ne is the number of elements in the mesh. If k values are zoned, then the
variable iprop(i) refers to the element zone id number of element i.
Write element k at z
Scope: .grok
1. zfix z-coordinate for choosing which element to write.
2. rtol Distance from zfix for test.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
169
3. filenm Name of the file in which to write the hydraulic conductivity information.
This instruction is identical to write element k except that information if only written for
elements whose centroid is within a distance of rtol of the z-coordinate zfix are written to
the file.
•••
Get average k
Scope: .grok
For the group of currently chosen elements, this instruction computes the average hydraulic
conductivity and writes it to the .lst file. This is useful for example, when a random
conductivity field has been generated and the user would like to know the average hydraulic
conductivity of a region of the domain.
•••
AECL properties
Scope: .grok
1. aecl nd file Name of the file which contains the nodal coordinates for the AECL
Motif mesh.
2. aecl ne file Name of the file which contains the element incidences and material
property numbers for the AECL Motif mesh.
AECL Motif grid element material numbers are mapped onto the existing HydroGeoSphere mesh. The mapping is performed based on the proximity of HydroGeoSphere
and AECL Motif element centroids. Once the material numbers have been mapped, zones
should be chosen and appropriate material properties should be assigned.
•••
Random K field from FGEN
Scope: .grok
1. fgenfile Name of file which contains the random hydraulic conductivity information
generated by FGEN.
2. x offset, y offset, z offset translate the fgen coordinate system by the given vector
3. anisotropy y, anisotropy z Kyy /Kxx and Kzz /Kxx
4. xy rotation angle to rotate the fgen coordinate system
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
170
A random K field which was generated by the program FGEN [Robin et al., 1993] is
mapped onto the current mesh. HydroGeoSphere Automatically dimensions and treats
the hydraulic conductivity vector as an elemental property, as opposed to a zoned property.
Note that HGS assumes that values are ln(K) and takes the exponential to convert the
value to assign.
FGEN generates two cross-correlated random fields having user-specified geostatistical
properties. The user can also control the type and degree of cross-correlation. The user
should contact the authors regarding the availability of FGEN.
The output from FGEN is in the form of values distributed on a rectangular grid which can
be either 2-D or 3-D. Normally, a 3-D distribution is used and values are mapped by first
determining which rectangular grid block the element centroid falls in, and then generating
a value at the centroid by trilinear interpolation of the 8 neighbouring grid values. If an
element is located outside of the FGEN grid, it is assigned a missing value, which is read
from the FGEN file.
If the FGEN data is 2-D, values are generated using bilinear interpolation. For example,
suppose the FGEN values are distributed on a plane parallel to the xy plane. In this case
any element whose centroid had xy coordinates that fell inside the range of the FGEN data
would receive a value determined by bilinear interpolation from the 4 neighbouring grid
values, but independent of the z coordinate of the element centroid.
The resulting element-variable hydraulic conductivity data are written to the file
prefixo.elemental k.
•••
Random Kd field from FGEN
Scope: .grok
1. fgenfile Name of file which contains the random distribution coefficient information
generated by FGEN.
2. x offset, y offset, z offset translate the fgen coordinate system by the given vector
3. anisotropy y, anisotropy z Only to be consistent with random K field and will be
neglected
4. xy rotation angle to rotate the fgen coordinate system
This command works in the same way as random k field.
•••
Soil Frost K
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
171
1. npanel Number of panels. For each panel, enter the following:
(a) ton val,toff val,k val Time on [T], time off [T], and soil frost hydraulic conductivity [L T−1 ].
Modifies K values for chosen elements.
•••
Soil Frost K by ratio
1. npanel Number of panels. For each panel, enter the following:
(a) ton val,toff val,k ratio Time on [T], time off [T], and the ratio between soil
frost hydraulic conductivity and the original soil conductivity.
Applies the ratio for chosen elements.
•••
Time dependent K for chosen elements
1. npanel Number of panels. For each panel, enter the following:
(a) ton val, K x, K y, K z Time on [T], and hydraulic conductivity values in x-,
y-, and z-coordinates [L T−1 ].
•••
Time dependent variable K for chosen elements
1. npanel Number of panels. For each panel, enter the following:
(a) ton val, kfilename Time on [T], and the file name where hydraulic conductivity
values are listed (Kx , Ky , andKz in a line for each chosen element)
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
172
Table 2.6: Default Values for Fractured Media Saturated Flow Properties.
Parameter
Value
Unit
Name
Default 100 micron fracture
Aperture wf
100 × 10−6
m
Conductivity (computed) Kf
(ρg wf2 )/(12µ)
m s−1
Specific storage (computed) Ssf ρgαw
m−1
Unsaturated flow relation type
Pseudo-fracture
2.8.2.2
Discrete Fractures
Unless you modify the default values, all discrete fracture zones (and 2-D fracture elements)
in the domain will be assigned the default saturated properties which are listed in Table 2.6.
These values are representative of a 100 micron fracture.
You can use the general methods and instructions outlined in Section 2.8.1 to modify the
default distribution of saturated fractured media properties.
As was the case for the instructions which modify porous medium properties, these instructions also have a scope of operation, the only difference being that they would appear in the
.fprops file instead of the .mprops file.
Aperture
Scope: .grok .fprops
1. val Fracture aperture [L], wf in Equation 2.11.
•••
High-k plane
Scope:
.fprops
1. valx Thickness [L] for the high-conductivity plane.
2. valx Hydraulic conductivity [L T−1 ] for the high-conductivity plane.
Treat the fracture material as a high-conductivity plane where the hydraulic conductivity
and thickness are given by the user.
•••
Fracture zone porosity
Scope:
.fprops
1. valx Porosity for the high-conductivity plane.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
173
In the case that fracture aperture is given, the porosity is assumed to be unity and this
command has no effect.
•••
Specific storage
Scope: .grok .fprops
1. val Specific storage [L−1 ], Ssf in Equation 2.14.
•••
Coupling length
Scope: .grok .fprops
1. val Coupling length [L].
•••
Coupling hydraulic conductivity
Scope: .grok .fprops
1. val Coupling hydraulic conductivity [L/T].
•••
Impermeable matrix
Scope: .grok
This command causes the matrix to be considered impermeable and so flow and transport
will only be computed for the fractures. This overrides any values defined in the prefix.grok
or .fprops file so you do not have to alter them.
•••
Make fractures from fgen
Scope:.grok
1. mat name Name of the fracture material whose properties are to be read and assigned.
2. fname Name of the FGEN file which contains the random aperture information.
Chosen faces are assigned to a new fracture zone and given the properties of material
mat name, which is read from the .fprops file fname. Any aperture information contained
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
174
therein will be overwritten by the information that is then read from the FGEN file. The
FGEN file aperture values are distributed on a rectangular grid with uniform spacings in
the three principal axis directions. Element aperture values are then interpolated to the
element face centroids by bilinear (if the FGEN data is on a 2-D plane) or trilinear (if the
FGEN data is fully 3-D) interpolation.
grok assumes that the FGEN file contains log aperture values and so the following conversion
is done:
wf = exp(wfF GEN )
where wfF GEN is the fracture aperture value read from the FGEN file.
•••
Make fractures from tecplot file
Scope: .grok
1. tecplot frac file Name of the Tecplot file which contains the fracture triangle information.
2. label Name of the fracture material whose properties are to be read and assigned.
A new fracture zone is created based on triangle data given in the tecplot file tecplot frac file. Fracture zone properties are assigned from the material label.
The tecplot file must contain one or more tecplot ZONE statements. Each tecplot ZONE
statement must contain, or be followed by a statement containing the string N= followed by
the number of vertices and then by the string E= followed by the number of triangles in the
tecplot ZONE.
Comments beginning with the character # are allowed.
The tecplot variables represent the xyz coordinates of the vertices and must be given in
three-column, point format.
The fracture elements are defined so that they conform closely to the triangulated surface
given in the tecplot file, and can include diagonal (i.e. inclined) faces.
•••
The following Tecplot file produced the fracture elements shown in Figure 2.11.
VARIABLES="X","Y","Z"
ZONE T="Fractures_primary"
N= 5,E= 3,DATAPACKING=POINT,
110. -1. -5.
51. 102.
-3.
-3. 49. 99.
ZONETYPE=FETRIANGLE
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
175
Figure 2.11: Example of fracture generation showing 3D porous medium domain (grey cube),
tecplot triangles (yellow triangles) and the resulting fracture elements (blue triangles).
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
176
0. 100. 100
0. 0. 0.
1 3 5
1 2 3
2 3 4
Make recharge spreading layer
Scope: .grok
1. frack Hydraulic conductivity [L T−1 ] of the recharge spreading layer.
2. aperture Thickness [L] of the recharge spreading layer.
3. remove fixed head conn A logical switch which determines whether the recharge
spreading layer is connected to an existing specified head boundary.
Chosen faces which are on the top of the domain are assigned to a new fracture zone which
has the properties of a recharge spreading layer. A recharge spreading layer is a zone of
relatively high hydraulic conductivity which allows recharge water to infiltrate preferentially
into zones with high hydraulic conductivity (e.g. fractures).
A recharge spreading layer may allow water to bypass the rest of the system if it is connected
to or in close proximity to a constant head boundary which can act as a discharge point
for the system. In such cases you can set the variable remove fixed head conn to be
true, to prevent such direct connections. If your intent is to distribute water preferentially
between fractures and low K matrix, experience has shown that recharge spreading layer
transmissivities two orders of magnitude higher than the matrix are usually sufficient.
•••
2.8.2.3
Dual Continuum
Unless you modify the default values, all dual-continuum zones (and elements) in the domain
will be assigned the default properties which are listed in Table 2.7. These values are
representative of a sand.
Note that the default state of the hydraulic conductivity tensor (Kd in Equation 2.17) is
that it is isotropic. It should also be noted that for dual continuua, off-diagonal terms are
not considered.
You can use the general methods and instructions outlined in Section 2.8.1 to modify the
default distribution of saturated dual-continuum properties.
As was the case for the instructions which modify porous medium properties, these instructions also have a scope of operation, the only difference being that they would appear in the
.dprops file instead of the .mprops file.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
177
Table 2.7: Default Values for Dual-continuum Saturated Flow Properties.
Parameter
Value
Unit
Name
Default Sand
Hydraulic conductivity terms:
Kxx
7.438×10−5
m s−1
Kyy
7.438×10−5
m s−1
−5
Kzz
7.438×10
m s−1
−4
Specific storage Ssd
1.0×10
m−1
Porosity
0.375
Volume fraction of porous medium wd 0.01
Unsaturated flow relation type
Pseudo-soil
K isotropic
Scope: .grok .dprops
1. kval Hydraulic conductivity [L T−1 ].
Assign an isotropic hydraulic conductivity (i.e. Kxxd = Kyyd = Kzzd ).
•••
K anisotropic
Scope: .grok .dprops
1. kvalx, kvaly, kvalz Hydraulic conductivities [L T−1 ] in the x-, y- and z-directions
respectively.
Assigns anisotropic hydraulic conductivities.
•••
Specific storage
Scope: .grok .dprops
1. val Specific storage [L−1 ],Ssd , but defined in a similar way to S − s in Equation 2.10.
•••
Porosity
Scope: .grok .dprops
1. val Porosity [L3 L−3 ], thetasd in Equation 2.16.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
178
•••
Volume fraction dual medium
Scope:
.dprops
1. val Volume fraction [L3 L−3 ], wd in Equation 2.16.
The volume fractions of the dual medium and porous medium always add up to 1.0.
•••
First-order fluid exchange coefficient
Scope:
.dprops
1. val First-order fluid exchange rate, αwd in Equation 2.69.
•••
Interface k
Scope:
.dprops
1. val Interface hydraulic conductivity [L T−1 ], Ka in Equation 2.69.
•••
Convert pm k to macropore k
Scope:
.dprops
1. val Porous medium background hydraulic conductivity Kbkgrd [L/T ].
We can express the bulk hydraulic conductivity of a dual-continuum Kbulk as the sum of
the porous media Kbkgrd and fracture Kd components:
Kbulk = Kbkgrd (1 − wd ) + Kd wd
(2.11)
where wd is the volume fraction [L3 L−3 ] in Equation 2.16.
If we assume that the observed (porous medium) hydraulic conductivity is equal to Kbulk ,
and supply an educated guess for Kbkgrd , we can rearrange the equation and calculate Kd
as :
Kd = [Kbulk − Kbkgrd (1 − wd )]/wd
(2.12)
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
179
For all elements in the currently chosen dual zones, the porous medium hydraulic conductivity is replaced by Kbkgrd and the fracture hydraulic conductivity Kd is set equal to the
calculated value.
•••
2.8.2.4
Wells
Well domains, can be set up using the following instructions, as outlined in Section 2.3.2.2
and in Equation 2.55. The variable radius corresponds to rs , while the pumping rates Qw ,
use the new boundary condition format as described in Section 2.7. Unless the user modifies
the default values, all well zones in the domain will be assigned the default properties.
The default values, Table 2.8, can be and are recommend to be modified to fit the model
application.
Table 2.8: Default Values for Well Properties.
Parameter
Value
Unit
Screen Radius
1×10−5
m
−5
Coupled Conductivity
7.438×10
m s−1
−4
Coupled Length
1×10
m
Well Type
Hagen-Poiseuille
Manning’s Friction Coefficient 0.0548
m−1/3 s
Hazen Williams Coefficient
130
m0.37 s−1
For example, the following set of instructions, with prefix.wprops file Figure 2.12, could be
inserted into the prefix.grok file to produce a pumping well:
use domain type
well
properties file
prefix.wprops
clear chosen segments
choose segments polyline
2
100. 100. 0.
100. 100. 20.
new zone
1
clear chosen zones
choose zone number
!Screen interval
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
180
1
read properties
well one
clear chosen nodes
choose node
100. 100. 0.
!Bottom of pump intake
create node set
well
boundary condition
type
flux nodal
name
well
node set
well
time value table
0.0 -80.0e-3
end
!Pumping duration and rate
end
The well domain example opens the property file prefix.wprops, shown in Figure 2.12, and
creates a 20 m long screen located at x = 100 and y = 100 with a pump intake located
at z = 0. The well one properties are read into grok and a steady pumping rate is set at
-80×10−3 m3 s−1 . If the flowrate is set to zero, the well is passive but can still transmit
water vertically through its screen.
Radius
Scope: .grok .wprops
1. WellScreenRadius Well Screen Radius [L].
The radius of the screen interval of the well.
•••
Infilled
Scope: .grok .wprops
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
181
!-----------------------------------------well one
radius
0.05d0
coupling length
1.0e-4
coupling conductivity
.0023
end
Figure 2.12: Sample well domain property file prefix.wprops.
1. WellPropsInfilled Infilled well properties name from .mprops file.
This command should be included in the input file for an infilled well. The default values
are a sand as described in Table 2.7.
•••
Hagen Poiseuille
Scope: .grok .wprops
This command should be included in the input for the Hagen Poiseuille flow option.
•••
Hazen Williams
Scope: .grok .wprops
This command should be included in the input file for the Hazen Williams flow option.
•••
Manning
Scope: .grok .wprops
This command should be included in the input file for the Manning flow option.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
Friction
Scope: .grok .wprops
1. well friction Manning’s Well Friction.
•••
Hazen Williams coefficient
Scope: .grok .wprops
1. well hw coeffient Hazen-Williams well coefficient.
•••
Saturated wells
Scope: .grok .wprops
This instruction causes wells to remain fully saturated.
•••
Dual nodes for wells
Scope: .grok .wprops
This instruction causes well flow scheme to use dual node approach.
•••
Coupling conductivity
Scope: .grok .wprops
1. WellPropsCplCond Coupling conductivity for well [L T−1 ].
Coupling conductivity parameter only required for the dual node approach for wells.
•••
Coupling length
Scope: .grok .wprops
1. WellPropsCplLngth Coupling length for well [L].
Coupling length parameter only required for the dual node approach for wells.
•••
182
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.8.2.5
183
Tile Drains
Tile drains, as outlined in Section 2.3.2.3, can be set up using the following instructions.
Currently, this option requires that the system be variably-saturated. The default tile drain
values, Table 2.9, can be and are recommend to be modified to fit the model application.
For example, the following set of instructions, with prefix.tprops file Figure 2.13, could be
inserted into the prefix.grok file to produce a horizontal tile drain:
use domain type
tile
properties file
prefix.tprops
clear chosen segments
choose segments polyline
2
15. 1.
2.
15. 29. 2.
!Screen interval
new zone
1
clear chosen zones
choose zone number
1
read properties
tile one
clear chosen nodes
choose node
15. 15. 2.
create node set
tile
boundary condition
type
flux nodal
name
tile one
!Tile drain intake
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
184
node set
tile
time value table
0.0 -2
end
!Pumping duration and rate
end
Table 2.9: Default Values
Parameter
Screen Radius
Coupled Conductivity
Coupled Length
Coupled Scheme
Tile Drain Type
Manning’s Friction Coefficient
Hazen Williams Coefficient
for Tile Drain Properties.
Value
Unit
1×10−5
m
−5
7.438×10
m s−1
−4
1×10
m
Shared
Hagen-Poiseuille
0.0548
m−1/3 s
130
m0.37 s−1
The tile domain example opens the property file prefix.tprops, shown in Figure 2.13, and
creates a 28 m long screen between (15, 1, 2) and (15, 29, 2) with a pump intake located at
(15, 15, 2). The tile one properties are read into grok and a steady pumping rate is set at
-2 m3 s−1 .
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
!-----------------------------------------tile one
radius
0.0108
!Coupling length and conductivity for dual node approach
coupling length
1.0e-4
coupling conductivity
.0023
!Infilled tiled drain with properties from the mprops file
infilled
Porous medium
end
Figure 2.13: Sample tile drain domain property file prefix.tprops.
Radius
Scope: .grok .wprops
1. TileScreenRadius Tile drain screen radius [L].
The radius of the screen interval of the tile drain.
•••
Infilled
Scope: .grok .wprops
This command should be included in the input file for an infilled tile drain.
•••
Hagen Poiseuille
Scope: .grok .wprops
This command should be included in the input for the Hagen Poiseuille flow option.
•••
185
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
186
Hazen Williams
Scope: .grok .wprops
This command should be included in the input file for the Hazen Williams flow option.
•••
Manning
Scope: .grok .wprops
This command should be included in the input file for the Manning flow option.
•••
Friction
Scope: .grok .wprops
1. tile friction Manning’s friction for tile drains.
•••
Hazen Williams coefficient
Scope: .grok .wprops
1. tile hw coeffient Hazen-Williams coefficient for tile drains.
•••
Dual nodes for tiles
Scope: .grok .wprops
This instruction causes the tile drain flow scheme to use dual node approach.
•••
Coupling conductivity
Scope: .grok .wprops
1. TilePropsCplCond Coupling conductivity for tile [L T−1 ].
Coupling conductivity parameter only required for the dual node approach for tile drains.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
187
Coupling length
Scope: .grok .wprops
1. TilePropsCplLngth Coupling length for tile drain [L].
Coupling length parameter only required for the dual node approach for tile drains.
•••
2.8.2.6
Channel Flow
Channel domains, can be set up using the following instructions, as outlined in Section 2.3.2.4
and in Equation 2.65. Unless the user modifies the default values, all channel zones in the
domain will be assigned the default properties. The default values, Table 2.10, can be and
are recommend to be modified to fit the model application.
Table 2.10: Default Values for
Parameter
Shape
Width
Manning’s Friction Coefficient
River Bank Height
Streambed Thickness
Steambed Conductivity
Channel Properties.
Value
Unit
Rectangle m
1
m
0.0548
m−1/3 s
1
m
0.001
m
1×10−4
m
For example, the following set of instructions, with prefix.cprops file Figure 2.14, could be
inserted into the prefix.grok file to produce a channel:
use domain type
channel
properties file
prefixl.cprops
clear chosen segments
choose segments polyline
2
0.0 10.0 20.0
100.0 10.0 10.0
new zone
1
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
clear chosen zones
choose zone number
1
read properties
channel one
clear chosen nodes
choose nodes all
initial head surface elevation
clear chosen nodes
choose node
0.0 10.0 20.0
create node set
inlet_node
boundary condition
type
head
name
inlet_node_flux
node set
inlet_node
time value table
0.0 20.0001
end
end
clear chosen nodes
choose node
100.0 10.0 10.0
create node set
outlet_node
boundary condition
type
channel critical depth
name
188
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
189
cd_outlet_node
node set
outlet_node
end
clear chosen nodes
choose nodes top block
0.0 99.5
9.0 11.
0.0 20.
create node set
internal_node
boundary condition
type
flux nodal
name
internal_flux
node set
internal_node
time value table
0.0 0.601818e-2
end
end
The channel domain example opens the property file prefix.cprops, shown in Figure 2.14,
and creates a 1 m wide channel . The channel one properties are read into grok .
Dual nodes for channel flow
Scope: .grok
•••
This instruction causes the channel flow scheme to use dual node approach.
Type rectangle
Scope: .grok .cprops
1. ChanWidth Channel Width [L].
The width of the rectangular channel.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
190
!-----------------------------------------channel one
type rectangle
1.0
friction
0.01
rill storage height
0.001
obstruction storage height
0.0
streambed thickness
0.3
streambed conductivity
1.0e-4
bank height
1.0
end
Figure 2.14: Sample channel domain property file prefix.cprops.
Type trapezoid
Scope: .grok .cprops
1. ChanWidth Channel Width [L].
2. ChanTrapBankAngle Channel Bank Angle [degree].
The width of the bottom of the trapezoidal channel and the angle of the bank from the
vertical line.
•••
Type circle
Scope: .grok .cprops
1. ChanRadius Channel Radius [L].
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
191
The radius of the circular channel.
•••
Type general
Scope: .grok .cprops
1. nChanTab The number of water depth values in the table.
2. i=1, nChanTab, ChanTabD, ChanTabAF, ChanTabWP, ChanTabTW Tables for water depth, area of flow, wetted perimeter, and top width.
A tabular form of data can be used to specify the area of flow, wetted perimeter, and top
width for given depth values.
•••
Friction
Scope: .grok .cprops
1. ChanFrictn Manning friction for the channel.
Manning friction coefficient for the zone chosen.
•••
Rill storage height
Scope: .grok .cprops
1. ChanRillStor Channel rill storage hiehgt.
A minimum water depth required for flow.
•••
Obstruction storage height
Scope: .grok .cprops
1. ChanOnstructStor Channel obstruction storage hiehgt.
Obstruction storage height.
•••
Streambed thickness
Scope: .grok .cprops
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
192
1. ChanStrmBedThick Thickness of streambed.
Streambed thickness that defines the coupling between channel and subsurface.
•••
Streambed conductivity
Scope: .grok .cprops
1. ChanStrmBedK Hydraulic conductivity of streambed.
Streambed hyarulic conductivity together with thickness to define the coupling conductance
between channel and subsurface.
•••
Bank height
Scope: .grok .cprops
1. ChanBankHeight Height of river bank.
River bank height to define the interaction between the channel and overland flow domains.
•••
2.8.2.7
Cutoff Walls
Cutoff walls can be used to represent internal impermeable boundaries which could occur,
for example, in a funnel-and-gate system.
Cutoff Walls
1. nwalls Number of impermeable cutoff walls to be defined. Read the following nwalls
times:
(a) iorient Wall orientation number.
(b) avalue,afrom,ato,verfrom,verto Position, lateral minimum and maximum
extent, vertical minimum and maximum extent.
The orientation parameter iorient should be set to 1 if the cutoff wall is in the xz plane. In
this case avalue is the y-coordinate of the wall and afrom and ato are the x-coordinates
of the ends of the wall. If iorient is 2 the cutoff wall is in the yz plane and avalue is the
x-coordinate of the wall and afrom and ato are the y-coordinates of the ends of the wall.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
193
In either case verfrom() and verto are the z-coordinates of the bottom and top of the wall
respectively.
Only vertical cutoff walls are allowed.
Cutoff walls are restricted to rectangular block element grids.
•••
2.8.2.8
Imported from FRACTRAN
Fractran properties
This instruction is to be used after a mesh has been loaded using the Read fractran 2d
grid described in Section 2.3.5.1. It uses the FRACTRAN prefix defined there to read the
associated properties.
•••
2.8.3
Variably-saturated Subsurface Flow
As discussed in Section 2.1, one of the requirements for simulating variably-saturated flow is
that we define the constitutive relationships that govern the relation between the pressure
head, saturation and relative permeability. These relationships must be defined for the
porous medium, discrete fractures and the dual continuum and, for each of these types of
media, the choice is to use either pseudo-soil, functional or tabular relationships. Wells are
a special case and are handled automatically by HydroGeoSphere.
Media specific instructions and default values for porous media, discrete fractures and dual
continuua are given in Sections 2.8.3.1, 2.8.3.2 and 2.8.3.3 respectively.
General instructions for modifying the default functional and tabular relationships are given
in Sections 2.8.3.4 and 2.8.3.5 respectively.
2.8.3.1
Porous Medium
By default, all porous media zones (and elements) in the domain will use a constitutive
relationship based on the pseudo-soil relation, as developed by Huyakorn et al. [1994].
Essentially, in the pseudo soil relationship, the medium is assigned a nodal saturation of 1
above the water table and 0 (zero) below it. Relative permeability is applied to horizontal
flow only and water travels vertically under saturated hydraulic conductivity conditions.
If you wish to use Van Genuchten or Brooks-Corey functions to describe the constitutive
relationship you can do so using the instructions given in Section 2.8.3.4. Unless you
modify them, the default values given in Table 2.11 will be used to define the functional
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
194
Table 2.11: Default Values for Functions Defining the Porous Media Constitutive Relationships, for the Van Genuchten and Brooks-Corey models.
Parameter
Value
Unit
Common
Residual water saturation, Swr
0.053
Pore-connectivity, lp
0.5
Beta (power index), β
3.1768
Van Genuchten
Alpha (power index), α
3.5237
m−1
Gamma (Power index, computed), γ 1 − 1/β
Brooks-Corey
Exponent (computed)
2/β + lp + 2
Air entry pressure, ψae
-0.16
m
Alpha (power index, computed), α
−1/ψae
m−1
Table 2.12: Default Pressure-saturation and Saturation-relative permeability Tables for
Variably-saturated Porous Media.
Pressure(m) ψ Saturation Sw
-10.0
0.053
0.0
1.0
Saturation Sw
0.053
1.0
Relative permeability krw
0.053
1.0
relationships.
If you wish to use tables to describe the constitutive relationships you can do so using
the instructions given in Section 2.8.3.5. Unless you modify them, the default values of
water saturation versus pressure head and saturation versus relative permeability listed in
Table 2.12 will be used to define the tabular relationships.
Relative permeability xy
Scope: .grok .mprops
When using functions or tables to define the constitutive relationships, this instruction causes
grok to apply the relative permeability to horizontal flow only so that water travels vertically
under saturated hydraulic conductivity conditions, similar to the behaviour of the pseudo-soil
relation. This instruction should be applied to porous media, as discussed in Section 2.8.1.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
195
Table 2.13: Default Values for Functions Defining the Discrete Fracture Constitutive
Relationships, for the Van Genuchten and Brooks-Corey models.
Parameter
Value
Unit
Residual water saturation, Swr
0.053
Power index (alpha), α
3.5237
m−1
Power index (beta), β
3.1768
Power index (gamma, computed), γ 1 − 1/β
Pore-connectivity, lP
0.5
Brooks-Corey exponent
2/β + lp + 2
Table 2.14: Default Pressure-saturation and Saturation-relative permeability Tables for
Variably-saturated Discrete Fractures.
Pressure(m) ψ Saturation Sw
-10.0
0.053
0.0
1.0
Saturation Sw
0.053
1.0
2.8.3.2
Relative permeability krw
0.053
1.0
Discrete Fractures
By default, all discrete fracture zones (and elements) in the domain will use a constitutive
relationship based on the pseudo-soil relation, as developed by Huyakorn et al. [1994].
Essentially, in the pseudo soil relation, the medium is assigned a nodal saturation of 1 above
the water table and 0 (zero) below it. Also by default, the effective area available for flow
across the fracture-matrix interface is maintained at its maximum value, regardless of the
state of fracture saturation.
If you wish to use Van Genuchten or Brooks-Corey functions to describe the constitutive
relationships you can do so using the instructions given in Section 2.8.3.4. Unless you
modify them, the default values given in Table 2.13 will be used to define the functional
relationships.
If you wish to use tables to describe the constitutive relationships you can do so using
the instructions given in Section 2.8.3.5. Unless you modify them, the default values of
water saturation versus pressure head and saturation versus relative permeability listed in
Table 2.14 will be used to define the tabular relationships.
If you wish to modify the default relationship between pressure, saturation and effective
area you can do so using the instructions given below. For each instruction we will again
indicate its scope (i.e. .grok, .fprops). Note that the functional relationships are always
applied in a similar way to all fracture zones in the domain, while tabular relationships can
vary from fracture zone to fracture zone if so desired.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
196
Table 2.15: Default Pressure-Effective Area Table for Variably-saturated Discrete Fractured
Media.
Pressure(m) Effective Area
0.0
1.0
The following instructions should be applied to discrete fractures, as discussed in Section 2.8.1.
Effective area tables...end
Scope:.grok .fprops
Causes grok to use tables to describe the pressure-effective area relationship for the fracture
and to begin reading a group of effective area table instructions until it encounters an End
instruction.
By default values of contact area versus pressure head listed in Table 2.15 will be used.
•••
These instructions are available for modifying the default pressure-effective area relationship:
Pressure-effective area
Scope: .grok .fprops
1.
2.
pressure(1), effective area(1) First entry.
pressure(2), effective area(2) Second entry.
..
. etc.
n.
pressure(n), effective area(n) nth entry.
n+1. end The string ’end’
Causes HydroGeoSphere to begin reading instructions which describe the pressure-contact
area table which will define the relationship for the fracture.
Paired values of pressure ψ and effective area, which varies between 0 (full reduction) and
1 (no reduction), should be entered from lowest pressure (i.e. most negative) to highest
pressure, usually zero. The last line of the table must be an end card, and the number of
entries in the list are counted automatically to determine the table size.
•••
Effective area Wang-Narasimhan functions
Scope:.grok
Causes HydroGeoSphere to use the approach of Wang and Narasimhan[1985], as discussed
in Section 4.1.4, for computing the pressure-effective area relationship for the fractures.
These functions will automatically be applied to all fracture zones.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
197
Table 2.16: Default Values for Functions Defining the Dual Continuua Constitutive Relationships, for the Van Genuchten and Brooks-Corey models.
Parameter
Value
Unit
Residual water saturation, Swr
0.053
Power index (alpha), α
3.5237
m−1
Power index (beta), β
3.1768
Power index (gamma, computed), γ 1 − 1/β
Pore-connectivity, lp
0.5
Brooks-Corey exponent
2/β + lp + 2
Table 2.17: Default Pressure-saturation and Saturation-relative permeability Tables for
Variably-saturated Dual Continuua.
Pressure(m) ψ Saturation Sw
-10.0
0.053
0.0
1.0
Saturation Sw
0.053
1.0
Relative permeability krw
0.053
1.0
•••
2.8.3.3
Dual continuum
Dual continuua zones (and elements) in the domain will use a constitutive relationship
based on the pseudo-soil relation, as developed by Huyakorn et al. [1994]. Essentially, in the
pseudo soil relationship, the medium is assigned a nodal saturation of 1 above the water
table and 0 (zero) below it. Relative permeability is applied to horizontal flow only and
water travels vertically under saturated hydraulic conductivity conditions.
If you wish to use Van Genuchten or Brooks-Corey functions to describe the constitutive
relationships you can do so using the instructions given in Section 2.8.3.4. Unless you
modify them, the default values given in Table 2.16 will be used to define the functional
relationships.
If you wish to use tables to describe the constitutive relationships you can do so using
the instructions given in Section 2.8.3.5. Unless you modify them, the default values of
water saturation versus pressure head and saturation versus relative permeability listed in
Table 2.17 will be used to define the tabular relationships.
Relative permeability xy
Scope: .grok .dprops
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
198
When using functions or tables to define the constitutive relationships, this instruction
causes HydroGeoSphere to apply the relative permeability to horizontal flow only so that
water travels vertically under saturated hydraulic conductivity conditions, similar to the
behaviour of the pseudo-soil relation. This instruction should be applied to dual continuua,
as discussed in Section 2.8.1.
•••
When simulating a system with porous and dual continuua, the constitutive relationships of
the interface between the two continuua must also be defined. The following instructions
allow you to do this:
Interface unsaturated tables
Interface unsaturated van genuchten functions
Interface unsaturated brooks-corey functions
Interface relative permeability xy
Input is identical to the generic forms of the commands discussed in the following sections,
except that the scope is restricted to .dprops.
We will now discuss instructions of a general nature which can be used to modify the default
constitutive relationships for the various media, beginning with the functional relationships.
2.8.3.4
Functional Constitutive Relationships
The instructions described here can be used to modify the default variably-saturated
properties for a porous medium, discrete fracture or dual continuum. Before issuing them
it is necessary to choose which type of medium they should be applied to, as discussed in
Section 2.8.1.
For each instruction we will again indicate its scope (i.e. .grok .mprops, .dprops,
.fprops). Recall that if an instruction is used in the prefix.grok file, it will affect the
current set of chosen zones, while in a properties (e.g. .mprops) file, it will only affect the
named material of which it is a part.
Unsaturated brooks-corey functions...End
Scope: .grok .mprops .fprops .dprops
Causes grok to use Brooks-Corey functions (Equation 2.5) to describe the constitutive
relationships for the medium and to begin reading a group of instructions that define the
function until it encounters an End instruction.
•••
Unsaturated van genuchten functions...End
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
199
Scope: .grok .mprops .fprops .dprops
Causes grok to use Van Genuchten functions (Equation 2.7) to describe the constitutive
relationships for the medium and to begin reading a group of instructions that define the
function until it encounters an End instruction.
•••
The previous two instructions are used to choose between the Brooks-Corey of Van Genuchten
approaches for defining the functions. In either case, if no further instructions are issued,
the default function parameter values given in Tables 2.11, 2.13 and 2.16 will be used for
porous media, discrete fractures and dual continuua respectively.
In the case of porous and dual media, these instructions override the pseudo-soil default so
that relative permeability factors are applied to both horizontal and vertical flow.
The following instructions can be used to modify the parameters which define the constitutive
relationships:
Residual saturation
Scope: .grok .mprops .fprops .dprops
1. val Residual water saturation Swr .
•••
Alpha
Scope: .grok .mprops .fprops .dprops
1. val Power index alpha α [L−1 ].
For the Brooks-Corey function, this parameter is computed automatically from the air entry
pressure. If you use this instruction you will be prompted to enter an air-entry pressure
instead and grok will stop.
•••
Beta
Scope: .grok .mprops .fprops .dprops
1. val Power index beta β.
For the van Genuchten function, this parameter must be greater than 1.0. If you enter a
value less than 1.0 you will be warned and grok will stop. This value is used to compute ν
according to Equation 2.9.
For the Brooks-Corey formulation, this value is used to recalculate the exponent in equation 2.6 unless the instruction Exponent has been used previously for this material.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
200
•••
Pore connectivity
Scope: .grok .mprops .fprops .dprops
1. val Pore connectivity lp . The default value is 0.5.
Note that the default value of pore connectivity of 0.5 is a value recommended for the van
Genuchten formulation, so your will probably want to redefine it for the Brooks-Corey
formulation. The value recommended in this case is 2.0.
For the Brooks-Corey formulation, this value is used to recalculate the exponent in equation 2.6 unless the instruction Exponent has been used previously for this material.
•••
Air entry pressure
Scope: .grok .mprops .fprops .dprops
1. val Air entry pressure [L].
For the Brooks-Corey function, this value is used to compute α [L−1 ] according to Equation 2.5.
For the van Genuchten function, this parameter is not used. If you use this instruction you
will be prompted to remove it and grok will stop.
•••
Exponent
Scope: .grok .mprops .fprops .dprops
1. val Exponent in equation 2.6, which is used to computes kr in the Brooks-Corey
function. By default, the exponent is computed automatically from β and lp . This
instruction allows you to enter a different value.
For the van Genuchten function, this parameter is not used. If you use this instruction you
will be prompted to remove it and grok will stop.
•••
Minimum relative permeability
Scope: .grok .mprops .fprops .dprops
1. val Minimum relative permeability. During a simulation, the model will choose
the maximum value for relative permeability between the minimum value specified
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
201
here and the value computed from the active function, either Van Genuchten or
Brooks-Corey. This option may improve convergence of the non-linear solution.
The following instructions can be used to generate pressure-saturation and saturation-relative
permeability tables using the Van Genuchten or Brooks-Corey parameters defined for the
medium. In addition to the instructions given above which define the function, these
additional instructions affect the properties of the tabular data.
•••
Table smoothness factor
Scope: .grok .mprops
1. val Smaller values cause more points to be generated for a smoother, more accurate
table. The default value is 1 × 10−3 .
•••
Table minimum pressure
Scope: .grok .mprops
1. val The minimum pressure value in the pressure-saturation table. The default value
is -1000.
•••
Table maximum s-k slope
Scope: .grok .mprops
1. val The maximum slope of the saturation-relative permeability curve when nearing
full saturation. The default value is 100.
•••
Generate tables from unsaturated functions
Scope: .grok .mprops
This instruction generates the tables from the previously defined function parameters and
writes the pressure saturation data to the file prefixo.p s table.material.dat and the
saturation-relative permeability data to the file prefixo.s k table.material.dat. These
files are written in Tecplot-compatible format so they can be easily plotted. The tabular
values in the files can be copied into the .mprops file for use with the unsaturated table
instructions described in Section 2.8.3.5
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
202
•••
For example, if the following Van Genuchten function parameters were defined in the
.mprops file:
unsaturated van genuchten functions
alpha
2.25
beta
1.89
residual saturation
0.16
minimum relative permeability
1e-2
table smoothness factor
1e-2
table minimum pressure
-10.
generate tables from unsaturated functions
end ! functions
then the contents of the pressure-saturation output file would be:
Title = "test.mprops/porous medium"
# Van Genuchten function:
# Residual water saturation
0.160000
# Alpha
2.25000
# Power index (beta)
1.89000
# Pore connectivity
0.500000
# Computed power index (gamma)
0.685218
# Minimum relative permeability
# Table minimum pressure
# Table maximum s-k slope
# Table smoothness factor
variables="Pressure","Saturation"
zone t="Pressure - Saturation"
#unsaturated tables
#pressure-saturation
-10.0000000000000
0.174869375404582
0.100000E-01
-10.0000
100.000
0.100000E-01
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
203
-7.50000000000000
0.181552629607745
-5.00000000000000
0.196301039876425
-3.75000000000000
0.212424751627904
-2.50000000000000
0.247430530192203
-1.87500000000000
0.284639681867462
-1.25000000000000
0.361026934163956
-0.937500000000000
0.435114163471319
-0.625000000000000
0.564528209032747
0.000000000000000E+000
1.00000000000000
#end ! pressure-saturation
The values used to define the table are included as comments, as are the instructions needed
for incorporating the tabular data in the .mprops file.
Figure 2.15 is a plot of the resulting constitutive relationships. Note that the .mprops file
and material names are used to form the Tecplot title and appear on the plot.
If desired, the .mprops file can be modified to use the tabular relationships. It is recommended
that the Van Genuchten parameters that were used to generate the tabular data are retained
in the file, either as comments or inside a skip on...skip off section. For our example, we
could do the following:
skip on
unsaturated van genuchten functions
...etc...
end ! functions
skip off
unsaturated tables
pressure-saturation
-10.0000000000000
0.174869375404582
-7.50000000000000
0.181552629607745
-5.00000000000000
0.196301039876425
-3.75000000000000
0.212424751627904
-2.50000000000000
0.247430530192203
-1.87500000000000
0.284639681867462
-1.25000000000000
0.361026934163956
-0.937500000000000
0.435114163471319
-0.625000000000000
0.564528209032747
0.000000000000000E+000
1.00000000000000
end ! pressure-saturation
saturation-relative k
0.000000000000000E+000
0.500000000000000
1.000000000000000E-002
2.340977494655262E-002
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
204
Figure 2.15: Example of Using Functional Parameters to Generate Tabular Constitutive
Relationships.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
205
0.750000000000000
0.180180362276789
0.875000000000000
0.398602012758378
0.937500000000000
0.591618307040100
1.00000000000000
1.00000000000000
end ! saturation-relative k
end ! unsaturated tables
We will now move on to discuss instructions which can be used to define tabular relationships.
2.8.3.5
Tabular Constitutive Relationships
The instructions described here can be used to modify the default variably-saturated
properties for a porous medium, discrete fracture or dual continuum. Before issuing them
it is necessary to choose which type of medium they should be applied to, as discussed in
Section 2.8.1.
For each instruction we will again indicate its scope (i.e. .grok .mprops, .fprops,
.dprops). Recall that if an instruction is used in the prefix.grok file, it will affect the
current set of chosen zones, while in a properties (e.g. .mprops) file, it will only affect the
named material of which it is a part.
Unsaturated tables
Scope: .grok .mprops .fprops .dprops
Causes grok to use tables to describe the constitutive relationships for the medium and
to begin reading a group of instructions that define the tables until it encounters an End
instruction.
If no further instructions are issued, the default tabular parameter values given in Tables 2.12,
2.14 and 2.17 will be used for porous media, discrete fractures and dual continuua respectively.
In the case of porous and dual media, this instruction overrides the pseudo-soil default so
that relative permeability factors are applied to both horizontal and vertical flow.
•••
The following instructions can be used to modify the default tables which define the
constitutive relationships:
Pressure-saturation
Scope: .grok .mprops .fprops .dprops
1.
2.
pressure(1), saturation(1) First entry.
pressure(2), saturation(2) Second entry.
..
. etc.
n.
pressure(n), saturation(n) nth entry.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
Parameter
Name
X friction factor
Y friction factor
Rill storage height hds
Obstruction storage height ho
Node coupling scheme
Coupling length
Value
Surface flow defaults
0.0548
0.0548
0.0
0.0
shared
1 × 10−4
206
Unit
m
m
m
Table 2.18: Default Properties for Surface Flow.
n+1. end The string ’end’
Paired values of pressure ψ and saturation S should be entered from lowest pressure (i.e. most
negative) to highest pressure, usually zero. The last line of the table must be an end card,
and the number of entries in the list are counted automatically to determine the table size.
•••
Saturation-relative k
Scope: .grok .mprops .fprops .dprops
1.
2.
saturation(1), relative permeability(1) First entry.
saturation(2), relative permeability(2) Second entry.
..
. etc.
n.
saturation(n), relative permeability(n) nth entry.
n+1. end The string ’end’
Paired values of saturation S and relative permeability krw should be entered from lowest
to highest saturation. The last line of the table must be an end card, and the number of
entries in the list are counted automatically to determine the table size.
•••
2.8.4
Surface Flow
Unless you modify the default values, all zones (and elements) in the the surface flow domain
will be assigned the default properties listed in Table 2.18.
For each instruction we will again indicate its scope (i.e. .grok, .oprops). Recall that if
an instruction is used in the prefix.grok file, it will affect the current set of chosen zones,
while in a properties (e.g. .oprops) file, it will only affect the named material of which it is
a part.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
207
X friction
Scope: .grok .oprops
1. val x friction factor, nx in Equation 2.35.
•••
Y friction
Scope: .grok .oprops
1. val y friction factor, ny in Equation 2.36.
•••
Time varying friction...End
Scope: .oprops
1.
2.
time(1), nmann(1) First entry.
time(2), nmann(2) Second entry.
..
. etc.
n.
time(n), nmann(n) nth entry.
Causes grok to begin reading a group of time vs Manning roughness coefficient (nx = ny )
instructions until it encounters an End instruction.
•••
Rill storage height
Scope: .grok .oprops
1. val Rill storage height [L], Hd in Section 2.2.2.2.
•••
Obstruction storage height
Scope: .grok .oprops
1. val Obstruction storage height [L], Ho in Section 2.2.2.2.
•••
Coupling length
Scope: .grok .oprops
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
208
1. val Coupling length [L], lexch in Equation 2.71.
•••
Maximum flow depth
Scope: .grok
1. val Maximum flow depth [L], in Equations 2.42 and 2.43, the maximum of do .
•••
Minimum elemental energy slope
Scope: .grok
1. val Minimum elemental energy slope [-], in Equations 2.42 and 2.43, the minimum of
∂ho /∂s.
•••
2.8.5
Evapotranspiration
NOTE: Moisture contents referred to below and in section 2.5.3 are actually input in grok
as saturations, which are less prone to error as they always vary between zero and 1, while
moisture content varies between zero and porosity.
Unless you modify the default values, all zones (and elements) in the ET domain will be
assigned the default properties listed in Table 2.19. .
For each instruction we will again indicate its scope (i.e. .grok, .etprops). Recall that if
an instruction is used in the prefix.grok file, it will affect the current set of chosen zones,
while in a properties (e.g. .etprops) file, it will only affect the named material of which it
is a part.
Canopy storage parameter
Scope: .etprops
1. cint et Canopy storage parameter [L], cint in Equation 2.73.
•••
Note that canopy evaporation is assumed to be zero when LAI is less than 10−8 .
Initial interception storage
Scope: .etprops
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
Table 2.19: Default Properties for
Parameter
Name
Canopy storage parameter
Initial interception storage
Transpiration fitting parameters:
C1
C2
C3
Transpiration limiting saturations:
Wilting point
Field capacity
Oxic limit
Anoxic limit
Evaporation limiting saturations:
Minimum
Maximum
Leaf area index
Root zone depth
Evaporation depth
209
Evapotranspiration.
Value
Unit
Default ET (grass)
1.5
mm
1.5
mm
0.5
0.0
1.0
0.05
0.2
0.6
0.8
0.5
0.1
1.0
0.2
0.2
m
m
0 in Equation 3.59.
1. init sint et initial canopy interception storage value [L], Sint
•••
Transpiration fitting parameters
Scope: .etprops
1. C 1 Coefficient C1 [dimensionless] in Equation 2.75.
2. C 2 Coefficient C2 [dimensionless] in Equation 2.75.
3. C 3 Coefficient C3 [dimensionless] in Equation 2.77. By default, this coefficient is set
to 1.0, which gives a linear ramping function whereas higher values would give higher
order ramping functions.
•••
Transpiration limiting saturations
Scope: .etprops
1. thwp et Saturation [dimensionless] at wilting point, θwp in Equation 2.77.
2. thfc et Saturation [dimensionless] at field capacity, θf c in Equation 2.77.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
210
3. tho et Saturation [dimensionless] at oxic limit, θo in Equation 2.77.
4. than et Saturation [dimensionless] at anoxic limit, θan in Equation 2.77.
•••
Transpiration limiting pressure head
Scope: .etprops
1. Hwp et Pressure head [L] at wilting point, ψwp = ψ(θwp ) .
2. Hfc et Pressure head [L] at field capacity, ψf c = ψ(θf c ).
3. Ho et Pressure head [L] at oxic limit, ψo = ψ(θo ).
4. Han et Pressure head [L] at anoxic limit, ψan = ψ(θan ).
This is an alternative the ’transpiration limiting saturations’ command.
•••
Evaporation limiting saturations
Scope: .etprops
1. the2 et Saturation [dimensionless] below which evaporation is zero, θe2 in Equation 2.77.
2. the1 et Saturation [dimensionless] above which full evaporation can occur, θe1 in
Equation 2.77.
•••
Evaporation limiting pressure head
Scope: .etprops
1. He2 et Pressure head [L] below which evaporation is zero, ψe2 = ψ(θe2 ).
2. He1 et Pressure head [L] above which full evaporation can occur, ψe1 = ψ(θe1 ).
This is an alternative to the ’evaporation limiting saturations’ command
•••
The following instruction can be used to modify the default value (1.0 for all time) of the
leaf area index LAI:
Lai tables...End
Scope: .etprops
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
211
Table 2.20: Observed Values of Leaf Area Index [Scurlock et al., 2001] and Maximum
Rooting Depth [Canadell et al., 1996] for Various Terrestrial Biomes.
Vegetative cover
Leaf area Maximum rooting
index
depth
Desert
1.31
9.5
Tundra, circumpolar and alpine
2.69
0.5
Wetlands, temperate and tropical
6.34
Grasslands, temperate
2.50
2.6
Grasslands, tropical
2.50
15.0
Crops, temperate and tropical
4.22
2.1
Shrubland, heath or Mediterranean-type vegetation
5.2
Forest:
boreal deciduous broadleaf
2.64
2.0
boreal evergreen needleleaf
3.50
2.0
boreal/temperate deciduous needleleaf
4.63
2.0
temperate deciduous broadleaf
5.12
2.9
temperate evergreen needleleaf
6.70
3.9
temperate evergreen broadleaf
5.82
tropical deciduous broadleaf
3.92
3.7
tropical evergreen broadleaf
4.90
7.3
Plantations (managed forests)
8.72
Overall mean
5.23
1.
2.
time(1), lai(1) First entry.
time(2), lai(2) Second entry.
..
. etc.
n.
time(n), lai(n) nth entry.
Causes grok to begin reading a group of time vs leaf area index instructions until it
encounters an End instruction.
Paired values of time t and leaf are index LAI should be entered from earliest to latest time.
The number of entries in the list are counted automatically to determine the table size.
Observed values of leaf are index [Scurlock et al., 2001] and maximum rooting depth [Canadell
et al., 1996] for various terrestrial biomes are shown in Table 2.20 .
•••
Root depth
Scope: .etprops
1. root depth et Maximum root depth [L].
A normalized root depth function is mapped onto porous media elements above this maxi-
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
212
Figure 2.16: Normalized Root Depth Functions.
mum depth. Currently, four root depth functions are available; constant, linear, quadratic
and cubic, as shown in Figure 2.16. These functions are defined such that the area under
the normalized function is 1.0.
•••
By default, the linear form of the depth function is used. The following instructions are
available for using the other forms:
Rdf constant function
Rdf quadratic decay function
Rdf cubic decay function
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
213
Root growth...End
grok reads instructions that define a root growth function until it encounters an End
instruction.
•••
Root growth can be defined by a table using the command:
Time-root depth table...End
Reads a time and root depth time series until it encounters an End instruction.
•••
Root growth can also be defined by a logistic growth function via the following commands:
Root growth period
1. Rg period Period for vegetation growth [T], typically one year.
•••
Growth beginning time
1. Rg begin Start time of root growth [T].
•••
Harvest time
1. Rg harvest Crop harvest time [T].
•••
Initial root depth
1. Rg initdepth Initial crop root depth [L].
•••
Maximum root depth
1. Rg maxdepth Maximum crop root depth [L].
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
214
•••
Verhulst–Pearl growth, time-depth
1. Rg vptime, Rg vpdepth Time [T] and crop root depth [L] data that is used to
derive a Verhulst–Pearl growth function.
•••
Verhulst–Pearl growth, 50% max depth
For Verhulst–Pearl growth, 50% of the maximum crop root depth is assumed to be reached
after 50% of the growing season.
•••
The following is an example of defining root growth via a logistic growth function.
root growth
! option #1
!
time-root depth table
!
end
! option #2
root growth period
365.0d0
growth beginning time
160.0d0
harvest time
250.0d0
initial root depth
0.1
maximum root depth
80.d0
!
verhulst-pearl growth, time-depth
!
205.0 40.0d0
! option #3
verhulst-pearl growth, 50\% max depth
end
Evaporation depth
Scope: .etprops
1. evap depth et Evaporation depth [L].
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
215
Evaporation as a function of depth is treated in a similar fashion as the root zone depth
described above.
•••
By default, the linear form of the evaporation function is used. The following instructions
are available for using the other forms:
Edf constant function
Edf quadratic decay function
Edf cubic decay function
Potential evaporation using transpiration
Scope: .grok
With this instruction potential evaporation is calculated using Equation 2.80. By default
potential evaporation is calculated from Equation 2.81.
•••
Echo et at point
Scope: .grok
1. x1, y1 xy-coordinate.
This instruction finds the column of nodes that the given coordinate falls within and then
writes the pertinent evapotranspiration information to the o.eco file.
•••
For example:
ET properties for element column
ZONE: 1
ET MATERIAL: dense deciduous forest
Canopy storage parameter
Transpiration fitting parameter C1
Transpiration fitting parameter C2
Transpiration fitting parameter C3
Moisture content at wilting point
Moisture content at field capacity
Moisture content at oxic limit
Moisture content at anoxic limit
Moisture content at at energy limiting maximum
Moisture content at at energy limiting minimum
=
=
=
=
=
=
=
=
=
=
0.0
0.3
0.2
3.0E-6
0.32
0.2
0.76
0.9
0.32
0.2
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
Initial interception storage
Tabular data:
Time
0.00000
0.100000E+42
=
0.0
LAI
2.08000
2.08000
Maximum evaporative zone depth
Depth
EDF
0.00000
2.00000
1.00000
0.00000
=
2.0
Maximum root zone depth
Depth
RDF
0.00000
2.00000
1.00000
0.00000
=
4.0
ELEMENT
12889
11528
10167
8806
7445
6084
4723
3362
2001
640
216
ET FLAG
T
T
T
T
T
T
T
T
T
T
Totals
DEPTH
0.00000
0.303244
0.606488
0.909732
1.21298
1.51622
1.81946
2.1227
2.4259
2.7292
EDF
RDF
0.281045
0.146305
0.234783
0.134740
0.188522
0.123174
0.142261
0.111609
0.959994E-01 0.100044
0.497381E-01 0.884783E-01
0.765174E-02 0.769130E-01
0.00000
0.653477E-01
0.00000
0.537824E-01
0.00000
0.422171E-01
------------ -----------1.00000
0.942610
In this case, the element column falls in ET zone 1, and the default linear root depth and
evaporation depth functions have been used and mapped onto it. All of the evaporative
potential has been distributed to the element column, as indicated by a total EDF value of
1.0. However, only a portion (0.942610 or 94%) of the total RDF of 1.0 has been mapped
onto it, because the maximum root zone depth (4 m) exceeds the total depth of the element
column at this point (2.7292 m).
2.8.6
2.8.6.1
Transport
Porous Medium
By default, all porous media zones (and elements) in the domain will be assigned default
porous media transport properties which are listed in Table 2.21. Included here are pa-
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
217
Table 2.21: Default Values for Porous Media Transport Properties.
Parameter
Value
Unit
Longitudinal dispersivity αl
1.0
m
Horizontal component of transverse dispersivity αt 0.1
m
Vertical component of transverse dispersivity αt
0.1
m
Bulk density ρ
2031.25 kg m−3
Tortuosity τ
0.1
Immobile zone porosity θImm
0.0
Immobile zone mass transfer coefficient α
0.0
s−1
Reverse fractionation rate kr
0.0
s−1
Fractionation factor αr
0.0
Mass ratio, solid to water phases xr
0.0
Thermal conductivity of the solids ks
3.0
W m−1 K−1
Specific heat capacity of the solids cs
738.0
J kg−1 K−1
Density of the solids ρs
2650.0
kg m−3
rameters for modifying the porous medium so that it acts as a double-porosity medium for
simulating transport, as described in Section 2.6.1.3 and also for isotopic fractionation, as
described in Section 2.6.1.4.
The following instructions can be applied to porous media, as discussed in Section 2.8.1, to
modify the default transport parameters. For each instruction we will indicate its scope (i.e.
.grok .mprops). Recall that if an instruction is used in the prefix.grok file, it will affect
the current set of chosen zones, while in a properties (e.g. .mprops) file, it will only affect
the named material of which it is a part.
Longitudinal dispersivity
Scope: .grok .mprops
1. val Longitudinal dispersivity [L], αl in Equation 2.97.
•••
Transverse dispersivity
Scope: .grok .mprops
1. val Horizontal component of the transverse dispersivity [L], αt in Equation 2.97.
•••
Vertical transverse dispersivity
Scope: .grok .mprops
1. val Vertical component of the transverse dispersivity [L], αt in Equation 2.97.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
218
•••
Tortuosity
Scope: .grok .mprops
1. val Tortuosity , τ in Equation 2.97.
•••
Anisotropic tortuosity ratio
Scope: .grok .mprops
1. y tortratio Tortuosity ratio in the y-direction. Default value is 1.
2. z tortratio Tortuosity ratio in the z-direction. Default value is 1.
By default, tortuosity is isotropic, since the ratio values are set to 1 in both the y and z
directions. You may make tortuosity anisotropic by entering a value greater than 0 and less
than 1. These values will be used to multiple the tortuosity , τ in the y and z directions
respectively, to obtain the directional values.
•••
Bulk density
Scope: .grok .mprops
1. val Bulk density [M L−3 ]. Bulk density of dry soil. If it is necessary, the bulk density
of a solid is calculated as ρs = ρb /(1 − θs ).
•••
By default, the porous medium acts as a single-porosity medium (i.e. the immobile zone
is inactive) because the porosity and mass transfer coefficient are set to zero. In order to
activate the double porosity feature, you can enter non-zero values for these parameters
using the following two instructions:
Immobile zone porosity
Scope: .grok .mprops
1. val Immobile zone porosity, θImm in Equations 2.101, 2.135 and 2.136.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
219
Immobile zone mass transfer coefficient
Scope: .grok .mprops
1. val Immobile zone mass transfer coefficient [T−1 ], αImm in Equation 2.134.
•••
Isotope fractionation data...End
Scope: .mprops
Causes grok to begin reading a group of isotope fractionation instructions until it encounters
an End instruction.
If no further instructions are issued, the default isotopic fractionation parameter values
listed in Table 2.21 will be used.
•••
The following three instructions can be used to change these values:
Reverse rate
Scope:
.mprops
1. val Reverse fractionation rate [L−1 ], kr in Equation 2.143.
•••
Fractionation factor
Scope:
.mprops
1. val Fractionation factor, αr in Equation 2.143.
•••
Rock-water mass ratio
Scope:
.mprops
1. val Isotopic rock-water mass ratio, xr in Equation 2.102.
•••
The next four instructions can be used to change the thermal properties of the porous
medium:
Thermal conductivity of solid
Scope: .grok .mprops
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
220
Table 2.22: Default Values for Discrete Fracture Transport Properties.
Parameter
Value Unit
Longitudinal dispersivity αl 1.0
m
Transverse dispersivity αt
0.1
m
1. val Temperature invariant thermal conductivity of the solids [W L−1 K−1 ]. The bulk
thermal conductivity is computed internally from the volume fractions of the solid
and liquid phases.
•••
Temperature-dependent thermal conductivity of solid
Scope: .grok .mprops
1. k s1 Thermal conductivity [W L−1 K−1 ] at temperature ts1 .
2. t s1 Temperature [o C] at which the thermal conductivity is equal to ks1 .
If that instruction is specified, the thermal conductivity of the solid phase is temperature
dependent. The bulk thermal conductivity is also temperature dependent and is computed
internally from the volume fractions of the solid and liquid phases. It is assumed here
that the thermal conducutivity of the solids decreases at a constant rate of 1% per 10o C
increase in temperature and the relationship between thermal conductivity and temperature
is defined with the pair of values (ks1 ,ts1 ).
•••
Specific heat capacity of solid
Scope: .grok .mprops
1. val Specific heat capacity of the solid phase [J kg−1 K−1 ]. The default value is 730.0
J kg−1 K−1 .
•••
Note that the density of the solid phase of the porous medium is now computed automatically
from the bulk density and porosity.
2.8.6.2
Discrete Fractures
By default, all fracture zones (and elements) in the domain will be assigned default transport
properties which are listed in Table 2.22.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
221
The following instructions can be applied to discrete fractures, as discussed in Section 2.8.1,
to modify the default transport parameters. For each instruction we will indicate its scope
(i.e. .grok .fprops). Recall that if an instruction is used in the prefix.grok file, it will
affect the current set of chosen zones, while in a properties (e.g. .fprops) file, it will only
affect the named material of which it is a part.
Longitudinal dispersivity
Scope: .grok .fprops
1. val
Longitudinal dispersivity [L], similar to αl in Equation 2.97.
•••
Transverse dispersivity
Scope: .grok .fprops
1. val Transverse dispersivity [L], similar to αt in Equation 2.97.
•••
Coupling dispersivity
Scope: .grok .oprops
1. val Dispersivity value [L] to be applied during exchange between the overland flow
and subsurface domains.
Default value is 0.0.
•••
2.8.6.3
Dual continuum
By default, all dual continuua zones (and elements) in the domain will be assigned default
transport properties which are listed in Table 2.23.
The following instructions can be applied to dual continuua, as discussed in Section 2.8.1, to
modify the default transport parameters. For each instruction we will indicate its scope (i.e.
.grok .dprops). Recall that if an instruction is used in the prefix.grok file, it will affect
the current set of chosen zones, while in a properties (e.g. .dprops) file, it will only affect
the named material of which it is a part.
Longitudinal dispersivity
Scope: .grok .dprops
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
222
Table 2.23: Default Values for Dual-continuua Transport Properties.
Parameter
Value Unit
Longitudinal dispersivity αld
1.0
m
Horizontal component of transverse dispersivity αtd 0.1
m
Vertical component of transverse dispersivity αtd
0.1
m
Bulk density ρbd
2650.0 kg m−3
Tortuosity τd
0.1
First-order mass transfer coefficient αs
0.0
s−1
1. val Longitudinal dispersivity [L], αld in Equation 2.105.
•••
Transverse dispersivity
Scope: .grok .dprops
1. val Horizontal component of the transverse dispersivity [L], αtd in Equation 2.105.
•••
Vertical transverse dispersivity
Scope: .grok .dprops
1. val Vertical component of the transverse dispersivity [L], αtd in Equation 2.105.
•••
Tortuosity
Scope: .grok .dprops
1. val Tortuosity , τd in Equation 2.105.
•••
Anisotropic tortuosity ratio
Scope: .grok .mprops
1. y tortratio Tortuosity ratio in the y-direction. Default value is 1.
2. z tortratio Tortuosity ratio in the z-direction. Default value is 1.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
223
Table 2.24: Default Values for Surface Flow Transport Properties.
Parameter
Value Unit
Longitudinal dispersivity αlo 1.0
m
Transverse dispersivity αto
1.0
m
Coupling dispersivity
0.0
m
By default, tortuosity is isotropic, since the ratio values are set to 1 in both the y and z
directions. You may make tortuosity anisotropic by entering a value greater than 0 and less
than 1. These values will be used to multiple the tortuosity , τd in the y and z directions
respectively, to obtain the directional values.
•••
Bulk density
Scope: .grok .dprops
1. val Bulk density [M L−3 ], ρbd in Equation 2.104.
•••
First-order mass exchange
Scope:
.dprops
1. val First-order mass transfer coefficient [L−1 ], αs in Equations 2.138 and 2.139.
•••
2.8.6.4
Surface Runoff
By default, all surface flow zones (and elements) in the domain will be assigned default
transport properties which are listed in Table 2.24.
The following instructions can be applied to the surface flow domain, as discussed in
Section 2.8.1, to modify the default transport parameters. For each instruction we will
indicate its scope (i.e. .grok .oprops). Recall that if an instruction is used in the prefix.grok
file, it will affect the current set of chosen zones, while in a properties (e.g. .oprops) file, it
will only affect the named material of which it is a part.
Longitudinal dispersivity
Scope: .grok .oprops
1. val Longitudinal dispersivity [L], αlo . Analogous to αl in Equation 2.97.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
224
•••
Transverse dispersivity
Scope: .grok .oprops
1. val Horizontal component of the transverse dispersivity [L], αt . Analogous to αt in
Equation 2.97.
•••
Coupling dispersivity
Scope: .grok .oprops
1. val Dispersivity value [L] to be applied during exchange between the overland flow
and subsurface domains.
Default value is 0.0.
•••
Dry albedo
Scope: .grok .oprops
1. Value Dry albedo for soil type, αdry in Equation 2.123. Default value is 0.35.
•••
Saturated albedo
Scope: .grok .oprops
1. Value Saturated albedo for soil type, αsat in Equation 2.123. Default value is 0.18
•••
Heat coupling length
Scope: .grok .oprops
1. Value The heat coupling length [L], is the depth of the surface/subsurface exchange
zone used to compute αo in Equation 2.142. Default value is 1.0 × 10−4 m.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.9
225
Output
During execution, grok and HydroGeoSphere create many output files, for which a
complete list with brief descriptions can be found in Appendix B. Here, we will discuss in
more detail the output which is of most interest to the user.
The main mechanism for generating output from HydroGeoSphere is through the use
of the Output times instruction. For each output time defined by the user, there will be a
problem dependent set of output files which will be generated automatically. Here is a partial
list of the files which were created by the verification problem described in Section 4.5.2:
f_cdo.head.001
f_cdo.velocity_darcy.001
f_cdo.velocity_darcy_fracture.001
f_cdo.velocity_linear.001
f_cdo.velocity_linear_fracture.001
f_cdo.fracture_aperture.001
f_cdo.concentration.Radium.001
f_cdo.concentration.Thorium.001
f_cdo.concentration.Uranium.001
f_cdo.concentration.Radium.002
f_cdo.concentration.Thorium.002
f_cdo.concentration.Uranium.002
As you can see, file names are made up of the problem prefix, in this case f cd, a descriptor,
for example o.concentration.Radium. and a 3 digit number such as 001, which relates
the data contained in the file to an output time number. Note that for output time number
001, there are quite a few more output files than for number 002. This is because the flow
solution in this case is steady-state, and so it is fully described by one set of output. For
timestep 002, only variables which have changed are output, in this case the concentrations
of the 3 species in the transport solution. Finally, the set of files which gets generated
is problem dependent, and so certain types of files may or my not appear. For example,
since this problem has discrete fractures, we are seeing some fracture velocity and aperture
output.
In order to conserve disk space and increase the efficiency of file I/O, these files are all
stored in binary format, so they can not be viewed with a standard text editor. However,
through the use of the post-processing tool HSPLOT, which is described in Section E, it is
possible to create ascii versions of the data contained in these files which are also compatible
with the third-party visualization tools TECPLOT and GMS.
By default, simulation time is written in listing and output files in a fixed format using the
FORTRAN F format descriptor f17.5, which is not suitable for outputting times greater
than 999,999 or less than 0.00001. If you prefer to use scientific notation, you can choose it
using the instruction:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
226
Time output scientific format
The other option is to use the FORTRAN G format descriptor (i.e. general format) in which
a mix of fixed and scientific format is used depending on the magnitude of the output. If
you prefer this notation, you can choose it using the instruction:
Time output general format
Sice these instructions can be used in the debug.control file (see Section C), it might
sometimes be usefult to switch back to fixed format. To do so, use the instruction:
Time output fixed format
Similarly, mass balance output can be controlled by the instructions:
Mass balance output scientific format
and
Mass balance output general format
Mass balance output fixed format
2.9.1
Grid
The following instructions can be useful in checking the results of the grid generation section.
Echo coordinates
Causes node coordinates to be written to the prefixo.eco file.
•••
Echo incidences
Causes element incidences to be written to the prefixo.eco file.
•••
Echo fracture incidences
Causes fracture element incidences to be written to the prefixo.eco file.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
227
List surface flow nodes
Causes the list of surface flow nodes to be written to the prefixo.eco file.
•••
Echo element area numbers
Causes element area numbers (as read in Section 2.3.5 for a 2-D slice generated by GRID
BUILDER) to be written to the prefixo.eco file.
•••
Write faces and segments
Whenever HydroGeoSphere generates a 3-D mesh, it makes lists of the nodes which
comprise each unique face and line segment. This information is used by certain instructions
which choose faces or segments. You can use this instruction to write the information to
a file which will receive the name prefixo.fac. These files can become quite large, so the
default is not to save them. See also Section 2.3.8.
•••
2.9.1.1
GMS
The following instructions can be used to export data generated by grok (e.g. 2-D and 3-D
meshes, wells, fractures etc.) to GMS.
Mesh to gms
1. gmsfile Name of the file to which the 3-D mesh information (blocks or prisms) will
be written in GMS-readable format.
•••
2D mesh to gms
1. gmsfile Name of the file to which the 2-D mesh information (quadrilaterals or triangles)
will be written in GMS-readable format.
•••
Rectangles to triangles
1. ofile Name of the file to which the 2-D triangular mesh information will be written in
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
228
GMS-readable 2-D mesh file format. Each rectangle in the 2-D mesh is split into two
triangles. Nodal coordinates are written first followed by element node lists.
•••
The following instructions should be placed near the end of the prefix.grok after any
instructions which are used to generate wells or fractures.
Wells to gms
1. gmsfile Name of the file to which the 1-D line information (wells and/or tile drains)
will be written in GMS-readable borehole file format.
•••
Fractures to gms
1. gmsfile Name of the file to which the the 2-D fracture element information which will
be written in GMS-readable 2-D mesh file format.
•••
2.9.1.2
GRID BUILDER
The following instructions can be used to export data generated by grok to GRID BUILDER.
Gms mesh to gb
Changes the behaviour of the instruction read 2d gms slice, causing it to output the 2-D GMS
mesh (coordinates, element node lists and element zone numbers) to a file prefixo.imp,
which can be imported into GRID BUILDER.
•••
2.9.1.3
TECPLOT
The following instructions can be used to export data generated by grok to TECPLOT.
Mesh to tecplot
1. tecfile The name of the file to which the 3-D mesh information (blocks or prisms) will
be written in TECPLOT-readable format.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
229
•••
Wells to tecplot
1. tec wells file Name of the file to which the 1-D well element information will be
written in TECPLOT LINE3D geometry format.
•••
Tiles to tecplot
1. tec tiles file Name of the file to which the 1-D tile drain element information will be
written in TECPLOT LINE3D geometry format.
•••
K to tecplot
1. tecfile Name of the file to which the elemental hydraulic conductivity information
will be written in TECPLOT-readable format.
This instruction will also force grok to create prefixo.ElemK pm(dual).0001 that can be
processed by hsplot. Elemental K will be included in the tecplot file generated by hsplot.
The elemental hydraulic conductivity values are written as cell-based variables.
•••
Porosity to tecplot
1. tecfile The name of the file to which the porosity information (blocks or prisms) will
be written in TECPLOT-readable format.
•••
Tortuosity to tecplot
1. tecfile The name of the file to which the tortuosity information (blocks or prisms)
will be written in TECPLOT-readable format.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.9.1.4
230
IBM Data Explorer (OPENDX)
The following instructions can be used to export data generated by grok to IBM Data
Explorer (OPENDX).
Mesh to opendx
1. odxfile Name of the file to which the 3-D mesh information (blocks or prisms) will be
written in OPENDX readable format.
•••
Wells to opendx
1. odx wells file Name of the file to which the 1-D well element information will be
written in OPENDX format.
2. odxfile Name of the file which contains the 3-D mesh information, as given in the
Mesh to opendx instruction.
•••
Tiles to opendx
1. odx tiles file Name of the file to which the 1-D tile element information will be
written in OPENDX format.
2. odxfile Name of the file which contains the 3-D mesh information, as given in the
Mesh to opendx instruction.
•••
2.9.2
Flow Solution
The following instructions affect the I/O for the flow solution.
Echo to output
Causes heads, saturations,concentrations and velocities for the subsurface domain to be
written to the .lst file as well as to the binary output files.
•••
Flux output nodes
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
231
1. new noutfc Number of new output nodes desired. Read the following new noutfc
times:
(a) ioutfc(i) Flux output node number. These values should be entered one per line.
Listed nodes are flagged as flux output nodes, at which detailed fluid flux [L3 T−1 ] information
for the subsurface domain is output at each timestep. Flux output is written to a file called
prefixo.flu. For each timestep in the flow solution, one line per flux output node will
be written to the file. Each line contains the node number, time, fluid flux and nodal
coordinates. Such output can be imported into an editor (e.g. Microsoft Excel) and sorted
by column to facilitate, for example, the creation of a plot of fluid flux versus time at a
node.
For an example which uses flux output nodes, see verification problem in Section 4.5.1.
•••
Flux output nodes from chosen
This instruction works in a similar way to Flux output nodes except that all currently chosen
nodes are flagged as flux output nodes.
•••
Binary flux output nodes
This instruction works in a similar way to Flux output nodes and requires identical input.
However, it creates a binary file called prefixo.flu b.
•••
Binary flux output nodes from chosen
This instruction works in a similar way to Binary flux output nodes except that all currently
chosen nodes are flagged as flux output nodes.
•••
Output saltwater head
By default, when running density-dependent flow problems, the equivalent freshwater head
is written to the head file (e.g. f cdo.head.001). This instruction causes salt water heads
to be written instead.
•••
Soil water balance
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
232
This instruction generates the information on the amount of water in the partially-saturated
and fully-saturated subsurface, and in the surface. The information includes the amount
of water in the top 10 cm and top 1 meter of the subsurface. The file is named prefixo.soil balance.dat.
•••
Report exchange for olf zones
This instruction generates the information on the exchange flux for each overland zone
separately in the file named prefixo.fluid exchange olfz.dat.
•••
Compute water volume by zone
With this instruction, the model reports the water volume stored in each of porous medium
and overland flow zones in prefixo.water volume pm zone.dat and prefixo.water volume olf zone.dat.
•••
Output ET details
This instruction generates the information of ET details for each PET boundary in
ET Detailed Info bcname.dat.
•••
2.9.2.1
Observation Wells And Points
The following instructions are used to output hydraulic head, pressure head, saturation (if
variably-saturated) and nodal fluid flux at a single node or a group of nodes lying on a line.
Output is written to a TECPLOT-formatted file called prefixo.observation well flow.obs well name.dat.
If the problem is formulated as a dual continuum then extra columns of output will be
produced with the dual continuum head, pressure head, saturation (if variably-saturated)
and fluid flux. If the node is not a dual continuum node, no data values (currently -999.0)
will be written instead.
If the problem is formulated with a surface flow domain then extra columns of output will
be produced with surface flow total and pressure head and fluid flux. If the node is not a
surface flow node, a no data value (currently -999.0) will be written instead.
These instruction do not affect the flow solution.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
233
Make observation point
1. well name Descriptive name for the well up to 40 characters.
2. x1, y1, z1 xyz-coordinates of the observation point.
The node closest to this point will be flagged as an observation point node.
Data for each timestep in the flow solution is written as one line in the output file. Each line
contains the time and then the porous medium hydraulic head, pressure head, saturation (if
variably-saturated), fluid flux, node coordinates and node number.
•••
Make node observation point
1. well name Descriptive name for the well up to 40 characters.
2. nnumber The number of the node to be made an observation point.
This node will be flagged as an observation point node.
Data for each timestep in the flow solution is written as one line in the output file. Each line
contains the time and then the porous medium hydraulic head, pressure head, saturation (if
variably-saturated), fluid flux, node coordinates and node number.
•••
Make observation well
1. well name Descriptive name for the well up to 40 characters.
2. x1, y1, z1 xyz-coordinates of one end of the observation well.
3. x2, y2, z2 xyz-coordinates of the other end of the observation well.
Element face edges (i.e. segments) which form the shortest path between the two nodes
closest to the end points of the well (i.e. x1, y1, z1 and x2, y2, z2) will be chosen to
produce output.
Each timestep in the flow solution represents a Tecplot zone in the output file, and each
zone contains one line per observation well node. Each line contains the porous medium
hydraulic head, pressure head, saturation (if variably-saturated), fluid flux, node coordinates
and node number.
Note that fluid fluxes at internal nodes are currently reported as zero unless they are constant
head or specified flux nodes.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
234
•••
Make observation well from xy
1. well name Descriptive name for the well up to 40 characters.
2. x1, y1 xy-coordinates of the observation well.
3. isheet1, isheet2 Bottom and top sheet numbers.
This instruction will create a observation well located at the closest point from x and y
coordinates between two sheet numbers.
•••
2.9.2.2
Fluid Mass Balance
By default, fluid mass balance information is computed at each time step and written to the
prefixo.lst file. Figure 2.17 show some sample output as it appears in the .lst file.
This detailed fluid balance information is also written to a TECPLOT formatted ascii output
file called prefixo.water balance.dat so that it can be easily visualized. For each timestep
in the flow solution one line is written to the file. The number of columns in the file depends
on the nature of the problem. For example, for problems with no overland flow component,
no overland flow data will be written to the file.
The first section of the fluid balance information relates to the rate at which water is entering
(IN) or leaving (OUT) the domain via the various types of sources and sinks. Column
headings that could appear in this section are:
• 1st+ 1st- The rate at which water is entering or leaving the domain via porous media
first-type nodes.
• 1stdual+ 1stdual- The rate at which water is entering or leaving the domain via
dual continuum first-type nodes.
• 1stSurface+ 1stSurface- The rate at which water is entering or leaving the domain
via overland flow first-type nodes.
• 2nd+ 2nd- The rate at which water is entering or leaving the domain via second-type
nodes.
• EvapoTrans- The rate at which water is leaving the domain via evapotranspiration.
• Well+ Well- The rate at which water is being added to or removed from the domain
via wells.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
235
-------------------------------------------------------------------FLUID BALANCE, TIME:
0.500000000000000
-------------------------------------------------------------------RATE OF FLUID EXCHANGE
IN
OUT
TOTAL
Fixed flux
0.0059395897
0.0000000000
Critical depth
0.0000000000
NET1 EXCHANGE RATE (IN-OUT)
0.0059395897
RATE OF FLUID ACCUMULATION [L**3/T]
Porous medium
0.0003197172
Overland
0.0057208226
NET2 ACCUMULATION RATE
FLUID BALANCE ERROR
Absolute: (NET1-NET2)
Relative: (NET1-NET2)/(abs(NET1)+abs(NET2))/2.0
Percent:
abs(NET1-NET2)/NET1(+ve)*100.0d0
0.0060405397
-0.0001009500
0.0168529029
1.6996119929
FLUID EXCHANGE BETWEEN SURFACE AND SUBSURFACE DOMAIN
Infiltration
0.0003219343
Exfiltration
0.0000000000
Figure 2.17: Sample Fluid Balance Information for Example Abdul.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
236
• Tile+ Tile- The rate at which water is being added to or removed from the domain
via tile drains.
• River+ River- The rate at which water is entering or leaving the domain via river
nodes, as defined in Section 2.3.2.4.
• Drain- The rate at which water is entering or leaving the domain via drain nodes, as
defined in Section 2.3.2.3.
• Seep-The rate at which water is entering or leaving the domain via seepage faces.
• ZeroDepth- The rate at which water is leaving the domain via zero-depth gradient
boundaries.
• CritDepth- The rate at which water is leaving the domain via critical depth boundaries.
• FreeDr- The rate at which water is leaving the domain via free drainage boundaries.
• FixedFlow+ FixedFlow- The rate at which water is added to or removed from the
domain via specified flowrate boundaries, as defined in Section 2.7.3.7.
• NET1 Sources/Sinks The total rate of all water entering or leaving the domain
through sources and sinks, ±Q.
The next section of the fluid balance information relates to the changes in storage that
occurred in the various media. Column headings that could appear in this section are:
• PM Rate of accumulation in the porous medium.
• Overland Rate of accumulation in the overland flow domain.
• Dual Rate of accumulation in the dual continuum.
• Fracture Rate of accumulation in discrete fractures.
• Tiles Rate of accumulation in tile drains.
• Wells Rate of accumulation in wells.
• NET2 Accumulation The rate of change of storage for the entire domain ∆S.
In a perfectly balanced system the rate at which water enters or leaves the domain ±Q and
the rate of change in storage ∆S would be equal and the fluid balance error ε would be:
ε = ±Q − ∆S = 0
(2.13)
The next section of the fluid balance information relates to the fluid balance error, which
can be expressed in various ways:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
237
• ERROR (NET1-NET2) The absolute error ε.
• Error rel The relative error εR :
εR =
ε
(| ± Q| + |∆S|)/2
(2.14)
• Error percent The percent error εP :
εP =
|ε|
Qpositive
100
(2.15)
The final section of the fluid balance output gives the amount of water that has moved
between the overland flow domain and the subsurface domain:
• Infilt The amount of water that has infiltrated the subsurface (i.e moved from overland
flow domain to subsurface domain).
• Exfilt The amount of water that has discharged from the subsurface (i.e moved from
the subsurface domain to the overland flow domain).
2.9.3
Surface Flow Hydrographs
The following instructions affect the I/O for the surface flow solution.
Set hydrograph nodes
1. label hyd Descriptive name for the hydrograph up to 80 characters.
Chosen nodes are flagged as hydrograph nodes, at which detailed total fluid flux [L3 T−1 ]
information is output at each timestep. Output is written to a TECPLOT-formatted file
called prefixo.hydrograph.hydrograph.dat. For each timestep in the flow solution, one
line will be written to the file. Each line contains the time, surface domain flux, porous
media flux and total flux.
•••
2.9.4
Transport
The following instructions affect the I/O for the transport solution.
Flux output nodes
1. new noutfc Number of new output nodes desired. Read the following new noutfc
times:
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
238
(a) ioutfc Flux output node number.
Listed nodes are flagged to generate detailed mass flux [M T−1 ] information to the file
prefixo.flm. For each timestep in the transport solution, one line per flux output node per
species will be written to the file which contains the species number, node number, time,
concentration, mass flux and nodal coordinates. Such output can be imported into an editor
(e.g. Microsoft Excel) and sorted by column to facilitate, for example, the creation of a plot
of concentration or flux versus time for a given species at a node.
For an example which uses flux output nodes, see Section 4.5.1.
•••
Flux output nodes from chosen
This instruction works in a similar way to Flux output nodes except that all currently chosen
nodes are flagged as flux output nodes.
•••
Flux volume output nodes
1. fvol name Descriptive name for the volume up to 40 characters.
Chosen nodes are used to define a volume for which detailed mass flux information will be
written to the Tecplot-formatted file prefixo.mass entering volume.volume.species.dat,
where the prefix, volume and species portions would be the user-defined prefix, volume
name and species (i.e. solute) name respectively. For each timestep in the flow solution, one
line will be written to the file. Each line contains the time, the average concentration and
instantaneous mass flux for all media (i.e. porous, dual , fractured or overland) and the
cumulative mass flux for the volume.
Active nodes (the surface of the volume) and contributing nodes (just outside the surface of
the volume) are defined automatically by searching for 3-D elements that contain a mixture
of chosen and unchosen nodes. For such elements, chosen nodes are flagged as active and
unchosen nodes are flagged as contributing.
Mass fluxes reported for the volume are positive if mass is entering the volume and negative
if mass is leaving the volume.
•••
In some cases, it may be necessary to restrict the computation of mass flux to a slice of
nodes. The following instructions can be used to do this:
Slice flux output nodes from chosen
1. fvol name Descriptive name for the volume up to 40 characters.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
239
This instruction works in a similar way to Flux volume output nodes except that all currently
chosen nodes are flagged as active nodes for the mass flux calculation.
•••
The preceding instruction must be used in conjunction with the following instruction:
Slice flux contributing nodes from chosen
This instruction flags all currently chosen nodes as contributing nodes for the mass flux
calculation.
grok checks that both instructions are issued in the correct order, and that there is at least
one element that shares an active and contributing node.
•••
Plot concentration penetration depth
1. threshold conc Causes HydroGeoSphere to write the distance from domain top
to the elevation of the threshold concentration contour versus time to a file called
prefixo.penetration depth.
This is especially useful in conjunction with density-dependent flow simulations where the
migration of a dense plume from the domain top into the aquifer versus time is of interest.
•••
Plot maximum velocity
Causes HydroGeoSphere to write the maximum porous matrix velocity versus time to a
file called prefixo.maxvel pm. If fractures are present, the additional file prefixo.maxvel fm
is created, containing the maximum fracture velocity versus time data.
•••
Compute statistical properties of plume
This instruction causes HydroGeoSphere to write the statistical properties of solute plume
in porous media at each time step (zeroth to 4th moments). Output will be written to a file
called prefixo.Statistical Plume Props.dat.
•••
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
2.9.4.1
240
Observation Wells And Points
The following instructions are used to output concentration at a single node or a group of
nodes lying on a line.
These instruction do not affect the transport solution.
Make observation point
1. well name Descriptive name for the well up to 40 characters.
2. x1, y1, z1 xyz-coordinates of the observation point.
The node closest to this point will be flagged as an observation point node.
Output is written to a TECPLOT-formatted file called prefixo.observation well conc.obs well name.dat. Data for each timestep in the flow solution is written as one line in the
output file. Each line contains the time and porous medium concentration (and immobile
zone concentration if dual porosity).
If the problem is formulated as a dual continuum then an extra column of output will be
written with the dual continuum concentration. If the node is not a dual continuum node, a
no data value (currently -999.0) will be written instead.
If the problem is formulated with a surface flow domain then an extra column of output will
be produced with the surface flow concentration. If the node is not a surface flow node, a
no data value (currently -999.0) will be written instead.
The line ends with the node coordinates and number.
•••
Make observation well
1. well name Descriptive name for the well up to 40 characters.
2. x1, y1, z1 xyz-coordinates of one end of the observation well.
3. x2, y2, z2 xyz-coordinates of the other end of the observation well.
Element face edges (i.e. segments) which form the shortest path between the two nodes
closest to the end points of the well (i.e. x1, y1, z1 and x2, y2, z2) will be chosen to
produce output.
Output is written to a TECPLOT-formatted file called prefixo.observation well flow.obs well name.dat. Each timestep in the flow solution represents a Tecplot zone in the
output file, and each zone contains one line per observation well node. Each line contains
the porous medium concentration (and immobile zone concentration if dual-porosity).
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
241
If the problem is formulated as a dual continuum then an extra column of output will be
written with the dual continuum concentration. If the node is not a dual continuum node, a
no data value (currently -999.0) will be written instead.
If the problem is formulated with a surface flow domain then an extra column of output will
be produced with the surface flow concentration. If the node is not a surface flow node, a
no data value (currently -999.0) will be written instead.
The line ends with the node coordinates and number.
•••
2.9.4.2
Solute Mass Balance
By default, solute mass balance information for each species is computed at each time step
and written to the prefixo.lst file. Table 2.18 show some sample output as it appears in
the .lst file.
No solute mass balance
This instruction prevents solute mass balance information from being written to the listing
file.
•••
This detailed mass balance information is also written to a TECPLOT formatted ascii
output file called, for example, prefixo.mass balance species 001 so that it can be easily
visualized.
Summary mass balance information is written to a TECPLOT formatted ascii output file
called, for example, prefixo.mass balance summary so that it can be easily visualized. For
each timestep in the transport solution, one line per species is written to the file. Each line
has 7 columns labelled as follows:
1. time Simulation time.
2. Tmass Total mass in the system.
3. dBoundary Change in mass due to sources and sinks.
4. dStored Change in mass stored.
5. dBoundary - dStored Error.
6. (dBoundary - dStored)/Tmass*100) Normalized error.
7. Species Species number.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
242
**********************************************************************************
MASS BALANCE SPECIES 1 - Uranium
**********************************************************************************
(Time =
1999.00999999978
Time-step = 9.999999776482582E-003 )
RATE OF MASS EXCHANGE
IN
OUT
TOTAL
Fixed head nodes
100.0000006818
0.0000000000
Fixed concentration nodes
150.0985515732
0.0000000000
NET1 EXCHANGE RATE (IN-OUT)
250.0985522550
MASS ACCUMULATION
COMPONENT
SUBTOTAL
In storage:
Porous medium
2.5001748233
Porous medium (sorbed) 35749.9997988755
ACCUMULATED
35752.4999736989
Lost by decay:
Porous medium
0.0000000708
Porous medium (sorbed)
0.0010116896
DECAYED
0.0010117604
EXCHANGED (via chemical reactions)
0.0000000000
INITIAL (stored at start of timestep)
35750.0000000000
NET2 RATE OF ACCUMULATION
i.e. (ACCUMULATED -DECAYED +(-)EXCHANGED -INITIAL)/delta
NET (since start of simulation)
250.0985515100
250.0985515100
MASS BALANCE ERROR
Absolute: (NET1-NET2)
0.0000007450
Relative: (NET1-NET2)/(abs(NET1)+abs(NET2))/2.0
0.0000000015
**********************************************************************************
Figure 2.18: Sample Mass Balance Information for Example PM CD.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
243
Besides being plotted with TECPLOT, such output can be imported into an editor (e.g.
Microsoft Excel) and sorted to facilitate, for example, the creation of a plot of mass balance
error versus time for a given species.
Cumulative mass balance information is written to a TECPLOT formatted ascii output file
called, for example, prefixo.mass balance cumulative so that it can be easily visualized.
For each timestep in the transport solution, one line per species is written to the file. Each
line has 7 columns labelled as follows:
1. time Simulation time.
2. In (cumulative) Mass in since start of simulation.
3. Out (cumulative) Mass out since start of simulation.
4. Stored Change in mass stored since start of simulation.
5. In+Out-Stored Error.
6. Species Species number.
Besides being plotted with TECPLOT, such output can be imported into an editor (e.g.
Microsoft Excel) and sorted to facilitate, for example, the creation of a plot of mass balance
error versus time for a given species.
2.9.4.3
Travel Time Probability
Output travel time statistics
HydroGeoSphere will perform descriptive statistics, following Eqs. (2.154) and (2.155):
mean travel time, mode and standard deviation will be calculated at each node/element.
•••
Integrate production zone
1. fname Name of the file which contains the list of elements that contain a mass source
function and the tabulated functions. It is formatted as follows:
(a) nprodel Number of production elements. Read the following nprodel times:
i. nel, ifunc The element number and the ID (number) of the associated
tabulated function.
(b) maxdatprod, delta conv Size of the largest set of tabulated data which follows
and the timestep size delta conv for evaluating the convolution integral in
equation 2.16. Read the following for each of the ifunc time-series:
i. ndata Number of data to read for the current time-series.
CHAPTER 2. INPUT/OUTPUT INSTRUCTIONS
244
ii. time, val Time and corresponding source value.
If ifunc = 0, then m∗ corresponds to a unit and instantaneous mass input function, and
thus no time-series are required in the input file.
The element nel with the maximum value of ifunc determines how many sets of time-series
data must be supplied.
This option is meant to simulate a forward transport solution by means of a backward
solution. It requires the problem to be backward-in-time. Integration of the backward travel
time PDF’s will be performed over a series of element numbers, which are input in the
.np file. In a forward transport run, these elements would contain a mass source m∗ . The
following equation is solved at each time-step in order to simulate the output mass flux
JO (t) resulting from a forward transport (see [Cornaton,2003]):
Z Z t
gt (t − u, x)m∗ (x, u) du dΩ
JO (t) =
(2.16)
∆ 0
if m∗ is an arbitrary mass source function [ML−3 T−1 ], or
Z
JO (t) =
gt (t, x)δ(x − xi ) dΩ
(2.17)
∆
if m∗ is a unit and instantaneous mass input function [L−3 T−1 ]. ∆ denotes the domain of
elements where m∗ (x, t) 6= 0.
•••
Index
y-axis vertical, 71
2-D random fracture generator, 22
3-D random fracture generator, 19
surface flow, 131
tecplot output, 139
time file table, 135
time raster table, 135
time value table, 135
transport , 139--151
dissolving source, 150
importing from GMS, 150
specified concentration, 139
specified mass flux, 141
specified third-type concentration,
142
specified tile concentration, 141
specified well concentration, 140
thermal energy, 145
zero-order source, 151
type, 116
Adaptive timestepping, see Time
stepping
Axisymmetric coordinates, 40
Batch file processing, 6
Boundary conditions
face set, 134
flow , 114--132
drain flux, 126
fluid transfer, 122
free drainage, 122
hydromechanical stress, 128
river flux, 125
seepage faces, 120
specified evaporation, 123
specified flowrate, 124
specified flux, 118
specified head, 116
surface loading, 127
interpolation, 137
nodal flux head constraints, 138
NODATA value, 138
node set, 134
set creation
create face set, 115
create face set from chosen faces,
116
create node set, 115
create segment set, 115
subsurface flow, 114
Channel flow
input , 187
Choosing grid components , 46--69
elements, 64
faces, 55
nodes, 47
segments, 54
zones, 157
Comments
in input files, 8, 13, 159
inline, 7
Control volume finite-element method
in finite-difference approach, 72
Cutoff walls, 192
Density-dependent flow and transport
245
INDEX
absolute concentration and
temperature, 90
relative concentration, 89
salt mass fraction, 90
Discrete fractures
input
impermeable matrix, 173
Import from FRACTRAN, 193
saturated flow properties, 172
transport properties, 220
variably-saturated flow properties,
195
Dissolving source, 150
Drain flux, 126
Dual continuum
input
saturated flow properties, 176
transport properties, 221
variably-saturated flow properties,
197
Evapotranspiration
input
properties, 208
Example instruction text, 6, 8
Export
face and segment information, 227
GMS format
2-D mesh, 227
2-D rectangles as triangles, 227
3-D mesh, 227
fracture elements, 228
well elements, 228
GRID BUILDER format
2-D GMS mesh, 228
OPENDX format
3-D mesh, 230
tile drain elements, 230
well elements, 230
TECPLOT format
3-D mesh, 228
Hydraulic conductivities, 229
porosity, 229
tile drain elements, 229
tortuosity, 229
246
well elements, 229
Finite difference solution
input, 71
Fluid flux binary output, 231
Fluid flux output, 230
Fluid transfer, 122
Free drainage, 122
Grid generation , 14--46
2-D random fractures, 22
3-D layered, interactive, 33
Base elevation, 34
New layer, 34
Zone numbering, 34
3-D random fractures, 19
adapt grid to fractures, 42
blocks
interactive, 16
uniform, 15
variable, 15
flip grid around x or y, 42
importing
algomesh 2d, 31
FRACTRAN 2-D meshes, 31
GMS 2-D meshes, 30
Grid builder 2-D meshes, 30
prisms
uniform, 15
variable, 16
rectangles
interactive, 30
uniform, 29
variable, 30
signalling end of input, 44
tetrahedral elements, 39
Heat transfer, 91, 112
Hydrograph output, 237
Hydromechanical stress, 128
Hydromechanics
activating, 70
Immiscible source, 150
Impermeable matrix, 173
Inactive elements, 93
INDEX
Incompressible fluid, 12
Initial conditions
flow, 95
from 2D location-head information, 98
from a previous flow solution, 98
from a previous transport solution,
103
from ground surface elevation, 98
larger scale simulation results, 99
porous medium initial head, 98
surface flow, 100
transport, 101
Input instructions
2D mesh to gms, 227
Adapt grid to fractures, 43
AECL properties, 169
Affects fluid properties, 109
Air entry pressure, 200
Allow internal faces, 55
Alpha, 199
Anisotropic tortuosity ratio, 218, 223
Aperture, 172
Assign zone zero, 153
Atmosphere...End, 146
Auto save on, 76
Axisymmetric coordinates, 40
Background temperature, 130
Backward-in-time, 71
Bank height, 192
Base elevation...End, 34
Begin 2D random fractures...End, 22
Beta, 200
Binary flux output nodes, 231
Binary flux output nodes from chosen,
231
Boundary condition...End, 115
Bulk density, 218, 223
Calcium species, 109
Canopy storage parameter, 208
Carbonate species, 109
Central weighting, 80
Chloride species, 109
Choose elements 3pt plane, 65
Choose elements above gb surface, 68
Choose elements above gms surface,
247
68
Choose elements above raster surface,
68
Choose elements above raster surface,
iprop zero, 68
Choose elements all, 64
Choose elements below gb surface, 68
Choose elements below gms surface,
68
Choose elements below raster surface,
68
Choose elements below raster surface,
iprop zero, 68
Choose elements between gb surfaces,
68
Choose elements between gms
surfaces, 68
Choose elements between raster
surfaces, 68
Choose elements between raster
surfaces, iprop zero, 68
Choose elements block, 66
Choose elements block by layer, 66
Choose elements by layer, 66
Choose elements by zone, 64
Choose elements by zone, within
overlay, 65
Choose elements from arcview ascii
thickness map, 69
Choose elements gb, 67
Choose elements horizontal circle, 69
Choose elements list, 67
Choose elements top, 67
Choose elements x plane, 65
Choose elements xyz list, 67
Choose elements y plane, 65
Choose elements z plane, 65
Choose face by nodes, 61
Choose faces 3pt inclined plane, 64
Choose faces 3pt plane, 56
Choose faces 3pt plane bounded, 57
Choose faces all, 55
Choose faces back, 59
Choose faces block, 57
Choose faces block by layer, 58
INDEX
Choose faces bottom, 58
Choose faces front, 58
Choose faces gb, 60
Choose faces horizontal circle, 62
Choose faces left, 59
Choose faces right, 59
Choose faces sheet, 58
Choose faces stairway, 61
Choose faces top, 58
Choose faces top block, 58
Choose faces top for chosen elements,
60
Choose faces top gb, 59
Choose faces top gb common, 59
Choose faces top gb exclude, 60
Choose faces vertical from gb nodes,
60
Choose faces x plane, 56
Choose faces y plane, 56
Choose faces z plane, 56
Choose fracture faces block, 61
Choose horizontal faces on layer, 61
Choose node, 47
Choose node number, 48
Choose nodes 2d-list sheet, 53
Choose nodes 3pt plane, 48
Choose nodes 3pt plane bounded, 49
Choose nodes active/inactive
boundary, 52
Choose nodes all, 47
Choose nodes between gb surfaces, 52
Choose nodes between zones, 53
Choose nodes block, 49
Choose nodes bottom, 50
Choose nodes by zone, 53
Choose nodes gb, 50
Choose nodes horizontal circle, 52
Choose nodes list, 51
Choose nodes sheet, 50
Choose nodes tecplot geometry, 52
Choose nodes top, 49
Choose nodes top 2d-list, 53
Choose nodes top block, 50
Choose nodes top boundary, 51
Choose nodes top gb, 50
248
Choose nodes top overlay file, 51
Choose nodes x plane, 48
Choose nodes xyz list, 51
Choose nodes y plane, 48
Choose nodes z plane, 48
Choose segments all, 54
Choose segments gb node list, 55
Choose segments line, 54
Choose segments polyline, 54
Choose segments xy between sheets,
55
Choose surface flow nodes, 51
Choose zone number, 157
Choose zones all, 157
Clear chosen elements, 64
Clear chosen faces, 55
Clear chosen faces by nodes, 62
Clear chosen inclined faces, 63
Clear chosen nodes, 47
Clear chosen segments, 54
Clear chosen zones, 157
Cloud Cover, 146
Compute fd cross terms, 72
Compute loading efficiency, 164
Compute statistical properties of
plume, 239
Compute underrelaxation factor, 84
Compute underrelaxation factor limit,
84
Compute velocity field from head, 100
Compute velocity field from head and
conc., 100
Compute water volume by zone, 232
Concentration control, 77
Concentration control, multi-species,
77
Control volume, 72
Convert pm k to macropore k, 179
Coupling conductivity, 182, 186
Coupling dispersivity, 221, 224
Coupling hydraulic conductivity, 173
Coupling length, 173, 182, 187, 208
Courant number, 86
Create face set, 115
Create face set from chosen faces, 116
INDEX
Create node set, 115
Create segment set, 115
Critical depth, 131
Cutoff Walls, 193
Data check only , 71
DDF Picard iteration control, 77
Decay constant, 105
Density of Air, 147
Density-dependent transport, 90, 91
Detection threshold concentration, 88
Distribution coefficient, 105
Do heat transfer...End, 92, 112
Do transport, 70
Drag Coefficient, 148
Drop tolerance preconditioning, 73
Drop tolerance threshold, 73
Dry albedo, 224
Dual decay constant, 106
Dual distribution coefficient, 106
Dual nodes for channel flow, 189
Dual nodes for fracture flow, 85
Dual nodes for surface flow, 85
Dual nodes for tiles, 186
Dual nodes for wells, 182
Echo 1d loading conditions, 128
Echo chosen faces, 63
Echo coordinates, 226
Echo element area numbers, 227
Echo et at point, 215
Echo fracture incidences, 226
Echo incidences, 226
Echo off, 9
Echo on, 9
Echo to output, 230
Echo transport boundary conditions,
139
Edf constant function, 215
Edf cubic decay function, 215
Edf quadratic decay function, 215
Effective area tables...end, 196
Effective area Wang-Narasimhan
functions, 197
Element K anisotropic, 165
Element K isotropic, 165
Elemental stress field from files , 129
249
Elevation constant, 37
Elevation from bilinear function in xy,
38
Elevation from cosine function in xy,
39
Elevation from file, 39
Elevation from gb file, 37
Elevation from gms file, 37
Elevation from raster file, 38
Elevation from regional model gb file,
99
Elevation from sine function in xy, 38
Elevation from xz pairs, 39
End, 14, 22, 46
Evaluate capture zone, 71
Evaporation depth, 215
Evaporation limiting pressure head,
210
Evaporation limiting saturations, 210
Example instruction text, 6
Example instruction text...End, 8
Exponent, 200
Exponential length distribution, 25
Exponential zero order source, 93, 114
Face set, 135
Find zero age zones, 112
Finite difference mode, 72
First-order fluid exchange coefficient,
178
First-order mass exchange, 223
Flag observation nodes if exceed
detection threshold concentration,
88
Flow solver convergence criteria, 79
Flow solver detail, 79
Flow solver maximum iterations, 79
Flow time weighting, 79
Fluid compressibility, 12
Fluid pressure, 78
Fluid surface tension, 12
Flux, 119
Flux limiter for transport, 87
Flux nodal, 119
Flux output nodes, 231, 238
Flux output nodes from chosen, 231,
INDEX
238
Flux volume output nodes, 238
Fractionation factor, 219
Fractran properties, 193
Fracture advective solute exchange
only, 88
Fracture Decay constant, 107
Fracture information, 20
Fracture length distribution x-axis, 21
Fracture length distribution y-axis, 21
Fracture length distribution z-axis, 21
Fracture location distribution x-axis,
21
Fracture location distribution y-axis,
21
Fracture location distribution z-axis,
21
Fracture retardation factor, 107
Fracture zone porosity, 173
Fractures to gms, 228
Free drainage, 123
Free-solution diffusion coefficient, 105
Freezing temperature, 131
Freshwater pressure head, 78
Friction, 182, 186, 191
Function surface elevation initial
head, 98
Function x initial head, 97
Function z initial head, 97
Generate aperture distribution, 24
Generate blocks interactive...End, 16
Generate exponential length
distribution, 26
Generate layers interactive...End, 33
Generate log-normal length
distribution, 25
Generate orientation distribution, 23
Generate rectangles interactive, 30
Generate tables from unsaturated
functions, 202
Generate target times, 75
Generate uniform blocks, 15
Generate uniform prisms, 15
Generate uniform rectangles, 30
Generate variable blocks, 16
250
Generate variable prisms, 16
Generate variable rectangles, 30
Get average k, 169
Gms mesh to gb, 228
Grade x, 17
Grade y, 17
Grade z, 17
Gravitational acceleration, 11
Grid information, 20
Growth beginning time, 213
Hagen Poiseuille, 181, 185
Harvest time, 213
Hazen Williams, 181, 186
Hazen Williams coefficient, 182, 186
Head, 116
Head control, 76
Head equals elevation, 117
Head equals initial, 118
Heat coupling length, 224
High-k plane, 172
Hydrogencarbonate species, 109
Immiscible phase dissolution data,
151
Immobile zone mass transfer
coefficient, 219
Immobile zone porosity, 218
Impermeable matrix, 173
Incoming Longwave Radiation, 147
Incoming Shortwave Radiation, 146
Infilled, 181, 185
Initial concentration, 101
Initial concentration for zones, 103
Initial concentration from file, 103
Initial concentration from output file,
101
Initial concentration from xyc file, 102
Initial head, 95
Initial head depth to water table, 98
Initial head from depth-saturation
table, 96
Initial head from file, 96
Initial head from output file, 96
Initial head from porous medium, 99
Initial head from regional output file,
99
INDEX
Initial head from xyh file, 98
Initial head raster, 97
Initial head subsurface from surface
output file, 96
Initial head surface elevation, 95
Initial immobile concentration from
output file, 102
Initial immobile zone concentration,
103
Initial immobile zone concentration
from file, 103
Initial interception storage, 209
Initial root depth, 213
Initial temperature profile, 93, 113
Initial time, 74
Initial timestep, 74
Initial water depth, 100
Initial water depth from gb file, 101
Integrate production zone, 244
Integration convergence criteria, 131
Interface k, 178
Interface relative permeability xy, 198
Interface unsaturated brooks-corey
functions, 198
Interface unsaturated tables, 198
Interface unsaturated van genuchten
functions, 198
Interpolate, 137
Interpolate mass flux, 142
Isotope fractionation data...End, 219
Iteration parameters flux limiter, 88
Jacobian epsilon, 81
K anisotropic, 163, 177
K isotropic, 163, 177
K tensor, 163
K to tecplot, 229
Lai tables...End, 211
Latent Heat of Vapourization, 148
Layer name, 34
Level of fill, 73
List surface flow nodes, 227
Loading efficiency, 164
Longitudinal dispersivity, 217, 221,
222, 224
Lower limit, 80
251
Magnesium species, 109
Make element inactive, 94
Make element inactive using shapefile,
94
Make fractures from fgen, 174
Make fractures from tecplot file, 174
Make node observation point, 233
Make observation point, 233, 240
Make observation well, 234, 241
Make observation well from xy, 234
Make recharge spreading layer, 176
Make zone inactive, 94
Manning, 181, 186
Map anisotropic k from raster, 166
Map initial head from raster, 97
Map isotropic k from raster, 166
Map porosity from raster, 167
Map tortuosity from raster, 167
Map zone numbers from regional
model, 99
Mass balance output fixed format,
226
Mass balance output general format,
226
Mass balance output scientific format,
226
Mass change control, 77
Mass error control, 77
Maximum flow depth, 208
Maximum freezing depth, 131
Maximum root depth, 214
Maximum timestep, 74
Maximum timestep multiplier, 78
Mean age, 70
Mechanical heat dispersion, 92, 113
Melting temperature, 130
Memory length for convolution
integral, 131
Mesh to gms, 227
Mesh to opendx, 230
Mesh to tecplot, 229
Minimum elemental energy slope, 208
Minimum layer thickness, 35
Minimum relative permeability, 201
Minimum relaxation factor allowed,
INDEX
84
Minimum relxation factor for
convergence, 82
Minimum timestep, 75
Minimum timestep multiplier, 78
Name, 104
New layer...End, 34
New zone, 153
Newton absolute convergence criteria,
81
Newton information, 85
Newton iteration control, 76
Newton maximum iterations, 81
Newton maximum residual increase,
83
Newton maximum update for depth,
82
Newton maximum update for head,
82
Newton minimum iterations, 81
Newton residual convergence criteria,
82
No fluid mass balance, 78
No matrix scaling, 73
No nodal flow check, 83
No solute mass balance, 241
Nodal flow check tolerance, 83
Nodal flux head constraints, 138
Nodal flux reduction by pressure
head, 120
nodata file, 138
nodata raster, 138
Nodata value, 138
Node set, 134
Number of random fractures, 22
Obstruction storage height, 191, 207
Offset base, 37
Offset top, 36
Output ET details, 232
Output peclet number, 86
Output random apertures, 26
Output random fractures, 26
Output random lengths, 26
Output random orientations, 26
Output saltwater head, 231
252
Output times, 75
Output travel time statistics, 243
Overland advective solute exchange
only, 88
Overland Decay constant, 108
Overland retardation factor, 108
Parents, 105
Pause, 10
Peclet number, 86
Picard convergence criteria, 90
Plot concentration penetration depth,
239
Plot maximum velocity, 239
Poisson ratio, 164
Pore connectivity, 200
Pore water freezing-thawing...End,
129
Porosity, 164, 178
Porosity to tecplot, 229
Potassium species, 109
Potential evaporation using
transpiration, 215
Potential Evapotranspiration, 124
Pressure head input, 78
Pressure of Air, 149
Pressure-effective area, 196
Pressure-saturation, 206
Primary variable switching, 80
Project 2d grid, 44
Project grid, 44
Properties file, 158
Proportional sublayering, 36
Radius, 180, 185
Rain, 119
Random K field from FGEN, 170
Random Kd field from FGEN, 170
Raster to element, 33
Raster to nprop, 32
Raster to scl, 32
Rdf constant function, 212
Rdf cubic decay function, 212
Rdf quadratic decay function, 212
Read 3D grid, 41
Read 3D grid, ascii, 42
Read algomesh 2d grid, 31
INDEX
Read chosen faces, 63
Read elemental k from file, 165
Read elemental porosity from file, 167
Read elemental specific storage from
file, 167
Read elemental tortuosity from file,
168
Read fractran 2d grid, 31
Read gb 2d grid, 31
Read gms 2d grid, 30
Read gms transport boundary
conditions, 150
Read inactive elements from file, 95
read overland zones from raster, 155
read overland zones from raster,
dominant class, 155
Read properties, 160
Read zones from file, 154
read zones from raster for chosen
elements, 154
Rectangles to triangles, 228
Red black reduction, 73
Reduce 2d grid, boundary file, 31
Reference fluid density, 12
Reference fluid viscosity, 12
Refine 2d grid, 31
Regional model, 99
Relative Humidity, 149
Relative permeability xy, 194, 198
Remove negative coefficients, 83
Remove rectangles with blanking file,
32
Remove rectangles with shapefile, 32
Report exchange for olf zones, 232
Residual saturation, 199
Restart file for concentrations, 104
Restart file for heads, 98
Reverse rate, 219
Rfgen driver, 19
Rill storage height, 191, 207
Rock-water mass ratio, 219
Root depth, 212
Root growth period, 213
Root growth...End, 213
Salt mass fraction, 109
253
Saturated albedo, 224
Saturated wells, 182
Saturation control, 76
Saturation Vapour Pressure, 149
Saturation-relative k, 206
Seepage, 121
Seepage Node, 122
Set hydrograph nodes, 237
Simple drain, 126
Simple river, 125
Sinusoidal Incoming Shortwave
Radiation, 146
Sinusoidal Temperature of Air, 147
Sinusoidal Wind Speed, 148
Skip off, 10
Skip on, 9
Skip rest, 10
Slice flux contributing nodes from
chosen, 239
Slice flux output nodes from chosen,
239
Snowmelt, 133
Snowmelt Constants, 134
Sodium species, 108
Soil Frost K, 171
Soil Frost K by ratio, 171
Soil water balance, 232
Soil-Water Suction at Surface, 149
Solids compressibility, 165
Solute, 104
Solver acceleration technique, 73
Species attribution, 71
Specific heat capacity of solid, 220
Specific heat capacity of water, 92,
113
Specific Heat of Air, 148
Specific Humidity of Air, 149
Specific storage, 164, 173, 177
Specified concentration, 140
Specified concentration from file, 140
Specified concentration from initial
concentration, 102
Specified mass flux, 142
Specified stress variation, 128
Specified stress variation from file,
INDEX
128
Specified temperature flux, 145
Specified third-type concentration,
143
Specified third-type concentration
from face file, 145
Specified third-type concentration
from file, 144
Specified third-type flushing, 145
Specified tile concentration, 141
Specified volumetric flowrate, 125
Specified well concentration, 141
Stop run if flux output nodes exceed
detection threshold concentration,
89
Streambed conductivity, 192
Streambed thickness, 192
Sulphate species, 109
Surface loading, 70
Surface temperature, 130
Table maximum s-k slope, 201
Table minimum pressure, 201
Table smoothness factor, 201
Target times, 75
Tecplot output , 139
Temperature of Air, 147
Temperature species, 109
Temperature-dependent thermal
conductivity of solid, 220
Tetrahedra, 39
Thermal conductivity of solid, 220
Thermal conductivity of water, 92,
112
Thermal diffusivity, 130
Tiles to opendx, 230
Tiles to tecplot, 229
Tilt grid x, 42
Tilt grid y, 42
Time dependent K for chosen
elements, 171
Time dependent variable K for
chosen elements, 171
Time file table, 136
Time output fixed format, 226
Time output general format, 226
254
Time output scientific format, 226
Time raster table, 135
time raster xz table, 135
time raster yz table, 135
Time value table, 135
Time varying friction...End, 207
Time-root depth table...End, 213
Tortuosity, 218, 222
Tortuosity to tecplot, 229
Transient flow, 69
Transpiration fitting parameters, 209
Transpiration limiting pressure head,
210
Transpiration limiting saturations,
210
Transport solver convergence criteria,
87
Transport solver detail, 87
Transport solver maximum iterations,
87
Transport time weighting, 85
Transverse dispersivity, 217, 221, 222,
224
Travel time CDF, 70
Travel time PDF, 70
Travel time PDF from CDF, 70
Type, 116
Type circle, 191
Type general, 191
Type rectangle, 189
Type trapezoid, 190
Underrelaxation factor, 84
Uniform sublayering, 35
Units: kilogram-metre-minute, 11
Unproject 2d grid, 44
Unsaturated, 70
Unsaturated brooks-corey
functions...End, 198
Unsaturated tables, 205
Unsaturated van genuchten
functions...End, 199
Upper limit, 80
Upstream weighting factor, 80
Upstream weighting of velocities, 87
Use constant seed, 23
INDEX
Use domain type, 152
Use Pitzer model, 90
Verhulst–Pearl growth, 50% max
depth, 214
Verhulst–Pearl growth, time-depth,
214
Vertical fracture from top, 21
Vertical transverse dispersivity, 218,
222
Volume fraction dual medium, 178
Water depth control, 76
Wells to gms, 228
Wells to opendx, 230
Wells to tecplot, 229
Wind Speed, 148
Write chosen faces, 62
Write chosen faces and host element
numbers, 62
Write chosen nodes, 53
Write chosen nodes xyz, 53
Write element k, 168
Write element k at z, 169
Write faces and segments, 227
Write inactive elements to file, 94
Write zones to file, 154
X friction, 207
Xy fracture aperture distribution, 21
Xz fracture aperture distribution, 21
Y friction, 207
Y vertical, 71
Yz fracture aperture distribution, 21
z function initial concentration, 102
Zero fluid compressibility, 12
Zero order source, 93, 114, 151
Zero travel time, 112
Zero-depth gradient, 132
Zone by gb gen file, 157
Zone by layer, 34
Zone fractures how, 22
Zoned decay constant, 105
Zoned distribution coefficient, 106
Zoned dual decay constant, 106
Zoned dual distribution coefficient,
106
Zoned fracture decay constant, 107
255
Zoned fracture retardation factor, 107
Zoned overland decay constant, 108
Zoned overland retardation factor,
108
Zones from arcview, 156
Zones from arcview ASCII grid, 156
Mass flux output, 237
Matrix solver
input, 72
Newton-Raphson method
input, 81
Observation wells and points, 232, 240
Output
3-D element incidences, 226
at specified times, 75
auto save restart files, 75
chosen faces, 63
element area numbers from Grid
Builder, 227
element hydraulic conductivity, 168
element hydraulic
conductivity,average, 169
element zone numbers, 154
flow
observation wells, 232
fluid flux, 230
fluid flux, binary file, 231
fluid mass balance, 234
fracture element incidences, 226
hydrographs, 237
mass flux, 237
mass flux entering a volume, 238
nodal coordinates, 226
observation points, 232, 240
solute mass balance, 241
suppressing mass balance output, 241
surface flow nodes, 227
transport
observation wells, 240
transport boundary conditions, 139
element hydraulic conductivity, 168
output et details, 232
INDEX
Physical constants
defaults, 10
unit conversions, 11
user specified, 11
Porous medium
input
saturated flow properties, 160
transport properties, 216
variably-saturated flow properties,
193
Potential evaporation using transpiration,
215
Pre-processor instructions
Usage, 6
Pressure head input/output, 78
Primary variable substitution
input, 80
Radioactive decay
input, 104
Random distribution coefficient fields, 170
Random fracture generation, see Grid
generation
Random hydraulic conductivity fields, 169
Recharge spreading layer, 176
Report exchange for olf zones, 232
River flux, 125
Root growth, 213
Root growth
Growth beginning time, 213
Harvest time, 213
Initial root depth, 213
Maximum root depth, 213
Root growth period, 213
Time-root depth table, 213
Verhulst–Pearl growth, 50% max
depth, 214
Verhulst–Pearl growth, time-depth,
214
Runoff
input
transport properties, 223
Seepage faces, 120
Soil frost k, 170
Soil frost K by ratio, 171
256
Soil water balance, 232
Solute definition, 104
Solver parameters
flow, 78
transport, 86
Subsurface domain
input
drain flux, 126
flow initial conditions, 95
fluid transfer, 122
free drainage, 122
hydromechanical stress, 128
river flux, 125
seepage faces, 120
specified evaporation, 123
specified flowrate, 124
specified flux, 118
specified head, 116
surface loading, 127
Surface domain
input
boundary conditions, 131
flow initial conditions, 100
properties, 206
Surface loading, 127
Telescopic mesh refinement
defining a regional model, 99
Tetrahedral elements, 39
Tile drains
input , 183
Time dependent K for chosen elements,
171
Time dependent variable K for chosen
elements, 171
Time stepping
adaptive
input, 76
general input, 74
Transient flow
activating, 69
Transport
activating, 70
input
discrete fracture properties, 220
INDEX
dual continuum properties, 221
heat transfer, 112
immiscible phase dissolution source,
150
importing boundary conditions
from GMS, 150
initial conditions, 101
porous medium properties, 216
solute definition, 104
specified concentration, 139
specified mass flux, 141
specified third-type concentration,
142
surface runoff properties, 223
thermal energy, 145
travel-time probability, 112
zero-order source, 151
Unit conventions, 10
257
Variably-saturated flow
activating, 70
defining functional constitutive
relationships , 198
defining tabular constitutive
relationships , 205
vertical y-axis, 71
water volume contained in different zones,
232
Zero-order source, 151
Zones
creating, 152
creating using ARCVIEW files, 155
creating using GB .gen files, 157
modifying properties, 158
saving and retrieving element zone
numbers, 154
selecting, 157
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement