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

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

Download PDF

advertisement