February 2009
LM3: A High-Resolution Lake
Michigan Mass Balance Water Quality
Model
by
Wilson Melendez
Michael Settles
Computer Sciences Corporation
James J. Pauer
Z-Tech Corporation, an ICF Company
Kenneth R. Rygwelski
U.S. Environmental Protection Agency
Office of Research and Development
National Health and Environmental Effects Research Laboratory
Mid-Continent Ecology Division-Duluth
Large Lakes and Rivers Forecasting Research Branch
Large Lakes Research Station
9311 Groh Road
Grosse lie, Michigan 48138
Recycled/Recyclable
Printed with vegetable-based ink on
paper that contains a minimum of
50% post-consumer fiber content
processed chlorine free.
-------
Notice
The information in this document has been obtained primarily through funding by the United
States Environmental Protection Agency (USEPA) under the auspices of the Office of Research
and Development (ORD) and by the Great Lakes National Program Office (GLNPO). The report
has been subjected to the Agency's peer and administrative review and it has been approved
for publication as an USEPA document. Mention of trade names or commercial products does
not constitute endorsement or recommendation for use.
-------
Foreword
The Lake Michigan Mass Balance Project (LMMBP) was developed by the United States
Environmental Protection Agency (USEPA) to study the transport, fate, and bioaccumulation of
toxic chemicals, such as polychlorinated biphenyls (PCBs), in Lake Michigan. The project
consisted to two main phases: (1) data collection and sample analysis, and (2) water quality
model development and application. The data collection and sample analysis were carried out
by various contractors under the guidance of the Great Lakes National Program Office
(GLNPO). The data collection took place during the time period of 1994 and 1995. The data
analysis was conducted over a period of several years including the 1994-1995 study period
and beyond. The data were then used within the framework of various water quality models for
calibration and validation purposes. There were several water quality models developed that
simulated the movement of PCBs within the lake and their bioaccumulation in fish. The models
had different spatial resolutions for the water column and sediment column.
The present report is a user's manual that describes one of the water quality models used for
the LMMBP. LM3 is a mass balance water quality model that simulates eutrophication,
atrazine, chloride, and PCBs. It is a high-resolution model with a horizontal scale of 5 km x 5
km on each cell of the grid. The LM3 development started in the mid-1990s. The
eutrophication model in LM3 was used primarily to simulate eutrophication in the lake and to
provide biotic carbon loads to the toxic chemical model known as LM2-Toxic. LM3 was also
applied to study the transport and volatilization of atrazine. It has been configured to simulate
PCB congeners.
This report contains the mathematical equations used to simulate the kinetics of the
eutrophication, atrazine, chloride, and PCB congeners. It contains a detailed description of the
transport algorithm used in the model. There is a description of the sediment transport model
used for PCBs. This sediment transport model is considered a stopgap solution before a more
complete sediment transport algorithm can be implemented. All the calibration parameters used
in LM3 are described. The program code organization and management are also described.
Examples of input files used for various simulations are provided.
-------
Abstract
This report is a user's manual that describes the computer application known as LM3. LM3 is a
high-resolution mass balance water quality model for Lake Michigan. It was developed to
simulate eutrophication, atrazine, chloride, and polychlorinated biphenyl (PCB) congeners in
Lake Michigan in support of the Lake Michigan Mass Balance Project (LMMBP). The LMMBP
was a study conducted by the United States Environmental Protection Agency (USEPA), Office
of Research and Development in cooperation with the USEPA Great Lakes National Program
Office.
This manual includes a discussion of the theory behind the parameters being modeled, a
description of the organization of the source code, and the user interface associated with the
LM3 application. The manual describes the kinetic equations used to model eutrophication,
atrazine, chloride, and PCB congeners in Lake Michigan. There is a detailed mathematical
description of the ULTIMATE QUICKEST (UQ) transport algorithm that is used in both the water
and sediment columns. LM3 does not model hydrodynamics; it uses the hydrodynamics output
generated by the application known as the Princeton Ocean Model (POM) as part of its input.
The eutrophication model consists of six carbon species (including two phytoplankton species,
one zooplankton species, dissolved organic carbon, refractory organic carbon and labile organic
carbon), four phosphorus species, five nitrogen species, and two silica species. The application
can model up to 36 PCB state variables. Because some of the PCB state variables represent
coeluting congeners, LM3 can account for up to 54 congeners. LM3 can also model atrazine
and chloride. The user has the option to model all of the state variables available in the
application at the same time or just a subset of them. The sediment bed component of LM3
consists of two carbon state variables, dissolved organic carbon and refractory organic carbon,
which serve as the carbon states for PCB congener partitioning. These two carbon states do
not undergo any kinetics transformations in the sediment bed. The resuspension velocities are
calculated via resuspension fluxes output by the SEDZL application, and fed into LM3 as input
parameters.
LM3 uses three external libraries for various tasks such as reading input values and writing
model output. The three libraries are described. Input file examples for the simulations of
atrazine, chloride, eutrophication, and PCBs are included.
This abstract does not necessarily reflect the USEPA policy.
IV
-------
Table of Contents
Notice ii
Foreword iii
Abstract iv
Table of Contents v
List of Figures ix
List of Tables xi
List of Abbreviations xiii
Acknowledgments xv
Executive Summary xvi
Chapter 1 Introduction 1
1.1 Model Background 1
1.2 Model Features 2
1.3 Model Limitations 3
1.4 Model Further Developments 4
Chapter2 Major Revision History 5
2.1 IPX Revision History 6
2.2 LM3 Revision History 9
Chapters Model Parameters 12
3.1 Parameter Specification 13
3.2 Non-Scalar Input Program Parameters 13
3.3 General Program Parameters 14
3.3.1 General Program Parameter *SCALE 15
3.4 Basic Program Control Option Parameters 15
3.5 Eutrophication and Chemical-Specific Parameters 21
3.6 General Transport Parameters 21
Chapter 4 LM3 New Features 24
4.1 New Features 24
-------
Chapters Water Column Transport 29
5.1 Model Grid 30
5.2 The ULTIMATE QUICKEST Transport Scheme 31
5.3 Vertical Implicit Transport 33
Chapter 6 Eutrophication Kinetics 35
6.1 Development of Eutrophication Equations 35
6.1.1 Phytoplankton Growth 36
6.1.1.1 Nutrient Growth Dependency 37
6.1.1.2 Temperature Growth Dependency 41
6.1.1.3 LightGrowth Dependency 41
6.1.2 Zooplankton Kinetics 44
6.1.3 Carbon Interactions 45
6.1.3.1 Phytoplankton Mortality and Decay 45
6.1.3.2 Zooplankton Mortality and Decay 47
6.1.3.3 Hydrolysis and Mineralization 47
6.1.4 Phosphorus 49
6.1.4.1 Phosphorus Uptake by Phytoplankton 49
6.1.4.2 Phosphorus Release Due to Phytoplankton
Metabolism/Mortality 49
6.1.4.3 Phosphorus Release Due to Zooplankton Predation 50
6.1.4.4 Phosphorus Release Due to Zooplankton Mortality 51
6.1.4.5 Hydrolysis and Mineralization of Phosphorus 51
6.1.5 Nitrogen 52
6.1.5.1 Nitrogen Uptake by Phytoplankton 53
6.1.5.2 Nitrogen Release Due to Phytoplankton
Metabolism/Mortality 53
6.1.5.3 Nitrogen Release Due to Zooplankton Predation 54
6.1.5.4 Nitrogen Release Due to Zooplankton Mortality 54
6.1.5.5 Hydrolysis and Mineralization of Nitrogen 55
6.1.5.6 Nitrification 56
6.1.6 Silica 57
Chapter 7 Sediment Transport 59
7.1 Outline of the Bottom Shear Stress Calculation 60
7.1.1 Introduction 60
7.1.2 Total Bed ShearStress 60
7.1.3 Friction Factors 64
7.1.3.1 Current Friction Factor 64
7.1.3.2 Wave Friction Factor 66
7.1.4 Calculation Scheme 66
7.1.5 Figures 67
7.2 PCB Diffusion Process Between Sediment and Water 81
7.3 LM3 Sediment Bed 82
7.3.1 Initial Conditions 83
7.3.1.1 ROC Sediment Concentrations 83
VI
-------
7.3.1.2 Clay Sediment Concentrations 84
7.3.1.3 PCB Congener Sediment Concentrations 84
7.3.1.4 DOC Sediment Concentrations 84
7.3.2 Sediment Parameters 84
7.3.2.1 Particle Densities 84
7.3.2.2 PCB Congener Partition Coefficients 84
7.3.2.3 Porosities 84
7.3.3 Boundary Conditions 85
7.3.3.1 ROC Sediment Boundary Condition 85
7.3.3.2 PCB Congener Sediment Boundary Condition 85
7.3.3.3 Clay Sediment Boundary Condition 85
7.3.4 Sediment Transport Data 85
7.3.4.1 Resuspension Velocities 87
7.3.4.2 Bulk Mixing Coefficients 89
Chapters Polychlorinated Biphenyl Kinetics 91
8.1 PCB Partitioning 91
8.2 PCB Volatilization 100
Chapter 9 Atrazine Kinetics 108
9.1 Atrazine Lumped First-Order Decay 109
9.2 Atrazine Volatilization 111
9.2.1 Henry's Law Constant 111
9.2.2 O'Connor Formulation 112
9.2.2.1 Kinematic Viscosity and Density of Air 112
9.2.2.2 Diffusivity of Atrazine in Air and in Water 113
9.2.2.3 Shear Velocity Iteration Scheme 113
9.2.2.4 Contributing Coefficients Z0(U*), r(U*), Kg, and
KTto the Liquid-Phase Transfer Coefficient KL 114
9.2.2.5 Liquid-Phase Transfer Coefficient 116
9.2.2.6 Gas-Phase Transfer Coefficient 116
9.2.2.7 Overall Mass Transfer Coefficient 117
9.2.2.8 Volatilization Rate 118
9.2.2.9 Steps of the O'Connor Algorithm 118
9.2.3 Wanninkhof and Schwarzenbach Formulation 119
Chapter 10 Program Code, Organization, and Management 121
10.1 The LM3 Algorithm 121
10.1.1 LM3 Individual Program Units 126
10.1.1.1 Main Program 126
10.1.1.2 Initialization and Input Subroutines 127
10.1.1.3 Simulation Execution and Output Subroutines 130
10.1.1.4 Finalizing Subroutines 134
10.1.1.5 Modules 134
10.1.1.6 Generic Subroutines 137
10.1.1.7 INCLUDE Files 137
VII
-------
10.2 LM3 Source and Application Management 138
10.3 LM3 Support Libraries 139
Chapter 11 Data Structures 145
11.1 Input Data Structures 145
11.1.1 Initial Conditions Data Structure 148
11.1.2 Hydrodynamics Data Structure 148
11.1.3 Loads Data Structure 153
11.1.3.1 Load Location Structure 153
11.1.3.2 Load Mass Values Structure 153
11.2 Output Data Structures 155
11.2.1 Timestamps 159
11.2.2 Hydrodynamics 159
11.2.3 Shear Calculations 160
11.2.4 Eutrophication 160
11.2.5 PCB Congeners 161
11.2.6 Clay 168
11.2.7 Atrazine 168
11.2.8 Chloride 175
11.2.9 Sediment 175
Chapter 12 Support Utilities 180
12.1 Editing and Filling CDF Structures 180
12.2 Examining Program Output 182
Chapter 13 Examples 185
13.1 Submitting LM3 Simulations 185
13.2 LM3 Example Atrazine Calculation 186
13.3 LM3 Example Chloride Calculation 188
13.4 LM3 Example Eutrophication Calculation 190
13.5 LM3 Example PCB Calculation 197
13.6 Exampleof a2cdf Calculation 205
13.7 Example of x2cdf Calculation 208
Chapter 14 References 210
Appendix A Development of a Hydrodynamic/Water Quality (POM/IPX) Linkage
for the Lake Michigan Mass Balance Project 218
Appendix B The FIREAD Primer: Format Independent Reading of Program Input
Parameters 269
Appendix C UT Version 1.3.1 288
Appendix D An RCS Cheat Sheet 295
Appendix E Derivation of the ULTIMATE QUICKEST Method in One Dimension 302
VIII
-------
List of Figures
2.1 IPX revision history 7
2.2 LM3 revision history 10
3.1 Logical associations among the LM3 program flags 20
5.1 The LMMBP high-resolution grid 30
7.1 Locations for the three selected areas where shear stress was calculated 68
7.2 Distribution of shear stress for location A, 1982, kN = 0.2 cm 69
7.3 Distribution of shear stress for location A, 1982, kN = 1.0 cm 69
7.4 Distribution of shear stress for location A, 1982, kN = 2.0 cm 70
7.5 Distribution of shear stress for location A, 1982, kN = 5.0 cm 70
7.6 Distribution of shear stress for location B, 1982, kN = 0.2 cm 71
7.7 Distribution of shear stress for location B, 1982, kN = 1.0 cm 71
7.8 Distribution of shear stress for location B, 1982, kN = 2.0 cm 72
7.9 Distribution of shear stress for location B, 1982, kN = 5.0 cm 72
7.10 Distribution of shear stress for location C, 1982, kN = 0.2 cm 73
7.11 Distribution of shear stress for location C, 1982, kN = 1.0 cm 73
7.12 Distribution of shear stress for location C, 1982, kN = 2.0 cm 74
7.13 Distribution of shear stress for location C, 1982, kN = 5.0 cm 74
7.14 Distribution of shear stress for location A, 1994, kN = 0.2 cm 75
7.15 Distribution of shear stress for location A, 1994, kN = 1.0 cm 75
7.16 Distribution of shear stress for location A, 1994, kN = 2.0 cm 76
7.17 Distribution of shear stress for location A, 1994, kN = 5.0 cm 76
7.18 Distribution of shear stress for location B, 1994, kN = 0.2 cm 77
7.19 Distribution of shear stress for location B, 1994, kN = 1.0 cm 77
7.20 Distribution of shear stress for location B, 1994, kN = 2.0 cm 78
7.21 Distribution of shear stress for location B, 1994, kN = 5.0 cm 78
7.22 Distribution of shear stress for location C, 1994, kN = 0.2 cm 79
7.23 Distribution of shear stress for location C, 1994, kN = 1.0 cm 79
7.24 Distribution of shear stress for location C, 1994, kN = 2.0 cm 80
7.25 Distribution of shear stress for location C, 1994, kN = 5.0 cm 80
7.26 Bottom boundary condition algorithm 86
7.27 Resuspension velocity calculation algorithm 90
9.1 Structural formula for atrazine 108
10.1 Topmost flow of control for the LM3 program 122
10.2 Flow of control for LM3 initialization 122
10.3 Flow of control for the LM3 main or batch level calculation 123
10.4 Flow of control for the LM3 eutrophication calculation 123
10.5 Flow of control for the LM3 finishing level calculation 124
11.1 The CDF rVariable data representation scheme 146
IX
-------
11.2 The CDF zVariable data representation scheme 147
12.1 The cdfedittool main window 183
12.2 The cdfedit tool zEntries window 183
12.3 The cdfexport tool window 184
E.1 Cell geometry and notation used in this derivation 310
E.2 Interpolation of concentration used for the case u > 0 317
E.3 Interpolation of concentration used for the case u < 0 320
-------
List of Tables
3.1 *FILE Key File Specifications 14
3.2 General Program Parameters 16
3.3 States for General Program Parameter *SCALE 17
3.4 Load Types for Program Parameter *SCALE 18
3.5 *DO Key General Program Parameters 19
3.6 Water Transport Parameters 22
3.7 Sediment Transport Parameters 22
6.1 Eutrophication Parameters 38
8.1 PCB Congener Groups Partition Coefficients 94
8.2 PCB Congener Groups Enthalpy Values 102
8.3 PCB Congener Groups Entropy Values 103
8.4 PCB Congener Groups Molecular Weight 106
9.1 Atrazine Parameters 110
11.1 Eutrophication Water Column Initial Conditions rVariables 149
11.2 PCB Water Column Initial Conditions rVariables 149
11.3 Atrazine, Chloride, and Clay Water Column Initial Conditions rVariables 150
11.4 Eutrophication Sediment Initial Conditions rVariables 150
11.5 PCB Sediment Column Initial Conditions rVariables 151
11.6 Input Hydrodynamics zVariables 152
11.7 Load Location gAttributes 154
11.8 Load File Update Time zVariables 156
11.9 Load File Mass Load zVariables 157
11.10 FIREAD Eutrophication Load Names and Recommended Input Files 158
11.11 FIREAD PCB Load Names and Recommended Input Files 158
11.12 FIREAD Atrazine, Chloride, and Clay Load Names and Recommended Input Files 159
11.13 Output Simulation Time zVariables 159
11.14 Output Hydrodynamics zVariables 160
11.15 Shear Calculation zVariables 160
11.16 Eutrophication State Concentration zVariables 161
11.17 Lake-wide Eutrophication State Mass and Load zVariables 162
11.18 Eutrophication Settling Losses and Rates zVariables 163
11.19 Phytoplankton Growth Limitation Factor zVariables 163
11.20 PCB Congener Total Water Concentration zVariables 164
11.21 PCB Congener Dissolved Water Concentration zVariables 165
11.22 PCB Congener Particulate Water Concentration zVariables 166
11.23 PCB Congener Water Column Mass zVariables 167
11.24 PCB Congener Load Mass zVariables 169
11.25 PCB Congener Settling Loss zVariables 170
11.26 PCB Congener Settling Loss Rate zVariables 171
XI
-------
11.27 Volatilization Absorbed Mass Output zVariables 172
11.28 Volatilization Loss Mass Output zVariables 173
11.29 Net Volatilization Mass Output zVariables 174
11.30 Clay zVariables 174
11.31 Atrazine zVariables 175
11.32 Chloride zVariables 176
11.33 Sediment Eutrophication Output zVariables 176
11.34 Sediment PCB Output zVariables 177
11.35 Sediment PCB Dissolved Output zVariables 178
11.36 Sediment PCB Particulate Output zVariables 179
11.37 Sediment Output zVariables 179
12.1 x2cdf FIREAD Input Key Definitions 181
A1 POMGLOUTPUT Standard Output File 234
A2 IPXMT Control File 235
A3 MAP.DIA Listing 237
C1 FORTRAN Callable Array Manipulation Subroutines 293
C2 FORTRAN Callable Time Conversion Subroutines 293
C3 FORTRAN Callable Array Manipulation Functions 293
C4 C Callable Utility Functions 294
C5 REPORT Subroutines 294
C6 FIREAD Subroutines 294
E.1 FORTRAN Variables Used in u > 0 Calculation of Advection and Diffusion
Multipliers 307
E.2 FORTRAN Variables Used in u < 0 Calculation of Advection and Diffusion
Multipliers 308
E.3 FORTRAN Variables Used in Both u > 0 and u < 0 Transport Calculations 309
XII
-------
List of Abbreviations
CDF
CE-QUAL-ICM
CGS
CO2
cpp
CPU
CSC
DOC
DON
OOP
GBMBP
GLERL
GLNPO
HM
ICM
IPX
JDN
LDC
LLRS
LMMBP
LOG
LON
LOP
LPOC
LPON
LPOP
m
MKS
NASA
NH4
NO3
NOAA
NSSDC
ODC
ORD
PCBs
PDC
POC
Common Data Format
Corps of Engineers Water Quality Integrated Compartment Model
Centimeter-gram-second
Carbon dioxide
C Preprocessor
Central processing unit
Computer Sciences Corporation
Dissolved organic carbon
Dissolved organic nitrogen
Dissolved organic phosphorus
Green Bay Mass Balance Project
Great Lakes Environmental Research Laboratory
Great Lakes National Program Office
Hydrodynamic model
Chesapeake Bay model
In-place Pollutant eXport
Julian day numbers
Labile detrital carbon
Large Lakes Research Station
Lake Michigan Mass Balance Project
Labile organic carbon
Labile organic nitrogen
Labile organic phosphorus
Labile particulate organic carbon
Labile particulate organic nitrogen
Labile particulate organic phosphorus
Meters
Meter-kilogram-second
National Aeronautics and Space Administration
Ammonia-nitrogen
Nitrate-nitrogen
National Oceanic and Atmospheric Administration
National Space Science Data Center
Organic detrital carbon
Office of Research and Development
Polychlorinated biphenyls
Particulate detrital carbon
Particulate organic carbon
XIII
-------
POM
PON
POP
RCS
RDC
ROC
RON
ROP
RPOC
RPON
RPOP
SA
Si
SRP
SU
TP
UQ
USAGE
USEPA
USGS
WASP
WDNR
WES
WQCMB
WQM
Princeton Ocean Model
Participate organic nitrogen
Participate organic phosphorus
Revision Control System
Refractory detrital carbon
Refractory organic carbon
Refractory organic nitrogen
Refractory organic phosphorus
Refractory particulate organic carbon
Refractory particulate organic nitrogen
Refractory particulate organic phosphorus
Dissolved silica
Silica
Soluble reactive phosphorus
Biogenic silica
Total phosphorus
ULTIMATE QUICKEST
United States Army Corps of Engineers
United States Environmental Protection Agency
United States Geological Survey
Water Quality Analysis Simulation Program
Wisconsin Department of Natural Resources
Waterways Experiment Station
Water Quality and Contaminant Modeling Branch
Water quality model
XIV
-------
Acknowledgments
The United States Environmental Protection Agency, Great Lakes National Program Office
provided leadership, support, and collaboration on the Lake Michigan Mass Balance Project.
Carl Cerco, U.S. Army Corps of Engineers, contributed to the eutrophication section. Douglas
Endicott, formerly with the U.S. EPA, Large Lakes Research Station, contributed to the
implementation of the polychlorinated biphenyl kinetics, the design of the sediment bed model,
the calculation of resuspension fluxes, and the overall guidance and moral support. Ronald
Rossmann, U.S. EPA, Large Lakes Research Station, provided an editorial review and
comments.
xv
-------
Executive Summary
This report is a user's manual for the application known as LM3. LM3 is a water quality mass
balance model that has the capability to simulate eutrophication, atrazine, chloride, and
polychlorinated biphenyl (PCB) congeners. The development of the current model started in the
mid-1990s. LM3 has continued to be developed by adding an ecosystem model. However, as
of this writing, the ecosystem model is still being tested. This report only describes the stage of
the application that simulates the aforementioned systems.
LM3 has a high-resolution grid with cells that have a horizontal area of 5 km x 5 km. There are
2,318 cells across the lake and 19 sigma layers in the water column. Each sigma layer contains
the same number of cells across, 2,318, which gives a total of 44,042 grid cells in the water
column for the entire lake. Each sigma layer varies in thickness depending on the water column
depth. In nearshore areas, where water depth can be as low as 2.5 meters, some of the sigma
layers can have thicknesses under 0.1 meters. In offshore areas, where water depth can
exceed 250 meters, some of the sigma layers can have thicknesses exceeding 30 meters.
The first component of the model to be implemented was eutrophication. The eutrophication
kinetics are based on the Corps of Engineers Water Quality Integrated Compartment Model
(CE-QUAL-ICM) formulations (Cerco and Cole, 1995), which were previously applied to
Chesapeake Bay (Cerco and Cole, 1993). However, several changes were made, including
improvements to the solar radiation equations, changes to the phosphorus transformation
reactions, and the addition of zooplankton equations. The eutrophication model simulates 17
state variables: six carbon states which include two phytoplankton and one zooplankton
groups, four phosphorus species, five nitrogen species, and two silica species. The
phytoplankton and zooplankton groups are modeled as carbon states with fixed carbon-to-
nutrient ratios to account for their content of phosphorus, nitrogen, and silica. Loadings and
initial concentrations are specified as input parameters for each of the eutrophication states.
There is a user-defined sediment flux including dissolved organic carbon, soluble reactive
phosphorus, ammonia, and silica to account for sediment feedback in the model. LM3 does not
have a sediment bed model for eutrophication; that is, no diagenesis model has been
incorporated as of this writing.
LM3 uses the ULTIMATE QUICKEST (UQ) method as the transport scheme in the model. A
derivation of this method is provided for the case of one spatial dimension. The transport
scheme was adapted by the U.S. Army Corps of Engineers (Chapman et a/., 1997) for use in
the LM3 application. The UQ method uses the flow and diffusion values that are generated
using the Princeton Ocean Model (POM) (Schwab and Beletsky, 1998). LM3 does not simulate
hydrodynamics; instead, it uses the output from POM as input.
XVI
-------
Chloride is one of the chemicals that can be modeled in LM3. It is the simplest case to simulate
because there are no kinetics and no sediment bed to track. Atrazine is another modeled
chemical in the application, but unlike chloride, it can decay and volatilize. Atrazine's decay is a
lumped first-order one because the biological and chemical processes that play a role in the
chemical's breakdown in the water column are still not fully understood. The user has the
option of choosing one of two volatilization schemes available in LM3 for atrazine: the
O'Connor formulation (O'Connor, 1983a; 1983b) and the Wanninkhof and Schwarzenbach
formulation (Schwarzenbach et a/., 1993; Wanninkhof et a/., 1991; Wanninkhof, 1992). Both
atrazine and chloride can be simulated individually without having to turn on the eutrophication
and PCB algorithms.
LM3 has the capability to model individual PCB congeners. The user has the ability to specify
up to 36 PCB state variables. Each state variable represents either a single congener or
coeluting congeners. Because some of the state variables represent coeluting congeners, LM3
can account for up to 54 congeners. Each PCB congener (or coeluting ones) is modeled as
seven different phases in the water column and three different phases in the sediment column.
The seven phases in the water column represent the six carbon states the PCB congener is
binding to, and the purely dissolved state of the congener. The three phases in the sediment
column represent the two carbon states the congener is binding to, and the purely dissolved
state of the congener. The user has to specify two partition coefficients for each PCB congener:
one partition coefficient corresponds to the partitioning of the congener to dissolved organic
carbon (DOC) and the other corresponds to the partitioning to the five particulate organic carbon
(POC) states. The LM3 model assumes that the partition coefficients in the water and sediment
columns are the same.
PCB volatilization was implemented in LM3. The Wanninkhof and Schwarzenbach volatilization
formulation (Schwarzenbach et a/., 1993; Wanninkhof et a/., 1991; Wanninkhof, 1992) was
implemented for PCBs. The user has the ability to turn on or off the volatilization. Each PCB
congener has its own set of values for entropy, enthalpy, and molecular weight that the user
specifies in the input file. A PCB diffusion process between sediment and water was also
implemented.
In LM3 a sediment bed construct was implemented, which is primarily designed to look at PCB
transport between the water and sediment column. The sediment bed has a geometry that lines
up with the water column, with 2,318 grid cells across and layers going down the sediment
column that are user-specified. Each sediment grid cell has the same horizontal cross-sectional
area as the ones in the water column, 5 km x 5 km. The sediment bed construct is relatively
simple. It has only two carbon states, no resuspension velocities, no diffusion between
sediment layers, constant cell volumes, constant solid concentrations, and only vertical
transport. The vertical transport is described by a simplified UQ. The resuspension velocities
are calculated from resuspension fluxes that are input into LM3. The resuspension fluxes were
calculated outside LM3 using a separate application known as SEDZL. LM3 does have an
algorithm that calculates shear stress that can potentially be used to calculate resuspension
velocities internally, provided the current sediment bed construct is improved upon. Clay was
added as a state variable in support of a future improvement upon the sediment bed construct
but has not been used as of this writing. The user has the option to turn off the sediment bed
calculation if wishing to do water column calculations only.
XVII
-------
LM3 uses three external libraries for various tasks such as input and output. The UT library
handles primarily the processing of the input file by parsing over format-independent parameters
and filenames. It also handles the printing of diagnostic messages to standard output. The
SNIPPETS library provides some basic scientific calculations such as sunrise and sunset times,
and day length for a given time of the year that are used within the eutrophication model. The
CDF library handles the input and output of large binary datasets. The binary files are created
using a format that is independent of the computer platform being used. This allows the user to
utilize the same CDF files on many operating systems without having to create duplicate files for
each operating system.
XVIII
-------
CHAPTER 1
INTRODUCTION
This report is a user's manual of the LM3 water quality model. The LM3 water quality model
was developed to primarily study eutrophication, polychlorinated biphenyls (PCBs), atrazine,
and chloride processes in Lake Michigan as part of the Lake Michigan Mass Balance Project
(LMMBP) (Rossmann, 2006). The LMMBP was established, organized, and set in operation by
the United States Environmental Protection Agency's (USEPA) Great Lakes National Program
Office (GLNPO). The LMMBP main objectives were to measure and simulate concentrations of
contaminants prevalent in Lake Michigan (Rossmann, 2006). The contaminants considered
were PCBs, fra/?s-nonachlor, atrazine, chloride, and mercury. Of the aforementioned
contaminants, only PCBs, atrazine, and chloride are described in this report because those are
the ones that have been incorporated into the LM3 water quality model as of this writing. This
report also contains a description of the LM3 eutrophication model.
1.1 Model Background
The LM3 water quality application evolved from earlier projects that dealt with studies of the
Lower Fox River (Velleux et al., 2001), Green Bay (DePinto et al., 1993), and Chesapeake Bay
(Cerco and Cole, 1995). The original application of the Lower Fox River was based on WASP4
(Ambrose et al., 1988). During the course of the study of the Lower Fox River, WASP4 was
modified to enhance sediment transport and to allow the simultaneous simulation of an
unlimited number of contaminants. These WASP4 modifications led its evolution into the In-
place Pollutant eXport (IPX) model. IPX was designed to simulate the transport and fate of
sediments and associated hydrophobic contaminants in tributaries. It is based on the key
principle of conservation of mass and uses the Euler's method to solve the mass balance
differential equations.
IPX was later used as a framework to develop an application that could be used to study PCBs
and other contaminants in Lake Michigan. New source code modifications were implemented
by adding organic carbon dynamics that have been previously used in the Green Bay Mass
Balance Project (GBMBP) (DePinto et al., 1993). At this stage, the model was still known as
IPX but under a different version number to distinguish it from the original IPX used for
tributaries. The number of solids in the model was only three. Further source code
modifications were carried out to expand the number of solids used in the model and to modify
the segmentation grid used for Lake Michigan in support of the LMMBP. At this point, an
eutrophication model and a new transport scheme using ULTIMATE QUICKEST (UQ) were
-------
implemented within this version of IPX. This Lake Michigan version of IPX was then renamed
LM3.
Algorithms for PCB congeners, atrazine, and chloride were later implemented into LM3. LM3
has undergone further development that now includes an ecosystem model. However, a
description of the ecosystem model is not included in this report.
1.2 Model Features
The LM3 water quality model uses a high-resolution grid. This grid consists of 2,318 horizontal
cells and 19 vertical sigma layers. Each sigma layer contains the same number of horizontal
cells which results in a total of 44,042 cells for the entire water column. Each grid cell has a
horizontal area of 5 km x 5 km. Each sigma layer has a thickness that varies depending on the
water column depth. In nearshore areas, where water depth can be as low as 2.5 meters, some
of the sigma layers can have thicknesses under 0.1 meters. In offshore areas, where water
depth can exceed 250 meters, some of the sigma layers can have thicknesses exceeding 30
meters.
An eutrophication model (LM3-Eutro) has been implemented by Pauer (Pauer et a/., 2006) that
dynamically simulates three plankton species, three detrital carbons, and 11 nutrient states. It
should be mentioned that the core of the transport algorithm and eutrophication kinetic
calculations were borrowed from the Chesapeake Bay simulation model (ICM) developed and
applied by the United States Army Corps of Engineers (USAGE) at the Waterways Experiment
Station (WES) in Vicksburg, Mississippi (Cerco and Cole, 1993; 1994; 1995).
LM3 has the ability to output biotic carbon loads that can used by applications that do not
simulate eutrophication such as the LM2-toxic chemical model.
The user has two options when dealing with the time step of the model simulation. One option
is to use the hydrodynamic update interval as a constant time step. The user specifies this
option by setting a flag in the input declaration file. The second option does not require the user
to specify a time step; instead it is internally calculated using an algorithm based on horizontal
transport. This internally calculated time step is variable in time because it is derived from the
Courant stability constraint on horizontal transport.
LM3 has a built-in transport algorithm based on UQ. Particle settling velocities are part of the
transport calculation and not the eutrophication kinetics.
PCB kinetics were implemented by Endicott (Endicott et a/., 2006) and Wilson Melendez
(Computer Sciences Corporation [CSC]) that dynamically calculate volatilization and
partitioning. The PCBs run on top of the eutrophication kinetics because they partition to the
carbon states. Each PCB congener is modeled in the water column as seven phases: one of
the phases corresponds to the purely dissolved state, another to the partition of the PCB
congener with respect to dissolved organic carbon (DOC), and the remaining five phases
correspond to the partitioning of the PCB congener with respect to the five particulate carbon
states of LM3-Eutro.
A sediment transport algorithm was developed by Ray Chapman and Terry Gerald of the
USAGE at WES for the LM3 application in support of a PCB model. The sediment transport
-------
algorithm was designed according to specifications submitted by Douglas Endicott (Great Lakes
Environmental Center). These specifications include fixed sediment volume cells and a fixed
carbon-solid concentration gradient among others. The sediment transport source code was
incorporated into LM3 by Wilson Melendez (CSC). Each PCB congener is modeled as three
phases in the sediment column: one of the phases corresponds to the purely dissolved state,
one corresponds to the partitioning with respect to DOC, and the third corresponds to the
partitioning with respect to refractory organic carbon (ROC). The present sediment algorithm
accounts for only two carbon states: DOC and ROC.
Atrazine and chloride models were implemented into LM3. The atrazine model includes
calculations for volatilization and lumped-sum decay. Chloride is a conservative chemical with
only advective transport affecting its concentration. Both chemicals can be simulated
independently of one another and of PCBs and eutrophication.
The application can output concentrations, growth rate limitation factors, and mass balance
information on two grid resolutions: the high-resolution grid (which is also the computational
grid) and a course grid. The course grid, or low-resolution grid, consists of 10 surficial
segments with surface areas ranging from 3.5 108 to 1.3 1010 m2 and of up to five vertical
layers with thicknesses ranging from two to 84 meters. Because model output is exclusively
derived from calculations performed on the high-resolution grid, the data that is generated on
the low-resolution grid is actually data that is aggregated from the high-resolution onto the low-
resolution grid.
LM3 can run simulations for as many years as desired. The model is currently using the
hydrodynamics output generated for the LMMBP study period of 1994-1995. From the 1994-
1995 study period, the hydrodynamic output covers the period from January 1, 1994 to
December 21, 1995. If simulations extend beyond December 21, 1995, the program uses the
hydrodynamic data of the last 10 days of 1994 for the missing last 10 days of 1995 in order to
complete the calendar year of 1995. Once the program reaches the end of 1995, it goes back
to the beginning of the hydrodynamic output, January 1, 1994. The program re-reads the
output, from that point on, going all the way through December 21, 1995. To complete the
calendar date of 1995, the data corresponding to the last 10 days of 1994 are used as surrogate
values for the last 10 missing days of 1995 once again. This entire process is repeated as
many times as needed to cover the desired number of simulation years.
1.3 Model Limitations
LM3 does not compute hydrodynamics and instead uses the flows, diffusion coefficients,
volumes, and water temperature output generated by the high-resolution hydrodynamics model
known as the Princeton Ocean Model (POM) (Schwab and Beletsky, 1998) as input for the
transport algorithm section of the program.
No dissolved oxygen model has been implemented in the application as of this writing.
The LM3 sediment algorithm does not include a calculation of resuspension fluxes; the fluxes
are, instead, calculated and output using the application known as SEDZL (Ziegler and Lick,
1986; Lick et al., 1987; Gailani et al., 1991) and then, subsequently input into LM3 where they
are used by the sediment algorithm.
-------
LM3 does not contain a diagenesis model in the sediment bed as of this writing.
1.4 Model Further Developments
The present LM3 manual does not include a detailed description of the ecosystem model
development presently done on the LM3 branches of 3.2.16, 3.2.17, and 3.2.20. There is a brief
description of some of the work that has been done to date for the ecosystem model in
Chapters 2 and 4. The kinetics equations of the ecosystem model are going to be included in
another release of the LM3 manual in the future.
-------
CHAPTER 2
MAJOR REVISION HISTORY
LM3 has a long revision history, tracing its origins to an older application known as IPX (In-place
Pollutant eXport). The original IPX application was designed to simulate the transport and fate
of sediments and associated hydrophobic contaminants in tributaries. One of the primary goals
of this application was to study polychlorinated biphenyls (PCBs) in the lower Fox River. The
Fox River has long been known to be a source of pollutants to Lake Michigan, in particular
PCBs.
Because of the presence of PCBs in Lake Michigan and its impact on the water quality of the
lake, it became imperative to develop a model to study the fate and transport of these chemicals
within the lake. Hence, it was decided to use IPX as a starting point for a model that would
simulate PCBs and other pollutants in Lake Michigan. IPX underwent a series of source code
modifications that eventually led its evolution into the present day LM3.
A revision history of IPX and LM3 is presented here that fully illustrates the source code
development of these applications. The source code development has been archived using the
source control tool known as RCS (Revision Control System). RCS uses a particular version
numbering system to keep track of source code development. To understand the version
numbers shown in the revision history, a brief explanation of RCS revision numbers is needed.
RCS assigns a revision number to each version of a file that is archived. This number has the
format L.U.B.S., for level, update, branch, and sequence IDs, respectively. The number L
represents the level of the original archive file; this level is the main branch, also known as the
trunk, of the application. The second number U represents a specific revision of the main
branch (trunk). The third number B represents a branch of the archive file L.U. The last number
S represents a specific revision of the branch L.U.B. A one- or three-part number (L or L.U.B.)
is a branch specifier, which names a branch without naming a revision to it. A two- or four-part
number (L.U. or L.U.B.S.) is a revision specifier, which names exactly one revision. The
branching processes can actually be continued to any number of levels forming a tree-like
logical structure. However, in practice, more than two levels of branching are rarely needed.
Throughout the discussion that follows, only two- and three-part numbers of the revision history
are shown. Four-part numbers correspond to revisions made to the source code dealing with
bug fixes and minor changes that are not relevant to the description of the evolution of IPX and
LM3. The IPX revision history is shown first followed by the history of LM3. In this way it will be
clear how the evolution of IPX led to the development of LM3.
-------
2.1 IPX Revision History
A detailed description of the revision history of the application IPX is given below. A diagram
depicting the relationship between revisions and branches is shown in Figure 2.1.
Version 1.1: Major revision released by Large Lakes Research Station (LLRS) in August,
1995: original VAX version of the code. This revision is not found in RCS.
Version 2.1: Major revision released by LLRS in November, 1995: variable declarations.
This revision is not found in RCS.
Version 2.5: Major revision released by LLRS in November, 1995: reformat of code
including internal documentation. First revision archived in RCS.
Version 2.6: Major revision released by LLRS in November, 1995: major bug fix to buildup
of system concentrations on boundary segments.
Version 2.7: Major revision released by LLRS in November, 1995: RCS keywords included
in all FORTRAN source files. This revision has four branches: 2.7.1, 2.7.2, 2.7.3, and 2.7.4
which are detailed below.
Version 2.7.1: Minor revision branch. Several files with extension *.cmn were renamed.
Version 2.7.2: Major revision branch. Several INCLUDE files were added and others were
renamed. Several subroutines were renamed, several were deleted, and new ones were
added.
Version 2.7.3: Minor revision branch. It contains modifications to support parallel v-2.7.3
development branch with Wisconsin Department of Natural Resources (WDNR) Lagrangian
sediment transport. Source files contain *.I2.* to distinguish them from later revisions with
the same name.
Version 2.7.4: Minor revision branch. It contains hardpan sediment WDNR modifications.
Version 2.8: Major revision released by LLRS in February, 1996: it includes message and
error reporting and several bug fixes. This version has two branches: 2.8.1 and 2.8.2.
Version 2.8.1: Minor revision branch. New subroutines were added. INCLUDE files were
split into smaller files.
Version 2.8.2: Minor revision branch. It contains a HistoScope implementation test.
Version 3.0: Major revision released by LLRS in June, 1996: it includes cpp INCLUDE
statements, improved UNIX make capabilities, HistoScope output, and bug fixes. Source
files have been renamed with the file extension *.F. This revision has the branches 3.0.1,
3.0.2, 3.0.3, and 3.0.4 which are detailed below.
Version 3.0.1: Minor revision branch including modification of the IPX input format and use
of the UT library FIREAD input format.
-------
Version 1.1: Major revision release by
LLRS in August, 1995: original WAX version
of the code.
Version 2.1: Major revision release by
LLRS in November, 1995.
Version 2.5: Major revision release by
LLRS in November, 1995.
Version 2.6: Major revision release by
LLRS in November, 1995.
Version 2.7: Major revision release by
LLRS in November, 1995.
Version 2,8: Major revision release by
LLRS in February, 1996.
Version 3.0: Major revision release by
LLRS in June. 1996.
Version 3.1: Major revision containing
development specific to the Lake Michigan
Mass Balance Project (LMMBP). It was
released by LLRS in September, 1997.
Version 3.2: Major revision release by
LLRS in April, 1999: first stable release of
IPX eutrophication kinetics.
not in RCS
first revision archived in RCS
2.7.1 2.7.2 2.7.3
2.8.1 2.8.2
3.0.2 3.0.3 3.0.4
3.1.2 3.1.3 3.1.4 3.1.5 3.1.6
3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7
Figure 2.1. IPX revision history. The square boxes represent the IPX major revisions in
RCS. The rounded boxes represent branches of the revisions. Note that revisions 1.1
and 2.1 are not stored in RCS.
Version 3.0.2: Minor revision branch dedicated to the inclusion of organic carbon sorbent
dynamics as were used in the Green Bay study. This branch has the sub-branch 3.0.2.1.1,
which is detailed below.
Version 3.0.2.1.1: Modifications to the IPX advective transport algorithm making use of
ULTIMATE QUICKEST (UQ) algorithm.
Version 3.0.3: Minor revision branch with code modifications made by Xia Xiangsheng
(Computer Sciences Corporation [CSC]): inlining of several of the IPX kinetic calculation
subroutines.
Version 3.0.4: Minor revision branch containing modifications to the IPX kinetics
calculations: optimizing memory and central processing unit (CPU) performance efficiency.
-------
Version 3.1: Major revision containing developments specific to the Lake Michigan Mass
Balance Project (LMMBP). It was released by LLRS in September, 1997. This revision has
six branches: 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, and 3.1.6 which are detailed below.
Version 3.1.1: Minor revision branch containing modifications to the IPX state variable and
transport scheme. Removed the WASP F() array approach and substituted a scheme in
which the different sorption states are separate state variables; necessary to accommodate
the upcoming eutrophication algorithm.
Version 3.1.2: Minor revision branch containing merger of IPX versions 3.0.2.1.1
(implementation of Waterways Experiment Station [WES] transport) and version 3.1.1 (new
state variables and eutrophication kinetics).
Version 3.1.3: Minor revision branch containing updates to IPX FIREAD I/O: addition of
*FILE cards for specification of multiple input data files.
Version 3.1.4: Minor revision branch containing modifications to IPX state variables;
reverted to use of fixed eutrophication state variable indices. Two distinct detrital carbon
states (labile and refractory) were implemented.
Version 3.1.5: Minor revision branch. Separate dM/dt updates from transport calculation;
remove ICM parameter I/O; replace w/ FIREAD keys; bug fixes.
Version 3.1.6: Minor revision branch. Code/algorithm re-organization; added zooplankton
kinetics; completed debug of IPX eutrophication kinetics; the Common Data Format (CDF)
output; bug fixes.
Version 3.2: Major revision released by LLRS in April, 1999; first stable release of IPX
eutrophication kinetics. This revision has eight branches: 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5,
3.2.6, 3.2.7, and 3.2.8 which are detailed below.
Version 3.2.1: Minor revision branch. Space- and time-dependent illumination; wave
height, period and direction; write phytoplankton growth limitation factors; CDF formatted
initial conditions; bug fixes.
Version 3.2.2: Minor revision branch. Added bottom shear calculation; bug fixes.
Version 3.2.3: Minor revision branch. Mass balance calculations and output of mass
balance information; added SAND state variable; added ATRAZINE state variable;
implemented high-resolution load calculation; bug fixes.
Version 3.2.4: Minor revision branch. Output of hydrodynamic/shear information.
Version 3.2.5: Minor revision branch. Modifications were made to zooplankton kinetics; bug
fixes.
Version 3.2.6: Minor revision branch. Lagrangian sediment transport algorithm.
Version 3.2.7: Minor revision branch. Euler sediment transport algorithm.
-------
Version 3.2.8: Minor revision branch. New eutrophication default parameters were added
for hydrolysis and mineralization. Removed unused zooplankton kinetics code. This is the
last revision branch for IPX. The application name was changed to LM3 to distinguish the
level 2 and level 3 water quality calculations.
2.2 LM3 Revision History
The first release of LM3 was version 3.2 and was released in April of 1999. The reason for
using 3.2 as the first version number for the application LM3 was because it was created out of
the IPX revision branch 3.2.8. Note that the first revision branch of LM3 is 3.2.8 and not 3.2.1.
The subsequent revision history is detailed below. A diagram depicting the relationship
between revisions and branches is shown in Figure 2.2.
Version 3.2: First LM3 revision released by LLRS in December, 1999: it has combined
hydrodynamic transport and eutrophication kinetics. This revision has 14 branches: 3.2.8,
3.2.9, 3.2.10, 3.2.11, 3.2.12, 3.2.13, 3.2.14, 3.2.15, 3.2.16, 3.2.17, 3.2.18, 3.2.19, 3.2.20,
and 3.2.21 which are detailed below.
Version 3.2.8: Implemented eutrophication loads.
Version 3.2.9: New hydrodynamics input format.
Version 3.2.10: WES modifications to hydrodynamics to accommodate tributary flows;
improved vertical transport and new settling algorithm.
Version 3.2.11: Restored the Version 3.2.9 water column transport algorithm; enabled
processing of tributary flows; and added chloride state variable.
Version 3.2.12: New modifications to support multi-year simulations. Added shoreline
erosion loads. The light limitation factor was modified to account for shorter update
intervals.
Version 3.2.13: New Ray Chapman modifications to the UQ transport routine. This is the
same transport routine that Version 3.2.10 has. Settling algorithm is part of the transport
calculation. Source code logical flags were added to support a number of total phosphorus
(TP) long-term scenarios.
Version 3.2.14: New modifications to support a 20-year hindcast calibration for the
eutrophication.
Version 3.2.15: New WES sediment transport routine. Atrazine and PCB kinetics were
added. Removed the sand state variable and in its place added the clay state variable.
Version 3.2.16: New enhanced eutrophication. The original single zooplankton species has
been broken down into four zooplankton species; these are Mysis relicta, Bythotrephes
longimanus, carnivorous zooplankton, and herbivorous zooplankton. A stratified user-
defined sediment flux was added to mimic sediment transport. This branch does not contain
any atrazine or PCB kinetics.
-------
Version 3.2: First LM3 revision release
by LLRS in December, 1999; it has
combined hydrodynamic transport and
eutrophication kinetics.
Figure 2.2. LM3 revision history. The square box represents the LM3 major revision in
RCS. The rounded boxes represent the branches of the revision.
Version 3.2.17: Expanded the eutrophication model by breaking down greens into four
separate groups. Zebra mussels and Diporeia were added as part of the development of an
ecosystem model. Sediment compartment is also a stratified user-defined sediment flux.
This branch does not contain any atrazine or PCB kinetics. This branch is still being tested
as of this writing.
Version 3.2.18: This branch is an enhancement of 3.2.15. An algorithm was added that
minimizes the occurrence of negative concentrations. This algorithm consists of threshold
concentrations for dissolved silica, total inorganic phosphorus, nitrate, and ammonia that
serve as lower bound values for those states. Whenever the concentrations of the
aforementioned states drop below their corresponding user-defined threshold
concentrations the program sets the concentrations to zero.
Version 3.2.19: This branch, an enhanced version of 3.2.15, has some added modifications
to support a eutrophication hindcast. There are two hindcast periods considered: 1960-
2011 and 1976-2011.
10
-------
Version 3.2.20: Enhanced version of 3.2.16 that supports an ecosystem Phase I forecasts.
This branch is still being tested as of this writing.
Version 3.2.21: This revision branch is an enhancement of 3.2.17. It supports forecasts for
the ecosystem model that includes zebra mussels and Diporeia. This branch is still being
tested as of this writing.
11
-------
CHAPTER 3
MODEL PARAMETERS
Model parameters represent a myriad of empirical data, calibration data, source code flags, and
input filenames needed by LM3 to execute properly. This information is specified as input
values that are read into LM3 during the execution of the program.
The empirical and calibration data are numerical values needed by LM3 because they are part
of the mathematical equations of the model. Empirical data are parameters usually obtained
from laboratory experiments or, in some cases, from in situ tests. These parameters do not
need to be adjusted during the calibration processes of the model. On the other hand,
calibration data are parameters that are not well known because of lack of experimental work or
difficulty in measuring them. Consequently, modelers have the option of adjusting calibration
data, preferably within a specified range, to fit the model output to the observed data.
Source code flags are logical variables that turn sections or subroutines within the program on
or off depending on what the user wants to do. They control part of the flow of the model
calculation by determining which algorithm should be used for a specific kinetic process,
whether a particular process should be executed or not, and so on.
Input filenames are the names of files that contain data that LM3 needs for its execution. The
data contained in these files are usually too big to be entered manually so they have been pre-
processed and made ready-to-use for the user. Examples of such data are hydrodynamics
flows, water temperature, initial conditions, and loads among others.
In the discussion that follows, we present a detailed description of the kind of parameters
needed by the LM3 model and the proper syntax to use when specifying them in the input deck
file. Section 3.1 discusses the most common syntax used to specify input parameters. Section
3.2 discusses what syntax to use when entering non-scalar parameters. Non-scalar parameters
refer to large datasets that are input into LM3 by reading the data from separate files. Section
3.3 deals with general program parameters. Section 3.4 discusses the case of parameters that
function as flags that control the activation of certain processes within the model. Section 3.5
briefly addresses the issue of eutrophication and chemical-specific parameters while directing
the user to the relevant chapters. Section 3.6 discusses parameters associated with the
transport algorithm.
12
-------
3.1 Parameter Specification
LM3 parameters are specified using a format-independent parameter processing tool known as
FIREAD (Settles, 1996). Parameters are read on standard input (stdin), and in most cases, use
the syntax:
KEY VALUE
where KEY specifies the name of the parameter. Each key and value pair must appear on its
own line. Other than that, no particular format is required. Parameters not specified in the input
deck are assigned default values; all parameter values are logged in the output log file and
parameters whose default values have been altered are flagged. Key and parameter values
can appear in any order in the input deck. FORTRAN-style comment syntax can be used to
help document the input deck. An example is provided below.
LIST ! Echo the contents of this file.
OVERWRITE 1 ! Overwrite previous output dumps
CDFCOARSE 1 ! Write coarse (41-segment) concentrations
CDFFINE 0 ! Do not output high-resolution (5 km) concentrations
DD2WRT 2 ! How often to write output
C
C Begin eutrophication parameters
C
CGZ 2.3E-06 ! Zooplankton grazing coefficient
KTGD1 2.5E-03 ! diatom temp coefficient < 20C
KTGG1 2.5E-03 ! greens temp coefficient < 20C
C
C Input files
C
*FILEMAP /home/llrs_model/dsets/LM3/R0105/map.dat ! Map
*FILEGEO /home/llrs_model/dsets/LM3/R0105/geo.dat ! Geometry
*FILE AGG /home/llrs_model/dsets/LM3/R0105/map1312.dat ! Segment aggregation
*FILE HYDRO /home/llrs_model/dsets/LM3/R0105/hydro94.cdf ! Hydrodynamics
*FILE ICI /home/llrs_model/dsets/LM3/R0105/ici.cdf ! Initial conditions
STOP
3.2 Non-Scalar Input Program Parameters
Input program parameters that are not scalar in nature, that is, parameters that require a large
set of values, are input using the key *FILE. Typical cases that require the input of large sets of
values are initial conditions, hydrodynamics, and loads. See Section 11.1 for a more detailed
discussion of these cases.
The *FILE key uses the following FIREAD syntax:
*FILE
13
-------
The above line consists of three items. The first item is the key *FILE itself. The second item,
, can be any of the keynames listed in Table 3.1. The last item, , is the name
of the file that contains the set of values. The name of the file should be strung together with its
pathname so the program will know where to locate it within the Linux system. The format of
files can be either ASCII or CDF (Common Data Format).
Table 3.1. TILE Key File Specifications
Key Name Description
AGG Input file for mapping between level 3 and level 2 geometries
AIR_CONC Input file for chemical vapor concentrations
GEO Input file for transport scheme cell definitions
HYDRO Input file for hydrodynamics
ICI Input file for water column initial conditions
ICI_SED Input file for sediment bed initial conditions
LDLOC Loads location file
LOAD Loads file
L2PROD Output file name for level 2 biotic carbon load
MAP Input file for transport scheme flow face definitions
RESUSP_VELOCITIES Input file for resuspension velocities
VGEO Input file for sediment transport scheme cell definitions
VHYD Input file for sediment bed hydrodynamics
VMAP Input file for sediment transport scheme flow face definitions
WIND Input file for wind speed values
The key *FILE can be specified more than once in the input deck. The number of times that it
appears in the input deck will depend on what the user is trying to simulate. See Chapter 13 for
examples of different simulations that show the use of the *FILE key.
3.3 General Program Parameters
There are several parameters that function as general program parameters in the sense that
they trigger a major task during the execution of the program. Some of these tasks are
associated with output options, eutrophication and/or polychlorinated biphenyl (PCB) kinetics,
scaling factors, etc. For example, the key name below will cause the program to print the high-
resolution output for each simulated state.
CDFFINE1
Another example, given below, will cause the program to scale the illumination factor by 10.
ILMUL10.0
This affects the light limitation factor that is used in the eutrophication kinetics throughout the
entire simulation period.
14
-------
The complete list of general program parameters, with their corresponding choice of values, is
given in Table 3.2. All the general program parameters have default values so it is up to the
user to decide whether a non-default value should be used for a particular simulation run or not.
Note that some of the parameters have associated units and others do not. The parameters
CDFCOARSE, CDFFINE, and OVERWRITE can assume only the integer values zero and one;
the parameter DD2WRT can assume only integer values that are equal to or higher than one;
the parameter SILIM can assume only the integer values of one, two, and three; the parameter
*DO assumed only logical flags as defined in Table 3.5; all other parameters assume non-
negative floating-point values. Most of the general program parameters should be specified no
more than once in the input file. The only exceptions are the parameters *DO and *SCALE, that
can be specified multiple times in the input file.
3.3.1 General Program Parameter *SCALE
The program parameter *SCALE has a rather complex syntax that requires a brief explanation.
This parameter is used when the user wants to scale either initial conditions, loads, or both.
When scaling initial conditions, that is, initial concentration values, the user has to use the
syntax shown below in the input file.
*SCALE ICI
There are four items in the line above. The first item is the FIREAD key *SCALE; the second
item, , is a non-negative floating number the user specifies as the scaling factor for a
given state; the third item is the key name ICI which indicates to the program that the user is
scaling water column initial conditions; the last item, , can be any of the states listed in
Table 3.3. The example shown below will cause the program to scale the diatom initial water
concentrations by 1.5.
*SCALE 1.5 ICI DIA
When scaling loads, the user must use the syntax shown below in the input file.
*SCALE
There are four items in the line above. The first item is the FIREAD key *SCALE itself. The
second item, , is any non-negative floating value the user wishes to specify as a scaling
factor for a particular load type. The third item, , can be any of the load types listed
in Table 3.4. The last item, , can be any of the states listed in Table 3.3. The example
shown below will cause the program to scale the soluble reactive phosphorus (SRP) monitored
loads by 100.
*SCALE 100.0 LOAD_MON SRP
3.4 Basic Program Control Option Parameters
Several basic program options are controlled by FIREAD keys using the syntax *DO key name.
The *DO key names and their interpretations are given in Table 3.5. Some of the control flags
are logically associated with one another and this association is demonstrated in Figure 3.1.
15
-------
Table 3.2. General Program Parameters
Key Name
CDFCOARSE
CDFFINE
DD2WRT
DLT
*DO
Description
Selection of coarse segmentation output values;
enable with 1, disable with 0
Selection of fine segmentation output values;
enable with 1, disable with 0
Number of days between writes
Default time step when hydrodynamic transport is
not specified
Basic program options specifying transport and
kinetics calculations to be performed. See Section
Default
Value
0
0
1
4.32x104
All flags are
false
Units
None
None
Days
*s
None
ILMUL
ILUMO
OVERWRITE
*SCALE
SILIM
TMEND
TMSTRT
START_DAY_SCALE_LOAD_94
END_DAY_SCALE_LOAD_94
START_DAY_SCALE_LOAD_95
END DAY SCALE LOAD 95
3.4 for review and discussion
Scale factor for illumination 1.0 None
Value of illumination in absence of shortwave 0.0 *W/m2
radiation
Overwrite previous output; 0 None
enable with 1, disable with 0
Scale initial conditions or loads. 1.0 for all None
Format for initial condition is: states
*SCALE ICI
Format for loads is:
*SCALE
where can be any of the parameters
listed in Table 3.4 and can be any of the
ones listed in Table 3.3
Handling of silica and nitrogen limitation in diatom 1 None
growth and handling of nitrogen limitation in greens
growth.
1 enables f = fsiiica x min (fnitrogen x fphosph) for
diatoms and f = min (fnitrog x fphosph) for greens
2 enables f = min (fg|ica x fnitrog x fphosph) for diatoms
and f = min (fnitrog x fphosph) for greens
3 enables f = fsiiica x fphosph for diatoms and f = fphosph
for greens
Day number of last hydrodynamic record 9999.9 Days
Day number of first hydrodynamic record 0.0 Days
Starting day number for the scaling of 1994 loads 0.0 Days
Ending day number for the scaling of 1994 loads 9999.9 Days
Starting day number for the scaling of 1995 loads 0.0 Days
Ending day number for the scaling of 1995 loads 9999.9 Days
*s = seconds; W = watts; m = meters
16
-------
Table 3.3 States for General Program Parameter *SCALE
State
Description
DOC
DIA
GRE
ZOO
LOG
ROC
SRP
OOP
LOP
ROP
NH4
NO3
DON
LON
RON
SA
SU
PCB_5+8
PCBJ5+17
PCBJ6+32
PCBJ8
PCB_26
PCB_28+31
PCB_33
PCB_37+42
PCB_44
PCB_49
PCB_52
PCB_56+60
PCB_66
PCB_70+76
PCB_74
PCB_77+110
PCB_81
PCB_87
PCB_84+92
PCB_89
PCB_99
PCBJ01
PCBJ18
PCBJ23+149
PCBJ05+132+153
PCBJ51
PCBJ38+163
PCBJ70+190
PCBJ72+197
PCB_180
PCBJ82+187
PCB_195+208
PCB_196+203
PCB_201
PCB_146
PCB_85
ATZ
CL
CLAY
Dissolved organic carbon
Diatom carbon
Greens
Zooplankton
Labile organic carbon
Refractory organic carbon
Soluble reactive phosphorus
Dissolved organic phosphorus
Labile organic phosphorus
Refractory organic phosphorus
Ammonia
Nitrate
Dissolved organic nitrogen
Labile organic nitrogen
Refractory organic nitrogen
Available silica
Particulate biogenic silica
PCB congener 5+8
PCB congener 15+17
PCB congener 16+32
PCB congener 18
PCB congener 26
PCB congener 28+31
PCB congener 33
PCB congener 37+42
PCB congener 44
PCB congener 49
PCB congener 52
PCB congener 56+60
PCB congener 66
PCB congener 70+76
PCB congener 74
PCB congener 77+110
PCB congener 81
PCB congener 87
PCB congener 84+92
PCB congener 89
PCB congener 99
PCB congener 101
PCB congener 118
PCB congener 123+149
PCB congener 105+132+153
PCB congener 151
PCB congener 138+163
PCB congener 170+190
PCB congener 172+197
PCB congener 180
PCB congener 182+187
PCB congener 195+203
PCB congener 196+203
PCB congener 201
PCB congener 146
PCB congener 85
Atrazine
Chloride
Clay
17
-------
Table 3.4. Load Types for Program Parameter *SCALE
Load Type
Description
LOAD_MON
LOADJJNMON
LOAD_ATM
LOAD_MENOMINEE
LOAD_FOX
LOAD_SHEBOYGAN
LOAD_MILWAUKEE
LOAD_GRAND_CALUMET
LOAD_ST_JOSEPH
LOAD_KALAMAZOO
LOAD_GRAND
LOAD_MUSKEGON
LOAD_PERE_MARQUETTE
LOAD_MANISTIQUE
LOAD_CEDAR
LOAD_PESHTIGO
LOAD_OCONTO
LOAD_PENSAUKEE
LOAD_DUCK
LOAD_KEWAUNEE
LOAD_EAST_TWIN
LOAD_WEST_TWIN
LOAD_MANITOWOC
LOAD_ROOT
LOAD_BLACK_SH
LOAD_BLACK_HD
LOAD_PIGEON
LOAD_WHITE
LOAD_PENTWATER
LOAD_BIG_SABLE
LOAD_MANISTEE
LOAD_BETSIE
LOAD_BOARDMAN
LOAD_JORDAN
LOAD_STURGEON
LOAD_WHITEFISH
LOAD_RAPID
LOAD_ESCANABA
LOAD_FORD
LOAD_CHICAGO_RIVER
LOAD_STRAITS_MACKINAC
LOAD_WET_ATMOSPHERIC
LOAD_SED
LOAD_UNMONITORED_KALAMAZOO
LOADJJNMON ITORED_PERE_MARQUETTE
LOAD_MILECOQUINS
LOAD_GALIEN
LOAD_SHORE_EROSION
LOAD DRY ATMOSPHERIC
Monitored loads
Unmonitored loads
Atmospheric loads
Menominee River load
Fox River load
Sheboygan River load
Milwaukee River load
Grand Calumet River load
St. Joseph River load
Kalamazoo River load
Grand River load
Muskegon River load
Pere Marquette River load
Manistique River load
Cedar River load
Peshtigo River load
Oconto River load
Pensaukee River load
Duck River load
Kewaunee River load
East Twin River load
West Twin River load
Manitowoc River load
Root River load
Black (SH) River load
Black (HD) River load
Pigeon River load
White River load
Pentwater River load
Big Sable River load
Manistee River load
Betsie River load
Boardman River load
Jordan River load
Sturgeon River load
Whitefish River load
Rapid River load
Escanaba River load
Ford River load
Outflow only: no loads
Outflow only: no loads
Wet atmospheric load
Sediment load
Unmonitored Kalamazoo River load
Unmonitored Pere Marquette River load
Milecoquins River load
Galien River load
Shoreline erosion load
Dry atmospheric load
18
-------
Table 3.5. *DO Key General Program Parameters
Key Name
Description
Default
Value
ATM_LOADS_ELIM I NATION
ATZ
CL
CLAY
EUTRO
EXP_DECAY_LOAD
GRLIM
LOADSJNCREASE
MASSBALANCE
OCONNOR
PCB_5+18
PCBJ5+17
PCBJ6+32
PCBJ8
PCB_26
PCB_28+31
PCB_33
PCB_37+42
PCB_44
PCB_49
PCB_52
PCB_56+60
PCB_66
PCB_70+76
PCB_74
PCB_77+110
PCB_81
PCB_87
PCB_84+92
PCB_89
PCB_99
PCBJ01
PCBJ18
PCBJ23+149
PCBJ05+132+153
PCBJ51
PCBJ38+163
PCBJ70+190
PCBJ72+197
PCB_180
PCBJ82+187
PCB_195+208
PCB_196+203
PCB_201
PCB_146
PCB_85
RESCALE_PLOADS_ATM_TRIBS
SEDIMENT
SED_LOADS_INCREASE
SED_MASS_BALANCE
SHEAR
TRIB_LOADS_ELIMINATION
TRANS
VOLAT
Enable the elimination of phosphorus loads FALSE
Enable atrazine calculations FALSE
Enable chloride calculations FALSE
Enable clay calculations FALSE
Enable eutrophication kinetics calculations FALSE
Enable an exponential decay of phosphorus loads FALSE
Write eutrophication growth limitation factors FALSE
Enable the increase of phosphorus loads FALSE
Enable mass balance calculations FALSE
Enable atrazine O'Connor volatilization FALSE
Enable PCB 5+8 kinetic calculations FALSE
Enable PCB 15+17 kinetic calculations FALSE
Enable PCB 16+32 kinetic calculations FALSE
Enable PCB 18 kinetic calculations FALSE
Enable PCB 26 kinetic calculations FALSE
Enable PCB 28+31 kinetic calculations FALSE
Enable PCB 33 kinetic calculations FALSE
Enable PCB 37+42 kinetic calculations FALSE
Enable PCB 44 kinetic calculations FALSE
Enable PCB 49 kinetic calculations FALSE
Enable PCB 52 kinetic calculations FALSE
Enable PCB 56+60 kinetic calculations FALSE
Enable PCB 66 kinetic calculations FALSE
Enable PCB 70+76 kinetic calculations FALSE
Enable PCB 74 kinetic calculations FALSE
Enable PCB 77+110 kinetic calculations FALSE
Enable PCB 81 kinetic calculations FALSE
Enable PCB 87 kinetic calculations FALSE
Enable PCB 84+92 kinetic calculations FALSE
Enable PCB 89 kinetic calculations FALSE
Enable PCB 99 kinetic calculations FALSE
Enable PCB 101 kinetic calculations FALSE
Enable PCB 118 kinetic calculations FALSE
Enable PCB 123+149 kinetic calculations FALSE
Enable PCB 105+132+153 kinetic calculations FALSE
Enable PCB 151 kinetic calculations FALSE
Enable PCB 138+163 kinetic calculations FALSE
Enable PCB 170+190 kinetic calculations FALSE
Enable PCB 172+197 kinetic calculations FALSE
Enable PCB 180 kinetic calculations FALSE
Enable PCB 182+187 kinetic calculations FALSE
Enable PCB 195+208 kinetic calculations FALSE
Enable PCB 196+203 kinetic calculations FALSE
Enable PCB 201 kinetic calculations FALSE
Enable PCB 146 kinetic calculations FALSE
Enable PCB 85 kinetic calculations FALSE
Enable the rescaling of phosphorus loads FALSE
Enable sediment transport calculations FALSE
Enable the increase of sediment loads FALSE
Enable sediment bed mass balance calculations FALSE
Enable bottom shear calculations FALSE
Enable the elimination of tributary phosphorus loads FALSE
Enable water column transport FALSE
Enable volatilization calculations FALSE
19
-------
Process Flays
shear stress
sediment transport
true
water column
transport
volatilization
O'Connor volatilization
elimination of
atmospheric loads
exponential decay
of loads
scaling of phosphorus
loads
increase of loads
increase of sediment
loads
elimination of tributary
loads
State Flags
clav
eutrophication kinetics
true
PCB congener
atrazine
chloride
true
Output Flags
settiim
sediment mass balance
growth limitation
mass balance
Figure 3.1. Logical associations among the LM3 program flags. All flags are FALSE by
default and *DO FIREAD keys are used to enable the desired options.
20
-------
Water column transport, atrazine calculation, and PCB calculations can be enabled
independently of one another. However, enabling sediment transport will cause the program to
automatically turn on eutrophication calculations. Enabling eutrophication calculations will
cause the program to automatically perform settling calculations. Enabling PCB calculations will
cause the program to turn on the eutrophication. There is a shear stress calculation that can be
performed independently of the eutrophication, atrazine, and PCB calculations. For example,
the following FIREAD input key line:
*DO EUTRO
will enable eutrophication and settling calculations. See Chapter 13 for examples of different
simulations that show the use of the *DO key.
3.5 Eutrophication and Chemical-Specific Parameters
The input parameters used for eutrophication, atrazine, and PCB kinetic calculations are not
discussed nor are they listed in this chapter. The discussion of kinetic calculations is complex
and involves many equations. Thus separate chapters have been devoted to discuss kinetics
for the cases of eutrophication, PCBs, and atrazine.
Eutrophication kinetics is discussed in detail in Chapter 6. A listing of all the parameters
associated with the kinetics is shown in Table 6.1. See Section 13.4 for a sample input deck
that demonstrates the use of eutrophication input parameters.
PCB kinetics is discussed in detail in Chapter 8. Listings of all the parameters associated with
the kinetics are shown in Tables 8.1 through 8.4. See Section 13.5 for a sample input deck that
demonstrates the use of PCB congener parameters.
Atrazine kinetics is discussed in detail in Chapter 9. A listing of all the parameters associated
with the kinetics is shown in Table 9.1. See Section 13.2 for a sample input deck that
demonstrates the use of atrazine parameters.
There is no chloride kinetics chapter because chloride does not undergo any kinetics that we
know of. Thus there are no input parameters associated with chloride modeling. Nevertheless,
see Section 13.3 for a chloride sample input deck.
3.6 General Transport Parameters
There are several input parameters that can affect the water column and sediment bed transport
simulation of LM3. These parameters are used to perform various tasks such as scaling
diffusion coefficients, specifying settling velocities, enabling boundary conditions, specifying the
Crank-Nicholson parameter, enabling diagnostics, and so on. The full list of available water
column transport parameters in LM3 is given in Table 3.6. The full list of available sediment bed
transport parameters in LM3 is given in Table 3.7.
21
-------
Table 3.6. Water Transport Parameters
Key Name
BCC
DIAC
DLTFTN
FLC
KNIK
SLC
TH
VBC
VDIA
VGRE
VLOC
VLON
VLOP
VROC
VRON
VROP
VSU
VCLAY
XYDFC
XYDFMAX
XYDFMUL
ZDFC
ZDFMAX
ZDFMUL
Description
Enable boundary conditions; 1 enables, 0 disables
Enable diagnostics; 1 enables, 0 disables
Water column transport limiting Courant number
Enable flows; 1 enables, 0 disables
Nikuradse roughness parameter
Transport algorithm; 1 = QUICKEST, 2 = Upwind
Implicit scheme 6-weighting value
Enable volume balance checking; 1 enables, 0 disables
Diatom settling velocity
Green algae settling velocity
Labile detrital carbon settling velocity
Labile organic nitrogen settling velocity
Labile organic phosphorus settling velocity
Refractory detrital carbon settling velocity
Refractory organic nitrogen settling velocity
Refractory organic phosphorus settling velocity
Unavailable silica settling velocity
Clay settling velocity
Enable horizontal dispersion; 1 enables, 0 disables
Maximum horizontal dispersion
Horizontal dispersion scaling factor
Enable vertical dispersion; 1 enables, 0 disables
Maximum vertical dispersion
Vertical dispersion scale factor
Default Value
0
0
0.9
1
0.11
1
0.5
1
2.3 x10'6
1.7X10'6
1.7X10'6
1.7X10'6
1.7X10'6
1.7x1Cr6
1.7x1Cr6
1.7x1Cr6
i.7xicr6
i.0xicr5
1
1.0x10+29
1.0
1
1029
1
Units
None
None
None
None
m
None
None
None
m s"1
m s"1
m s"1
m s"1
m s"1
m s"1
m s"1
m s"1
m s"1
m s"1
None
m2 s-1
None
None
m2 s-1
None
Table 3.7. Sediment Transport Parameters
Key Name
DENSITY LOG
DENSITY ROC
DENSITY SRP
DENSITY LOP
DENSITY ROP
DENSITY LON
DENSITY RON
DENSITY CLAY
MAX RESP VEL
QMUL SED
SLC_SED
TH SED
TIME STEP SED SCALE
ZDF
ZDFMAX SED
ZDFMUL SED
Description
Labile organic carbon particle density
Refractory organic carbon particle density
Soluble reactive phosphorus particle density
Labile organic phosphorus particle density
Refractory organic phosphorus particle density
Labile organic nitrogen particle density
Refractory organic nitrogen particle density
Clay particle density
Maximum resuspension velocity allowed
Sediment flow scaling factor
Transport algorithm
1 = QUICKEST
2 = UPWIND
Implicit scheme 6-weighting value
Sediment bed time step scaling factor
Sediment vertical diffusion
Sediment maximum vertical dispersion
Sediment vertical dispersion scale factor
Default
Value
1200.00
1200.00
1200.00
1200.00
1200.00
1200.00
1200.00
2200.00
1 .0 x 1 0'4
1.0
1
0.55
1.0
1.0 x10"8
1.0x104
1.0
Units
kg m"3
kg m"3
kg m"3
kg m"3
kg m"3
kg m"3
kg m"3
kg m"3
m s"1
None
None
None
None
m2 s-1
m2 s-1
None
22
-------
All the transport parameters shown in Tables 3.6 and 3.7 have default values and some of them
have associated units while others do not. The user does not have to specify these parameters
in the input deck if the intention is to rely on the default values. However, if the user wants to
use non-default values for some of the parameters, then one needs to set the desired values in
the input deck. See Chapter 13 for examples of different simulations that show the use of these
transport parameters.
23
-------
CHAPTER 4
LM3 NEW FEATURES
LM3 has undergone many changes since its origins as an In-place Pollutant eXport (IPX)
application. New state variables and algorithms were added to expand the modeling
capabilities of the application. Some of the new states added were atrazine, chloride,
polychlorinated biphenyls (PCBs), Diporeia, zebra mussels, Mysis relicta, Bythotrephes
longimanus, and blue-green algae, among others.
These new features were added in stages over a long period of time. Each stage of
development is represented by a different Revision Control System (RCS) branch number as
shown in the next section. Each branch can also be seen as a different kind of LM3 model
because some of the branches contain features that are not necessarily found in some of the
others. This allows for the development of parallel sub-models in LM3.
In the discussion that follows, the main new LM3 features are outlined under their corresponding
RCS development branches. The goal is to highlight some of the unique features that were
incorporated into LM3. Some of these branches, especially the later ones, are still under testing
and/or development. Thus the new features discussed in this chapter are the ones contained in
LM3 as of this writing.
4.1 New Features
The following new features were included in Version 3.2.8 of the LM3 calculation.
1. Eutrophication loads were implemented.
2. A shear stress algorithm was added. The algorithm was taken from the application known
as SEDZL.
3. A sediment bed transport algorithm was added. The algorithm is the same one used in
SEDZL and is known as the age-layer algorithm. However, this algorithm has never been
tested within LM3.
4. Atrazine and sand state variables were added.
24
-------
The following new features were included in Version 3.2.9 of the LM3 calculation.
1. Source code modifications were made to allow the program to read in a new
hydrodynamics input format. The new input format has the hydrodynamics data stored in
separate Common Data Format (CDF) files for each sigma layer.
2. New source code was added to generate phytoplankton carbon production for the level 2
toxic model (also known as LM2).
The following new features were included in Version 3.2.10 of the LM3 calculation.
1. New Waterways Experiment Station (WES) modifications to hydrodynamics were made to
accommodate tributary flows. This is the first version of LM3 that uses hydrodynamics
with tributary flows.
2. Vertical transport was improved using ULTIMATE QUICKEST (UQ) for the explicit term of
Crank-Nicholson. Settling calculation was added to the transport calculation.
The following new features were included in Version 3.2.11 of the LM3 calculation.
1. Tributary flows were added to the hydrodynamic fields.
2. The hydrodynamics format was modified to accommodate larger input data sets with
shorter update intervals.
3. A state variable for chloride was added.
The following new features were included in Version 3.2.12 of the LM3 calculation.
1. The program was modified to enable long-term simulations, that is, simulations that span
time periods of more than two years. Long-term simulations are made possible by
recycling a subset of the 1994-1995 hydrodynamic and load data. The hydrodynamic and
load data that are recycled consist of the last 10 days of 1994 and all of 1995 giving the
user one full calendar year worth of values. Most of the modifications that support these
long-term simulations were made in the routine hydro. F.
2. Shoreline erosion (bluff) loads for particulate organic carbon (POC) were added. These
POC loads are believed to consist mostly of refractory organic carbon (ROC); thus ROC is
the only carbon state that receives bluff loads in the program.
3. The light limitation factor was modified to account for shorter update intervals.
The following new features were included in Version 3.2.13 of the LM3 calculation.
1. New Ray Chapman modifications to the UQ transport routine were incorporated (see
Appendix A). This is the same transport routine that Version 3.2.10 used. Settling is part
of the transport calculation.
25
-------
2. A number of control flags were added in support of various eutrophication load
management scenarios. These flags are used to trigger an increase or a decrease of
nutrient loads starting for a specified year when running the program for 10 or more years.
3. More than two-year simulations were implemented by looping over the 1994-1995
hydrodynamic and load data as many times as required. The hydrodynamic output, for the
1994-1995 calibration period, covers the period from January 1, 1994 to December 21,
1995. If simulations extend beyond December 21, 1995, the program uses the
hydrodynamic data of the last 10 days of 1994 for the missing last 10 days of 1995 in
order to get a full 1995 calendar year. To allow simulations to extend beyond 1995, the
program re-reads the hydrodynamic output starting on January 1, 1994 onward through
December 21, 1995. To complete the calendar date of 1995, the data corresponding to
the last 10 days of 1994 are used as surrogate values for the last 10 missing days of 1995
once again. This entire process is repeated as many times as needed to cover the
desired number of simulation years. This new implementation replaced the one-year loop
of Version 3.2.12.
The following new feature was included in Version 3.2.14 of the LM3 calculation.
Conditional statements were added to bypass the recycling of soluble reactive phosphorus
(SRP) and labile organic phosphorus (LOP) load values for the Fox and Grand Rivers in
one case and for the Betsie and Grand Rivers in the other case. SRP and LOP load
values were generated for a 20-year time period.
The following new features were included in Version 3.2.15 of the LM3 calculation.
1. A volatilization calculation and a lumped-sum decay factor were added for atrazine.
2. PCB kinetics, including volatilization, was added to the program. PCBs are modeled as
seven phases in the water column and three phases in the sediment column. The phases
represent the partitioning of PCBs with respect to the eutrophication carbon states in
addition to the PCB congener purely dissolved phase. A sediment-water column diffusion
process for PCBs was also added.
3. A sediment bed transport algorithm was added in support of PCB simulations (see
Appendix A). The algorithm uses a simple UQ calculation.
4. Clay was added as a state variable, while sand was removed from the list of states
modeled.
5. Multi-year simulations were implemented by looping over the 1994-1995 hydrodynamic
and load data as many times as required. The hydrodynamic data is looped over in the
same way as explained in feature three of Version 3.2.13 above.
The following new features were included in Version 3.2.16 of the LM3 calculation.
1. A new enhanced eutrophication was implemented by adding three additional zooplankton
groups to the original one. The original zooplankton was herbivorous zooplankton; the
26
-------
three additional groups added were: Mysis relicta, Bythotrephes longimanus, and
carnivorous zooplankton.
2. A sediment compartment was implemented in which nutrient sediment concentrations
were stratified into zones according to a correlation between water column depth and
observed sediment nutrient concentrations. Sediment concentrations were populated for
each 5 km cell using the inverse square method of interpolation within each zone. A
sediment resuspension flux was calculated using a user-defined resuspension velocity
together with the interpolated sediment concentrations. There is no limit on the amount of
mass that can be resuspended for a given nutrient; in other words, the sediment bed is
treated as an infinite reservoir of nutrients.
The following new features were included in Version 3.2.17 of the LM3 calculation.
1. The eutrophication model was further enhanced by dividing the green algae into four
groups. The four groups are: greens, nitrogen-fixing blue-greens, non-nitrogen-fixing
blue-greens, and other green algae.
2. Two new species were added, zebra mussels and Diporeia, in support of an ecosystem
model.
3. This branch is still being tested as of this writing.
The following new feature was included in Version 3.2.18 of the LM3 calculation.
Threshold concentration input parameters were added to the source code to address the
problem of the occurrence of negative concentrations in the eutrophication kinetics. The
new input parameters apply only to dissolved silica (SA), SRP, dissolved ammonia (NH4),
and nitrate (NO3).
The following new features were included in Version 3.2.19 of the LM3 calculation.
1. This branch, an enhanced version of 3.2.15, includes modifications to support a
eutrophication hindcast. Recycling of monitored phosphorus loads and phosphorus
sediment loads was eliminated to allow the use of historical phosphorus loads from the
1970s. New logical flags were added within the program to aid in deciding which
eutrophication states and which loads were not going to be recycled during the hindcast.
These flags were added within the subroutine hydro.F. Logical flags were added within
the subroutine loads.F to help in deciding which load locations and states did not need any
time adjustment during the hindcast run. The hindcast periods considered were 1960-
2011 and 1976-2011. Because there was no hydrodynamic data available for the entire
hindcast periods, the 1994-1995 hydrodynamics was looped over in the same way as
explained in feature three of Version 3.2.13 (see above).
2. Several new input CDF files were created in support of the hindcast runs.
27
-------
The following new feature was included in Version 3.2.20 of the LM3 calculation.
This branch is an extension of Version 3.2.16, with some source code modifications made
to allow for long-term forecasts. Only a single year of the 1994-1995 hydrodynamic data is
used for projections. These projections are program runs that extend beyond the 1994-
1995 study period. This branch is still being tested as of this writing.
28
-------
CHAPTER 5
WATER COLUMN TRANSPORT
Considerable attention has been paid to correctly simulating water column transport in the LM3
simulation (Chapman et al., 1997). The correct implementation of hydrodynamic flow and
dispersion information (Schwab and Beletsky, 1998) as well as the simulation of concentration
gradients have been identified as key elements of water quality analysis for the Lake Michigan
system and have been given particular emphasis throughout the development of the LM3
model.
Numerical diffusion has been reduced by implementing an explicit, third-order accurate Non-
Uniform-Grid ULTIMATE QUICKEST (UQ) transport scheme in the horizontal and vertical
dimensions, and a second-order semi-implicit Crank-Nicholson transport scheme in the vertical
dimension.
UQ uses an additional spatial term to estimate concentrations used in computing horizontal and
vertical mass fluxes. A non-uniform grid UQ scheme was developed using a three-point
Lagrangian interpolation function to estimate constituent values at grid cell interfaces.
Specifically, advective multipliers for each of three upstream weighted grid cells are derived in
terms of cell lengths and the local cell interface velocity. Time invariant parts of the interpolation
functions are calculated once thus minimizing computations for additional constituents.
The vertical transport algorithm incorporates settling velocities and, as stated above, employs
the semi-implicit method of Crank and Nicholson. An excellent discussion of this technique is
included in Carnahan et al. (1969). The implicit solution algorithm makes use of a Thomas tri-
diagonal matrix solver, which is also discussed in Carnahan et al. (1969).
The vertical transport scheme can be made fully explicit by setting a parameter known as
"THETA" equal to zero or fully implicit by setting the same parameter equal to one. If "THETA"
is set to a value between zero and one, the vertical transport is time-weighted between the
explicit (using UQ) and implicit results and in this case we have a semi-implicit calculation. It is
recommended to use a value of 0.55 for "THETA" when running LM3 simulations.
The details of the transport algorithm employed in this work are complex. A derivation of the
UQ transport algorithm in one dimension and its implementation in the LM3 simulation is
detailed in Appendix E. Although the UQ results are derived in one dimension, the transport
calculations in LM3 account for all three dimensions. The one-dimensional results apply to each
dimension because transport is performed as a one-dimensional exchange between adjacent
cells through an individual cell face, irrespective of the dimensionality of the model. An outline
29
-------
of the vertical transport derivation is given in Appendix A. A brief summary of the UQ and
vertical transport main results is given below.
To aid in visualizing the derivation of the UQ transport algorithm in Appendix E, a brief
discussion of the model grid is presented in the following section. This discussion also serves
as a reference for the subsequent sections.
5.1 Model Grid
The Lake Michigan Mass Balance Project (LMMBP) model grid is three-dimensional. The
horizontal segmentation of the grid consists of 2,318 cells with a scale of 5 km. Thus the
horizontal area of each cell is 5 km x 5 km (Figure 5.1). The vertical segmentation consists of
20 sigma levels of the depth at each respective grid point. The number of sigma layers is 19;
that is, one less than the number of sigma levels.
Lake Michigan Hydrodynamic Model Grid
100
o
0 10 20 30 40 50
E-W grid square
Figure 5.1. The LMMBP high-resolution grid. Grid scale is 5 km.
30
-------
The sigma levels are not equally spaced; they are closely packed at grid points with shallow
depths and more spaced out at grid points with larger depths. Each sigma layer varies in
thickness depending on the water column depth of each grid point. In nearshore areas, where
water depth can be as low as 2.5 meters, some of the sigma layers can have thicknesses under
0.1 meters. In offshore areas, where water depth can exceed 250 meters, some of the sigma
layers can have thicknesses exceeding 30 meters.
The number of cells for each sigma layer is 2,318. Thus the total number of grid cells is 2,318 x
19 = 44,042.
5.2 The ULTIMATE QUICKEST Transport Scheme
The UQ transport scheme developed by Leonard (1979) was augmented for use with variable
grid sizes by Chapman (Chapman et al., 1997). The resulting transport algorithm was coded in
FORTRAN and applied to the Chesapeake Bay (ICM) model (Cerco and Cole, 1994; 1995).
The same transport scheme was adapted for use in the LMMBP and the In-place Pollutant
eXport (IPX) pollutant calculation (Velleux et al., 2001; Chapman eta/., 1997).
The box model calculation performs numerical integration of spatially varying concentrations
using quadratic interpolations of the concentration to infer its value at flow faces and analytic
integration over the space- and time-variables to account for changes in the concentration at the
cell wall during the course of the time step.
The discussion that follows is only a summary of the UQ main results. See Appendix E for a
detailed derivation of the results given below.
The general constituent transport equation that is solved is:
(51)
dx dz x z
§ = constituent concentration
u = horizontal cell face velocity
w = vertical cell face velocity
rx = horizontal cell face diffusion coefficient
rz = vertical cell face diffusion coefficient
x = horizontal dimension
z = vertical dimension
t = time
For the case of one-dimensional horizontal transport, Equation 5.1 reduces to:
(5.2)
a dx
31
-------
Integration of 5.2 over the time step At gives the result:
4/1 + 1 = 0 we have:
r = -i + + + (5.4)
For the case of u < 0 we have:
The factors T^, T^, T^, T. , TM, and Tk2 are advective multipliers which weigh the
contribution of three adjacent grid point concentrations; they are given by Equations E.38, E.37,
E.39, E.48, E.49, and E.50 of Appendix E, respectively. They are obtained by collecting terms
associated with each constituent defined by the UQ advection operator.
The contribution of dispersion to the transport is solved in a similar fashion as for advection.
The dispersive contribution to the change of mass within a cell can be expressed in terms of left
and right dispersive fluxes. From Appendix E we have that:
(mn+1-mn) =At(G-G.) (5.6)
V /Dispersive v '
32
-------
where
Gr = Arrrsx
G, = A.r&tf (5.8)
Equations 5.6, 5.7, and 5.8 are Equations E.63, E.64, and E.65, respectively. Because of the
transactional symmetry of the cells we only need to calculate either the left or right face of each
cell. In analogy to Equations 5.4 and 5.5 Gr can be written as a linear combination of
concentrations. For the case of u > 0 we have that:
Gr = GM^i-1 + G^i + GklCl (5.9)
For the case of u < 0 we have:
The factors G^, G^, G^, GM Gk1, and Gk2 are the dispersive multipliers; they are given by
Equations E.71, E.72, E.73, E.79, E.80, and E.81, respectively.
In the horizontal, the advection and dispersion contributions to the mass derivative for each cell
can be calculated as:
5tm = Q,^ - QA + Gr - G, (5-11)
where Q, and Qr are the flows through the left and right faces of the cell.
Equation 5.1 1 above is Equation E.85 in Appendix E.
5.3 Vertical Implicit Transport
An outline of the derivation of vertical transport is presented in Appendix A. The discussion that
follows is only a summary of the main results.
In the vertical, advective and diffusive transport is also present. The constituent transport
equation can be written (see Equation 5.1):
_z
at dz dz( z dz) (5-12)
where RHS represents all horizontal transport, and all sources/sinks. The terms w and rz are
the vertical velocity and vertical dispersion, respectively. Equation 5.12 is Equation A. 15 in
Appendix A. If incorporating a velocity due to gravitational settling, replace the term w by w - vset
in Equation 5.12. Integrating Equation 5.12 vertically and over time, and utilizing theta-
weighting for advection yields:
33
-------
i /-VK \
Hf+1 + 0At6z (wf+1) - At6z Tz ^ = Hf (5.13)
V / ^T7 \
where $* denotes all n-time transport and H is the cell height. Equation 5.13 is Equation A.16 in
Appendix A. Equation 5.13 can be recast as follows:
1 . A i n+1 I * /j
where the coefficients Ai+1, Aj, and AM are given by Equations A. 18, A. 19, and A.20 of Appendix
A, respectively. The explicit portion of the algorithm §* is given by Equation A.21. These
coefficients are computed once, stored in arrays, and used to update each constituent. This is
accomplished by loading the theta-weighted explicit part of the algorithm §* for each successive
constituent and inverting the resulting matrix via a Thomas tri-diagonal solver (Carnahan et al.,
1969).
34
-------
CHAPTER 6
EUTROPHICATION KINETICS
Eutrophication refers to the process by which an aquatic system becomes enriched with
dissolved nutrients, resulting in increased growth of algae and other microscopic plants. This
process occurs naturally over many years but can be accelerated by human activities such as
fertilizer runoff from farms and sewage input. The nutrients consist mostly of nitrates and
phosphates.
Understanding eutrophication is critical in water quality studies. For instance, too many
nutrients entering an aquatic system can cause large algal blooms followed by natural die-off
and decay which results in low oxygen levels. Low oxygen levels can be detrimental to fish,
particularly when levels become hypoxic or even worse, anoxic.
Another critical aspect of eutrophication is that it affects the recycling of toxic chemicals that
bind to organic particles in aquatic systems. Polychlorinated biphenyls (PCBs) are examples of
such toxic chemicals. Because they are found in Lake Michigan and have adverse effects on
fish, they were the primary focus in the Lake Michigan Mass Balance Project (LMMBP).
Eutrophication models are used to address environmental factors such as the aforementioned
ones. Thus this chapter presents a detailed description of the eutrophication model used for the
LMMBP. The kinetics equations are based on the Corps of Engineers Water Quality Integrated
Compartment Model (CE-QUAL-ICM) (Cerco and Cole, 1995). The mathematical equations are
constructed on the basis of the principle of conservation of mass. This is an elementary
physical law which is satisfied by macroscopic natural systems.
The water quality constituents of primary interest of this model are nutrients and phytoplankton.
Phytoplankton growth is modeled as a function of available nutrients, temperature, and light;
other processes such as phytoplankton mortality and herbivorous zooplankton grazing are
included. There are 17 constituents or state variables that are described by this model.
Dissolved oxygen has not been incorporated into this model as of this writing.
6.1 Development of Eutrophication Equations
A characteristic of eutrophication modeling is the many interactions between nutrients, plankton,
and sediments and the transformation reactions describing the conversions between dissolved
and particulate phases. In a modeling framework, each interaction is described as a
35
-------
mathematical equation, and the challenge is to define a relatively simple expression to
approximate more complex biochemical processes.
6.1.1 Phytoplankton Growth
Although several phytoplankton groups are present in Lake Michigan, the lake is dominated
mainly by diatoms and flagellates (Makarewicz et a/., 1998). For the discussion that follows,
algae that are not considered diatoms (non-diatoms) are denominated as green algae; thus
flagellates are grouped under green algae. The major difference between these classes are
silica dependence by the diatoms and differences in settling rates, carbon content, and growth
rates at different times of the year. It has been speculated that diatoms grow faster than "non-
diatoms" and that they grow better at colder temperatures because one usually observes diatom
blooms during the spring in the Great Lakes (Schelske and Stoermer, 1971, 1972; Rousar,
1973; Brooks and Torke, 1977; Bartone and Schelske, 1982; Schelske eta/., 1986; Fahnenstiel
and Scavia, 1987a,b; Scavia and Fahnenstiel, 1987; Rockwell et a/., 1989; Stoermer, 1993).
The kinetic equations used in this model are based on the WASP family of models (Thomann
and Di Toro, 1975; Di Toro and Connolly, 1980; Rodgers and Salisbury, 1981a,b) and CE-
QUAL-ICM, developed by the United States Army Corps of Engineers (USAGE) (Cerco and
Cole, 1993). However, note that unlike those found in the WASP family of models, the kinetic
equations presented in this chapter do not display a settling rate term. The settling rates are
included within the transport algorithm of LM3. Thus settling is accounted for as a transport and
not a kinetic process, as it should be. The basic phytoplankton growth equation can be written
as:
NET PRODUCTION = GROSS PRODUCTION - MORTALITY (6.1)
Equation 6.1 can be represented in mathematical terms by:
dPHYTO /. . x nuv i -7
= (kg -kd) PHYTO-kgz Z (62)
where:
PHYTO = phytoplankton concentration (kg m"3)
t = time (s)
kg = phytoplankton growth rate (s"1)
kd = phytoplankton mortality rate (s"1)
kgz = predation rate (s"1)
Z = zooplankton concentration (kg m"3)
The growth rate can be written as:
kg = kgmax f(N) f(T) . f(l) (6.3)
where:
kgmax = optimum growth rate (s"1)
f(N) = nutrient growth dependency
36
-------
f(l) = light growth dependency
f(T) = temperature growth dependency
The optimum growth rate, kgmax, has different values for different types of phytoplankton. Thus
diatoms and non-diatoms (greens) have slightly different optimum growth rates. This parameter
is represented in the LM3 source code with two variable names: PMD, for diatoms, and PMG,
for greens. Table 6.1 shows default values for the aforementioned variables.
6.1.1.1 Nutrient Growth Dependency
For the nutrient growth dependency, f(N), we use the standard Monod equation (Monod, 1949)
and variations of it depending whether nitrogen is considered a growth limiting factor or not.
Diatoms are treated slightly different from non-diatoms because of the former's silica
dependence in addition to nitrogen and phosphorus.
For the non-diatoms, the Liebig's law of minimum (Odum, 1971) applies with no silica
dependency and assumes nitrogen is a growth limiting factor.
f(N) = min
where:
NH4+N03 Pav
ksat_N+NH4+N03 I (ksat_p+Pav
(6.4)
min = minimum of the two expressions (separated by a comma) within the square
brackets.
ksat-N = half-saturation coefficient for nitrogen uptake (kg m"3) = KHNG in Table 6.1
ksat-p = half-saturation coefficient for phosphorus uptake (kg m"3) = KHPG in Table 6.1
Pav = available phosphorus (kg m"3), given by Equation 6.6 (see below)
NH4 = ammonia concentration (kg m"3)
NO3 = nitrate concentration (kg m"3)
If nitrogen is assumed not to be a limiting factor, then Equation 6.4 simplifies to:
f = k P"p (6.5)
"Sat-P ^ rav v '
Because we assume that a fraction of the dissolved organic phosphorus (OOP) is readily
available for algal uptake, we define the term available phosphorus, Pav, as follows:
Pav =SRP + fDOP . OOP (6.6)
where:
fDOP = fraction of available OOP = AVFRAC in Table 6.1
OOP = dissolved organic phosphorus concentration (kg m"3)
SRP = soluble reactive phosphorus concentration (kg m"3)
37
-------
Table 6.1. Eutrophication Parameters
Key Name
ANCP
APCP
ASCD
AVFRAC
BMRD
BMRG
CCHLD
CCHLG
CGZ
FCDD
FCDG
FCDP
FCDZ
FCLD
FCLG
FCLP
FCLZ
FCRD
FCRG
FCRP
FCRZ
FNDD
FNDG
FNDP
FNDZ
FNID
FNIG
FNIP
FNIZ
FNLD
FNLG
FNLP
FNLZ
FNRD
FNRG
FNRP
FNRZ
FPDD
FPDG
FPDP
FPDZ
FPID
FPIG
FPIP
FPIZ
FPLD
FPLG
FPLP
FPLZ
FPRD
FPRG
FPRP
Description
N:C ratio for plankton
P:C ratio for plankton
Si:C ratio for diatoms
Available fraction of OOP
Diatom base metabolic rate
Green base metabolic rate
Carbomchlorophyll ratio for diatoms
Carbon:chlorophyll ratio for green algae
Zooplankton maximum growth rate
Fraction of basal metabolism exuded as DOC by diatoms
Fraction of basal metabolism exuded as DOC by greens
Fraction of DOC produced by predation
Fraction of DOC from zooplankton mortality
Fraction of labile POC produced by diatoms metabolism
Fraction of labile POC produced by greens metabolism
Fraction of labile PDC from predation
Fraction of labile PDC from zooplankton mortality
Fraction of refractory POC produced by diatoms metabolism
Fraction of refractory POC produced by greens metabolism
Fraction of refractory PDC from predation
Fraction of refractory PDC from zooplankton mortality
Fraction of DON produced by diatom metabolism
Fraction of DON produced by green algae metabolism
Fraction of DON produced by predation
Fraction of DON produced by zooplankton mortality
Fraction of inorganic nitrogen produced by diatom metabolism
Fraction of Inorganic nitrogen produced by green algae metabolism
Fraction of inorganic nitrogen produced by predation
Fraction of inorganic nitrogen produced by zooplankton mortality
Fraction of labile particulate nitrogen produced by diatom metabolism
Fraction of labile particulate nitrogen produced by green algae metabolism
Fraction of labile particulate nitrogen produced by predation
Fraction of LON produced by zooplankton mortality
Fraction of refractory particulate nitrogen produced by diatom metabolism
Fraction of refractory particulate nitrogen produced by green
algae metabolism
Fraction of RON produced by predation
Fraction of RON produced by zooplankton mortality
Fraction of OOP produced by diatom metabolism
Fraction of OOP produced by green algae metabolism
Fraction of OOP produced by predation
Fraction of OOP produced by zooplankton mortality
Fraction of inorganic phosphorus produced by diatom metabolism
Fraction of inorganic phosphorus produced by green algae metabolism
Fraction of inorganic phosphorus produced by predation
Fraction of inorganic phosphorus produced by zooplankton mortality
Fraction of LOP produced by diatom metabolism
Fraction of LOP produced by green algae metabolism
Fraction of LOP produced by predation
Fraction of LOP produced by zooplankton mortality
Fraction of ROP produced by diatom metabolism
Fraction of ROP produced by green algae metabolism
Fraction of ROP produced by predation
Default
Value
2.0x101
1.0 x10"2
8.0x101
0.0
8.6x107
8.6x107
5.0 x101
5.0 x101
4.6x106
1.0 x10"1
1.0 x10"1
1.0 x10"1
1.0x101
1.0 x10"1
1.0 x10"1
5.5x101
5.5 x10"1
1.0 x10"1
1.0x101
3.5 x10"1
3.5 x10"1
8.0 x10"1
8.0 x10"1
1.0 x10"1
4.0 x10"1
1.0 x10"1
1.0 x10"1
0.0
1.0 x10"1
1.0 x10"1
1.0 x10"1
5.5 x10"1
3.5 x10"1
0.0
0.0
3.5 x10"1
1.5X101
8.0 x10"1
8.0 x10"1
1.0X101
4.0 x10"1
1.0 x10"1
1.0X101
0.0
1.0 x10"1
1.0 x10"1
1.0 x10"1
5.5 x10"1
3.5 x10"1
0.0
0.0
3.5 x10"1
Units
None
None
None
None
s-1
s-1
None
None
s-1
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
38
-------
Table 6.1. Eutrophication Parameters (Continued)
Key
Name
FPRZ
FSAP
GREFF
ILUMO
ISMIN
KDC
KDCALG
KDN
KDNALG
KDP
KDPALG
KE
KECHL
KHN
KHND
KHNG
KHNNT
KHP
KHPD
KHPG
KHSD
KLC
KLCALG
KLN
KLNALG
KLP
KLPALG
KRC
KRCALG
KRN
KRNALG
KRP
KRPALG
KSUA
KSZ
KTBD
KTBG
KTGD1
KTGD2
KTGG1
KTGG2
KTHDR
KTMNL
KTNT1
KTNT2
KTSUA
NTM
PMD
PMG
TMD
TMG
TMNT
Description
Fraction of ROP produced by zooplankton mortality
Fraction of silica made available through predation
Zooplankton grazing efficiency
Constant value of illumination (this is a user-defined value)
Minimum optical illumination factor
Minimum DOC mineralization rate
DOC mineralization rate algal dependence
Minimum DON mineralization rate
DON mineralization rate algal dependence
Minimum OOP mineralization rate
OOP mineralization rate algal dependence
Background light attenuation
Light attenuation factor for chlorophyll a
Organic nitrogen decay half-saturation constant
Mean half-saturation constant for nitrogen uptake by diatoms
Mean half-saturation constant for nitrogen uptake by green algae
Half-saturation concentration of NH4 required for nitrification
Organic phosphorus decay half-saturation constant
Mean half-saturation constant for diatom phosphorus uptake
Mean half-saturation constant for green algae phosphorus uptake
Mean half-saturation constant for diatom silica uptake
Minimum hydrolysis rate of LOG
LOG hydrolysis rate algal dependence
Minimum hydrolysis rate of LON
LON hydrolysis rate algal dependence
Minimum hydrolysis rate of LOP
LOP hydrolysis rate algal dependence
Minimum hydrolysis rate of ROC
ROC hydrolysis rate algal dependence
Minimum hydrolysis rate of RON
RON hydrolysis rate algal dependence
Minimum hydrolysis rate of ROP
ROP hydrolysis rate algal dependence
Particulate silica dissolution rate constant
Half-saturation coefficient of zooplankton for phytoplankton
Metabolism temperature dependence factor for diatoms
Metabolism temperature dependence factor for greens
Effect of temperature below optimal temperature for diatoms
Effect of temperature above optimal temperature for diatoms
Effect of temperature below optimal temperature for greens
Effect of temperature above optimal temperature for greens
Hydrolysis temperature dependence
Mineralization temperature dependence
Effect of temperature below optimal temperature nitrification
Effect of temperature above optimal temperature for nitrification
Silica dissolution temperature rate constant
Nitrification rate coefficient at optimal temperatures
Diatom production under optimal conditions
Green algae production under optimal conditions
Temperature of optimum growth for diatoms
Temperature of optimum growth for greens
Optimal temperature for nitrification
Default
Value
1.5x101
0.0
6.0x101
0.0
6.05 x 10 1
1.2x107
0.0
2.3X107
0.0
5.0x107
2.3X103
1.5 x10"1
1.7 x104
2.5X105
2.5X105
2.5x105
1.0X104
1.0X106
1.0x106
1.0x106
3.0X105
8.6x107
0.0
2.3X107
0.0
2.3x107
2.3X103
5.0x108
0.0
5.7X108
0.0
5.7x108
2.3X103
5.0x108
7.5x104
6.9X102
6.9x102
2.5x103
6.0X103
2.5X103
1.0x102
6.9X102
6.9X102
9.0x102
1.1 x106
1.1 x106
1.2x1012
2.4X105
2.3X105
2.0x101
2.0X101
2.0X101
Units
None
None
None
W-m2
W-m2
s-1
m3-kg1-s1
s-1
m3-kg1-s1
s-1
m3-kg1-s1
m1
m2-kg1
kg-m
kg-m
kg-m
kg-m3
kg-m
kg-m
kg-m3
kg-m3
s-1
m3-kg1-s1
s-1
m3-kg1-s1
s-1
m3-kg1-s1
s-1
m3-kg1-s1
s-1
m3-kg1-s1
s-1
m3-kg1-s1
s-1
kg-m3
oC-i
oC-i
°C2
°C2
°C2
°C2
oC-i
°c-1
°C2
oC-2
°c-1
kg-m3-s1
s-1
s-1
°C
°C
°c
39
-------
Table 6.1. Eutrophication Parameters (Continued)
Key
Name
TRD
TRG
TRHDR
TRMNL
TRSUA
TZREF
ZDTH
ZTHET
Description
Metabolism reference temperature for diatoms
Metabolism reference temperature for greens
Reference temperature for hydrolysis
Reference temperature for mineralization
Silica dissolution reference temperature
Predation reference temperature
Zooplankton death/die-off coefficient
Temperature coefficient for predation
Default
Value
2.0x101
2.0 x101
2.0x101
2.0x101
2.0 x101
2.0x101
3.5x107
1.05
Units
°C
°C
°c
°c
°c
°c
s-1
None
The user has to specify which of the two nutrient growth dependency equations, Equation 6.4 or
Equation 6.5, to use by setting the general parameter SILIM to specific values as shown in
Table 3.2. The parameter SILIM is set by the user in the input deck. It is strongly
recommended to use Equation 6.4 because it applies to all situations, regardless whether
nitrogen is a growth limiting factor or not. Equation 6.5 is too restrictive to use because the user
has to prove, using statistical analysis of field data, that nitrogen is not a growth limiting factor in
the aquatic system being studied/simulated.
The diatoms are described using one of three different formulas. The first one uses the product
of the silica limitation and the minimum of nitrogen and phosphorus:
f(N) =
Si
Vsat-Si
i + Si
mm
NH4 +NO3
av
vsat-N
NH, +NO,
(6.7)
The second one uses the minimum of silica, nitrogen, and phosphorus:
f(N) = min
Si
+
Nrt, +NO,
ksat_N+NH4+N03
av
k -i- P
^sat-P ^ rav
(6.8)
The last one uses the product of silica and phosphorus limitation only:
f(N) =
Si
av
+
k i p
^sat-P ^ rav
(6.9)
ksat-Si
min
ksat-N
ksat-P
Si
half-saturation coefficient for silica (Si) uptake (kg m"3) = KHSD in Table 6.1
minimum of the two expressions (separated by a comma) within the square
brackets.
half-saturation coefficient for nitrogen uptake (kg m"3) = KHND in Table 6.1
half-saturation coefficient for phosphorus uptake (kg m"3) = KHPD in Table 6.1
dissolved available silica concentration (kg m"3)
40
-------
Only one equation of the three listed above is used during a particular simulation. The choice of
the equation depends on what assumptions are made about the lake. The user specifies which
one to use by using the general parameter SILIM as shown in Table 3.2.
6.1.1.2 Temperature Growth Dependency
The temperature dependency is expressed using a Gaussian probability function. It is different
from most Arrhenius temperature correction factors (Arrhenius, 1889) in that it is two-sided
around Tm and has a different shape than the standard Q^'20). Thus:
f(T)=
where:
exp -ktgl (T - Tm)2 where T < Tm
exp -ktg2 (Tm - T)2 where T > Tm
(6.10)
ktgl = temperature effect below optimum temperature (°C"2)
ktg2 = temperature effect above optimum temperature (°C"2)
Tm = optimum temperature for phytoplankton growth (°C)
T = water temperature (°C)
The parameters ktgl, ktg2, and Tm are different for diatoms and greens. The parameter ktgl is
represented in the LM3 source code with the variable name KTGD1 for diatoms and KTGG1 for
greens. The parameter ktg2 is represented with the variable name KTGD2 for diatoms and
KTGG2 for greens. The parameter Tm is represented with the variable name TMD for diatoms
and TMG for greens. Table 6.1 shows default values for the aforementioned parameters.
6.1.1.3 Light Growth Dependency
A number of equations have been proposed to describe the effect of light intensity on
phytoplankton production. Steele's (1962) equation is one of the most commonly used
expressions, while a light saturation equation (similar to the Monod equation) is also frequently
used (Di Toro et a/., 1971). We described light dependency in this model according to Steele's
equation.
| ( | ^
I IN C /V LJ i I f r; *i *i \
II VD- ' ')
S \_ \ S /
where:
f(l) = light limitation (fraction between 0 and 1)
I = incident solar light intensity (w m"2)
ls = saturating light intensity (w m"2) = ISMIN in Table 6.1
The Beer-Lambert equation (Parker, 1993) was used to estimate light penetration into the water.
lz =I0 exp(-kess z) (612)
41
-------
where:
lz = the light intensity at depth z (w m"2)
I0 = surface light intensity (w m"2)
kess = light extinction coefficient (m"1)
z = depth (m)
Substituting Equation 6.12 into Equation 6.11:
I . o vn ( le . 7\
(6.13)
s
I0 . exp(-kess
ls
z)
' i 1
This equation calculates the light limitation at an instantaneous time and at a specific depth.
However, for models like ours, we need to estimate the light limitation at a certain cell (with a
given depth range) and over a time period (the time step). We thus need to integrate this
equation over time and depth. Di Toro et al. (1971) formulated an equation assuming a
constant light intensity over the photoperiod. They integrated Steele's equation (Equation 6.14)
over a 24-hour period and the total depth of a segment.
= ^4^.[exp(-a,)-exP(-a0)] (6'14)
where:
a0=^.exp(-ke - ^ (6.15)
's
ess
a1=^ . exp(-kess.Z2) (6.16)
's
fd = the photoperiod = fraction day with sunlight (unitless)
la = average light intensity over the photoperiod (w m"2)
Az = thickness of water column segment = z2 - z-i (m)
z-i = vertical distance from the water surface to the top face of water segment (m)
z2 = vertical distance from the water surface to the bottom face of water segment (m)
This approach is commonly used, although it has been criticized for losing the power to
represent midday surface inhibition (Di Toro et al., 1971; Kremer and Nixon, 1974).
The LM3 light formalism allows modelers to use different light intensity update intervals, from
hourly to 12-hours. If one wants to estimate the light limitation for less than a day and the
average light intensity of that period is known, one can solve Steele's equation by averaging it
over the depth of a grid cell. Let z-i and z2 be the water depth of the top and bottom,
respectively, of a grid cell. The averaging is performed as:
42
-------
z2 -
'o -exp(-kess z)
exp
'o -express z) | ^
dz
(6.17)
The solution is almost the same as Equation 6.14, without the fraction of daylight in the
equation.
f('a) = ' ' [exp(-ai)-exp(-a0)] (6.18)
ess
The average light intensity (la) here can be calculated as follows:
fl0(t)dt
| = J (6.19)
'a r . v '
ldt
where:
I0(t) = measured incident solar radiation at time t (w m"2)
t = time (hours)
and can thus be approximated by:
'o^ (6'20)
1=1
where:
n = number of discrete time intervals at which I0 is measured.
The light extinction coefficient, kess, as it appears in Equation 6.18 requires some further
explanation. This coefficient actually represents the light attenuation in the water column. It is
composed of two fractions: a background value dependent on both water color and
concentration of suspended particles, and extinction due to light absorption by ambient
chlorophyll.
k -k +k PHYT°J
Kess ~ Ke + Kechl
i \
i-d n v 'i
'"d'g (6.21)
where:
ke = background light attenuation (m"1)
= light attenuation factor for chlorophyll-a (m2 kg"1)
43
-------
PHYTOj = phytoplankton concentration (kg m"3)
(CCHL)i = carbon-to-chlorophyll ratio in phytoplankton group
d,g = diatoms, greens
The parameters, ke and kechi are constant input values specified by the user. Suggested values
can be found in Table 6.1 under the source code names KE and KECHL. The variable (CCHL)i
takes on two parameter values, one for diatoms and one for greens. The diatoms value is
denoted by the source code name of CCHLD and the corresponding one for greens is denoted
by the name CCHLG. These parameters are also constants and specified by the user.
Suggested values can be found in Table 6.1.
Many of the eutrophication parameters default values shown in Table 6.1 were taken from the
Chesapeake Bay eutrophication report (Cerco and Cole, 1994). Others were estimated values
that did not have any association with that report or with any calibration exercise. The user is
ultimately responsible for determining whether default values are appropriate for some of the
parameters of a given simulation run. Strictly speaking, the default values are initialization
values within the LM3 source code and are not meant to be a mandatory or even a
recommended value.
6.1.2 Zooplankton Kinetics
Zooplankton predation is important in regulating the phytoplankton densities in Lake Michigan,
especially during the stratified summer months (Scavia et al., 1988). Lake Michigan
zooplankton are dominated by herbivorous species, with copepods making up the majority of
the total biomass for most of the year. However, cladocerans exhibit significant peaks in the
late summer and fall. Due to the limited zooplankton data reported for the lake and the lack of
kinetic laboratory and field studies for Lake Michigan zooplankton populations, we avoided
complex zooplankton equations (e.g., Bowie et al., 1985) and chose a relatively simple
formulation. The equations describing herbivorous zooplankton growth are based on
formulations from the literature (Bowie et al., 1985; Di Toro and Connolly, 1980; Di Toro and
Matystik, 1980; Thomann and Mueller, 1987). Carnivorous zooplankton are not simulated in
most versions of LM3 except 3.2.16 and 3.2.17; however, the LM3 versions 3.2.16 and 3.2.17
are still being developed/tested as of this writing. Thus for the present discussion, no
carnivorous zooplankton is simulated.
The following equation was used:
dZ , . . , -. (6.22)
= (s . kgz - kdz) . Z
where:
Z = zooplankton concentration (kg m"3)
t = time (s)
kgz = zooplankton predation rate (s"1)
kdz = mortality rate (s"1) = ZDTH in Table 6.1
s = assimilation efficiency = GREFF in Table 6.1
44
-------
k = k
K K
where:
gzmax
PHYTOT
ks
9
Trz
PHYTOT
-
rtT T
0 rz
(6.23)
maximum growth rate (s"1) = CGZ in Table 6.1
total phytoplankton concentration = the sum of diatom and greens concentration
(kg m-3)
half-saturation coefficient (kg m"3) = KSZ in Table 6.1
temperature correction factor = ZTHET in Table 6.1
reference temperature (°C) = TZREF in Table 6.1
The maximum growth rate is a term that lumps the filtration and assimilation rates into a single
term. The mortality term lumps respiration, excretion, and higher predation into a single term.
We can thus write the overall equation:
&L
dt
PHYTO
ks + PHYTO-
dz
(6.24)
6.1.3 Carbon Interactions
Several carbon interactions are described in the model, including phytoplankton and
zooplankton carbon, carbon loads from tributaries, shoreline erosion, and detrital carbon from
plankton. The carbon state variables in this model are diatom, non-diatom, and zooplankton
carbon; labile paniculate organic carbon (LPOC); refractory paniculate organic carbon (RPOC);
and dissolved organic carbon (DOC). Carbon dioxide (CO2) was not simulated, although a
mineralization reaction was included. Diatom and non-diatom carbon were simulated, as
described in the previous section. LPOC refers to the organic detrital carbon from the
phytoplankton species which breaks down, as the name implies, relatively rapidly. In contrast,
the RPOC is the combination of the fraction of the plankton breaking down, as well as other
forms of organic carbon in the system (carbon from tributaries, the sediments, etc). These
forms of carbon break down more slowly but are not totally refractory. In the equations, we
specify the fractions of labile and refractory carbon. We assume that phytoplankton utilize CO2
as the carbon source during photosynthesis and release carbon as dissolved (CO2 and DOC)
and paniculate (RPOC and LPOC).
6.1.3.1 Phytoplankton Mortality and Decay
Phytoplankton respiration and non-predatory mortality were grouped together in the model as a
"mortality" term. The release of carbon from these processes was split into different fractions of
dissolved and paniculate organic carbon.
bmd
DIA + f
cdg bmg
G RE
(6.25)
45
-------
rl R POP
dt = fcrd kbmd DIA + fcrg . kbmg . GRE (6.26)
fcid -kbmd DIA + fclg . kbmg .GRE (6.27)
where:
DIA = diatoms concentration (kg m"3)
GRE = greens concentration (kg m"3)
fcdd = fraction of basal metabolism exuded as DOC by diatoms = FCDD in Table 6.1
fcdg = fraction of basal metabolism exuded as DOC by greens = FCDG in Table 6.1
fcrd = fraction of refractory POC produced by diatoms metabolism = FCRD in Table 6.1
fcrg = fraction of refractory POC produced by greens metabolism = FCRG in Table 6.1
fcid = fraction of labile POC produced by diatoms metabolism = FCLD in Table 6.1
fcig = fraction of labile POC produced by greens metabolism = FCLG in Table 6.1
kbmd = base metabolic rate for diatoms (s"1)
kbmg = base metabolic rate for greens (s"1)
The base metabolic rates, kbmd and kbmg, correspond to the term kd of Equation 6.2. They are
calculated using the following equations:
kbmd = &mrd exp[ktbd . (T - Trd)] (6 28)
= bmrg - exp[ktbg . (T - Trg)] (629)
where:
bmrd = diatom base metabolic rate (s"1) = BMRD in Table 6.1
bmrg = green base metabolic rate (s"1) = BMRG in Table 6.1
ktbd = metabolism temperature dependence factor for diatoms (°C"1) = KTBD in Table 6.1
ktbg = metabolism temperature dependence factor for greens (°C"1) = KTBG in Table 6.1
T = water temperature (°C)
Trd = metabolism reference temperature for diatoms (°C) = TRD in Table 6.1
Trg = metabolism reference temperature for greens (°C) = TRG in Table 6.1
However, phytoplankton carbon is also converted to detrital and DOC through predation (messy
feeding) and zooplankton-imposed mortality.
dDOC , /- \ ,
(i - s) k
gz (6 30)
46
-------
dRPOC , .
= fcrp (1 - s) kgz
dLPOC , /- \ , -, (6.32)
= fc|p - (1 - 8) - kgz - Z
where:
fcdp = fraction of DOC from predation = FCDP in Table 6.1
fcrp = fraction of RPOC from predation = FCRP in Table 6.1
fdp = fraction of LPOC from predation = FCLP in Table 6.1
6.1.3.2 Zooplankton Mortality and Decay
The zooplankton mortality term included respiration, non-predatory mortality, and predatory
mortality. We assume that the detrital zooplankton carbon consists of dissolved, labile
particulate, and refractory particulate fractions.
dDOC ,
dt = fcdz ' kdz ' Z (6.33)
dLPOC (6.34)
= T_,7 KHy L
dt clz dz
dRPOC , . __ (6.35)
= f . kd7 Z
dt crz dz
where:
fcdz = fraction of DOC from zooplankton mortality = FCDZ in Table 6.1
fciz = fraction of LPOC from zooplankton mortality = FCLZ in Table 6.1
fcrz = fraction of RPOC from zooplankton mortality = FCRZ in Table 6.1
6.1.3.3 Hydrolysis and Mineralization
Particulate fractions (both labile and refractory) are hydrolyzed to DOC, while DOC mineralizes
to CO2.
Because we do not explicitly model bacteria in this model, their breakdown of carbon was
modeled by including a dependency on the phytoplankton, which acted as a surrogate of the
heterotrophic bacterial activity in the lake. We also calculated a temperature limitation to the
hydrolysis and mineralization. The equations can be written as follows:
47
-------
Tfmnl=exp[Tkmn|. (T-Trmnl)] (6-36)
Tfhdr =exp[Tkhdr. (T-Trhdr)] (6.37)
where:
Tfmni = temperature correction for mineralization (unitless)
Tfhdr = temperature correction for hydrolysis (unitless)
Tkmni = mineralization temperature coefficient (°C"1) = KTMNL in Table 6.1
Tkhdr = hydrolysis temperature coefficient (0C'1) = KTHDR in Table 6.1
Trmni = optimum temperature correction for mineralization (°C) = TRMNL in Table 6.1
Trhdr = optimum temperature correction for hydrolysis (°C) = TRHDR in Table 6.1
Tfhdr [(k|c+k|cP-PHYTOT) . LPOC
(krc+krcp.PHYTOT) .RPOC] ^^
Tfmn, (kdc+kdcp.PHYTOT) .DOC
= Tfhdr . (krc +krcp . PHYTOT) . RPOC
dt
dLPOC
= Tfhdr. (klc+klcp.PHYTOT) .LPOC
(6.40)
dt
where:
DOC = dissolved organic carbon concentration (kg m"3)
LPOC = labile particulate organic carbon concentration (kg m"3)
RPOC = refractory particulate organic carbon concentration (kg m"3)
kdc = DOC minimum mineralization rate (s"1) = KDC in Table 6.1
kdcp = DOC mineralization relating to phytoplankton (m3 kg C"1 s"1) = KDCALG in
Table 6.1
krc = RPOC minimum hydrolysis rate (s"1) = KRC in Table 6.1
krcp = RPOC hydrolysis relating to phytoplankton (m3 kg C"1 s"1) = KRCALG in Table 6.1
k|C = LPOC minimum hydrolysis rate (s"1) = KLC in Table 6.1
k|Cp = LPOC hydrolysis relating to phytoplankton (m3 kg C"1 s"1) = KLCALG in Table 6.1
From the last two equations, note that the gain in DOC equals the sum of the loss of RPOC and
LPOC.
48
-------
6.1.4 Phosphorus
In LM3, phosphorus can exist as one of four species (in addition to being tied up in the
phytoplankton). Note that all four forms are in the same oxidation state; thus no oxidation
reactions occur. The forms are SRP, OOP, and two forms of particulate organic phosphorus
(POP), a labile (LPOP), and a refractory (RPOP) form. SRP and a small fraction of the OOP are
taken up by the phytoplankton during production (photosynthesis). They are released due to
mortality and predation. Particulate phosphorus is hydrolyzed to OOP, and OOP is hydrolyzed
to SRP.
6.1.4.1 Phosphorus Uptake by Phytoplankton
SRP Uptake:
dSRP
dt
OOP Uptake:
pc
(kg,dia
DIA + k
g-gre
GRE)
SRP
SRP + f,
dop
DOP
(6.41)
dDOP
dt
where:
= -rr
pc
(kg,dia
DIA + k
g-gre
GRE)
'dop
DOP
dop.
DOP + SRP
(6.42)
rpc
Kg.dia
kg.gre
DOP
SRP
Tdop
the P:C ratio (unitless) = APCP in Table 6.1
diatoms growth rate (s"1)
greens growth rate (s"1)
dissolved organic phosphorus concentration (kg m"3)
soluble reactive phosphorus concentration (kg m"3)
available fraction of DOP = AVFRAC in Table 6.1
The growth rates for diatoms and greens are given by Equation 6.3.
An interesting concept, common in many phytoplankton models, is the way in which the
nutrients, including phosphorus, are accounted for within the phytoplankton. The model keeps
track of the carbon and uses a constant carbon:nutrient relationship to make these
determinations.
6.1.4.2 Phosphorus Release Due to Phytoplankton Metabolism/Mortality
Phytoplankton in the water column are hydrolyzed and mineralized to all four phosphorus forms.
During algal metabolic/mortality processes, phytoplankton-P is converted to particulate and
dissolved organic forms as well as directly to SRP.
dSRP
dt
= rr
pc
\ srp.dia
bmd
f
srp,gre
bmg
GRE)
(6.43)
49
-------
dDOP
dt
pc \ dop.dia bmd
kK^ DIA + t kK_ GRE)
dop.gre bmg
(6.44)
dLPOP
dT
= r.
\ I
pc \ Ipop.dia
DIA + ^pop,gre.kbmg.GRE)
(6.45)
dRPOP
dT
= rr
pc
\ r
rpop.dia bmd
DIA + t
'rpop.gre
GRE)
(6.46)
where:
srp.gre
f
f
fdop.gre
fipop.dia
fipop.gre
frpop.gre
DIA
GRE
= fraction of SRP from diatoms metabolism/mortality = FPID in Table 6.1
= fraction of SRP from greens metabolism/mortality = FPIG in Table 6.1
= fraction of OOP from diatoms metabolism/mortality = FPDD in Table 6.1
= fraction of OOP from greens metabolism/mortality = FPDG in Table 6.1
= fraction of LPOP from diatoms metabolism/mortality = FPLD in Table 6.1
= fraction of LPOP from greens metabolism/mortality = FPLG in Table 6.1
= fraction of RPOP from diatoms metabolism/mortality = FPRD in Table 6.1
= fraction of RPOP from greens metabolism/mortality = FPRG in Table 6.1
= diatoms concentration (kg m"3)
= greens concentration (kg m"3)
= base metabolic rate for diatoms, given by Equation 6.28
= base metabolic rate for greens, given by Equation 6.29
6.1.4.3 Phosphorus Release Due to Zooplankton Predation
During phytoplankton predation, zooplankton assimilate only a fraction of the phytoplankton and
the remainder of the detrital phytoplankton is released directly to the water. This process is
commonly referred to as "messy feeding." The phosphorus is released in both the dissolved
and particulate forms.
dSRP
dt
pip
(1-s)
pc
(6.47)
dDOP
dt
0-
rpc - kgz
(6.48)
dLPOP
dt
= fplp 0 - e) ' rpc kgz
(6.49)
50
-------
dRPOP _ , . i, 7 (6.50)
T; - Tprp I ' ~ s) rpc Kgz * L
Ql
where:
fpip = fraction of SRP from predation = FPIP in Table 6.1
fpdp = fraction of OOP from predation = FPDP in Table 6.1
fpip = fraction of LPOP from predation = FPLP in Table 6.1
fprp = fraction of RPOP from predation = FPRP in Table 6.1
kgz = zooplankton predation rate (s"1), given by Equation 6.23
Z = zooplankton concentration (kg m"3)
6.1.4.4 Phosphorus Release Due to Zooplankton Mortality
The model also includes equations to describe zooplankton mortality. Phosphorus is released
to the water column in both the dissolved and particulate forms.
Qt = fPiz rpc kdz Z (6.51)
dDOP ,
dt = fpdz ' rpc ' kdz ' Z (6.52)
dLPOP ,
^ = fplz ' rpc kdz Z (6.53)
dRPOP = (6 54)
jt prz pc dz
Q t
where:
fpiz = fraction of SRP from zooplankton mortality = FPIZ in Table 6.1
fpdz = fraction of OOP from zooplankton mortality = FPDZ in Table 6.1
fpiz = fraction of LPOP from zooplankton mortality = FPLZ in Table 6.1
fprz = fraction of RPOP from zooplankton mortality = FPRZ in Table 6.1
6.1.4.5 Hydrolysis and Mineralization of Phosphorus
Particulate phosphorus is hydrolyzed to OOP and OOP is mineralized back to SRP as follows:
f
dSRP
krin + krina - PHYTOT . __ksat:pt
dt Tup "upa "T " SRP + ksat Dt I " 'mnl
V sai-pi j
Tfmnl - OOP (6.55)
51
-------
dDOP
dt
klp+klpa.PHYTOT
vsat-pt
SRP + k
krp+krpa. PHYTOT.
sat-pt
vsat-pt
SRP + k
sat-pt
vsat-pt
SRP + k
sat-pt
TU LPOP
Tfhdr- RPOP
Tf
mn,
(6.56)
dLPOP
dt
= |klp+klpa .PHYTOT -
vsat-pt
SRP + k
sat-pt
.Tfhdr.LPOP (6.57)
dRPOP
dt
where:
DOP
LPOP
RPOP
kdp
kip
krp
k|pa
krpa
ksat-pt
Tfmnl
Tfhdr
krp+krpa .PHYTOT
vsat-pt
SRP + k
sat-pt
Tt
'hdr
RPOP (6.58)
= dissolved organic phosphorus concentration (kg m"3)
= labile particulate organic phosphorus concentration (kg m"3)
= refractory particulate organic phosphorus concentration (kg m"3)
= DOP mineralization coefficient (s"1) = KDP in Table 6.1
= LPOP hydrolysis coefficient (s"1) = KLP in Table 6.1
= RPOP hydrolysis coefficient (s"1) = KRP in Table 6.1
= DOP mineralization coefficient algal dependence (m3 kg"1 s"1) = KDPALG in Table
6.1
= LPOP hydrolysis coefficient algal dependence (m3 kg"1 s"1) = KLPALG in Table 6.1
= RPOP hydrolysis coefficient algal dependence (m3 kg"1 s"1) = KRPALG in Table
6.1
= mean saturation coefficient of algal classes for SRP (kg m"3) = KHP in Table 6.1
= temperature correction for mineralization (unitless), given by Equation 6.36
= temperature correction for hydrolysis (unitless), given by Equation 6.37
6.1.5 Nitrogen
The transformation of nitrogen is similar to phosphorus, although nitrogen exists in more than
one oxidation state. Algal nitrogen is released as two forms of particulate organic nitrogen
(PON) (labile [LPON], refractory [RPON]), dissolved organic nitrogen (DON), and ammonia-
nitrogen (NH4). Particulate forms are hydrolyzed to DON. DON is further mineralized to NH4,
and NH4 is oxidized to NO3.
52
-------
6.1.5.1 Nitrogen Uptake by Phytoplankton
In our model, we assume that phytoplankton have no preference between NH4 and NO3 as a
nitrogen source.
dDIN
dt
where:
DIN = NH4 + NO3
NH4 = ammonia concentration (kg m"3)
NO3 = nitrate concentration (kg m"3)
rnc = N:C ratio = ANCP in Table 6.1
kg,dia = diatoms growth rate (s"1), given by Equation 6.3
= greens growth rate (s"1), given by Equation 6.3
(6.59)
Because we assume no preference, then
dNH
4 _
dt
dNO
3 _
dt
NH4
DIN
N03
DIN
(kg,dia DI
ggre
ggre
GRE)
GRE)
(6.60)
(6.61)
6.1.5.2 Nitrogen Release Due to Phytoplankton Metabolism/Mortality
Similar to phosphorus, nitrogen bound to phytoplankton can be released as particulate organic,
dissolved organic, and NH4 forms.
dNH,
dt
dDON
- rnc * (jnh4,dia * kbmd * DIA + fnh4gre kbmg
= r . (f k Dl A + f k
nc \ don.dia bmd L-'ir-v -r 'dongre "^brng
dLPON
= rn
(
j,. nc \ Ipon.dia
dRPON
DIA
dt
= r
nc
tpon.dia * kbmd * DIA
bmg
bmg
(6.62)
(6.63)
(6.64)
(6.65)
53
-------
where:
fnh4,dia = fraction of NH4 produced from diatoms metabolic process = FNID in Table 6.1
Wgre = fraction of NH4 produced from greens metabolic process = FNIG in Table 6.1
fdon.dia = fraction of DON from diatoms metabolic process = FNDD in Table 6.1
fdon.gre = fraction of DON from greens metabolic process = FNDG in Table 6.1
fipon.dia = fraction of LPON from diatoms metabolic process = FNLD in Table 6.1
fipon.gre = fraction of LPON from greens metabolic process = FNLG in Table 6.1
frpon.dia = fraction of RPON from diatoms metabolic process = FNRD in Table 6.1
frpon.gre = fraction of RPON from greens metabolic process = FNRG in Table 6.1
6.1.5.3 Nitrogen Release Due to Zooplankton Predation
As described for carbon and phosphorus, the nitrogen balance is affected by the zooplankton
through "messy feeding" and zooplankton mortality. For zooplankton grazing:
dDON , (. x . _ ,_ __.
= f , (1 - e) r k Z (6.66)
... 'ndp V / nc ^gz *- v '
dNH
= fnrp ' 0 - e) ' rnc ' kgz ' Z (6.69)
- = fnip (1 - e) rnc kgz Z (6.67)
dLPON , v .
^ = fnip (1 - e) rnc . kgz . Z (6.68)
dRPON
dt
where:
Up = fraction of NH4 from predation = FNIP in Table 6.1
fndp = fraction of DON from predation = FNDP in Table 6.1
fnip = fraction of LPON from predation = FNLP in Table 6.1
fnrp = fraction of RPON from predation = FNRP in Table 6.1
6.1.5.4 Nitrogen Release Due to Zooplankton Mortality
The release of nitrogen during zooplankton mortality can be expressed similarly to that of
phosphorus.
dNH .k
dt niz nc dz (6.70)
54
-------
dDON
dt
= f , . r k_, Z
'ndz 'nc ^dz "-
dLPON
dt
dRPON
dt
= f, r
'nlz 'nc
= f r k,,
'nrz 'nc ^d
where:
fniz = fraction of NH4 from zooplankton mortality = FNIZ in Table 6.1
fndz = fraction of DON from zooplankton mortality = FNDZ in Table 6.1
fniz = fraction of LPON from zooplankton mortality = FNLZ in Table 6.1
fnrz = fraction of RPON from zooplankton mortality = FNRZ in Table 6.1
6.1.5.5 Hydrolysis and Mineralization of Nitrogen
Paniculate nitrogen is hydrolyzed to DON and DON is mineralized back to NH4.
(6.71)
(6.72)
(6.73)
dNH
4 _
dt
kdn + kdna . PHYTOT
vsat-decayN
Nri, +NO, +k
. Tfmnl . DON (6.74)
'mnl
3 ^ ^sat-decayN
dDON
dt
kln+klna.PHYTOT.
km+kma.PHYTOT.
kdn + kdna . PHYTOT .
vsat-decayN
NH4 +N03 +ksat_decayN
sat-decayN
NH4 +NO3 +k
sat-decayN
sat-decayN
NH4 +N03 +k
. Tfhdr . LPON
Tfhdr . RPON
Tfmnl . DON
sat_decayN
(6.75)
dLPON
dt
= kln+klna.PHYTOT.
vsat-decayN
NH4 +NO, +k
. TfhHr . LPON
'hdr
3 ^ ^sat-decayN
(6.76)
55
-------
dRPON
dt
where:
DON
LPON
RPON
kdn
= k
rn
krna . PHYTOT
vsat-decayN
NH4+N03+ksat_decayN/
Tf
'hdr
RPON
(6.77)
ksat-decayN
Tfmnl
Tfhdr
dissolved organic nitrogen concentration (kg m"3)
labile particulate organic nitrogen concentration (kg m"3)
refractory particulate organic nitrogen concentration (kg m"3)
minimum DON mineralization rate (s"1) = KDN in Table 6.1
DON mineralization rate algal dependence (m3 kg"1 s"1) = KDNALG in Table
6.1
minimum hydrolysis rate of LPON (s"1) = KLN in Table 6.1
LPON hydrolysis rate algal dependence (m3 kg"1- s"1) = KLNALG in Table 6.1
minimum hydrolysis rate of RPON (s"1) = KRN in Table 6.1
RPON hydrolysis rate algal dependence (m3 kg'1 s'1) = KRNALG in Table 6.1
organic nitrogen decay half-saturation constant (kg m"3) = KHN in Table 6.1
temperature correction for mineralization (unitless), given by Equation 6.36
temperature correction for hydrolysis (unitless), given by Equation 6.37
6.1.5.6 Nitrification
Nitrification is the biological oxidation of ammonia into nitrite followed by the oxidation of these
nitrites into nitrates. In LM3, the modeling of the oxidation of NH4 is simplified by assuming that
ammonia, NH4, oxidizes directly into nitrate, NO3. The mathematical representation of the
nitrification process used in LM3 is:
exp[-ktnt1 (T - Tnt)2! where T < Tnt
exp[-ktnt2 (Tnt - T)21 where T > Tnt
(6.78)
where
Tfn = nitrification temperature dependence function (unitless)
T = water temperature (°C)
Tnt = optimal temperature for nitrification (°C) = TMNT in Table 6.1
ktntl = effect of temperature below optimal temperature for nitrification (°C"2) = KTNT1 in
Table 6.1
ktnt2 = effect of temperature above optimal temperature for nitrification (°C"2) = KTNT2 in
Table 6.1
dNH
4 _
dt
= -k
ntm
Tt
NH,
NH
(6.79)
sat_nitN
56
-------
dN03 . Tf NH4
7-^ = kntm Tfn - 4 (6.80)
dt NH4 +ksat_nitN
where
kntm = nitrification rate coefficient at optimal temperature (kg m"3 s"1)-= NTM in Table 6.1
NH4 = ammonia concentration (kg m"3)
ksat-nitN = half-saturation concentration of NH4 required for nitrification (kg m"3) = KHNNT
in Table 6.1
6.1.6 Silica
The behavior of silica is similar to that of phosphorus and nitrogen. Two silica species,
paniculate biogenic silica or unavailable silica (SU) and dissolved available silica (SA), are
simulated in the lake. Dissolved silica is utilized by phytoplankton, while biogenic silica is
released via phytoplankton mortality. Dissolved and biogenic silica are released via predation
upon phytoplankton by zooplankton. Biogenic silica is assumed to mineralize to dissolved silica.
The major difference from the other nutrients is that only diatoms have a silica dependency.
The diatom silica consumption can be written as follows:
dSA _
-JJ7- - rsc kg,dia * UIA (6.81)
where:
rsc = Si:C ratio = ASCD in Table 6.1
kg,dia = diatoms growth rate (s"1); see Equation 6.3
DIA = diatoms concentration (kg m"3)
Like the other nutrients, silica is released via diatom mortality.
(6.82)
V^l \-
Both classes of silica can be released via zooplankton predation.
dSA , DIA
= tan r_r kn Z (6 83)
dt sap sc gz PHYTOT l ;
dSU = DIA
dt ~ sup * PSC * gz * * PHYTOT (6.84)
51
-------
where:
fsap = fraction of SA from predation = FSAP in Table 6.1
fsup = 1 - fsap = fraction of SU from predation
kgz = zooplankton predation rate (s"1), given by Equation 6.23
Z = zooplankton concentration (kg m"3)
Biogenic silica is mineralized to dissolved silica. This process is described by the following
equations:
= ksua . SU . EXP[ktsua . (T - Trsua)] (6.85)
= -ksua . SU . EXP[ktsua . (T - Trsua)] (6.86)
where:
ksua = particulate silica dissolution rate constant (s"1) = KSUA in Table 6.1
ktsua = silica dissolution temperature rate constant (°C"1) = KTSUA in Table 6.1
Trsua = silica dissolution reference temperature (°C) = TRSUA in Table 6.1
SU = particulate biogenic silica concentration (kg m"3)
We assume that no silica accumulates within the zooplankton. Thus there are no terms for
silica release from zooplankton mortality.
58
-------
CHAPTER 7
SEDIMENT TRANSPORT
Sediment transport is a very important component of water quality modeling. It describes the
physical processes that are behind the movement of particles to and from the water column and
sediment bed.
One of the sediment transport processes that describes the movement of particles from the
water column into the sediment bed is gravitational settling. In simple terms, gravitational
settling is the downward movement of particles caused by the gravitational pull that the Earth
exerts on particles. The description of settling is not exactly a simple one because particles are
not free falling, that is, they are not falling in a vacuum under the influence of the gravitational
force; instead, particles are falling through a fluid, water, with various properties such as
viscosity and temperature affecting downward movement. Thus gravitational settling in water is
in reality a complex function of temperature, viscosity, particle density, particle geometry, and
water currents; water is always in a state of motion in Lake Michigan.
There is an equation that has been derived to describe the settling of particles in water, but that
equation assumes that the particles are spherical in shape. In nature, we seldom find things
that are perfect spheres. The equation is known as Stokes' Law and is used to get rough
estimates of settling velocities for different types of particles. In practice, modelers prefer to
specify a settling velocity for each settling particle as an input parameter. The input value is
adjusted until a decent fit to the observed data is achieved. In LM3, settling is a user-specified
velocity value with units of m/s. Each type of settling particle is assigned its own value. The
settling velocities are time- and space-independent; that is, each settling particle is assigned a
settling velocity that is the same for all the grid cells in the model and is constant throughout the
simulation. Generally speaking settling velocities are not constant because in the real world
they are functions of water temperature and particle size. However, modelers at the United
States Environmental Protection Agency (USEPA), Large Lakes Research Station (LLRS)
decided to use constant settling velocities, which could be adjusted during calibration, because
of lack of laboratory experiments and in situ settling tests in Lake Michigan.
Another important process of sediment transport is sediment resuspension. This process refers
to the physical movement of particles as they are lifted off the sediment bed and transported
into the water column. Sediment resuspension is triggered by the continuous action of shear
stress upon the sediment bed. Shear stress is a force per unit area. This force per unit area is
created by the combined action of waves and currents in the water column. However, this
combined action is not a simple linear superposition of these two disturbances in the water;
instead, it is a complicated non-linear interaction between waves and current energy. When
59
-------
shear stress exceeds a critical value, also known as critical shear stress, particles in the
sediment bed will start resuspending. Shear stress is used in conjunction with sediment
properties to calculate resuspension velocities in units of m/s. These resuspension velocities
are used with sediment concentrations to calculate the resuspension mass rate for each cell in
the surficial sediment grid.
The following section contains an in-depth discussion of shear stress. The discussion is
somewhat technical, but it offers an insight on the calculation done within the application known
as SEDZL. This application is used to generate resuspension fluxes. These fluxes are then
converted to velocities which, in turn, are used as input values to LM3. Only the branches
3.2.15, 3.2.18, and 3.2.19 of LM3 are set up to use resuspension fluxes generated by SEDZL;
the other LM3 branches have not been modified to make use of these fluxes as of this writing.
See Section 7.3.4.1 for a detailed description of how the resuspension fluxes are converted to
resuspension velocities.
7.1 Outline of the Bottom Shear Stress Calculation
7.7.7 Introduction
The following discussion outlines the calculation of the bottom shear stress used in the
simulation programs SEDZL and the branches 3.2.15, 3.2.18, and 3.2.19 of LM3. This outline is
taken from Christoffersen and Jonsson (1985). The main point was to calculate, among other
quantities, the bottom shear stress from a combined current and wave motion. This section
does not address any derivation of the equations used in calculating the shear stress; it is
meant to be an outline of the procedure used in the computer programs mentioned above.
Anyone interested in the derivations needs to refer to the paper by Christoffersen and Jonsson
(1985).
Our goal was to calculate the bottom shear stress due to the combined motion of currents and
waves. Bottom shear stress is a force per unit area that is produced by a combination of both
currents and waves. This force is responsible for the resuspension of bottom material in Lake
Michigan and, in principle, any other major lake. The resuspension of bottom material is an
important process because it accounts for the recycling of toxics and other chemicals previously
deposited at the bottom of the lake into the water column, where they are likely to have an
impact on the water quality of Lake Michigan.
7.1.2 Total Bed Shear Stress
The calculation of bottom shear stress requires the input of various parameters such as the x
and y current velocity components, wave heights, wave periods, and wave directions.
Consequently, a mathematical expression for bed shear stress should depend on those
parameters, and it is expected to be complex. In order to describe the most general expression
for bottom shear stress, the following vector expression for total shear stress due to currents
and waves is used.
I = Tw + Ic (7.1)
60
-------
where:
Tw = the shear component due to waves (N m"2)1
T = the shear component due to currents (N m"2)
T = total shear stress (N m"2)
Equation 7.1 is also valid at the lake bed giving:
^b = ?wb + Tcb (7'2)
The subscript b stands for bed (lake bottom).
Note that Equations 7.1 and 7.2 do not include a wave-current interaction term. Strictly
speaking, these interaction terms contribute to the shear stress but they are usually very small
and are being neglected in the sediment transport model. The biggest effect of the interaction
terms is to increase the "effective roughness length" or "effective drag coefficient" "felt" by the
current horizontal velocity. This increase in "effective drag coefficient" or "effective roughness
length" for the horizontal current is being accounted for (see Section 7.1.3.1).
We can give a more explicit expression for these vector expressions by stating that (see
Christoffersen and Jonsson, 1985) TW and TC have the same directions as the wave and
current directions, namely TW and TC have the same direction as uw and uc, respectively,
where uw is the horizontal wave velocity and uc is the horizontal current velocity. We expect
the shear due to waves to be in the direction of the wave propagation and the shear due to
currents to be in the direction of the current. Note that the current and wave velocities are the
horizontal components because the shear for resuspension acts along the sediment bed; the
perpendicular component of the shear with respect to the bed is ignored. Then, iwb and icb
are expressed as follows:
i-, 3\
wb -7"wb -7~wbm ^ '
u
^cb =7JTcb (7-4)
where:
£
= (cos a, sin a) is a unit vector in the horizontal direction of wave propagation
k (dimensionless)
a = the angle between the horizontal direction of wave propagation and the x-i axis (x-, and
x2 are the horizontal Cartesian coordinates) (radians)
1N-Newtons (this is the unit offeree in the metric system).
61
-------
_ = (cos 5, sin 5) is also a unit vector in the direction of the current (horizontal component)
U (dimensionless). The current is averaged over the water depth
5 = the angle between the horizontal component of the current direction and the x-i axis
(radians)
= the maximum bottom shear stress due to waves. The reason for a maximum value is
that the bottom shear stress due to waves is oscillatory in nature and so iwbm is nothing
else but the amplitude of iwb in Equation 7.3 (N m"2)
solution is time-harmonic which results in a time-harmonic wave bed shear stress iwb
(|)b = the phase lead relative to the wave particle velocity uw . The wave particle velocity uw
s time-harmonic which results in a time-har
(radians)
9 = the phase function given by 9 = coat - k- x (radians)
coa = absolute angular frequency =
'a
Ta = absolute wave period
As we have seen, it is possible to split the shear stress into a current component and an
oscillating wave component. It is also convenient and natural to define a current friction factor fc
and a wave friction factor fw in the following way:
Trh =-
cb
r
2 c (7.5)
=
Twbm ^ *wPUwov (7.6)
where:
p = the fluid density. In our case, the fluid is water and its density value is 103 kg/m3
U = the average over-depth current velocity. Some caution should be taken when
calculating U because the average of the current velocity is not necessarily performed
over the entire water column. In nearshore regions, we take the average of the current
velocity over all the sigma layers. For intermediate regions, the average is performed
over the last three or four sigma layers, while for deep regions, just the lowermost
sigma layer value of the current velocity is used (m s"1)
62
-------
= the bottom orbital velocity (m s"1) which is determined from linear wave theory and is
given by:
Uwov
Tasinh(2^h0/Ld)
where:
Ld = the wavelength (m) and is given by:
Ld =
(7.8)
where:
Hs = the wave height (m)
Ta = the absolute wave period (s)
h0 = the average water depth (m)
g = the constant of acceleration due to gravity (m s"2)
Note that Equation 7.8 is a transcendental equation which means in order to solve for Ld, we
need to use a numerical method known as Newton-Ralphson, which is frequently employed to
find the roots of an algebraic equation. The wave information needed by Equations 7.7 and 7.8
was generated by a wave model adapted to Lake Michigan (Schwab and Beletsky, 1998).
Looking at Equations 7.5 and 7.6, note that the term corresponding to one-half times the fluid
density times the velocity squared is actually the kinetic energy per unit volume. Therefore, the
friction factors fc and fw can be interpreted as the fraction of kinetic energy per unit volume that
is being dissipated at the lake bottom.
We are now in position to give an explicit expression for the total bed shear stress (Equation
7.2). By combining Equations 7.3, 7.4, 7.5, 7.6, and 7.2, we have
T T
. . Tcb+ . Twbm
= iwbm
(|>b)cosa, b)sina) (7.9)
where:
T has units of N m
"2
63
-------
~wbm w V wov
a is dimensionless
From Equation 7.9, the maximum (total) bed shear stress is found to be
1 f 2
T=^TwPuwovm (7.11)
i has units of N m"2
with
m = ^/1 + cy2 +2ci|cos(6-a)| (7.12)
m is dimensionless.
Even though the current friction factor fc is defined in Equation 7.5 for a pure current motion and
the wave friction factor is defined in Equation 7.6 for a pure wave motion, they depend on each
other for a combined waves and currents motion. Note that in the limit when U approaches
zero, a will also approach zero which then implies that m will approach the value of one and
consequently Equation 7.11 reduces to Equation 7.6. Similarly, in the limit that uwov approaches
zero, a approaches infinity, which then implies that m ~ a and consequently Equation 7.11
reduces to Equation 7.5.
7.1.3 Friction Factors
After defining the current friction factor in Equation 7.5 and the wave friction factor in Equation
7.6, we still have to give expressions for these two factors because the equations just
mentioned do not tell us how to determine them. The answer comes from hydrodynamics
where one solves the momentum equations satisfying horizontal equilibrium (Christoffersen and
Jonsson, 1985). The results of these calculations are discussed below.
7.1.3.1 Current Friction Factor
The result for the current friction factor is:
. A
In
K lekNJ K
64
-------
where:
K = this dimensionless constant is known as the von Karman constant and its value is 0.4.
This constant is considered one of the most fundamental in turbulence theory. It occurs
in the log-law governing the velocity profile adjacent to a boundary in a turbulent
boundary layer. In other words, this constant arises in the analysis of the average
velocity profile for the flow between two parallel plates driven by a pressure gradient in
one direction. The resulting velocity profile equation is logarithmic, and the Karman
constant is related to the slope of the logarithmic curve
kN = this parameter is known as Nikuradse roughness. Its value may vary from one location
of the lake to another and is related to the "roughness" of the lake bottom; that is, its
value quantifies how rough the bottom of the lake is or how much friction the bottom of
the lake presents to the moving fluid (water in our case). Nikuradse roughness is in
units of length (meters or centimeters)
h = this parameter represents the water depth, that is, the distance from the lake bottom to
the water surface for a given location. Water depth in the lake may vary with the
passage of time but in our calculation we use the value measured at the beginning of the
study period
e = the natural base of logarithms and whose value is equal to exp(1) = 2.718
kA = known as the apparent roughness and is given by the following equation:
kN
where:
P = the turbulence constant whose value is 0.0747. This constant is proportional to the eddy
viscosity in the wave boundary layer
5W, which is known as the bottom layer thickness, is given by the following equation:
(7.15)
where r is the dimensionless factor which later will be taken to be equal to V 2/rc = 0.45 in the
calculation. The physical interpretation of the apparent roughness is related to the fact that
because there are waves in the lake, the current meets a greater bed shear stress than a pure
current (no waves) and thus will "feel" a greater roughness than the "geometrical" Nikuradse
roughness kN. The concept of apparent roughness was introduced by Grant and Madsen
(1979). On the other hand, the variable 5W represents a wave boundary layer thickness that is a
certain distance with respect to the lake bottom over which the wave energy gets dissipated; it is
65
-------
a bottom layer where the wave "feels" the lake bottom. Another way of putting it is by saying
that outside this bottom boundary layer, the wave energy does not get dissipated which means
that i - 0.
7.1.3.2 Wave Friction Factor
The expression for the wave friction factor fw that results from the solution of momentum
equations is:
L =
w
^
wov a
(7.16)
where:
m = is given by Equation 7.12
The other variables have already been discussed.
7. 1.4 Calculation Scheme
The calculation scheme is an iterative one in order to determine fc and fw, and it proceeds as
follows:
1. Compute fc with kA = kN using Equation 7.13. This is the case for a pure current; that is, no
waves. In other words, for a pure current motion the apparent roughness kA is the same as
the Nikuradse roughness kN. When there are no waves, this is expected because the
friction experienced by the current does not have a wave component. After equating kA to
kN, Equation 7.13 reduces to:
(7.17)
Equation 7.17 can be simplified to:
(7.18)
2. Compute fw with m = 1; that is, the case where there are no currents. The case m = 1
corresponds to the case when a = 0 (see Equations 7.12 and 7.10); that is, when U = 0
which means the currents are negligible and we are left with a pure wave motion.
Substituting m = 1 in Equation 7.16, we get:
66
-------
(7.19)
3. The next step is to iterate through Equations 7.10, 7.12, and 7.16, keeping fc fixed, until the
values of a, m, and fw converge within a numerical accuracy of single precision. On most
computers, single precision accuracy usually means that the value of a real variable has an
accuracy of six or seven significant digits. We determined that five iterations are sufficient to
determine the values of a, m, and fw with a precision of six significant digits.
4. Compute bottom layer thickness 5W and apparent roughness kA from Equations 7.14 and
7.15, respectively with r = 0.450 and p = 0.0747.
5. Compute a new fc using Equation 7.13. In this case, we do not use the condition kA = kN
anymore.
6. Repeat steps 2-5 until numerical convergence with single precision accuracy has been
obtained for fc. We determined that five iterations are sufficient to achieve numerical
convergence for fc with a precision of six significant digits.
7. Calculate bottom shear stress from Equation 7.11 because we now know what a, m, and fw
are. We are assuming that all the units are in the MKS (meter-kilogram-second) system.
7.7.5 Figures
This section provides several examples of the shear stress calculation. Included are figures that
show the frequency distribution of shear stress over a period of 60 days using the
meteorological data of 1982 and 1994, for several locations in the lake with different Nikuradse
roughness kN values. The shear stress was calculated using the algorithm described in the
previous section, and the program used was SEDZL.
A brief explanation is required to understand the axes of the frequency distributions shown in
Figures 7.2 to 7.25. The x-axis represents the range of shear stress values. This range is
divided into intervals of equal length, with each interval representing the width of the rectangular
columns. The y-axis represents the percentage of shear stress values that fall within an
interval. For example, if an interval shows a column height of 80%, this means that 80% of the
shear stress values fall within that interval.
The frequency distribution of bottom shear stress was calculated for three locations in Lake
Michigan. These locations are labeled A, B, and C (Figure 7.1). These locations were chosen
to capture the behavior of shear stress at different zones and different water depths in the lake.
Location C is over the deepest part of the southern basin with a water depth of 163.5 m; location
B is over the deepest part of the northern basin with a water depth of 261.5 m (which is the
deepest location in the lake); and location A is located at the Fox River mouth in Green Bay
with a water depth of 2.5 m, which happens to be the shallowest cell on Lake Michigan. The
calculation was performed for the years 1982 and 1994 and for four different values of
67
-------
Lake Michigan Locations
Figure 7.1. Locations for the three selected areas where shear stress was calculated.
The locations are denoted by the capital letters A, B, and C.
Nikuradse roughness kN. The four values that were selected for kN were 0.2 cm, 1.0 cm, 2.0
cm, and 5.0 cm. One observation to keep in mind is that in SEDZL the units used are in the
CGS (centimeter-gram-second) system. Therefore, shear stress units are in dynes/cm2 and
Nikuradse roughness parameters are in centimeters. Please note that Figures 7.2 to 7.13
correspond to a 60-day period starting on March 31, 1982 and Figures 7.14 to 7.25 correspond
to a 60-day period starting on January 1, 1994.
One of the main observations made from these figures is that for the two deep locations, B and
C, the shear stress distribution does not change much as a function of the Nikuradse roughness
parameter. This result is probably not at all surprising.
For water depths of more than 30 m, the contribution of waves to shear is almost negligible, and
most of the shear is due to currents. On the other hand, for location A, the change in the shear
distribution is very dramatic as kN varies. In this particular case, we are dealing with a very
shallow area of the lake and the effects of both waves and currents are very important. Most of
the resuspension of Lake Michigan sediments occurs in shallow waters.
68
-------
Shear Stress 1982 (SEDZL): Location A
(Water Depth = 2.5m)
70%
60% -
50% -
^ 40% -
o
CD
g- 30% -
CD
Shear Stress (dynes/cm2)
Figure 7.2. Distribution of shear stress for location A, 1982, kN = 0.2 cm.
70%
60% -
50% -
>> 40% H
c
0)
§- 30% -
0)
20% -
10% -
0%
Shear Stress 1982 (SEDZL): Location A
(Water Depth = 2.5m)
ooooooooooooooooooooo
Shear Stress (dynes/cm2)
Figure 7.3. Distribution of shear stress for location A, 1982, kN = 1.0 cm.
69
-------
Shear Stress 1982 (SEDZL): Location A
(Water Depth = 2.5m)
70%
60% -
50% -
1
CD
g- 30% -I
CD
^ 20% -
\ 0% -
0%
Shear Stress (dynes/cm2)
Figure 7.4. Distribution of shear stress for location A, 1982, kN = 2.0 cm.
70%
60% -
E 50% -
^ 40% -
CD
3 30% -I
Shear Stress 1982 (SEDZL): Location A
(Water Depth: 2.5m)
Shear Stress (dynes/cm2)
Figure 7.5. Distribution of shear stress for location A, 1982, kN = 5.0 cm.
70
-------
Shear Stress 1982 (SEDZL): Location B
(Water Depth = 261.5m)
Co*
u
d
CD
CD
L_
I uu/o
90%
80%
70%
60%
50%
40%
30%
20%
1 0%
no/ _
Shear Stress (dynes/cm2)
Figure 7.6. Distribution of shear stress for location B, 1982, kN = 0.2 cm.
Shear Stress 1982 (SEDZL): Location B
(Water Depth = 261.5m)
2!
o
c
CD
cr
1 1
IUU70
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
h
-
-
-
Q>
^N^'V^'b^V^^^'b
Shear Stress (dynes/cm2)
Figure 7.7. Distribution of shear stress for location B, 1982, kN = 1.0 cm.
71
-------
Shear Stress 1982 (SEDZL): Location B
(Water Depth: 261.5m)
I uu/o
90% -
80% -
g 70% -
ft 60% -
§ 50% -
a- 40% -
CD
£ 30% -
20% -
10%-
no/ _
^^^
Shear Stress (dynes/cm2)
Figure 7.8. Distribution of shear stress for location B, 1982, kN = 2.0 cm.
Shear Stress 1982 (SEDZL): Location B
(Water Depth = 261.5m)
^3"
d^
>,
u
1
1
LL
IUU7o
f^\f~\Ct/
90%
80% -
70% -
60% -
50% -
40% -
30% -
20% -
10% -
f~\Q/
<:*&£y'$<^<$?'$?&$>
-------
90%
80% -
70% -
^ 60% -
fr 50% -
§ 40% -
gf 30% -
^ 20% -
10% -
0%
Shear Stress 1982 (SEDZL): Location C
(Water Depth = 163.5m)
Shear Stress (dynes/cm2)
Figure 7.10. Distribution of shear stress for location C, 1982, kN = 0.2 cm.
Shear Stress 1982 (SEDZL): Location C
(Water Depth = 163.5m)
yU/0
o/~\o/
80%
~ 70% -
60% -
p 50% -
c
§ 40% -
rr
2 30% -
^ 20% -
10% -
no/
Shear Stress (dynes/cm2)
Figure 7.11. Distribution of shear stress for location C, 1982, kN = 1.0 cm.
73
-------
Shear Stress 1982 (SEDZL): Location C
(Water Depth = 163.5m)
au/o
80% -
70% -
60% -
50% -
40% -
30% -
20% -
10% -
no/
i =i , i i i i , ^-^ , ,
V"
Shear Stress (dynes/cm2)
Figure 7.12. Distribution of shear stress for location C, 1982, kN = 2.0 cm.
Wo -l
80% -
70% -
60% -
50% -
40% -
30% -
20% -
10%-
Shear Stress 1982 (SEDZL): Location C
(Water Depth = 163.5m)
V
o-
O- O- O- O- ^ O- O- Qb-
Shear Stress (dynes/cm2)
Figure 7.13. Distribution of shear stress for location C, 1982, kN = 5.0 cm.
74
-------
25%
Shear Stress 1994 (SEDZL): Location A
(Water Depth = 2.5m)
-------
Shear Stress 1994 (SEDZL): Location A
(Water Depth = 2.5m)
30%
25% -
20% -
15% -
10% -
5% -
0%
Shear Stress (dynes/cm2)
Figure 7.16. Distribution of shear stress for location A, 1994, kN = 2.0 cm.
25%
#
Shear Stress 1994 (SEDZL): Location A
(Water Depth = 2.5m)
Shear Stress (dynes/cm2)
Figure 7.17. Distribution of shear stress for location A, 1994, kN = 5.0 cm.
76
-------
70%
60% -
^ 50% -
-
?r 40% -
c
CD
5. 30% -I
.
CD
20% -
10%-
Shear Stress 1994 (SEDZL): Location B
(Water Depth = 261.5m)
or or or or or or or o- o-
Shear Stress (dynes/cm2)
o- o-
Figure 7.18. Distribution of shear stress for location B, 1994, kN = 0.2 cm.
70% -T
60% -
g 50% -
?T 40% -
I 30% -
CD
£ 20% -
10% -
Shear Stress 1994 (SEDZL): Location B
(Water Depth = 261.5m)
o- o- o- o- ^ o- o- o- o-
Shear Stress (dynes/cm2)
Figure 7.19. Distribution of shear stress for location B, 1994, kN = 1.0 cm.
77
-------
Shear Stress 1994 (SEDZL): Location B
(Water Depth = 261.5m)
70%
60% -
g 50% -
?T 40% -
c
CD
g- 30% H
CD
£ 20% -
10% -
0%
o- 0- o- o- o- 0- o- o- o- 0- o- o-
2
o- or o-
Shear Stress (dynes/cm2)
Figure 7.20. Distribution of shear stress for location B, 1994, kN = 2.0 cm.
70%
60% -
g 50% -
?T 40% -
I 30% -
CD
£ 20% -
10% -
o-
o-
Shear Stress 1994 (SEDZL): Location B
(Water Depth = 261.5m)
o-
o-
o-
o-
o-
o-
Shear Stress (dynes/cm2)
Figure 7.21. Distribution of shear stress for location B, 1994, kN = 5.0 cm.
78
-------
Shear Stress 1994 (SEDZL): Location C
(Water Depth = 163.5m)
of
'tO/o
40% -
35% -
30% -
25% -
20% -
15% -
10% -
5% -
0% H
<;
b
I I , I 1
' 1 1 1 1 1 1 R^ 1 1 1 ^^ 1 r^ 1 1 \==
Cr _ Q> _<6) _ Q) cv . *^ . *^ . *^ . 'V cv
Cy Qy Qv Qv ^ Qy Qy Qy Qy ^
Shear Stress (dynes/cm2)
Figure 7.22. Distribution of shear stress for location C, 1994, kN = 0.2 cm.
Shear Stress 1994 (SEDZL): Location C
(Water Depth: 163.5m)
45%
40% -
_ 35% -
^ 30% -
& 25% -
| 20% -
I" 15%-
10%-
5% -
0% -
O
Qb-
o-
o-
o-
o-
o-
o-
o-
Shear Stress (dynes/cm2)
Figure 7.23. Distribution of shear stress for location C, 1994, kN = 1.0 cm.
79
-------
45% -T
40% -
35% -
30% -
25% -
20% -
15% -
10% -
0%
Shear Stress 1994 (SEDZL): Location C
(Water Depth = 163.5m)
N
V V
- O-
2
Shear Stress (dynes/cm2)
Figure 7.24. Distribution of shear stress for location C, 1994, kN = 2.0 cm.
Shear Stress 1994 (SEDZL): Location C
(Water Depth = 163.5m)
40% -
35% -
30% -
25% -
20% -
15%-
10% -
5% -
t|=^
Shear Stress (dynes/cm2)
Figure 7.25. Distribution of shear stress for location C, 1994, kN = 5.0 cm.
80
-------
Theoretical and experimental work has been conducted to analyze the initiation of sediment
movement (quartz particles) for a range of particle diameters and bulk densities (Roberts et al.,
1998; Lick et al., 2004). The behavior of critical shear stress (ic) as a function of particle
diameter with bulk density as a parameter was investigated. It was shown that ic reaches a
minimum value around 0.5 dynes cm"2 for the case of the lowest density of 1.65 kg L"1. For
Lake Michigan, in particular, sediment erosion rates were determined at various sites (McNeil
and Lick, 2002). These erosion rates were measured as a function of depth and shear stress.
The lowest critical shear stress value recorded was 2 dynes cm"2. Given that for locations B
and C shear stress is below 0.5 dynes cm"2, we can say that for those locations there are no
sediment resuspension because shear stress is too low to initiate resuspension.
7.2 PCB Diffusion Process Between Sediment and Water
Diffusive exchange of polychlorinated biphenyls (PCBs) between the sediment and water
columns is a process triggered by dissolved PCB concentration gradients between the sediment
and the water column. By dissolved PCB concentration, it is meant the purely dissolved and the
dissolved organic carbon (DOC)-bound PCBs fractions. In other words, we have two parallel
diffusive processes taking place at the same time; one for purely dissolved PCBs and the other
one for DOC-bound PCBs.
The discussion that follows only applies to the branches 3.2.15, 3.2.18, and 3.2.19 of LM3. The
diffusion process is expressed as a mass flux; that is, mass of PCBs per unit time with a positive
diffusive exchange flux representing a contribution of PCB to the water column and a negative
diffusive exchange flux representing a contribution of PCB to the sediment bed. The formula
that is used in LM3 to describe this sediment-water diffusion process is a purely empirical
relationship based on laboratory measurements. The formula is the following:
DIFFflux = EXCH_COEFF . (EXCHCwater -EXCHCsed) - Areacell
where:
DIFFf|UX = diffusion flux (kg s"1)
EXCH_COEFF = exchange coefficient (m s"1)
EXCHCwater = exchange dissolved or DOC-bound PCB water concentration (kg m"3)
EXCHCSed = exchange dissolved or DOC-bound PCB sediment concentration (kg m"3)
Areacen = contact surface area between water and sediment 5 km x 5 km overlaying
cells (m2)
The exchange coefficient is given by:
EXCH_COEFF = EXCH . Dwaterpcb (7.21)
where:
EXCH= Y*Y
TORTUOSITY . LENGTH (7-22)
81
-------
The term EXCH is actually the segment-specific portion of the exchange coefficient, y is the
porosity value for a given surficial sediment segment. Tortuosity is an indication of how the
structure of a porous medium restricts the flow of gases or liquids through the material. In this
sense, tortuosity is to fluid flow as the structure of a wire (cross-section, length, etc.) is to the
flow of electricity. In our case, the porous medium is the sediment bed, and the fluid is the
purely dissolved and DOC-bound PCBs in the water within the sediment bed. The value of
tortuosity used for fine-grained sediments is 1.7 (Thibodeaux, 1979). The factor LENGTH is the
characteristic length with a value of 0.0085 meters (Thibodeaux, 1979). Dwater,pcb is the
diffusivity of a given PCB congener in water in units of m2 s"1 and is given by Equation 8.30
(see Section 8.2).
The terms EXCHCwater and EXCHCsed are given by
EXCHCwater = pou'wdiei (7.23)
Ywater
EXCHCsed = Cpcb-sed (7.24)
Ysed
where:
= purely dissolved or DOC-bound PCB water concentration (kg m"3)
= purely dissolved or DOC-bound PCB sediment concentration (kg m"3)
Ywater = porosity of bottom water segment which is assumed to be one
ysed = sediment segment-specific porosity
The term Areacen refers to the surface contact area between the bottom 5 km water segment
and the surficial sediment segment that is right below the water segment. The grid geometry of
the sediment cells is very similar to the ones of the water column such that they line up
perfectly; that is, their horizontal cross-section area has the value of 5 km x 5 km which is 2.5 x
107 m2 and is the same as that of the water column.
7.3 LM3 Sediment Bed
The discussion of the LM3 sediment bed construct that follows, in this and subsequent sections,
only applies to the branches 3.2.15, 3.2.18, and 3.2.19. The LM3 sediment bed construct is
primarily designed to look at PCB transport between the water column and sediment column
and, consequently, is a relatively simple one. It has a number of simplifications that facilitate the
simulation of a given PCB congener within a reasonable amount of computer time. The main
simplifications are:
1. There is no actual computation of resuspension fluxes within the application LM3 itself.
Instead, resuspension fluxes were previously calculated within the application known as
SEDZL.
82
-------
2. The initially specified sediment concentration values of the solids are constant throughout
the simulation. Only one solid, refractory organic carbon (ROC), is included in the sediment
bed as of this writing.
3. Sediment cell volumes are constant throughout the simulation.
4. No nutrients are included.
5. No diagenesis algorithm has been incorporated.
6. Only two carbon state variables: DOC and ROC.
7. PCB partitioning with respect to DOC and ROC is assumed to be the same as in the water
column.
8. No diffusion of dissolved states is specified between sediment layers. The only diffusion
process allowed is the PCB diffusion between the top sediment layer and the bottom water
column layer (see Section 7.2).
9. Only vertical transport is allowed within the sediment bed. The vertical transport algorithm is
the ULTIMATE QUICKEST (UQ) which is actually based on the vertical component of the
UQ water column transport (see Chapter 5 and Appendix A).
7.3.1 Initial Conditions
Initial conditions for sediment concentrations need to be specified before performing any LM3
simulations. These initial conditions have to be estimated as accurately as possible using all
field data available.
Section 11.1.1 has a discussion about the Common Data Format (CDF) rVariables
corresponding to the initial sediment concentration values.
7.3.1.1 ROC Sediment Concentrations
Paniculate organic carbon (POC) was measured in the top centimeter of the sediment samples.
These data were then interpolated using the natural neighbor method (Watson, 1994) to
populate each of the surficial 5 km grid cells in the sediment bed; there are 2,318 such grid
cells. We assumed that all the POC is ROC, which is not true in the real world; but for the
purpose of simulating PCBs in the sediment bed, this assumption was accepted. Sediment
cores that were collected during the study period of 1994-1995 were used as a guidance to
estimate ROC values for the deeper sediment layers; that is, the ones below the surficial layer.
There were only four sediment cores for which paniculate detrital carbon (PDC) sediment
profiles were available. These cores were collected at the stations LM94-15, LM94-41, LM94-
86, and LM94-112. The estimation of POC for the deeper layers was done by following the
trends observed in these four cores.
83
-------
7.3.1.2 Clay Sediment Concentrations
Clay concentration can be inferred from POC and grain size data, which were measured for the
top centimeter of the sediment samples. However, as of this writing, no estimation of clay
sediment concentrations has been done.
7.3.1.3 PCB Congener Sediment Concentrations
PCBs were measured in the top centimeter of the sediment samples. The data from these
samples was then interpolated/extrapolated using the natural neighbor and inverse square
distance methods. The natural neighbor method was applied for the open lake while the inverse
square distance method was applied for Green Bay. We used the inverse square distance
method for Green Bay because of lack of samples collected in that part of Lake Michigan (Xia,
2006).
7.3.1.4 DOC Sediment Concentrations
DOC is treated as a passive state variable in the sediment bed; that is, it does not respond to
kinetics, resuspension, burial, diffusion, and settling. A constant concentration value of 17.5 mg
L"1 was specified for each of the sediment cells. DOC was used only when calculating the
partitioning of PCBs with respect to carbon in the sediment bed.
7.3.2 Sediment Parameters
The sediment bed algorithm that we have in place requires knowledge of several parameters.
These parameters are the particle densities, the PCB partition coefficients, and the porosities.
7.3.2.1 Particle Densities
Density of fine-grained sediment is about 2.45 ± 0.05 g cm"3, according to John Robbins
(Robbins eta/., 1999).
7.3.2.2 PCB Congener Partition Coefficients
We assumed that the PCB partition coefficients in the sediments were the same as in the water
column; the POC and DOC partition coefficients are given in Table 8.1. PCB partition
coefficients for clay are equal to zero; in other words, we do not partition any PCBs to clay; the
theory is that PCBs bind mostly to organic particles.
7.3.2.3 Porosities
The sediment cell porosities were calculated using the ROC concentrations and the particle
densities. The equation used to calculate porosity was:
1 ^ROC.SED
Ysed = !
84
-------
where
ps = particle density = 2.45 g cm"3 = 2450 kg m"3
Porosities are needed to calculate the diffusive exchange of PCBs between the sediment and
water column (Section 7.2).
7.3.3 Boundary Conditions
Boundary conditions are needed for the current sediment bed construct. The boundary
conditions are concentration values that are specified for both ROC and PCBs in a infinite mass
reservoir located just below the deepest sediment layer. It is assumed that the ROC and PCB
concentrations of this infinite mass reservoir are the same as the ones of the deepest sediment
layer. This infinite mass reservoir is needed for our current sediment bed model to supply ROC
mass to the deepest sediment layer when resuspension is taking place, in order to preserve the
initial sediment stack concentration gradient of the solids, in our case ROC. However, when
ROC mass is pumped into the sediment stack from below, a given PCB congener mass needs
to be pumped into the stack from below as well because of the association of these chemicals
with organic solids. When more particles are settling than resuspending, we then push solids
down the sediment stack and into this infinite mass reservoir in order to preserve the initial
solids concentration gradient.
The algorithm used for the boundary conditions is depicted in Figure 7.26.
7.3.3.1 ROC Sediment Boundary Condition
ROC boundary condition is set to the initial concentration of the deepest sediment layer for each
sediment column (sediment stack).
7.3.3.2 PCB Congener Sediment Boundary Condition
The PCB congener's boundary condition is set to the initial concentration of the deepest
sediment layer for each sediment column.
7.3.3.3 Clay Sediment Boundary Condition
As of this writing, no clay sediment concentrations have been estimated and, consequently, no
boundary condition has been set yet.
7.3.4 Sediment Transport Data
The LM3 sediment bed needed some basic transport data that was not calculated within the
application. One such transport data was the resuspension velocities which were needed to
determine how much sediment mass could be resuspended at a given time. The other
sediment transport data that one would need are the bulk mixing coefficients, but for our present
sediment model, they were not used nor were they estimated for each of the 5 km grid cells.
85
-------
ROC. PCB congener
advcctcd sediment = resuspcnded sediment - settled sediment
bottom boundary condition
infinite reservoir
IF advecled sediment < 0.0 THEN
boundary deposition velocity =
ad\ cctcd sediment
, botlom lavcr * Arca cell
net deposition
case 1
bottom source = CROC. bottom layer * Area cell * boundary deposition velocity
PCB bottom source = CPCB. bottom [aver * Arca cell * boundary deposition velocity
ELSE IF advected sediment > 0.0 THEN
c c
^-ROC. infinite reservoir = ^~
boundary deposition velocity =
. infinite reservoir = ^~ROC. bottom layer
advcctcd sediment
net erosion c;
t
ase
f *
ROC. infinilc rescr\oir
cell
bottom source = CROC. infinite resenoir * Arca cell * boundary deposition velocity
C
^
. infinite reservoir = ^PCB. bottom la\er
botton, source = PCB infinhc reservoir * Arca cel, * botmdan deposition velocity
ELSE
ROC bo(lom sourcc - o.o
ivo net particle flux case
FCB
bononi
ENDIF
Figure 7.26. Bottom boundary condition algorithm.
86
-------
7.3.4.1 Resuspension Velocities
The resuspension velocities are obtained through a rather involved process because they are
not part of the SEDZL output. The SEDZL output generates resuspension fluxes and not
velocities, which means that a conversion from resuspension fluxes to resuspension velocities
had to be used.
The units of the resuspension fluxes, as generated by SEDZL, are given in g cm"2 s"1. These
units are then converted to kg m"2 s . One then needs to divide these fluxes by surficial
sediment concentrations to get resuspension velocities in units of m s"1.
However, before performing the conversion from fluxes to velocities, we need to process the
fine sediment concentrations, which are interpolated over the SEDZL grid by rectifying the
SEDZL grid values to fit the LM3 grid. The SEDZL grid is slightly different from that of LM3.
SEDZL has 2,336 surface cells versus 2,318 surface cells in LM3. Moreover, some SEDZL
surface grid cells that are considered land cells are considered water cells in LM3 and vice-
versa.
SEDZL was originally developed as a tool to study sediment and contaminant transport only. It
predates the development of LM3 by about 10 years. The grid employed by SEDZL was
devised to approximate the complex geometry of Lake Michigan as close to reality as possible,
in particular, the shoreline and boundaries of the lake. When the LM3 grid was devised, no
attempts were made in matching it to the SEDZL grid because the original intent was to
incorporate a sediment transport scheme, including shear stress calculations, into LM3.
However, extensive computer resources were needed to run sediment transport (including
shear stress) and eutrophication at the same time, which prevented LLRS from implementing
this option. Thus the decision was made to use SEDZL to help in estimating resuspension
velocities (via fluxes), which are then input into LM3. This decision meant, though, that a
matching between the SEDZL and LM3 grids had to be made. Therefore, to handle this grid
mismatch between SEDZL and LM3, the procedure below was devised. No statistical analysis
is provided in this report to quantify the error incurred in rectifying the SEDZL output to fit the
LM3 grid geometry. Nevertheless, the number of adjusted/manipulated grid cells is only 34;
only eight LM3 grid cells, of the 2,318 that are over water, are assigned values. The remaining
26 were zeroed out because they are land grid cells in LM3 (see below). Therefore, it is safe to
say that any error caused by mapping the SEDZL grid to the LM3 grid is negligible.
Before we proceed, some clarification of the notation used below needs a brief explanation.
The array name FINE_SED_CONC stands for fine sediment concentration. The numbers in
pairs between parentheses represent a given cell of the Lake Michigan Mass Balance Project
(LMMBP) grid. The grid is a rectangular one which consists of 53 cells running in a west-east
direction and 102 cells running in a south-north direction.
1. Evaluate the cells that were set to zero in SEDZL but that are over water in LM3 as:
FINE_SED_CONC(39,73) = FINE_SED_CONC(40,74)
FINE_SED_CONC(39,74) = (FINE_SED_CONC(40,74) + FINE_SED_CONC(40,75)) / 2.0
FINE_SED_CONC(41,72) = (FINE_SED_CONC(41,73) + FINE_SED_CONC(42,73)) / 2.0
FINE_SED_CONC(48,87) = (FINE_SED_CONC(47,87) + FINE_SED_CONC(47,88)) / 2.0
FINE_SED_CONC(48,86) = (FINE_SED_CONC(47,86) + FINE_SED_CONC(47,87)) / 2.0
87
-------
FINE_SED_CONC(49,86)
FINE_SED_CONC(50,86)
FINE_SED_CONC(24,96)
(FINE_SED_CONC(47,86)
(FINE_SED_CONC(47,86)
(FINE_SED_CONC(24,95)
FINE_SED_CONC(47,87)) / 2.0
FINE_SED_CONC(47,87)) / 2.0
FINE_SED_CONC(23,95)) / 2.0
2. Zero out cells that are water cells in SEDZL but land cells in LM3.
FINE_SED_CONC(4,67) = 0.0
FINE_SED_CONC(4,68) = 0.0
FINE_SED_CONC(40,73) = 0.0
FINE_SED_CONC(41,74) = 0.0
FINE_SED_CONC(41,75) = 0.0
FINE_SED_CONC(41,76) = 0.0
FINE_SED_CONC(31,77) = 0.0
FINE_SED_CONC(33,79) = 0.0
FINE_SED_CONC(33,80) = 0.0
FINE_SED_CONC(12,81) = 0.0
FINE_SED_CONC(19,84) = 0.0
FINE_SED_CONC(19,85) = 0.0
FINE_SED_CONC(36,86) = 0.0
FINE_SED_CONC(40,90) = 0.0
FINE_SED_CONC(41,91) = 0.0
FINE_SED_CONC(41,92) = 0.0
FINE_SED_CONC(41,93) = 0.0
FINE_SED_CONC(40,93) = 0.0
FINE_SED_CONC(38,93) = 0.0
FINE_SED_CONC(43,94) = 0.0
FINE_SED_CONC(41,95) = 0.0
FINE_SED_CONC(23,92) = 0.0
FINE_SED_CONC(24,93) = 0.0
FINE_SED_CONC(19,93) = 0.0
FINE_SED_CONC(19,94) = 0.0
FINE_SED_CONC(49,94) = 0.0
3. Read in the ROC surficial sediment bed concentrations.
4. Assign a value to cells in LM3 that are over water but that are considered land cells in
SEDZL.
RESUSPENSION_FLUX(39,73)
RESUSPENSION_FLUX(39,74)
RESUSPENSION_FLUX(41,72)
RESUSPENSION_FLUX(48,87)
RESUSPENSION_FLUX(48,86)
RESUSPENSION_FLUX(49,86)
RESUSPENSION_FLUX(50,86)
RESUSPENSION_FLUX(24,96)
RESUSPENSION_FLUX(40,74)
(RESUSPENSION_FLUX(40,74)
RESUSPENSION_FLUX(40,75)) / 2.0
(RESUSPENSION_FLUX(41,73)
RESUSPENSION_FLUX(42,73)) / 2.0
(RESUSPENSION_FLUX(47,87)
RESUSPENSION_FLUX(47,88)) / 2.0
(RESUSPENSION_FLUX(47,86)
RESUSPENSION_FLUX(47,87)) / 2.0
(RESUSPENSION_FLUX(47,86)
RESUSPENSION_FLUX(47,87)) / 2.0
(RESUSPENSION_FLUX(47,86)
RESUSPENSION_FLUX(47,87)) / 2.0
(RESUSPENSION_FLUX(24,95)
RESUSPENSION_FLUX(23,95)) / 2.0
5. Zero out cells that are water cells in SEDZL but land cells in LM3.
RESUSPENSION_FLUX(4,67) = 0.0
RESUSPENSOIN_FLUX(4,68) = 0.0
88
-------
RESUSPENSION_FLUX(40,73) = 0.0
RESUSPENSOIN_FLUX(41,74) = 0.0
RESUSPENSION_FLUX(41,75) = 0.0
RESUSPENSOIN_FLUX(41,76) = 0.0
RESUSPENSION_FLUX(31,77) = 0.0
RESUSPENSOIN_FLUX(33,79) = 0.0
RESUSPENSION_FLUX(33,80) = 0.0
RESUSPENSOIN_FLUX(12,81) = 0.0
RESUSPENSION_FLUX(19,84) = 0.0
RESUSPENSOIN_FLUX(19,85) = 0.0
RESUSPENSION_FLUX(36,86) = 0.0
RESUSPENSOIN_FLUX(40,90) = 0.0
RESUSPENSION_FLUX(41,91) = 0.0
RESUSPENSOIN_FLUX(41,92) = 0.0
RESUSPENSION_FLUX(41,93) = 0.0
RESUSPENSOIN_FLUX(40,93) = 0.0
RESUSPENSION_FLUX(38,93) = 0.0
RESUSPENSOIN_FLUX(43,94) = 0.0
RESUSPENSION_FLUX(41,95) = 0.0
RESUSPENSOIN_FLUX(23,92) = 0.0
RESUSPENSION_FLUX(24,93) = 0.0
RESUSPENSOIN_FLUX(19,93) = 0.0
RESUSPENSION_FLUX(19,94) = 0.0
RESUSPENSOIN_FLUX(49,94) = 0.0
Once the mapping between the SEDZL and LM3 grids has been completed, one then proceeds
to calculate the resuspension velocities for each of the surficial sediment cells. The velocities
are determined by dividing the resuspension flux of a given surficial sediment cell by the largest
value among the fine-grained sediment and the ROC concentrations of that cell. Choosing the
largest value of these two sediment concentrations minimizes the chance of obtaining
unrealistically high resuspension velocities. This choice is to a large extent artificial but
necessary given the limitations of the current sediment construct. The algorithm used is
depicted in Figure 7.27.
7.3.4.2 Bulk Mixing Coefficients
No bulk mixing coefficients have been interpolated onto the 5 km grid for our current sediment
bed model as of this writing.
89
-------
IF {a given cell is over \valer)
IF resuspension flux > 0.0
THEN
"" ^ fine sediment -
resuspension velocity =
ELSE
END
resuspension \ elocity =
THEN
resuspension flux
~T
M'ilte sedimenl
resuspension flux
c
ROC
ELSE
END
resuspension velocity = 0.0
END
water
resuspension
velocity
ROC
sediment layers
Figure 7.27. Resuspension velocity calculation algorithm.
90
-------
CHAPTER 8
POLYCHLORINATED BIPHENYL KINETICS
Polychlorinated biphenyls (PCBs) are some of the toxic chemicals of interest to the Lake
Michigan Mass Balance Project (LMMBP). Their persistence in the environment, in both water
and sediments, coupled with the fact that they bioaccumulate in fish have been a major concern
for the public and the government. One of the main concerns of PCBs has been the possibility
of toxic effects on humans through the consumption of fish from Lake Michigan. Another major
concern has been the effect PCBs might have had on fish reproduction, in particular, that of
salmon and lake trout.
PCBs are a group of 209 organic chemicals that share certain chemical characteristics. Each of
these chemicals is referred to as a PCB "congener." Even though each one of the PCB
congeners has a specific chemical formula, the most common way to refer to each congener is
by a number, e.g., PCB 1, PCB 2, and so on. For the purpose of this document, we will refer to
each PCB congener by its number.
A total of 54 PCB congeners were modeled for the LMMBP. These accounted for
approximately 70% of the total PCB mass in Lake Michigan (Zhang, 2006). For modeling
purposes, 36 state variables were considered because some of the PCBs coeluted and could
not be separated into their respective individual congeners during sample analysis. When
referring to coeluting PCBs, we will be using the "+" sign together with their respective
numbers, e.g., PCB 28+31.
8.1 PCB Partitioning
PCBs are hydrophobic which means that when found in the water column or sediments, they
are more likely to be sorbed or bound to organic carbon particles. PCBs do occur in a purely
dissolved state but their tendency is to bind themselves to organic carbon. This partitioning
behavior between organic particles and water has some implications for the transport and fate
of PCBs in the water and sediments. Consequently, a reasonable description of partitioning is
very important.
PCBs are constantly redistributing themselves between a purely dissolved state and a
particulate state. Thus if the concentration of organic particles changes, then the partitioning of
PCBs will also change. For instance if the concentration of organic carbon increases, then the
PCBs will sorb even more to the carbon particles, increasing their particulate concentration
while at the same time reducing their purely dissolved state concentration.
91
-------
It is assumed that a PCB congener that is bound to particulate organic solids and dissolved
organic carbon (DOC) is always in equilibrium with its respective purely dissolved state. In
other words, we have the following equilibrium processes taking place:
P' ^^ P' -i- P'
wPCB-POCj ^ WPCB-DISS ^ wPOCj (8 1)
CPCB-DOC <-> CPCB_D|SS + CDOC
where:
CpCB_poc = concentration of PCB congener that is sorbed to the particulate organic carbon (POC)
jth state
C/PCB-DOC = concentration of PCB congener that is sorbed to DOC
C/PCB-DISS = concentration of purely dissolved PCB congener
CDOC = concentration of DOC
CROC = concentration of POC jth state
For the purpose of the discussion in this section, all concentrations depicted with the prime
superscript are calculated with respect to water volume like the ones shown above, while
concentrations depicted without a prime superscript (see further below in this section) are
calculated with respect to segment volume. The relationship between unprimed and primed
concentrations is as follows:
CDOC = CDOC Y
CPOCj = CPOCj - Y
CpCB-DISS = CpcB-DISS * Y ' ' '
CpCB-DOC = CpcB-DOC * Y ^ ' '
CpCB-POC; = CpcB-POC; * Y ^ ' '
volume of water in segment
Y = porosity =
volume of segment
f1 in the water column
= \ (88)
[between 0 and 1 in the sediment column
Note that for the water column, the porosity is one. This implies that the primed and unprimed
concentrations are the same. LM3 concentrations are calculated internally with respect to
segment volume for both water and sediment columns. The depiction of primed concentrations
in this section is for derivational purposes only.
92
-------
The phase concentrations of Equations 8.1 and 8.2 are governed by the equilibrium partition
coefficients Kpoc and KDoc, where the subscripts POCj and DOC are POC jth state and DOC,
respectively. These partition coefficients are defined as:
KPOCj
Knnr, = ^. C'p,c*-°oc (8.10)
The number of POC states in the water column for LM3 version 3.2.15 is five. These particulate
organic states are: diatoms, greens, labile organic carbon (LOG), refractor organic carbon
(ROC), and herbivorous zooplankton. The number of POC states in the sediment bed is only
one, which is represented by ROC. In theory one could argue that we have five POC partition
coefficients in the water column plus another one in the sediment bed. However, the
assumption in the model is that all the POC partition coefficients have exactly the same value,
and that this value remains the same regardless of where the partitioning takes place, that is, in
the water or sediment column. The DOC partition coefficient is also assumed to be the same in
both the water and sediment column. Thus we are left with only two partition coefficient values
for each of the PCB congeners: one POC partition coefficient value and one DOC partition
coefficient value.
The complete list of PCB congener partition coefficients and their corresponding input
parameter names are given in Table 8.1. This list only includes the PCB congener groups
modeled within the LM3 application.
The fractions of a PCB congener for the purely dissolved, POC-bound, and DOC-bound phases
are defined as:
f _ CPCB-DISS Y
'PCB-DISS - (0.11)
fpce_poc = CPCB-POCj (8 12)
p
f _ WPCB-DOC /|
'PCB-DOC - ^ v
93
-------
Table 8.1. PCB Congener Groups Partition Coefficients
Key Name
PART COEFF PCB 5+8 DOC
PART COEFF PCB 5+8 DIA
PART COEFF PCB 5+8 GRE
PART COEFF PCB 5+8 ZOO
PART COEFF PCB 5+8 LOG
PART COEFF PCB 5+8 ROC
PART COEFF PCB 15+17 DOC
PART COEFF PCB 15+17 DIA
PART COEFF PCB 15+17 GRE
PART COEFF PCB 15+17 ZOO
PART COEFF PCB 15+17 LOG
PART COEFF PCB 15+17 ROC
PART COEFF PCB 16+32 DOC
PART COEFF PCB 16+32 DIA
PART COEFF PCB 16+32 GRE
PART COEFF PCB 16+32 ZOO
PART COEFF PCB 16+32 LOG
PART COEFF PCB 16+32 ROC
PART COEFF PCB 18 DOC
PART COEFF PCB 18 DIA
PART COEFF PCB 18 GRE
PART COEFF PCB 18 ZOO
PART COEFF PCB 18 LOG
PART COEFF PCB 18 ROC
PART COEFF PCB 26 DOC
PART COEFF PCB 26 DIA
PART COEFF PCB 26 GRE
PART COEFF PCB 26 ZOO
PART COEFF PCB 26 LOG
PART COEFF PCB 26 ROC
PART COEFF PCB 28+31 DOC
PART COEFF PCB 28+31 DIA
PART COEFF PCB 28+31 GRE
PART COEFF PCB 28+31 ZOO
PART COEFF PCB 28+31 LOG
PART COEFF PCB 28+31 ROC
PART COEFF PCB 33 DOC
PART COEFF PCB 33 DIA
PART COEFF PCB 33 GRE
PART COEFF PCB 33 ZOO
PART COEFF PCB 33 LOG
PART COEFF PCB 33 ROC
PART COEFF PCB 37+42 DOC
PART COEFF PCB 37+42 DIA
PART COEFF PCB 37+42 GRE
PART COEFF PCB 37+42 ZOO
PART COEFF PCB 37+42 LOG
PART COEFF PCB 37+42 ROC
Description
log KDOC of PCB congener 5+8
log KDIA of PCB congener 5+8
log KGRE of PCB congener 5+8
log Kzoo of PCB congener 5+8
log KLOC of PCB congener 5+8
log KROC of PCB congener 5+8
log KDOC of PCB congener 15+17
log KDIA of PCB congener 15+17
log KGRE of PCB congener 15+17
log KZOO of PCB congener 15+17
log KLOC of PCB congener 15+17
log KROC of PCB congener 15+17
log KDOC of PCB congener 16+32
log KDIA of PCB congener 16+32
log KGRE of PCB congener 16+32
log Kzoo of PCB congener 16+32
log KLOC of PCB congener 16+32
log KROC of PCB congener 16+32
log KDOC of PCB congener 18
log KDIA of PCB congener 18
log KGRE of PCB congener 18
log Kzoo of PCB congener 18
log KLOC of PCB congener 18
log KROC of PCB congener 18
log KDOC of PCB congener 26
log KDIA of PCB congener 26
log KGRE of PCB congener 26
log Kzoo of PCB congener 26
log KLOC of PCB congener 26
log KROC of PCB congener 26
log KDOC of PCB congener 28+31
log KDIA of PCB congener 28+31
log KGRE of PCB congener 28+31
log Kzoo of PCB congener 28+31
log KLOC of PCB congener 28+31
log KROC of PCB congener 28+31
log KDOC of PCB congener 33
log KDIA of PCB congener 33
log KGRE of PCB congener 33
log Kzoo of PCB congener 33
log KLOC of PCB congener 33
log KROC of PCB congener 33
log KDOC of PCB congener 37+42
log KDIA of PCB congener 37+42
log KGRE of PCB congener 37+42
log Kzoo of PCB congener 37+42
log KLOC of PCB congener 37+42
log KROC of PCB congener 37+42
Value
(L (kg C) 1)
4.46
6.46
6.46
6.46
6.46
6.46
4.20
6.20
6.20
6.20
6.20
6.20
3.74
5.89
5.89
5.89
5.89
5.89
4.00
6.00
6.00
6.00
6.00
6.00
4.01
6.01
6.01
6.01
6.01
6.01
4.13
6.13
6.13
6.13
6.13
6.13
3.74
5.74
5.74
5.74
5.74
5.74
4.18
6.18
6.18
6.18
6.18
6.18
94
-------
Table 8.1. PCB Congener Groups Partition Coefficients (Continued)
Key Name
PART COEFF PCB 44 DOC
PART COEFF PCB 44 DIA
PART COEFF PCB 44 GRE
PART COEFF PCB 44 ZOO
PART COEFF PCB 44 LOG
PART COEFF PCB 44 ROC
PART COEFF PCB 49 DOC
PART COEFF PCB 49 DIA
PART COEFF PCB 49 GRE
PART COEFF PCB 49 ZOO
PART COEFF PCB 49 LOG
PART COEFF PCB 49 ROC
PART COEFF PCB 52 DOC
PART COEFF PCB 52 DIA
PART COEFF PCB 52 GRE
PART COEFF PCB 52 ZOO
PART COEFF PCB 52 LOG
PART COEFF PCB 52 ROC
PART COEFF PCB 56+60 DOC
PART COEFF PCB 56+60 DIA
PART COEFF PCB 56+60 GRE
PART COEFF PCB 56+60 ZOO
PART COEFF PCB 56+60 LOG
PART COEFF PCB 56+60 ROC
PART COEFF PCB 66 DOC
PART COEFF PCB 66 DIA
PART COEFF PCB 66 GRE
PART COEFF PCB 66 ZOO
PART COEFF PCB 66 LOG
PART COEFF PCB 66 ROC
PART COEFF PCB 70+76 DOC
PART COEFF PCB 70+76 DIA
PART COEFF PCB 70+76 GRE
PART COEFF PCB 70+76 ZOO
PART COEFF PCB 70+76 LOG
PART COEFF PCB 70+76 ROC
PART COEFF PCB 74 DOC
PART COEFF PCB 74 DIA
PART COEFF PCB 74 GRE
PART COEFF PCB 74 ZOO
PART COEFF PCB 74 LOG
PART COEFF PCB 74 ROC
PART COEFF PCB 77+110 DOC
PART COEFF PCB 77+110 DIA
PART COEFF PCB 77+110 GRE
PART COEFF PCB 77+110 ZOO
PART COEFF PCB 77+110 LOG
PART COEFF PCB 77+110 ROC
Description
log KDOC of PCB congener 44
log KDIA of PCB congener 44
log KGRE of PCB congener 44
log Kzoo of PCB congener 44
log KLOC of PCB congener 44
log KROC of PCB congener 44
log KDOC of PCB congener 49
log KDIA of PCB congener 49
log KGRE of PCB congener 49
log Kzoo of PCB congener 49
log KLOC of PCB congener 49
log KROC of PCB congener 49
log KDOC of PCB congener 52
log KDIA of PCB congener 52
log KGRE of PCB congener 52
log Kzoo of PCB congener 52
log KLOC of PCB congener 52
log KROC of PCB congener 52
log KDOC of PCB congener 56+60
log KDIA of PCB congener 56+60
log KGRE of PCB congener 56+60
log Kzoo of PCB congener 56+60
log KLOC of PCB congener 56+60
log KROC of PCB congener 56+60
log KDOC of PCB congener 66
log KDIA of PCB congener 66
log KGRE of PCB congener 66
log Kzoo of PCB congener 66
log KLOC of PCB congener 66
log KROC of PCB congener 66
log KDOC of PCB congener 70+76
log KDIA of PCB congener 70+76
log KGRE of PCB congener 70+76
log Kzoo of PCB congener 70+76
log KLOC of PCB congener 70+76
log KROC of PCB congener 70+76
log KDOC of PCB congener 74
log KDIA of PCB congener 74
log KGRE of PCB congener 74
log Kzoo of PCB congener 74
log KLOC of PCB congener 74
log KROC of PCB congener 74
log KDOC of PCB congener 77+1 10
log KDIA of PCB congener 77+1 10
log KGRE of PCB congener 77+110
log Kzoo of PCB congener 77+110
log KLOC of PCB congener 77+1 10
log KROC of PCB congener 77+1 10
Value
(L (kg C) 1)
4.04
6.04
6.04
6.04
6.04
6.04
4.28
6.28
6.28
6.28
6.28
6.28
4.16
6.16
6.16
6.16
6.16
6.16
4.59
6.59
6.59
6.59
6.59
6.59
4.70
6.70
6.70
6.70
6.70
6.70
4.49
6.49
6.49
6.49
6.49
6.49
4.54
6.54
6.54
6.54
6.54
6.54
4.58
6.58
6.58
6.58
6.58
6.58
95
-------
Table 8.1. PCB Congener Groups Partition Coefficients (Continued)
Key Name
PART COEFF PCB 81 DOC
PART COEFF PCB 81 DIA
PART COEFF PCB 81 GRE
PART COEFF PCB 81 ZOO
PART COEFF PCB 81 LOG
PART COEFF PCB 81 ROC
PART COEFF PCB 84+92 DOC
PART COEFF PCB 84+92 DIA
PART COEFF PCB 84+92 GRE
PART COEFF PCB 84+92 ZOO
PART COEFF PCB 84+92 LOG
PART COEFF PCB 84+92 ROC
PART COEFF PCB 85 DOC
PART COEFF PCB 85 DIA
PART COEFF PCB 85 GRE
PART COEFF PCB 85 ZOO
PART COEFF PCB 85 LOG
PART COEFF PCB 85 ROC
PART COEFF PCB 87 DOC
PART COEFF PCB 87 DIA
PART COEFF PCB 87 GRE
PART COEFF PCB 87 ZOO
PART COEFF PCB 87 LOG
PART COEFF PCB 87 ROC
PART COEFF PCB 89 DOC
PART COEFF PCB 89 DIA
PART COEFF PCB 89 GRE
PART COEFF PCB 89 ZOO
PART COEFF PCB 89 LOG
PART COEFF PCB 89 ROC
PART COEFF PCB 99 DOC
PART COEFF PCB 99 DIA
PART COEFF PCB 99 GRE
PART COEFF PCB 99 ZOO
PART COEFF PCB 99 LOG
PART COEFF PCB 99 ROC
PART COEFF PCB 101 DOC
PART COEFF PCB 101 DIA
PART COEFF PCB 101 GRE
PART COEFF PCB 101 ZOO
PART COEFF PCB 101 LOG
PART COEFF PCB 101 ROC
PART COEFF PCB 105+132+153 DOC
PART COEFF PCB 105+132+153 DIA
PART COEFF PCB 105+132+153 GRE
PART COEFF PCB 105+132+153 ZOO
PART COEFF PCB 105+132+153 LOG
PART COEFF PCB 105+132+153 ROC
Description
log KDOC of PCB congener 81
log KDIA of PCB congener 81
log KGRE of PCB congener 81
log Kzoo of PCB congener 81
log KLOC of PCB congener 81
log KROC of PCB congener 81
log KDOC of PCB congener 84+92
log KDIA of PCB congener 84+92
log KGRE of PCB congener 84+92
log Kzoo of PCB congener 84+92
log KLOC of PCB congener 84+92
log KROC of PCB congener 84+92
log KDOC of PCB congener 85
log KDIA of PCB congener 85
log KGRE of PCB congener 85
log Kzoo of PCB congener 85
log KLOC of PCB congener 85
log KROC of PCB congener 85
log KDOC of PCB congener 87
log KDIA of PCB congener 87
log KGRE of PCB congener 87
log Kzoo of PCB congener 87
log KLOC of PCB congener 87
log KROC of PCB congener 87
log KDOC of PCB congener 89
log KDIA of PCB congener 89
log KGRE of PCB congener 89
log KZOO of PCB congener 89
log KLOC of PCB congener 89
log KROC of PCB congener 89
log KDOC of PCB congener 99
log KDIA of PCB congener 99
log KGRE of PCB congener 99
log KZOO of PCB congener 99
log KLOC of PCB congener 99
log KROC of PCB congener 99
log KDOC of PCB congener 101
log KDIA of PCB congener 101
log KGRE of PCB congener 101
log Kzoo of PCB congener 101
log KLOC of PCB congener 101
log KROC of PCB congener 101
log KDOC of PCB congener 105+132+153
log KDIA of PCB congener 105+132+153
log KGRE of PCB congener 105+132+153
log Kzoo of PCB congener 105+132+153
log KLOC of PCB congener 105+132+153
log KROC of PCB congener 105+132+153
Value
(L (kg C) 1)
4.53
6.53
6.53
6.53
6.53
6.53
4.19
6.19
6.19
6.19
6.19
6.19
4.76
6.76
6.76
6.76
6.76
6.76
4.23
6.23
6.23
6.23
6.23
6.23
4.07
6.07
6.07
6.07
6.07
6.07
4.46
6.46
6.46
6.46
6.46
6.46
4.48
6.48
6.48
6.48
6.48
6.48
5.04
7.04
7.04
7.04
7.04
7.04
96
-------
Table 8.1. PCB Congener Groups Partition Coefficients (Continued)
Key Name
PART COEFF PCB 118 DOC
PART COEFF PCB 118 DIA
PART COEFF PCB 118 GRE
PART COEFF PCB 118 ZOO
PART COEFF PCB 118 LOG
PART COEFF PCB 118 ROC
PART COEFF PCB 123+149 DOC
PART COEFF PCB 123+149 DIA
PART COEFF PCB 123+149 GRE
PART COEFF PCB 123+149 ZOO
PART COEFF PCB 123+149 LOG
PART COEFF PCB 123+149 ROC
PART COEFF PCB 138+163 DOC
PART COEFF PCB 138+163 DIA
PART COEFF PCB 138+163 GRE
PART COEFF PCB 138+163 ZOO
PART COEFF PCB 138+163 LOG
PART COEFF PCB 138+163 ROC
PART COEFF PCB 146 DOC
PART COEFF PCB 146 DIA
PART COEFF PCB 146 GRE
PART COEFF PCB 146 ZOO
PART COEFF PCB 146 LOG
PART COEFF PCB 146 ROC
PART COEFF PCB 151 DOC
PART COEFF PCB 151 DIA
PART COEFF PCB 151 GRE
PART COEFF PCB 151 ZOO
PART COEFF PCB 151 LOG
PART COEFF PCB 151 ROC
PART COEFF PCB 170+190 DOC
PART COEFF PCB 170+190 DIA
PART COEFF PCB 170+190 GRE
PART COEFF PCB 170+190 ZOO
PART COEFF PCB 170+190 LOG
PART COEFF PCB 170+190 ROC
PART COEFF PCB 172+197 DOC
PART COEFF PCB 172+197 DIA
PART COEFF PCB 172+197 GRE
PART COEFF PCB 172+197 ZOO
PART COEFF PCB 172+197 LOG
PART COEFF PCB 172+197 ROC
PART COEFF PCB 180 DOC
PART COEFF PCB 180 DIA
PART COEFF PCB 180 GRE
PART COEFF PCB 180 ZOO
PART COEFF PCB 180 LOG
PART COEFF PCB 180 ROC
Description
log KDOC of PCB congener 1 1 8
log KDIA of PCB congener 1 1 8
log KGRE of PCB congener 118
log Kzoo of PCB congener 118
log KLOC of PCB congener 1 1 8
log KROC of PCB congener 118
log KDOC of PCB congener 123+149
log KDIA of PCB congener 123+149
log KGRE of PCB congener 123+149
log Kzoo of PCB congener 123+149
log KLOC of PCB congener 123+149
log KROC of PCB congener 123+149
log KDOC of PCB congener 138+163
log KDIA of PCB congener 138+163
log KGRE of PCB congener 138+163
log Kzoo of PCB congener 138+163
log KLOC of PCB congener 138+163
log KROC of PCB congener 138+163
log KDOC of PCB congener 146
log KDIA of PCB congener 146
log KGRE of PCB congener 146
log Kzoo of PCB congener 146
log KLOC of PCB congener 146
log KROC of PCB congener 146
log KDOC of PCB congener 151
log KDIA of PCB congener 151
log KGRE of PCB congener 151
log KZOO of PCB congener 151
log KLOC of PCB congener 151
log KROC of PCB congener 151
log KDOC of PCB congener 170+190
log KDIA of PCB congener 170+190
log KGRE of PCB congener 170+190
log Kzoo of PCB congener 170+190
log KLOC of PCB congener 170+190
log KROC of PCB congener 170+190
log KDOC of PCB congener 172+197
log KDIA of PCB congener 172+197
log KGRE of PCB congener 172+197
log Kzoo of PCB congener 172+197
log KLOC of PCB congener 172+197
log KROC of PCB congener 172+197
log KDOC of PCB congener 180
log KDIA of PCB congener 180
log KGRE of PCB congener 180
log Kzoo of PCB congener 180
log KLOC of PCB congener 180
log KROC of PCB congener 180
Value
(L (kg C) 1)
4.65
6.65
6.65
6.65
6.65
6.65
4.73
6.73
6.73
6.73
6.73
6.73
4.68
6.68
6.68
6.68
6.68
6.68
4.86
6.86
6.86
6.86
6.86
6.86
4.75
6.75
6.75
6.75
6.75
6.75
5.22
7.22
7.22
7.22
7.22
7.22
5.09
7.09
7.09
7.09
7.09
7.09
5.05
7.05
7.05
7.05
7.05
7.05
97
-------
Table 8.1. PCB Congener Groups Partition Coefficients (Continued)
Key Name
Description
Value
(L (kg C)
PART_COEFF_PCB_182+187_DOC
PART_COEFF_PCB_182+187_DIA
PART_COEFF_PCB_182+187_GRE
PART_COEFF_PCB_182+187_ZOO
PART_COEFF_PCB_182+187_LOC
PART_COEFF_PCB_182+187_ROC
PART_COEFF_PCB_195+208_DOC
PART_COEFF_PCB_195+208_DIA
PART_COEFF_PCB_195+208_GRE
PART_COEFF_PCB_195+208_ZOO
PART_COEFF_PCB_195+208_LOC
PART_COEFF_PCB_195+208_ROC
PART_COEFF_PCB_196+203_DOC
PART_COEFF_PCB_196+203_DIA
PART_COEFF_PCB_196+203_GRE
PART_COEFF_PCB_196+203_ZOO
PART_COEFF_PCB_196+203_LOC
PART_COEFF_PCB_196+203_ROC
PART_COEFF_PCB_201_DOC
PART_COEFF_PCB_201_DIA
PART_COEFF_PCB_201_GRE
PART_COEFF_PCB_201_ZOO
PART_COEFF_PCB_201_LOC
PART COEFF PCB 201 ROC
log KDOC of PCB congener 182+187
log KDIA of PCB congener 182+187
log KGRE of PCB congener 182+187
log Kzoo of PCB congener 182+187
log KLOC of PCB congener 182+187
log KROC of PCB congener 182+187
log KDOC of PCB congener 195+208
log KDIA of PCB congener 195+208
log KGRE of PCB congener 195+208
log Kzoo of PCB congener 195+208
log KLOC of PCB congener 195+208
log KROC of PCB congener 195+208
log KDOC of PCB congener 196+203
log KDIA of PCB congener 196+203
log KGRE of PCB congener 196+203
log Kzoo of PCB congener 196+203
log KLOC of PCB congener 196+203
log KROC of PCB congener 196+203
log KDOC of PCB congener 201
log KDIA of PCB congener 201
log KGRE of PCB congener 201
log Kzoo of PCB congener 201
log KLOC of PCB congener 201
log KROC of PCB congener 201
4.58
6.58
6.58
6.58
6.58
6.58
4.84
6.84
6.84
6.84
6.84
6.84
5.08
7.08
7.08
7.08
7.08
7.08
4.65
6.65
6.65
6.65
6.65
6.65
where:
fpcB-oiss = fraction of PCB congener in purely dissolved phase
fpcB-poc = fraction of PCB congener bound to POC jth state
fpcB-ooc = fraction of PCB congener bound to DOC
CT = PCB congener total concentration
The PCB congener total concentration is given by the expression:
CT = CPCB-DISS Y + CPCB-DOC + / ,
j
or equivalently as,
CT = CPCB-DISS + CPCB-DOC + / A
(8.14)
(8.15)
98
-------
The use of Equation 8.14 is for derivational purposes only. In practice, it is very difficult to
measure the concentration of purely dissolved PCBs with respect to segment volume,
particularly in the sediment bed. Typically the measurement is done with respect to the water
volume of the sample collected, if done at all. For the LMMBP, no pore water analysis was
carried out for any of the sediment bed samples, which makes Equation 8.14 particularly useful
for the present discussion.
Using Equations 8.3, 8.4, 8.5, 8.6, 8.7, 8.9, and 8.10 we can rewrite Equation 8.14 as:
CT = ^PCS-PISS / ' 1XDOCWDOC ' /_, ' xPOCi^POC; (816)
We can now get a more explicit expression for the fractions of purely dissolved, POC-bound,
and DOC-bound PCB congeners in terms of partition coefficients, DOC concentration, and POC
concentration. We do this by substituting Equation 8.16 into Equations 8.11, 8.12, and 8.13 to
get the following expressions:
fpcB-Diss = . Tvv (8-17)
Y + "^DOC^DOC + / "S
/ ;K
(8.18)
TpCB-DOC
(8.19)
j
The Equations 8.17, 8.18, and 8.19 are now used to calculate the PCB congener state
concentrations
C - f C (8-2°)
UPCB-DISS ~ 'PCB-DISSUT
c -f r (8-21)
°PCB-POCj ~~ 'PCB-POCjWT
C -f C (8'22)
WPCB-DOC ~ 'PCB-DOCWT
The PCB congener total concentration is then recalculated using Equation 8.15. This seems, at
first glance, like a circular calculation because Equations 8.20, 8.21, and 8.22 need the value of
the total concentration. However, this is not the case because the PCB congener total
concentration is specified as an initial condition value at the beginning of a LM3 simulation. In
other words, CT is specified the very first time in the simulation, say at time = 0, and then the
99
-------
respective PCB congener phase concentrations are calculated using Equations 8.20, 8.21, and
8.22. It must be emphasized that initial PCB congener total concentrations are obtained from
field data measurements; thus each congener CT is known to the modeler at time = 0.
Thereafter, CT is always calculated using Equation 8.15 for every time step. It is important to
emphasize that the PCB congener phase concentrations are modeled as separate state
variables in the program which means that the transport routine gets applied to each one of the
phases as independent entities. The fractions of each PCB congener phase together with their
respective phase concentrations are then recalculated on every time step.
The complete partitioning algorithm used within LM3 can be outlined as follows:
1. Determine whether the partitioning is being done in the water or sediment column. This will
set the number of PCB phases and the value of the segment porosity in the algorithm.
2. Determine whether this is the first time calling the algorithm subroutine or not. If so, then
use the initial input total concentration value of the PCB congener being modeled; otherwise
calculate CT using Equation 8.15.
3. Calculate the denominator of Equations 8.17, 8.18, and 8.19 using the values of the partition
coefficients and the carbon state concentrations. Note that this is the same denominator;
the calculation needs to be done only once and then stored.
4. Calculate the PCB congener phase fractions using Equations 8.17, 8.18, and 8.19.
5. Calculate the PCB congener phase concentrations using Equations 8.20, 8.21, and 8.22.
8.2 PCB Volatilization
Volatilization is the gradient-driven movement of a chemical across the air-water interface. In
other words, it is the process by which a chemical goes from a gas-phase (in the air) into a
dissolved phase (in the water) and vice-versa with the direction of movement determined by the
gradient between air and water concentrations. Volatilization is a mass transfer process for
PCBs. This means that volatilization can either be a loss or a gain mechanism of PCBs for
Lake Michigan. Note that volatilization affects only the PCB congeners in their purely dissolved
phases in the water column and not their DOC and POC sorbed phases.
The purely dissolved PCB congener attempts to equilibrate with the gas-phase partial pressure.
The equation that governs this volatilization process is:
_
at DPCB-DISS H/RT (8'23)
where:
CPCB-DISS = purely dissolved PCB congener water concentration (kg m"3)
CPCB-AIR = PCB congener air concentration (kg m"3)
t = time (s)
kv = conductivity of PCB through water (rate constant) (m s"1)
100
-------
u ,-. H(T)
Hn (T) = v ; =
°V/ DT
D = depth of surficial water segment (m)
H = Henry's law constant (kJ mol"1)
R = ideal gas constant = 8.315 10"3 kJ mol"1 °K"1
T = water temperature (°K)
Henry's law constant generally increases with increasing vapor pressure and decreases with
increasing solubility of a compound. A unique numerical value of Henry's law constant is
assigned to each PCB congener based on its individual chemical properties. The Henry's law
constant formula used for PCBs in LM3 is the following:
(8.24)
where:
H0(T) = dimensionless Henry's law constant
T = interfacial temperature (°K)
R = ideal gas constant = 8.315 10"3 kJ mol"1 °K"1
AHH = enthalpy of phase change (kJ mol"1)
ASH = entropy of phase change (kJ mol"1 °K"1)
This equation was obtained from Bamford et al., 2002. Each PCB congener group has its own
enthalpy and entropy value. The complete list of PCB congener enthalpy and entropy values,
together with their corresponding input parameter names, is given in Tables 8.2 and 8.3,
respectively.
The conductivity (overall mass transfer) kv is the reciprocal of the total resistance and is given
by the following formula:
KL KG x H0(T)
where:
RL = liquid-phase resistance (s m"1)
RG = gas-phase resistance (s m"1)
KL = liquid-phase transfer coefficient (m s"1)
KG = gas-phase transfer coefficient (m s"1)
Equation 8.25 is derived using a two-layer resistance model; however, the details are not
included in this document. A more in-depth description of this formula can be found in the
historical reference of Whitman (1923).
101
-------
Table 8.2. PCB Congener Groups Enthalpy Values
Key Name
ENTHALPY PCB 5+8
ENTHALPY PCB 15+17
ENTHALPY PCB 16+32
ENTHALPY PCB 18
ENTHALPY PCB 26
ENTHALPY PCB 28+31
ENTHALPY PCB 33
ENTHALPY PCB 37+42
ENTHALPY PCB 44
ENTHALPY PCB 49
ENTHALPY PCB 52
ENTHALPY PCB 56+60
ENTHALPY PCB 66
ENTHALPY PCB 70+76
ENTHALPY PCB 74
ENTHALPY PCB 77+110
ENTHALPY PCB 81
ENTHALPY PCB 84+92
ENTHALPY PCB 85
ENTHALPY PCB 87
ENTHALPY PCB 89
ENTHALPY PCB 99
ENTHALPY PCB 101
ENTHALPY PCB 105+132+153
ENTHALPY PCB 118
ENTHALPY PCB 123+149
ENTHALPY PCB 138+163
ENTHALPY PCB 146
ENTHALPY PCB 151
ENTHALPY PCB 170+190
ENTHALPY PCB 172+197
ENTHALPY PCB 180
ENTHALPY PCB 182+187
ENTHALPY PCB 195+208
ENTHALPY PCB 196+203
ENTHALPY PCB 201
Description
Enthalpy of PCB congener 5+8
Enthalpy of PCB congener 15+17
Enthalpy of PCB congener 16+32
Enthalpy of PCB congener 18
Enthalpy of PCB congener 26
Enthalpy of PCB congener 28+31
Enthalpy of PCB congener 33
Enthalpy of PCB congener 37+42
Enthalpy of PCB congener 44
Enthalpy of PCB congener 49
Enthalpy of PCB congener 52
Enthalpy of PCB congener 56+60
Enthalpy of PCB congener 66
Enthalpy of PCB congener 70+76
Enthalpy of PCB congener 74
Enthalpy of PCB congener 77+1 10
Enthalpy of PCB congener 81
Enthalpy of PCB congener 84+92
Enthalpy of PCB congener 85
Enthalpy of PCB congener 87
Enthalpy of PCB congener 89
Enthalpy of PCB congener 99
Enthalpy of PCB congener 101
Enthalpy of PCB congener 105+132+153
Enthalpy of PCB congener 118
Enthalpy of PCB congener 123+149
Enthalpy of PCB congener 138+163
Enthalpy of PCB congener 146
Enthalpy of PCB congener 151
Enthalpy of PCB congener 170+190
Enthalpy of PCB congener 172+197
Enthalpy of PCB congener 180
Enthalpy of PCB congener 182+187
Enthalpy of PCB congener 195+208
Enthalpy of PCB congener 196+203
Enthalpy of PCB congener 201
Units
(kJ mol 1)
46
47
45
35
41
37
42
40
26
25
31
30
29
29
25
39
33
21
26
33
21
16
30
68
50
51
84
59
37
157
147
144
97
156
167
145
102
-------
Table 8.3. PCB Congener Groups Entropy Values
Key Name
ENTROPY PCB 5+8
ENTROPY PCB 15+17
ENTROPY PCB 16+32
ENTROPY PCB 18
ENTROPY PCB 26
ENTROPY PCB 28+31
ENTROPY PCB 33
ENTROPY PCB 37+42
ENTROPY PCB 44
ENTROPY PCB 49
ENTROPY PCB 52
ENTROPY PCB 56+60
ENTROPY PCB 66
ENTROPY PCB 70+76
ENTROPY PCB 74
ENTROPY PCB 77+110
ENTROPY PCB 81
ENTROPY PCB 84+92
ENTROPY PCB 85
ENTROPY PCB 87
ENTROPY PCB 89
ENTROPY PCB 99
ENTROPY PCB 101
ENTROPY PCB 105+132+153
ENTROPY PCB 118
ENTROPY PCB 123+149
ENTROPY PCB 138+163
ENTROPY PCB 146
ENTROPY PCB 151
ENTROPY PCB 170+190
ENTROPY PCB 172+197
ENTROPY PCB 180
ENTROPY PCB 182+187
ENTROPY PCB 195+208
ENTROPY PCB 196+203
ENTROPY PCB 201
Description
Entropy of PCB congener 5+8
Entropy of PCB congener 15+17
Entropy of PCB congener 16+32
Entropy of PCB congener 18
Entropy of PCB congener 26
Entropy of PCB congener 28+31
Entropy of PCB congener 33
Entropy of PCB congener 37+42
Entropy of PCB congener 44
Entropy of PCB congener 49
Entropy of PCB congener 52
Entropy of PCB congener 56+60
Entropy of PCB congener 66
Entropy of PCB congener 70+76
Entropy of PCB congener 74
Entropy of PCB congener 77+1 10
Entropy of PCB congener 81
Entropy of PCB congener 84+92
Entropy of PCB congener 85
Entropy of PCB congener 87
Entropy of PCB congener 89
Entropy of PCB congener 99
Entropy of PCB congener 101
Entropy of PCB congener 105+132+153
Entropy of PCB congener 118
Entropy of PCB congener 123+149
Entropy of PCB congener 138+163
Entropy of PCB congener 146
Entropy of PCB congener 151
Entropy of PCB congener 170+190
Entropy of PCB congener 172+197
Entropy of PCB congener 180
Entropy of PCB congener 182+187
Entropy of PCB congener 195+208
Entropy of PCB congener 196+203
Entropy of PCB congener 201
Units
(kJ mol 1 °K1)
0.12
0.12
0.11
0.08
0.10
0.09
0.11
0.10
0.05
0.05
0.07
0.07
0.06
0.06
0.05
0.09
0.07
0.04
0.05
0.07
0.04
0.02
0.07
0.19
0.13
0.14
0.25
0.17
0.10
0.49
0.46
0.45
0.30
0.40
0.52
0.46
103
-------
There are two formulations that are used for KL and KG; that is, the liquid-phase mass transfer
rate and the gas-phase mass transfer rate, respectively. The formulations used in the
application LM3 were recommended by the LMMBP Atmospheric Workgroup. The liquid-phase
transfer coefficient, KL, is calculated using the Wanninkhof (Wanninkhof, 1992) formulation. The
gas-phase transfer coefficient, KG, is calculated using the Schwarzenbach (Schwarzenbach et
al., 1993) formulation.
The Wanninkhof equation for KL, with correction for PCB congener molecular diffusivity in
reference to carbon dioxide (CO2) molecular diffusivity across the air-water interface, is given by
the following formula:
K, = 0.45 . / water'Pcb . Uj064 . - - - =- (8.26)
JDwater,co2 1° 3.6.105
The Schwarzenbach equation for KG, with correction of PCB congener molecular diffusivity in
reference to water vapor molecular diffusivity across the air-water interface, is given by the
following formula:
KG=(0.2U10+0.3) ^E£^ .1Q-2 (8.27)
Y air,water )
where:
Uio = wind speed measured at 10 m above water surface (m s"1)
Dwater.pcb = diffusivity of PCB congener in water (m2 s"1)
Dwater,co2 = diffusivity of carbon dioxide in water (m2 s"1)
= diffusivity of PCB congener in air (m2 s"1)
= diffusivity of water in air (m2 s"1)
The number, 3.6 10s, that appears in the denominator of Equation 8.26 is actually a unit
conversion factor that converts the units of KL from cm h"1 to m s"1. The factor of 10"2 that
appears in the equation of KG, Equation 8.27, converts the units from cm s"1 to m s"1. KG, is
being multiplied by H0(T) in Equation 8.25 to scale the gas-phase transfer coefficient by the air-
water partition coefficient. Note that KL and KG are both temperature- and PCB congener-
dependent. That is because the diffusivities are temperature dependent, and the PCB
diffusivities are congener-specific. The wind speed Uio is segment-specific which means that
for each of the 2,318 surficial water column segments, a unique value is assigned.
The formulas used in LM3 for the diffusivities are:
Dwater,co2 =6.053.10-8.10-4. I (8.28)
Dair,water=4.829.10-5.10-4.T15 (8.29)
104
-------
= 2-2 (8.30)
water.pcb
°
air'pcb (MWPCB)2/3
where:
T = water temperature (°K)
r| = kinematic viscosity of water
B = molecular weight of a given PCB congener
The molecular weight of a PCB congener is the weight in grams of one mole of PCB congener
molecules. One mole of a particle is equal to the Avogadro's number of the particles, that is,
6.022 1023 particles. The units of molecular weight are g mol"1. A list of molecular weights of
the PCB congeners modeled within LM3 and their corresponding input variable names is given
in Table 8.4.
The kinematic viscosity of water is given by:
_ v
T[=~P^ (8-32)
where:
v = dynamic viscosity of water (g cm"1 s"1)
pw = density of water = 1.0 g cm"3
Note that we are keeping the density of water, pw, constant even though it varies with
temperature. However, the variation with respect to temperature is less than one percent of the
value of 1.0 g cm"3; consequently the numerical error incurred when calculating the kinematic
viscosity of water, Equation 8.32, is very small. The dynamic viscosity of water is given by the
following equation:
-3.30233 T < 20°C
^998.333 + 8.1 855(T - 20) + 0.00585(T - 20.0)'
Iog10v =
1.3272(20.0 -T)-0.001 053(T - 20.0)M ^^ T > 20°C
where
T = water temperature (°C)
T + 105
/
(8.33)
105
-------
Table 8.4. PCB Congener Groups Molecular Weight
Key Name
MOLWT PCB 5+8
MOLWT PCB 15+17
MOLWT PCB 16+32
MOLWT PCB 18
MOLWT PCB 26
MOLWT PCB 28+31
MOLWT PCB 33
MOLWT PCB 37+42
MOLWT PCB 44
MOLWT PCB 49
MOLWT PCB 52
MOLWT PCB 56+60
MOLWT PCB 66
MOLWT PCB 70+76
MOLWT PCB 74
MOLWT PCB 77+110
MOLWT PCB 81
MOLWT PCB 84+92
MOLWT PCB 85
MOLWT PCB 87
MOLWT PCB 89
MOLWT PCB 99
MOLWT PCB 101
MOLWT PCB 105+132+153
MOLWT PCB 118
MOLWT PCB 123+149
MOLWT PCB 151
MOLWT PCB 138+163
MOLWT PCB 146
MOLWT PCB 170+190
MOLWT PCB 172+197
MOLWT PCB 180
MOLWT PCB 182+187
MOLWT PCB 195+208
MOLWT PCB 196+203
MOLWT PCB 201
Description
Molecular weight of PCB congener 5+8
Molecular weight of PCB congener 15+17
Molecular weight of PCB congener 16+32
Molecular weight of PCB congener 18
Molecular weight of PCB congener 26
Molecular weight of PCB congener 28+31
Molecular weight of PCB congener 33
Molecular weight of PCB congener 37+42
Molecular weight of PCB congener 44
Molecular weight of PCB congener 49
Molecular weight of PCB congener 52
Molecular weight of PCB congener 56+60
Molecular weight of PCB congener 66
Molecular weight of PCB congener 70+76
Molecular weight of PCB congener 74
Molecular weight of PCB congener 77+1 10
Molecular weight of PCB congener 81
Molecular weight of PCB congener 84+92
Molecular weight of PCB congener 85
Molecular weight of PCB congener 87
Molecular weight of PCB congener 89
Molecular weight of PCB congener 99
Molecular weight of PCB congener 101
Molecular weight of PCB congener 105+132+153
Molecular weight of PCB congener 118
Molecular weight of PCB congener 123+149
Molecular weight of PCB congener 151
Molecular weight of PCB congener 138+163
Molecular weight of PCB congener 146
Molecular weight of PCB congener 170+190
Molecular weight of PCB congener 172+197
Molecular weight of PCB congener 180
Molecular weight of PCB congener 182+187
Molecular weight of PCB congener 195+208
Molecular weight of PCB congener 196+203
Molecular weight of PCB congener 201
Molecular
Weight
(g mor1)
228.89
240.47
252.30
243.32
255.30
260.54
265.78
274.50
278.87
282.97
285.43
290.35
296.92
302.66
303.48
318.44
309.22
314.46
312.22
313.71
315.21
322.70
324.20
346.65
336.93
351.19
363.36
362.95
359.25
393.91
403.24
393.91
400.37
449.89
431.23
435.54
106
-------
The dynamic viscosity of water, v, is expressed in centipoise, which is equal to 100 poises with
one poise being equal to 1.0 g cm"1 s"1. This means that when calculating the dynamic
viscosity of water by applying log"110 to both sides of Equation 8.33, one has to multiply by 100
to get the right magnitude of v. We can see from Equation 8.33 that the dynamic viscosity of
water has two formulas depending on whether the water temperature is above or below 20°C.
These formulas were taken from Weast (1989) and the website http://scienceworld.wolfram.
com/physics/ DynamicViscosity.html.
Now that we have specified all the volatilization-related equations, we then proceed to outline
the general algorithm used within LM3 to calculate PCB volatilization. The steps of the
algorithm are:
1. Calculate the dimensionless Henry's constant H0(T) using Equation 8.24.
2. Calculate the dynamic viscosity of water using Equation 8.33.
3. Calculate the kinematic viscosity of water using Equation 8.32.
4 Calculate the diffusivity of CO2 in water using Equation 8.28.
5. Calculate the diffusivity of a given PCB congener in water using Equation 8.30.
6. Calculate the liquid-phase transfer coefficient using Equation 8.26.
7. Calculate the diffusivity of water vapor in air using Equation 8.29.
8. Calculate the diffusivity of a given PCB congener in air using Equation 8.31.
9. Calculate the gas-phase transfer coefficient using Equation 8.27.
10. Calculate the overall mass transfer, kv, using Equation 8.25.
11. Divide kv by the segment depth D.
12. Calculate net volatilization rate per unit of water volume using Equation 8.23.
13. To obtain the mass derivative term in units of kg s"1, multiply the value obtained from
Equation 8.23 by the volume of the surficial water segment in question.
107
-------
CHAPTER 9
ATRAZINE KINETICS
Atrazine is a herbicide widely used in the United States to control broadleaf and grassy weeds.
This pesticide is a white crystalline, solid organic compound that is available in many forms as a
dry flowable, flowable liquid, water dispersible granular liquid, and a wettable powder. Atrazine
is a member of the triazine class of herbicides; its chemical formula is C8H14CIN5. The atrazine
structural formula is shown in Figure 9.1.
N-, MCH,CH
Figure 9.1. Structural formula for atrazine.
Atrazine is mainly applied to corn crops, but it is also used on sorghum, sugarcane, pineapple,
Christmas tree farms, and other crops. Atrazine is used extensively on corn crops grown in the
upper Midwest region of the United States, which includes Lake Michigan and its watershed.
Atrazine is primarily applied directly to the soil during pre-planting or pre-emergence. It is also
applied post-emergence by foliar application directly to target plants.
Atrazine is carried by water into the soil and other water bodies. Its relatively low adsorption
and solubility in water makes the chemical highly mobile and susceptible to transport during
runoff. Intense rain events can create large runoff loadings of atrazine into streams, rivers, and
eventually lakes. Lake Michigan is one of such lakes that can receive large loadings of atrazine
during heavy rain events.
108
-------
Atrazine is moderately susceptible to aerobic degradation in soils, with a half-life of 60-150 days
(Ribaudo and Bouzaher, 1994). Under anaerobic conditions, this degradation rate slows
dramatically to a half-life of 660 days. Chemical hydrolysis, followed by degradation by soil
microorganisms probably account for the most of the breakdown of atrazine in soil.
Atrazine is moderately soluble in water. It decays in water, with half-lives ranging from several
days, as reported in studies on wetland systems and artificial streams, to over 300 days in
larger lake systems (U.S. Environmental Protection Agency, 2001). The decay of atrazine in
water occurs as a result of various processes such as chemical hydrolysis, biodegradation, and
photolysis. Hydrolysis is rapid under acidic or basic conditions, but is slower at neutral pHs.
Addition of humic material increases the rate of hydrolysis. Atrazine biodegradation can occur
by different pathways (Zeng et a/., 2004; Wackett et a/., 2002; Ralebitso et a/., 2002).
Biodegradation is mediated by microorganisms, usually by some kind of bacteria. Photolysis
does not appear to be a major loss mechanism in water because atrazine lacks absorption of
light in the ultraviolet and visible region of the light spectrum. However, degradation of atrazine
in water has been noticed when exposed to natural or artificial light. This has led researchers to
believe that an indirect mechanism for photodegradation might be occurring. One such
mechanism is the chemical reaction of nitrate with water and light. Nitrate is known to produce
hydroxyl radical on illumination (Zepp et al., 1987). Hydroxyl radicals are known to be highly
reactive with most organic compounds, including atrazine (Zepp et al., 1987; Pratap and
Lemley, 1998; Balmer and Sulzberger, 1999; Acero et al., 2000; Tauber and von Sonntag,
2000).
Atrazine does not strongly attach to particles. Thus partitioning of atrazine to particles is not
considered an important process; consequently, settling of particles in the water column has no
significant effect on atrazine concentration levels in an aquatic system such as Lake Michigan.
Atrazine does not bioaccumulate, but it has been shown to be toxic to aquatic animals such as
frogs (Hayes et al., 2003). Atrazine volatilizes but not in significant amounts due to its relatively
small Henry's law constant (see Section 9.2.1). See Rygwelski (2008) for a complete report of
atrazine modeling results of the Lake Michigan Mass Balance Project (LMMBP).
In the sections that follow, a description of the atrazine kinetics modeled within LM3 is given.
Section 9.1 discusses the approach used to model the decay of atrazine in the water column.
Section 9.2 discusses the volatilization formulation used for atrazine. A discussion of the
Henry's law constant used for atrazine is given in Section 9.2.1. This is followed by Sections
9.2.2 and 9.2.3, which discuss the O'Connor and Wanninkhof/Schwarzenbach volatilization
scheme.
9.1 Atrazine Lumped First-Order Decay
As previously indicated, atrazine has been found to chemically break down in water under
certain conditions. Laboratory experiments have been performed to test atrazine stability in
water under various physical conditions such as light exposure and water temperature
(Burkhard and Guth, 1976; Schabacker, 1991; Konstantinou et al., 2001; Rebelo et al., 2007).
Additionally, biological conditions have been studied such as the effect of bacteria and other
microorganisms on the decay of atrazine. However, it is very difficult to relate laboratory studies
of atrazine decay to actual conditions in aquatic systems such as Lake Michigan. This is
because laboratory experiments are conducted under artificial conditions that do not capture the
full complexity of the biology, chemistry, and physics present in aquatic systems. To that effect,
109
-------
it was decided to use a lumped first-order decay term to account for atrazine's decay in the
water column of Lake Michigan (Rygwelski, 2008). It must be emphasized that LM3 does not
simulate the decay products of atrazine nor does it keep track of them. The Large Lakes
Research Station (LLRS) has not contemplated simulating atrazine decay's breakdown products
as of this writing.
This lumped first-order decay term encompasses all the known and unknown biological
chemical, and physical processes that contribute to the break down of atrazine in the water
column. This approach conveniently handles our lack of knowledge of the precise nature of
decay of atrazine in the water. This lumped first-order decay term is represented in LM3 as an
input parameter. Thus the user has the option to adjust the parameter within observed ranges
of decay.
A simple first-order decay process (ignoring transport and other kinetic processes) is described
below:
C(t0+At)«C(t0)
(9.1)
t=t0
where:
dt t t
t=t0
dC
dt
and
= -kAC(t0) 0.2)
t=tn
C(t) = atrazine concentration at time t
kA = atrazine decay rate (s~1) = DECAY_RATE_ATRAZINE in Table 9.1
t0 = arbitrary initial time
At = time step
The user has to specify the decay rate, kA, as an input value; otherwise, LM3 will use the default
value shown in Table 9.1. This input value could be adjusted if desired; however, this was not
done for LM3-Atrazine because the decay was previously estimated. This first-order decay
process can be viewed as a loss mechanism for atrazine because it is essentially reducing the
amount of the pesticide in the water column.
Table 9.1. Atrazine Parameters
.... ^ . t. Default ,, .,
Key Name Description .. . Units
DECAY_RATE_ATRAZINE Lumped first-order decay rate of atrazine 0.0 s"1
MOLTW_ATZ Molecular weight of atrazine 215.69 g mol"1
110
-------
9.2 Atrazine Volatilization
Atrazine undergoes volatilization in Lake Michigan although to a lesser degree than other
chemicals such as polychlorinated biphenyls (PCBs). Atrazine tends to remain in the dissolved
phase in the water column with just a small amount of the chemical volatilizing out of the water
and into the atmosphere.
The equation that governs the volatilization process of atrazine is:
^ATZ-WATER _ _ ]S/_ f p _ ^ATZ-AIR | ,Q ox
at ~ DrATZ-WATER H/RT J (9'3)
where:
CATZ-WATER = atrazine water concentration (kg m"3)
CATZ-AIR = atrazine air concentration (kg m"3)
t = time (s)
kv = conductivity of atrazine through water (rate constant) (m s"1)
D = depth of surficial water segment (m)
H = Henry's law constant (kJ mol"1)
R = ideal gas constant = 8.315 10"3 kJ mol"1 °K"1
T = water temperature (°K)
The conductivity of atrazine through water, kv, has the same mathematical expression as the
PCBs (see Equation 8.25):
. 1
v - ~\ i
J_ + \ (9.4)
KK KG x H(T) / RT
where:
KL = liquid-phase transfer coefficient (m s"1)
KG = gas-phase transfer coefficient (m s"1)
The formula used for Henry's law constant is discussed in the section that follows, Section 9.2.1.
There are two formulations that are used for KL and KG; that is, the liquid-phase mass transfer
rate and the gas-phase mass transfer rate, respectively. These were incorporated in LM3. The
formulations are known as the O'Connor formulation which is discussed in Section 9.2.2, and
the Wanninkhof and Schwarzenbach formulation, which is discussed in Section 9.2.3. Only one
formulation is used for a given simulation; it is up to the user to decide which formulation to use.
There is no strong argument to favor one formulation over the other because, for atrazine,
volatilization is not a significant loss/gain process in Lake Michigan.
9.2.1 Henry's Law Constant
The algorithm to calculate the temperature-dependent Henry's law coefficient of atrazine was
derived from Scholtz etal. (1999) and Miller (1999). The form of the equation is the following:
111
-------
log,0 (H0 (T)) = log,0 (H0 (Tref )) - AH
where
HO = the dimensionless Henry's law coefficient at temperature T
T = water temperature in Kelvin = T (°C) + 273.15
Tref = reference temperature equal to 298.15°K(25°C)
Ho(Tref) = Henry's law coefficient at the reference temperature Trer with a value of 8.1 10"8.
AH = the enthalpy of volatilization taken at 50 kJ mol"1
R = ideal gas constant whose value is 8.206 10"5 atm m3 mol"1 °K"1
When substituting the numerical values above into the corresponding terms of Equation 9.5, the
units of AH need to be converted from kJ mol"1 to atm m3 mol"1 using the conversion factor
9.86923 10"3. Equation 9.5 then becomes:
log10(H0(T)) = Iog10(8.1 1(T8)-50.0 9.86923 1 (T3
'(°C) + 273.15)~1 - (298.1 5)-' N
2.303-8.206.10
-5
(9.6)
H0(T) is then explicitly obtained by taking the log"110 on both sides of the equation above. Note
that H(T) has already been normalized to be dimensionless. H0(T) is represented with the
variable name KAW inside the LM3 source code.
9.2.2 O'Connor Formulation
The O'Connor formulation is one of two atrazine volatilization formulation choices provided in
LM3. The other one is the Wanninkhof and Schwarzenbach formulation which is discussed in
Section 9.2.3.
The atrazine O'Connor volatilization scheme is a wind-driven formulation (O'Connor, 1983a,b),
which can be used in cases where mass transfer is controlled by the wind velocity, typical of
lakes and reservoirs. The O'Connor formulation involves the calculation of several parameters.
The calculation of the parameters as carried out within the LM3 source code is detailed below.
9.2.2.1 Kinematic Viscosity and Density of Air
The kinematic viscosity of air and the density of air were calculated using empirical formulas
that are temperature-dependent.
r|air = 0.1 . (1.32 + 0.009. T(°C))
(9.7)
112
-------
Pair = 1.293. 10-S/(1 .0 + 0.00367 (Q8)
where:
rjair = kinematic viscosity of air (cm2 s"1)
Pair = density of air (g cm"3)
T(°C) = surficial water temperature (°C)
Note that the temperature, T(°C), used in the equations above was not the air temperature but
the water temperature of the surficial layer. Strictly speaking it is not correct to use water
temperature as a substitute of air temperature but in doing so we are introducing just a small
error. We used water temperature due to lack of air temperature data at the air-water interface.
9.2.2.2 Diffusivity of Atrazine in Air and in Water
The diffusivities of atrazine in air and water were needed because they were used in the
calculations of the liquid and gas exchange coefficients.
_ 1.9 » 10'1 (9.9)
air.atz
L>
22 10"9
water,atz ~ (MWatz)2/3
where:
MWatz = molecular weight of atrazine = 215.69 g mol"1 = MOLWT_ATZ in Table 9.1
9.2.2.3 Shear Velocity Iteration Scheme
Another parameter that needed to be determined was the shear velocity, U*, which was
calculated iteratively. It was tested for convergence at every step of the iteration. The steps
are:
1. Set shear velocity convergence test variable.
(9.11)
where
Cd = dimensionless drag coefficient = 0.0011 (O'Connor, 1983b)
Vwind = wind velocity at 10 m above the water surface (m s"1)
U*0id = initial iterative shear velocity value (cm s"1)
113
-------
The number, 100, in Equation 9.11 is a conversion factor; it converts the units of U*0|d from
m s"1 to cm s"1.
2. Calculate the shear velocity.
V
IT =
Vwind
100
In
1000 .
9i I I PYH °'c'
1 1 old H M
1 , V U Trans )
(9.12)
where
K = von Karman constant = 0.40 (O'Connor, 1983b)
A,! = dimensionless factor = 3.0 (O'Connor, 1983b)
rjair = kinematic viscosity of air, given by Equation 9.5
U*irans = transitional shear velocity = 10 cm s"1 (O'Connor, 1983b)
Vwind = wind velocity at 10 m above the water surface
Ze = limiting roughness length = 0.35 cm (O'Connor, 1983b)
The factor of 100 converts the U* units from m s"1 to cm s"1.
3. Take the absolute value of the difference between the new and old shear velocity.
U
CONV
u*-u;
old
(9.13)
4. Reset the old shear velocity with the new one.
Uold = U*
5. Test for convergence: If UCONV > 0.5 then repeat Steps 2 to 4.
(9.14)
Convergence is achieved when UCOnv ^ 0.5. The cut-off value of 0.5 was chosen based on tests
performed to determine the number of iterations typically needed to calculate U*. It was
determined that after four or five iterations UCOnv is less than 1 % of the U* iterated value.
9.2.2.4 Contributing Coefficients Z0(U*), r(U*), K8, and KT to the Liquid-Phase Transfer
Coefficient KL
The computation of the liquid-phase mass transfer rate KL depends on the calculation of four
coefficients: the roughness length Z0(UI), the dimensionless sublayer thickness r(U*), the
transfer coefficient for the diffusional layer K5, and the surface renewal transfer coefficient KT.
Their mathematical expressions are:
114
-------
t, U* exp -
Z0(U*) =
U
Trans
(9.15)
where
Z0(U*)
Ze
A.1
U*
U*
Trans
r(lT) =
where
r(U*) =
To
U*c =
roughness height (cm)
limiting roughness length = 0.35 cm (O'Connor, 1983b)
dimensionless factor = 3.0 (O'Connor, 1983b)
determined iteratively using Equation 9.12
transitional shear velocity = 10 cm s"1 (O'Connor, 1983b)
r0.-V .exp 11.0-^-1 u->
rr
if
-------
rjair = kinematic viscosity of air, given by Equation 9.7
pw = density of water = 1.0 g cm"3
r|w = kinematic viscosity of water, given by Equation 8.32
9.2.2.5 Liquid-Phase Transfer Coefficient
The expression for the liquid-phase transfer coefficient, KL, is:
10"2
L ~ 1 1
where:
KL = liquid-phase transfer coefficient (m s"1)
K5 and KT are given by Equations 9.17 and 9.18, respectively.
The factor 10"2 converts the units of KL from cm s"1 to m s"1.
9.2.2.6 Gas-Phase Transfer Coefficient
The gas-phase transfer coefficient, KG, had a simpler calculation scheme than the liquid
exchange coefficient.
1. Calculate the shear velocity as a function of wind speed.
Vwind (9.20)
where
Cd = dimensionless drag coefficient = 0.0011
Vwind = wind velocity at 10 m above the water surface (m s"1)
Cd is not a true constant but varies as a function of wind speed; however, the value of
0.0011 is representative of wind speeds between one m s"1 and 12 m s"1 (O'Connor,
1983b). Note that Equation 9.20 represents the same shear velocity that was calculated
with Equation 9.11 except that the units are different; Equation 9.11 is in units of cm s"1
(thus the factor of 100) while Equation 9.20 is in units of m s"1.
2. Multiply Dair,atz by 1.0 104 to convert from m2 s"1 to cm2 s"1. Then calculate the ratio of the
kinematic viscosity of air to the diffusivity of atrazine in air, which is commonly known as the
Schmidt Number for air.
SO = Tlair
3 Dair,atz.104 (9.21)
116
-------
3. Use the results from 1 and 2 to calculate the gas exchange coefficient, KQ.
1/3 f 1 A2/3
KG = U* . - . (9.22)
A. {^aj
where:
K = von Karman constant = 0.4 (O'Connor, 1983b)
'k = dimensionless viscous sublayer thickness = 4 (O'Connor, 1983b)
U* = given by Equation 9.20
SCa = given by Equation 9.21
9.2.2.7 Overall Mass Transfer Coefficient
The gas-phase transfer coefficient was normalized by multiplying it by the air-water partition
coefficient or Henry's law constant.
KGH = KG H(T) (9.23)
where:
KGH = scaled gas-phase transfer coefficient.
H0(T) is obtained from Equation 9.6.
The overall mass transfer is given by the expression below.
K =
~
KL KGH
KL + KGH <9.24>
where:
Kv = overall mass transfer coefficient
Kv is normalized with respect to segment depth.
K14 = -^-
BLseg (9.25)
where
BLSeg = thickness of surficial water column segment in m
117
-------
9.2.2.8 Volatilization Rate
= -KLA . Cwatenatz - (9.26)
where:
VLT = volatilization rate (kg s"1 m"3)
KLA is given by Equation 9.25
9.2.2.9 Steps of the O'Connor Algorithm
Now that we have presented all the volatilization-related equations corresponding to the
O'Connor algorithm, we proceed to outline the calculation used within LM3. The steps of the
algorithm are:
1. Calculate the dimensionless Henry's constant H(T) using Equation 9.6.
2. Calculate the kinematic viscosity of air r|air using Equation 9.7.
3. Calculate the air density pair using Equation 9.8.
4. Calculate the diffusivity of atrazine in air Dair,atz using Equation 9.9.
5. Calculate the diffusivity of atrazine in water Dwater,atz using Equation 9.10.
6. Calculate the shear velocity U* using the iterative scheme outlined in Equations 9.11
through 9.14.
7. Calculate the roughness height Z0(U*) using Equation 9.15.
8. Calculate the dimensionless sublayer thickness F(U*) using Equation 9.16.
9. Calculate the transfer coefficient for the diffusional layer K5 using Equation 9.17.
10. Calculate the surface renewal transfer coefficient KT using Equation 9.18.
11. Calculate the liquid-phase transfer coefficient KL using Equation 9.19.
12. Calculate the shear velocity U* using Equation 9.20.
13. Calculate the Schmidt number for air SCa using Equation 9.21 .
14. Calculate the gas exchange coefficient KG using Equation 9.22.
15. Calculate the scaled gas-phase transfer coefficient KGH using Equation 9.23.
118
-------
16. Calculate the overall mass transfer coefficient Kv using Equation 9.24.
17. Calculate the water-depth normalized overall mass transfer coefficient KLA using Equation
9.25.
18. Calculate the volatilization rate VLT using Equation 9.26.
9.2.3 Wanninkhofand Schwarzenbach Formulation
The Wanninkhof and Schwarzenbach formulation is the other volatilization algorithm available
for atrazine within the LM3 source code. It is a more recent formulation than O'Connor's: it was
developed in the early 1990s, while the O'Connor formulation dates back to the early 1980s.
The Wanninkhof and Schwarzenbach formulation only pertains to the way the liquid and gas
transfer coefficients, KL and KG, are calculated (see Equation 8.25). The calculation of Henry's
law constant for atrazine is still given by Equation 9.5.
The liquid-phase transfer coefficient, KL, is calculated using the Wanninkhof (1992) formulation.
The gas-phase transfer coefficient, KG, is calculated using the Schwarzenbach et al. (1993)
formulation.
The Wanninkhof equation for KL, with correction for atrazine molecular diffusivity in reference to
carbon dioxide (CO2) molecular diffusivity across the air-water interface, is given by the
following formula:
K, = 0 45 . I Dwater'atz . LL1-64 (9-27)
JDwater,co2 3.6. 105
The Schwarzenbach equation for KG, with correction of atrazine molecular diffusivity in
reference to water vapor molecular diffusivity across the air-water interface, is given by the
following formula:
( n V'61
KG = (0.2 U10 + 0.3) air'atz .10-2 (9.28)
Y air,water )
where:
Uio = wind speed measured at 10 m above water surface (m s"1)
Dwater.atz = diffusivity of atrazine in water (m2 s"1); it is given by Equation 9.10
Dwater,co2 = diffusivity of carbon dioxide in water (m2 s"1); it is given by Equation 8.28
diffusivity of atrazine in air (m2 s"1); it is given by Equation 9.9
diffusivity of water in air (m2 s"1); it is given by Equation 8.29
Equations 9.27 and 9.28 are the atrazine equivalent of the PCB Equations 8.26 and 8.27 (see
Section 8.2).
119
-------
Now that we have specified all the volatilization-related equations, we then proceed to outline
the general algorithm used within LM3 to calculate atrazine volatilization using the Wanninkhof
and Schwarzenbach formulation. The steps of the algorithm are:
1. Calculate the dimensionless Henry's law constant H0(T) using Equation 9.6.
2. Calculate the dynamic viscosity of water using Equation 8.33.
3. Calculate the kinematic viscosity of water using Equation 8.32.
4. Calculate the diffusivity of CO2 in water using Equation 8.28.
5. Calculate the diffusivity of atrazine in water using Equation 9.10.
6. Calculate the liquid-phase transfer coefficient using Equation 9.27.
7. Calculate the diffusivity of water vapor in air using Equation 8.29.
8. Calculate the diffusivity of atrazine in air using Equation 9.9.
9. Calculate the gas-phase transfer coefficient using Equation 9.28.
10. Calculate the overall mass transfer, kv, using Equation 9.4.
11. Divide kv by the segment depth D.
12. Calculate net volatilization rate per unit of water volume using Equation 9.3.
13. To obtain the mass derivative term in units of kg s"1, multiply the value obtained from
Equation 9.3 by the volume of the surficial water segment in question.
120
-------
CHAPTER 10
PROGRAM CODE, ORGANIZATION, AND MANAGEMENT
Source code for the LM3 water quality model involves tens of thousands of lines. Organization
and management of the program has been performed using top-down algorithm procedures
together with an independent source code management tool to track revision information
throughout the development of LM3. The source code management tool used for LM3 is known
as the Revision Control System (RCS) (see Appendix D).
10.1 The LM3 Algorithm
Wherever possible, the LM3 algorithm was broken into initialization, batch, and completion
phases. Separate calculation tasks were assigned to individual subroutines and functions
where appropriate. The main program, subroutines, and functions were each assigned unique
source files. The program source code was written in FORTRAN 90. Compilation and
loading/linking tasks were automated using the Linux utility application known as make. These
tasks were specified as a set of instructions within a file named Makefile. The file Makefile is
used by make to generate compilation and loading/linking commands which, in turn, are
executed by the operating system. Makefile was included in the distribution of the source code.
Minor platform dependence was encountered in some of the LM3 supporting code and these
instances were dealt with by the C Preprocessor (cpp) pre-processing the source code before
compilation1. A detailed discussion of the LM3 source code will not be provided here. Those
intending to make modifications to the program should study the program source code and gain
a thorough understanding of its details before proceeding. However, the overall program
structure and the organization of the contributing elements are reasonably straightforward and
are now summarized.
The basic flow of control for LM3 is summarized in Figures 10.1 through 10.5. All references to
the LM3 subroutines and functions are included in these diagrams. Library functions and their
references are excluded from these flow diagrams except the functions FIINIT and FIGO shown
on Figure 10.2. Figure 10.1 shows the algorithm flow of control for the main program which
consists of three subroutine calls to perform program initialization (LM3INIT), the main or batch
element of LM3 execution (LM3BAT), and handling of the termination phase of the program
(LM3FIN).
1See the LM3 and UT library sources for details on this issue.
121
-------
Figure 10.1. Topmost flow of control for the LM3 program.
INITCDF_TI
INITCDF_HY
INITCDF_SH
INITCDF_EU
INITCDF_CLAY
INITCDF_PCB
INITCDF_AT
INITCDF_CL
INITCDF_SED
INITCDF RESUSP VELOCITIES
NT RESUSP VELOC T ES
Figure 10.2. Flow of control for LM3 initialization.
122
-------
AGGREG
OUTPUT_TI
OUTPUT_HY
OUTPUT_SH
OUTPUT_EU
OUTPUT_CLAY
OUTPUT_PCB
OUTPUT_AT
OUTPUT_CL
OUTPUT_SED
OUTPUT L2PROD
VSETCAL
SHEAR_STRESS-
SETTLING
CHEMICALS
EXCHANGE
WTRANSPT
SED_TRANSPT
LOADS
EUTRO
BOTTOM VEL
FRACTION_PCB
AIR_CONC_CHEM
WIND_SPEED
VOL AT
Figure 10.3. Flow of control for the LM3 main or batch level calculation.
EUTRO
ZOO
DIATOMS
GREENS
CARBON
PHOSPH
NITROG
SILICA
Figure 10.4. Flow of control for the LM3 eutrophication calculation.
123
-------
LM3FIN
AGGREG
OUTPUT_TI
OUTPUT_HY
OUTPUT_SH
OUTPUT_EU
OUTPUT_CLAY
OUTPUT_PCB
OUTPUT_AT
OUTPUT_CL
OUTPUT_SED
OUTPUT L2PROD
Figure 10.5. Flow of control for the LM3 finishing level calculation.
The initialization phase of the program is broken into the components described in Figure 10.2.
The routine INITFIR is called to initialize FIREAD parameter handling for the program.
The UT (Settles, 1998) library interface for FIREAD is initialized (FIINIT). Parameter
(KEYSTRAN), eutrophication kinetics (KEYSKIN), and chemicals kinetics (KEYSCHEM) are
defined; the input deck is then read and FIREAD key values are assigned to the respective
FORTRAN 90 variables (FIGO). Program initialization continues with definition and
assignment of lookup tables for the different simulated states (INITSTATES).
Initialization of high-resolution (level 3) to low-resolution (level 2) geometry information for
aggregation and de-aggregation purposes is performed (INITAGG); see Zhang (2006) for a
detailed description of the level 2 geometry, Section 1.2 for a brief one, and Section 5.1 for a
description of the high-resolution grid. The arrays needed for the volatilization calculation of
polychlorinated biphenyls (PCBs) and atrazine are then initialized (INITPARAM_CHEM). The
program proceeds to read mapping, geometry data, and time-invariant hydrodynamics. This is
followed by the initialization of arrays needed for the sediment bed transport subroutine
(INITSED_TRANSPT).
The next step is the definition of the Common Data Format (CDF) structures for the input and
output data streams (INITCDF). This includes calls to subroutines supporting the initialization of
the input initial conditions (INITCDFJCI) and input hydrodynamics (INITCDF_HYD). Output
CDF structures are defined (INITCDFJDUT), including output time records (INITCDF_TI),
output hydrodynamics values (INITCDF_HY) [not to be confused with the input hydrodynamics
definitions subroutine (INITCDF_HYD)], output shear calculation values (INITCDF_SH), output
eutrophication state values (INITCDF_EU), output atrazine state variables (INITCDF_AT),
output clay state values (INITCDF_CLAY), output chloride state values (INITCDF_CL), and
output sediment transport values (INITCDF_SED). The subroutine supporting initialization of
input load values is then called (INITCDF_LD) followed by the subroutine supporting the
initialization of PCBs and atrazine vapor concentrations (INITCDF_AIR_CONC). The
initialization of input wind speed values is in turn performed (INIT_WIND). Finally, the
initialization of resuspension velocities is carried out (INITCDF_RESUSP_VELOCITIES).
124
-------
Program initialization continues with the dynamic memory allocations of global arrays
(INITARR). The transport algorithm is then initialized (INITWTRANS) which defined the
simulation geometry, assignment of flow faces, vertical segmentation, and the setup of time-
independent parameters used by the ULTIMATE QUICKEST (UQ) algorithm. The load
calculation is then initialized (INITLOADS), and initial concentration values are read in
(INITCONC) and the values reassigned from the coarse level 2 to the high-resolution grid
(DEAGGREG). The fraction of PCBs in dissolved, dissolved organic carbon (DOC), and carbon
sorbed components is calculated (FRACTION_PCB). Changes to maximum allowed
concentration values for all modeled states are logged (LOGPAR). Kinetics calculations are
initialized (INITKIN) including parameter logging (LOGPAR) and dynamic allocation of arrays.
Further program initialization continues with the input of the initial chemical vapor concentration
values (INITAIR_CONC). The initial wind speed values are then read in (INITWIND_SPEED).
Finally, the initial resuspension velocities values are read in (INIT_RESUSP_VELOCITIES).
After the program initialization is completed, the main or batch processing phase of LM3 is
invoked by calling the subroutine LM3BAT. This subroutine has a time marching loop which
iterates over the sequential time values of the simulation period. Program output corresponding
to the previous iteration (or the program initialization) is generated (OUTPUT). The high-
resolution model output is aggregated onto the coarse level 2 grid (AGGREG). Time values are
then written (OUTPUT_TI), selected hydrodynamics values are written (OUTPUT_HY),
elements of the shear calculation are output (OUTPUT_SH), and eutrophication state
information is written (OUTPUT_EU). Clay state information is output (OUTPUT_CLAY), PCB
congeners state information is output (OUTPUT_PCB), atrazine state information is output
(OUTPUT_AT), chloride state information is output (OUTPUT_CL), and information used by the
sediment calculation is passed to the output CDF stream (OUTPUT_SED). The program then
stores (but does not actually write) primary productivity values from the eutrophication
calculation that has been aggregated onto the level 2 calculation grid (OUTPUT_L2PROD).
After program output is written, hydrodynamics flow and dispersion fields are updated
(HYDRO). The program time step is then calculated (TSTEPH). The bulk of the LM3
calculation is consumed by the calculation of the time derivatives of state variable masses,
represented by the array DTM throughout the program (DERIV). There are several elements
that are part of this calculation. The first element is the calculation of particle settling velocities
(VSETCAL) which at the present time is not calculated but is set to the input values specified by
the user. The second element is the calculation of bottom shear stress (SHEAR_STRESS)
which then requires the calculation of the bottom orbital velocity (BOTTOM_VEL). The third
element is the calculation of the water column bottom layer settling flux (SETTLING). The fourth
element is the calculation of kinetics and partition processes associated with PCBs and atrazine
(CHEMICALS). There are several sub-elements within this fourth element which are the
calculation of fractions of PCB phases in the water and sediment column (FRACTION_PCB),
the update of PCB and/or atrazine vapor concentration values (AIR_CONC_CHEM), the update
of wind speed values (WIND_SPEED), the calculation of PCBs and/or atrazine volatilization
(VOLAT), and the inline calculation of atrazine's lumped first-order decay rate (CHEMICALS).
The fifth element is the calculation of settling and resuspension fluxes between the water
column and the sediment bed (EXCHANGE). The calculation of resuspension fluxes requires
the update of resuspension velocities (RESUSPENSION_VELOCITIES). The sixth element is
125
-------
the calculation of the UQ water column transport (WTRANSPT)1. The subroutine WTRANSPT
includes a call to another subroutine named TSTEPV which is shown in Figure 10.3 by a
dashed line. The dashed line means that TSTEPV is not being used as of the writing of this
document. This subroutine is supposed to calculate a separate time step, for vertical transport,
but the algorithm used for this calculation is not fully operational at the present time.
The seventh element is the calculation of the UQ sediment bed transport (SED_TRANSPT).
The eighth element is the calculation of load contributions (LOADS) to the mass derivative. The
last element is the calculation of autochthonous solids production (EUTRO); that is, the
calculation of eutrophication kinetics. Elements of this calculation are discussed below.
Concentration mass, volume, and the simulation time counter are then updated (UPDATES), at
which time concentration tests are performed to make certain that pre-defined maximum or
negative values of state concentrations have not been violated.
The autochthonous solids production or eutrophication calculation (EUTRO) is called as a part
of the time derivative calculation (DERIV) and simulated plankton growth in the lake and its
decay into detrital carbon states. Light attenuation and light limitation variables are calculated
inline, after which calculations for zooplankton (ZOO), diatoms (DIATOMS), non-diatom
phytoplankton (GREENS), carbon (CARBON), phosphorus (PHOSPH), nitrogen (NITROG), and
silica kinetics (SILICA) are performed. The subroutine calls are summarized in Figure 10.4.
After the time marching integration loop is completed, the termination phase of the program
(LM3FIN) is called. The simple flow of control is shown in Figure 10.5. Actions taken to
complete the time integration are performed (INTFIN); this routine is currently empty and is only
present as a place maker in the algorithm. Output is written representing the state of the
simulation at its completion (OUTPUT). This includes all or a subset of the following: simulation
time, selected hydrodynamics values, shear stress, eutrophication, clay, PCBs, atrazine,
chloride, and sediment bed concentrations. The main output file is then closed and primary
productivity values are written to another, previously designated, output file.
10.1.1 LM3 Individual Program Units
A detailed, individual description of the LM3 subroutines, modules, generic subroutines, and
include files follows.
10.1.1.1 Main Program
LM3
The LM3 source file is the main control file of the application. It operates the calling sequence
for the input/initialization, execution/output, and closing tasks of the application. It calls the
subroutines LM3INIT, LM3BAT, and LM3FIN.
1The wtranspt.F code and support source are products of the Waterways Experiment Station
(WES) group - R. Chapman, T. Cole, and T. Gerald. The algorithm employed is designated to
provide an accurate coupling to the Princeton Ocean Model (POM) hydrodynamics calculation
and to minimize numerical dispersion effects. See Chapter 5 for a detailed derivation and
discussion of the method used.
126
-------
10.1.1.2 Initialization and Input Subroutines
The subroutines that follow are the ones that initialize the program and read in the input data
before any simulation is performed.
LM3INIT
This is the subroutine that controls the calling sequence to all the subroutines that initialize LM3
(see Figure 10.2). It calls the subroutines INITIR, INITSTATES, INITAGG, INITPARAM_PCB,
INITSED_TRANSPT, INITCDF, INITARR, INITWTRANSP, INITLOADS, INITCONC, INITKIN,
INITAIR_CONC, INITWIND_SPEED, and INIT_RESUSP_VELOCITIES.
INITFIR
This subroutine controls the calling sequence to subroutines that initialize LM3 parameters
using the UT library. It calls the subroutines FIINIT, KEYSGEN, KEYSTRAN, KEYSKIN,
KEYSCHEM, and FIGO. FIINIT and FIGO are part of the UT library.
KEYSGEN
This subroutine initializes LM3 FIREAD keys for general control tasks.
KEYSTRAN
This subroutine initializes LM3 FIREAD keys for water and sediment column transport
parameters.
KEYSKIN
This subroutine initializes LM3 FIREAD keys for eutrophication kinetic parameters.
KEYSCHEM
This subroutine initializes LM3 FIREAD keys foratrazine and PCBs kinetic parameters.
INITSTATES
This subroutine initializes state variable indices, initializes and allocates memory to arrays
containing the indices.
INITAGG
This subroutine initializes coarse (level 2) to high-resolution (level 3) geometry aggregation and
de-aggregation information.
INITPARAM_CHEM
This subroutine initializes and allocates memory to arrays related to the volatilization calculation
of PCBs and atrazine.
INITSED_TRANSPT
This subroutine initializes and allocates memory to arrays needed for sediment bed transport. It
also reads mapping, geometry data, and time-invariant hydrodynamics.
INITCDF
This subroutine controls the calling sequence to subroutines that initialize the handling of input
and output CDF files. It calls the subroutines INITCDFJCI, INITCDFJHYD, INITCDFJDUT,
INITCDF_LD, INITCDF_AIR_CONC, INITCDF_WIND, and INITCDF_RESUSP_VELOCITIES.
127
-------
INITCDFJCI
This subroutine initializes the handling of CDF files containing initial concentrations of state
variables for water and sediment columns.
INITCDFJHYD
This subroutine initializes the handling of CDF files containing the hydrodynamics. It also
determines the number of grid cells, the number of surficial grid cells, the number of horizontal
flows, and the number of vertical flows in the model.
INITCDFJDUT
This subroutine initializes the handling of CDF files that will contain the model output. It controls
the calling sequence to subroutines that initialize the CDF output of state variables,
hydrodynamics, and simulation time. It calls the subroutines INITCDF_TI, INITCDF_HY,
INITCDF_SH, INITCDF_EU, INITCDF_CLAY, INITCDF_PCB, INITCDF_AT, INITCDF_CL, and
INITCDF_SED.
INITCDF_TI
This subroutine initializes the CDF output for timestamps; it creates the CDF metadata and CDF
variables needed for all timestamps output.
INITCDFJHY
This subroutine initializes the CDF output for hydrodynamics; it creates the CDF metadata and
CDF variables needed for the hydrodynamics output.
INITCDF_SH
This subroutine initializes the CDF output for shear stress related variables; it creates the CDF
metadata and CDF variables needed for shear stress and wave information output.
INITCDF_EU
This subroutine initializes the CDF output for eutrophication; it creates the CDF metadata and
CDF variables needed for the eutrophication output.
INITCDF_CLAY
This subroutine initializes the CDF output for clay; it creates the CDF metadata and CDF
variables needed for the clay output.
INITCDF_PCB
This subroutine initializes the CDF output for PCB congeners; it creates the CDF metadata and
CDF variables needed for the PCB congeners output.
INITCDF_AT
This subroutine initializes the CDF output for atrazine; it creates the CDF metadata and CDF
variables needed for the atrazine output.
INITCDF_CL
This subroutine initializes the CDF output for chloride; it creates the CDF metadata and CDF
variables needed for the chloride output.
128
-------
INITCDF_SED
This subroutine initializes the CDF output for the state variables that are simulated in the
sediment bed; it creates the CDF metadata and CDF variables needed for the sediment-related
variables output.
INITCDF_LD
This subroutine initializes the handling of the CDF load files. It opens the load locations file
reading in the 5 km grid cell numbers the loads are discharged to. It calls the subroutine
ADDLDS, for each modeled state variable, to add available loads to an internal list of loads.
ADDLDS
This subroutine adds the load locations that are available for a given state variable to a list (a
FORTRAN structure). It loops over the maximum number of load locations, selecting only the
locations that have a non-zero load and adding these locations to an internal list of application
uses when discharging loads into a given grid cell.
INITCDF_AIR_CONC
This subroutine initializes the handling of the CDF file containing vapor (air) concentrations of
PCBs and atrazine. It opens the CDF file; it then retrieves the CDF identification numbers
corresponding to update times and vapor concentrations. This subroutine is used only when
simulating volatilization.
INITCDF_WIND
This subroutine initializes the handling of the CDF file containing wind speeds. It opens the
CDF file; it then retrieves the CDF identification numbers corresponding to update times and
wind speeds. This subroutine is used only when simulating volatilization.
INITCDF_RESUSP_VELOCITIES
This subroutine initializes the handling of the CDF file containing resuspension velocities. It
opens the CDF file; it then retrieves the CDF identification numbers corresponding to update
times and resuspension velocities. This subroutine is used only when simulating sediment bed
transport.
INITARR
This subroutine initializes and allocates memory to global arrays.
INITWTRANS
This subroutine initializes and allocates memory to arrays related to the water column transport
calculation. It also initializes geometry and mapping information, reads in time-invariant
hydrodynamics, and assigns user-specified settling velocities to corresponding arrays.
INITLOADS
This subroutine initializes the handling of loads in LM3. It reads in the initial loads and the times
of the next update for the loads.
INITCONC
This subroutine reads in the initial state variable concentrations for the water and sediment
columns. It scales initial concentrations according to user-defined scaling factors. It prints to
standard output user-defined maximum allowed concentrations and stores those values in
129
-------
arrays. It calculates porosities in the sediment bed; it calls the subroutine FRACTION_PCB to
partition the initial PCB congener total concentration among carbon-based solids; it calls the
subroutine DEAGGREG to de-aggregate initial conditions specified on the low-resolution (see
Section 1.2) segmentation to the high-resolution grid (see Section 5.1); it calculates the initial
total mass in the lake for each state variable.
INITKIN
This subroutine initializes and allocates memory to arrays related to the eutrophication kinetics.
It also prints to standard output user-input eutrophication kinetics parameters.
INITAIR_CONC
This subroutine initializes the handling of vapor-phase chemical concentrations. It reads in the
initial vapor-phase concentrations and the times of the next update for these values. This
subroutine is used only when simulating volatilization of PCBs or atrazine.
INITWIND_SPEED
This subroutine initializes the handling of wind speed. It reads in the initial wind speed values
and the times of the next update for these values. This subroutine is used only when simulating
volatilization of PCBs or atrazine.
INIT_RESUSP_VELOCITIES
This subroutine initializes the handling of resuspension velocities. It reads in the initial
resuspension velocities and the times of the next update for these values. This subroutine is
used only when simulating sediment bed transport.
10.1.1.3 Simulation Execution and Output Subroutines
LM3BAT
This is the subroutine that controls the calling sequence to all the subroutines that carry out the
model simulation and writing of the model output (see Figure 10.3). It calls the subroutines
OUTPUT, HYDRO, TSTEPH, DERIV, and UPDATES.
OUTPUT
This subroutine controls the calling sequence to the subroutines that handle the writing of model
results to CDF output files. It calls the subroutines OUTPUT_TI, OUTPUT_HY, OUTPUT_SH,
OUTPUT_EU, OUTPUT_CLAY, OUTPUT_PCB, OUTPUT_AT, OUTPUT_CL, OUTPUT_SED,
and OUTPUT_L2PROD.
OUTPUT_TI
This subroutine writes three timestamps to output: Julian days, calendar date, and simulation
time in seconds.
OUTPUT_HY
This subroutine writes hydrodynamics information to output: cell volumes, temperature,
currents, and dispersion coefficients.
OUTPUT_SH
This subroutine writes parameters related to the shear stress calculation to output: shear
stress, wave height, wave period, and wave direction.
130
-------
OUTPUT_EU
This subroutine writes eutrophication simulation results to output. These results consist of
concentrations, growth limitation factors (nutrient, light, and temperature), eutrophication state
variable masses, cumulative loads, settled-out masses, and settling rates.
OUTPUT_CLAY
This subroutine writes clay simulation results to output. These results consist of concentrations,
cumulative loads, masses, settled-out masses, and settling rates.
OUTPUT_PCB
This subroutine writes PCB water column simulation results to output. These results consist of
concentrations (dissolved, particulate, and total), cumulative loads, total masses, settled-out
masses, settling rates, and volatilization gains and losses.
OUTPUT_AT
This subroutine writes atrazine simulation results to output. These results consist of
concentrations, cumulative loads, total masses, decayed masses, lost masses (through
outflows), and volatilization gains and losses.
OUTPUT_CL
This subroutine writes chloride simulation results to output. These results consist of
concentrations, cumulative loads, and total masses.
OUTPUT_SED
This subroutine writes sediment bed simulation results to output. These results consist of
concentrations corresponding to PCBs, clay, and carbon-based solids (only refractory organic
carbon (ROC) as of this writing.
OUTPUT_L2PROD
This subroutine writes phytoplankton productivity values to output. Values are aggregated on a
coarser grid; these values are then exported for use in the application known as LM2-PCB.
HYDRO
This subroutine reads in the hydrodynamics input data. The data consists of vertically-
integrated water volumes, vertically-integrated flow face areas, horizontal flows, vertical flows,
horizontal diffusions, vertical diffusions, water temperature, and short-wave radiation. If shear
stress calculations are performed, wave information is input as well. Other tasks performed by
this subroutine are: calculation of the horizontal components of currents, calculation of average
diffusion coefficients for grid cells, determination of flow direction, turning on/off diffusion and/or
flows, calculation of grid cell volumes, and calculation of flow face areas. This subroutine also
re-sets the hydrodynamic and loads pointers for simulations of more than two years.
TSTEPH
This subroutine calculates the program time step. The time step is derived from the Courant
stability constraint on horizontal transport.
DERIV
This subroutine controls the calling sequence to the subroutines that calculate the mass
derivatives, due to kinetic processes, of each modeled state variable. It calls the subroutines
131
-------
VSETCAL, SHEAR_STRESS, SETTLING, CHEMICALS, EXCHANGE, WTRANSPT,
SED_TRANSPT, LOADS, and EUTRO.
VSETCAL
This subroutine assigns user-defined settling velocities to an internal array (vset) that in turn is
used by the transport subroutine (WTRANSPT). This subroutine also serves as a placeholder
to include calculations to make settling velocities space-dependent and to include flocculation
algorithms.
SHEAR_STRESS
This subroutine calculates bottom shear stresses. It calls the subroutine BOTTOM_VEL.
BOTTOM_VEL
This subroutine calculates the bottom orbital velocity due to wave action in the water column.
The bottom orbital velocity is used for the calculation of shear stress.
SETTLING
This subroutine calculates the bottom layer settling flux of each settling state variable. Mass
derivative of state variables gets updated only when performing no sediment transport.
CHEMICALS
This subroutine controls the calling sequence to subroutines performing partitioning of PCBs
and volatilization of PCBS and/or atrazine. It calls the subroutines FRACTION_PCB,
AIR_CONC_CHEM, WIND_SPEED, and VOLAT. This subroutine also calculates a lumped
first-order decay rate for atrazine.
FRACTION_PCB
This subroutine computes the fraction of a given PCB congener in the dissolved phase,
dissolved organic carbon-sorbed phase, and particulate organic carbon-sorbed phase.
AIR_CONC_CHEM
This subroutine reads in the vapor-phase concentrations of PCBs and/or atrazine and the times
of the next updates.
WIND_SPEED
This subroutine reads in wind speeds for each of the surficial 5 km grid cells and the time of the
next update.
VOLAT
This subroutine computes the volatilization contribution to the mass derivative of PCBs and/or
atrazine. This subroutine is called only when simulating volatilization.
EXCHANGE
This subroutine exchanges resuspension and settling fluxes of sediments between the water
column and the sediment column. It calculates the porosity of each sediment grid cell. It calls
the subroutine RESUSPENSION_VELOCITIES to determine resuspension velocities.
RESUSPENSION_VELOCITIES
This subroutine reads in resuspension velocities from a CDF input file.
132
-------
WTRANSPT
This subroutine calculates the mass derivative of each state variable due to transport processes
in the water column. The transport calculation is based on the UQ algorithm. This subroutine
calls another subroutine, TSTEPV, only when settling the Crank-Nicholson parameter to zero.
TSTEPV is supposed to calculate a vertical time step; however, as of this writing, TSTEPV does
not work properly and therefore, it is not used.
SED_TRANSPT
This subroutine calculates the mass derivative of each state variable modeled in the sediment
bed, due to transport processes in the sediment bed column. The sediment bed transport
calculation is based on the UQ algorithm.
LOADS
This subroutine calculates the load contributions to the mass derivative of each state variable.
EUTRO
This subroutine controls the calling sequence to the subroutines that perform eutrophication
kinetics. It calls the subroutines ZOO, DIATOMS, GREENS, CARBON, PHOSPH, NITROG,
and SILICA.
ZOO
This subroutine performs zooplankton kinetic calculations. It accounts for zooplankton growth
from consumption of phytoplankton and zooplankton mortality.
DIATOMS
This subroutine performs diatom kinetic calculations. It accounts for metabolism and light,
temperature, and nutrient limitations.
GREENS
This subroutine performs non-diatom algae kinetic calculations. It accounts for metabolism and
light, temperature, and nutrient limitations.
CARBON
This subroutine performs kinetic calculations of carbon. It accounts for sources and sinks of
carbon such as phytoplankton metabolism and predation, zooplankton mortality, and
mineralization.
PHOSPH
This subroutine performs kinetic calculations of phosphorus. It accounts for sources and sinks
of phosphorus.
NITROG
This subroutine performs kinetic calculations of nitrogen. It accounts for sources and sinks of
nitrogen.
SILICA
This subroutine performs kinetic calculations of silica. It accounts for sources and sinks of
silica.
133
-------
UPDATES
This subroutine performs updates of export masses, state variable concentrations, segment
volumes, and simulation time. It prints out error and warning messages for cases when
concentrations are out of range. This subroutine checks for the occurrence of negative
concentrations; if negative values are observed, an algorithm is invoked that will fix the problem.
10.1.1.4 Finalizing Subroutines
LM3FIN
This subroutine handles the finishing stages of the simulation. It calls the subroutines INTFIN
and OUTPUT. It closes all CDF output files and it then prints the timestamp corresponding to
the end of the program's execution.
INTFIN
This subroutine is empty as of this writing. It serves only as a placeholder for any future
addition of time integration calculations.
OUTPUT
This subroutine is described in Section 10.1.1.3. It is called one more time to write the last
record of the model output.
10.1.1.5 Modules
Modules are separately compiled program units that contain the definitions and initial values of
the data that users wish to share among program subroutines and functions. Modules were first
introduced in FORTRAN 90; they have become the standard way of sharing large amounts of
data among program units. The list of modules that follow represents the ones that are
currently found in LM3.
AGG
This module declares arrays and structures used to provide aggregation and de-aggregation
data between the coarse grid and the high-resolution grid.
CDFBLK_AT
This module declares and initializes CDF variables and constants used to specify atrazine
information.
CDFBLK_CLAY
This module declares and initializes CDF variables and constants used to specify clay
information.
CDFBLK_CL
This module declares and initializes CDF variables and constants used to specify chloride
information.
CDFBLK_EU
This module declares and initializes CDF variables and constants used to specify eutrophication
information.
134
-------
CDFBLK
This module declares and initializes global CDF variables and constants used by LM3.
CDFBLKJHY
This module declares and initializes CDF variables and constants used to specify hydrodynamic
information.
CDFBLK_PCB
This module declares and initializes CDF variables and constants used to specify PCB
information.
CDFBLK_RESUSP_VELOCITI ES
This module declares and initializes CDF variables and constants used to specify resuspension
velocities information.
CDFBLK_SED
This module declares and initializes CDF variables and constants used to specify sediment bed
information.
CDFBLK_SH
This module declares and initializes CDF variables and constants used to specify shear stress
information.
CDFBLK_TI
This module declares and initializes CDF variables and constants used to specify timestamp
information.
CDFBLK_WIND
This module declares and initializes CDF variables and constants used to specify wind speed
information.
CDFPARM
This module declares and initializes CDF parameters.
CLIM
This module declares and initializes concentration limit parameters.
CONG
This module declares arrays and structures used to store concentrations and update times.
CONST
This module declares and initializes parameters used for calculating shear stress.
DIMS
This module declares and initializes parameters used to specify dimensions for arrays. For
example: the number of PCB phases in the water and sediment columns, the maximum length
of subroutine names, and the number of sediment layers.
135
-------
DMASS
This module declares the arrays that store mass derivatives and mass balances of state
variables. There is no initialization of the arrays in this module because all of them are declared
as ALLOCATABLE.
ENVIRON
This module declares and initializes variables for the molecular weight and the decay rate of
atrazine. It also declares a few arrays related to chemical kinetic processes that are not
currently simulated in LM3.
EUT
This module declares and initializes all the parameters associated with the eutrophication
kinetics. It also declares, but does not initialize, all the arrays associated with the eutrophication
kinetics. These arrays are used to store information such as light, temperature, and nutrient
limitation factors; production and predation rates; and temperature corrections for hydrolysis and
mineralization.
FIBLK
This module declares the array, USRSTR, used to store FIREAD key definitions. See Appendix
B for a discussion of the FIREAD utility.
FLAGS
This module declares and initializes program flags that turn on/off the simulation of kinetics or
transport processes; it also turns on/off the simulation of PCB congeners, atrazine, and chloride.
FNAMES
This module declares and initializes variables that store the names of CDF input files.
LDBLK
This module declares arrays and structures that are used to store loads, load cell locations, and
load scaling factors. It also declares and initializes variables associated with multi-year
simulations.
LUN
This module stores logical units used when opening ASCII input files.
PARINT
This module is a generic interface block for LOGPAR. LOGPAR is actually three FORTRAN
subroutines: LOGPAR_C, LOGPARJ, and LOGPAR_R. The trailing letters C, I, and R stand
for character, integer, and real, respectively. The right subroutine is invoked based on the
FORTRAN type of the parameter being passed to LOGPAR. LOGPAR is used only to print
input parameters to standard output. It is called from various initializing subroutines (see Figure
10.2).
PCB
This module declares and initializes variables containing the molecular weights, entropies,
enthalpies, and partition coefficients of all of the PCB congeners that can be simulated in LM3.
136
-------
SCRATCH
This module declares arrays used to store scratch memory.
SED_TRANSP_BLK
This module declares and initializes variables and arrays used for the UQ sediment column
transport scheme.
STATES
This module declares all of the indices used to uniquely identify state variables.
TIMES
This module declares and initializes variables dealing with simulation times.
WAVE_CURRENT
This module defines arrays and variables that store information used for the shear stress
calculation. Some of the information is related to waves and currents.
WTMP
This module declares arrays used to store water temperature.
VVTRBLK
This module declares and initializes variables and arrays used for the UQ water column
transport scheme.
10.1.1.6 Generic Subroutines
LM3 makes use of the FORTRAN 90 feature of generic subroutines. A generic subroutine is a
subroutine that can operate properly with many different types of input data. Generic
subroutines are implemented using a generic interface block. In LM3, only one generic
subroutine, LOGPAR, was implemented in the module PARINT (see previous section).
LOGPAR consists of three specific subroutines: LOGPAR_C, LOGPARJ, and LOGPAR_R;
each one is described below. Every time that LOGPAR is called, the compiler checks the
arguments supplied to it and invokes the specific subroutine for those arguments.
LOGPAR_C
This subroutine prints parameters of type CHARACTER to standard output.
LOGPARJ
This subroutine prints parameters of type INTEGER to standard output.
LOGPAR_R
This subroutine prints parameters of type REAL to standard output.
10.1.1.7 INCLUDE Files
LM3 makes use of INCLUDE files. INCLUDE files are not strictly speaking a feature of
FORTRAN, but rather of C. These types of files are handled by the cpp before any compilation
is done. LM3 contains only one INCLUDE file; its name is platform.h and is described below.
PLATFORM.H
137
-------
This file defines status flags for handling machine-dependent code and selective
inclusion/exclusion of source code routines for debugging.
10.2 LM3 Source and Application Management
Development of the LM3 calculation took place over five years and included a number of
program modifications by different users. The source code management tool RCS is employed
to track revision information and to assist with program documentation during the course of
development. An "official" copy of the program is kept under the administration of a source
code manager whose user name is designated "wmelende" as of this writing. All members of
the modeling group have read access to all LM3 model sources; however, only designated
modelers have write access to "repositories" or source code directories where the model code
actually resides. The LM3 model was developed under this environment. Model revisions are
periodically updated, and new source modifications are added to the LM3 repository; at the
United States Environmental Protection Agency (USEPA), Large Lakes Research Station
(LLRS), this directory is found under the Linux path /mnt/model/llrs_model/dev/LM3/RCS.
Under normal circumstances, revisions to the LM3 calculations are made by the developers and
the corresponding program executables are then generated individually by the user in his home
directory. In other words, once a particular version of LM3 has been revised by the developer,
the user obtains a copy of the source code from RCS and compiles it to generate the
corresponding executable. This executable resides in the respective user's home directory
under the Linux system. It is the responsibility of the user to make sure that the latest
source code revision as well as the appropriate corresponding executable of the LM3 branch
are used. The user determines which LM3 branch to use depending on what kind of simulation
is to be run.
The procedures for compiling and linking the LM3 program are largely automated. The Linux
make procedure was modified to retrieve the source code from the LM3 source code repository,
compile the program, and link/load the executable. If the LM3 source is already available to the
user, the application can be built using either of the commands below.
make
make nodebug
This produces an optimized version of the program with the name Im3-. A
binary containing additional symbol table and traceback information can be created using the
command:
make debug
Program binaries created using this command disable compiler optimizations and enable array
boundary violation checking. While useful for debugging, these features greatly slow the
execution of the program and should not be used unless debugging is desired.
If program source is not available to the user, it must first be recovered from the LM3 source
repository. The Linux commands for creating the application binary under these circumstances
are:
In -s /mnt/model/llrs_model/dev/LM3/RCS
co -r Makefile
138
-------
make source
make
The command "make source" can be omitted. In this case, source files will be added to the
user's default directory from the RCS repository as the LM3 application is being built. As in the
previous case, a version of the LM3 binary appropriate for debugging can be generated by
using the command "make debug" instead of simply "make." Sources for the LM3 Makefile are
appended to Section 10.3.
10.3 LM3 Support Libraries
The LM3 calculation is not a stand-alone, but it makes reference to a number of C and
FORTRAN functions and subroutines that are neither included with the source distribution nor a
part of the Linux runtime environment. At this time, three such libraries are required to build the
application: the LLRS UT library, a subset of the SNIPPETS software library, and the CDF
library. Sources for the UT library can be obtained by request from LLRS. The SNIPPETS1
and CDF2 library sources are publicly available and can be downloaded from the Internet. The
procedure for linking these packages to the LM3 application is demonstrated in the LM3 Linux
Makefile shown below.
Makefile for program {LM3}.
$ld: Makefile, v 3.2.15.24 2006/04/27
$Locker: $
Created: 10/15/95 M. Settles
Revised: 04/27/06 W. Melendez :
Revised:
Revised:
Revised:
Revised:
Revised:
Revised:
03/24/05
01/28/05
08/18/04
07/14/04
07/02/04
08/29/03
W. Melendez
W. Melendez
W. Melendez
W. Melendez
W. Melendez
W. Melendez
19:21:49 warn Exp $
Expanded the comment line
"# DO NOT DELETE THIS LINE -
make depend depends on it"
Updated make dependencies.
Updated make dependencies.
Updated make dependencies.
Updated Fortran compiler pathname on Linux.
Updated make dependencies.
Renamed cdfblk_resusp_fluxes.F,
initcdf_resusp_fluxes.F,
init_resusp_fluxes.F, and
resuspension_fluxes.F to
cdfblk_resusp_velocities.F,
1The required sources jdnlj.c and sunriset.c can be obtained from the SNIPPETS homepage at
http://www.brokersys.com/snippets/.
2CDF is a product of the National Space Science Data Center (NSSDC) at National Aeronautics
and Space Administration (NASA). The CDF libraries can be downloaded from their web page
at http://nssdc.gsfc.nasa.gov/cdf/cdf_home.html.
139
-------
#
#
#
# Revised: 08/19/03 W. Melendez :
#
#
#
#
#
# Revised: 06/10/03 W. Melendez
# Revised: 06/09/03 W. Melendez
# Revised: 06/09/03 W. Melendez
# Revised: 06/03/03 W. Melendez
# Revised: 06/03/03 W. Melendez
# Revised: 04/21/03 W. Melendez
# Revised: 04/07/03 W. Melendez
# Revised: 04/07/03 W. Melendez
# Revised: 03/12/03 W. Melendez
# Revised: 02/28/03 W. Melendez
#
#
# Revised: 12/26/02 W. Melendez :
#
#
#
#
#
# Revised: 11/20/02 W. Melendez :
#
# Revised: 11/14/02 W. Melendez :
#
#
# Revised: 06/17/02 W. Melendez :
#
#
#
# Revised: 05/21/02 W. Melendez :
# Revised: 08/10/01 W. Melendez :
# Revised: 02/12/01 W. Melendez :
#
# Revised: 11/27/00 W. Melendez :
# Revised: 10/25/00 W. Melendez :
#
#
# Revised: 06/29/00 M. Settles
# Revised: 06/09/00 M. Settles
# Revised: 06/02/00 W. Melendez :
# Revised: 05/13/00 M. Settles
# Revised: 05/11/00 M. Settles
# Revised: 12/29/99 M. Settles
# Revised: 12/29/99 M. Settles
#
£
#
initcdf_resusp_velocities.F,
init_resusp_velocities.F, and
resuspension_velocities.F.
Added four new subroutines:
cdfblk_resusp_fluxes.F,
initcdf_resusp_fluxes.F,
init_resusp_fluxes.F, and
resuspension_fluxes.F.
Updated make dependencies.
Updated make dependencies.
Removed sed_bed.o dependency.
Updated make dependencies.
Updated make dependencies.
Updated make dependencies.
Added -staticlink Lahey/Linux compiler option.
Removed -u flag from "make cppsource".
Updated dependencies.
Removed option -ng from the macro NODEBUGFLAGSJJNUX.
Updated make dependencies.
Added new subroutines.
Allow for the compilation of LM3 in both Unix and Linux.
Added new module --> pcb.F.
Added wind subroutines --> cdfblk_wind.F, initcdf_wind.F,
initwind_speed.F, and wind_speed.F.
Added PCB air concentration files -> initcdf_air_conc.F,
initair_conc.F, and air_conc_pcb.F.
Added routine fraction_pcb.F.
Added three new PCB related routines: cdfblk_pcb.F,
initcdf_pcb.F, and initparam_chem.F.
cdfblk_sa.F -> cdfblk_clay.F,
initcdf_sa.F -> initcdf_clay.F,
output_sa.F -> output_clay.F.
Removed the routines burial. F, initsedbed.F,
res_flux.F, and sed_bed.F.
Added four new routines: initsed_transpt.F,
sed transpt.F, sed transp bik.F, and exchange. F.
->V-3.2.15.
->v-3.2.13.
Removed the -g option from the NODEBUGFLAGS macro
definition.
->v-3.2.12.
Added source and object for cdfblk_ci, initcdf_ciQ, and
output_ciQ.
Updated make dependencies.
> v-3.2.11.
Added source and object for output_lm2prod().
Copy of v-3.2.8 forLMS v-3.2.9.
Update make dependencies.
Update make dependencies.
Change name from IPX --> LM3.
Copy from Makefile for IPX v-3.2.8.
140
-------
# Utility library directories and names.
# Version number
VERSION = 3.2.15
# Specify the RCS branch to be used during checkout.
CO = co -q -r$(VERSION)
# The execution shell.
SHELL = /bin/sh
# Linux copy.
CP = /bin/cp
# Linux rename
MV = /bin/mv
# The C-preprocessor.
# Some machines (SunOS) put the pre-processor in strange places.
# Just find it and stick the directory in your path.
CPP = cpp-P-C-l.
# How to delete things.
RM = /bin/rm -f
#How to update the file access dates.
TOUCH = touch -c
# The current directory.
CURRENTDIR = -I
# OSF1 compiler flags.
DEBUG = OO - g -check bounds - ladebug
NODEBUGFLAGS = -O -free $(CURRENTDIR)
DEBUGFLAGS = $(DEBUG) -DDODEBUG -free -align dcommons $(CURRENTDIR)
# Linux compiler flags.
DEBUBJJNUX = -00 -g -chk
DEBUGFLAGSJJNUX = $(DEBUG_LINUX) -staticlink -nfix-ml cdeci $(CURRENTDIR)
NODEBUGFLAGS_LINUX = -O -staticlink -trap -nchk -nfix -ml cdeci $(CURRENTDIR)
# name of the complied program binaries.
# Program LM3 binary.
LM3BIN = lm3-$(VERSION)
#Header File.
HEADER = platform.h
# names of the source files.
SOURCE = addids.F agg.F aggreg.F air_conc_chem.F bottom_vel.F carbon.F cdfblk.F
cdfblk_at.F cdfblk_ci.F cdfblk_clay.F cdfblk_eu.F cdfblk_hy.F cdfblk_pcb.F cdfblk_resusp_velocities.F
cdfblk_sed.F cdfblk_sh.F cdfblk_ti.F cdfblk_wind.F cdfparm.F chemicals.F clim.F conc.F const.F
deaggreg.F deriv.F diatoms.F dims.F dmass.F environ.F eut.F eutro.F exchange.F fiblk.F ficmax.F
fido.F fifile.F fiscale.F fiuser.F flags.F fnames.F fraction_pcb.F greens.F hydro.F initagg.F initair_conc.F
initarr.F initcdf.F initcdf_air_conc.F initcdf_at.F initcdf_ci.F initcdf_clay.F initcdf_eu.F initcdf_hy.F
141
-------
initcdf_hyd.F initcdf_ici.F initcdfJd.F initcdf_out.F initicdf_pcb.F initcdf_resusp_velocities.F
initcdf_sed.F initcdf_sh.F initcdMi.F initcdf_wind.F initconc.F initeutro.F initfir.F initkin.F initloads.F
initparam_chem.F init_resusp_velocities.F initsed_transpt.F initstates.F initwind_speed.F initwtrans.F
initfin.F ImS.F ImSbat.F ImSfin.F ImSinit.F keyschem.F keysgen.F keyskin.F keystran.F loads.F Idblk.F
logpar_c.F logparj.F logpar_r.F lun.F nitrog.F output.F output_at.F output_ci.F output_clay.F
output_eu.F output_hy.F output_12prod.F output_pcb.F output_sed.F output_sh.F output_ti.F parint.F
pcb.F phosph.F resuspension_velocities.F scratch.F sed_transpt.F sed_transp_blk.F settling.F
shear_stress.F silica.F states.F times.F tsteph.F tstepv.F updates.F volat.F vsetcal.F wave_current.F
wind_speed.F wtmp.F wtranspt.F wtrblk.F zoo.F
# names of the object files.
OBJECTS = addids.o agg.o aggreg.o air_conc_chem.o bottom_vel.o carbon.o cdfblk.o
cdfblk_at.o cdfblk_ci.o cdfblk_clay.o cdfblk_eu.o cdfblk_hy.o cdfblk_pcb.o cdfblk_resusp_velocities.o
cdfblk_sed.o cdfblk_sh.o cdfblk_ti.o cdfblk_wind.o cdfparm.o chemicals.o clim.o conc.o const.o
deaggreg.o deriv.o diatoms.o dims.o dmass.o environ.o eut.o eutro.o exchange.o fiblk.o ficmax.o
fido.o fifile.o fiscale.o fiuser.o flags.o fnames.o fraction_pcb.o greens.o hydro.o initagg.o initair_conc.o
initarr.o initcdf.o initcdf_air_conc.o initcdf_at.o initcdf_ci.o initcdf_clay.o initcdf_eu.o initcdf_hy.o
initcdf_hyd.o initcdfjci.o initcdf_id.o initcdf_out.o initicdf_pcb.o initcdf_resusp_velocities.o
initcdf_sed.o initcdf_sh.o initcdMi.o initcdf_wind.o initconc.o initeutro.o initfir.o initkin.o initloads.o
initparam_chem.o init_resusp_velocities.o initsed_transpt.o initstates.o initwind_speed.o initwtrans.o
initfin.o ImS.o ImSbat.o ImSfin.o ImSinit.o keyschem.o keysgen.o keyskin.o keystran.o loads.o Idblk.o
logpar_c.o logparj.o logpar_r.o lun.o nitrog.o output.o output_at.o output_ci.o output_clay.o
output_eu.o output_hy.o output_12prod.o output_pcb.o output_sed.o output_sh.o output_ti.o parint.o
pcb.o phosph.o resuspension_velocities.o scratch.o sed_transpt.o sed_transp_blk.o settling.o
shear_stress.o silica.o states.o times.o tsteph.o tstepv.o updates.o volat.o vsetcal.o wave_current.o
wind_speed.o wtmp.o wtranspt.o wtrblk.o zoo.o
# names of modules
MODULES = agg.mod cdfblk.mod cdfblk_at.mod cdfblk_ci.mod cdfblk_clay.mod cdfblk_eu.mod
cdfblk_hy.mod cdfblk_pcb.mod cdfblk_resusp_velocities.mod cdfblk_sed.mod cdfblk_sh.mod
cdfblk_ti.mod cdfblk_wind.mod cdfparm.mod clim.mod conc.mod const.mod dims.mod dmass.mod
environ.mod eut.mod fiblk.mod flags.mod fnames.mod job.mod Idblk.mod lun.mod parint.mod
pcb.mod scratch.mod sed_transp_blk.mod states.mod statistics.mod structure.mod times.mod
wave_current.mod wtmp.mod wtrblk.mod
# Make everything
all:
@case 'uname' in \
"OSF1") make FFLAGS=$(NODEBUGFLAGS)" $(LM3BIN) \
"CDFLIBDIR=-L/home/llrs_model/local/cdf/lib" \
CDFLIB=-lcdf \
"SNIPPETSLIBDIR=-L/home/llrs_model/dev/SNIPPETS/lib" \
"SNIPPETSLIB=-lsnippets-1.1" \
"UTLIBDIR=-L/home/llrs_model/dev/UT/lib" \
"UTLIB=-lut-1.3.2" \
"MAKE=/bin/make" \
"MAKEDEPEND=/usr/bin/X11/makedepend" \
"FC=/bin/f90"; \
;; \
"Linux") make FFLAGS="$(NODEBUGFLAGS_LINUX)"$(LM3BIN) \
"CDFLIBDIR=-L/usr/local/lib/CDF/lib" \
"CDFLIB=-lcdf \
"SNIPPETSLIBDIR=-L/usr/local/lib/SNIPPETS/lib" \
"SNIPPETSLIB=-lsnippets-1.1" \
142
-------
"UTLIBDIR=-L/usr/local/lib/UT/lib" \
UTLIB=-lut-1.3.2" \
"MAKE=/bin/make" \
"MAKEDEPEND=/usr/bin/X11/makedepend" \
"FC=/usr/local/lf9562/bin/lf95"; \
;; \
esac
debug:
@case 'uname' in \
"OSF1") make FFLAGS="$(DEBUGFLAGS)" $(LM3BIN)
"CDFLIBDIR=-L/home/llrs_model/local/cdf/lib" \
"CDFLIB=-lcdf \
"SNIPPETSLIBDIR=-L/home/llrs_model/dev/SNIPPETS/lib" \
"SNIPPETSLIB=-lsnippets-1.1" \
"UTLIBDIR=-L/home/llrs_model/dev/UTIib" \
"UTLIB=-lu-1.3.2" \
"MAKE=/bin/make" \
"FC=/bin/f90"; \
;; \
"Linux) make FFLAGS="$(DEBUGFLAGS_LINUX)" $(LM3BIN) \
"CDFLIBDIR=-L/usr/local/lib/CDF/lib" \
"CDFLIB=-lcdf \
"SNIPPETSLIBDIR=-L/usr/local/lib/SNIPPETS/lib" \
"SNIPPETS=-lsnippets-1.1" \
"UTLIBDIR=-L/usr/local/lib/UT/lib" \
"UTLIB=-lut-1.3.2" \
"MAKE=/bin/make" \
"FC=/usr/local/lf9562/bin/lf95"; \
;; \
esac
modebug:
make all
# Clean up
clean:; $(RM) $(LM3BIN) $(OBJECTS) $(MODULES)
# Update time stamps
touch:; $(TOUCH) $(SOURCE) $(HEADER)
# Link the executable
$(LM3BIN) $(OBJECTS)
$(FC) $(FFLAGS) $(PROFILE) -o $@ $(OBJECTS) $(UTLIBDIR)
$(SNIPPETSLIBDIR) $(UTLIB) $(SNIPPETSLIB) $(CDFLIBDIR) $(CDFLIB)
depend: $(SOURCE) $(HEADER)
$(MAKEDEPEND) -f$(MAKEFILE) $(CURRENTDIR) $(SOURCE) $(HEADER)
# Compile FORTRAN source
F.o:
$(FC) $(FFLAGS) $(SPEED) -free -c $<
# Source files.
source:
@case 'uname' in \
"OSF1") make cppsource \
;; \
143
-------
"Linux") make cppsource \
;; \
esac
cppsource:
$(CO) $(SOURCE) $(HEADER)
.SUFFIXES: .0 .mod .F
PRECIOUS: $(LM3BIN)
# DO NOT DELETE THIS LINE - make depend depends on it
144
-------
CHAPTER 11
DATA STRUCTURES
Numeric data processed by the LM3 calculation includes input parameter values, and a number
of output variables which are typically non-scalar and can possess detailed time and space
dependence. The Common Data Format (CDF) (Treinish and Gough, 1987; Treinish and
Goucher, 1988; Treinish, 1991; Brown et al., 1993) was developed by the National Space
Science Data Center (NSSDC) as a scientific data management tool. Its application to the Lake
Michigan Mass Balance Project (LMMBP) simulation work is to provide shared data format
linking simulations and analysis tools, field data and analysis tools, and different programs
comprising the analysis effect.
The CDF data representations (National Aeronautics and Space Administration, 1996a,b,c)
employ two principle data types. The rVariable format, described in Figure 11.1, requires that all
contributing variables have the same dimension for each record. Using this format, variables
with different array sizes or shapes are accommodated by explicitly specifying, by Boolean flag,
the variability of a particular dimension, i.e., whether or not a particular variable varied in one of
its indices. The more recently introduced zVariable data representation, portrayed in Figure
11.2, provides for variables that were specified without these limitations. Details concerning
code implementations of these data types and access to the data can be found in the CDF
reference manuals (National Aeronautics and Space Administration, 1996a,b,c). Examples can
be gleaned from the LM3 source files initcdf_*.F, and output_*; however, these are verbose and
developers are referred first to the CDF documentation.
The rVariable format is currently used to represent initial conditions. The record degree of
freedom corresponds to the segment number of the level 2 geometry in the water column case;
while it corresponds to the sediment layer number in the sediment column case. Each
simulated state is represented by a unique CDF rVariable. All remaining input and output
variables are presumed to be both time- and space-dependent and are represented using the
CDF zVariable scheme. Throughout, each zVariable record corresponded to a different
simulation time value. Details concerning each of these formats including variable names, array
shapes, and descriptions are provided in Sections 11.1 and 11.2.
11.1 Input Data Structures
Input data passed to LM3 include run-time parameter values, hydrodynamic fields, initial
conditions, and loads. Run-time input parameters are typically scalar and are frequently
modified by the user to select simulated states and to modify calibration parameters; these are
passed to the program in the Linux standard input stream, stdin, and are processed by the
145
-------
record
number
rVariable
1
rVariable
2
rVariable
n
record
1
record
2
record
3
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
record
n
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
Figure 11.1. The CDF rVariable data representation scheme.
146
-------
record
number
z Variable
1
zVariable
2
zVariable
n
record
1
record
2
record
3
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnnnn
nnn
nnn
nnn
nnn
* * *
nnn
nnn
* *
record
n
nnnnn
nnnnn
nnnnn
DDDDD
nnnnn
nnn
nnn
Figure 11.2 The CDF zVariable data representation scheme.
147
-------
FIREAD utility as described in Chapter 3. The remaining input values include initial conditions,
hydrodynamics, and load values.
7 7.7.7 Initial Conditions Data Structure
The initial conditions CDF defines are the initial concentrations for all modeled state variables,
both used and unused, of the simulation. There are two types of initial condition files; one that
specifies initial concentration values in the water column and one that specifies initial
concentration values in the sediment bed. The initial conditions CDF is the only CDF used by
LM3 that makes use of the rVariable format. Concentration values are specified using the
meter-kilogram-second (mks) unit convention consistent with the rest of the LM3 calculation.
Eutrophication solids are carbon normalized. The path for the initial input conditions file is
specified using the FIREAD input key syntax.
TILE ICI
TILE ICLSED
The initial conditions input file must be specified once and only once. The filename
corresponding to the keyname ICI corresponds to the initial concentrations in the water column
while the filename with the keyname ICI_SED corresponds to the initial concentrations in the
sediment bed. When not performing sediment bed calculations, the latter does not have to be
specified; otherwise both files have to be specified. Sediment bed calculations can be
performed only when using the branches 3.2.15, 3.2.18, and 3.2.19 of LM3. A summary of the
state variables represented in the water column initial conditions input file is provided in Tables
11.1, 11.2, and 11.3. The variables represented in the sediment column initial conditions input
file are given in Tables 11.4 and 11.5. At present, the default initial condition file for the water
column is /mnt/model/dsets/LM3/R0105/ici/ici.cdf, and the one for the sediment column is
/mnt/model/dsets/LM3/R0105/ici/ici_sed.cdf on the Linux platform at United State Environmental
Protection Agency (USEPA), Large Lakes Research Station (LLRS).
77.1.2 Hydrodynamics Data Structure
The hydrodynamics CDF provides all of the space- and time-dependent flow and dispersion
information used in the LM3 transport scheme. The data contained in this CDF is not contained
within a single file but uses a separate file for each zVariable. For technical reasons, the CDF
libraries make use of a 32-bit addressing scheme for accessing the component data files.
These files are limited to a size of 2(32"1) bytes or roughly two gigabytes. The format of the
hydrodynamics data was changed so that each of the three-dimensional variables (flow,
dispersion, and temperature) is assigned a separate CDF zVariable corresponding to the
different sigma layers of the geometry. Additional zVariables are assigned to the
hydrodynamics CDF to contain light, heat flux, and wave information for use in the
eutrophication and sediment transport calculations. The path for the hydrodynamics input file is
specified using the FIREAD input key syntax.
TILE HYDRO
The hydrodynamics input file must be specified once and only once. A summary of the
variables represented in the hydrodynamics input file is provided in Table 11.6. At present, the
148
-------
Table 11.1. Eutrophication Water Column Initial Conditions rVariables
r-Variable
DOC
DIA
GRE
ZOO
LOG
ROC
SRP
OOP
LOP
ROP
NH4
NO3
DON
LON
RON
SA
SU
Description
Dissolved organic carbon concentration
Diatom carbon concentration
Non-diatom phytoplankton concentration
Zooplankton concentration
Labile organic carbon concentration
Refractory organic carbon concentration
Soluble reactive phosphorus concentration
Dissolved organic phosphorus concentration
Labile organic phosphorus concentration
Refractory organic phosphorus concentration
Ammonia concentration
Nitrate concentration
Dissolved organic nitrogen concentration
Labile organic nitrogen concentration
Refractory organic nitrogen concentration
Available silica concentration
Paniculate biogenic silica concentration
Units Data Type
kg nf3 REAL
kg nf3 REAL
kg nf3 REAL
kg nf3 REAL
kg nf3 REAL
kg nf3 REAL
kg nf3 REAL
kg m"3 REAL
kg m"3 REAL
kg m"3 REAL
kg m"3 REAL
kg m"3 REAL
kg nf3 REAL
kg nf3 REAL
kg nf3 REAL
kg nf3 REAL
kg nf3 REAL
Dimension
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Table 11.2. PCB Water Column Initial Conditions rVariables
rVariable
PCB 5+8
PCB 15+17
PCB 16+32
PCB 18
PCB 26
PCB 28+31
PCB 33
PCB 37+42
PCB 44
PCB 49
PCB 52
PCB 56+60
PCB 66
PCB 70+76
PCB 74
PCB 77+110
PCB 81
PCB 87
PCB 84+92
PCB 89
PCB 99
PCB 101
PCB 118
PCB 123+149
Description
PCB congener 5+8 concentration
PCB congener 15+17 concentration
PCB congener 16+32 concentration
PCB congener 18 concentration
PCB congener 26 concentration
PCB congener 28+31 concentration
PCB congener 33 concentration
PCB congener 37+42 concentration
PCB congener 44 concentration
PCB congener 49 concentration
PCB congener 52 concentration
PCB congener 56+60 concentration
PCB congener 66 concentration
PCB congener 70+76 concentration
PCB congener 74 concentration
PCB congener 77+1 1 0 concentration
PCB congener 81 concentration
PCB congener 87 concentration
PCB congener 84+92 concentration
PCB congener 89 concentration
PCB congener 99 concentration
PCB congener 101 concentration
PCB congener 1 1 8 concentration
PCB congener 123+149 concentration
Units Pata
Type
kg m"3 REAL
kg m"3 REAL
kg m"3 REAL
kg m'3 REAL
kg m'3 REAL
kg m'3 REAL
kg m'3 REAL
kg m'3 REAL
kg m'3 REAL
kg m'3 REAL
kg m'3 REAL
kg m'3 REAL
kg m'3 REAL
kg m'3 REAL
kg m'3 REAL
kg m"3 REAL
kg m"3 REAL
kg m"3 REAL
kg m"3 REAL
kg m"3 REAL
kg m"3 REAL
kg m"3 REAL
kg m"3 REAL
kg m"3 REAL
Dimension
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
149
-------
Table 11.2. PCB Water Column Initial Conditions rVariables (Continued)
rVariable
PCB 105+132+153
PCB 151
PCB 138+163
PCB 170+190
PCB 172+197
PCB 180
PCB 182+187
PCB 195+208
PCB 196+203
PCB 201
PCB 146
PCB 85
Description
PCB congener 105+1 32+1 53 concentration
PCB congener 151 concentration
PCB congener 138+163 concentration
PCB congener 170+190 concentration
PCB congener 172+197 concentration
PCB congener 180 concentration
PCB congener 182+187 concentration
PCB congener 195+208 concentration
PCB congener 196+203 concentration
PCB congener 201 concentration
PCB congener 146 concentration
PCB congener 85 concentration
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
Data
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Dimension
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Table 11.3. Atrazine, Chloride, and Clay Water Column Initial Conditions rVariables
rVariable
Description
Units
Data Type
Dimension
ATZ
CL
CLAY
Atrazine concentration
Chloride concentration
Clay concentration
kg m"3
kg m"3
kg m"3
REAL
REAL
REAL
Scalar
Scalar
Scalar
Table 11.4. Eutrophication Sediment Column Initial Conditions rVariables. Array
Dimensions Refer to the Number of Surface Cells nsb
rVariable Description
Units
Data Type Dimension
DOC
LOG
ROC
SRP
OOP
LOP
ROP
NH4
N03
DON
LON
RON
SA
SU
Dissolved organic carbon concentration
Labile organic carbon concentration
Refractory organic carbon concentration
Soluble reactive phosphorus concentration
Dissolved organic phosphorus concentration
Labile organic phosphorus concentration
Refractory organic phosphorus concentration
Ammonia concentration
Nitrate concentration
Dissolved organic nitrogen concentration
Labile organic nitrogen concentration
Refractory organic nitrogen concentration
Available silica concentration
Particulate biogenic silica concentration
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
m-3
m-3
m"3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
150
-------
Table 11.5. PCB Sediment Column Initial Conditions rVariables. Array Dimensions Refer
to the Number of Surface Cells nsb
rVariable
PCB 5+8
PCB 15+17
PCB 16+32
PCB 18
PCB 26
PCB 28+31
PCB 33
PCB 37+42
PCB 44
PCB 49
PCB 52
PCB 56+60
PCB 66
PCB 70+76
PCB 74
PCB 77+110
PCB 81
PCB 87
PCB 84+92
PCB 89
PCB 99
PCB 101
PCB 118
PCB 123+149
PCB 105+132+153
PCB 151
PCB 138+163
PCB 170+190
PCB 172+197
PCB 180
PCB 182+187
PCB 195+208
PCB 196+203
PCB 201
PCB 146
PCB 85
CLAY
Description
PCB congener 5+8 concentration
PCB congener 15+17 concentration
PCB congener 16+32 concentration
PCB congener 18 concentration
PCB congener 26 concentration
PCB congener 28+31 concentration
PCB congener 33 concentration
PCB congener 37+42 concentration
PCB congener 44 concentration
PCB congener 49 concentration
PCB congener 52 concentration
PCB congener 56+60 concentration
PCB congener 66 concentration
PCB congener 70+76 concentration
PCB congener 74 concentration
PCB congener 77+1 1 0 concentration
PCB congener 81 concentration
PCB congener 87 concentration
PCB congener 84+92 concentration
PCB congener 89 concentration
PCB congener 99 concentration
PCB congener 101 concentration
PCB congener 118 concentration
PCB congener 123+149 concentration
PCB congener 105+132+153 concentration
PCB congener 151 concentration
PCB congener 138+163 concentration
PCB congener 170+190 concentration
PCB congener 172+197 concentration
PCB congener 180 concentration
PCB congener 182+187 concentration
PCB congener 195+208 concentration
PCB congener 196+203 concentration
PCB congener 201 concentration
PCB congener 146 concentration
PCB congener 85 concentration
Clay concentration
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
m-3
m"3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m"3
m"3
m"3
m"3
m"3
m"3
m"3
m-3
m-3
m"3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
m-3
Ta a Dimension
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
(1 :nsb)
151
-------
Table 11.6. Input Hydrodynamics zVariables. Array Dimensions Refer to the Number of
Layers nt, the Number of Surface Boxes nsb, and the Number of Vertically Integrated
Horizontal Flow Faces nhf2
zVariable
Description
Units Data Type Dimension
TIME JULIAN
TIME EPOCH
TIME_RUNSEC
DZ
BSAREA
BLX
BLY
VOLUME
FAREA
AVGQL,
AVGZQL,
AVGDIFFL,
AVGZDIFFL,
TEMPL,
SWR
LWR
SHF
LHF
HF
WVD
WVH
WVP
Julian day number
Calendar date and time
Simulation time
Sigma layer height
Cell surface area
Cell length in x-coordinate
Cell length in y-coordinate
Cell volumes
Vertically integrated flow face areas
Horizontal flow fields for layer C
Vertical flow fields for layer (.
Horizontal dispersion fields for layer C
Vertical dispersion fields for layer C
Water temperature for layer C
Short-wave radiation
Long-wave radiation
Sensible heat flux
Latent heat flux
Total heat flux
Wave direction
Wave height
Wave period
Days
None
s
None
m2
m
m
m3
m2
m3 s1
m3 s1
m2 s1
m2 s1
°C
W-rrT2
W-rrT2
W-rrT2
W-rrT2
W-rrT2
R
m
s
DOUBLE
CDF EPOCH
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Scalar
Scalar
Scalar
0 :n.)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nhf2)
(1:nhf2)
(1:nhf2)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
recommended default hydrodynamics file is /mnt/model/dsets/LM3/ R0105/3h/hydro94.cdf on
the Linux platform at USEPA-LLRS.
However, there are other hydrodynamics files that have been used by the modelers. One of
them is the file /mnt/model/dsets/LM3/R0105/3h_modified/hydro94.cdf which contains the same
data as the previous file except for the first 90 days of 1994. The original values for the first 90
days of 1994 were replaced by the values taken from the first 90 days of 1995. The values that
were replaced include water temperature, solar radiation, diffusion coefficients, and currents.
Another hydrodynamics file that has been used by the modelers is /mnt/model/dsets/LM3/
R0104/3h/hydro94.cdf. This file does not include any inflows and outflows, unlike the
aforementioned files and thus the lake is viewed as a closed system. This file is useful when
the user wishes to perform mass balance checks on a given nutrient or some other state
variable. A mass balance check is usually done before the user starts doing any extensive
calibration on the model.
152
-------
11.1.3 Loads Data Structure
The loads CDF files provide all of the space- and time-dependent mass loadings used in the
LM3 calculation. The data used for providing loading information are contained within two
different CDF structures and several different input files. The CDF cannot represent complex
data structures. Pointers, linked lists, and similar random access tools are not available in CDF.
It is a purely sequential access database. NSSCD plans to upgrade their product to include
more differential and data representation.
11.1.3.1 Load Location Structure
The first loads CDF structure is a load locations list that associates pre-defined load location
indices with the geometry used by the LM3 calculation. Each tributary, atmospheric, sediment,
and shoreline erosion (bluff) load grouping is given a number and this index is mapped to a
corresponding group of hydrodynamic cell numbers in the high-resolution calculation. Cell
indices corresponding to the different load locations are assigned using CDF global attributes or
gAttribute entries (National Aeronautics and Space Administration, 1996a,b,c).
There are two load locations files that have been created; one is used when running
eutrophication only, and the other is used when running polychlorinated biphenyls (PCBs) with
the eutrophication. The eutrophication calculation needs 45 load locations while the PCB
calculation needs a total of 46 load locations. The path for the load locations input file is
specified using the FIREAD input key syntax:
TILE LDLOC
The load locations file must be specified once and only once, even if mass loads are not being
applied. A summary of the gAttributes represented in the load locations input file is provided in
Table 11.7. At present, the recommended load location files are /mnt/model/dsets/LM3/
R0105/ldlocations.cdf and /mnt/model/dsets/LM3/R0105/ldlocations_pcb.cdf.
11.1.3.2 Load Mass Values Structure
The second loads CDF structure contains the load mass values themselves as well as the time
at which those loads are to be applied in the simulation. Each tributary, atmospheric, sediment,
and shoreline erosion (bluff) load grouping is represented by two CDF zVariables. The first has
the generic name Tmm and provides the Julian day number at which the load is applied for load
number In. Each zVariable corresponds to the load location with the same index In already
discussed in Table 11.7. Each load time variable Tmm contains successive CDF records run
specifying the different times at which the load number In is to be applied.
The second CDF variable specifying the corresponding load values has the generic name Ld|n.
Each zVariable corresponds to the load location with the same index In already discussed in
Table 11.7. Each load mass variable Ld|n specifies the different values of the load to be applied
at the location corresponding to In and to the time corresponding to the record number rn. A
unique load CDF input file must be provided for each simulated state for which a load is to be
153
-------
Table 11.7. Load Location gAttributes
gAttribute Name
Description
AUTHOR
MXLOC
LOC_NM
LOC_NC
LOC_CELLS_01
LOC_CELLS_02
LOC_CELLS_03
LOC_CELLS_04
LOC_CELLS_05
LOC_CELLS_06
LOC_CELLS_07
LOC_CELLS_08
LOC_CELLS_09
LOC_CELLS_10
LOC_CELLS_11
LOC_CELLS_12
LOC_CELLS_13
LOC_CELLS_14
LOC_CELLS_15
LOC_CELLS_16
LOC_CELLS_17
LOC_CELLS_18
LOC_CELLS_19
LOC_CELLS_20
LOC_CELLS_21
LOC_CELLS_22
LOC_CELLS_23
LOC_CELLS_24
LOC_CELLS_25
LOC_CELLS_26
LOC_CELLS_27
LOC_CELLS_28
LOC_CELLS_29
LOC_CELLS_30
LOC_CELLS_31
LOC_CELLS_32
LOC_CELLS_33
LOC_CELLS_34
LOC_CELLS_35
LOC_CELLS_36
LOC_CELLS_37
LOC_CELLS_38
LOC_CELLS_39
LOC_CELLS_40
LOC_CELLS_41
LOC_CELLS_42
LOC_CELLS_43
LOC_CELLS_44
LOC_CELLS_45
LOG CELLS 46
CDF author name
Maximum number of unreserved loads
List of descriptive load names
Number of cells for each load
Menominee River
Fox River
Sheboygan River
Milwaukee River
Grand Calumet River
St. Joseph River
Kalamazoo River
Grand River
Muskegon River
Pere Marquette River
Manistique River
Cedar River
Peshtigo River
Oconto River
Pensaukee River
Duck River
Kewaunee River
East Twin River
West Twin River
Manitowoc River
Root River
Black (SH) River
Black (HD) River
Pigeon River
White River
Pentwater River
Big Sable River
Manistee River
Betsie River
Boardman River
Jordan River
Sturgeon River
Whitefish River
Rapid River
Escanaba River
Ford River
Chicago SS/Canal
Straits of Mackinac
Atmospheric interface
Sediment interface
Unmonitored Kalamazoo River
Unmonitored Pere Marquette River
Milecoquins River
Galien River
Shoreline erosion load values
Atmospheric interface
154
-------
defined. The path for the load time and mass values input files is specified using the FIREAD
input key syntax.
* FILE LOAD
Only one load file may be specified for each state. States for which no load file is provided will
be simulated without mass loads. A summary of the load file update time zVariables is provided
in Table 11.8. A summary of the load file mass value zVariables is provided in Table 11.9. A
summary of the FIREAD load state number specifications and recommended load file path is
provided in Tables 11.10, 11.11, and 11.12.
11.2 Output Data Structures
Output data generated by the LM3 simulation included space- and time-dependent
concentration and mass balance information for the different studies defined within the
simulation. As with the output of the hydrodynamics program whose flow and dispersion fields
LM3 uses, the output of the water quality model calculation can be of the order of gigabytes
because dozens of state variables can be output on the high-resolution grid (see Section 5.1)
As with much of the input data, the task of organizing program output into a format easily
accessible to analysis and graphical plotting programs had been assigned for CDF, and that
data format had been employed universally to the LM3 output of space- and time-dependent
state information. State variable output is documented by LM3 within the CDF data structure;
descriptions of states are provided and units for each variable are described. As with the
program input, the C library XDR representation is used so that program output can be
accessed across platforms. Unlike the LM3 input, all CDF output files are presumed to contain
both space- and time-dependent degrees of freedom, and all output data employed the CDF
zVariable representation scheme (National Aeronautics and Space Administration, 1996a, b, c).
The details of the output structure vary depending on the study being simulated. Common to
the different simulation scenarios is the presence of timestamp information describing the
simulation time corresponding to each CDF zVariable record. This is reviewed in Section
11.2.1. Program output for hydrodynamics, shear, eutrophication, sand, atrazine, and sediment
transport are unique to each of those cases, and the CDF output appropriate to each is
discussed in Sections 11.2.2 through 11.2.8.
Beyond the selection of state variables and the study being employed, the "kinds" of program
output are limited to the choice of grid resolution. Though the simulation is always performed on
the scale of the high-resolution grid, CDF output can be generated either on the scale of this
grid or integrated onto the scale of the LMMBP coarser grid known as the level 2 grid.
High-resolution LM3 output is currently written to files with the names bdump.cdf and bdump.z*.
Output using this format is extensive and can be used to make point comparisons between
model predictions and field data from individual stations. The high-resolution model output is
also appropriate for generating maps and animation sequences that distinguish nearshore and
other small scale gradients. Coarse-resolution LM3 output is currently written to files with the
names sdump.cdf and sdump.z*. Output using this format is considerably more compact and
can be used to make point comparisons between field data averaged over the level 2
segmentation and level 2 model predictions. Both the high- and coarse-resolution CDF output
files enjoy identical internal data structures. These are discussed in the sections below.
155
-------
Table 11.8. Load File Update Time zVariables
gAttribute Name
TM 01
TM 02
TM 03
TM 04
TM 05
TM 06
TM 07
TM 08
TM 09
TM 10
TM 11
TM 12
TM 13
TM 14
TM 15
TM 16
TM 17
TM 18
TM 19
TM 20
TM 21
TM 22
TM 23
TM 24
TM 25
TM 26
TM 27
TM 28
TM 29
TM 30
TM 31
TM 32
TM 33
TM 34
TM 35
TM 36
TM 37
TM 38
TM 39
TM 40
TM 41
TM 42
TM 43
TM 44
TM 45
TM_46
Description
Update time for Menominee River load
Update time for Fox River load
Update time for Sheboygan River load
Update time for Milwaukee River load
Update time for Grand Calumet River load
Update time for St. Joseph River load
Update time for Kalamazoo River load
Update time for Grand River load
Update time for Muskegon River load
Update time for Pere Marquette River load
Update time for Manistique River load
Update time for Cedar River load
Update time for Peshtigo River load
Update time for Oconto River load
Update time for Pensaukee River load
Update time for Duck River load
Update time for Kewaunee River load
Update time for East Twin River load
Update time for West Twin River load
Update time for Manitowoc River load
Update time for Root River load
Update time for Black (SH) River load
Update time for Black (HD) River load
Update time for Pigeon River load
Update time for White River load
Update time for Pentwater River load
Update time for Big Sable River load
Update time for Manistee River load
Update time for Betsie River load
Update time for Boardman River load
Update time for Jordan River load
Update time for Sturgeon River load
Update time for Whitefish River load
Update time for Rapid River load
Update time for Escanaba River load
Update time for Ford River load
Update time for Chicago SS/Canal load
Update time for Straits of Mackinac load
Update time for atmospheric interface load
Update time for sediment interface load
Update time for unmonitored Kalamazoo River load
Update time for unmonitored Pere Marquette River load
Update time for Milecoquins River load
Update time for Galien River load
Update time for shoreline erosion load values
Update time for atmospheric interface load
Units
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
Julian days
156
-------
Table 11.9. Load File Mass Load zVariables
gAttribute Name Description
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
_01
02
03
_04
05
06
_07
08
09
10
_11
12
13
_14
15
16
17
_18
19
20
_21
22
23
24
_25
26
27
_28
29
30
31
_32
33
34
_35
36
37
38
_39
40
41
_42
43
44
_45
_46
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
Load
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
for
Menominee River load
Fox River load
Sheboygan River load
Milwaukee River load
Grand Calumet River load
St. Joseph River load
Kalamazoo River load
Grand River load
Muskegon River load
Pere Marquette River load
Manistique River load
Cedar River load
Peshtigo River load
Oconto River load
Pensaukee River load
Duck River load
Kewaunee River load
East Twin River load
West Twin River load
Manitowoc River load
Root River load
Black (SH) River load
Black (HD) River load
Pigeon River load
White River load
Pentwater River load
Big Sable River load
Manistee River load
Betsie River load
Boardman River load
Jordan River load
Sturgeon River load
Whitefish River load
Rapid River load
Escanaba River load
Ford River load
Chicago SS/Canal load
Straits of Mackinac load
atmospheric interface load
sediment interface load
unmonitored Kalamazoo River load
unmonitored Pere Marquette River load
Milecoquins River load
Galien River load
shoreline erosion load values
atmospheric interface load
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
157
-------
Table 11.10. FIREAD Eutrophication Load Names and Recommended Input Files
State Name Description
Recommended File Path
DOC
DIA
GRE
LOG
ROC
SRP
OOP
LOP
ROP
NH4
N03
DON
LON
RON
SA
SU
ZOO
Dissolved organic carbon
Diatom carbon
Non-diatom phytoplankton carbon
Labile particulate organic carbon
Refractory particulate organic carbon
Soluble reactive phosphorus
Dissolved organic phosphorus
Labile particulate organic phosphorus
Refractory particulate organic phosphorus
Ammonia
Nitrate
Dissolved organic nitrogen
Labile particulate organic nitrogen
Refractory particulate organic nitrogen
Available silica
Particulate biogenic silica
Zooplankton
/home/llrs_model/dsets/LM3/R0105/ld/ld_doc.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_dia.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_gre.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_lpoc.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_rpoc.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_srp.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_dop.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_lop.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_rop.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_nh4.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_no3.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_don.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_lon.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_ron.cdf
/home/llrs_model/dsets/LM3/R0105/ld/ld_sa.cdf
No loads file
No loads file
Table 11.11. FIREAD PCB Load Names and Recommended Input Files
State Name Description
Recommended File Path
PCB_5+8
PCB_15+17
PCB_16+32
PCB_18
PCB_26
PCB_28+31
PCB_33
PCB_37+42
PCB_44
PCB_49
PCB_52
PCB_56+60
PCB_66
PCB_70+76
PCB_74
PCB_77+110
PCB_81
PCB_87
PCB_84+92
PCB_89
PCB_99
PCB_101
PCB_118
PCB_123+149
PCB_105+132+153
PCB_151
PCB_138+163
PCB_170+190
PCB_172+197
PCB_180
PCB_182+187
PCB_195+208
PCB_196+203
PCB_201
PCB_146
PCB 85
PCB congener 5+8 concentration /home/llrs_
PCB congener 15+17 concentration /home/llrs_
PCB congener 16+32 concentration /home/llrs_
PCB congener 18 concentration /home/llrs_
PCB congener 26 concentration /home/llrs_
PCB congener 28+31 concentration /home/llrs_
PCB congener 33 concentration /home/llrs_
PCB congener 37+42 concentration /home/llrs_
PCB congener 44 concentration /home/llrs_
PCB congener 49 concentration /home/llrs_
PCB congener 52 concentration /home/llrs_
PCB congener 56+60 concentration /home/llrs_
PCB congener 66 concentration /home/llrs_
PCB congener 70+76 concentration /home/llrs_
PCB congener 74 concentration /home/llrs_
PCB congener 77+110 concentration /home/llrs_
PCB congener 81 concentration /home/llrs_
PCB congener 87 concentration /home/llrs_
PCB congener 84+92 concentration /home/llrs_
PCB congener 89 concentration /home/llrs_
PCB congener 99 concentration /home/llrs_
PCB congener 101 concentration /home/llrs_
PCB congener 118 concentration /home/llrs_
PCB congener 123+149 concentration /home/llrs_
PCB congener 105+132+153 concentration /home/llrs_
PCB congener 151 concentration /home/llrs_
PCB congener 138+163 concentration /home/llrs_
PCB congener 170+190 concentration /home/llrs_
PCB congener 172+197 concentration /home/llrs_
PCB congener 180 concentration /home/llrs_
PCB congener 182+187 concentration /home/llrs_
PCB congener 195+208 concentration /home/llrs_
PCB congener 196+203 concentration /home/llrs_
PCB congener 201 concentration /home/llrs_
PCB congener 146 concentration /home/llrs_
PCB congener 85 concentration /home/llrs_
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb"
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
model/dsets/LM3/R0105/ld/ld_pcb
5+8.cdf
15+17.cdf
16+32.cdf
18.cdf
26.cdf
28+31.cdf
33.cdf
37+42.cdf
44.cdf
49.cdf
52.cdf
56+60.cdf
66.cdf
70+76.cdf
74.cdf
77+110.cdf
81.cdf
87.cdf
84+92.cdf
89.cdf
99.cdf
101 .cdf
118.cdf
123+149.cdf
105+132+153.cdf
151 .cdf
138+163.cdf
170+190.cdf
172+197.cdf
180.cdf
182+187.cdf
195+208.cdf
'l96+203.cdf
201 .cdf
146.cdf
85.cdf
158
-------
Table 11.12. FIREAD Atrazine, Chloride, and Clay Load Names and Recommended Input
Files
State Name Description Recommended File Path
ATZ Atrazine /home/llrs_model/dsets/LM3/R0105/ld/ld_atz.cdf or
/home/llrs_model/dsets/LM3/R0105/ld/ld_041129atz.cdf or
/home/llrs_model/dsets/LM3/R0105/ld/ld_041129atz.cdf
CL Chloride /home/llrs_model/dsets/LM3/R0105/ld/ld_cl.cdf
CLAY Clay No loads file at the present time
77.Z7 Timestamps
Three timestamp zVariables are written for each CDF output record. These correspond to a
conventional time value that can be interpreted by analysis software, a time value that can be
interpreted by the CDF applications and libraries and viewed as an easily recognizable calendar
date, and the internal timestamp used by the LM3 simulation.
Quoting from the SNIPPETS library source: "Julian Day Numbers (JDN) are used by
astronomers as a date/time measure independent of calendars and convenient for computing
the elapsed time between dates. The JDN for any date/time is the number of days (including
fractional days) elapsed since noon, 1 Jan 4713 BC. JDN was originated by Joseph Scaliger in
1582 and named after his father Julius. They are not related to the Julian calendar". The JDN
at the start of the LMMBP study period was 2,449,352.5. The calendar date value is most often
used by users perusing the CDF output directly using tools such as cdfedit to infer calendar
values for each of the corresponding output records. The actual format of this data is intrinsic to
the CDF library and application distribution and must be interpreted through CDF. The LM3
timestamp is a counter of the number of simulated seconds beginning with the start of the
hydrodynamic input; this does not necessarily correspond to the start of the LM3 simulation run
because several days of hydrodynamic input are typically skipped to account for stabilization of
the simulated current and dispersion fields. A summary of these timestamps and their
corresponding CDF zVariables is provided in Table 11.13.
11.2.2 Hydrodynamics
Hydrodynamics are not simulated by the LM3 program, but are simply read bootstrap and used
in performing transport of simulated states. Values passed from input to the LM3 output have
Table 11.13. Output Simulation Time zVariables
zVariable Description Units Data Type Dimension
TIME JULIAN
TIME EPOCH
TIME RUNSEC
Julian day number
Calendar date and time
Simulation timestamp
Days
None
s
DOUBLE
CDF EPOCH
DOUBLE
Scalar
Scalar
Scalar
159
-------
already been described in Section 11.1.2. Unlike the input hydrodynamics values, output values
are written at considerably longer time intervals, and zVariables for the output variables are not
split by vertical layer number L Also, current velocities are written instead of flows, and these,
and values for the dispersion rates, are averaged between flow faces that bound the cells so
that the resulting values are defined at the cell centers instead of the flow faces. A list of these
output zVariables is provided in Table 11.14.
Table 11.14. Output Hydrodynamics zVariables. Array Dimensions Refer to the Number
of Cells nc
zVariable
Description
Units
Data Type Dimension
VOL
TEM
X CURRENT
Y CURRENT
AVGDIFF
AVGZDIFF
Cell volumes
Temperature
Currents X-component
Currents Y-component
Horizontal dispersion fields
Vertical dispersion fields
m3
°C
m-s-1
m s"1
m2 s-1
m2 s-1
DOUBLE (1:nc)
REAL (1:nc)
REAL (1:nc)
REAL (1:nc)
REAL (1:nc)
REAL (1:nc)
11.2.3 Shear Calculations
Shear stress calculations can be performed in LM3. Shear stress is not being used within LM3
because a fully developed sediment resuspension scheme has not been implemented as of this
writing. We are expecting to have a more complete sediment transport algorithm in the future.
Nevertheless, the shear stress calculation is available in the program for anybody to test and
output. Variables that can be written to output correspond to values of bottom shear stress.
Also other variables that can be written are the input values of wave direction, wave height, and
wave period. A list of these output zVariables is provided in Table 11.15.
11.2.4 Eutrophication
Eutrophication and the autochthonous production of solids involve the simulation of more than a
dozen of states and their relationships via kinetic processes that can transform one state to
Table 11.15. Shear Calculation zVariables.
Surface Cells nsb
Array Dimensions Refer to the Number of
zVariable
Description
Units
Data Type Dimension
SHEAR STRESS
WVD
WVH
WVP
Bottom shear stress
Wave direction
Significant wave height
Significant wave period
N rrf2
R
m
s
REAL
REAL
REAL
REAL
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
160
-------
another (see Chapter 6). Carbon in the forms of dissolved organic carbon (DOC), diatoms, non-
diatom phytoplankton, zooplankton, refractory detrital carbon (RDC), and labile detrital carbon
(LDC) are simulated and output as volumetric concentrations. There are several phosphorus,
nitrogen, and silica states. The specific states include the inorganic/available and
organic/unavailable components of these nutrients. The total list of concentration zVariables for
these eutrophication simulation states is provided in Table 11.16.
Table 11.16. Eutrophication State Concentration zVariables. Array Dimensions Refer to
the Number of Cells nc
zVariable Description
Units Data Type Dimension
DOC
DIA
GRE
ZOO
LOG
ROC
SRP
OOP
LOP
ROP
NH4
N03
DON
LON
RON
SA
SU
Dissolved organic carbon concentration
Diatom carbon concentration
Non-diatom phytoplankton concentration
Zooplankton concentration
Labile organic carbon concentration
Refractory organic carbon concentration
Soluble reactive phosphorus concentration
Dissolved organic phosphorus concentration
Labile organic phosphorus concentration
Refractory organic phosphorus concentration
Ammonia concentration
Nitrate concentration
Dissolved organic nitrogen concentration
Labile organic nitrogen concentration
Refractory organic nitrogen concentration
Available silica concentration
Particulate biogenic silica concentration
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
:nc)
A lake-wide mass and time-integrated load calculation for each of the eutrophication states is
also written to output when mass balance calculations are enabled. The CDF zVariables
corresponding to these lake-wide masses are listed in Table 11.17. Time-integrated settling
loss of state masses and settling rates for the phytoplankton, particulate detrital carbon (PDC),
and particulate nutrient states are also written as part of the mass balance information for the
eutrophication study, and corresponding zVariables are summarized in Table 11.18.
Growth limitation factors for the eutrophication kinetics can also be written to the output CDF.
These include the calculated limitation factors for light, temperature, nitrogen, silica, and
phosphorus for diatoms; and light, temperature, nitrogen, and phosphorus for the non-diatom
phytoplankton state variable. zVariables for the growth limitation factors are provided in Table
11.19.
11.2.5 PCB Congeners
There are 36 PCB congener groups currently simulated within the LM3 application. PCBs
undergo transport and kinetics processes in the water column. PCBs partition with respect to
carbon-based solids and their water concentration can exist in dissolved and particulate forms.
161
-------
Table 11.17. Lake-wide Eutrophication State Mass and Load zVariables
zVariable
DOC MS
DIA MS
GRE MS
ZOO MS
LOG MS
ROC_MS
SRP MS
OOP MS
LOP_MS
ROP_MS
NH4 MS
NO3 MS
DON MS
LON MS
RON_MS
SA MS
SU MS
DOC LD
DIA LD
GRE LD
ZOO LD
LOG LD
ROC LD
SRP LD
OOP LD
LOP_LD
ROP_LD
NH4 LD
NO3 LK
DON LD
LON LD
RON_LD
SA LD
SU_LD
Description
Dissolved organic carbon mass
Diatom carbon mass
Non-diatom phytoplankton mass
Zooplankton mass
Labile particulate organic carbon mass
Refractory particulate organic carbon
mass
Soluble reactive phosphorus mass
Dissolved organic phosphorus mass
Labile particulate organic phosphorus
mass
Refractory particulate organic phosphorus
mass
Ammonia mass
Nitrate mass
Dissolved organic nitrogen mass
Labile particulate organic nitrogen mass
Refractory particulate organic nitrogen
mass
Available silica mass
Particulate biogenic silica mass
Dissolved organic carbon load
Diatom carbon load
Non-diatom phytoplankton load
Zooplankton load
Labile particulate organic carbon load
Refractory particulate organic carbon load
Soluble reactive phosphorus load
Dissolved organic phosphorus load
Labile particulate organic phosphorus
load
Refractory particulate organic phosphorus
load
Ammonia load
Nitrate load
Dissolved organic nitrogen load
Labile particulate organic nitrogen load
Refractory particulate organic nitrogen
load
Available silica load
Particulate biogenic silica load
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
Data
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Dimension
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
162
-------
Table 11.18 Eutrophication Settling Losses and Rates zVariables.
Refer to the Number of Surface Cells nsb
Array Dimensions
zVariable Description
Units Data Type Dimension
DIA SET
GRE SET
LOG SET
ROC SET
LOP SET
ROP SET
DON SET
LON SET
RON SET
SU SET
DIA SETRT
GRE SETRT
LOG SETRT
ROC SETRT
LOP SETRT
ROP SETRT
DON SETRT
LON SETRT
RON SETRT
SU SETRT
Diatom carbon settling loss
Non-diatom phytoplankton settling loss
Labile organic carbon settling loss
Refractory organic carbon settling loss
Labile organic phosphorus settling loss
Refractory organic phosphorus settling loss
Dissolved organic nitrogen settling loss
Labile organic nitrogen settling loss
Refractory organic nitrogen settling loss
Paniculate biogenic silica settling loss
Diatom carbon settling loss rate
Non-diatom phytoplankton settling loss rate
Labile organic carbon settling loss rate
Refractory organic carbon settling loss rate
Labile organic phosphorus settling loss rate
Refractory organic phosphorus settling loss rate
Dissolved organic nitrogen settling loss rate
Labile organic nitrogen settling loss rate
Refractory organic nitrogen settling loss rate
Particulate biogenic silica settling loss rate
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
s1
s1
s1
s1
s1
s1
s1
s1
s1
s1
s1
s1
s1
s1
s1
s1
s1
s1
s1
s1
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
:nsb)
Table 11.19. Phytoplankton Growth Limitation Factor zVariables.
Refer to the Number of Cells nc
Array Dimensions
zVariable
PFD
SFD
NFD
IFD
TFD
PFG
NFG
IFG
TFG
Description
Phosphorus limitation for diatoms
Silica limitation for diatoms
Nitrogen limitation for diatoms
Light limitation for diatoms
Temperature limitation for diatoms
Phosphorus limitation for non-diatom phytoplankton
Nitrogen limitation for non-diatom phytoplankton
Light limitation for non-diatom phytoplankton
Temperature limitation for non-diatom phytoplankton
Units
None
None
None
None
None
None
None
None
None
Data
T Dimension
Type
REAL (1:nc)
REAL (1:nc)
REAL (1:nc)
REAL (1:nc)
REAL (1:nc)
REAL (1:nc)
REAL (1:nc)
REAL (1:nc)
REAL (1:nc)
There are three separate PCB congener water concentrations that are written to output: total,
dissolved, and paniculate. The list of the PCB congener total water concentration zVariables is
given in Table 11.20. The list of the PCB congener dissolved water concentration zVariables is
given in Table 11.21. The list of the PCB congener paniculate water concentration zVariables is
given in Table 11.22.
A lake-wide mass and time-integrated total load mass calculation for each of the PCB congener
states is also written to output when mass balance calculations are enabled. The CDF
zVariables corresponding to the lake-wide PCB congener masses are listed in Table 11.23.
163
-------
Table 11.20. PCB Congener Total Water Concentration zVariables.
Refer to the Number of Cells nc
Array Dimensions
zVariable
PCB
5+8
PCB15+17
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB_
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB_
PCB
PCB
PCB
PCB
16+32
18
26
28+31
33
37+42
44
49
52
56+60
66
70+76
74
77+110
81
87
84+92
89
99
101
118
123+149
105+132
+153
PCB
PCB
PCB
PCB
PCB
PCB
PCB_
PCB
PCB
PCB
PCB
151
138+163
_1 70+1 90
172+197
180
182+187
195+208
196+203
201
146
85
Description
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
5+8 total concentration
1 5+1 7 total concentration
1 6+32 total concentration
1 8 total concentration
26 total concentration
28+31 total concentration
33 total concentration
37+42 total concentration
44 total concentration
49 total concentration
52 total concentration
56+60 total concentration
66 total concentration
70+76 total concentration
74 total concentration
77+110 total concentration
81 total concentration
87 total concentration
84+92 total concentration
89 total concentration
99 total concentration
101 total concentration
118 total concentration
1 23+1 49 total concentration
105+1 32+1 53 total
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
I? Dimension
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
(line
(1:nc
(1:nc
(1:nc
(1:nc
(1:nc
\ ' **C
\ ' **C
\ ' **C
\ ' **C
\ ' **C
\ ' **C
(1:nc
(1:nc
(1:nc
(1:nc
(1:nc
\ ' **C
\ ' **C
\ ' **C
\ ' **C
\ ' **C
\ ' **C
(1:nc
(1:nc
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
concentration
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
151 total concentration
138+163 total concentration
1 70+1 90 total concentration
172+197 total concentration
180 total concentration
182+187 total concentration
195+208 total concentration
196+203 total concentration
201 total concentration
1 46 total concentration
85 total concentration
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
m
m
m
m
m
m
m
m
m
m
m
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
(1:nc
(1:nc
(1:nc
\ ' **C
\ ' **C
\ ' **C
\ ' ^C
\ ' ^C
(1:nc
(1:nc
(1:nc
)
)
)
)
)
)
)
)
)
)
)
164
-------
Table 11.21. PCB Congener Dissolved Water Concentration zVariables. Array
Dimensions Refer to the Number of Cells nc
zVariable
PCB
_5+8_DIS
PCB15+17 DIS
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
16+32 DIS
18 DIS
_26_DIS
28+31 DIS
_33_DIS
37+42 DIS
44 DIS
49 DIS
_52_DIS
56+60 DIS
66 DIS
70+76 DIS
74 DIS
77+110 DIS
81 DIS
87 DIS
84+92 DIS
_89_DIS
99 DIS
101 DIS
_118_DIS
_123+149_DIS
_1 05+1 32+1 53_DIS
Description
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
5+8 dissolved concentration
15+17 dissolved concentration
16+32 dissolved concentration
18 dissolved concentration
26 dissolved concentration
28+31 dissolved concentration
33 dissolved concentration
37+42 dissolved concentration
44 dissolved concentration
49 dissolved concentration
52 dissolved concentration
56+60 dissolved concentration
66 dissolved concentration
70+76 dissolved concentration
74 dissolved concentration
77+110 dissolved concentration
81 dissolved concentration
87 dissolved concentration
84+92 dissolved concentration
89 dissolved concentration
99 dissolved concentration
101 dissolved concentration
118 dissolved concentration
123+149 dissolved concentration
105+1 32+1 53 dissolved
concentration
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
_151_DIS
138+163 DIS
_170+190_DIS
_172+197_DIS
180 DIS
_182+187_DIS
_195+208_DIS
196+203 DIS
201 DIS
_146_DIS
_85_DIS
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
151 dissolved concentration
138+163 dissolved concentration
170+190 dissolved concentration
172+197 dissolved concentration
180 dissolved concentration
182+187 dissolved concentration
195+208 dissolved concentration
196+203 dissolved concentration
201 dissolved concentration
146 dissolved concentration
85 dissolved concentration
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
Data
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Dimension
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
165
-------
Table 11.22. PCB Congener Paniculate Water
Dimensions Refer to the Number of Cells nc
Concentration zVariables. Array
zVariable
PCB
_5+8_PART
PCB15+17 PART
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
16+32 PART
_1 8_PART
_26_PART
28+31 PART
_33_PART
_37+42_PART
44 PART
49 PART
_52_PART
56+60 PART
66 PART
70+76 PART
74 PART
77+110 PART
Description
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
5+8 paniculate concentration
15+17 particulate concentration
16+32 particulate concentration
18 particulate concentration
26 particulate concentration
28+31 particulate concentration
33 particulate concentration
37+42 particulate concentration
44 particulate concentration
49 particulate concentration
52 particulate concentration
56+60 particulate concentration
66 particulate concentration
70+76 particulate concentration
74 particulate concentration
77+110 particulate
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
Data .
-.. Dimension
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
c)
concentration
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
81 PART
87 PART
_84+92_PART
89 PART
99 PART
_101_PART
_1 1 8_PART
_123+149_PART
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
congener
congener
congener
congener
congener
congener
congener
congener
81 particulate concentration
87 particulate concentration
84+92 particulate concentration
89 particulate concentration
99 particulate concentration
101 particulate concentration
118 particulate concentration
123+149 particulate
kg
kg
kg
kg
kg
kg
kg
kg
m
m
m
m
m
m
m
m
-3
-3
-3
-3
-3
-3
-3
-3
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
(1
(1
(1
(1
(1
(1
(1
(1
:n
:n
:n
:n
:n
:n
:n
:n
c)
c)
c)
c)
c)
c)
c)
c)
concentration
PCB
_1 05+1 32+1 53_PART
PCB
congener
105+132+153 particulate
kg
m
-3
REAL
(1
:n
c)
concentration
PCB
PCB
_151_PART
_138+163_PART
PCB
PCB
congener
congener
151 particulate concentration
138+163 particulate
kg
kg
m
m
-3
-3
REAL
REAL
(1
(1
:n
:n
c)
c)
concentration
PCB
_170+190_PART
PCB
congener
170+190 particulate
kg
m
-3
REAL
(1
:n
c)
concentration
PCB
_172+197_PART
PCB
congener
172+197 particulate
kg
m
-3
REAL
(1
:n
c)
concentration
PCB
PCB
_1 80_PART
_182+187_PART
PCB
PCB
congener
congener
180 particulate concentration
182+187 particulate
kg
kg
m
m
-3
-3
REAL
REAL
(1
(1
:n
:n
c)
c)
concentration
PCB
_195+208_PART
PCB
congener
195+208 particulate
kg
m
-3
REAL
(1
:n
c)
concentration
PCB
_196+203_PART
PCB
congener
196+203 particulate
kg
m
-3
REAL
(1
:n
c)
concentration
PCB
PCB
PCB
201 PART
146 PART
85 PART
PCB
PCB
PCB
congener
congener
congener
201 particulate concentration
146 particulate concentration
85 particulate concentration
kg
kg
kg
m
m
m
-3
-3
-3
REAL
REAL
REAL
(1
(1
(1
:n
:n
:n
c)
c)
c)
166
-------
Table 11.23. PCB Congener Water Column Mass zVariables
zVariable
PCB 5+8 MS
PCB15+17 MS
PCB 16+32 MS
PCB 18 MS
PCB 26 MS
PCB 28+31 MS
PCB_33_MS
PCB 37+42 MS
PCB 44 MS
PCB 49 MS
PCB_52_MS
PCB_56+60_MS
PCB 66 MS
PCB 70+76 MS
PCB 74 MS
PCB_77+110_MS
PCB 81 MS
PCB_87_MS
PCB 84+92 MS
PCB_89_MS
PCB 99 MS
PCB 101 MS
PCB 118 MS
PCB_123+149_MS
PCB_1 05+1 32+1 53_MS
PCB_151_MS
PCB_138+163_MS
PCB _1 70+1 90_MS
PCB_172+197_MS
PCB 180 MS
PCB_182+187_MS
PCB_195+208_MS
PCB_196+203_MS
PCB_201_MS
PCB 146 MS
PCB_85_MS
Description
PCB congener 5+8 water column mass
PCB congener 1 5+1 7 water column mass
PCB congener 1 6+32 water column mass
PCB congener 18 water column mass
PCB congener 26 water column mass
PCB congener 28+31 water column mass
PCB congener 33 water column mass
PCB congener 37+42 water column mass
PCB congener 44 water column mass
PCB congener 49 water column mass
PCB congener 52 water column mass
PCB congener 56+60 water column mass
PCB congener 66 water column mass
PCB congener 70+76 water column mass
PCB congener 74 water column mass
PCB congener 77+110 water column
mass
PCB congener 81 water column mass
PCB congener 87 water column mass
PCB congener 84+92 water column mass
PCB congener 89 water column mass
PCB congener 99 water column mass
PCB congener 101 water column mass
PCB congener 118 water column mass
PCB congener 1 23+1 49 water column
mass
PCB congener 105+132+153 water
column mass
PCB congener 151 water column mass
PCB congener 138+163 water column
mass
PCB congener 1 70+1 90 water column
mass
PCB congener 172+197 water column
mass
PCB congener 180 water column mass
PCB congener 182+187 water column
mass
PCB congener 195+208 water column
mass
PCB congener 196+203 water column
mass
PCB congener 201 water column mass
PCB congener 1 46 water column mass
PCB congener 85 water column mass
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
Data
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Dimension
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
167
-------
The CDF zVariables corresponding to the PCB congener total load masses are given in Table
11.24.
PCB congeners are subject to settling in the water column because they partition to carbon-
based states of which some settle. The list of the CDF zVariables corresponding to the PCB
congener masses lost due to settling is given in Table 11.25 The list of the CDF zVariables
corresponding to the PCB congener settling loss rates is given in Table 11.26
Volatilization is an important sink or source for PCB congeners in the lake. There are three
separate volatilization process-related masses written to output. The transfer of PCBs from the
air into the water column represents an absorption process and, therefore, an increase in the
amount of PCB lake-wide masses. The list of the CDF zVariables corresponding to the lake-
wide absorbed mass of a given PCB congener is given in Table 11.27. The transfer of PCBs
from the water column to the atmosphere represents a loss of PCB mass from the lake. The
CDF zVariables corresponding to these lost masses are given in Table 11.28.
The net transfer of PCBs across the air-water interface is represented by the CDF zVariables
listed in Table 11.29.
11.2.6 Clay
The clay state and its output information was added to LM3. Clay is analogous to several of the
eutrophication states in that it describes a suspended solid subject to settling. Concentration,
lake-wide mass, loads, settling losses, and settling loss rates are calculated by LM3 and written
to the output CDF. The corresponding zVariables are all summarized in Table 11.30. Unlike
the eutrophication study, clay is presumed not to undergo any kinetics or transport-independent
process, making it an ideal state variable for examining the simulation of high-resolution
transport for the LMMBP.
11.2.7 Atrazine
Atrazine is one of the simplest of the LM3 state variables as it is subject only to advection,
dispersion, volatilization, and a lumped-sum decay factor. Atrazine is not subject to settling in
the water column. Consequently, it does not accumulate in the sediment bed. This means that
no sediment transport is needed when running an atrazine simulation.
Atrazine state concentrations, lake-wide mass, and time-integrated load values are written to
the output CDF and these are shown in Table 11.31 under the zVariables names of ATZ,
ATZ_MS, and ATZ_LD, respectively.
Atrazine volatilization is written to the CDF output as three separate items. These items are the
mass absorbed into the water column from the atmosphere, the mass lost from the water
column into the atmosphere, and the net mass gained in the lake. These items are shown in
Table 11.31 by the zVariable names of ATZ_VLT_IN, ATZ_VLT_OUT, and ATZ_VLT_NET,
respectively.
The atrazine mass that is lost in the water column due to a lumped-sum decay is written to the
output CDF under the zVariable name of ATZ_DECAY_MASS as shown in Table 11.31.
168
-------
Table 11.24. PCB Congener Load Mass zVariables
zVariable
PCB_5+8_LD
PCB15+17 LD
PCB 16+32 LD
PCB 18 LD
PCB_26_LD
PCB 28+31 LD
PCB_33_LD
PCB 37+42 LD
PCB 44 LD
PCB 49 LD
PCB_52_LD
PCB 56+60 LD
PCB_66_LD
PCB 70+76 LD
PCB_74_LD
PCB 77+110 LD
PCB 81 LD
PCB 87 LD
PCB_84+92_LD
PCB 89 LD
PCB_99_LD
PCB 101 LD
PCB_118_LD
PCB 123+149 LD
PCB_105+132+153_LD
PCB_151_LD
PCB 138+163 LD
PCB _1 70+1 90_LD
PCB 172+197 LD
PCB_180_LD
PCB 182+187 LD
PCB_195+208_LD
PCB 196+203 LD
PCB_201_LD
PCB 146 LD
PCB_85_LD
Description
PCB congener 5+8 load
PCB congener 15+17 load
PCB congener 16+32 load
PCB congener 18 load
PCB congener 26 load
PCB congener 28+31 load
PCB congener 33 load
PCB congener 37+42 load
PCB congener 44 load
PCB congener 49 load
PCB congener 52 load
PCB congener 56+60 load
PCB congener 66 load
PCB congener 70+76 load
PCB congener 74 load
PCB congener 77+110 load
PCB congener 81 load
PCB congener 87 load
PCB congener 84+92 load
PCB congener 89 load
PCB congener 99 load
PCB congener 101 load
PCB congener 118 load
PCB congener 123+149 load
PCB congener 105+132 + 153
load
PCB congener 151 load
PCB congener 138+163 load
PCB congener 170+190 load
PCB congener 172+197 load
PCB congener 180 load
PCB congener 182+187 load
PCB congener 195+208 load
PCB congener 196+203 load
PCB congener 201 load
PCB congener 146 load
PCB congener 85 load
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
Data
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Dimension
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
169
-------
Table 11.25. PCB Congener Settling Loss zVariables. Array Dimensions Refer to the
Number of Surface Cells nsb
zVariable
PCB 5+8 SET
PCB15+17 SET
PCB 16+32 SET
PCB 18 SET
PCB 26 SET
PCB 28+31 SET
PCB_33_SET
PCB 37+42 SET
PCB 44 SET
PCB 49 SET
PCB 52 SET
PCB 56+60 SET
PCB_66_SET
PCB 70+76 SET
PCB 74 SET
PCB 77+110 SET
PCB 81 SET
PCB 87 SET
PCB 84+92 SET
PCB 89 SET
PCB 99 SET
PCB 101 SET
PCB 118 SET
PCB_123+149_SET
PCB_1 05+1 32+1 53_SET
PCB 151 SET
PCB 138+163 SET
PCB 170+190 SET
PCB_172+197_SET
PCB 180 SET
PCB 182+187 SET
PCB_195+208_SET
PCB 196+203 SET
PCB 201 SET
PCB 146 SET
PCB 85 SET
Description
PCB congener 5+8 settling loss
PCB congener 15+17 settling loss
PCB congener 16+32 settling loss
PCB congener 18 settling loss
PCB congener 26 settling loss
PCB congener 28+31 settling loss
PCB congener 33 settling loss
PCB congener 37+42 settling loss
PCB congener 44 settling loss
PCB congener 49 settling loss
PCB congener 52 settling loss
PCB congener 56+60 settling loss
PCB congener 66 settling loss
PCB congener 70+76 settling loss
PCB congener 74 settling loss
PCB congener 77+1 10 settling loss
PCB congener 81 settling loss
PCB congener 87 settling loss
PCB congener 84+92 settling loss
PCB congener 89 settling loss
PCB congener 99 settling loss
PCB congener 101 settling loss
PCB congener 118 settling loss
PCB congener 123+149 settling
loss
PCB congener 1 05+1 32+1 53 settling
loss
PCB congener 151 settling loss
PCB congener 138+163 settling loss
PCB congener 170+190 settling loss
PCB congener 172+197 settling loss
PCB congener 180 settling loss
PCB congener 182+187 settling loss
PCB congener 195+208 settling loss
PCB congener 196+203 settling loss
PCB congener 201 settling loss
PCB congener 146 settling loss
PCB congener 85 settling loss
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
Data
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Dimension
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
(1:nsb)
170
-------
Table 11.26. PCB Congener Settling Loss Rate zVariables. Array Dimensions Refer to
the Number of Surface Cells nsb
zVariable
PCB 5+8 SETRT
PCB15+17_SETRT
PCB 16+32 SETRT
PCB 18 SETRT
PCB_26_SETRT
PCB_28+31_SETRT
PCB 33 SETRT
PCB 37+42 SETRT
PCB 44 SETRT
PCB 49 SETRT
PCB 52 SETRT
PCB 56+60 SETRT
PCB 66 SETRT
PCB 70+76 SETRT
PCB 74 SETRT
PCB_77+110_SETRT
PCB 81 SETRT
PCB 87 SETRT
PCB 84+92 SETRT
PCB 89 SETRT
PCB 99 SETRT
PCB 101 SETRT
PCB_118_SETRT
PCB_123+149_SETRT
PCB_1 05+1 32+1 53_SETRT
PCB 151 SETRT
PCB_138+163_SETRT
PCB_170+190_SETRT
PCB_172+197_SETRT
PCB_180_SETRT
PCB_182+187_SETRT
PCB_195+208_SETRT
PCB_196+203_SETRT
PCB 201 SETRT
PCB 146 SETRT
PCB 85 SETRT
Description
PCB congener 5+8 settling loss rate
PCB congener 15+1 7 settling loss rate
PCB congener 16+32 settling loss rate
PCB congener 18 settling loss rate
PCB congener 26 settling loss rate
PCB congener 28+31 settling loss rate
PCB congener 33 settling loss rate
PCB congener 37+42 settling loss rate
PCB congener 44 settling loss rate
PCB congener 49 settling loss rate
PCB congener 52 settling loss rate
PCB congener 56+60 settling loss rate
PCB congener 66 settling loss rate
PCB congener 70+76 settling loss rate
PCB congener 74 settling loss rate
PCB congener 77+1 10 settling loss
rate
PCB congener 81 settling loss rate
PCB congener 87 settling loss rate
PCB congener 84+92 settling loss rate
PCB congener 89 settling loss rate
PCB congener 99 settling loss rate
PCB congener 101 settling loss rate
PCB congener 118 settling loss rate
PCB congener 123+149 settling loss
rate
PCB congener 105+132+153 settling
loss rate
PCB congener 151 settling loss rate
PCB congener 138+163 settling loss
rate
PCB congener 170+190 settling loss
rate
PCB congener 172+197 settling loss
rate
PCB congener 180 settling loss rate
PCB congener 182+187 settling loss
rate
PCB congener 195+208 settling loss
rate
PCB congener 196+203 settling loss
rate
PCB congener 201 settling loss rate
PCB congener 146 settling loss rate
PCB congener 85 settling loss rate
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
Data
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Dimension
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
0 :nsb)
171
-------
Table 11.27. Volatilization Absorbed Mass Output zVariables
zVariable
PCB 5+8 VLT IN
PCB15+17_VLT_IN
PCB_16+32_VLT_IN
PCB 18 VLT IN
PCB 26 VLT IN
PCB_28+31_VLT_IN
PCB 33 VLT IN
PCB_37+42_VLT_IN
PCB 44 VLT IN
PCB 49 VLT IN
PCB 52 VLT IN
PCB_56+60_VLT_IN
PCB 66 VLT IN
PCB_70+76_VLT_IN
PCB 74 VLT IN
PCB_77+110_VLT_IN
PCB 81 VLT IN
PCB 87 VLT IN
PCB_84+92_VLT_IN
PCB 89 VLT IN
PCB 99 VLT IN
PCB 101 VLT IN
PCB 118 VLT IN
PCB_123+149_VLT_IN
PCB_1 05+1 32+1 53_VLT_IN
PCB 151 VLT IN
PCB_138+163_VLT_IN
PCB _1 70+1 90_VLT_IN
PCB_172+197_VLT_IN
PCB 180 VLT IN
PCB_182+187_VLT_IN
PCB_195+208_VLT_IN
PCB_196+203_VLT_IN
PCB 201 VLT IN
PCB 146 VLT IN
PCB 85 VLT IN
Description
PCB congener 5+8 volatilization absorption mass
PCB congener 15+17 volatilization absorption
mass
PCB congener 16+32 volatilization absorption
mass
PCB congener 18 volatilization absorption mass
PCB congener 26 volatilization absorption mass
PCB congener 28+31 volatilization absorption
mass
PCB congener 33 volatilization absorption mass
PCB congener 37+42 volatilization absorption
mass
PCB congener 44 volatilization absorption mass
PCB congener 49 volatilization absorption mass
PCB congener 52 volatilization absorption mass
PCB congener 56+60 volatilization absorption
mass
PCB congener 66 volatilization absorption mass
PCB congener 70+76 volatilization absorption
mass
PCB congener 74 volatilization absorption mass
PCB congener 77+110 volatilization absorption
mass
PCB congener 81 volatilization absorption mass
PCB congener 87 volatilization absorption mass
PCB congener 84+92 volatilization absorption
mass
PCB congener 89 volatilization absorption mass
PCB congener 99 volatilization absorption mass
PCB congener 101 volatilization absorption mass
PCB congener 118 volatilization absorption mass
PCB congener 123+149 volatilization absorption
mass
PCB congener 105+132+153 volatilization
absorption mass
PCB congener 151 volatilization absorption mass
PCB congener 138+163 volatilization absorption
mass
PCB congener 170+190 volatilization absorption
mass
PCB congener 172+197 volatilization absorption
mass
PCB congener 180 volatilization absorption mass
PCB congener 182+187 volatilization absorption
mass
PCB congener 195+208 volatilization absorption
mass
PCB congener 196+203 volatilization absorption
mass
PCB congener 201 volatilization absorption mass
PCB congener 146 volatilization absorption mass
PCB congener 85 volatilization absorption mass
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
Data
Type
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
Dimension
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
172
-------
Table 11.28. Volatilization Loss Mass Output zVariables
zVariable
PCB 5+8 VLT OUT
PCB15+17_VLT_OUT
PCB_16+32_VLT_OUT
PCB 18 VLT OUT
PCB 26 VLT OUT
PCB_28+31_VLT_OUT
PCB 33 VLT OUT
PCB_37+42_VLT_OUT
PCB 44 VLT OUT
PCB 49 VLT OUT
PCB 52 VLT OUT
PCB_56+60_VLT_OUT
PCB 66 VLT OUT
PCB_70+76_VLT_OUT
PCB 74 VLT OUT
PCB_77+110_VLT_OUT
PCB 81 VLT OUT
PCB 87 VLT OUT
PCB_84+92_VLT_OUT
PCB 89 VLT OUT
PCB 99 VLT OUT
PCB 101 VLT OUT
PCB 118 VLT OUT
PCB_123+149_VLT_OUT
PCB_1 05+1 32+1 53_VLT_OUT
PCB 151 VLT OUT
PCB_138+163_VLT_OUT
PCB _1 70+1 90_VLT_OUT
PCB_172+197_VLT_OUT
PCB 180 VLT OUT
PCB_182+187_VLT_OUT
PCB_1 95+208_VLT_OUT
PCB_1 96+203_VLT_OUT
PCB 201 VLT OUT
PCB 146 VLT OUT
PCB 85 VLT OUT
Description
PCB congener 5+8 volatilization lost mass
PCB congener 1 5+1 7 volatilization lost
mass
PCB congener 16+32 volatilization lost
mass
PCB congener 1 8 volatilization lost mass
PCB congener 26 volatilization lost mass
PCB congener 28+31 volatilization lost
mass
PCB congener 33 volatilization lost mass
PCB congener 37+42 volatilization lost
mass
PCB congener 44 volatilization lost mass
PCB congener 49 volatilization lost mass
PCB congener 52 volatilization lost mass
PCB congener 56+60 volatilization lost
mass
PCB congener 66 volatilization lost mass
PCB congener 70+76 volatilization lost
mass
PCB congener 74 volatilization lost mass
PCB congener 77+1 1 0 volatilization lost
mass
PCB congener 81 volatilization lost mass
PCB congener 87 volatilization lost mass
PCB congener 84+92 volatilization lost
mass
PCB congener 89 volatilization lost mass
PCB congener 99 volatilization lost mass
PCB congener 101 volatilization lost mass
PCB congener 1 1 8 volatilization lost mass
PCB congener 1 23+1 49 volatilization lost
mass
PCB congener 105+132+153 volatilization
lost mass
PCB congener 151 volatilization lost mass
PCB congener 1 38+1 63 volatilization lost
mass
PCB congener 1 70+1 90 volatilization lost
mass
PCB congener 1 72+1 97 volatilization lost
mass
PCB congener 1 80 volatilization lost mass
PCB congener 182+187 volatilization lost
mass
PCB congener 1 95+208 volatilization lost
mass
PCB congener 196+203 volatilization lost
mass
PCB congener 201 volatilization lost mass
PCB congener 1 46 volatilization lost mass
PCB congener 85 volatilization lost mass
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
Data
Type
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
Dimension
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
173
-------
Table 11.29. Net Volatilization Mass Output zVariables
zVariable
PCB 5+8 VLT NET
PCB15+17 VLT NET
PCB 16+32 VLT NET
PCB 18 VLT NET
PCB 26 VLT NET
PCB 28+31 VLT NET
PCB 33 VLT NET
PCB 37+42 VLT NET
PCB 44 VLT NET
PCB 49 VLT NET
PCB 52 VLT NET
PCB 56+60 VLT NET
PCB 66 VLT NET
PCB 70+76 VLT NET
PCB 74 VLT NET
PCB 77+110 VLT NET
PCB 81 VLT NET
PCB 87 VLT NET
PCB 84+92 VLT NET
PCB 89 VLT NET
PCB 99 VLT NET
PCB 101 VLT NET
PCB 118 VLT NET
PCB 123+149 VLT NET
PCB_1 05+1 32+1 53_VLT_NET
PCB 151 VLT NET
PCB 138+163 VLT NET
PCB 170+190 VLT NET
PCB 172+197 VLT NET
PCB 180 VLT NET
PCB 182+187 VLT NET
PCB 195+208 VLT NET
PCB 196+203 VLT NET
PCB 201 VLT NET
PCB 146 VLT NET
PCB 85 VLT NET
Description
PCB congener 5+8 net volatilization mass
PCB congener 15+17 net volatilization mass
PCB congener 16+32 net volatilization mass
PCB congener 18 net volatilization mass
PCB congener 26 net volatilization mass
PCB congener 28+31 net volatilization mass
PCB congener 33 net volatilization mass
PCB congener 37+42 net volatilization mass
PCB congener 44 net volatilization mass
PCB congener 49 net volatilization mass
PCB congener 52 net volatilization mass
PCB congener 56+60 net volatilization mass
PCB congener 66 net volatilization mass
PCB congener 70+76 net volatilization mass
PCB congener 74 net volatilization mass
PCB congener 77+110 net volatilization mass
PCB congener 81 net volatilization mass
PCB congener 87 net volatilization mass
PCB congener 84+92 net volatilization mass
PCB congener 89 net volatilization mass
PCB congener 99 net volatilization mass
PCB congener 101 net volatilization mass
PCB congener 118 net volatilization mass
PCB congener 123+149 net volatilization mass
PCB congener 105+132+153 net volatilization
mass
PCB congener 151 net volatilization mass
PCB congener 138+163 net volatilization mass
PCB congener 170+190 net volatilization mass
PCB congener 172+197 net volatilization mass
PCB congener 180 net volatilization mass
PCB congener 182+187 net volatilization mass
PCB congener 195+208 net volatilization mass
PCB congener 196+203 net volatilization mass
PCB congener 201 net volatilization mass
PCB congener 146 net volatilization mass
PCB congener 85 net volatilization mass
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
Data
Type
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
Dimension
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Table 11.30. Clay zVariables. Array Dimensions Refer to the Number of Cells nc and the
Number of Surface Cells nsb
zVariable
Description
Units
Data Type Dimension
CLAY
CLAY MS
CLAY_LD
CLAY SET
CLAY_SETRT
Clay concentration
Clay mass
Clay load
Clay settling loss
Clay settling rate
kg nf3
kg
kg ,
kg cell"1
kg cell"1 s"1
REAL
REAL
REAL
REAL
REAL
(l:nc)
Scalar
Scalar
(1:nsb)
(1:nsb)
174
-------
Table 11.31. Atrazine zVariables. Array Dimensions Refer to the Number of Cells
zVariable
ATZ
ATZ MS
ATZ LD
ATZ VLT IN
ATZ VLT OUT
ATZ VLT NET
ATZ DECAY MASS
ATZ CHIFL MASS
ATZ_MACFL_MASS
ATZ_OUTFL_MASS
Description
Atrazine concentration
Atrazine mass
Atrazine load
Atrazine volatilization absorption
Atrazine volatilization loss
Atrazine net volatilization
Atrazine decay mass
Atrazine mass lost through the Chicago River outflow
Atrazine mass lost through the Straits of Mackinac
outflow
Atrazine mass lost through the outflows
Units
kg m 3
kg
kg
kg
kg
kg
kg
kg
kg
kg
Data
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Dimension
(1:nc)
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
Scalar
The amount of atrazine that is lost in the lake through the outflows is written to the output CDF
as three separate items. These items are the Chicago River outflow, the Straits of Mackinac
outflow, and the combined Chicago River-Straits of Mackinac outflows which are shown in Table
11.31 under the zVariable names of ATZ_CHIFL_MASS, ATZ_MACFL_MASS, and
ATZ_OUTFL_MASS, respectively.
11.2.8 Chloride
Chloride is the other conservative LM3 state variable as it is subject only to advection and
dispersion. Like atrazine, chloride is not subject to settling in the water column. Consequently,
there is no need to use any kind of sediment transport to run a chloride simulation.
Chloride state concentrations, lake-wide mass, and time-integrated load values are written to
the output CDF, and these are shown in Table 11.32 under the zVariable names of CL, CL_MS,
and CL_LD, respectively.
11.2.9 Sediment
Sediment transport for the branches 3.2.15, 3.2.18, and 3.2.19 of LM3 has been developed with
some limitations. The eutrophication part of the sediment bed is not complete because no
kinetic processes have been implemented as of this writing. In addition, only the concentrations
of the carbon state variables, DOC and refractory organic carbon (ROC), are written to the
output CDF. Their corresponding zVariables are shown in Table 11.33. The other
eutrophication states shown in Table 11.33 represent placeholders for their sediment
concentrations in anticipation that a sediment diagenesis model will be developed at LLRS.
The only contaminants that are included in the sediment bed are PCBs. PCB congeners sorb to
carbon. Consequently, PCB congener sediment concentrations are written to the output CDF
as three separate items. These items are the total, dissolved, and particulate concentrations of
the PCB congener. The list of the CDF zVariables corresponding to the PCB congener total
concentrations is given in Table 11.34. The list of CDF zVariables corresponding to the PCB
175
-------
Table 11.32. Chloride zVariables. Array Dimensions Refer to the Number of Cells nc
zVariable
CL
CL_MS
CL_LD
Description
Chloride concentration
Chloride mass
Chloride load
Units
kg nV3
kg
kg
Data Type
REAL
REAL
REAL
Dimension
0:nc)
Scalar
Scalar
Table 11.33. Sediment Eutrophication Output zVariables.
Number of Sediment Cells nsed
Array Dimensions Refer to the
zVariable
DOC_SED
ROC_SED
SRP_SED
DOP_SED
ROP_SED
NH4_SED
NO3_SED
DON_SED
RON_SED
SA_SED
SU_SED
Description
Dissolved organic carbon concentration
Refractory particulate organic carbon
concentration
Soluble reactive phosphorus concentration
Dissolved organic phosphorus concentration
Refractory particulate organic phosphorus
concentration
Ammonia concentration
Nitrate concentration
Dissolved organic nitrogen concentration
Refractory particulate organic nitrogen
concentration
Available silica concentration
Particulate biogenic silica concentration
Units
kg m"3
kg m"3
kg m"3
kg nf3
kg nf3
kg m"3
kg m"3
kg m"3
kg nf3
kg nf3
kg nf3
Data
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Dimension
(1 :nsed)
(1 :nsed)
(1 :nsed)
(1 :nsed)
(1 :nsed)
(1 :nsed)
(1 :nsed)
(1 :nsed)
(1 :nsed)
(1 :nsed)
(1 :nsed)
176
-------
Table 11.34. Sediment PCB Output zVariables. Array Dimensions Refer to the Number of
Sediment Cells nsed
zVariable
PCB
5+8_SEDTC
PCB15+17 SEDTC
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB_
16+32 SEDTC
18 SEDTC
26 SEDTC
28+31 SEDTC
33_SEDTC
37+42 SEDTC
44 SEDTC
49 SEDTC
52 SEDTC
56+60 SEDTC
66_SEDTC
70+76 SEDTC
74 SEDTC
77+110 SEDTC
81 SEDTC
87 SEDTC
84+92 SEDTC
89 SEDTC
99 SEDTC
101 SEDTC
118 SEDTC
123+149 SEDTC
105+132+153 SEDTC
Description
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
5+8 total concentration
15+17 total concentration
16+32 total concentration
18 total concentration
26 total concentration
28+31 total concentration
33 total concentration
37+42 total concentration
44 total concentration
49 total concentration
52 total concentration
congener 56+60 total concentration
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
66 total concentration
70+76 total concentration
74 total concentration
77+1 1 0 total concentration
81 total concentration
87 total concentration
84+92 total concentration
89 total concentration
99 total concentration
101 total concentration
118 total concentration
123+1 49 total concentration
105+132+153 total
Units
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
m
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
Data
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Dimension
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
concentration
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
151 SEDTC
138+163_SEDTC
_170+190_SEDTC
172+197 SEDTC
180_SEDTC
182+187_SEDTC
195+208 SEDTC
196+203_SEDTC
201 SEDTC
146 SEDTC
85 SEDTC
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
congener
151 total concentration
138+163 total concentration
170+1 90 total concentration
172+197 total concentration
180 total concentration
182+187 total concentration
195+208 total concentration
196+203 total concentration
201 total concentration
146 total concentration
85 total concentration
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
kg
m
m
m
m
m
m
m
m
m
m
m
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
(1
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
:n
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
sed)
congener dissolved concentrations is given in Table 11.35. The list of the CDF zVariables
corresponding to the PCB congener paniculate concentrations is given in Table 11.36.
There is a placeholder for clay sediment concentrations in the program but as of this writing,
clay is not being simulated. Nevertheless, the CDF zVariable corresponding to the clay
sediment concentration is given in Table 11.37.
177
-------
Table 11.35. Sediment PCB Dissolved Output zVariables. Array Dimensions Refer to the
Number of Sediment Cells nsed
zVariable
PCB_5+8_SEDDC
PCB15+17_SEDDC
PCB_16+32_SEDDC
PCB_18_SEDDC
PCB_26_SEDDC
PCB_28+31_SEDDC
PCB_33_SEDDC
PCB_37+42_SEDDC
PCB_44_SEDDC
PCB_49_SEDDC
PCB_52_SEDDC
PCB_56+60_SEDDC
PCB_66_SEDDC
PCB_70+76_SEDDC
PCB_74_SEDDC
PCB_77+110_SEDDC
PCB_81_SEDDC
PCB_87_SEDDC
PCB_84+92_SEDDC
PCB_89_SEDDC
PCB_99_SEDDC
PCB_101_SEDDC
PCB_118_SEDDC
PCB_123+149_SEDDC
PCB_105+132+153_SEDDC
PCB_151_SEDDC
PCB_138+163_SEDDC
PCB _1 70+1 90_SEDDC
PCB_172+197_SEDDC
PCB_180_SEDDC
PCB_182+187_SEDDC
Description
PCB congener 5+8 dissolved concentration
PCB congener 15+17 dissolved concentration
PCB congener 16+32 dissolved concentration
PCB congener 18 dissolved concentration
PCB congener 26 dissolved concentration
PCB congener 28+31 dissolved concentration
PCB congener 33 dissolved concentration
PCB congener 37+42 dissolved concentration
PCB congener 44 dissolved concentration
PCB congener 49 dissolved concentration
PCB congener 52 dissolved concentration
PCB congener 56+60 dissolved concentration
PCB congener 66 dissolved concentration
PCB congener 70+76 dissolved concentration
PCB congener 74 dissolved concentration
PCB congener 77+110 dissolved concentration
PCB congener 81 dissolved concentration
PCB congener 87 dissolved concentration
PCB congener 84+92 dissolved concentration
PCB congener 89 dissolved concentration
PCB congener 99 dissolved concentration
PCB congener 101 dissolved concentration
PCB congener 1 1 8 dissolved concentration
PCB congener 123+149 dissolved concentration
PCB congener 105+132+153 dissolved concentration
PCB congener 151 dissolved concentration
PCB congener 138+163 dissolved concentration
PCB congener 1 70+190 dissolved concentration
PCB congener 172+197 dissolved concentration
PCB congener 1 80 dissolved concentration
PCB congener 182+187 dissolved concentration
Units
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
kg.
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
m3
Data
Type
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
Dimension
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
(1:nSed)
178
-------
Table 11.36. Sediment PCB Paniculate Output zVariables. Array Dimensions Refer to the
Number of Sediment Cells nsed
zVariable
Description
Units
Data
Type
Dimension
PCB_5+8_SEDPC
PCB15+17_SEDPC
PCB_16+32_SEDPC
PCB_18_SEDPC
PCB_26_SEDPC
PCB_28+31_SEDPC
PCB_33_SEDPC
PCB_37+42_SEDPC
PCB_44_SEDPC
PCB_49_SEDPC
PCB_52_SEDPC
PCB_56+60_SEDPC
PCB_66_SEDPC
PCB_70+76_SEDPC
PCB_74_SEDPC
PCB_77+110_SEDPC
PCB_81_SEDPC
PCB_87_SEDPC
PCB_84+92_SEDPC
PCB_89_SEDPC
PCB_99_SEDPC
PCB_101_SEDPC
PCB_118_SEDPC
PCB_123+149_SEDPC
PCB_105+132+153_SEDPC
PCB_151_SEDPC
PCB_138+163_SEDPC
PCB _170+190_SEDPC
PCB_172+197_SEDPC
PCB_180_SEDPC
PCB_182+187_SEDPC
PCB_195+208_SEDPC
PCB_196+203_SEDPC
PCB_201_SEDPC
PCB_146_SEDPC
PCB_85_SEDPC
PCB congener 5+8 participate concentration kg m 3 REAL (1:nsed)
PCB congener 15+17 participate concentration kg m 3 REAL (1:nsed)
PCB congener 16+32 participate concentration kg m 3 REAL (1:nsed)
PCB congener 18 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 26 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 28+31 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 33 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 37+42 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 44 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 49 particulate concentration kg m3 REAL (1:nsed)
PCB congener 52 particulate concentration kg m3 REAL (1:nsed)
PCB congener 56+60 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 66 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 70+76 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 74 particulate concentration kg m3 REAL (1:nsed)
PCB congener 77+110 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 81 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 87 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 84+92 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 89 particulate concentration kg m3 REAL (1:nsed)
PCB congener 99 particulate concentration kg m3 REAL (1:nsed)
PCB congener 101 particulate concentration kg m3 REAL (1:nsed)
PCB congener 118 particulate concentration kg m3 REAL (1:nsed)
PCB congener 123+149 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 105+132+153 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 151 particulate concentration kg m3 REAL (1:nsed)
PCB congener 138+163 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 170+190 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 172+197 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 180 particulate concentration kg m3 REAL (1:nsed)
PCB congener 182+187 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 195+208 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 196+203 particulate concentration kg m 3 REAL (1:nsed)
PCB congener 201 particulate concentration kg m3 REAL (1:nsed)
PCB congener 146 particulate concentration kg m3 REAL (1:nsed)
PCB congener 85 particulate concentration kg m3 REAL (1:nsed)
Table 11.37. Sediment Output zVariables. Array Dimensions Refer to the Number of
Sediment Cells sed
zVariable
Description
Units
Data Type Dimension
CLAY SED
Clay concentration
kg m
-3
REAL
(1:nSed)
179
-------
CHAPTER 12
SUPPORT UTILITIES
The input and output data handling requirements of the LM3 calculation precluded terminal
entry and cut-paste of program output. The Common Data Format (CDF) simplified the task of
preparing program input considerably because utility programs could be written that directly
interacted with the target data structure, i.e., the input files of the simulation. Similarly, large
volumes of program output could be handled using automated data handling techniques that
hide the LM3 data structures from the user.
A simple program was written that translates ASCII data into the CDF format read by the LM3
simulation. The program a2cdf is used to help prepare the load and initial condition data
currently used by LM3. A similar tool named x2cdf was written to translate from the C library
XDR data format into CDF variables.
A variety of programs and applications have been prepared by the other users and institutions
for reading CDF data files, and some of these have been applied to interpreting and processing
both the input and output of the LM3 simulation. These include National Space Science Data
Center (NSSDC) CDF applications cdfedit and cdfexport as well as custom-designed graphics
packages written for IDL and Scilab.
12.1 Editing and Filling CDF Structures
The a2cdf program was written to fill CDF variables using ASCII formatted data as input. The
tool is used to fill the LM3 input data structures for initial conditions and load CDF files. The
format of the command is
a2cdf -R|-Z -c|-e|-i|-j|-r -n
The flags -R and -Z were used to select output to either the CDF rVariable type as used in the
LM3 initial conditions file or the zVariable type as used in the load files. One of these flags must
be provided. The next group of flags specifies the creation of a character variable -c, an epoch
or calendar date value -e, an integer value -i, a Julian day number (JDN) -j, or a real CDF
variable -r. The creation of CDF epoch and Julian time values requires that the user supply the
calendar month, day, and year as input. The next argument array_size, specifies the number of
successive input values that are to be grouped together as the consecutive elements of an array
that will constitute a record of the output CDF. For example, setting this parameter equal to two
causes a2cdf to write two input values into each record of the output CDF, forming an array with
180
-------
two elements in each record. The variable argument specifies the name of the CDF variable
being written. Finally, the CDF argument specifies the name of the CDF output file, without the
.cdf extension, to be filled. A more complete example demonstrating the use of this command is
provided in Section 13.5.
The x2cdf program is less generic than a2cdf and is specifically adapted to fill zVariables in the
LM3 hydrodynamic input fields corresponding to radiation, heat fluxes, and wave information.
This program takes FIREAD formatted input parameter data from standard input stdin and has
the format:
x2cdf
The program is specifically written to work with the XDR format of meteorology data created for
Lake Michigan studies by the Great Lakes Environmental Research Laboratory (GLERL).
Parameter keys read in the input file supply the x2cdf conversion tool with the names of XDR
input files to be processed, the name of the output CDF file to be filled, the name of the
zVariable to be filled, whether flow faces or cells are to be written, the number of records to be
processed, the number of input XDR records to be averaged for each output CDF record, the
option to skip the first input XDR record, and the name of the GLERL bathymetry grid file used
to define the geometry. A summary of the FIREAD keys corresponding to these parameters is
provided in Table 12.1. An example demonstrating the use of x2cdf is given in Section 13.6.
Table 12.1. x2cdf FIREAD Input Key Definitions
Key
Description
Data
Type
BOUNDS Designates placement with respect to a cell or boundary face
1: Align with cell center
2: Align with cell x-face
3: Align with cell y-face
CDFFILE Output CDF file name
FNAME Input XDR file name
GBATH Input bathymetry file name
ISIGMA Sigma level to sample
NRAV Number of input XDR records to be averaged for each output
CDF record
NREC Number of records in each XDR file
SCALE Scale factor by which input is multiplied to produce output
SKIPO Flag designating skip of first input XDR record
0 - do not skip the first input XDR record of each file
1 - skip the first input XDR record of each file
ZVARNAME zVariable name in the output CDF to be filled
INTEGER
CHARACTER
CHARACTER
CHARACTER
INTEGER
INTEGER
INTEGER
REAL
INTEGER
CHARACTER
181
-------
12.2 Examining Program Output
The LM3 simulation can generate large amounts of data ranging from a few megabytes to tens
of gigabytes, depending on the user's choice of output, spatial segmentation, and state
variables. Output generated on the segmentation level of the hydrodynamic grid is particularly
challenging and time-consuming to analyze, especially when dealing with gigabytes worth of
output; simple editing of such a volume of output for the purpose of performing analysis is
neither practical nor convenient. However, individual data points can be examined and program
output can be perused for debugging and other purposes.
The NSSDC group supplied two applications for interrogating CDF data structures and
examining the element-by-element and variable-by-variable output of the program. The format
of the command is:
cdfedit
The cdfedit tool (National Aeronautics and Space Administration, 1996a,b,c) was used for
examining detailed information concerning CDF data files. It can be used to provide a list of all
variables described within the file, the number of records present, and display individual data
items corresponding to specific records, variables, and variable array elements. The cdfedit tool
is also useful for displaying documentation concerning each of the data variables; such as, a
description of the variable, its designated units, and allowed minimum and maximum values.
The cdfedit runs within the user's VT terminal window and is navigated using arrow keys and
keyboard entry. Screenshots of the cdfedit can be viewed in Figures 12.1 and 12.2.
Figure 12.1 displays a window containing four sections: label, header, items, and trailer. The
label is a general title for the window we are looking at: in this case it reads "CDF "bdump"
zVariables", indicating that the name of the CDF file is "bdump" and that it contains zVariables.
The header section shows the number of variables contained in the file, the maximum number
of records that are output, and descriptive labels. The items section shows a listing of seven
columns: variable names, data-types, dimensionality of the data, variance of the data,
"zEntries" or metadata, numerical values, and "more" which contains extra information such as
compression and padding values. The trailer section shows a menu of options and their
corresponding keys that are available to the user.
Figure 12.2 displays a window that also contains four sections (similarly to Figure 12.1): label,
header, items, and trailer. This window displays the metadata of one selected variable: in this
case "DIA", which stands for diatoms. The diatoms metadata displayed contains five items: full
name of the variable, units, format, and valid minimum and maximum values.
The cdfexport tool (National Aeronautics and Space Administration, 1996a,b,c) is similar to
cdfedit in its implementation. The application is operated within the user's terminal window and
is navigated using keyboard and arrow keys. The format of the command is:
cdfexport
182
-------
1 £* wnielende on superior
: /mnt/model/jobs/94 !
87 zVariables, (maximum of
Name
BataSpec
S CDF "bdurrro" zVar
faijys zRecords)
Dimensions
tables j
Vary s
i|
II"TIHE JULIAH"^B
"TIHE EPOCH"
"TIHE_RUN5EC"
"VOL"
"TEH"
"X CURRENT"
"Y_CURRENT"
"AVGDIFF"
"AVGZDIFF"
"DOC"
"DIA"
"ORE"
"ZOO"
Select:
Exit:
REALS/ 1
EPOCH/ 1
REALS/ 1
REALS/ 1
REAL4/1
REAL4/1
REAL4/1
REAL4/1
REAL4/1
REAL4/1
REAL4/1
REAL4/1
REAL4/1
Create
Delete
0 []
0 []
0 []
1 [44042]
1 [44042]
1 [44042]
1 [44042]
1 [44042]
1 [44042]
1 [44042]
1 [44042]
1 [44042]
1 [44042]
variable:
variable:
T/
T/
T/
T/T
T/T
T/T
T/T
T/T
T/T
T/T
T/T
T/T
T/T
Help:
^i
J
Figure 12.1. The cdfedittool main window.
J^- wmelende on superior: /nint/model/jobs/94
TDIA" sEntries
5 vAttributes
AttrName
DataSpec Value(s)
'FIELDNAME1
"UNITS"
"FORMAT"
"VALIDMIN"
"VALIDMAX"
CHAR/20 "Diatom Concentration"
CHAR/7 "kg/m**3"
REAL4/1 -l.Oe-10
REAL4/1 l.Oe+24
All
Select:
Exit:
Help:
Create attribute:
Create entry:
Next variable:
Delete entry:
Figure 12.2. The cdfedit tool zEntries window.
183
-------
This program supports the translation of entire CDF groups (variables, records, or the contents
of the entire CDF1) to the terminal or to an ASCII file. A screenshot of cdfexport terminal
session is provided in Figure 12.3.
Figure 12.3 displays a window containing four individually-labeled sections: "CDFexport",
"SelectionWindow, part 1", "Key Definitions", and "MessageBuffer". The "CDFexport" section
shows the name of the CDF file, the number of variables and records, and whether compression
of the data was performed. The "SelectionWindow, part 1" section shows all the variables
available for export to the terminal or to an ASCII file. Note that the variable "ZOO" (which
stands for zooplankton) is the only one chosen to be exported or translated. The
"KeyDefinitions" section displays the available functions and their corresponding keys. The
"MessageBuffer" section shows errors/instructions as necessary.
£ wmelende on superior: /mnt/model/ jobs/94 I
CDF (s) : tidunap
Variables: Or/87z,
^ ~ ri ~~~~ ^^^^Hi
Records: Or/6095zf Compression:
Hone, Checksum: None
-I
^^SHSUBHjfffif-ffiil^BSBSBB
Item/ Variable
'TEH"
'X CURRENT"
'Y CURRENT"
'AVGDIFF"
'AVGZDIFF"
'DOC"
'DIA"
'GRE"
PSBB^^^^^^^^^^^^^B
Modify:
Part 2 :
DataSpec Dimensionality
REAL4/1 1 [44042]
REAL4/1 1 [44042]
REAL4/1 1 [44042]
REAL4/1 1 [44042]
REAL4/1 1 [44042]
REAL4/1 1 [44042]
REAL4/1 1 [44042]
REAL4/1 1 [44042]
B REAL4/1 1 [44042]
Actions: Reverse:
Options: Delete:
Variances
T/T
T/T
T/T
T/T
T/T
T/T
T/T
T/T
T/T
Help:
Exit:
Output
no
no
no
no
no
no
no
no
YES
'
Figure 12.3. The cdfexport tool window.
1Again, the size of the LM3 output can be of the order of gigabytes and the option of exporting
all of the program output to an ASCII file is not recommended.
184
-------
CHAPTER 13
EXAMPLES
Unlike similar water quality programs that run in the terminal foreground, the LM3 calculation
runs in the background in batch mode. Executing the program is typically time-consuming; it is
most conveniently detached from the user's terminal when running. A batch submission tool
has been prepared to run programs like LM3 whose run times preclude interactive execution
and whose use of computer space is extensive. It distributes the computing load and organizes
the resulting jobs in an orderly way. The resulting jobs are consumptive of disk space. It is not
uncommon, for instance, for high-resolution water quality model jobs to take up to five gigabytes
of space. The batch submission tool is also useful for organizing the multiple program input and
output files for different instances of the execution, such as a large number of model calibration
runs.
13.1 Submitting LM3 Simulations
The batch submission script /home/llrs_model/bin/submit has been written to provide a user-
friendly interface to the Distributed Queuing System (DQS) batch submission qsub and to
organize execution and output of the resulting batch jobs into sequentially ordered directories
for future reference. Its broader goal is to organize both computer time and disk usage in an
orderly fashion. The format of the command is:
submit -q -e [...]
where queue can be Linux computers such as ausable_queue, erie_queue, michigan_queue,
superior_queue, or huron_queue; exec refers to the executable to be run; and input_file... is a
list of the input files to be passed for processing by the program in question. The first input file
is designated by the submission script as being read on standard input; i.e., exec
-------
./Im3-3.2.13 < firead.inp >& job.log &
where the program binary, the input file name, and the output log file are specified. In each
instance, the program binary and input file names may be varied to accommodate the different
versions of each that are available to the user.
Specific examples of LM3 input files are provided below. The studies for atrazine, chloride,
eutrophication, and polychlorinated biphenyl (PCB) congener (with the sediment bed)
simulations are discussed, and example input files are provided. In each case, the Linux syntax
for running the respective model calculation is as described above, using the batch submission
method or running the program directly on the command line from the user's home directory.
13.2 LM3 Example Atrazine Calculation
The atrazine calculation provides one of the simpler simulations that can be run in LM3.
The input file shown below demonstrates the following:
1. The selection of the atrazine study, simulation of water column transport, mass balance
calculations, and calculation of atrazine volatilization are specified.
2. Basic program control options including selection of the starting and ending simulation times
are demonstrated.
3. The parameters that specify the starting and ending days for 1994 and 1995 for which the
atrazine loads are to be scaled are input.
4. Atrazine decay rate and molecular weight are input.
5. Required input files including hydrodynamics and simulation geometry are input.
6. The atrazine load file is provided. This automatically enables the simulation of mass loads
for this state variable.
7. Scale factors for each river and for the atmosphere are applied to the loads.
A copy of this file is available at /mnt/model/llrs_model/production/LM3/examples/
firead_atrazine.inp as of this writing.
LIST ! Echo the contents of this file
C
C Example LM3 Atrazine simulation input deck
C
*DO ATZ ! Perform atrazine calculations
*DO TRANS ! Perform water column transport
*DO MASS BALANCE ! Perform mass balance calculations
*DO VOLAT ! Calculate volatilization
C
186
-------
C Controlling program output, simulation times
C
OVERWRITE 1 ! Overwrite previous output dumps
CDFCOARSE 1 ! Write coarse (41-segment) concentrations
CDFFINE 1 ! Write fine (5-km) concentrations
DD2WRT 1 ! How often to write output [days]
TMSTRT 0.0 ! First simulated day (starts at zero)
TMEND 1825.0 ! Last simulated data
C
C Starting and ending days that specify when to scale atrazine loads in 1994 and 1995
C
START_DAY_SCALE_LOAD_94 104.0 ! Starting day of scaling loads in 1994
END_DAY_SCALE_LOAD_94 193.0 ! Ending day of scaling loads in 1994
START_DAY_SCALE_LOAD_95 469.0 ! Starting day of scaling loads in 1995
END_DAY_SCALE_LOAD_95 558.0 ! Ending day of scaling loads in 1995
C
C Increase the warning and error concentration limits
C
*CMAXIMUM WARNING ATZ 1 .OE+24
*CMAXIMUM ERROR ATZ 1.OE+24
C
C Set Atrazine decay rate
C
DECAY_RATE_ATRAZINEE 2.854E-10 ! Lumped decay rate constant for atrazine in units of
! 1/second
C
C Set Atrazine molecular weight
C
MOLWT_ATZ 215.69 ! Molecular weight of atrazine in grams/mole
C
C Set water column transport Crank-Nicholson parameter
C
TH 0.55 ! Crank-Nicholson parameter
C
C Input files
C
TILE MAP /usr/model/dsets/LM3/R0105/geo/map.dat
TILE GEO /usr/model/dsets/LM3/R0105/geo/geo.dat
TILE AGG /usr/model/dsets/LM3/R0105/agg/map1312.dat
TILE HYDRO /usr/model/dsets/LM3/R0105/3h/hydro94.cdf
TILE ICI /usr/model/dsets/LM3/R0105/ici/ici_eutro_pcb.cdf
TILE WIND /usr/model/dsets/LM3/R0105/WIND/wind_speed_level_3.cdf
TILE AIR_CONC /usr/model/dsets/LM3/R0105/CHEM_AIR/VAPOR_
CONCENTRATION/air_concs_level_3_atz9.cdf
C
C Loads
C
TILE LDLOC /usr/model/dsets/LM3/R0105/ld/ldlocations.cdf
TILE LOAD ATZ /usr/model/dsets/LM3/R0105/ld/ld atz O41221.cdf
187
-------
v^
C Scale
c
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
*SCALE
the loads
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
.0
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
MENOMINEE ATZ
FOX ATZ
SHEBOYGAN ATZ
MILWAUKEE ATZ
GRAND CALUMET ATZ
ST JOSEPH ATZ
KALAMAZOO ATZ
GRAND ATZ
MUSKEGON ATZ
LOAD PERE MARQUETTE
ATZ
LOAD MANISTIQUE ATZ
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
CEDAR ATZ
PESHTIGO ATZ
OCONTO ATZ
PENSAUKEE ATZ
KEWAUNEE ATZ
MANITOWOC ATZ
ROOT ATZ
BLACK SH ATZ
MANISTEE ATZ
BETSIE ATZ
JORDAN ATZ
STURGEON ATZ
WHITEFISH ATZ
ESCANABA ATZ
WET ATMOSPHERIC
ATZ
LOAD MILECOQUINS ATZ
LOAD
_GALIEN ATZ
STOP
13.3 LM3 Example Chloride Calculation
The chloride calculation demonstrated here is similar to the case for atrazine. The chloride
simulation is the simplest one that can be run in LM3.
The input file shown below demonstrates the following:
1. Selection of the chloride study, simulation of water column transport, and the activation of
mass balance calculations are specified.
2. Basic program output options are input. The starting and ending days of the simulation are
specified.
3. Required input files including hydrodynamics and simulation geometry are input.
188
-------
4. The chloride load file is provided. This automatically enables the simulation of mass loads
for this state variable.
5. The scaling factors are applied to the monitored, unmonitored, and atmospheric loads.
A copy of this file is at /mnt/model/llrs_model/production/LM3/examples/ firead_chloride.inp as
of this writing.
LIST ! Echo the contents of this file
C
C Example LM3 Chloride simulation input deck
C
C
C Basic program options
C
*DOCL
*DO TRANS
*DO MASSBALANCE
C
C Controlling program output, simulation times
C
OVERWRITE 1 ! Overwrite previous output dumps
CDFCOARSE 1 ! Write coarse (41-segment) concentrations
CDFFINE 1 ! Write fine (5-km) concentrations
DD2WRT 1 ! How often to write output [days]
TMSTRT 0.0 ! First simulated day (starts at zero)
TMEND 730..0 ! Last simulated data
C
C Set water column transport Crank-Nicholson parameter
C
TH 0.55
C
C Input files
C
TILE MAP /usr/llrs_model/dsets/LM3/R0105/geo/map.dat
TILE GEO /usr/llrs_model/dsets/LM3/R0105/geo/geo.dat
TILE AGG /usr/llrs_model/dsets/LM3/R0105/agg/map1312.dat
TILE HYDRO /usr/llrs_model/dsets/LM3/R0105/3h/hydro94.cdf
TILE ICI /usr/LLRS_model/dsets/LM3/R0105/ici/ici_eutro_pcb.cdf
C
C Loads
C
TILE LDLOC /home/llrs_model/dsets/LM3/R0105/ld/ldlocations.cdf
TILE LOAD CL /home/llrs_model/dsets/LM3/R0105/ld/ld_cl.cdf
C
C Scale the loads
C
*SCALE 1.1 LOAD MON CL
189
-------
*SCALE 1.2 LOADJJNMON CL
*SCALE 1.5 LOAD_ATM CL
STOP
13.4 LM3 Example Eutrophication Calculation
The eutrophication calculation is more complex than those for the atrazine or chloride studies
because of the number of state variables involved, there are 17 of them, and the relatively large
size of parameters available to it, which number over 100 (Table 6.1).
The input file shown below demonstrates the following:
1. Selection of the eutrophication study, the simulation of water column transport, the
activation of mass balance calculations, and the enabling of growth limitation factors
output are specified.
2. Basic program output control options are input. The option to overwrite previously
generated output Common Data Format (CDF) files is enabled. The modeled time interval
is set to include the study period of 1994 and 1995.
3. The warning and error concentration limits are increased for all the eutrophication state
variables.
4. Nitrogen has been turned off as a nutrient limiting factor.
5. A fairly large number of parameters, which are used only for the eutrophication, are input.
Most of these parameters are related to the eutrophication kinetics.
6. The settling velocities of the eutrophication states that settle are input.
7. Required input files including hydrodynamics and simulation geometry are input.
8. The eutrophication load files are provided. This automatically enables the simulation of
mass loads for the state variables.
9. The eutrophication state information is used to create biotic carbon loads for the level 2
water quality simulation, and file results are directed to the ASCII output file I2prod.dat.
10. Scaling factors for the eutrophication loads are input. Most values are set to the default
values of one except for the silica loads, the soluble reactive phosphorus (SRP) sediment
load, and the ammonia-nitrogen (NH4) sediment load.
A copy of this file is available at /mnt/model/llrs_model/production/LM3/examples/
firead_eutrophication.inp as of this writing.
190
-------
LIST
! Echo the contents of this file
C Example LM3 Eutrophication simulation input deck
C Basic program options
'DO EUTRO
*DO TRANS
*DO MASSBALANCE
'DOGRLIM
! Perform eutrophication calculations
! Perform water column transport
! Perform mass balance calculations
! Enable the output of growth limitation factors
C Controlling program output, simulation times
v_^
OVERWRITE 1
CDFCOARSE 1
CDFFINE 1
DD2WRT 1
TMSTRT 0.0
TMEND 730.0
p
! Overwrite previous output dumps
! Write coarse (41 -segment) concentrations?
! Write fine (5-km) concentrations?
! How often to write output [days]
! First simulated day (starts at zero)
! Last simulated data
C Increase the warning and error concentration limits
p
\^
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
DOC 1.0E+24
DIA 1.0E+24
GRE 1.0E+24
ZOO 1.0E+24
LOG 1.0E+24
ROC 1.0E+24
SRP 1.0E+24
OOP 1.0E+24
LOP 1.0E+24
ROP 1.0E+24
NH4 1.0E+24
NO3 1.0E+24
DON 1.0E+24
LON 1.0E+24
RON 1.0E+24
SA 1.0E+24
SU 1.0E+24
DOC 1.0E+24
DIA 1.0E+24
GRE 1.0E+24
ZOO 1.0E+24
LOG 1.0E+24
ROC 1.0E+24
SRP 1.0E+24
OOP 1.0E+24
191
-------
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
r
LOP
ROP
NH4
NO3
DON
LON
RON
SA
SU
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
C Set the nutrient limiting factors
C SILIM == 1 Nitrogen and Phosphorus
C SILIM == 2 Nitrogen, Phosphorus, and Silica
C SILIM == 3 Phosphorus and Silica
v_^
SILIM 3
r
C Set the values of the eutrophication parameters
r
\^
ANCP 0.25
APCP 0.01
ASCD 2.3
BMRD 8.60E-07
BMRG 8.60E-07
CCHLD 40
CCHLG 4.0
CGZ 3.10E-06
FCDD 0.05
FCDG 0.05
FCLD 0.3
FCLG 0.3
FCRD 0.3
FCRG 0.3
FCDP 0.35
FCDZ 0
FCLP 0.5
FCLZ 0.4
FCRP 0.15
FCRZ 0.1
FNDD 0.5
FNDG 0.5
FNDP 0
FNDZ 0
FNID 0.5
FNIG 0.5
FNIP 0.5
FNIZ 0.5
FNLD 0
FNLG 0
N:C ratio
P:C ratio
Si:C ratio
Diatom mortality
Greens mortality
C:chl ratio for diatoms
C:chl ratio for greens
Zooplankton grazing rate
Fraction mortality = dissolved organic carbon (diatom)
Fraction mortality = dissolved organic carbon (greens)
Fraction mortality = labile organic carbon (diatom)
Fraction mortality = labile organic carbon (greens)
Fraction mortality = refractory organic carbon (diatom)
Fraction mortality = refractory organic carbon (greens)
Fraction predation = dissolved organic carbon
Fraction z-mortality = dissolved organic carbon
Fraction predation = labile particulate detrital carbon
Fraction z-mortality = labile particulate detrital carbon
Fraction predation = refractory particulate detrital carbon
Fraction z-mortality = refractory particulate detrital carbon
Fraction mortality = dissolved organic nitrogen (diatom)
Fraction mortality = dissolved organic nitrogen (greens)
Fraction predation = dissolved organic nitrogen
Fraction z-mortality = dissolved organic nitrogen
Fraction mortality = dissolved inorganic nitrogen (diatom)
Fraction mortality = dissolved inorganic nitrogen (greens)
Fraction predation = dissolved inorganic nitrogen
Fraction z-mortality = dissolved inorganic nitrogen
Fraction mortality = labile organic nitrogen (diatom)
Fraction mortality = labile organic nitrogen (greens)
192
-------
FNLP 0.4
FNLZ 0.4
FNRD
FNRG
FNRP
FNRZ
FPDD
FPDG
FPDP
FPDZ
FPID
0
0
0.1
0.1
0.10
0.10
0.2
0.2
0.30
FPIG 0.30
FPIP 0.5
FPIZ 0.5
FPLD 0.30
FPLG 0.30
FPLP 0.15
FPLZ 0.15
FPRD 0.30
FPRG 0.30
FPRP 0.15
FPRZ 0.15
FSAP 0
GREFF 0.6
IOWT 0
I1WT 0
I2WT 0
ILMUL 1
ILUMO 0
ISMIN 400
KDC 1.16E-08
KDCALG O.OOE+00
KDN 1.74E-07
KDNALG O.OOE+00
KDP 1.16E-09
KDPALG 6.00E-03
KE 0.15
KECHL 1.7E+04
KHN 2.50E-05
KHND 2.50E-05
KHNG 2.50E-05
NHNNT 0.0000
KHP 5.00E-07
KHPD 5.00E-07
KHPG 5.00E-07
KHSD 6.00E-05
KLC 1.00E-07
KLCALG O.OOE+00
KLN 3.47E-07
Fraction predation = labile organic nitrogen
Fraction z-mortality = labile organic nitrogen
Fraction mortality = refractory organic nitrogen (diatom)
Fraction mortality = refractory organic nitrogen (greens)
Fraction predation = refractory organic nitrogen
Fraction z-mortality = refractory organic nitrogen
Fraction mortality = dissolved organic phosphorus (diatom)
Fraction mortality = dissolved organic phosphorus (greens)
Fraction predation = dissolved organic phosphorus
Fraction z-mortality = dissolved organic phosphorus
Fraction mortality = dissolved inorganic phosphorus (diatom)
Fraction mortality = dissolved inorganic phosphorus (greens)
Fraction predation = dissolved inorganic phosphorus
Fraction z-mortality = dissolved inorganic phosphorus
Fraction mortality = labile organic phosphorus (diatom)
Fraction mortality = labile organic phosphorus (greens)
Fraction predation = labile organic phosphorus
Fraction z-mortality labile organic phosphorus
Fraction mortality = refractory organic phosphorus (diatom)
Fraction mortality = refractory organic phosphorus (greens)
Fraction predation = refractory organic phosphorus
Fraction z-mortality = refractory organic phosphorus
Fraction predation = dissolved silica
Zooplankton grazing coefficient
Weighted light dayO
Weighted light dayl
Weighted light day2
Scaling for surface solar radiation
Constant value of illumination
Optimal illumination factor mineralization
Dissolved organic carbon mineralization
Dissolved organic carbon algae dependence
Dissolved organic nitrogen mineralization
Dissolved organic nitrogen algae dependence
Dissolved organic phosphorus mineralization
Dissolved organic phosphorus algae dependence
Background light attenuation
Light attenuation for chlorophyll-a
Organic nitrogen decay
Mean nitrogen half-saturation (diatom)
Mean nitrogen half-saturation (greens)
Half-saturation of NH3 for nitrogen
Organic phosphorus decay
Mean phosphorus half-saturation (diatom)
Mean phosphorus half-saturation (greens)
Mean silica half-saturation (diatom)
Mineralization hydrolysis for labile organic carbon
Labile organic carbon algae dependence
Mineralization hydrolysis for labile organic nitrogen
193
-------
KLNALG O.OOE+00
KLP 1.00E-09
KLPALG 6.00E-03
KRC 1.00E-07
KRCALG O.OOE+00
KRN 3.47E-08
KRNALG O.OOE+00
KRP 1.00E-09
KRPALG 6.00E-03
KSUA 2.50E-07
KSZ 1.00E-04
KTBD 0.074
KTBG 0.074
KTGD1 0.0025
0.006
0.0025
0.006
9.9E-02
7.4E-02
0.004
0.004
0.069
KTGD2
KTGG1
KTGG2
KTHDR
KTMNL
KTNT1
KTNT2
KTSUA
NTM 2.50E-11
PMD 2.90E-05
PMG 2.60E-05
TH 0.55
TMD 18
TMG 18
TMNT 30
TRD 20
TRG 20
TRHDR 20
TRMNL 20
TRSUA 20
TZREF 20
ZDTH 5.0E-07
ZTHET 1.100
C
C Settling velocities
C
VDIA
VGRE
VLOC
VROC
VLON
VRON
VLOP
VROP
VSU
Labile organic nitrogen algae dependence
Mineralization hydrolysis for labile organic phosphorus
Labile organic phosphorus algae dependence
Mineralization hydrolysis for refractory organic phosphorus
Refractory organic carbon algae dependence
Mineralization hydrolysis for refractory organic nitrogen
Refractory organic nitrogen algae dependence
Mineralization hydrolysis for refractory organic phosphorus
Refractory organic phosphorus algae dependence
Biogenic silica algae dependence
Zooplankton half-saturation phytoplankton
Diatom mortality temperature coefficient
Greens mortality temperature coefficient
Temperature coefficient < (diatom)
Temperature coefficient > (diatom)
Temperature coefficient < (greens)
Temperature coefficient > (greens)
Hydrolysis temperature dependence
Mineralization temperature dependence
Temperature coefficient < nitrogen
Temperature coefficient > nitrogen
Dissolved silica temperature coefficient
Nitrification rate
Diatom production
Greens production
Crank-Nicholson parameter
Optimal temperature diatom
Optimal temperature greens
Optimal temperature nitrogen
Optimal metabolic temperature (diatom)
Optimal metabolic temperature (greens)
Optimal hydrolysis temperature
Optimal mineralization temperature
Optimal dissolved silica temperature
Optimal predation temperature
Zooplankton mortality
Temperature coefficient predation
1.15E-06
0.85E-06
2.00E-06
2.00E-06
2.00E-06
2.00E-06
2.00E-06
2.00E-06
2.00E-06
194
-------
C Output aggregated BIC carbon for level 2 model
TILE L2PROD I2prod.dat
C Input files
C
TILE MAP
TILEGEO
TILE AGG
TILE HYDRO
TILE ICI
C
C Loads
C
TILE LDLOC
TILE LOAD DOC
TILE LOAD DIA
TILE LOADGRE
TILE LOAD LOG
TILE LOAD ROC
TILE LOAD SRP
TILE LOAD OOP
TILE LOAD LOP
TILE LOAD ROP
TILE LOAD NH4
TILE LOAD NO3
TILE LOAD DON
TILE LOAD LON
TILE LOAD RON
TILE LOAD SA
C
/usr/model/dsets/LM3/R0105/geo/map.dat
/usr/model/dsets/LM3/R0105/geo/geo.dat
/usr/model/dsets/LM3/R0105/agg/map1312.dat
/usr/model/dsets/LM3/R0105/3h_modified/hydro94.cdf
/usr/model/dsets/LM3/R0105/ici/ici.cdf
/usr/model/dsets/LM3/R0105/ld/ldlocations.cdf
/usr/model dsets/LM3/R0105/ld/ld_doc.cdf
/usr/model/dsets/LM3/R0105/ld/ld_dia.cdf
/usr/model/dsets/LM3/R0105/ld/ld_gre.cdf
/usr/model/dsets/LM3/R0105/ld/ld_lpoc.cdf
/usr/model/dsets/LM3/R0105/ld/ld_rpoc.cdf
/usr/model/dsets/LM3/R0105/ld/ld_srp.cdf
/usr/model/dsets/LM3/R0105/ld/ld_dop.cdf
/usr/model/dsets/LM3/R0105/ld/ld_lop.cdf
/usr/model/dsets/LM3/R0105/ld/ld_rop.cdf
/usr/model/dsets/LM3/R0105/ld/ld_nh4.cdf
/usr/model/dsets/LM3/R0105/ld/ld_no3.cdf
/usr/model/dsets/LM3/R0105/ld/ld_don.cdf
/usr/model/dsets/LM3/R0105/ld/ld_lon.cdf
/usr/model/dsets/LM3/R0105/ld/ld_ron.cdf
/usr/model/dsets/LM3/R0105/ld/ld sa.cdf
^
Z Scale t
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
he loads
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.075
LOAD MON DOC
LOAD MON DIA
LOAD MON GRE
LOAD MON LOG
LOAD MON ROC
LOAD MON SRP
LOAD MON OOP
LOAD MON LOP
LOAD MON ROP
LOAD MON NH4
LOAD MON NO3
LOAD MON DON
LOAD MON LON
LOAD MON RON
LOAD MON SA
195
-------
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.075
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.1
1.0
1.0
1.0
1.0
1.0
26141.5
1.0
1.0
1.0
20093.0
1.0
1.0
1.0
1.0
30255.0
1.0
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
UNMON DOC
UNMON DIA
UNMON GRE
UNMON LOG
UNMON ROC
UNMON SRP
UNMON OOP
UNMON LOP
UNMON ROP
UNMON NH4
UNMON NO3
UNMON DON
UNMON LON
UNMON RON
UNMONSA
ATM DOC
ATM DIA
ATM GRE
ATM LOG
ATM ROC
ATM SRP
ATM OOP
ATM LOP
ATM ROP
ATM NH4
ATM NO3
ATM DON
ATM LON
ATM RON
ATMSA
SEDDOC
SED DIA
SEDGRE
SED LOG
SED ROC
SED SRP
SED OOP
SED LOP
SED ROP
SED NH4
SED NO3
SED DON
SEDLON
SED RON
SEDSA
SHORE EROSION ROC
STOP
196
-------
13.5 LM3 Example PCB Calculation
The PCB calculation is currently the most complex of the studies supported by LM3 because
enabling this calculation also activates the eutrophication and the sediment transport.
The input file shown below demonstrates the following:
1. Selection of the PCB study, the selection of the eutrophication study, the simulation of
water column transport, the activation of mass balance calculations, the output of growth
limitation factors, the simulation of sediment transport, and the calculation of volatilization
are specified.
2. Basic program output control options are input. The modeled time interval is set to include
the study period of 1994 and 1995.
3. The warning and error concentration limits are increased for the eutrophication states and
the PCB congener.
4. Nitrogen has been turned off as a nutrient limiting factor.
5. A fairly large set of eutrophication kinetics parameters are input.
6. Water column transport parameters as well as sediment transport parameters are also
input.
7. Settling velocities for the eutrophication states that settle are input.
8. PCB congener-specific volatilization parameters are input.
9. PCB congener-specific partition coefficients are input.
10. Level 2 aggregated biotic inorganic carbon output is generated.
11. Input files for the water column, sediment bed, and the volatilization calculation are
specified. The input files for the water column include the hydrodynamics and the
simulation geometry.
12. The load files for the eutrophication states and the PCB congener are included.
13. Scaling factors for the loads are specified.
A copy of this file is at /mnt/model/llrs_model/production/LM3/examples/firead_pcb_
congener.inp as of this writing.
LIST ! Echo the contents of this file
C
C Example LM3 PCB-congener simulation input deck
C
197
-------
C Basic program options
"DO PCB_28+31
'DO EUTRO
*DO TRANS
*DO MASSBALANCE
'DOGRLIM
*DO SEDIMENT
*DO VOLAT
! Simulate PCB congener 28+31
! Perform eutrophication calculations
! Perform water column transport
! Perform mass balance calculations
! Output growth limitation factors
! Perform sediment bed transport
! Calculate volatilization
C Controlling program output, simulation times
C
OVERWRITE 1
CDFCOARSE1
COFFINED
DD2WRT 1
TMSTRT 0.0
TMEND 730.0
! Overwrite previous output dumps
! Write coarse (41 -segment) concentrations
! Write fine (5-km) concentrations
! How often to write output [days]
! First simulated day (starts at zero)
! Last simulated data
C Increase the warning and error concentration limits
p
\^
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM WARNING
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
DOC
DIA
GRE
ZOO
LOG
ROC
SRP
OOP
LOP
ROP
NH4
NO3
DON
LON
RON
SA
SU
PCB 28+31
DOC
DIA
GRE
ZOO
LOG
ROC
SRP
OOP
LOP
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
198
-------
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
*CMAXIMUM ERROR
r
ROP
NH4
NO3
DON
LON
RON
SA
SU
PCB_28+31_DIS
PCB_28+31_PART
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
1.0E+24
C Set the nutrient limiting factors
C SILIM == 1 Nitrogen and Phosphorus
C SILIM == 2 Nitrogen, Phosphorus, and Silica
C SILIM == 3 Phosphorus and Silica
v_^
SILIM 3
p
C Set the values of the eutrophication parameters
p
\^
ANCP 0.25
APCP 0.01
ASCD 2.3
BMRD 8.60E-07
BMRG 8.60E-07
CCHLD 40
CCHLG 4.0
CGZ 3.10E-06
FCDD 0.05
FCDG 0.05
FCLD 0.3
FCLG 0.3
FCRD 0.3
FCRG 0.3
FCDP 0.35
FCDZ 0
FCLP 0.5
FCLZ 0.4
FCRP 0.15
FCRZ 0.1
FNDD 0.5
FNDG 0.5
FNDP 0
FNDZ 0
FNID 0.5
FNIG 0.5
FNIP 0.5
FNIZ 0.5
FNLD 0
N:C ratio
P:C ratio
Si:C ratio
Diatom mortality
Greens mortality
C:chl ratio for diatom
C:chl ratio for greens
Zooplankton grazing rate
Fraction mortality = dissolved organic carbon (diatom)
Fraction mortality = dissolved organic carbon (greens)
Fraction mortality = labile organic carbon (diatom)
Fraction mortality = labile organic carbon (greens)
Fraction mortality = refractory organic carbon (diatom)
Fraction mortality = refractory organic carbon (greens)
Fraction predation = dissolved organic carbon
Fraction z-mortality = dissolved organic carbon
Fraction predation = labile paniculate detrital carbon
Fraction z-mortality = labile particulate detrital carbon
Fraction predation = refractory particulate detrital carbon
Fraction z-mortality = refractory particulate detrital carbon
Fraction mortality = dissolved organic nitrogen (diatom)
Fraction mortality = dissolved organic nitrogen (greens)
Fraction predation = dissolved organic nitrogen
Fraction z-mortality = dissolved organic nitrogen
Fraction mortality = dissolved inorganic nitrogen (diatom)
Fraction mortality = dissolved inorganic nitrogen (greens)
Fraction predation = dissolved inorganic nitrogen
Fraction z-mortality = dissolved inorganic nitrogen
Fraction mortality = labile organic nitrogen (diatom)
199
-------
FNLG 0
FNLP 0.4
FNLZ
FNRD
FNRG
FNRP
FNRZ
FPDD
FPDG
FPDP
FPDZ
FPID
0.4
0
0
0.1
0.1
0.10
0.10
0.2
0.2
0.30
FPIG 0.30
FPIP 0.5
FPIZ 0.5
FPLD 0.30
FPLG 0.30
FPLP 0.15
FPLZ 0.15
FPRD 0.30
FPRG 0.30
FPRP 0.15
FPRZ 0.15
FSAP 0
GREFF 0.6
IOWT 0
I1WT 0
I2WT 0
ILMUL 1
ILUMO 0
ISMIN 400
KDC 1.16E-08
KDCALG O.OOE+00
KDN 1.74E-07
KDNALG O.OOE+00
KDP 1.16E-09
KDPALG 6.00E-03
KE 0.15
KECHL 1.7E+04
KHN 2.50E-05
KHND 2.50E-05
KHNG 2.50E-05
NHNNT 0.0000
KHP 5.00E-07
KHPD 5.00E-07
KHPG 5.00E-07
KHSD 6.00E-05
KLC 1.00E-07
KLCALG O.OOE+00
Fraction mortality = labile organic nitrogen (greens)
Fraction predation = labile organic nitrogen
Fraction z-mortality = labile organic nitrogen
Fraction mortality = refractory organic nitrogen (diatom)
Fraction mortality = refractory organic nitrogen (greens)
Fraction predation = refractory organic nitrogen
Fraction z-mortality = refractory organic nitrogen
Fraction mortality = dissolved organic phosphorus (diatom)
Fraction mortality = dissolved organic phosphorus (greens)
Fraction predation= dissolved organic phosphorus
Fraction z-mortality = dissolved organic phosphorus
Fraction mortality = dissolved inorganic phosphorus (diatom)
Fraction mortality = dissolved inorganic phosphorus (greens)
Fraction predation = dissolved inorganic phosphorus
Fraction z-mortality = dissolved inorganic phosphorus
Fraction mortality = labile organic phosphorus (diatom)
Fraction mortality = labile organic phosphorus (greens)
Fraction predation = labile organic phosphorus
Fraction z-mortality = labile organic phosphorus
Fraction mortality = refractory organic phosphorus (diatom)
Fraction mortality = refractory organic phosphorus (greens)
Fraction predation = refractory organic phosphorus
Fraction z-mortality = refractory organic phosphorus
Fraction predation = dissolved silica
Zooplankton grazing coefficient
Weighted light dayO
Weighted light dayl
Weighted light day2
Scaling illumination factor
Constant value of illumination
Optimal illumination factor mineralization
Dissolved organic carbon mineralization
Dissolved organic carbon algae dependence
Dissolved organic nitrogen mineralization
Dissolved organic nitrogen algae dependence
Dissolved organic phosphorus mineralization
Dissolved organic phosphorus algae dependence
Background light attenuation
Light attenuation for chlorophyll-a
Organic nitrogen decay
Mean nitrogen half-saturation (diatom)
Mean nitrogen half-saturation (greens)
Half-saturation of NH3 for nitrogen
Organic phosphorus decay
Mean phosphorus half-saturation (diatom)
Mean phosphorus half-saturation (greens)
Mean silica half-saturation (diatom)
Mineralization hydrolysis for labile organic carbon
Labile organic carbon algae dependence
200
-------
KLN 3.47E-07
KLNALG O.OOE+00
KLP 1.00E-09
KLPALG 6.00E-03
KRC 1.00E-07
KRCALG O.OOE+00
KRN 3.47E-08
KRNALG O.OOE+00
KRP 1.00E-09
KRPALG 6.00E-03
KSUA 2.50E-07
KSZ 1.00E-04
KTBD 0.074
KTBG 0.074
KTGD1 0.0025
KTGD2 0.006
KTGG1 0.0025
KTGG2 0.006
KTHDR 9.9E-02
KTMNL 7.4E-02
KTNT1 0.004
KTNT2 0.004
KTSUA 0.069
NTM 2.50E-11
PMD 2.90E-05
PMG 2.60E-05
TMD 18
TMG 18
TMNT 30
TRD 20
TRG 20
TRHDR 20
TRMNL 20
TRSUA 20
TZREF 20
ZDTH 5.0E-07
ZTHET 1.100
Mineralization hydrolysis for labile organic nitrogen
Labile organic nitrogen algae dependence
Mineralization hydrolysis for labile organic phosphorus
Labile organic phosphorus algae dependence
Mineralization hydrolysis for refractory organic carbon
Refractory organic carbon algae dependence
Mineralization hydrolysis for refractory organic nitrogen
Refractory organic nitrogen algae dependence
Mineralization hydrolysis refractory organic phosphorus
Refractory organic phosphorus algae dependence
Biogenic silica algae dependence
Zooplankton half-saturation phytoplankton
Diatom mortality temperature coefficient
Greens mortality temperature coefficient
Temperature coefficient < (diatom)
Temperature coefficient > (diatom)
Temperature coefficient < (greens)
Temperature coefficient > (greens)
Hydrolysis temperature dependence
Mineralization temperature dependence
Temperature coefficient < nitrogen
Temperature coefficient > nitrogen
Dissolved silica temperature coefficient
Nitrification rate
Diatom production
Greens production
Optimal temperature diatom
Optimal temperature greens
Optimal temperature nitrogen
Optimal metabolic temperature (diatom)
Optimal metabolic temperature (greens)
Optimal hydrolysis temperature
Optimal mineralization temperature
Optimal dissolved silica temperature
Optimal predation temperature
Zooplankton mortality
Temperature coefficient predation
C Water transport parameters
C
TH 0.55
VBC 0
XYDFC 1
ZDFC 1
! Crank-Nicholson parameter
! Volume balance diagnostics flag
! Water column on/off horizontal diffusion flag
! Water column on/off vertical diffusion flag
C Sediment transport parameters
C
DENSITY_ROC 1200.0
MAX RESP VEL 1.00E-08
Refractory organic carbon density in kg/m**3
Maximum resuspension velocity allowed in m/s
201
-------
QMUL_SED 0.0
SLC_SED 1
TH_SED 0.0
TIME_STEP_SED-SCALE 0.05
ZDF O.OE+00
ZDFMUL SED 0.0
! Sediment flows scaling factor
! Sediment bed QUICKEST on/off flag
! Sediment transport Crank-Nicholson parameter
! Scaling factor for sediment bed time step
! Sediment vertical diffusion
! Sediment vertical diffusion scaling factor
C Settling velocities
C
VDIA
VGRE
VLOC
VROC
VLON
VRON
VLOP
VROP
VSU
1.15E-06
0.85E-06
2.00E-06
2.00E-06
2.00E-06
2.00E-06
2.00E-06
2.00E-06
2.00E-06
C
C PCB congener-specific volatilization parameters
C
MOLWT_PCB_28+31 260.54 ! Molecular weight of PCB 28+31
ENTROPY_PCB_28+31 0.09 ! Entropy of PCB 28+31
ENTHALPY_PCB_28+31 37 ! Enthalpy of PCB 28+31
C
C PCB congener-specific partition coefficients in m**3/kg
C
PART_COEFF_PCB_28+31 DOC 13.4896
PART_COEFF_PCB_28+31_DIA 1348.96
PART_COEFF_PCB_28+31_GRE 1348.96
PART_COEFF_PCB_28+31_ZOO 1348.96
PART_COEFF_PCB_28+31_LOC 1348.96
PART_COEFF_PCB_28+31_ROC 1348.96
C
C Output aggregated BIC carbon for level 2 model
C
TILE L2PROD 12prod.dat
C
C Water column Input files
C
TILE MAP /usr/model/dsets/LM3/R0105/geo/map.dat
TILE GEO /usr/model/dsets/LM3/R0105/geo/geo.dat
TILE AGG /usr/model/dsets/LM3/R0105/agg/map1312.dat
TILE HYDRO /usr/model/dsets/LM3/R0105/3h/hydro94.cdf
TILE ICI /usr/model/dsets/LM3/R0105/ici/ici_eutro_pcb.cdf
C
C Sediment bed input files
C
202
-------
TILEJCLSED
TILE VHYD
TILE VMAP
TILE VGEO
TILE RESUSP
VELOCITIES
/usr/model/dsets/LM3/R0105/ici/ici_sed.cdf
/usr/model/dsets/LM3/R0105/geo/vhyd.inp
/usr/model/dsets/LM3/R0105/geo/vmap.inp
/usr/model/dsets/LM3/R0105/geo/vgeo.inp
/usr/model/dsets/LM3/R0105/RESUSP_FLUXES_VELS/
resuspension_velocities.cdf
C Volatilization input files
C
TILE WIND
TILE AIR_CONC
C
C Loads
C
TILE LDLOC
TILE LOAD DOC
TILE LOAD DIA
TILE LOADGRE
TILE LOAD LOG
TILE LOAD ROC
TILE LOAD SRP
TILE LOAD OOP
TILE LOAD LOP
TILE LOAD ROP
TILE LOAD NH4
TILE LOAD NO3
TILE LOAD DON
TILE LOAD LON
TILE LOAD RON
TILE LOAD SA
TILE LOAD PCB_28+31
C
C Scale the loads
C
/usr/model/dsets/LM3/R0105/WIND/wind_speed_level3.cdf
/usr/model/dsets/LM3/R0105/CHEM_AIR/VAPOR_
CONCENTRATION/air concentrations level 3.cdf
/usr/model/dsets/LM3/R0105/ld/ldlocations_pcb.cdf
/usr/model dsets/LM3/R0105/ld/ld_doc.cdf
/usr/model/dsets/LM3/R0105/ld/ld_dia.cdf
/usr/model/dsets/LM3/R0105/ld/ld_gre.cdf
/usr/model/dsets/LM3/R0105/ld/ld_lpoc.cdf
/usr/model/dsets/LM3/R0105/ld/ld_rpoc.cdf
/usr/model/dsets/LM3/R0105/ld/ld_srp.cdf
/usr/model/dsets/LM3/R0105/ld/ld_dop.cdf
/usr/model/dsets/LM3/R0105/ld/ld_lop.cdf
/usr/model/dsets/LM3/R0105/ld/ld_rop.cdf
/usr/model/dsets/LM3/R0105/ld/ld_nh4.cdf
/usr/model/dsets/LM3/R0105/ld/ld_no3.cdf
/usr/model/dsets/LM3/R0105/ld/ld_don.cdf
/usr/model/dsets/LM3/R0105/ld/ld_lon.cdf
/usr/model/dsets/LM3/R0105/ld/ld_ron.cdf
/usr/model/dsets/LM3/R0105/ld/ld_sa.cdf
/usr/model/dsets/LM3/R0105/ld/ld_pcb_28+31 .cdf
-S
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
LOAD MON DOC
LOAD MON DIA
LOAD MON GRE
LOAD MON LOG
LOAD MON ROC
LOAD MON SRP
LOAD MON OOP
LOAD MON LOP
LOAD MON ROP
LOAD MON NH4
LOAD MON NO3
LOAD MON DON
LOAD MON LON
LOAD MON RON
203
-------
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
SCALE
1.075
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.075
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
26141.5
1.0
1.0
1.0
20093.0
1.0
1.0
1.0
1.0
30255.0
1.0
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
LOAD
MON SA
UNMON DOC
UNMON DIA
UNMON GRE
UNMON LOG
UNMON ROC
UNMON SRP
UNMON OOP
UNMON LOP
UNMON ROP
UNMON NH4
UNMON NO3
UNMON DON
UNMON LON
UNMON RON
UNMONSA
ATM DOC
ATM DIA
ATM GRE
ATM LOG
ATM ROC
ATM SRP
ATM OOP
ATM LOP
ATM ROP
ATM NH4
ATM NO3
ATM DON
ATM LON
ATM RON
ATMSA
SEDDOC
SED DIA
SEDGRE
SED LOG
SED ROC
SED SRP
SED OOP
SED LOP
SED ROP
SED NH4
SED NO3
SED DON
SEDLON
SED RON
SEDSA
SHORE EROSION ROC
STOP
204
-------
13.6 Example of a2cdf Calculation
A common case in which the a2cdf command is applied is the modification of initial conditions
for the LM3 simulation. A sequence of Linux commands that might be used to create new initial
conditions input CDF is shown below. The first two commands are used to copy the "public
copy" of the LM3 initial conditions file ici.cdf into the user's local directory. Next, the a2cdf
command is used to specify a constant value of initial concentration for the chloride state
variable across all 42 segments of the level 2 segmentation. Alternatively, the a2cdf command
can be used to accept sequential values from a prepared input file with 42 values (see the last
command).
% cp /usr/model/dsets/LM3/R0105/ici/ici.cdf my_ici_1 .cdf
% cp /usr/model/dsets/LM3/R0105/ici/ici.cdf my_ici_2.cdf
% repeat 41 echo "2.0" | a2cdf -R -r -n 1 CL my_ici_1
% a2cdf -R -r -n 1 CL my_ici_1 < my_ascii_ici_values
.dat
A more complex example involves the assignment of loads for the eutrophication state
variables. The calculation is performed outside of LM3 in the Linux shell environment. Even for
one of the eutrophication state variables, the manipulation involved to fill the CDF load zVariable
eventually read by LM3 is not straightforward without knowledge of the Linux shell scripting.
The complete Linux script responsible for this calculation is shown below and can be found in
the directory /mnt/model/home/wam/ALPHAS_FILES/wam/CDF_DATA with the input files
containing the load values themselves. Note the presence of the script
/mnt/model/home/wam/ALPHAS_FILES/wam/CDF_DATA/all loads.csh which fills CDF load files
for all of the eutrophication states. The technique can be readily modified and improved for
future state variables to be represented by the LM3 simulation.
#!/bin/csh
#
# Fill tributary and atmospheric loads into
# CDF file used by model calculation
#
set Ldfile = "ld_srp"
set Tribfilel = "Menominee.csv"
set Tribfile2 = "Fox.csv"
set TribfileS = "Sheboygan.csv"
set Tribfile4 = "Milwaukee.csv"
set TribfileS = "Calumet.csv"
set TribfileG = "St_Joseph.csv"
set Tribfile7 = "Kalamazoo.csv"
set TribfileS = "Grand.csv"
set Tribfile9 = "Muskegon.csv"
set Tribfilel 0 = "Pere.csv"
set Tribfilel 1 = "Manistique.csv"
#
# Input atmospheric loads in ASCII format
#
set Atmfilel = "atm94_1 .csv"
setAtmfile2 = "atm94 2.csv"
205
-------
set AtmfileS =
set Atmfile4 =
set AtmfileS =
set AtmfileG =
set Atmfile7 =
set AtmfileS =
set AtmfileQ =
set AtmfilelO =
set Atmfilel 1 =
set Atmfilel 2 =
set Atmfilel 3 =
set Atmfilel 4 =
set Atmfilel 5 =
set Atmfilel 6 =
set Atmfilel 7 =
set Atmfilel 8 =
set Atmfilel 9 =
setAtmfile20 =
setAtmfile21 =
setAtmfile22 =
setAtmfile23 =
setAtmfile24 =
"atm94_3.csv"
"atm94_4.csv"
"atm94_5.csv"
"atm94_6.csv"
"atm94_7.csv"
"atm94_8.csv"
"atm94_9.csv"
"atm94_10.csv'
"atm94_11.csv'
"atm94_12.csv'
"atm95_13.csv'
"atm95_14.csv'
"atm95_15.csv'
"atm95_16.csv'
"atm95_17.csv'
"atm95_18.csv'
"atm95_19.csv'
"atm95_20.csv'
"atm95_21 .csv'
"atm95_22.csv'
"atm95_23.csv'
"atm95_24.csv'
#
# Prepare an empty load file
#
sed -e 's/xxx/srp/' ld_xxx.skt > SLdfile.skt
touch SLdfile.cdf; rm -f SLdfile.cdf
#
#Trib
#
time values
if ($1 == "tributimes" || $1 =
tail +4
tail +4
tail +4
tail +4
tail +4
tail +4
tail +4
tail +4
tail +4
tail +4
tail +4
endif
#
#Trib
#
$Tribfile1
$Tribfile2
$Tribfile3
$Tribfile4
$Tribfile5
$Tribfile6
$Tribfile7
$Tribfile8
$Tribfile9
$Tribfile10
$Tribfile11
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
load values
-F
-F
-F
-F
-F
-F
-F
-F
-F
-F
-F
if ($1 == "tribloads" || $1 ==
tail +4
tail +4
tail +4
tail +4
$Tribfile1
$Tribfile2
$Tribfile3
$Tribfile4
awk
awk
awk
awk
-F
-F
-F
-F
=- "all")
, ' {print
, ' {print
, ' {print
, ' {print
, ' {print
, ' {print
, ' {print
, ' {print
, ' {print
, ' {print
, ' {print
then
$1}'
$1}'
$1}'
$1}'
$1}'
$1}'
$1}'
$1}'
$1}'
$1}'
$1}'
sed
sed
sed
sed
sed
sed
sed
sed
sed
sed
sed
"s/V/ /g"
"s/V/ /g"
"s/V/ /g"
"s/V/ /g"
"s/V/ /g"
"s/V/ /g"
"s/V/ /g"
"s/V/ /g"
"s/V/ /g"
"s/V/ /g"
"s/V/ /g"
a2cdf
a2cdf
a2cdf
a2cdf
a2cdf
a2cdf
a2cdf
a2cdf
a2cdf
a2cdf
a2cdf
-z -j
-z -j
-z -j
-z -j
-z -j
-z -j
-z -j
-z -j
-z -j
-z -j
-z -j
-n 1 TM 01
-n 1 TM 01
-n 1 TM 01
-n 1 TM 01
-n 1 TM_01
-n 1 TM 01
-n 1 TM 01
-n 1 TM 01
-n 1 TM 01
-n 1 TM 01
-n 1 TM 01
$Ldfile
$Ldfile
$Ldfile
$Ldfile
$Ldfile
$Ldfile
$Ldfile
$Ldfile
$Ldfile
$Ldfile
$Ldfile
"all") then
, ' {print
, ' {print
, ' {print
, ' {print
$7/86400}'
$7/86400}'
$7/86400}'
$7/86400}'
| float | a2cdf
j float j a2cdf
j float j a2cdf
j float j a2cdf
-z -j
-z -j
-z -j
-z -j
-n 1 LD 01
-n 1 LD 01
-n 1 LD 01
-n 1 LD 01
$Ldfile
$Ldfile
$Ldfile
$Ldfile
206
-------
tail +4 $Tribfile5 | awk -F,' {print $7/86400}' | float | a2cdf -Z -j -n 1 LD_01 SLdfile
tail +4 $Tribfile6 j awk -F,' {print $7/86400}' j float j a2cdf -Z -j -n 1 LD_01 SLdfile
tail +4 $Tribfile7 j awk -F,' {print $7/86400}' j float j a2cdf -Z -j -n 1 LD_01 $l_dfile
tail +4 $Tribfile8 j awk -F,' {print $7/86400}' j float j a2cdf -Z -j -n 1 LD_01 $l_dfile
tail +4 $Tribfile9 j awk -F,' {print $7/86400}' j float j a2cdf -Z -j -n 1 LD_01 $l_dfile
tail+4$Tribfile10 j awk-F,' {print $7/86400}' j float j a2cdf -Z -j -n 1 LD_01 $l_dfile
tail+4$Tribfile11 j awk-F,' {print $7/86400}' j float j a2cdf -Z -j -n 1 LD_01 $Ldfile
endif
#
# Atmospheric load time values
#
if ($1 == "atmtimes" || $1 == "all") then
touch
rm -ftmp.dat
echo "1 1 94"
echo "2 1 94"
echo "3 1 94"
echo "4 1 94"
echo "5 1 94"
echo "6 1 94"
echo "7 1 94"
echo "8 1 94"
echo "9 1 94"
echo "10 1 94"
echo "11 1 94"
echo "12 1 94"
echo "1 1 95"
echo "2 1 95"
echo "3 1 95"
echo "4 1 95"
echo "5 1 95"
echo "6 1 95"
echo "7 1 95"
echo "8 1 95"
echo "9 1 95"
echo "10 1 95"
echo "11 1 95"
echo "12 1 95"
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
» tmp.dat
a2cdf -Z -j -n 1 TM_39 $l_dfile < tmp.dat
endif
#
# Atmospheric load
#
if ($1 == "atmloads"
touch tmp.dat
rm -ftmp.dat
tail +4 $Atmfile1
tail +4 $Atmfile2
tail +4 $Atmfile3
tail +4 $Atmfile4
tail +4 $Atmfile5
values
|| $1 == "all") then
| awk -F, '{print #3}' »
j awk -F, '{print #3}' »
j awk -F, '{print #3}' »
j awk -F, '{print #3}' »
j awk -F, '{print #3}' »
tmp.dat
tmp.dat
tmp.dat
tmp.dat
tmp.dat
207
-------
tail
tail
tail
tail
tail
tail
tail
tail
tail
tail
tail
tail
tail
tail
tail
tail
tail
tail
tail
+4
+4
+4
+4
+4
+4
+4
+4
+4
+4
+4
+4
+4
+4
+4
+4
+4
+4
+4
$Atmfile6
$Atmfile7
$Atmfile8
$Atmfile9
$Atmfile1 0
$Atmfile1 1
$Atmfile1 2
$Atmfile1 3
$Atmfile1 4
$Atmfile1 5
$Atmfile1 6
$Atmfile1 7
$Atmfile1 8
$Atmfile1 9
$Atmfile20
$Atmfile21
$Atmfile22
$Atmfile23
$Atmfile24
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
awk
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
-F,
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
'{print
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
#3}'
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
> tmp.dat
a2cdf -Z -r -n 2318 LD_39 SLdfile < tmp.dat
endif
exit
13.7 Example of x2cdf Calculation
The x2cdf program is currently used for filling shortwave radiation, heat fluxes, and wave
information in the hydrodynamic input CDF. An example is provided here demonstrating the
method that might be used to fill missing wave period information in a hydrodynamic calculation
output CDF after that calculation is complete. The Linux commands for filling the missing CDF
wave period zVariable are shown below:
find /home/llrs_model/jobs/ -name 'hydro82.*' -print - exec In -s {} \;
find/home/llrs_model/dat/WAVES/R0102/973.Ilrssrv2.grl.epa.gov -name'*.wvp' -print -exec In -s{}\;
x2cdf-1.1 < firead.94.wvp.1h.inp
The corresponding FIREAD input file, which can be found in the directory
/mnt/model/home/wam/ALPHAS_FILES/wam/POM/filling, uses the parameter keys described in
Table 12.1. The input XDR formatted wave period files are specified. The name of the output
CDF to be filled is given along with the name of the zVariable to be filled. The BOUNDS key is
used to inform the application that the data values are being applied to the center of each
surface cell of the Lake Michigan high-resolution geometry. The number of input records,
corresponding to hourly values over 60 days, is given and six of these are averaged to define
each wave period value in the output CDF. The first input record values of each XDR file are
read (not skipped) and the bathymetry grid name for the Lake Michigan study is provided. See
the scripts /mnt/model/home/wam/ALPHAS_FILES/wam/POM/filling/x2cdf82 and /mnt/model
/home/wam/ALPHAS_FILES/wam/POM/filling/x2cdf94 that have been used to fill light, heat flux,
and wave information for the hydrodynamic calibration and study periods.
208
-------
Comment: Values for sensible heat flux, latent heat flux, and total heat flux have been taken
from calculations that were delivered to Large Lakes Research Station (LLRS) as part of the
Great Lakes Environmental Research Laboratory (GLERL) final report on the Lake Michigan
hydrodynamics study (Schwab and Beletsky, 1998). Values for these parameters are an output
of POM and, in principle, should be re-calculated at LLRS. This has not been done and the
heat flux values being employed are not consistent with the hydrodynamics employed. This
should not be a problem for two reasons. First, only minor changes have been made to the
GLERL hydrodynamic model since it was first received as a part of that final report; any
differences between the heat fluxes originally calculated and those estimated at LLRS are
hypothesized to be small and negligible. Second, the heat flux information is not currently used
by the water quality model.
LIST
C
C Example X2CDF input file used for filling wave periods
C in the 1994 hydrodynamics CDF.
C
C The input file names.
FNAME 1 =m94001 .wvd 2=m94061.wvd 3=m94121.wvd 4=m94181.wvd 5=94241 .wvd
6=m94301.wvd 7=m94361.wvd 8=m95056.wvd 9=m95116.wvd 10=m95176.wvd
11=m95236.wvd 12=9596.wvd
C CDF output file name
CDFFILE hydro94
C CDF zVariable name
ZVARAME WVP
C Boundary type
BOUNDS 1
C Number of records
NREC1440
C Number of records to average
NRAV1
C Skip first record flags.
SKIP01=12*0
C GLERL and LLRS/SEDZL flavor bathymetry files.
GBATH mich5.dat
END
209
-------
CHAPTER 14
REFERENCES
Acero, J.L.; K. Stemmler, and U.V. Gunten. 2000. Degradation Kinetics of Atrazine and Its
Degradation Products With Ozone and OH Radicals: A Predictive Tool for Drinking Water
Treatment. Environ. Sci. Technol., 34(4):591-597.
Ambrose, R.B., T.A. Wool, J.P. Connolly, and R.W. Shanz. 1988. WASP4, A Hydrodynamic
and Water Quality Model Model Theory, User's Manual, and Programmer's Guide. U.S.
Environmental Protection Agency, Office of Research and Development, Environmental
Research Laboratory, Athens, Georgia. EPA/600/3-87/039, 297 pp.
Arrhenius, S. 1889. On the Reaction Velocity of the Inversion of Cane Sugar by Acids.
Zeitschrift fur Physikalische Chemie, 4:226-232.
Balmer, M.E. and B. Sulzberger. 1999. Atrazine Degradation in Irradiated Iron/Oxalate
Systems: Effects of pH and Oxalate. Environ. Sci. Technol., 33(14):2418-2424.
Bamford, H.A., D.L. Poster, R.E. Huie, and J.E. Baker. 2002. Using Extrathermodynamic
Relationships to Model the Temperature Dependence of Henry's Law Constants of 209 PCB
Congeners. Environ. Sci. Technol., 36(20):4395-4402.
Bartone, C.R. and C.L. Schelske. 1982. Lake-wide Seasonal Changes in Limnological
Conditions in Lake Michigan in 1976. J. Great Lakes Res., 8(3):413-427.
Bowie, G.L., W.B. Mills, D.B. Porcella, C.L. Campbell, J.R. Pagenkopf, G.L. Rupp, K.M.
Johnson, P.W.H. Chan, S.A. Gherini, and C.E. Chamberlin. 1985. Rates, Constants and
Kinetic Formulations in Surface Water Quality Modeling. U.S. Environmental Protection
Agency, Office of Research and Development, Environmental Research Laboratory, Athens,
Georgia. EPA/600/3-85/040, 455 pp.
Brooks, A.S. and B.C. Torke. 1977. Vertical and Seasonal Distribution of Chlorophyll a in Lake
Michigan. J. Fish. Res. Board Canada, 34(12):2280-2287.
Brown, S., M. Folk, G. Goucher, and R. Rew. 1993. Software for Portable Scientific Data
Management. Comp. Physics, 7(3):304-308.
210
-------
Burkhard, N. and J. Guth. 1976. Photodegradation of Atrazine, Atraton, and Ametryne in
Aqueous Solution With Acetone as a Photosensitizer. J. Pest. Sci., 7(1):65-71.
Carnahan, B., H.A. Luther, and J.O. Wilkes. 1969. Applied Numerical Methods. John Wiley
and Sons, Incorporated, New York, New York. 604 pp.
Cerco, C.F. and T. Cole. 1993. Three-Dimensional Eutrophication Model of Chesapeake Bay.
J. Environ. Engin., 119(6):1006-1025.
Cerco, C. and T. Cole. 1994. Three-Dimensional Eutrophication Model of Chesapeake Bay,
Volume I: Main Report. U.S. Army Corps of Engineers, U.S. Army Engineer Waterways
Experiment Station, Baltimore, Maryland. Technical Report EL-94-4, 658 pp.
Cerco, C. and T. Cole. 1995. User's Guide to the CE-QUAL-ICM Three-Dimensional
Eutrophication Model. U.S. Army Corps of Engineers, U.S. Army Engineer Waterways
Experiment Station, Vicksburg, Mississippi. Technical Report EL-95-15, 2,420 pp.
Chapman, R.S., T.M. Cole, and T.K. Gerald. 1997. Development of a Hydrodynamic/Water
Quality (POM-IPX) Linkage for the Lake Michigan Mass Balance Project. Final Report. U.S.
Environmental Protection Agency, Office of Research and Development, National Health
and Environmental Effects Research Laboratory, Mid-Continent Ecology Division-Duluth,
Large Lakes Research Station, Grosse lie, Michigan. 63 pp.
Christoffersen, J.B. and I.G. Jonsson. 1985. Bed Friction and Dissipation in a Combined
Current and Wave Motion. Ocean Engin., 12(5):387-423.
DePinto, J.V., R. Raghunathan, P. Sierzenga, X. Zhang, VJ. Bierman, Jr., P.W. Rodgers, and
T.C. Young. 1993. Recalibration of GBTOX: An Integrated Exposure Model for Toxic
Chemicals in Green Bay, Lake Michigan. Final Report. U.S. Environmental Protection
Agency, Office of Research and Development, Environmental Research Laboratory-Duluth,
Large Lakes Research Station, Grosse lie, Michigan. 132 pp.
Di Toro, D.M., DJ. O'Connor, and R.V. Thomann. 1971. A Dynamic Model of the
Phytoplankton Population in the Sacramento-San Joaquin Delta. In: R.F. Gould (Ed.), Non-
Equilibrium Systems in Natural Water Chemistry, pp. 131-180. American Chemical Society,
Washington, D.C.
Di Toro, D.M. and J.P. Connolly. 1980. Mathematical Models of Water Quality in Large Lakes,
Part 2: Lake Erie. U.S. Environmental Protection Agency, Office of Research and
Development, Environmental Research Laboratory-Duluth, Large Lakes Research Station,
Grosse lie, Michigan. EPA/600/3-80/065, 97 pp.
Di Toro, D.M. and W.F. Matystik, Jr. 1980. Mathematical Models of Water Quality in Large
Lakes, Part 1: Lake Huron and Saginaw Bay. U.S. Environmental Protection Agency,
Office of Research and Development, Environmental Research Laboratory-Duluth, Large
Lakes Research Station, Grosse lie, Michigan. EPA/600/3-80/056, 180 pp.
211
-------
Endicott, D.D., W.L. Richardson, and R. Rossmann. 2006. PCBs Modeling Overview. In: R.
Rossmann (Ed.), Results of the Lake Michigan Mass Balance Project: Polychlorinated
Biphenyl Modeling Report, Part 1, Chapter 2, pp. 16-25. U.S. Environmental Protection
Agency, Office of Research and Development, National Health and Environmental Effects
Research Laboratory, Mid-Continent Ecology Division-Duluth, Large Lakes Research
Station, Grosse lie, Michigan. EPA/600/R-04/167, 579 pp.
Fahnenstiel, G.L. and D. Scavia. 1987a. Dynamics of Lake Michigan Photoplankton: Primary
Production and Growth. Canadian J. Fish. Aquat. Sci., 44(3):499-508.
Fahnenstiel, G.L. and D. Scavia. 1987b. Dynamics of Lake Michigan Photoplankton: Recent
Changes in Surface and Deep Communities. Canadian J. Fish. Aquat. Sci., 44(3)509-514.
Gailani, J.Z., C.K. Ziegler, and WJ. Lick. 1991. Transport of Suspended Solids in the Lower
Fox River. J. Great Lakes Res., 17(4): 479-494.
Grant, W.D. and O.S. Madsen. 1979. Combined Wave and Current Interaction with a Rough
Bottom. J. Geophy. Res., 84(C4):1797-1808.
Hayes, T., K. Hasten, M. Tsui, A. Hoang, C. Haeffele, and A. Vonk. 2003. Atrazine-lnduced
Hermaphroditism at 0.1 ppb in American Leopard Frogs (Rana pipiens): Laboratory and
Field Evidence. Environ. Health Persp., 111(4):568-573.
Konstantinou, I.K., A.K. Zarkadis, and T.A. Albanis. 2001. Photodegradation of Selected
Herbicides in Various Natural Waters and Soils Under Environmental Conditions. J.
Environ. Quality, 30(1):121-130.
Kremer, J. and S. Nixon. 1974. A Coastal Marine Ecosystem: Simulation and Analysis.
Springer Verlag, New York, New York. 217 pp.
Leonard, B. 1979. A Stable and Accurate Convective Modelling Procedure Based on Quadratic
Upstream Interpolation. Comp. Methods Appl. Mechan. Engin., 19(1):59-98.
Lick, W.J., C.K. Ziegler, and C.-H. Tsai. 1987. Resuspension, Deposition, and Transport of
Fine-Grained Sediments in Rivers and Near-Shore Areas. Report to the U.S. Environmental
Protection Agency, Office of Research and Development, Environmental Research
Laboratory-Duluth, Large Lakes Research Station, Grosse lie, Michigan. 94 pp.
Lick, W., L. Jin, and J. Gailani. 2004. Initiation of Movement of Quartz Particles. J. Hydraul.
Engin., 130(8):755-761.
Makarewicz, J.C., P. Bertram, and T.W. Lewis. 1998. Changes in Phytoplankton Size-Class
Abundance and Species Composition Coinciding With Changes in Water Chemistry and
Zooplankton Community Structure of Lake Michigan, 1983 to 1992. J. Great Lakes Res.,
24(3):637-657.
McNeil, J. and W. Lick. 2002. Erosion Rates and Bulk Properties of Sediments in Lake
Michigan. University of California, Department of Mechanical and Environmental
Engineering, Santa Barbara, California. 110 pp.
212
-------
Miller, S.M. 1999. Spatial and Temporal Variability of Organic and Nutrient Compounds in
Atmospheric Media Collected During the Lake Michigan Mass Balance Study. M.S. Thesis,
Department of Civil, Structural, and Environmental Engineering, State University of New
York, Buffalo, New York.
Monod, J. 1949. The Growth of Bacterial Cultures. Ann. Rev. Microbiol., 3:371-394.
National Aeronautics and Space Administration. 1996a. CDF User's Guide. National
Aeronautics and Space Administration, National Space Science Data Center, Space
Physics Data Facility, Goddard Space Flight Center, Greenbelt, Maryland. 205 pp.
National Aeronautics and Space Administration. 1996b. CDF FORTRAN Reference Manual.
National Aeronautics and Space Administration, National Space Science Data Center,
Space Physics Data Facility, Goddard Space Flight Center, Greenbelt, Maryland. 177 pp.
National Aeronautics and Space Administration. 1996c. CDF C Reference Manual. National
Aeronautics and Space Administration, National Space Science Data Center, Space
Physics Data Facility, Goddard Space Flight Center, Greenbelt, Maryland. 165 pp.
O'Connor, DJ. 1983a. The Significance of Gas Exchange in Water Quality Assessment and
Planning. In: W. Brutsaert and G.H. Jirka (Eds.), Gas Transfer at Water Surfaces, Part 7,
pp. 559-576. D. Reidel Publishing Company, Boston, Massachusetts. 656 pp.
O'Connor, DJ. 1983b. Wind Effects on Gas-Liquid Transfer Coefficients. J. Environ. Engin.,
109(9):731-752.
Odum, E. 1971. Fundamentals of Ecology, 3rd Edition. W.B. Saunders Company,
Philadelphia, Pennsylvania. 574 pp.
Parker, S.P. 1993. McGraw-Hill Encyclopedia of Physics, 2nd Edition. McGraw-Hill
Companies, New York, New York. 1,624 pp.
Pauer, J.J., K.W. Taunt, and W. Melendez. 2006. LM3-Eutro. In: R. Rossmann (Ed.), Results
of the Lake Michigan Mass Balance Project: Polychlorinated Biphenyl Modeling Report,
Part 2, pp. 120-182. U.S. Environmental Protection Agency, Office of Research and
Development, National Health and Environmental Effects Research Laboratory, Mid-
Continent Ecology Division-Duluth, Large Lakes Research Station, Grosse lie, Michigan.
EPA/600/R-04/167, 579 pp.
Pratap, K. and A.T. Lemley. 1998. Fenton Electrochemical Treatment of Aqueous Atrazine and
Metolachlor. J. Agricult. Food Chem., 46(8):3285-3291.
Ralebitso, T.K., E. Senior, and W.H. van Verseveld. 2002. Microbial Aspects of Atrazine
Degradation in Natural Environments. Biodegradation, 13(1):11-19.
Rebelo, S.L.H., A. Melo, R. Coimbra, M.E. Azenha, M.M. Pereira, H.D. Burrows, and M.
Sarakha. 2007. Photodegradation of Atrazine and Ametryn With Visible Light Using Water
Soluble Porphyrins as Sensitizers. Environ. Chem. Letters, 5(1):29-33.
213
-------
Ribaudo, M.O. and A. Bouzaher. 1994. Atrazine: Environmental Characteristics and
Economics of Management. U.S. Department of Agriculture, Economic Research Service,
Washington, D.C. Agricultural Economic Report Number 699, 22 pp.
Robbins, J.A., N.R. Morehead, R.W. Rood, D.N. Edgington, and S. Meyer. 1999. Accumulation
and Near-Surface Mixing of Sediments in Lake Michigan as Determined for the Lake
Michigan Mass Balance Program, Volumes 1 and 2. Project Report. U.S. Environmental
Protection Agency, Office of Research and Development, National Health and
Environmental Effects Research Laboratory, Mid-Continent Ecology Division-Duluth, Large
Lakes Research Station, Grosse lie, Michigan. 503 pp.
Roberts, J., R. Jepsen, and W. Lick. 1998. Effects of Particle Size and Bulk Density on the
Erosion of Quartz Particles. J. Hydraul. Engin., 124(12):1261-1267.
Rockwell, D.C., O.K. Salisbury, and B.W. Lesht. 1989. Water Quality in the Middle Great
Lakes: Results of the 1985 U.S. EPA Survey of Lakes Erie, Huron and Michigan. U.S.
Environmental Protection Agency, Great Lakes National Program Office, Chicago, Illinois.
EPA/905/6-89/001, 272 pp.
Rodgers, P.W. and D. Salisbury. 1981 a. Water Quality Modeling of Lake Michigan and
Consideration of the Anomalous Ice Cover of 1976-1977. J. Great Lakes Res., 7(4):467-
480.
Rodgers, P.W. and D. Salisbury. 1981b. Modeling of Water Quality in Lake Michigan and the
Effects of Anomalous Ice Cover of 1976-1977. Great Lakes Basin Commission, Great
Lakes Environmental Planning Study, Great Lakes Basin Commission, Ann Arbor, Michigan.
Contribution Number 44, 53 pp.
Rossmann, R. (Editor). 2006. Results of the Lake Michigan Mass Balance Project:
Polychlorinated Biphenyl Modeling Report. U.S. Environmental Protection Agency, Office of
Research and Development, National Health and Environmental Effects Research
Laboratory, Mid-Continent Ecology Division-Duluth, Large Lakes Research Station, Grosse
lie, Michigan. EPA/600/R-04/167, 579 pp.
Rousar, D.C. 1973. Seasonal and Spatial Changes in Primary Production and Nutrients in
Lake Michigan. Water Air Soil Pollut., 2(4):497-514.
Rygwelski, K.R. (Ed.). 2008. Results of the Lake Michigan Mass Balance Project: Atrazine
Modeling Report. U.S. Environmental Protection Agency, Office of Research and
Development, National Health and Environmental Effects Research Laboratory, Mid-
Continent Ecology Division, Large Lakes Research Station, Grosse lie, Michigan.
EPA/600/R-08/111, 140pp.
Scavia, D. and G.L. Fahnenstiel. 1987. Dynamics of Lake Michigan Phytoplankton
Mechanisms Controlling Epilimnetic Communities. J. Great Lakes Res., 13(2):103-120.
Scavia, D., G.A. Lang, and J.F. Kitchell. 1988. Dynamics of Lake Michigan Plankton: A Model
Evaluation of Nutrient Loading, Competition, and Predation. Canadian J. Fish. Aquat. Sci.,
45(1):165-177.
214
-------
Schabacker, D. 1991. Summary Report: Aqueous Photolysis of Carbon-14 Atrazine Under
Natural and Artificial Light. Unpublished Study Prepared by Agrisearch, Incorporated,
Frederick, Maryland. Submitted by Ciba-Geigy Corporation, Greensboro, North Carolina.
Laboratory Project Number 12112A and 12112B, 185 pp.
Schelske, C.L. and E.F. Stoermer. 1971. Eutrophication, Silica Depletion, and Predicted
Changes in Algal Quality in Lake Michigan. Science, 173(3995):423-424.
Schelske, C.L. and E.F. Stoermer. 1972. Phosphorus, Silica and Eutrophication in Lake
Michigan. In: G.E. Likens (Ed.), Nutrients and Eutrophication, pp. 157-171. American
Society of Limnology and Oceanography, Lawrence, Kansas.
Schelske, C.F., E.F. Stoermer, G.L. Fahnenstiel, and M. Haibach. 1986. Phosphorus
Enrichment, Silica Utilization and Biogeochemical Silica Depletion in the Great Lakes.
Canadian J. Fish. Aquat. Sci., 43(2):407-415.
Scholtz, M.T., BJ. Van Heyst, and A. Ivanoff. 1999. Documentation for the Gridded Hourly
Atrazine Emissions Data for the Lake Michigan Mass Balance Study. U.S. Environmental
Protection Agency, Great Lakes National Program Office, Chicago, Illinois. EPA/600/R-
99/067, 61 pp.
Schwab, DJ. and D. Beletsky. 1998. Lake Michigan Mass Balance Study: Hydrodynamic
Modeling Project. U.S. Department of Commerce, National Oceanic and Atmospheric
Administration, Great Lakes Environmental Research Laboratory, Ann Arbor, Michigan.
ERLGLERL-108, 53pp.
Schwarzenbach, R.P., P.M. Gschwend, and D.M. Imboden. 1993. Environmental Organic
Chemistry. John Wiley and Sons, Incorporated, New York, New York. 681 pp.
Settles, M. 1996. The FIREAD Primer: Format Independent Reading of Program Input
Parameters. Internal Technical Note. U.S. Environmental Protection Agency, Office of
Research and Development, National Health and Environmental Effects Research
Laboratory, Mid-Continent Ecology Division-Duluth, Large Lakes Research Station, Grosse
lie, Michigan. 20 pp.
Settles, M. 1998. UT -Version 1.3.1. Internal Technical Note. U.S. Environmental Protection
Agency, Office of Research and Development, National Health and Environmental Effects
Research Laboratory, Mid-Continent Ecology Division-Duluth, Large Lakes Research
Station, Grosse lie, Michigan. 5 pp.
Steele, J.H. 1962. Environmental Control of Photosynthesis in the Sea. Limnol. Oceanogr.,
7(2):137-150.
Stoermer, E.F. 1993. Evaluating Diatom Succession: Some Peculiarities of the Great Lakes
Case. J. Paleolimnol., 8(1):71-83.
Tauber, A. and C. von Sonntag. 2000. Products and Kinetics of the OH-Radical-lnduced
Dealkylation of Atrazine. Acta Hydrochim. Hydrobiol., 28(1):15-23.
215
-------
Thibodeaux, LJ. 1979. Chemodynamics: Environmental Movement of Chemicals in Air,
Water, and Soil. John Wiley and Sons, Incorporated, New York, New York. 501 pp.
Thomann, R.V. and D.M. Di Toro. 1975. Mathematical Modeling of Phytoplankton in Lake
Ontario, Part 1 - Model Development and Verification. U.S. Environmental Protection
Agency, Office of Research and Development, Environmental Research Laboratory-
Corvallis, Large Lakes Research Station, Grosse lie, Michigan. EPA/600/3-75/005, 178 pp.
Thomann, R.V. and J.A. Mueller. 1987. Principles of Water Quality Modeling and Control.
Harper and Row Publishers, New York, New York. 644 pp.
Treinish, L.A. and M.L. Gough. 1987. A Software Package for the Data Independent Storage of
Multi-Dimensional Data. EROS Trans., 68(28):633-635.
Treinish, L.A. and G.W. Goucher. 1988. A Data Abstraction for the Source Independent
Storage and Manipulation of Data. National Aeronautics and Space Administration, National
Space Science Center, Goddard Space Flight Center, Greenbelt, Maryland.
Treinish, L.A. 1991. Data Structure and Access Software for Scientific Visualization. A Report
on a Workshop at Siggraph '90. Comp. Graphics, 25(2):104-118.
U.S. Environmental Protection Agency. 2001. Ambient Aquatic Life Water Quality for Atrazine.
U.S. Environmental Protection Agency, Office of Water, Washington, D.C. EPA/822/D-
01/002, 230pp.
Velleux, M., S. Westenbroek, J. Ruppel, M. Settles, and D. Endicott. 2001. A User's Guide to
IPX, The In-Place Pollutant Export Water Quality Modeling Framework. U.S. Environmental
Protection Agency, Office of Research and Development, National Health and
Environmental Effects Research Laboratory, Mid-Continent Ecology Division-Duluth, Large
Lakes Research Station, Grosse lie, Michigan. 179 pp.
Wackett, L.P., MJ. Sadowsky, B. Martinez, and N. Shapir. 2002. Biodegradation of Atrazine
and Related s-Triazine Compounds: From Enzymes to Field Studies. Appl. Microbiol.
Biotechnol., 58(1):39-45.
Wanninkhof, R.J., J.R. Ledwell, and J. Crusius. 1991. Gas Transfer Velocities on Lakes
Measured with Sulfur Hexafluoride. In: S.C. Wilhelm and J.S. Gulliver (Eds.), Air-Water
Mass Transfer, pp. 441-458. American Society of Civil Engineers, New York, New York.
Wanninkhof, RJ. 1992. Relationship Between Gas Exchange and Wind Speed Over the
Ocean. J. Geophys. Res., 97:7373-7381.
Watson, D.F. 1994. An Implementation of Natural Neighbor Interpolation. Dave Watson
Publisher, Claremont, Australia. 170 pp.
Weast, R.C. 1989. Handbook of Chemistry and Physics: A Ready-Reference Book of
Chemical and Physical Data, 70th Ed. The Chemical Rubber Publishing Company,
Cleveland, Ohio. 2,524 pp.
216
-------
Whitman, W.G. 1923. A Preliminary Experimental Confirmation of the Two-Film Theory of Gas
Absorption. Chem. Metall. Eng., 29:146-148.
Xia, X. 2006. Sample Data Interpolation for the LMMBP. In: R. Rossmann (Ed.), Results of
the Lake Michigan Mass Balance Project: Polychlorinated Biphenyls Modeling Report, Part
4, Appendix 4.4.1, pp. 286-290. U.S. Environmental Protection Agency, Office of Research
and Development, National Health and Environmental Effects Research Laboratory, Mid-
Continent Ecology Division-Duluth, Large Lakes and Rivers Forecasting Research Branch,
Large Lakes Research Station, Grosse lie, Michigan. EPA/600/R-04/167, 579 pp.
Zeng, Y., C.L. Sweeney, S. Stephens, and P. Kotharu. 2004. Atrazine Pathway Map. Wackett
LP. Biodegradation Database at http://umbbd.ahc.umn.edu/atr/atr_map.html.
Zepp, R.G., J. Hoigne, and H. Bader. 1987. Nitrate-Induced Photooxidation of Trace Organic
Chemicals in Water. Environ. Sci. Technol., 21(5):443-450.
Zhang, X. 2006. LM2-Toxic. In: R. Rossmann (Ed.), Results of the Lake Michigan Mass
Balance Project: Polychlorinated Biphenyls Modeling Report, Part 4, Chapter 4.4.3, pp.
271. U.S. Environmental Protection Agency, Office of Research and Development, National
Health and Environmental Effects Research Laboratory, Mid-Continent Ecology Division-
Duluth, Large Lakes and Rivers Forecasting Research Branch, Large Lakes Research
Station, Grosse lie, Michigan. EPA/600/R-04/167, 579 pp.
Ziegler, C.K. and WJ. Lick. 1986. A Numerical Model of the Resuspension, Deposition, and
Transport of Fine-Grained Sediments in Shallow Water. Report to the U.S. Environmental
Protection Agency, Office of Research and Development, Environmental Research
Laboratory-Duluth, Large Lakes Research Station, Grosse lie, Michigan. 179 pp.
217
-------
APPENDIX A
DEVELOPMENT OF A HYDRO DYNAMIC/WATER QUALITY
(POM/IPX) LINKAGE FOR THE LAKE MICHIGAN MASS BALANCE
PROJECT
Final Report
by
Raymond S. Chapman, Ph.D.
Ray Chapman and Associates
1725 Mac Arthur Place
Vicksburg, Mississippi 39180
Thomas M. Cole
Environmental Laboratory
U.S. Army Corps of Engineers
Waterways Experiment Station
3909 Halls Ferry Road
Vicksburg, Mississippi 39180
Terry K. Gerald
AScI, Incorporated
U.S. Army Corps of Engineers
Waterways Experiment Station
3909 Halls Ferry Road
Vicksburg, Mississippi 39180
Prepared for
U.S. Environmental Protection Agency
Office of Research and Development
National Health and Environmental Effects Research Laboratory
Mid-Continent Ecology Division-Duluth
Large Lakes Research Station
9311 Groh Road
Grosse lie, Michigan 48138
December 11, 1997
218
-------
Contents
Introduction 221
CE-QUAL-ICM Transport Concept 221
Non-Uniform Grid ULTIMATE QUICKEST Formulation 222
Vertical Implicit Transport 226
POM-IPX Linkage 228
MAPPER Routines 228
ICM_COOR.OUT 229
GEO.INP 229
MAP.INP 229
FILE95.INP 229
POM Linkage Processor 229
Taskl 230
Task 2 231
Task3 231
Task 4 231
IXMT Modifications 232
IPX Linkage and Input Modifications 232
IPXMT Transport Description 232
Guide to the Use of the Linked POMGL-IPXMT 233
Linkage Quality Assurance Testing 239
Simplified Grid Tests 239
Prototype Grid Tests 239
General Analytic Testing 239
References 240
Attachment 1 IPXMT Transport Input, MAP File, and GEO File Descriptions 241
Attachment 2. Additional Feature Development for the POM-IPXMT Linkage for the
Lake Michigan Mass Balance Project - Task 1 Report 254
Attachment 3. Additional Feature Development for the POM-IPXMT Linkage for
the Lake Michigan Mass Balance Project - Task 2 Report 258
Attachment 4 Additional Feature Development for the POM-IPXMT Linkage
for the Lake Michigan Mass Balance Project - Final Report 261
219
-------
Tables
A1 POMGLOUT Standard Output File 234
A2 IPXMT Control File 235
A3 MAP.DlA Listing 237
220
-------
Appendix A
Development of a Hydrodynamic/Water Quality (POM/IPX)
Linkage
for the Lake Michigan Mass Balance Project
Introduction
The model design for the Lake Michigan Mass Balance Project (LMMBP) is based on a linked
submodel approach which, in part, includes hydrodynamic, sediment transport, eutrophication,
and contaminants. It is the desire of the U.S. Environmental Protection Agency (USEPA) that
the hydrodynamic model (HM) Princeton Ocean Model (POM) and water quality model (WQM)
IPX linkage tasks follows the work performed by Water Quality and Contaminant Modeling
Branch (WQCMB), Environmental Laboratory (EL), U.S. Army Corps of Engineers (USAGE) on
the Chesapeake Bay Eutrophication Study. The objectives of this research project have been
to: (1) develop and implement a processor subroutine in the POM hydrodynamic model to
provide input geometry, flow, and diffusion data for the IPX water quality model; (2) implement
and test an ICM-type transport scheme in IPX; (3) perform linkage testing on simplified and
prototype grids; and (4) document the linkage methodology and develop a user's guide. This
report provides documentation on the concept, implementation, and use of the POM-IPX linkage
and transport methodology.
CE-QUAL-ICM Transport Concept
Transport within the CE-QUAL-ICM (Cerco and Cole, 1995) is based on the integrated
compartment method or box model methodology. The present version of ICM transport is a
loose extension of the original WASP (Ambrose et al., 1986) code. The notion of utilizing the
box model concept was retained in order to allow the coupling, via map files, of the WQM with
hydrodynamic models of different dimensions and degrees of complexity. A basic feature of
ICM is that transport is performed as a one-dimensional exchange between two adjacent cells
through an individual cell face, irrespective of the dimensionality of the model. ICM handles
horizontal and vertical transport during separate operations. The constituent transport equation
that is solved is as follows:
5F 5UF 8\NF 8 ,_. 5F, 8 ,_. 5F, .
+ + (Dv) (D7 ) = 0
at 8x 8z 8x x 8x 8z z 8z
221
-------
F = Constituent concentration
U = Horizontal cell face velocities
W = Vertical cell face velocities
Dx = Horizontal cell face diffusion coefficient
Dz = Vertical cell face diffusion coefficient
x = Horizontal dimension
z = Vertical dimension
t = Time
This transport equation is solved using the third-order accurate Non-Uniform Grid ULTIMATE
QUICKEST algorithm in the horizontal and second-order implicit Crank-Nicholson scheme in the
vertical. The details of these equations are presented below.
Non-Uniform Grid ULTIMATE QUICKEST Formulation
In the horizontal, the one-dimensional conservative control volume advective transport of a
constituent F, integrated over a time step is written:
pn+1 _ pn __^!/i j p _ iip\
h ~h Ax1 rr llj (A.2)
where
FJ = Constituent concentration at a grid point
Frj = Right and left cell face constituent concentrations
Urj = Right and left cell face velocities
Ax = Horizontal grid spacing or box length
At = Time step
Recalling that transport within ICM is referenced to flow faces and not cells, mass balance for
each cell is achieved by summing the flux contributions of each flow face about that cell. The
estimate of cell faces mass fluxes are computed using the QUICKEST transport scheme. The
QUICKEST algorithm presented by Leonard (1979) was originally derived using an upstream
weighted quadrate interpolation function defined over three uniformly spaced grid points. This
interpolation function estimates the value of cell face concentrations required by the
conservative control volume transport scheme. For example, the right cell face concentration
estimate for a flow positive to the right is written:
Fr = TMFM + T^ + Ti+1Fi+1 (A 3)
where Tj are advective multipliers which weight the contribution of the three adjacent grid point
concentrations. The advective multipliers are obtained by collecting the terms associated with
each constituent value as defined by the QUICKEST advection operator. As an example, the
advective multipliers for a uniform grid spacing QUICKEST approximation are simply Ti+i = 3/8,
Tj = 3/4, and TM = -1/8, where i-1, i, and i+1 correspond to Box IBL, Box IB, and Box JB,
respectively.
222
-------
In order to accommodate a non-uniform grid, a combination of two and three point Lagrangian
divided differences interpolation functions (Henrici, 1964) are used to compute the QUICKEST
estimate for the right cell face centered about Boxes IB and JB, specifically
DxAt--l[Ax2-(UAt)2]
(A.4)
6L
where
x = The local position of the right cell face with respect to the center of Box 1 or Xj
Dx = Diffusion coefficient
The quantities P'2 and P2 represent the gradient and curvature of the longitudinal distribution of
the constituent F. Defining a local coordinate system of the three non-uniformly spaced grid cell
denoted by XM, Xj, and xi+i with corresponding constituent values, the linear and quadratic
interpolation functions required in Equation A.4 are written:
i
(x -
\Ai+i
and
(A.5)
| i ,
- Y UY -Y Vl+1 JY - Y UY-Y
Ai / V i+1 i-1 / \ \ i+1 A i i-1,
(A.6)
|
i-1 ~ xi
Taking the first and second derivatives of P2(x) and substituting into Equation A.4, it is then
possible to group terms and obtain the QUICKEST advective multipliers. For example, Ti+i
multiplier is written:
T.
1+1
UAt
-XM)
(A.7)
( Xi+1 X; ) ( Xi+1 Xj.-i )
Similar functions for the Tj and TM multipliers are obtained by simply substituting the Lagrangian
divided differences associated with Fj and FM, respectively. The modification of the QUICKEST
transport scheme utilized in ICM was originally developed and presented in Chapman (1988)
with further applications and testing found in Chapman (1992), Dortch et al. (1991), and
Chapman and Cole (1992).
223
-------
The multipliers TM, Tif and Ti+i correspond to the ICM FORTRAN variables TERM(F,1),
TERM(F,2), and TERM(F,3). The definition of remaining FORTRAN variables will be defined
utilizing Equation A.7. In Equation A. 7, the Lagrangian divided differences are defined in terms
of box lengths (FORTRAN variable BL). For example, the first term in Equation A.7 (FORTRAN
variable T3(F)) is defined as one-half of Box Length IB divided by the average of Box Length IB
and Box Length JB. The divided differences in the second term are represented by the
FORTRAN variables TP3(F,1)/DEN3(F,1), which are again defined as combinations of Box
Lengths. Finally, the divided difference in the third term is simply 1/DEN3(F,1). The second
subscript used in the FORTRAN variables defining the Lagrangian multipliers denotes positive
(1), and negative (2) flow direction. This results from the fact that the upstream weighting of the
QUICKEST scheme is direction sensitive.
In a similar fashion, a three-point approximation for the diffusive flux across a cell face is
constructed utilizing the diffusive multipliers GM, Gj and Gi+-|. Following the rational of the
advective multipliers, and that the diffusive fluxes defined in ICM are the product of a diffusion
coefficient, cell face area, A, and the first derivative of the longitudinal constituent distribution, it
is easily seen that:
|~(X - X:) + (X - X: -,)!
G , = D A ^ _ - _ - _ -^ A.8
i+1 x
The FORTRAN variables used in ICM are:
GRAD(F,3) = DIFF(F)*A(F)*TP3(F,1)/DEN3(F,1)
Again, GM and G, (GRAD(F,1) and GRAD(F,2)) are obtained by substituting the Lagrangian
divided difference in P'2 (x) associated with the corresponding constituent value.
From a computational standpoint, it should be recognized that the geometric component of the
multipliers in ICM are time invariant and, as a consequence, are computed once and stored in
arrays described above. The time varying part of the multipliers (i.e., Q, At, Dx, A) are updated
each time step during the computation of the advection (TERM) and diffusion (GRAD) arrays.
The purpose of the ULTIMATE advection limiter as applied to QUICKEST is to eliminate the
nonphysical overshoot and undershoot characteristics of nondiffusive advection operators
(Leonard, 1991). The basic concept of the method is that the possibility of violation of local
maxima or minima is avoided by limiting the cell face flux concentration so that it does not
exceed nor underestimate the available constituent. This is accomplished by limiting the
QUICKEST flux estimate to a value that will always maintain monotonicity. The formulation
presented here is a modification of Leonard's original work specifically designed for the variable
grid space version of ICM. Starting with Leonard's presentation of ULTIMATE for a constant
grid space, we define the three point QUICKEST stencil comprised of Fu, Fc, and Fd, which are
the upstream, central, and downstream constituent concentrations. The specification of the
upstream, central, and downstream concentrations in terms of grid coordinates ILB, IB, JB, JRB
in ICM depends on the sign of the velocity or flow. Given these conventions, the gradient and
curvature of the concentration distribution are defined as GRAD(F) = Fd - Fu and CURV(F) = Fu -
2FC + Fd. A limiting reference concentration, Fref = Fu + (Fc - FU)/C is also defined where C is the
absolute value of the local Courant number. Defining AGRAD and ACURV and the absolute
224
-------
value of GRAD and CURV, respectively, the procedure for applying the ULTIMATE limiter is as
follows:
1 . Compute the normal QUICKEST cell face value, Ff.
2. If ACURV < 0.6*AGRAD, use Ff.
3. If AGRAD > ACRUV, set Ff = Fc.
4. If AGRAD > 0.0, set Fc < Ff < MIN(Fref, Fd).
5. If AGRAD < 0.0, set MAX(Fref, Fd) < Ff < Fc.
Step 2 represents cases where the existing concentration profile is smoothly varying and will
maintain monotonicity using the regular QUICKEST flux estimate. Step 3 results in cases
where there are extremely sharp gradients where monotonicity is violated and as a result the
scheme reverts to upwind. Steps 4 and 5 represent the marginally monotonic situations in
which the cell face concentration is constrained so that it does not violate a pure advection
condition. The reference concentration is estimated by noting that for pure advection:
Fin+1 = Fin - C(Fr - F,)
Where Fr and FI are the right and left cell face concentrations. For monotonicity:
pn+1 < pn (A.10)
ri ri-i
and to a fair approximation, the concentration on the left face:
F, « F^ (A.11)
Substitution of Equations A.10 and A.11 into Equation A. 9, with a little manipulation, results in a
definition of the limiting reference concentration Fref.
Utilizing this basic procedure, a modified version has been implemented in ICM. The first
modification was to generalize the method for variable grid spacing. This was accomplished by
defining a local coordinate system of the three non-uniformly spaced grid cells denoted by XM,
Xj, and xi+i with corresponding constituent values. Adopting the Lagrangian interpolation
approach previously developed for QUICKEST (Chapman, 1988; Chapman and Cole, 1992), a
quadratic interpolation function (Henrici, 1964), P2(x) for the constituent concentration
distribution is written:
F , +- F
-x Y i+1 (x-x Wx -x
AM/ \Ai Ai+iAAi AM
+
M
225
-------
Taking the first and second derivative of the interpolation function P2(x) and evaluating P2(x)
and P2 (x) about the point Xj, we obtain:
p ,
p
M (A.13)
p" ( x. ) = _ _ F H __ - _ F
~ xi
_ _
(xM-Xi+1)(xM-Xi) M
The variable grid space GRAD (named DELC in the code) and CURV (named CURL, CURP
and CURM in ICM), respectively, can then be constructed by utilizing combinations of box
lengths (BL's) in ICM. As an example, the quantity (xi+i - Xj) in Equations A.13 and A.14 is
simply the average of BL(IB(F),QD(F)) and BL(JB(F),QD(F)) in ICM. In a similar fashion to the
original QUICKEST formulation, the components of the GRAD and CURV (Equations A.13 and
A.14) are segregated into multipliers for each constituent value. For example, the GRAD
multiplier for the (1+1) or (3) constituent is RATD(I), which equals the average of
BL(ILB(F),QD(F)) and BL(JB(F),QD(F)) divided by the average of BL(IB(F),QD(F)) and
BL(JB(F),QD(F)) for positive flows in ICM. These quantities are invariant and are computed
once and stored in arrays. In order to account for the sense of the velocity on the computation
and selection of the appropriate GRAD's and CURV's, three issues had to be addressed. The
first was to arbitrarily define the GRAD to be a right minus left calculation. As a result, the
correct sense of the GRAD is obtained by multiplying it by the SIGN of the velocity or flow. The
second issue is the shift in the three cells utilized to compute the GRAD's and CURV's. The
structure of ICM requires that separate functions are generated for positive and negative flow
multipliers. The final issue is the computation of the reference quantity, Fref. This is
accomplished by noting the role of the up and downstream constituent concentrations are
interchanged when the sign of the velocity changes.
An additional modification implemented that was not specifically addressed in Leonard (1991)
was to require that the reference concentration Frer always lies between Fc and Fu. Although
violations of this constraint is an unusual situation when smoothly varying concentration
distributions are being transported, it was encountered during testing of the algorithm.
Vertical Implicit Transport
Focusing on advective and diffusive transport in the vertical, the constituent transport can be
written:
226
-------
5t 5Z 5Z
___ =RHS
5Z
(A. 15)
where RHS represents all horizontal transport. Integrating the transport equation in the vertical
and time utilizing theta weighting for advection yields:
HFn+l +0At8z(WFn+l)-At8
dz
= HF
(A. 16)
where F* denotes all n-time level transport and H is the cell height. Expanding the differential
operators in terms of central differences and collecting terms, Equation A. 16 can be recast as
follows:
+
+
where
At f 0Wki D7ki
zk,i
AVH,
where AVH is the average of adjacent cell heights.
(A. 17)
(A. 18)
A, = 1 +
H
At
0
Dzk.i
AVK
D,
and
At (
.HkA 2
The explicit portion of the algorithm, F* is written:
k n
(A. 19)
(A. 20)
(A.21)
(A.22)
227
-------
+ (1-9) At Wk-fk-1 (A.23)
I 2 J
where in terms of ICM coordinates, k-1, k, k+1 correspond to ILB, IB, JB, respectively.
The coefficients, Ak are computed once, stored in arrays, and used to update each constituent.
This is accomplished by loading the theta-weighted explicit part of the algorithm F*, for each
successive constituent and inverting the resulting matrix via a Thomas tridiagonal solver
(Carnahan etal., 1969). The matrix coefficients, Aif in the transport code are represented by the
FORTRAN variable CT for 1+1, BT for I, and AT for 1-1. The explicit portion of advection F* is
represented by DT using the provisional ULTIMATE QUICKEST updated CSTAR. In the code,
the vertical velocities and diffusion coefficients found in Equations A.18 to A.22 are recast into
Courant numbers CR2 and diffusion parameters GAMF and GAMFM1. The weighting factors
that account for the use of these parameters and the variable cell heights are WAILB and WAIB
for advection, and WDIB and WDILB for diffusion. In addition, it should be noted that the
vertical loop is based on a vertical flow face counter.
POM-IPX Linkage
The POM-IPX linkage package consists of two components. The first is a set of mapping
routines which builds the linkage files. The second is the POM processor subroutine that
generates hydrodynamic input for the water quality model.
MAPPER Routines
The transport routines incorporated into IPX are written specifically for an unstructured grid
geometry. The geometric relationships between grid cells are created external to IPX by a set
of three subroutines located in the source file named MAPPER_SUBS.f that has been added to
the POM hydrodynamic model.
These subroutines create several files that contain this "grid linkage" data. ICM_COOR.OUT,
which is generated by subroutine ICM_GCF, contains basic cell geometry data that are used to
create the remaining files. This file is retained because it is useful for creating grid contour
plots. The files GEO.INP and MAP.INP, which are generated by subroutine ICM_BMF, contain
data that are used directly by the IPX transport scheme. FILE95.INP contains data used by the
POM hydrodynamics processor, WQMS.f, which generates the IPXMT input data. FILE95
results from a call to subroutine ICM_BUILD95. A diagnostic file named MAP.DIA is also
created that contains the values of constants and parameters required by the IPX FORTRAN
code. The IPX FORTRAN code contains PARAMETER statements that set the size of data
arrays that must be adjusted to the grid. The user should note that if the grid geometry is
altered in POM then the user should use MAP.DIA to adjust the PARAMETER statements in the
IPX FORTRAN source file DIMS.INC. No other source code files need to be changed.
GEO, MAP, and FILE95 are generated automatically by POM when the user includes the string
MAPPING as a command line argument (as in > pom MAPPING). A normal linked POM run
occurs when the argument MAPPING is excluded from the command line. A general
description of the linkage files is presented below.
228
-------
ICM_COOR.OUT
Each line describes a cell with the I,J grid coordinate of the lower left-hand corner followed by
eight floating point numbers representing the x,y coordinates of each of the four corners of the
cell. This file is read in a free-field format.
GEO.INP
This file contains two sections of data. The first section specifies the cell identifier of each cell,
the cell immediately above it, and its "type" identifier. Note that this is an original IPXMT
variable. The second section lists cell number for each surface cell and the corresponding
bottom cell number. An example of the GEO file is presented in Attachment 1, which includes
the read formats.
MAP.INP
This file contains three sections. The first section specifies flow face information. For each flow
face, the far upstream cell, the upstream cell, the downstream cell, and the far downstream cell
identifiers are listed along with the I,J range of the flow faces (used for overlays). It is important
to note the sign of the flow is assumed positive downstream. The second section specifies the
number of vertical flow faces within each column. The third section lists the flow face identifier
for each vertical flow face in a column. Here positive flow is up, or increasing face number. An
example of the MAP is presented in Attachment 1, which includes the read formats.
FILE95.INP
This file contains three sections. The first section includes input directives for the processor
WQMS.f and POM for creating the hydrodynamic flow field file. The first value represents the
number of surface columns, NSB. The next value is the hydrodynamic averaging interval,
NAVG. Then the iteration number when averaging begins, ITWQS, followed by ITT, the
temperature output interval. The second section spans several lines and delimits the cell
boundaries in terms of I,J coordinates. The first column represents the cell identifier. Columns
2 and 3 are the I dimension start and end for overlaying of cells. Columns 4 and 5 are the J
dimension start and end for overlaying of cells. Column 6 represents the POM layer from which
linkage data was obtained. Note that the values in Column 6 should always be 1. This serves
as a check that the generated linkage is correct. The third section is an abbreviated form of the
data included in the MAP.INP file discussed above. Whereas MAP.INP includes flow face
descriptions for all flow faces, the WQMS.f processor only requires surface layer flow face data.
FILE95.INP is read as a free-field format file. Additional details on the use of FILE95 are
presented in the POM Linkage Processor discussion.
POM Linkage Processor
The modifications required in POM to accommodate the linkage processor subroutine were to:
(1) insert labeled common WQM for the processing initiation iteration ITWQS, the hydrodynamic
averaging interval NAVG, and the temperature output interval ITT; (2) insert POM cell to entry
point WQMOUT within WQMS to output initial geometry data; (3) insert call to entry point
WQMCVOL and WQMTVD within WQMS at iteration ITWQS to output initial cell volumes and
229
-------
first set of time varying hydrodynamic data; (4) subsequent calls to WQMTVD are made every
other POM time step to accommodate the three level time differencing scheme. If
hydrodynamic output is time averaged, the processor will output IPX input at NAVG, which
represents the number of two At time steps in the averaging interval. The processor subroutine
will output the temperature array every ITT iterations subsequent to the initiation of
hydrodynamic processing at iteration ITWQS. The two constraints on the parameter ITT is that
it must (1) be equal to or greater than the WQMS averaging interval NAVG and (2) if it is greater
than NAVG, it must be an even multiple. The option allows the user to output the temperature
array at time scales where temperature changes become important, which offers significant
potential for storage reduction. The calls to WQMCVOL and WQMTVD were inserted after the
POMcalltoVERTVL.
The POM linkage processor subroutine has been designed to compute WQM cell lengths, cell
volumes, cell face areas, and time averaged cell face flows and diffusion coefficients during the
execution of the HM run. The definitions for cell lengths, areas, and volumes are identical to
those within POM. In addition, a description of the tasks performed by the processor subroutine
WQMS is provided below.
Taskl
The number of surface boxes NSB, averaging interval NAVG, the POM start iteration for
processing ITWQS, and the temperature output interval counter ITT, are read from the map file
FILE95. The IPX surface box number NB and the POM I,J coordinates IFIRST, ILAST, JFIRST,
JLAST that define that box are then read. Although grid overlay or aggregation is not
anticipated during the Lake Michigan study, the capability has been retained in the linkage
processor. If an overlay grid is desired, the POM I,J coordinates specified are those that
correspond to the aggregated IPX cell. An example record is shown below:
NB IFIRST ILAST JFIRST JLAST
12 3 2 3
In this example, the first surface IPX cell is defined by the POM I, J coordinates (2,2), (2,3),
(3,2), and (3,3). If four POM cells (2 x 2) are aggregated to form a single IPX cell, ILAST and
JLAST would have a value of 4. Next, the number of surface flow faces is read followed by flow
face mapping parameters. These parameters include FN, the flow face number; QD, the
direction normal to that flow face (X or Y); and the four IPX box numbers that bound the flow
face IL, IQ, JQ, and JR. The definition of IQ and JQ is such that positive flow is from the IQ box
to the JQ box. IL and JR are simply additional upstream and downstream boxes required by the
QUICKEST formulation. The flow face overlay parameters are KP, which are the I or J
coordinate of the POM grid point in the direction normal to the flow face. KF and KL are the
span of the POM grid points which define the IPX flow face. An example of this record is shown
below:
FN QD IL IQ JQ JR KP KF KL
110123322
This record shows that the first flow face (FN = 1) is normal to the X direction (QD = 1). Flow
occurs between IPX cell IQ = 1 and JQ = 2 with IL = 0 defining a boundary cell. JR = 3 defines
the next upstream cell given a negative flow. It is important to remember a sign convention
230
-------
such as IQ to JQ defining a positive flow must be consistent everywhere within the grid. The
IPX cell face is defined by the POM coordinates (3,2) and overlay sweep is over a single cell in
the Y direction.
Task 2
During the initialization task, the real variable averaging interval AVGN is defined. Next, the
column flow face variable FAREA is set to zero. The individual cell face variables AVGQ, the
average horizontal flow, AVGDIF, the average horizontal coefficient, AVGZQ, the average
vertical flow, and AVDIFZ, the average flow are set to zero.
Tasks
At this point, all time invariant or grid computations are performed. The first set of calculations
are performed for all surface boxes. Initially, the surface box area BSAREA and the box lengths
in the X and Y directions BL(SSB,1) and BL(SSB,2), respectively, are set to zero. The BSAREA
is computed by summing the cell centered area array ART over the POM cells defined by the
overlay parameters. Next, the box lengths are computed by a weighted sum of the overlay cell
lengths DX or DY, scaled by the width of the individual cells. The column flow face area FAREA
is computed by summing the product of the total depth, DT, at the cell face and the cell width
DX or DY over the span of the overlay parameters. The above variables, along with the POM
vertical grid spacings DZ are then output to the IPX hydrodynamic input file FILE96 in either
binary or ASCII format. Finally, the initial column volumes CVOL are computed by summing the
product of the individual total cell centered depth (H + ELB) and the cell area over the box
overlay parameters and subsequently output to FILE96. If temperature output is desired, area
averaged temperatures are computed and output to FILE97.
Task 4
Time varying computations are performed each call to entry point WQTVD. At this time, the
averaging iteration counter IKNT is incremented and the temporary spatial averaging arrays BF
and DF are set to zero. Next, the horizontal cell face flows and diffusion coefficients are
computed by multiplying the local velocity (U or V) and diffusion coefficients (AAM) times the
product of DZ and DFACE, where DZ is the POM vertical grid spacing and DFACE is the
column cell face area. Spatial averaging again occurs of the overlay parameter range. The
temporary BF and DF arrays are then redefined as time averaging arrays AVGQ and AVGDIF,
which are assigned flow face numbers consistent with the ICM ordering convention. Three
points to note are: (1) the temporary vertical array counter k is inverted to accommodate the
fact that POM assigns k top to bottom and ICM requires flow faces numbered bottom to top; (2)
the parameter KB in POM represents the number of cell interfaces, therefore, the number of
POM layers is KB-1 or the parameter KBM1; and (3) the weighted average horizontal diffusion
coefficients are computed by scaling the individual cell face areas by the sum of the overlay cell
face areas. Temporary vertical flows ZQ and diffusion coefficients DIFZ are then computed by
multiplying the vertical velocity and diffusion coefficients by the horizontal cell face area. The
temporary ZQ and DIFZ arrays are then redefined as time averaging arrays AVGZQ and
AVDIFZ, which are assigned flow face numbers consistent with the ICM ordering convention.
Again, the same three points discussed above are applicable here. At this time, the increment
counter IKNT is checked to see if it equals the averaging NAVG. If not, the computation is
returned to POM. If it is, the column volumes CVOL are updated, the time varying data are
231
-------
written to FILE96. If the temperature output interval is satisfied, area averaged temperatures
are output to FILE97. Finally, the average flow and diffusion arrays are set to zero and the
computation is returned to POM.
IPXMT Modifications
IPX Linkage and Input Modifications
The modifications required within IPX to enable implementation of ICM transports are as
follows: (1) subroutines INITB, INITC, INITD, INITE and their associated data files have been
replaced by subroutine WINITIALIZE and the ICM input files. WINITIALIZE is called within
subroutine IPXINT after the call to INITA; (2) subroutines ADVECTION, QSURF, QSURF1,
QSURF2, and EXCHANGES have been replaced by WTRANSPORT. The call to
WTRANSPORT occurs within subroutine DERIV; (3) the function of subroutines FLOWS,
I FLOWS, RFLOWS, and QFLOWS have been replaced by subroutine HYDRO within
WTRANSPORT; and (4) the include file DIMS.INC has been modified to include the ICM
parameter declarations. As previously mentioned, the time varying POM temperature array is
made available to IPX via a modification within the POM processor subroutine WQMS. The
temperature array TEMPERATURE is handled by two subroutines, WTEMPJNIT and WTEMP.
WTEMPJNIT is called prior to WINITIALIZE where the temperature file initially is opened and
the update counters are initialized. The time varying temperature reads are performed by
WTEMP which is called by subroutine DERIV.
IPXMT Transport Description
Input and output options available within IPXMT are discussed in Attachment 1. This
information is a modification of that presented by Cerco and Cole, 1995. The basic link between
IPXMT and ICM transport are the concentration array C and the mass derivative CD. This is
accomplished by the IPXMT subroutine call to WTRANSPORT where C and CD are passed to
WTRANSPORT. Subsequent to transport, the mass derivative array is updated and passed
back to IPXMT. The first operation within the transport routine is a simulation time check to
determine if boundary conditions are to be updated by the subroutine TVDS. Next, boundary
data is interpolated for the current model simulation time. If a flow update interval time is
reached, subroutine HYDRO is called. HYDRO reads column volumes, flows, and diffusivities
prior to the computation of individual cell volumes and assigns flow direction using the logical
variable POSITIVE_FLOW for each flow face. If the auto time step option is selected,
WTRANSPORT computes the new time step. Subsequent to the time step update, time varying
geometry arrays such as cell volumes, vertical cell heights, the vertical cell face depth below the
surface, and the horizontal QUICKEST multipliers are recomputed. Next, boundary conditions
are updated. The ULTIMATE QUICKEST computations are performed and the horizontal
transport concentration array CSTAR is updated. The time varying multipliers for implicit
vertical transport are then computed, the tridiagonal matrix is assembled, and a Thomas matrix
reduction is performed to update the constituent concentration array C2. Finally, the mass
derivative change due to transport is then computed, Courant numbers, volumes and time
parameters are reset, which completes the transport sequence.
232
-------
Guide to the Use of the Linked POMGL-IPXMT
The purpose of this section is to provide a step-by-step procedure for running the linked
POMGL-IPXMT modeling system. There are three main tasks that must be performed to
complete model simulation. These tasks are the construction of linkage files, hydrodynamic
output generation, and water quality model simulations. The documentation provided here
assumes the linked modeling system is being run on a UNIX machine.
1. Prior to running either the linkage file generation or linked POMGL simulation, a number of
parameters must be set in the linkage subroutines. First subroutine, ICM_BMF within
MAPPER- SUBS requires that the parameters:
NX= IM
MY = JM
MAX_NUMBER_OF_LAYERS = KBM1
MAX_NUMBER_OF_BOXES = NFSM*KBM1 (MINIMUM)
MAX_NUM_BOXES_LAYER= NFSM (MINIMUM)
Next, subroutine WQMS requires that:
NBP = NFSM (MINIMUM)
NFP = NDUM + NDVM (MINIMUM)
All of the above POM parameters can be found in the standard output file POMGL.OUT,
which is presented in Table A1.
2. Subsequent to compiling using CL_POM.SH, the following command will automatically
generate the MAP.INP, GEO.INP, MAP.DIA, and FILE95.INP using the MAPPING option.
POM MAPPING < POMGL.IN > POMGLOUT
This command also generates the POM standard output file POMGL.OUT, which can be
compared to MAP.DIA in order to verify the integrity of the linkage. The details of this
comparison are presented in the prototype grid tests section. At this point, MAP.INP,
GEO.INP, MAP.DIA should be copied to the IPXMT directory. In addition, the MAP.INP and
GEO.INP must be renamed to conform to the MAP and GEO file names declared in the
IPXMT control file WQM_CON.NPT (Table A2).
3. Prior to performing a normal linked POMGL simulation, the first line of FILE95 must be
edited. Example free field values of the variables NAVG, ITWQS, ITT are provided within
FILE95 as a reminder that they must be determined by the user. Again, NAVG is the
hydrodynamic averaging or output interval, ITWQS is the number of spinup iterations, and
ITT is the temperature output interval used by POMGL. As a rule of thumb:
NAVG = 3600/(2*DTI)*(Averaging interval in hours)
ITWQS = 3600/DTI*(Hours of spinup)
ITT = NAVG or greater even multiple
where DTI is the POM internal mode time step.
233
-------
Table A1. POMGL.OUT Standard Output File
PRINCETON OCEAN MODEL - GREAT LAKES
IN = 53JM = 102 KB = 20
[POMGL CONTROL]
BATHYMETRY FILE FGRID=
mich5.dat
INPUT FILE PREFIX FINPUT=
m94121
OUTPUT FILE PREFIX FOUT=
17194121
INITIAL CONDITION FILE FINIT=
m94061 .rst
MODE = 3
START YEAR =
START DAY =
START HOUR =
DTE =
DTI =
IHRS =
DTWIND =
NLEVEL =
HMAX =
DS =
[POMGL CONSTANTS]
ISPADV =
HORCON =
TPRNU =
SMOTH =
UMOL =
TBIAS =
SBIAS =
ALPHA =
RAMPDT =
DADD =
AAMZ =
CBCMIN =
IRSTRT =
IPSWR =
ITMEAN =
ISFLUX =
SMAGOR =
YAMADA =
YAMADA1 =
IAVG =
1994
121
0
30.0
300.00
144
1.00
20
262.00
5000.0
1
0.1000
1.00
0.100E-05
10.0
10.0
35.00
0.225
0.00
0.50
50.00
0.00250
1
1
288
0
0.00
O.OOOE+00
O.OOOE+00
36
MASK ARRAY NONZERO ELEMENTS:
NFSM=2318 NDUM=2162 NDVM=2223
SIGMA LEVELS
K Z ZZ DZ
1 0.000 -0.011 0.023
2 -0.023 -0.034 0.023
3 -0.045 -0.057 0.023
4 -0.068 -0.079 0.023
DZZ
0.023
0.023
0.023
0.023
234
-------
Table A1. POMGL.OUT Standard Output File (Continued)
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-0.091
-0.113
-0.136
-0.159
-0.182
-0.204
-0.227
-0.272
-0.340
-0.431
-0.545
-0.681
-0.794
-0.885
-0.953
-1.000
-0.102
-0.125
-0.148
-0.170
-0.193
-0.216
-0.250
-0.306
-0.386
-0.488
-0.613
-0.738
-0.840
-0.919
-0.977
-1.023
0.023
0.023
0.023
0.023
0.023
0.023
0.045
0.068
0.091
0.113
0.136
0.113
0.091
0.068
0.047
0.000
0.023
0.023
0.023
0.023
0.023
0.034
0.057
0.079
0.102
0.125
0.125
0.102
0.079
0.057
0.047
0.000
Table A2. IPXMT Control File
TITLE C TITLE
Test grid water quality model
T2
T3
T4
T5
test grid from POM run
GEOM DEFINE NB NSB NQF NSHQF NL
44042 2318 125039 83315 19
TIME CON TMSTRT TIMEEND in days
0.0 1.00
# DLT NDLT
1
DLT DAY DLTD DLTD DLTD DLTD DLTD DLTD DLTD DLTD DLTD
0.0 800.0
DLTVAL DLTVAL DLTVAL DLTVAL DLTVAL DLTVAL DLTVAL DLTVAL DLTVAL DLTVAL
3600.0 600.0
DLT MAX DLTMAX DLTMAX DLTMAX DLTMAX DLTMAX DLTMAX DLTMAX DLTMAX DLTMAX
7200.0 2000.0
DLT FIN DLTFTN DLTFTN DLTFTN DLTFTN DLTFTN DLTFTN DLTFTN DLTFTN DLTFTN
0.90
HM DLT AHMDLT HMEND
7200.0 1.00
TEMP DLT ATDLT
7200.0
235
-------
Table A2. IPXMT Control File (Continued)
DIAGNSTICS DIAC NDIA
ON 1
DIA DAY
DIA FREQ
DIAD DIAD DIAD DIAD DIAD DIAD DIAD DIAD DIAD
0.
DIAF DIAF DIAF DIAF DIAF DIAF
0.01 30.43
DIAF DIAF
DIAF
HYD SOLTN SLC TH
QUICKEST 1.0
CONTROLS AUTOC VBC
ON ON
DEAD SEA FLC XYDFC ZDFC
ON ON ON
HDIFF XYDF ZDFMUL ZDFMAX
10.0 1.0 0.1
BOUNDARY BCC
OFF
BOUNDARY BNDCC
FIXED
BOUNDARY BNDSC BNDSC BNDSC BNDSC BNDSC BNDSC BNDSC BINDSC BNDSC
UPWIND UPWIND UPWIND UPWIND
ACTCST ACC ACC ACC ACC ACC ACC ACC ACC
OFF ON OFF OFF
#FILES NHYDF NTVDF NTMPF
1 1 1
MAP FILE MAPFN
ACC
GEO FILE
HYD FILE
TMP FILE
CBC FILE
DIA FILE
wqm_map.inp
wqm_geo.inp
wqmjiydro.inp
wqm_temp.in
wqm_cbc.50b
GEOFN
HYDFN
TMPFIN (Temp from POM)
CBCFN
DIAFN
wqm_dia.opt
236
-------
4. A normal linked POM simulation can then be performed using the following command line:
POM < POMGL.IN > POMGLOUT
The completed linked POM simulation will result in two output files, fort.96, the processed
IPXMT hydrodynamic input data, and fort.97, the IPXMT temperature input data. At this
point, fort.96 and fort.97 should be copied to the IPXMT directory and renamed to conform
to the HYD and TMP file names declared in the IPXMT control file WQM_CON.NPT (Table
A2).
5. In addition to the IPXMT geometry parameter provided at the bottom of MAP.DIA which is
presented in Table A3, the following consistent time step data must be specified in
WQM_CON.NPT:
DLTVAL < DLTMAX
DLTMAX < 2*DTI*NAVG
AHMDLT 2*DTI*NAVG
ATDLT = 2*DTI*ITT
6. The additional input data required to run the IPXMT transport is shown in Table A2, which
represents a subset of the original CE-QUAL-ICM control file (Cerco and Cole, 1995). A
discussion of these inputs specific to IPXMT transport is presented in Attachment 1.
7. At this point, the IPXMT transport can be executed.
Table A3. MAP.DIA Listing
Total number of boxes and flow faces
box ff
44042 125039
Number of boxes for each layer. Numbers are included and cumulative.
layer first last
1 1 2318
2 2319 4636
3 4637 6954
4 6955 9272
5 9273 11590
6 11591 13908
7 13909 16226
8 16227 18544
9 18545 20862
10 20863 23180
11 23181 25498
12 25499 27816
13 27817 30134
14 30135 32452
15 32453 34770
237
-------
Table A3. MAP.DIA Listing (Continued)
16
17
18
19
34771
37089
39407
41725
37088
39406
41724
44042
Number of horizontal flow faces for each layer. Numbers are inclusive and cumulative.
layer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
first
1
4386
8771
13156
17541
21926
26311
30696
35081
39466
43851
48236
52621
57006
61391
65776
70161
74546
78931
PARAMETERS (place in dims.inc)
NBP
NQFP
NHQP
NSBP
NLP
last
4385
8770
13155
17540
21925
26310
30695
35080
39465
43850
48235
52620
57005
61390
65775
70160
74545
78930
83315
44042
125039
83315
2318
19
CONSTANTS (place in wqm_con.npt)
NB
NSB
NQF
NHQF
NSHQF
NLP
44042
2318
125039
83315
4385
19
238
-------
Linkage Quality Assurance Testing
Simplified Grid Tests
Initial testing of the linkage methodology was performed utilizing a 20 x 20 x 10 test grid. The
POM grid coordinate and depth file and IPXMT map file were visually inspected to ensure that
they were identical. The POM hydrodynamic output file was read by IPXMT and a volume
balance was performed. The comparison of POM and IPXMT grid cell volumes were identical
within machine accuracy. ULTIMATE QUICKEST mass conservation testing was performed
within IPXMT. Specifically, uniform concentration and spot dump mass conservation tests were
performed. The first set of mass conservation tests utilized an one-hour time step in POM with
no time averaging performed. This resulted in a two-hour hydrodynamic update interval in
IPXMT. Subsequent mass conservation tests were performed utilizing six-hour average POM
flow data, which resulted in a 12-hour hydrodynamic data update in IPXMT. During all tests
mass conservation was maintained within machine accuracy.
Prototype Grid Tests
Unlike the simplified grid linkage quality assurance testing, the prototype grid due to its size
required the development of a formal procedure. The POMGL grid consists of 53 x 102 5 km
square grid cells in the horizontal with 19 sigma layers. Subsequent to the mapping process
previously described, the following steps were taken to ensure the proper linkage of the POMGL
grid and hydrodynamics with IPXMT. The number of model layers, cells, and flow faces were
compared. Utilizing data provided by the POMGL standard output file (Table A1), the number of
cells and flow faces active during the model simulation can be identified. Active surface
elevation and horizontal velocity component computations are controlled by the elements of the
mask arrays FSM, DUM, DVM, which are set to one for active cells and flow faces and zero for
land boundaries.
During the initial geometry computations within POMGL, the mask arrays are determined from
the bathymetric array H(I,J). The number of active cells and surface flow faces are accumulated
as the variables NFSM, NDUM, and NDVM. A comparison of MAP.DIA (Table A3) and
POMGL.OUT can be used to demonstrate the equivalence of the POMGL and IPXMT grids.
The number of active POMGL columns (NFSM) and IPXMT surface boxes (NSB) is 2,318. The
number of horizontal POMGL surface cell flows (NDUM + NDVM) is 4,385, which is identical to
the number of flows in the surface layer (NSHQF) shown in MAP.DIA. Noting that the number
of grid layers in POMGL corresponds to KB -1, it is seen that both grids contain 19 vertical
sigma layers.
General Analytic Testing
The integrity of the linkage files was first checked by performing a seven-hour POMGL
simulation utilizing a 300 second time step and no averaging. After six hours of model spinup,
the IPXMT processor, WQMS, was enabled producing a HYDRO file (fort.96) with a 600 second
average hydrodynamic update interval (AHMDLT). ULTIMATE QUICKEST mass conservation
and volume balance testing was performed within IPXMT. Uniform concentration and spot
dump mass conservation tests were simulated. The mass conservation tests utilized: (1) a
fixed 600 second time step; and (2) auto-time stepping in IPXMT. During all tests, both mass
239
-------
and volume conservation were maintained within machine accuracy. Next, a six-day POMGL
simulation utilizing a 300 second time step and one-hour time averaging was performed. After
five days of model spinup, WQMS was enabled, which resulted in a two-hour AHMDLT. Mass
conservation tests were performed using a fixed one-hour step and auto-time stepping in
IPXMT. Again, all tests maintained mass and volume conservation within machine accuracy.
References
Ambrose, R.B., S.B. Vandergrift, and T.A. Wool. 1986. WASPS, A Hydrodynamic and Water
Quality Model - User's Manual and Programmer's Guide. U.S. Environmental Protection
Agency, Environmental Research Laboratory, Athens, Georgia. EPA-600/3-86/034, 379 pp.
Carnahan, B., H. Luther, and J.O. Wilkes. 1969. Applied Numerical Methods. John Wiley and
Sons, New York, New York. 604 pp.
Cerco, C. and T. Cole. 1995. User's Guide to the CE-QUAL-ICM Three-Dimensional
Eutrophication Model. U.S. Army Corps of Engineers, U.S. Army Engineer Waterways
Experiment Station, Vicksburg, Mississippi. Technical Report EL-95-15, 2,420 pp.
Chapman, R.S. 1988. Analysis of the Numerical and Physical Mixing Characteristics of the
WASP Box Model. Final Report. U.S. Army Corps of Engineers, U.S. Army Waterways
Experiment Station, Vicksburg, Mississippi.
Chapman, R.S. 1992. Research and Development Towards Improving the Predictive Capability
of CE-QUAL-W2. Final Report. U.S. Army Corps of Engineers, U.S. Army Waterways
Experiment Station, Vicksburg, Mississippi.
Chapman, R.S. and T.M. Cole. 1992. Improved Thermal Predictions in CE-QUAL-W2. In: M.
Jennings and N.G. Bhowmik (Eds.), Proceedings of the Hydraulic Engineering Sessions at
Water Forum '92, pp. 158-163. American Society of Chemical Engineers, Baltimore,
Maryland.
Dortch, M.S., R.S. Chapman, and S.R. Abt. 1991. Application of Three-Dimensional Residual
Transport. J. Hydraul. Engin., 118(6):831-848.
Henrici, P. 1964. Elements of Numerical Analysis. John Wiley and Sons, New York, New
York. 328 pp.
Leonard, B.P. 1979. A Stable and Accurate Convective Modelling Procedure Based on
Upstream Interpolation. Comp. Methods Appl. Mechan. Engin., 19(1):59-98.
Leonard, B.P. 1991. The Ultimate Conservative Difference Scheme Applied to Unsteady One-
Dimensional Advective. Comp. Methods Appl. Mechan. Engin., 88(1):17-74.
240
-------
Attachment 1
IPXMT Transport Input, Map File, and Geo File Descriptions
The Control File
The control file contains the parameters used to run CE-QUAL-ICM. It consists of card images
80 characters in length. The format of the input files has been developed in order to take
advantage of a full-screen text editor. The control file begins with three lines which can be used
for file identification and are ignored by the program. The rest of the file consists of a line which
contains the card identification and the names of the FORTRAN variables associated with the
input card. The FORTRAN names are right-justified according to the field widths associated
with the input variables. The next line consists of the actual input values. There are 10 input
fields associated with each card, although the first field is not used. Each field has a length of
eight characters. The next line is left blank for ease of display in a full-screen editor.
There are no optional cards in the control file - each card is required, although there may be no
values associated with the card. The following contains a description of each card. All
character inputs must be capitalized except the TITLE cards or the variable will take on the
default value.
Title Cards (TITLE)
Field Name Value Description
1-72 TITLE Character Text for identification of simulation
There are six title cards that help identify the model run. Each line contains up to 72 characters
of text. The title card appears in every output file except for restarts. Uses for the title card
include identifying the application, the dates of the application, the date of the simulation, and
any other information specific to the simulation.
Example:
TITLE C Title
Chesapeake Bay Water Quality control file input
30 year run
Using kinetic values from final calibration
March 14, 1994
Extra title line
Extra title line
241
-------
Geometry Definition (GEOM DEFINE)
Field Name Value Description
1 NB Integer Number of boxes in grid
2 NSB Integer Number of surface boxes in grid
3 NQF Integer Number of flow faces in grid
4 NHQF Integer Number of horizontal flow faces in grid
5 NSHQF Integer Number of horizontal flow faces in surface layer of grid
6 NL Integer Maximum number of layers in grid
This card specifies the dimensions of the water quality model grid. The user must take care that
the values specified here are consistent with corresponding PARAMETER statements in the file
WQM_COM.INC.
Example:
GEOM DEFINE NB NSB NQF NHQF NSHQF NL
30 10 51 31 10 3
Time Control (TIME CON)
Field Name Value Description
1 TMSTRT Real Starting simulation date (Julian day)
2 TMEND Real Ending simulation date (Julian day)
This card specifies the starting and ending dates of the simulation.
Example:
TIME CON TMSTRT TMEND
0.0 365.0
Number of Time Step Intervals (# DL T)
Field Name Value Description
1 NDLT Integer Number of time step intervals
The model provides the option to vary the time step. The time step may be varied through the
autostepping option or at discrete, user-specified intervals. This card specifies the number of
intervals in which the time step, maximum time step, and/or the fraction of the calculated time
step vary.
This card group establishes a pattern followed by successive groups which govern output. The
first card establishes that time steps are assigned three times. The second card names the
times as days 0, 120, and 250. The third card assigns a time step of 3600 seconds at day 0,
1800 seconds at day 120, 3600 seconds at day 250.
242
-------
Example:
# DLT NDLT
3
Time Step Date (DL T DA Y)
Field Name Value Description
1 DLTDAY Real Date of time step interval (Julian day)
This card specifies the intervals in which the time step, maximum time step, and/or fraction of
the maximum calculated time step may vary.
Example:
DTL DAY DLTD DLTD DLTD DLTD DLTD DLTD DLTD DLTD
0.0 120.0 250.0
Time Step Value (DLT VAL)
Field Name Value Description
1 DLTVAL Real Time step (sec)
This card specifies the initial time step if autostepping is used, or the values for the time step if
autostepping is turned off.
Example:
DLT VAL DLTVAL DLTVAL DLTVAL DLTVAL DLTVAL DLTVAL DLTVAL DLTVAL
3600.0 1800.0 3600.0
Maximum Time Step (DLTMAX)
Field Name Value Description
1 DLTMAX Real Maximum time step (sec)
This card specifies the maximum value for the time step if autostepping is turned on.
Example:
DLT MAX DLTMAX DLTMAX DLTMAX DLTMAX DLTMAX DLTMAX DLTMAX DLTMAX
7200.0 7200.0 7200.0
Time Step Fraction (DLTFTN)
Field Name Value Description
1 DLTFTN Real Fraction of calculated time step used
243
-------
This card specifies the fraction of the time step used if autostepping is turned on. The
autostepping algorithm estimates the maximum time step in order to maintain stability. Since
this is an estimate, DLTFN can be used to decrease the time step if the model becomes
unstable when autostepping is turned on.
Example:
DLT FTN DLTFTN DLTFTN DLTFTN DLTFTN DLTFTN DLTFTN DLTFTN DLTFTN
0.95 0.80 0.95
Hydrodynamic Model Time Step (HMDLT)
Field Name Value Description
1 AHMDLT Real Hydrodynamic update interval (sec)
2 HMEND Real Ending date of hydrodynamic file (Julian day)
This card specifies the interval at which hydrodynamic information is input to the model. This
information is employed only if "BINARY" or "DEPTH-AVERAGE" options are specified (see
card HYD MODEL). The present formulation requires a constant update interval. The ending
date of the hydrodynamic input (HMEND) is necessary to synchronize elapsed time in the
model, time determined from hydrodynamic updates, and update times specified on various
input files. If multiple hydrodynamic files are employed, they should be as close to one year in
length as possible.
Example:
HM DLT AHMDLT HMEND
0.0 364.52
Diagnostics Output Control (DIAGNSTCS)
Field Name Value Description
1 DIAC Character Specifies if output is written to diagnostic file
2 NDIA Integer Number of diagnostic intervals
This card specifies if information is output to the diagnostics file and the number of intervals in
which the frequency of the output varies.
Example:
DIAGNSTCS DIAC NDIA
ON 4
Diagnostics Date (DIA DA Y)
Field Name Value Description
1-9 DIAD Real Date of diagnostics interval (Julian day)
This card specifies the intervals at which the diagnostics output varies. If there are more
intervals than can be specified on one line, then they are continued on the next line.
244
-------
Example:
DIA DAY DIAD DIAD DIAD DIAD DIAD DIAD DIAD DIAD
0.0 100.0 101.0 200.0
Diagnostics Frequency (DIA FREQ)
Field Name Value Description
1-9 DIAF Real Diagnostics output frequency (Julian day)
This card specifies the frequency at which diagnostics information is output. If there are more
values than can be specified on one line, then they are continued on the next line.
Example:
DIA FREQ DIAF DIAF DIAF DIAF DIAF DIAF DIAF DIAF
7.0 0.1 7.0 1.0
Hydrodynamic Model (HYD MODEL)
Field Name Value Description
1 HYDC Character Specifies the type of hydrodynamic model input
This card specifies the nature of hydrodynamic inputs to the water quality model. There are
three options: "BINARY", "ASCII", and "DEPTH_AV". The BINARY option is usually specified
for large files generated by a hydrodynamic model, e.g., CH3D-WES. The ASCII option is
usually specified for smaller files which are created independent of a hydrodynamic model. The
DEPTH_AV option indicates a two-dimensional (longitudinal-lateral) implementation of the water
quality model with binary input format.
Example:
HYD MODEL HYDC
BINARY
Hydrodynamic Solution (HYD SOLTN)
Field Name Value Description
1 SLC Character Specifies the type of transport solution
2 TH Real Crank-Nicholson weighting factor
This card allows the user to specify the type of longitudinal transport scheme that the water
quality model uses, how mass is conserved, and the amount of implicit/explicit weighting used in
vertical transport. The options for the longitudinal transport scheme are "UPWIND" and
"QUICKEST". The upwind option is numerically diffusive which can cause problems during
calibration. The QUICKEST option reduces numerical diffusion but can cause overshoots and
undershoots in regions of sharp gradients. Theta ("TH") specifies the amount of explicit/implicit
time weighting in the vertical transport scheme. A value of zero is fully explicit and a value of
one is fully implicit.
245
-------
Example:
HYD SOLTN SLC TH
QUICKEST 1.0
Miscellaneous Coefficients (MISC)
Miscellaneous Controls (CONTROLS)
Fields Name Value Description
1 AUTOC Character Turns on/off autostepping
2 VBC Character Turns on/off volume balance calculations
3 ICIC Character Specifies format of initial conditions
The first five fields must be specified as "ON" or "OFF". The third field may be "UNIFORM",
"VARIED", or "BINARY". Descriptions of these options are provided in the description of the
Initial Conditions File.
Example:
CONTROLS AUTOC VBC ICIC
ON ON UNIFORM
Dead Sea Case (DEAD SEA)
Fields Name Value Description
1 FLC Character Turns on/off hydrodynamic flows
2 XYDFC Character Turns on/off horizontal diffusion
3 ZDFC Character Turns on/off vertical diffusion
This card allows the user to turn off any or all transport processes in the model. All fields must
be specified as "ON" or "OFF".
Example:
DEAD SEA FLC XYDFC ZDFC
ON ON ON
Horizontal Diffusion (HDIFF)
Fields Name Value Description
1 XYDF Real Value for horizontal diffusion (m2 s'1)
2 ZDFMUL Real Multiplier for vertical diffusion
3 ZDFMAX Real Maximum vertical diffusion (m2 s"1)
The first application of the water quality model was in a system with negligible horizontal
dispersion. To minimize the size of the hydrodynamic file, dispersion was specified once in the
control file rather than written out by the hydrodynamic model at every cell interface, at every
time step. This feature is still in place when the BINARY or DEPTH_AV hydrodynamic options
246
-------
are employed. Spatially variable dispersion is a feature of the model code but the user must
perform revisions to read dispersion in binary format. When the ASCII option is employed,
spatially- and temporally-varying horizontal dispersion is specified in the hydrodynamic file and
the field on this card is ignored.
In the first application of the model, sensitivity runs were performed with varying vertical
diffusion. To avoid running the hydrodynamic model repeatedly, a vertical diffusion multiplier
was installed in the water quality model. For similar reasons, specification of maximum vertical
diffusion was allowed.
Example:
HDIF XYDF ZDFMUL ZDFMAX
10.0 1.0 0.1
Constituent Input (CST INPUT)
Fields Name Value Description
1 BCC Character Turns on/off boundary inputs
This card allows the user to selectively turn on/off constituent inputs. All fields must be specified
as "ON" or "OFF".
Example:
CST INPUT BCC
ON
Boundary Concentration (BOUNDARY)
Fields Name Value Description
1 BNDTC Character Specifies how boundary concentrations are specified
This card specifies if input boundary concentrations are updated when the next value is read in
from the time varying data file or if the concentrations are interpolated for each time step.
These inputs are "STEP" or "INTERP".
Example:
BOUNDARY BNDTC
STEP
Boundary Solution (BOUNDARY)
Fields Name Value Description
1-22 BNDSC Character Specifies how boundary concentrations are calculated
This card allows the user to specify how boundary concentrations are handled by the transport
scheme. The values can be "UPWIND", "EXTRAP", or "REFLECT".
247
-------
Example:
BOUNDARY BNDSC BNDSC BNDSC BNDSC BNDSC BNDSC BNDSC BNDSC
UPWIND UPWIND UPWIND UPWIND UPWIND UPWIND UPWIND UPWIND
UPWIND UPWIND UPWIND UPWIND UPWIND UPWIND UPWIND UPWIND
UPWIND UPWIND UPWIND
Active Constituents (ACTCST)
Field
1-22
Name Value Description
ACC Character Turns on/off constituent calculations
This card allows the user to turn on/off a state variable for a simulation. Care must be taken
when exercising this option because of the interaction of the state variables in the kinetic
formulations. Most commonly, this option is used when initially calibrating the water quality
model transport to the hydrodynamic model transport using salinity. This option turns on/off
computations only. All state variables must still be included in load files, boundary conditions,
etc. The state variables and their order are:
Example:
ACT CST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Temperature
Salinity
Iron + Manganese (for suspended solids)
Cyanobacteria
Diatoms
Green algae
Dissolved organic carbon
Labile paniculate carbon
Refractory paniculate carbon
Ammonium
Nitrate-nitrite
Dissolved organic nitrogen
Labile paniculate nitrogen
Refractory paniculate nitrogen
Total phosphate
Dissolved organic phosphorus
Labile organic phosphorus
Refractory organic phosphorus
Chemical oxygen demand
Dissolved oxygen
Paniculate silica
Dissolved silica
ACC
ON
ON
ON
ACC
ON
ON
ON
ACC
ON
ON
ON
ACC
ON
ON
ACC
ON
ON
ACC
ON
ON
ACC
ON
ON
ACC
ON
ON
248
-------
Number of Files (# FILES)
Field Name Value Description
1 NHYDF Integer Number of hydrodynamic files in simulation
2 NTVDF Integer Number of time varying data files in simulation
This card is used to specify the number of time varying input files which will be used during the
simulation. When the end of a file is reached during the simulation, a new file will be opened.
For example, if NTVDF is set to three, then a new file will be opened each time an end of file is
reached until the third file is opened. When the end of the file is reached for the last file, the run
terminates. Potential time-varying input files are HYD and CBC listed below.
Example:
# FILES NHYDF NTVDF
2 2
Input/Output Filenames
Field Name Value Description
1-9 "File" Character Input/output filename
The last cards in the control file specify the names of all input/out files used by the model. This
method eliminates the need to know how to link FORTRAN files under a particular operating
system. However, it does not preclude linking I/O files. If the user does decide to link files, they
must be linked with the names specified by the user on the following cards. Under UNIX and
VAX operating systems, full pathnames can be included in the filename specification. The
names listed below are recommended from experience with the model. It is better to keep the
names the same for all applications and put the I/O files in separate subdirectories with
descriptive names. The number of hydrodynamic files listed under HYDFN must correspond to
the number specified for NHYDF. The same holds true for the other time varying files. There
must be the exact number specified by NTVDF.
Example:
MAP FILE MAPFN
map.npt
GEO FILE GEOFN
geo.npt
ICI FILE ICIFN
ici.npt
HYD FILE HYDFN
hyd.npt
CBC FILE CBCFN
cbc.npt
DIAFILE DIAFN
dia.opt
249
-------
The Map File
The MAP file specifies the linkage between faces and boxes, the number of vertical faces for
each column in the water quality model, the vertical face numbers in each column, and the
faces at the open-ocean boundary. Because of the nature of "box" models and the transport
solution scheme employed in the model, a large amount of information must be specified in the
MAP file.
In setting up the MAP file, the user must assign a face number to each face in a box. The only
restriction in assigning face numbers is that all faces in the X and Y directions must be assigned
a number before the vertical faces are assigned a number. Other than this restriction, there is
no requirement that face numbers be assigned in any order.
Once the face numbers are assigned to the boxes, the user must specify the direction in which
the faces are oriented and the surrounding box numbers. Faces in the X direction are assigned
a flow direction of 1, faces in the Y direction are assigned a flow direction of 2, and faces in the
Z direction are assigned a flow direction of 3.
The QUICKEST advection scheme uses a three-point interpolation scheme to estimate
concentrations at a face. This requires that the solution scheme know the concentration in the
two upstream boxes for a positive flow and the two downstream boxes for a negative flow. Thus
for each face, four box numbers are required. They are specified in relation to positive flow.
The variables ILB, IB, JB, and JRB designate which is the next upstream box number, the box
immediately upstream, the box immediately downstream, and the next downstream box. If one
of these boxes for a given face lies outside the grid, the box number is assigned a value of zero.
Faces that exist on an inflow or outflow boundary are defined, but the IB and ILB for positive
inflow and the JB and JRB for positive outflow are assigned a value of zero.
The user is also required to specify the number of vertical faces in each column even if the
model is in depth integrated mode. In addition, the user must specify the bottom box number of
each column and the vertical face numbers in the column starting from the bottom face.
Finally, the user must specify the face numbers of cells located along open-ocean boundaries.
This specification is required for the mass balance boundary condition.
The first six lines of the MAP file are ignored and can be used to describe the file. The input
formats are (6I8) for the faces and box associations, (11X,8I8) for the number of vertical faces in
each column, and (9I8) for the vertical face numbers.
The following example is a 30-cell, two-dimensional grid. The grid contains 10 cells in the
longitudinal direction, one cell in the lateral dimension, and three cells in the vertical. The grid
contains one inflow boundary (Face 1) and three open-ocean boundaries (Faces 11, 21, 31).
Chesapeake Bay mock up for teaching purposes.
SET UP August 10,1992
dummy title
dummy title
dummy title
dummy title
250
-------
F
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
COLUMNS
1-9
BOX
21
22
23
BBX
32
34
36
QD
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
NVF
2
VFN
33
35
37
IL
0
0
1
2
3
4
5
6
7
8
9
0
11
12
13
14
15
16
17
18
19
0
21
22
23
24
25
26
27
28
29
0
21
0
22
0
23
0
24
0
25
0
26
0
27
0
28
0
29
0
30
NVF
2
VFN
IQ
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
21
11
22
12
23
13
24
14
25
15
26
16
27
17
28
18
29
19
30
20
NVF
2
VFN
JO
1
2
3
4
5
6
7
8
9
10
0
12
13
14
15
16
17
18
19
20
0
22
23
24
25
26
27
28
29
30
0
11
1
12
2
13
3
14
4
15
5
16
6
17
7
18
8
19
9
20
10
NVF
2
VFN
JR
2
3
4
5
6
7
8
9
10
0
0
13
14
15
16
17
18
19
10
0
0
23
24
25
26
27
28
29
30
0
0
1
0
2
0
3
0
4
0
5
0
6
0
7
0
8
0
9
0
10
0
NVF NVF NVF
222
VFN VFN VFN
251
-------
24
25
26
27
28
29
30
38
40
42
44
46
48
50
39
41
43
45
47
49
51
OCEAN BOUND OBP OBP OBP OBP OBP OBP OBP
11 21 31
The Geometry File
Cell geometry is invariant. The geometry file specifies only the cell number immediately above
each cell and the surface and bottom cell numbers in each column of cells. The remaining
geometric information is input in the hydrodynamics file. This format allows cell geometry to
vary due to changes in surface elevation.
Two title cards and two header cards are available for descriptive purposes but are ignored by
the program. The format to reach the upper cell is (8X,I8). The first field lists each cell in the
grid in sequential order but is ignored by the computer. The format to read surface and bottom
cells in each column of cells in (2I8).
Mock up Chesapeake Bay for teaching purposes.
BINARY Hydrodynamics. March 17, 1994.
B BUP
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 1
12 2
13 3
14 4
15 5
16 6
17 7
18 8
19 9
20 10
21 11
22 12
23 13
24 14
25 15
26 16
27 17
28 18
29 19
30 20
252
-------
sbox bbox
1 21
2 22
3 23
4 24
5 25
6 26
7 27
8 28
9 29
10 30
The Initial Conditions Files
The Initial Conditions File has three alternate formats. The appropriate format depends on the
initial conditions option specified in the Control File. The options are "UNIFORM", "VARIED",
and "BINARY". The UNIFORM option supplies uniform concentrations to each cell in the water
column and sediments. (Modifications to the uniform conditions may be specified.) The
VARIED option requires specification, in ASCII, of initial concentration in every water column
and sediment cell. The BINARY option requires specification, in binary, of initial concentration
in every water column and sediment cell. In a typical application of the model, uniform
conditions are specified for the first model run.
The first example provided is for specification of uniform initial conditions for the 30-cell grid.
The input format for all cards is (8X,9I8 or 9F8.0). Three title cards are available for identifying
the file.
Example:
Initial conditions for thirty segment bay mockup
Includes modifications for initial sediment conditions
August 15, 1992
Initial Concentrations (INIT CONC)
Field Name Value Description
1-22 CIC Real Initial concentrations
This card specifies initial water column concentrations for each of the water column state
variables.
Example:
INIT CONC CIC CIC CIC CIC CIC CIC CIC
5.0 25.0 0.0 0.0 0.1 0.1 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 8.0 1.0. 1.0
253
-------
Attachment 2
Additional Feature Development for the POM-IPXMT Linkage for
the Lake Michigan Mass Balance Project-Task 1 Report
by
Raymond S. Chapman, Ph.D.
Ray Chapman and Associates
1725 Mac Arthur Place
Vicksburg, Mississippi 39180
Prepared for
U.S. Army Corps of Engineers
U.S. Army Waterways Experiment Station
Environmental Laboratory
3909 Halls Ferry Road
Vicksburg, Mississippi 39180
July 31, 2000
Introduction
The model design for the Lake Michigan Mass Balance Project (LMMBP) is based on a linked
model approach, which in part includes hydrodynamics, sediments, transport, eutrophication,
and contaminants. It is the desire of the United States Environmental Protection Agency
(USEPA), Large Lakes Research Station (LLRS) that the hydrodynamic model (POM) and water
quality model (IPX) linkage task follows the work performed by Water Quality and Contaminants
Modeling Branch (WQCMB), Environmental Laboratory (EL) on the Chesapeake Bay
Eutrophication Study. As of the present, the following tasks have been successfully completed
(Chapman et al., 1997). 1. A processor subroutine has been implemented in the POM
hydrodynamic model (HM) to provide input geometry, flow, and diffusion rate for the IPX water
quality model (WQM). 2. The ICM type transport scheme has been tested within the IPX
framework on both simplified and prototype grids. 3. The linkage methodology has been
documented and a user's guide developed.
During the course of this project, USEPA requested the implementation of additional features in
the linkage programs. The objectives of the present project is to: (1) implement ULTIMATE
254
-------
QUICKEST (UQ) as the explicit portion of the water column vertical transport routine and
include species variable settling; 2) assist USEPA in the development and implementation of
flow and constituent tributary boundaries within POM and IPXMT; and 3) develop MAP and
GEO files for the sediment layer and include logic within the transport routine to limit the
sediment layer to vertical settling using UQ.
ULTIMATE QUICKEST and Vertical Settling Implementation
The following modifications were required in subroutine WTRANS and WINIT and the related
include file WTRANSPT to implement ULTIMATE QUICKEST (UQ) and vertical settling. These
modifications are described in order of appearance within each routine and are noted via
comment statements.
WTRANSPT
All variables associated with the UQ multipliers were dimensioned to NQFP, which allows for
vertical UQ multipliers.
The vertical settling velocity array WSET was defined and dimensioned to the number of vertical
flow faces and constituents. This will allow species and spatial variability of the settling
velocities.
A theta weighting array THA was defined and dimensioned to the number of constituents. This
modification allows one select vertical transport that ranges from fully explicit to fully implicit for
each constituent.
The ratio and curvature UQ arrays were dimensioned to NQFP.
WSET and THA were put in common blocks.
WINIT
The DO loop 10190 was changed from the number of horizontal flow faces NHQF to all flow
faces NQF to allow for the initialization of the vertical UQ multipliers.
The UPWIND default loop was changed from the number of horizontal flow faces, NHQF, to all
flow faces, NQF, to allow for the vertical flow face test option.
WSET is initialized to zero for all vertical flow faces and constituents.
The theta array THA is initialized to the constant theta input value TH.
WTRANS
Within the autostepping option loop, a variable NLOOP has been defined that allows for a
vertical Courant Number check if explicit vertical UQ is used. When vertical, the vertical explicit
option used (TH = 0.0) NLOOP is changed from NHQF to NQF. Note that this is an example
255
-------
modification in that it assumes that all constituents are run fully explicit and has been
implemented for testing purposes.
A switch parameter IUPDTV has been defined which enables loop 10600. When IUPDTV = 1,
all of the vertical UQ multipliers are updated every time step to account for water surface
elevation changes. When IUPDTV = 0, no action is taken. Note that IUPDTV is hardwired prior
to the IF test.
The computation of the advection and diffusion UQ multipliers has been separated and
repeated for the vertical flow faces. This has been done so that the constituent dependent
settling velocity could be incorporated into the definition of the Courant Number. As a result,
these computations are performed in a loop over the active constituents, which includes an IF
statement that excludes the computations when a constituent uses fully implicit transport.
The DO loop 10690, which sets boundary conditions, applies the ULTIMATE limiter, updates the
mass derivative, and computes the provisional concentration CSTAR has been modified as
follows: first the range of the DO loop was increased to NQF to include vertical faces. IF
statements checking for fully implicit transport (THA = 1) disables the computation of vertical
faces. Within the loop, flows are modified to account for settling velocities, and theta weighting
is applied to advection and diffusion in the vertical. In addition, the local settling flow is set to
zero for horizontal faces and computed as the product of the settling velocity and face area for
vertical flow faces. When the vertical flow faces are computed in a local array shift counter
(IFW) is used for the vertical settling velocities. Within the vertical implicit loop 10770 the array
shift counter is again used. In addition, the variables WFALL and WFALL1 are defined as one-
half of the product of WSET and the time step DLT at the top and bottom of a cell, respectively.
Finally, the right hand side vector DT of the tridiagonal solver is simply set to CSTAR.
Mass Balance Tests
Simplified and prototype grid mass conservation tests were performed using a variety of settling
velocities and theta weightings. Utilizing spot dumps, line dumps, and grid uniform
concentrations, mass was found to be conserved within machine and POM volume accuracy.
Implementation of IPXMT Into the USEPA LLRS Water Quality Model
Subsequent to the completion of mass conservation testing within the UQ development code,
the aforementioned modifications were implemented within LLRS' F90 version of IPXMT. In
order to accommodate LLRS' need for an internal time step and the specification of column
dependent settling velocities within the vertical UQ, the horizontal and vertical UQ routines were
segregated. In addition, the loop structure for vertical UQ was changed from a NHQF to NQF to
a 1 to NSB and 1 to NVF (SB), which is the same structure used in the vertically implicit routine.
Again, mass balance testing confirmed that the implementation of UQ was complete and
correct.
256
-------
References
Chapman, R.S., T.M. Cole, and T.K. Gerald. 1997. Development of a Hydrodynamic/Water
Quality (POM-IPX) Linkage for the Lake Michigan Mass Balance Project. Final Report. U.S.
Environmental Protection Agency, Office of Research and Development, National Health
and Environmental Effects Research Laboratory, Mid-Continent Ecology Division-Duluth,
Large Lakes Research Station, Grosse lie, Michigan. 63 pp.
257
-------
Attachment 3
Additional Feature Development for the POM-IPXMT Linkage for
the Lake Michigan Mass Balance Project - Task 2 Report
by
Raymond S. Chapman, Ph.D.
Ray Chapman and Associates
1725 Mac Arthur Place
Vicksburg, Mississippi 39180
Prepared for
U.S. Army Corps of Engineers
U.S. Army Waterways Experiment Station
Environmental Laboratory
3909 Halls Ferry Road
Vicksburg, Mississippi 39180
December 28, 2000
Introduction
The model design for the Lake Michigan Mass Balance Project (LMMBP) is based on a linked
model approach, which, in part, includes hydrodynamics, sediments, transport, eutrophication,
and contaminants. It is the desire of the United States Environmental Protection Agency
(USEPA), Large Lakes Research Station (LLRS) that the hydrodynamic model (POM) and water
quality model (IPX) linkage tasks follows the work performed by Water Quality and
Contaminants Modeling Branch (WQCMB), Environmental Laboratory (EL) on the Chesapeake
Bay Eutrophication Study. As of the present, the following tasks have been successfully
completed (Chapman et al., 1997). (1) A processor subroutine has been implemented in the
POM hydrodynamic model (HM) to provide input geometry, flow and diffusion data for the IPX
water quality model (WQM); (2) the I CM type transport scheme has been tested within the IPX
framework on both simplified and prototype grids; and (3) the linkage methodology has been
documented and a user's guide developed. During the course of this project, USEPA requested
the implementation of additional features in the linkage programs. The objective of the present
project is to: (1) implement ULTIMATE QUICKEST (UQ) as the explicit portion of the water
column vertical transport routine and include species variable settling; (2) assist USEPA in the
development and implementation of flow and constituent tributary boundaries within POM and
258
-------
IPXMT; and (3) develop MAP and GEO files for the sediment layer and include logic within the
transport routine to limit the sediment layer to vertical settling using UQ.
Boundary Flow Subroutine BCOND Implementation
A boundary flow subroutine (BCOND) provided by Dr. David Schwab of National Oceanic and
Atmospheric Administration (NOAA), Great Lakes Environmental Research Laboratory (GLERL)
was modified to provide the MAPPER program with the I, J, K coordinates of each boundary
flow and whether the boundary flow is considered a left or right flow boundary within IPXMT.
These data are written to file TRIE.DAT which provides, Boundary Flow Number, Flow
Direction, KP, KF, KL and a 0 or 1 to denote a left or right flow boundary, respectively. Initial
POM simulations with the boundary flow subroutine enabled suggested that it was properly
implemented in that it did not create catastrophic errors during the simulation. Additional testing
was planned via a comparison of POM and IPXMT volume balances subsequent to the
modification of the MAPPER program, which defines the location of the tributary boundaries
within IPXMT.
MAP and GEO File Modifications
Subroutine ICM_BMF was modified to read tributary flow locations from the TRIB.DAT file. The
addition of tributary boundaries did not require a change of format within the MAP file nor
modification of the IPXMT hydrodynamic input processor WQMS. The additional occurrences of
boundary flow faces are processed by WQMS the same as the internal POM flow faces. No
changes were required within the GEO file.
Within POM, the location of the call to the mapping generation routines was moved to the
bottom of the time-marching loop. This was done because all boundary information had to be
properly initialized before generating the mapping information.
Local Volume Error Correction and Mass Balance Tests
Initial volume balance comparisons between POM and IPXMT yielded local continuity errors
were much greater than that experienced during previous test application without tributary
inflows. After a thorough examination of the linkage between POM and IPXMT, it was decided
the origin of the volume imbalance resided within POM. A close examination of the BCOND
subroutine revealed a number of problems. These problems and the corrections implemented
are listed below.
The computation of the depth-averaged velocity used in the internal mode scaled each layer
velocity by the cell height or DZ. This resulted in internal mode velocities flows that were but a
fraction of that specified for that tributary. This problem was corrected by removing the DZ
scaling, however, although the correction resulted in flows that were of the right order of
magnitude, the integral of the internal velocities did not match the external depth-averaged
velocities.
Further investigation led to an examination of the difference in how the depth-averaged velocity
in the internal and external mode are computed. The depth-averaged velocity in the external
mode was computed by dividing the input tributary flow by an average depth between the active
cell receiving the tributary inflow and the depth default of a non-active cell (0.5 m). The internal
259
-------
mode depth-averaged velocity was computed by dividing the tributary inflow by the number of
layers required to achieve 5 m. In most cases, this resulted in internal flows that did not sum to
the tributary inflow. Under these conditions, volume conservation is impossible. This problem
was fixed by using consistent average of half-depth scaling, which was accomplished by
removing the 5 m cutoff depth. Again, volume continuity was improved, but was still
questionable.
An analysis of the interaction of the volume balance computation revealed that the three time
level or leapfrog scheme used velocities in the external and internal continuity calculations that
were off by one external time. As a result, even when the vertical distribution of internal
velocities was adjusted to match and a external time step integrated depth-averaged velocity
volume conservation within the internal mode was not achieved. In other words, the vertical
velocities back calculated by continuity did not satisfy the boundary condition W = 0.0 at z = -h,
or the lake bottom. The influence of the size of the time lag was investigated by decreasing the
external time step by a factor of three. This increased the ratio of the internal to external time
step from 10:1 to 30:1, the idea being that if the lag decreased the magnitude of the local
volume balance error should decrease. This notion was proven true when the decrease in the
external time step significantly improved the local volume balances throughout the entire
simulation. Cell specific volume imbalances decreased from around 50000.0 m3 to less than
10.0 m3. Global volume differences were approximately 2 m3 out of a total grid volume of
4.81475 x 1012 m3 or less than 5 x 1Q-11%.
Subsequent to implementation of the volume error corrections, prototype grid mass
conservation tests were performed using a variety of settling velocities and theta weightings.
Utilizing spot dumps, line dumps, and grid uniform concentrations, mass was found to be
conserved within machine and POM volume accuracy. Additional POM and IPX simulations
performed with double precision yielded total mass conservation to within 13 significant digits, or
within machine accuracy.
References
Chapman, R.S., T.M. Cole, and T.K. Gerald. 1997. Development of Hydrodynamic/Water
Quality (POM-IPXMT) Linkage for the Lake Michigan Mass Balance Project. Final Report.
U.S. Environmental Protection Agency, Office of Research and Development, National
Health and Environmental Effects Research Laboratory, Mid-Continent Ecology Division-
Duluth, Large Lakes Research Station, Grosse lie, Michigan. 63 pp.
260
-------
Attachment 4
Additional Feature Development for the POM-IPXMT Linkage for
the Lake Michigan Mass Balance Project- Final Report
by
Raymond S. Chapman, Ph.D.
Ray Chapman and Associates
1725 Mac Arthur Place
Vicksburg, Mississippi 39180
Thomas M. Cole
U.S. Army Corps of Engineers
U.S. Army Waterways Experiment Station
Environmental Laboratory
3909 Halls Ferry Road
Vicksburg, Mississippi 39180
Terry K. Gerald
AScI, Incorporated
U.S. Army Corps of Engineers
U.S. Army Waterways Experiment Station
Environmental Laboratory
3909 Halls Ferry Road
Vicksburg, Mississippi 39180
Prepared for
U.S. Environmental Protection Agency
Office of Research and Development
National Health and Environmental Effects Research Laboratory
Mid-Continent Ecology Division-Duluth
Large Lakes Research Station
Grosse lie, Michigan 48138
September 27, 2001
261
-------
Introduction
The model design for the Lake Michigan Mass Balance Project (LMMBP) is based on a linked
model approach, which, in part, includes hydrodynamics, sediments, transport, eutrophication,
and contaminants. The United States Environmental Protection Agency (USEPA), Large Lakes
Research Station (LLRS) desires that the hydrodynamic model (POM) and water quality model
(IPX) linkage task follows the work performed by Water Quality and Contaminants Modeling
Branch (WQCMB), Environmental Laboratory (EL) on the Chesapeake Bay Eutrophication
Study (Cerco and Code, 1995; Dortch et al. 1991). As of the present, the following tasks have
been successfully completed (Chapman et al., 1997). (1) A processor subroutine has been
implemented in the POM hydrodynamic model (HM) to provide input geometry, flow and
diffusion data for the IPX water quality model (WQM); (2) the ICM-type transport scheme has
been tested within the IPX framework on both simplified and prototype grids; and (3) the linkage
methodology has been documented and a user's guide developed. The USEPA has requested
additional features within the linkage programs. The objective of the present project is to: (1)
implement ULTIMATE QUICKEST (UQ) (Leonard, 1979, 1991) as the explicit portion of the
water column vertical transport routine and include species variable settling; (2) implementation
of flow and constituent tributary boundaries within POM and IPXMT; and (3) develop MAP and
GEO files for the sediment layer and implement a vertical transport routine using UQ.
ULTIMATE QUICKEST and Vertical Settling Implementation
The following modifications were required in subroutine WTRANS and WINIT and the related
include file WTRANSPT to implement ULTIMATE QUICKEST (UQ) and vertical settling. These
modifications are described in order of appearance within each routine and are noted via
comment statements.
All variables associated with the UQ multipliers were dimensioned to NQFP, which allows for
vertical UQ multipliers.
The vertical settling velocity array WSET was defined and dimensioned to the number of
vertical flow faces and constituents. This will allow species and spatial variability of the
settling velocities.
A theta weighting array THA was defined and dimensioned to the number of constituents.
This modification allows one select vertical transport that ranges from fully explicit to fully
implicit for each constituent.
The ratio and curvature UQ arrays were dimensioned to NQFP.
WSET and THA were put in common blocks.
The DO loop 10190 was changed from the number of horizontal flow faces NHQF to all flow
faces NQF to allow for the initialization of the vertical UQ multipliers.
The UPWIND default loop was changed from the number of horizontal flow faces, NHQF, to
all flow faces, NQF, to allow for the vertical flow face test option.
WSET is initialized to zero for all vertical flow faces and constituents.
262
-------
The theta array THA is initialized to the constant value.
Within the autostepping option loop, a variable NLOOP has been defined that allows for a
vertical Courant number check if explicit vertical UQ is used. When vertical, the vertical
explicit option used (TH = 0.0) NLOOP is changed from NHQF to NQF. Note that this is an
example modification in that it assumes that all constituents are run fully explicit and has
been implemented for testing purposes.
A switch parameter IUPDTV has been defined which enables loop 10600. When IUPDTV =
1 all of the vertical UQ multipliers are updated every time step to account for water surface
elevation changes. When IUPDTV = 0 no action is taken. Note that IUPDTV is hardwired
prior to the IF test.
The computation of the advection and diffusion UQ multipliers has been separated and
repeated for the vertical flow faces. This has been done so that the constituent dependent
settling velocity could be incorporated into the definition of the Courant number. As a result,
these computations are performed in a loop over the active constituents, which includes an
IF statement that excludes the computations when a constituent uses fully implicit transport.
The DO loop 10690, which sets boundary conditions, applies the ULTIMATE limiter, updates
the mass derivative, and computes the provisional concentration CSTAR has been modified
as follows: first, the range of the DO loop was increased to NQF to include vertical faces. IF
statements checking for fully implicit transport (THA = 1) disables the computation of vertical
faces. Within the loop, flows are modified to account for settling velocities, and theta
weighting is applied to advection and diffusion in the vertical. In addition, the local settling
flow is set to zero for horizontal faces and computed as the product of the settling velocity
and face area for vertical flow faces. When the vertical flow faces are computed, a local
array shift counter (IFW) is used for the vertical settling velocities.
Two corrections were made to the UQ transport code. The first was to include the settling
velocity in the determination of a positive or negative flow direction. The second was to
correct an omission in the UQ limiter logic.
Within the vertical implicit loop 10770, the array shift counter is again used. In addition, the
variables WFALL and WFALL1 are defined as one-half of the product of WSET and the time
step DLT at the top and bottom of a cell, respectively.
Finally, the right hand side vector DT of the tridiagonal solver is simply set to CSTAR.
Mass Balance Tests
Simplified and prototype grid mass conservation tests were performed using a variety of settling
velocities and theta weightings. Utilizing spot dumps, line dumps and grid uniform
concentrations, mass was found to be conserved within machine and POM volume accuracy.
Boundary Flow Subroutine BCOND Implementation
A boundary flow subroutine (BCOND) provided by Dr. David Schwab of the National Oceanic
and Atmospheric Administration (NOAA), Great Lakes Environmental Research Laboratory
263
-------
(GLERL), was modified to provide the MAPPER program with the I, J, K coordinates of each
boundary flow and whether the boundary flow is considered a left or right flow boundary within
IPXMT. These data are written to file TRIE.DAT which provides Boundary Flow Number, Flow
Direction, KP, KF, KL and a 0 or 1 to denote a left or right flow boundary, respectively. Initial
POM simulations with the boundary flow subroutine enabled suggested that it was properly
implemented in that it did not create catastrophic errors during the simulation. Additional testing
was planned via a comparison of POM and IPXMT volume balances subsequent to the
modification of the MAPPER program, which defines the location of the tributary boundaries
within IPXMT.
MAP and GEO File Modifications
Subroutine ICM_BMF was modified to read tributary flow locations from the TRIE.DAT file. The
addition of tributary boundaries did not require a change of format within the MAP file nor
modification of the IPXMT hydrodynamic input processor WQMS. The additional occurrences of
boundary flow faces are processed by WQMS the same as the internal POM flow faces. No
changes were required within the GEO file.
Within POM, the location of the cell to the mapping generation routines was moved to the
bottom of the time-marching loop. This was done because all boundary information had to be
properly initialized before generating the mapping information.
Local Volume Error Correction and Mass Balance Tests
Initial volume balance comparisons between POM and IPXMT yielded local continuity errors
that were much greater than that experienced during previous test application without tributary
inflows. After a thorough examination of the linkage between POM and IPXMT, it was decided
the origin of the volume imbalance resided within POM. A close examination of the BCOND
subroutine revealed a number of problems. These problems and the corrections implemented
are listed below.
The computation of the depth-averaged velocity used in the internal mode scaled each layer
velocity by the cell height or DZ. This resulted in internal mode velocities flows that were but a
fraction of that specified for that tributary. This problem was corrected by removing the DZ
scaling. However, although the correction resulted in flows that were of the right order of
magnitude, the integral of the internal velocities did not match the external depth-averaged
velocities.
Further investigation led to an examination of the difference in how the depth-averaged
velocities in the internal and external mode are computed. The depth-averaged velocity in the
external mode was computed by dividing the input tributary flow by an average depth between
the active cell receiving the tributary inflow and the depth default of a non-active cell (0.5 m).
The internal mode depth-average velocity was computed by dividing the tributary inflow by the
number of layers required to achieve 5 m. In most cases, this resulted in internal flows that did
not sum to the tributary inflow. Under these conditions, volume conservation is impossible.
This problem was fixed by using consistent average or half-depth scaling, which was
accomplished by removing the 5 m cutoff depth. Again, volume continuity was improved, but
was still questionable.
264
-------
An analysis of the interaction of the volume balance computation revealed that the three time
level or leapfrog scheme used velocities in the external and internal continuity calculations that
were off by one external time. As a result, even when the vertical distribution of internal
velocities was adjusted to match the external time step integrated depth-averaged velocity,
volume conservation within the internal mode was not achieved. In other words, the vertical
velocities back calculated by continuity did not satisfy the boundary condition W = 0.0 at z = -h,
or the lake bottom. The influence of the size of the time lag was investigated by decreasing the
external time step by a factor of three. This increased the ratio of the internal to external time
step from 10:1 to 30:1, the idea being that if the lag decreased the magnitude of the local
volume balance error should decrease. This notion was proven true when the decrease in the
external time step significantly improved the local volume balances throughout the entire
simulation. Cell specific volume imbalances decreased from around 50000.0 m3 to less than
10.0 m3. Global volume differences were approximately 2 m3 out of a total grid volume of
4.81475 x 1012 m3 or less than 5 x 1Q-11%.
Subsequent to implementation of the volume error corrections, prototype grid mass
conservation tests were performed using a variety of settling velocities and theta weightings.
Utilizing spot dumps, line dumps, and grid uniform concentrations mass was conserved within
machine and POM volume accuracy. Additional POM and IPX simulations performed with
double precision yielded total mass conservation to within 13 significant digits, or within machine
accuracy.
Sediment MAP and GEO Files
The MAP and GEO files have been developed for the sediment layer through modification of the
original POM MAPPING routine (Chapman etal., 1997). These routines create several files that
contain the grid linkage data. ICM_COOR2.OUT, which is generated by subroutine ICM_GCF,
contains basic cell geometry data that are used to generate the remaining linkage data. The
files VGEO.INP and VMAP.INP, which are generated by subroutine ICM_BVMF, contain data
that are used directly by the IPXMT sediment compartment transport schemes. In addition,
ICM_BVMF generates VHYD.INP, the hydrodynamic input file. VHYD.INP is similar in form to
the water column file HYD, however, it only contains time invariant values of the vertical box
lengths, BL, surface areas, A, and flows, Q. Default values for the diffusion and settling are
defined in the input control file, SED_CON.NPT.
A diagnostic file named VMAP.DIA is also created that contains the values of constants and
parameters required by IPX. The IPX code contains PARAMETER statements that set the size
of data arrays. The user should note that if the POM grid geometry is altered, VMAP.DIA
provides the information required to define PARAMETER statements declared in DIMSV.INC.
The sediment MAPPING routine reads a free-field control file, SCN_CON.NPT, which is shown
below:
Number of zone
5
Depth Cutoff (m)
10 20 50 80 120
Number of Layers
10 8 6 5 55
265
-------
Layer Thickness (m)
0.1 0.2 0.5 0.5 0.5 0.5
The general function of this modification is to allow the user a convenient means of specifying
the number of layers of a given sediment column and the grid spacing of those layers
depending on the depth of the water column above. Specifically, the "Number of Zones" defines
the number of depth gradations where different grid refinements are defined. The "Depth
Cutoff" is the range of depth that a particular "Number of Layers and Layer Thickness" are
defined. For example, the "Depth Cutoff" of 10 m results in 10 layers with a layer thickness of
0.1 m for all cells where 0.0 < Depth < 10 m. In the case shown above, the same definition
applies up to 80 m < Depth < 120 m. Finally, the last entries for "Number of Layers" and "Layer
Thickness" correspond to all depths greater than 120 m. These data, in conjunction with the
POM depth file, are used to generate the VMAP.INP, VGEO.INP, VMAP.DIA and VHYD.INP
following the procedure outlined above.
Subsequent to compiling using CL_POM.SH, the following command will automatically generate
both the water column and sediment grid mapping files:
POM MAPPWC MAPPSC < POMGL.IN > POMGLOUT
The modification to the original MAPPING argument allows individual or combined mapping of
the water column grid (MAPPWC) and sediment column grid (MAPPSC). Specification of
MAPPWC or MAPPSC individually will result in the generation of either water column or
sediment column grid linkages, respectively. This command also generates the POM standard
output file POMGL.OUT, which can be compared to MAP.DIA in order to verify the integrity of
the linkage. As in the original version of the mapping option, if MAPPWC and MAPPSC are
omitted from the command line, a complete linked POM hydrodynamic simulation will result.
Sediment Layer Transport Routine Modification
The philosophy adopted during the development of the sediment layer transport routine was to
have separate but functionally identical transport routines for the water column and sediment
layers. Consequently, the F77 version of the vertical UQ water column transport routine was
used as the basis for the development of the sediment layer routine. The routines VTRANS and
VINIT and the related input and include files were modified so that:
All variables associated with horizontal transport, IO, kinetics and time step computations
have been removed.
All variables associated with the UQ multipliers were dimensioned to NVFP, which limits the
computation to vertical UQ multipliers. The labeled common names have been altered for
uniqueness.
The series of read statements within VINIT has been reduced in that unnecessary input has
been removed. As a consequence, the input decks have been appropriately modified.
Subroutines HYDRO and TVDS have been removed. In addition, the boundary interpolation
associated with TVDS has been removed.
266
-------
The autostepping option was eliminated.
The updates to volumes, box lengths, and box depths were removed to reflect the invariant
nature of the grid.
The IUPDTV option has been removed to reflect the fact that the sediment grid is invariant.
The computation of the advection and diffusion UQ multipliers has been limited to the NVFQ
vertical flow faces.
The fully implicit transport option (THA = 1) disables the computation of vertical UQ.
The fully explicit option (THA = 0.0) disables the diffusion contribution within the UQ
multipliers and the vertical implicit transport.
The UQ conditional test on flow direction was modified so that the settling velocity was
included. A correction of an omission in the UQ limiter logic was implemented.
A conservative exchange mechanism between the water column and sediment layers has been
implemented. Subroutine EXCHANGE, which assigns source contributions or losses into the
bottom layer of the water column grid and top layer of the sediment column, has been
incorporated into the modeling system. The source information is supplied to the water and
sediment columns via individual labeled common statements.
The control information required by the sediment transport routine is (1) read from the modified
input file, SED_CON.NPT, and (2) the water column time step, SDLT, which is passed through
the call to the sediment routine. At this time, it is assumed that the sediment layer time step is
identical to the horizontal transport time step determined within the water column routine. An
example of SED_CON.NPT is show below.
Control file for IPX Sediment Model
GEOM DEFINE
SOLTN
Dispersion
DIFF
ACT CST
CST Set Vel
NB
9849
SLC
QUICKEST
ZDFC
ON
ZDF
.000001
ACC
ON
CSV
1.0e-8
NSC
2318
TH (1 if fully
0.55
ACC
OFF
CSV
2.0e-9
NVQF
7531
implicit, 0
ACC
OFF
CSV
0.0
if explicit)
ACC
OFF
CSV
0.0
267
-------
In addition to removing unnecessary input data, a sediment layer record that defines a default
settling velocity, CSV, for each constituent has been included.
Combined Water and Sediment Column Transport Routine Testing
Mass conservation testing was performed utilizing a simplified grid to test the integrity of the
fully coupled system. The simplified grid tests comprised of: (1) A uniform concentration
distribution test with advection and diffusion enabled. These tests used THETA equal to 0.0,
0.55 and 1.0. In all cases, mass and the uniform distribution were conserved to machine
accuracy. (2) Settling was then introduced and the tests repeated. In all cases, mass was
conserved and a stable vertical concentration was achieved. (3) The final set of simplified grid
tests investigated pure settling where theta equal to 0.0 or fully explicit transport. An initial
uniform concentration was specified with varying values of the settling velocity. In all cases,
mass was conserved and the distribution monotonically settled into the bottom sediment layer.
Next, the surface layer was loaded with the remaining layers set to 0.0. This test resulted in
smooth transfer of mass from the surface layer to the bottom with mass conserved to within
machine accuracy.
Prototype grid mass conservation tests were performed using POM hydrodynamics and a
variety of settling velocities and theta weightings. The purpose of these tests was to ensure that
mass could be transferred to and from the water column and sediment layers. Specifications of
known fluxes within the subroutine EXCHANGE demonstrated the grid exchange mechanism
was found to be conservative within machine and volume accuracy.
References
Cerco, C.F. and T. Cole. 1995. User's Guide to the CE-QUAL-ICM Three-Dimensional
Eutrophication Model. U.S. Army Corps of Engineers, U.S. Army Engineer Waterways
Experiment Station, Vicksburg, Mississippi. Technical Report EL-95-15, 2,420 pp.
Chapman, R.S., T.M. Cole, and T.K. Gerald. 1997. Development of Hydrodynamic/Water
Quality (POM-IPXMT) Linkage for the Lake Michigan Mass Balance Project. Final Report.
U.S. Environmental Protection Agency, Office of Research and Development, National
Health and Environmental Effects Research Laboratory, Mid-Continent Ecology Division-
Duluth, Large Lakes Research Station, Grosse lie, Michigan. 63 pp.
Dortch, M.S. R.S. Chapman, and S.R. Abt. 1991. Application of Three-Dimensional Residual
Transport. J. Hydraul. Engin., 118(6):831-848.
Leonard, B.P. 1979. A Stable and Accurate Convective Modelling Procedure Based on
Upstream Interpolation. Comp. Methods App. Mechan. Engin., 19(1):59-63.
Leonard, B.P. 1991 The Ultimate Conservative Difference Scheme Applied to Unsteady One-
Dimensional Advection. Comp. Methods. Appl. Mechan. Engin., 88(1):17-74.
268
-------
APPENDIX B
THE FIREAD1 PRIMER: FORMAT INDEPENDENT READING
OF PROGRAM INPUT PARAMETERS
LLRS Technical Note
by
Michael Settles
Computer Sciences Corporation
Large Lakes Research Station
9311 Groh Road
Grosse lie, Michigan 48138
Prepared for
U.S. Environmental Protection Agency
Office of Research and Development
National Health and Environmental Effects Research Laboratory
Mid-Continent Ecology Division-Duluth
Large Lakes and Rivers Forecasting Research Branch
Large Lakes Research Station
9311 Groh Road
Grosse lie, Michigan 48138
December 16, 1996
1Based upon the CERN FFREAD Utility.
269
-------
Contents
Abstract 271
Overview 272
User Manual 274
The FIREAD Utility Subroutines 274
Special FIREAD Keys 275
FIREAD Input Syntax 276
Examples 278
First Sample Program 278
Input Data for First Sample Program 279
Second Sample Program 280
Input Data for Second Sample Program 282
Third Sample Program 283
Input Data for Third Sample Program 285
270
-------
Abstract
The FIREAD utility for passing unstructured data to batch programs is discussed. An overview
of maximally unformatted reading is provided. A user manual for the operation of FIREAD is
given, including example programs that make use of FIREAD input.
271
-------
Appendix B
The FIREAD Primer: Format Independent Reading
of Program Input Parameters
Overview
The FIREAD utility is provided to resolve an increasingly common problem in large computer
programs: that of allowing programs to read input parameter data flexibly, unambiguously, and
without a specific input format. Using rigid data structures to input program data is often
unavoidable. However, use of fixed data structures for the input of parameter data has
disadvantages; the most serious of which is the inability of the programmer to add new input
parameter data not provided for in a program's original data format. This particular problem is
very noticeable in modeling of complex systems in which many degrees of freedom must be
parameterized. Rigid data formats also make inline documentation - i.e., documentation of the
data within the file that contains it - problematic. Lastly, the data structures common read by
programming languages such as FORTRAN do not provide for abbreviated input of redundant
data; i.e., each data item must be represented in the input file by its individual value. When the
number of redundant input data items is large, this practice becomes tedious, both to the person
responsible for initially creating the input data set and to those who must review its content.
The FIREAD utility was created to address and resolve these specific problems. Instead of
associating an input program variable with its location in an input data structure, the FIREAD
utility uses predefined keys or tokens that may appear arbitrarily and without any predefined
order with the input data stream. The flexibility of this input method allows the programmer to
pass input data to the program without resorting to the use of unnecessarily complex data
structures to describe the number of input data items associated with a class, the number of
classes, and super-classes present, etc.
Consider as an example a simple FORTRAN program that reads in some number of similar
items:
PROGRAM GET_PARAMS
*
C- Read some program parameters.
IMPLICIT NONE
*
C-The input program data.
INTEGER NSTRAWBERRIES ! Number of strawberries
INTEGER NCHERRIES ! Number of cherries
INTEGER NAPPLES ! Number of apples
272
-------
INTEGER NPEACHES ! Number of peaches
INTEGER NBLUEBERRIES ! Number of blueberries
*
C- Number items being read in.
INTEGER NFRUIT
*
C-A fruit loop variable. (:-)
INTEGER IFRUIT
*
C- The maximum number of fruits to be read.
INTEGER MAXFRUITS
PARAMETER (MAXFRUITS=10)
*
C- A dummy array containing the input data items.
INTEGER JDUMMY (MAXFRUITS)
*
C- Get the number of fruits to be read.
READ(5,*)NFRUIT
*
C- Read the data.
READ(5,*) (JDUMMY(IFRUIT), IFRUIT=1, NFRUIT)
*
C- Assign the values to the appropriate variables.
NSTRAWBERRIES = JDUMMY (1)
NCHERRIES = JDUMMY (2)
NAPPIES = JDUMMY (3)
NPEACHES = JDUMMY (4)
NBLUEBERRIES = JDUMMY (5)
*
C- Process the fruit...
C CALL EAT_FRUIT (NSTRAWBERRIES,NCHERRIES,NAPPLES,NPEACHES<
C 1 NBLUEBERRIES)
END
The input data for such a program would typically look something like this:
5
2
1
3
7
9
Beginning with the number of elements in the list and followed by the values of those input data
items. If a more general input format including, for instance, classes of animals and cities is
desired, this input format may be inadequate. Further, the program created to read the new
data format would then be unable to read the old data format without modifying the old input
data to reflect the new classes of animals and cities.
273
-------
The FIREAD format-independent approach is not to rely on data structures whose future we
may not be able to anticipate, but to associate input data with program variables through the
use of special keys. A sample of FIREAD data for the above program might look something like
the following:
C Begin with some documentation....
C Example FIREAD input deck for the program GET_PARAMS
C Here are the input parameters and their values.
NCHERRIES 12
NSTRAWBERRIES 20
NAPPIES 3
C This marks the end of the FIREAD input deck.
END
Here the FIREAD input values are associated with internal program variables using the keys
NCHERRIES, NSTRAWBERRIES, and NAPPIES. No individual FIREAD key is required to
appear in the input data. Program variables corresponding to missing FIREAD keys are
assigned default values that must be specified in the application program. Since key names are
uniquely associated with program variables, the keys need not appear in the input data in any
particular order. The association between the keys and the program variables is made from
within the application program via a FORTRAN callable subroutine that will be discussed later.
The flexible format of the input data allows comment fields to be placed into the input data,
allowing the programmer to document the input parameters.
User Manual
The FIREAD Utility Subroutines
As designed, user code calls FIREAD routines that associate user-defined variables with
character keys to be read in on the input stream of the program. To use FIREAD, user routines
must make use of three interface subroutines: FIINIT, FIKEY, and FIGO, which are responsible
for initialization of the FIREAD utility, definitions of FIREAD keys, and reading of FIREAD input
data, respectively. Each of these subroutines is discussed below.
FIINIT initializes the FIREAD utility and must be called before either FIKEY or FIGO. This
routine initializes the number of defined keys and sets up predefined keys that are used by the
utility. The subroutine has no arguments and the format for its use is simply:
CALL FIINITQ
FIKEY defines FIREAD keys that associate input data with variables in a calling program. The
keys are short character tokens that appear in an input data file together with the data actually
being read in to the user application. FIKEY must be called after FIINIT and before FIGO. The
format of the subroutine is:
274
-------
CALLFIKEY(KEYNAME,VARIABLE,N_ELEMENTS,TYPE)
CHARACTER*15 KEYNAME ! Key name
INTEGER N_ELEMENTS ! Dimension of VARIABLE
CHARACTER»(») TYPE ! Data type of VARIABLE
*
Additional information:
The name of the FIREAD key being defined KEYNAME can be chosen to be the same as
the FORTRAN program variable VARIABLE; however, a different name may also be
selected.
The argument N_ELEMENTS specifies the dimension of the array VARIABLE1. If
VARIABLE is not an array - i.e., a scalar - set N_ELEMENTS equal to one.
The data type of the scalar or array reference VARIABLE is largely arbitrary. Available data
types include 'INTEGER1, 'REAL1, 'DOUBLE', and 'CHARACTER'. Note that the data type
for double precision, eight bytes, is not 'DOUBLE PRECISION', but has been abbreviated to
'DOUBLE'.
Character string data types are provided for using the standard FORTRAN declaration
syntax; i.e., CHARACTER*[n], where [n] is the length of the string. In the absence of this [n]
syntax, the data type is assumed to be that of one byte, single character data.
FIGO reads in the FIREAD keys and data values from the standard input. FIGO should be
called after FIINIT and FIKEY. FIGO has no arguments and the format for its use is simply:
CALL FIGOQ
Special FIREAD Keys
The FIREAD utility is prepared with predefined keys that affect the way that FIREAD reports and
reads data. These keys are defined as follows:
LIST: Causes FIREAD to echo records being read in to standard output.
NOLIST: Causes FIREAD to stop echoing records being read to standard output.
END: Signals that reading of FIREAD cards is to be halted. Input of additional cards may
be started again by calling FIGO in the user program.
1The FIKEY subroutine does not actually associate a key with the array itself, but with its
starting address. Therefore, a code such as CALL FIKEY ('KEYNAME',VARIABLE(5),10,
'INTEGER') will associate the key KEYNAME not with the first element of the array
VARIABLE, but with the fifth element. Note that in this case, the array VARIABLE is assumed
to have been dimensioned to include a 14th element.
275
-------
STOP: Signals that reading of FIREAD cards is to be halted. The STOP key is similar to
the END key, except that input of new FIREAD cards may not begin again unless FIREAD is
re-initialized by calling FIINIT.
FIREAD Input Syntax
The input format used by FIREAD is chosen to allow and support documentation, scalar data,
and vector data. The syntax used for specifying comment fields is borrowed from FORTRAN
language conventions. Language elements used for specifying array indices and repetition of
input values are taken from the CERN utility FFREAD upon which FIREAD is based. Detailed
examples of the FIREAD language elements discussed below are appended to this note.
FIREAD comments are delimited by placing an uppercase "C" in the first column of the input
field. The second column must contain either ASCII space or by null. Tail remarks are also
supported in FIREAD and are delimited by the exclamation point"!" symbol, which may appear
in any column of the input data.
FIREAD keys or data items may appear in any column of the input field. Keys that appear on
the same input line as data items must appear before those data items.
Character string input data must be delimited by single quotes if the string is identical to an
existing FIREAD key and appears before any key or data item on the line, or if the string
contains either an ASM space, "=", or "*" symbol. Placing single quotes around all input
character strings is always a safe practice.
Input FIREAD data can be provided as simple key-value pairs as shown in the example above.
However, additional syntax was added to the FIREAD utility to provide for easier input of array
data.
Data items to be assigned to an array may be input by placing them after the FIREAD key in the
input data file. Data values to be associated with a given FIREAD key may appear on any line
either on or after the line containing the key, but before the next FIREAD key.
Use of the "=" symbol specifies the array index associated with a specific input data item using
the syntax:
[i]=VALUE
where [i] represents the index of the respective array and VALUE the assigned value. For
example, in the following FIREAD input data:
C Assign a value to an element of an array.
KEYNAME 3=5.0
the result is to assign the value 5.0 to the third element of the array with which KEYNAME has
been associated. The next data item for this key is assumed to correspond to the next index.
276
-------
For example,
C Assign two values to the middle of an array.
KEYNAME 3=5.0 6.0
will assign the value 5.0 to the third element of the respective array, and the value 6.0 to the
fourth element of the array.
Repeating data values can be assigned to elements of arrays by using the FIREAD "*" syntax:
[n]*VALUE
For example,
KEYNAME 100*-0.4
will assign the value of -0.4 to the first 100 elements of the array associated with the key
KEYNAME. The "*" syntax can be combined with the "=" syntax to assign repeating values to
specific array elements. The combined syntax is:
[i]=[n]*VALUE
where [i] specifies the starting index and [n] the number of times the indicated VALUE is to be
repeated. This syntax is used to assign values to the elements ([i]) through ([i]+[n]-1) of the
associated array. For example,
KEYNAME 5=4*1.02.0
which assigns the value of 1.0 to elements 5 through 8, and 2.0 to the element 9 of the
associated array.
Some care must be taken when using the "=" and "*" syntax since the array elements implied in
the input list can fall outside of the defined array dimensions. Given the key definition:
CALLFIKEYCKEYNAME'A/ARIABLE.N.ELEMENTS/INTEGER1)
FIREAD will check that array elements specified in the input data do not exceed the dimension
N_ELEMENTS. However, FIREAD cannot check that the value of N_ELEMENTS corresponds
to the actual array dimension. If the dimension of the array VARIABLE is less than
N_ELEMENTS, FIREAD may assign input data values outside of the designated array bounds
and overwrite memory. For example,
PROGRAM BAD_BOUNDS
IMPLICIT NONE
INTEGER FLAGS (10)
277
-------
C- Initialize FIREAD.
CALL FIINITQ
*
C- Define a key.
CALL FIKEY('FLAGS',FLAGS,11,'INTEGER')
*
C- Read in the FIREAD data.
Call FIGOQ
END
would allow FIREAD to assign data values outside of the memory reserved for the variable
FLAGS.
Examples
First Sample Program
PROGRAM FIREX1
C-
C- $ld; firex1.F,v 1.2.1.1 1966/08/13 19:56:56 model Exp $
C- $Locker: $
C-
C- Purpose and Methods: FIREAD example program 1.
Input data for this program is appended to this file and cpp'd out.
C-
C- Inputs
C- Outputs
C- Controls
None
None
None
C-
C- Calls: FIINIT,FIKEY,FIGO
C-
C- Created: 08/09/96 M. Settles
C-
C- Revised:
C-
C
IMPLICIT NONE
*
C- Some flags to be used with FIREAD.
INTEGER FLAG1
REAL FLAG2
CHARACTER*10 FILENAME
*
C- Need to put these in common blocks for FIREAD to work.
COMMON/FIBLK/FLAG1,FLAG2,FILENAME
278
-------
C- A loop variable for printing.
INTEGER I
*
C- Initialize FIREAD.
CALL FIINITQ
*
C- Define some keys.
CALL FIKEY('FLAG1',FLAG1,1,'INTEGER')
CALL FIKEY('FLAG2',FLAG2,1,'REAL')
CALL FIKEY('FILENAME',FILENAME,1,'CHARACTER')
*
C- Read in the FIREAD data.
CALL FIGOQ
*
C- Show what was assigned to memory by FIREAD.
PRINT *
PRINT VFLAG1 = ',FLAG1
PRINT VFLAG2 = ',FLAG2
PRINT VFILENAME = '.FILENAME
PRINT *
END
Input Data for First Sample Program
C This is a comment line.
C It can start after the first column,
C but cannot appear after a key or data item.
C The letter-C must be followed by a space: "C "
C Empty lines are ignored.
C The 'LIST' card tells FIREAD to echo the input
C data to standard output.
LIST
C This is another user-defined key, this time
C associated with a REAL data value.
C This input line also has a "tail remark" on
C the line. Use tail remarks to place comments
C on the same line, after keys and/or data values.
C Notice that the key name or data item need not appear
C in any particular column, so long as the key shows up
C before the data item to be associated with it.
FLAG2 1.2 ! This is a tail remark.
C Here is an example of a user data card.
C The first word 'FLAG1' denotes the name
279
-------
C of a FIREAD "key" previously defined by
C a call to FIKEYQ. This key is associated with
C type INTEGER data.
C Notice that the key FLAG1 appears after FLAG2
C even though FLAG1 was declared first by a call
C to FIKEYQ. Rule: FIREAD keys can appear in any order
C in an input deck, so long as they are declared via
C a call to FIKEYQ before reading the input data with
C a call to FIGOQ. If a key appears more than once,
C FIREAD will issue a warning and abort the program.
FLAG1 11
C This next card tells FIREAD to stop echoing the input
C data to standard output.
NOLIST
C Here is a user-defined key associated with
C CHARACTER string data. Three things to notice
C about this FIREAD card. First, the data value associated
C with the key does not need to be on the same input line
C as the key. Second, the "1=" notation means that FIREAD
C will place the associated character data in what corresponds
C to the first element of the variable's array. (This key's
C variable is a scalar, so that notation does not do much here.)
C Third, cannot tell how much memory has been reserved for
C the character data being provided on the input line unless it is
C explicitly told. Memory may be overwritten if the user provides
C a character string that is too long for the variable intended to
C hold it.
FILENAME
1,'ipx-a.dat'
C The 'STOP' card tells FIREAD that there is no
C more cards to read. To begin reading cards again,
C the user must first call FIINITQ to re-initialize
C the FIREAD utility.
STOP
Second Sample Program
PROGRAM FIREX2
*
C
c-
C- $ld: firex2.F, v 1.2.1.1 1996/08/13 20:01:27 model Exp $
C- $Locker: $
C-
280
-------
c-
c-
c-
c-
c-
c-
c-
c-
c-
c-
c-
c-
c-
r
Purpose
Inputs
Outputs
Controls
Calles:
Created:
Revised:
and Methods:
None
None
None
FIREAD example program 2.
Input data for this program is appended to this file and cpp'd out.
FIINIT,FIKEY,FIGO
08/09/96
M. Settles
IMPLICIT NONE
C- Some flags to be used with FIREAD.
INTEGER FLAG1
REAL FLAG2
CHARACTER*10 FILENAME
CHARACTER*10 NAMES
CHARACTER*!5 NAMEVAR
C- Need to put these in common blocks for FIREAD to work.
COMMON/FIBLK/FLAG1,FLAG2(5),FLAG3(10),FILENAME,NAMES(5),
NAMEVAR(IO)
C- A loop variable for printing.
INTEGER I
C- Initialize FIREAD.
CALL FIINITQ
*
C- Define some keys.
CALL FIKEY('FLAG1',FLAG1,1,'INTEGER')
CALLFIKEY('FLAG2',FLAG2,5,'REAL')
CALLFIKEY('FLAG3',FLAG3(1),10,'INTEGER')
*
C- The data type isjust 'CHARACTER'; i.e., the character
C- length associated with this variable is not given. This
C- is ok, so long as the data item does not represent an array.
CALL FIKEY('FILENAME',FILENAME,1,'CHARACTER')
CALLFIKEY('NAMES',NAMES(1),5,'CHARACTER*10')
CALLFIKEY('NAMEKEY',NAMEVAR(1),10,'CHARACTER*15')
*
C- Read in the FIREAD data.
CALL FIGOQ
281
-------
C- Show what was assigned to memory by FIREAD.
PRINT *
PRINT *,'FLAG1
PRINT *,'FLAG2
PRINT *,'FLAG3
PRINT *,FILENAME =
PRINT *,'NAMES
PRINT *,'NAMEKEY =
PRINT *
END
',FLAG1
',(FLAG2(I),I = 1,5)
',(FLAG3(I),I = 1,10)
'.FILENAME
',(NAMES(I),I = 1,5)
',(NAMEVAR(I),I-1,10)
Input Data for Second Sample Program
C This is a comment line.
C It can start after the first column,
C but cannot appear after a key or data item.
C The letter-C must be followed by a space: "C "
C Empty lines are ignored.
C The 'LIST1 card tells FIREAD to echo the input
C data to standard output.
LIST
C Here is an example of a user data card.
C The first word 'FLAG1' denotes the name
C of an FIREAD "key" previously defined by
C acalltoFIKEYQ.
C This key is associated with type INTEGER data.
FLAG1 11
C This example shows how to assign items in an array.
C "3=2.3" means that the next index is 3 and that the
C associated data item for this element of the array
C is 2.3. There must be no spaces between the "="
C assignment operator and neither the provided index
C nor the data item.
FLAG2 2.1 3=2.3 ! This is a tail remark.
2.4 2.5 ! This line dos not start with a key name,
! so append the data to the variable specified
! by the key on the previous line.
C This line assigns several values to an integer array.
C The "3*" notation means repeat the data value at the
C implied or specified array index three (3) times.
C There must be no spaces between the repetition operator "*"
C and neither the repetition factor nor the data item.
C Notice that the sixth element of the array is not assigned.
282
-------
C This element of the array will keep whatever default
C value the user has assigned to it.
FLAGS 31 32 3*33 7=3*37 10=40
C Here is a user-defined key associated with
C CHARACTER string data. Three things to notice
C about this FIREAD card. First, the data value associated
C with the key does not need to be on the same input line
C as the key. Second, the "1=" notation means that FIREAD
C will place the associated character data in what corresponds
C to the first element of the variable's array. (This key's
C variable is a scalar, so the notation does not do much here.)
C Third, cannot tell how much memory has been reserved for
C the character data being provided on the input line unless it is
C explicitly told. Memory may be overwritten if the user provides
C a character string that is too long for the variable intended to
C hold it.
FILENAME
1='ipx-a.data'
C This line assigns values to a character string array.
C For this to work, the user must explicitly declare both
C the number of elements in the array and the character size
C of each element of the array when the key is defined by
C the call to FlKEY.
NAMES 2*'Howdy' 'doodie' 'there' 'pardner!'
C This assignment example only shows that the name of an
C FIREAD key is not the same as a variable or array name
C in a FORTRAN program. Like the NAMES card, this card
C also allows the user to input data for a character array;
C however, the data goes into a variable called NAMEVAR,
C which is different than the name of the FIREAD key.
NAMEKEY 1=3*'Big Dogs'
4='Little Dogs'
5=5*'Green Dogs'
END
Third Sample Program
PROGRAM FIREX3
*
p
c-
c-
c-
$ld: firex3.F,v 1.2.1.1
$Locker: $
1996/08/13 20:06:02 model Exp $
283
-------
c-
c-
c-
c-
c-
c-
c-
c-
c-
c-
c-
c-
c-
c-
r
*
Purpose
Inputs
Outputs
Controls
Calls:
Created:
Revised:
and Methods: FIREAD example program 3.
Input data for this program is appended to this file and cpp'd out.
None
None
None
FIINIT,FIKEY,FIGO
08/09/96 M. Settles
IMPLICIT NONE
*
C- Some flags to be used with FIREAD.
INTEGER FLAG1
REAL FLAG2
INTEGER FLAGS
CHARACTER*10 FILENAME
CHARACTER*! 0 NAMES
CHARACTER*! 5 NAMEVAR
*
C- Need to put these in common blocks for FIREAD to work.
COMMON /FIBLK/FLAG1,FLAG2(5),FLAG3(10), FILENAME, NAMES(5),
1 NAMEVAR(1)
*
C- A loop variable for printing.
INTEGER I
*
C- Initialize FIREAD.
CALL FIINITQ
*
C- Define some keys.
CALL FIKEY('FLAG1',FLAG1,1, 'INTEGER')
CALL FIKEY('FLAG2',FLAG2,5, 'REAL')
CALLFIKEY('FLAG3',FLAG3(1),10,'INTEGER')
*
C- Read in the first set of Fl READ data.
*
CALL FIGOQ
C- Show what was assigned to memory by the first FIREAD.
PRINT *,'FLAG1 =',FLAG1
PRINT *,'FLAG2 =',(FLAG2(I),I = 1,5)
PRINT *,'FLAG3 =',(FLAG3(I),I = 1,10)
284
-------
C- After FIGOQ is called and the 'END' card has been read,
C- the previously defined FIREAD cards become undefined.
C- To use them again, the user must redefine them again
C- by calling FIKEYQ appropriately.
C- The data type isjust 'CHARACTER'; i.e., the character
C- length associated with this variable is not given. This
C- is ok, so long as the data item does not represent an array.
CALLFIKEY('NAMES',NAMES(1),5,'CHARACTER*10')
CALLFIKEY('NAMEKEY',NAMEVAR(1),10,'CHARACTER*15')
C- Read in the second set of FIREAD data.
CALL FIGOQ
C- Show what was assigned to memory by the second FIREAD.
PRINT *,'FILENAME =',FILENAME
PRINT *,'NAMES =',(NAMES(I),I = 1,5)
PRINT *,'NAMEKEY =',(NAMEVAR(I),I=1,10)
END
Input Data for Third Sample Program
C This is a comment line.
C It can start after the first column,
C but cannot appear after a key or data item.
C The letter-C must be followed by a space "C "
C Empty lines are ignore.
C The 'LIST' card tells FIREAD to echo the input
C data to standard output.
LIST
C Here is an example of a user data card.
C The first word 'FLAG1' denotes the name
C of a FIREAD "key" previously defined by
C acalltoFIKEYQ.
C This key is associated with type INTEGER data.
FLAG1 11
C This example shows how to assign items in an array.
C "3=2.3" means that the next index is 3 and that the
C associated data item for this element of the array
C is 2.3. There must be no spaces between the "="
C assignment operator and the provided index
C or the data item.
285
-------
FLAG2 2.1 3=2.3 ! This is a tail remark.
! This line does not start with a key name,
! so append the data to the variable specified
! by the key on the previous line.
C This line assigns several values to an integer array.
C The "3*" notation means repeat the data value at the
C implied or specified array index three (3) times.
C There must be no spaces between the repetition operator "*"
C and neither the repetition factor nor the data item.
C Notice that the sixth element of the array is not assigned
C This element of the array will keep whatever default
C value the user has assigned to it.
FLAG3 31 32 3*33 7=3*37 10=40
C Let FIREAD know that this is the end of the first
C set of cards by using the special card 'END'. Do
C not use the card 'STOP' unless all of the FIREAD
C data to be interpreted by the calling program have
C been processed. After 'STOP' is issued, FIREAD will
C not process any more cards unless it has been reinitialized
C byacalltoFIINITQ
END
C Here is a user-defined key associated with
C CHARACTER string data. Three things to notice
C about this FIREAD card. First, the data values associated
C with the key does not need to be one the same input line
C as the key. Second, the "1=" notation means that FIREAD
C will place the associated character data in what corresponds
C to the first element of the variable's array. (This key's
C variable is a scalar, so the notation does not do much here.)
C Third, cannot tell how much memory has been reserved for
C the character data being provided on the input line unless it is
C explicitly told. Memory may be overwritten if the user provides
C a character string that is too long for the variable intended to
C hold it.
FILENAME
1='ipx-a.dat'
C This line assigns values to a character string array.
C For this to work, the user must explicitly declare both
C the number of elements in the array and the character size
C of each element of the array when the key is defined by
C the call to FlKEY.
NAMES 2*'Howdy' 'doodie' 'there' 'pardner!'
286
-------
C This assignment example only shows that the name of an
C FIREAD key is not the same as a variable or array name
C in a FORTRAN program. Like the NAMES card, this card
C also allows the user to input data for a character array;
C however, the data goes into a variable called NAMEVAR,
C which is different than the name of the FIREAD key.
NAMEKEY 1=3*'Big Dogs'
4='Little Dogs'
5=5*'Green Dogs'
C There are no more cards, so use of the STOP card
C is ok here. END will also work.
STOP
287
-------
APPENDIX C
UT VERSION 1.3.1
LLRS Technical Note
by
Michael Settles
Computer Sciences Corporation
9311 Groh Road
Grosse lie, Michigan 48138
Prepared for
U.S. Environmental Protection Agency
Office of Research and Development
National Health and Environmental Effects Research Laboratory
Mid-Continent Ecology Division-Duluth
Large Lakes and Rivers Forecasting Research Branch
Large Lakes Research Station
9311 Groh Road
Grosse lie, Michigan 48138
April 1, 1998
288
-------
Contents
Abstract 291
Array Manipulation Subroutines and Functions 292
Time Handling Utilities 292
Error and Message Handling: REPORT 292
Format Independent Reading: FIREAD 294
289
-------
Tables
C1 FORTRAN Callable Array Manipulation Subroutines 293
C2 FORTRAN Callable Time Conversion Subroutines 293
C3 FORTRAN Callable Array Manipulation Functions 293
C4 C Callable Utility Functions 294
C5 REPORT Subroutines 294
C6 FIREAD Subroutines 294
290
-------
Abstract
A number of utility routines were developed to assist with coding efforts involving several
different computer models. These routines were assembled into a common object archive.
Their names, functions, and the details of their uses are described.
291
-------
Appendix C
Diversion 1.3.1
Array Manipulation Subroutines and Functions
Several routines were written to provide for consistent, simple array handling. These routines
and functions are summarized in Tables C1 and C3. Most or perhaps all of these subroutines
and functions have been superseded by FORTRAN 90 intrinsic functions and array or vector
math capabilities. All of these routines were rewritten using these FORTRAN 90 language
features. Users of FORTRAN 90 are encouraged to make direct use of the capabilities of that
language as an alternative to these subprograms. A C callable function is provided to
abbreviate the test for the presence or absence of a file. This function is briefly described in
Table C4.
Time Handling Utilities
A selection of FOTRAN callable subroutines is provided. The subroutines provide for
conversion between the Gregorian year/month/day, Julian day number, and Common Data
Format (CDF) EPOCH representations of time. They are simple interface routines and user
programs. To make use of them, the appropriate modules from Bob Stout's SNIPPETS library1
as well as National Aeronautics and Space Administration's (NASA) CDF library and shareable
object2 must be linked to the executable file. These routines are summarized in Table C2.
Error and Message Handling: REPORT
An error and message handling utility was written. Three FORTRAN callable subroutines were
written to initialize, execute, and finish error handling for user code. These routines are
summarized in Table C5.
1See the site http://www.snippets.org
2See the site http://cdf.gsfc.nasa.gov
292
-------
Table C1. FORTRAN Callable Array Manipulation Subroutines
Subroutine
Description
CVSET(N,CVAL,CARR)
CZERO(N,.CARR)
DVSET(N,DVAL,DARR)
DZERO(N,DARR)
JVSET(N,JVAL,JARR)
JZERO(N,JARR)
SVSET(N,SVAL,SARR)
SZERO(N,SARR)
ZVSET(N,ZVAL,ZARR)
ZZERO(N,ZARR)
Assign to a complete array
Zero a complex array
Assign to a double precision array
Zero a double precision array
Assign to an integer array
Zero an integer array
Assign to a single precision array
Zero a single precision array
Assign to a double complex array
Zero a double complex array
Table C2. FORTRAN Callable Time Conversion Subroutines
Subroutine
Description
EPOCH_TO_JULIAN(EP,JDN)
EPOCH_TO_YMD(EP,Y,MO,D,H,MI,S,MS)
JULIAN_TO_EPOCH(JDN,EP)
JULIAN_TO_YMD(JDN,Y,MO,D)
YMD_TO_EPOCH(Y,MO,D,H,MI,S,MS,EP)
YMD_TO_JULIAN(Y,MO,D,JDN)
Convert CDF EPOCH to Julian day number
Convert CDF EPOCH to Gregorian time
Convert Julian day number to CDF EPOCH
Convert Julian day number to Gregorian date
Convert Gregorian time to CDF EPOCH
Convert Gregorian date to Julian day number
Table C3. FORTRAN Callable Array Manipulation Functions
Function
Description
COMPLEX CVPROD(N,DN,CARR)
COMPLEX CVSUM(N,DN,CARR)
LOGICAL DUNDER(DVAL)
DOUBLE PRECISION DVPROD(N,DN,DARR)
DOUBLE PRECISION DVSUM(N,DN,DARR)
INTEGER JVPROD(N,DN,JARR)
INTEGER JVSUM(N,DN,JARR)
REAL SUNDER(SVAL)
REAL SVPROD(N,DN,SARR)
REAL SVSUM(N,DN,SARR)
INTEGER TRLEN
DOUBLE COMPLEX ZVPROD(N,DN,ZARR)
DOUBLE COMPLEX ZVSUM(N,DN,ZARR)
Product of complex array elements
Sum of complex array elements
Check for floating underflow of a double precision
argument
Product of double precision array elements
Sum of double precision array elements
Product of integer array elements
Sum of vector array elements
Check for floating underflow of a single precision argument
Product of single precision array elements
Sum of single precision array elements
Length of a trimmed string
Product of double complex array elements
Sum of double complex array elements
293
-------
Table C4. C Callable Utility Functions
Function
Description
intfexist(charqfile[])
Test if a file exists
Table C5. REPORT Subroutines
Subroutine
Description
REPINITQ
REPORT(ID,CSEVER,CNAME,CMESS)
REPFINQ
Initialize error handling
Report a message
Complete error handling
Format Independent Reading: FIREAD
A utility for providing input of parameter data in a format free manner is provided. The FIREAD
utility routines are listed in Table C6. See Appendix B for the FIREAD user manual.
Table C6. FIREAD Subroutines
Subroutine
Description
FIINITQ
FIKEY(KEY,VAR,NELEMENTS,DTYPE)
FIGOQ
Initialize FIREAD keys
Define a FIREAD key
Read FIFREAD data from standard input
294
-------
APPENDIX D
AN RCS CHEAT SHEET
LLRS Technical Note
by
Michael Settles
and
Wilson Melendez
Computer Sciences Corporation
Large Lakes Research Station
9311 Groh Road
Grosse lie, Michigan 48138
Prepared for
U.S. Environmental Protection Agency
Office of Research and Development
National Health and Environmental Effects Research Laboratory
Mid-Continent Ecology Division-Duluth
Large Lakes and Rivers Forecasting Research Branch
Large Lakes Research Station
9311 Groh Road
Grosse lie, Michigan 48138
June 25, 2007
295
-------
Contents
Introduction 297
Unix/Linux Directories 297
LLRS Implementation: File Names 298
The Cheat Sheet 298
rlog Commands 298
co Commands 299
ci Commands 299
rcsdiff Commands 299
An Example User Session 300
res Command 300
Conclusion 301
296
-------
Appendix D
An RCS Cheat Sheet
Introduction
The following is a brief overview of the Unix/Linux commands needed for using the Revision
Control System or RCS code management. Several example commands are provided below.
However, this document is not intended as a comprehensive manual of RCS. More detailed
discussions of RCS and source code revision control in general can be found elsewhere.1'2
Unix/Linux Directories
By convention, each application - i.e., each model or utility program - has a directory associated
with it. The relationship between the user's development directory and the RCS repository for
the respective application is shown in the figure below. The Unix/Linux command for creating a
symbolic link to the repository directory is shown in the figure. The user has the username
"warn" in the figure.
Parent directory of source code archive:
/mnt/model/llrs_model/dev/LM3
Subdirectory with revision
files: ./RCS/
User development directory:
/mnt/model/home/wam/LM3
! Symbolic link to
| repository: ./RCS/
In -s/mnt/model/llrs model/dev/LM3/RCS
1Unix in a Nutshell: A Desktop Quick Reference for SVR4 and Solaris 7 - O'Reilly, 3rd Edition,
August 1999.
2Applying RCS and SCCS - O'Reilly, 1st Edition, August 1995.
297
-------
LLRS Implementation: File Names
The following conventions are being followed for application sources files.
FORTRAN modules - i.e., subroutines and functions - are each given separate files. File
names corresponding to FORTRAN modules are given the suffix .F.1 FORTRAN INCLUDE
files containing parameter definitions and common blocks are given the suffix .inc, while cpp
header file names are given the suffix .h.
All standard C function file names are given the suffix .c. C INCLUDE files are given the
standard file suffix .h.
Repository s-files - i.e., those contained in the subdirectory RCS have the additional file
suffix ,v appended to their names.
The Cheat Sheet
rlog Commands
The following commands are used to show revision information.
RCS Command
Explanation
rlog RCS/*
rlog -R RCS/*
rlog RCS/filename
rlog filename
rlog -M.1.1 filename
rlog -R -L RCS/*
rlog -R -L -lusername RCS/*
rlog -d01 -June-1996\<31 -December-
1996 filename
Show detailed revision information for all source files
Show all revision files
Show revision information for source file filename
Show revision information for source file filename
Show revision information for branch 1.1.1
of filename
Show revision information for all files that do not
have locks set
Show files locked by the user username
Show all revisions made to filename between 1-
June-1996and 31-December-1996. Note the
backlash
1 Earlier revisions of FDCHAIN, IPX, and UT were given the file suffix .FORTRAN. Please refer
to http://idl340.grl.epa.gov:1024/modeling/dev.html for a discussion of the development of these
applications.
298
-------
co Commands
The following commands are used to check out or retrieve from the RCS repository.
RCS Command Explanation
co filename
co -q filename
co -r1.1.1 filename
co -11.1.1 filename
co -u1.1.1 filename
Check out source file filename from the default branch
Check out source file filename quietly (no diagnostics) from the default
revision branch
Check out the latest revision of filename from branch 1.1.1
Check out and lock the latest revision of filename from branch 1.1.1
Check out and unlock the latest revision of filename from branch 1.1.1.
Note: You must already have a lock on the corresponding revision
ci Commands
The following commands are used to add files to the RCS repository. All of these commands
assume that the revision corresponding to the modified file has already been locked by the user.
RCS Command Explanation
ci filename
ci -q filename
ci -r1.1.1 filename
ci -f filename
ci -I filename
ci -u filename
ci -u1.1.1 filename
Check in source file filename
Check in source file filename quietly (no diagnostics)
Check in source file to the revision branch 1.1.1. This is usually not
necessary
Force the check in of a source file filename. Check in is not normally
done if no modifications were made
Check in the source file filename, then check out and lock again
Check in the source file filename, then check out (unlocked) again
Check in the source file filename to the revision branch 1.1.1. Note:
You must already have a lock on the corresponding revision
rcsdiff Commands
Because the RCS s-files contain both the source and its revision information, direct comparison
of a revised source file with a RCS s-file is impractical. The RCS command rcsdiff allows the
user to compare a checked out version of a file with any previous revision of that file, for the
purpose of identifying recent modifications to the source.
299
-------
RCS Command
Explanation
rcsdiff filename
rcsdiff-r1.1.1 filename
rcsdiff -r1.1.1.3 filename
rcsdiff -r1.1.1.3 -r1.1.1.4 filename
Show differences between the user file filename and its
most recent revision in the default branch
Show differences between the user file filename and the
latest revision in the branch 1.1.1
Show differences between the user file filename and the
specific revision 1.1.1.3
Show differences between revisions 1.1.1.3 and 1.1.1.4
of the source file filename
An Example User Session
In the example below, the user makes modifications to a source file for the LM3 application.
The symbolic link to the LM3 RCS repository only needs to be made if it is not already present.
The user reviews the revision information for a specific file and checks out two files. The user
intends to modify the files being checked out and locks them at check out time. Only one file is
modified, but the user desires that both files be checked in as new revisions. The modified file
can be checked in normally; however, the unmodified file must be checked in using the -f flag,
otherwise, no new revision will be registered by the source code management. The user then
reviews the revision information for the two files.
%cd
% cd LM3
% In -s ~model/dev/LM3/RCS
% rlog diatoms.F
% co-13.2.13 diatoms.F
% co-13.2.13 greens.F
% emacs diatoms.F &
% rcsdiff diatoms.F
% ci diatoms.F
% ci -f greens.F
% rlog diatoms.F greens.F
# Go to home directory.
# Go to LM3 development directory.
# Make symbolic link to repository.
# See revisions for a file.
# Check out and lock first file.
# Check out and lock second file.
# Edit the file.
# Compare with last checked in revision.
# Check in first file.
# Force check in of second file.
# See revision information of both files.
res Commands
The RCS command res is used by the source code administrator to create s-files, assign access
privileges for modification of source files, set default revision branches, and, in general,
performs those tasks responsible for the creation and organization of source code repositories.
Use of this command is restricted to the source code administrator.
300
-------
RCS Command
Explanation
res -i filename
res -i -awam filename
res -bversion filename
res - Iversion filename
res -uversion filename
res -mversion:comment
res -sstate:version
Create a s-file for filename
Create a s-file for filename and give user warn write access to it
Set the default branch for source file filename to version.
Versions checked in and out for this file will use this version,
unless explicitly specified otherwise
Lock revision branch version. No further revisions to this branch
will be allowed
Unlock revision branch version. Breaking the lock allows new
revisions to be made within this branch
Change the comment for version to comment
Change the development version to a given state. The state
designates the stability of the particular revision and is
determined by the administrator. States can be Rel for
released, Stab for stable, or Exp for experimental. By default,
revision branches are experimental. The label is not used
internally by RCS, but is only intended to help organize the
component revision branches for a given application
Conclusion
A brief review of the RCS directory structure and commands has been provided. Example
commands for examining revision information, retrieving and checking in source code, and
examining differences between source code revisions have been provided. Review of the RCS
administrator's command res has been appended; however, this command is not generally
accessible by source developers and should only be used by the source code administrator.
301
-------
APPENDIX E
DERIVATION OF THE ULTIMATE QUICKEST METHOD IN
ONE DIMENSION
by
Michael Settles
Computer Sciences Corporation
Large Lakes Research Station
9311 Groh Road
Grosse lie, Michigan 48138
Prepared for
U.S. Environmental Protection Agency
Office of Research and Development
National Health and Environmental Effects Research Laboratory
Mid-Continent Ecology Division-Duluth
Large Lakes and Rivers Forecasting Research Branch
Large Lakes Research Station
9311 Groh Road
Grosse lie, Michigan 48138
June 30, 2000
302
-------
Contents
E.1 Introduction 306
E.2 Derivation of the ULTIMATE QUICKEST Method 306
E.3 Implementation of the ULTIMATE QUICKEST Method 315
E.3.1 ULTIMATE QUICKEST Advective Multipliers 315
E.3.1.1 Solutions for Advective Multipliers for the Case u > 0 316
E.3.1.2 Solutions for Advective Multipliers for the Case u < 0 320
E.3.2 ULTIMATE QUICKEST Dispersive Multipliers 323
E.3.2.1 Solutions for Dispersive Multipliers for the Case u > 0 324
E.3.2.2 Solutions for Dispersive Multipliers for the Case u < 0 326
E.3.3 Updating the Concentration 327
303
-------
Figures
E.1 Cell geometry and notation used in this derivation 310
E.2 Interpolation of concentration used for the case u > 0 317
E.3 Interpolation of concentration used for the case u < 0 320
304
-------
Tables
E.1 FORTRAN Variables Used in u > 0 Calculation of Advection and Diffusion
Multipliers 307
E.2 FORTRAN Variables Used in u < 0 Calculation of Advection and Diffusion
Multipliers 308
E.3 FORTRAN Variables Used in Both u > 0 and u < 0 Transport Calculations 309
305
-------
Appendix E
Derivation of the ULTIMATE QUICKEST Method in
One Dimension
E.1 Introduction
The ULTIMATE QUICKEST (UQ) transport scheme developed by Leonard (1979) was
augmented for use with variable grid sizes by Chapman (Chapman et al., 1997). The resulting
transport algorithm was coded in FORTRAN and applied to the Chesapeake Bay (CE-QUAL-
ICM) model (Cerco and Cole, 1994; Cerco and Cole, 1995). The same transport scheme was
adapted for use in the Lake Michigan Mass Balance Project (LMMBP) and the IPX pollution
calculation (Velleux et al., 2001; Chapman et al., 1997).
The box model calculation performs numerical integration of spatially varying concentrations
using quadratic interpolations of the concentration to infer its values at flow faces and analytic
integration over the space- and time-variables to account for changes in the concentration at the
cell wall during the course of the time step. This appendix provides a step-by-step derivation of
the UQ method in one dimension (horizontal) and its implementation in the LM3 water quality
model transport calculations. This work was previously performed by Leonard (1979) and by
Chapman (Chapman et al., 1997).
Associations between key FORTRAN variables and the symbols used in the derivation are
summarized in Tables E.1 through E.3.
E.2 Derivation of the ULTIMATE QUICKEST Method
Derivation of the UQ transport method is performed here in one dimension1 and assumes the
advection-diffusion equation
1A more precise interpretation is that the transport was performed through one dimension of a
two- or three-dimensional system. Use of the one-dimensional transport equation was assumed
to be approximately correct throughout this derivation. A two-dimensional UQ calculation had
been done by Hall and Chapman (1985).
306
-------
Table E.1. FORTRAN Variables Used in u > 0 Calculation of Advection and Diffusion
Multipliers
FORTRAN Variable
Expression
DEN1 +
DEN2+
DEN3+
GRAD1 +
1
-(AxM + 2AXi + Axi+1)(AxM
1
-(AXi + Axi+1 )(AxM
+ Ax
i+1
GRAD2+
GRAD3+
TERM1 +
TERM2+
TERM3+
T2+
T3+
TP1 +
TP2+
TP3+
V
Ax.
Axi+Axi+1
AX;
Axi+Axi+1
y(Axi_1+2Axi-Axi+1)
307
-------
Table E.2. FORTRAN Variables Used in u < 0 Calculation of Advection and Diffusion
Multipliers
FORTRAN Variable
Expression
DEN1
1
-(AXj + 2Axi+1 + Axi+2)(AXi
DEN2
--(Axi+1+Axi+2)(Axi+Axi+1)
DEN3
Axi+2 )(AXj + 2Axi+1 + Axi+2
GRAD1
GRAD2
Gr
GRAD3
TERM1
G;
'i+2
TERM2
TERMS
'i+2
T1
AX;,
Axi+Axi+1
T2
Ax;
Axi+Axi+1
TP1
-y(3Axi+1+Axi+2)
TP2
^(AXi-2Axi+1-Axi+2)
TP3
308
-------
Table E.3. FORTRAN Variables Used in Both u > 0 and u < 0 Transport Calculations
FORTRAN Variable Expression
A A
ALFA
TAt 1
COUR
DIFF
DLT
DTM
SF1
SF2
V1
V2
c
r
At
9tm
Qx
Ax;2
Vi"
Vi"+1
where § is some concentration, u is the velocity and r is the dispersion coefficient. Source-sink
terms are assumed to be negligible. The cell geometry and notation used in this derivation are
shown in Figure E.1. Integrating (E.1) overtime and the volume of the ith cell gives:
+AX2 tn+1 +AX/2
f +X f f+Xj f r-
\ dM dtat<|> = [ dM dt -a£(u
J -Ax2 Jtn l J-A2 Jtn L ^V
where AXj = xi+1 - Xj is the cell size, £ = x - Xj is the distance from the cell center, d-q = 3X, and t" is
the value of time at the beginning of the nth time step. Carrying out the integration gives the
result:
+Ax/2 / . \ r tn+1
\ r r -,
- f) = J^ dt[-(uri - u,^,) + rr^r - T,^,] (E.3)
309
-------
4>r
>i-2
4>M
Xj-2
Xj+1
X|
Xr
U|
r,
Ur
rr
Figure E.1. Cell geometry and notation used in this derivation. §\ represents constituent
concentrations that have been volume-averaged within each cell. The variables $r and §\
represent values of the concentration at the right and left cell walls. Space coordinates Xj
represent the cell centers, and xr,i coordinates of the cell walls. Velocities of the water at
the right and left cell faces ur,i are presumed to be positive to the right, as indicated by
the arrows. rr,i are the respective dispersion coefficients.
where (|)n is the concentration at the nth time step, and the subscripts r, I refer to values at the
right and left cell faces, respectively. Equation E.3 is broken into the contributing integrals:
.
-*n)
(E.4)
"2 =
(E.5)
(E.6)
where we have assumed that the velocity u and dispersion coefficient r are constant over the
domains of integration.
310
-------
The integral h is evaluated by first Taylor expanding the concentration about the point xh giving:
n+1 . jn s ~i i n e~, i ,. ,x
(E.7)
where the notation 3^ has been used to represent the value of the derivative
Derivative factors are constant with respect to the integration over £. Terms antisymmetric in £,
integrate away, leaving:
AX -. AX
(E.8)
The second and fourth terms can be combined:
AX3
24 ^VT T / 24 q IT 24
uAt
Ax3
24 ~ Ax 24
(E.9)
where At = tn+1 - tn, the relation (E.1) is used to replace the time derivative, and higher order
contributions in the time series expansion of § and 0(4) dispersion contributions are dropped.
Throughout, the abbreviated notation Axn = (Ax)n is used. Divided difference representations1 of
the second derivatives of the concentration at the right and left cell walls are:
(E.10)
Ax
Substituting (E.9) into (E.8) gives the result
(E.12)
Leonard's (1991) choice for representing the curvature of the concentration profile is practical
and applicable but is also specific to the case u > 0. In the more general case, the CURV
expressions should be related with the second space derivatives of concentration.
311
-------
where c is the Courant number
Ax
The second integral (E.5) is evaluated by first Taylor expanding the concentration about time tn
1 2 ^\
in (i *n \ -. i n ' (± ±n\ ~,2in
-i -(t-t )5ti --r(t-t i sti -
^ ) (E.14)
Next use (E.1) to replace the time derivatives, giving:
I2=u
(E.15)
= Ax . c| r --Ax . c. GRAD, +-Ax2a . CURV +-Ax2c2CURV
^2 2 6
-f +1AX . c . GRADr -lAx2a - CURVr - 1 Ax2c2CURVr
using the dispersion number a = r At/Ax2, and where
GRADr = ^i+1 ~ ^
Ax
GRAD, = 1 (E18)
The third integral (E.6) is similarly evaluated by first expanding the concentration $ in time about
tn.
312
-------
Again, use (E.1) to replace the time derivative with a space derivative. The dispersion
contribution to the time derivative T3X2 gives terms 0(3) in space and can be ignored, giving:
= Ax2a| GRADr --Ax . CURVr -GRAD, +-Ax . CURV | (E20)
^ r 2 r I 2 IJ
Substituting for the terms in (E.3) gives an expression free of integrals, relating the
concentration to its derivatives.
24
Ax. c{$- c. GRAD, +a- CURV+
1 2 '2 '6
o
AY AY AY
$ -_ c. GRADr +^-a CURVr +^
2 2 6
/" Ay Ay A
+ Ax2a GRADr - cCURVr -GRAD, + cCURV .__,.
^ 2 2 ) (E.21)
The value of the concentration at the right wall §, is simply derived by Taylor expanding its value
about the center of the cell which is represented by §\ at the coordinate Xj.
2
(E.22)
The values of the curvature at the cell center dx2§\ and right cell face dx2$r are equal and
determined by the assumed parabolic interpolation. The similar case for the left wall
concentration is derived by substituting fa -» ^.2, $\ -^ fa, and fa^ -^ fy, giving:
313
-------
Ax'
(E.23)
Substituting for §T and (|)| and collecting terms gives expressions for the concentration at time tn+i
as a function of known quantities at the previous time step.
in+1 in
= ^
+ C
+ C
a CURV +
- C
CURVr- c. GRADra- CURVr
s 2 2
- C
Ax'
c2 . CURV,
[AY AY
GRADr - c . CURV -GRAD, + c CURV
r 2 ' 2 '
c(CURVr -
(E.24)
I n+1 _ in
+ C
-(<|>M + ^l1) - (1 - c2 - 3a)CURX - c GRAD,
- C
AY AY
GRADr - c . CURV -GRAD, + c CURV
r r I '
(E.25)
This is the result offered by Leonard (1991).
314
-------
E.3 Implementation of the ULTIMATE QUICKEST Method
Implementation of (E.25) in the ICM and more recently LM3 water quality transport code has
been accomplished by Chapman (Cerco and Cole, 1994; Chapman et al., 1997) and allows for
variable grid spacing. Integration of the advection-diffusion differential equation (E.1) over the
time step At gives the result
a
(GRADr -GRAD,)
(E.26)
where (|>r and $\ are the time averaged concentrations at the right and left cell walls with UQ
corrections, accounting for quadratic interpolation of the concentration, and change in the
concentration at the cell face over the course of the time step At.
The solution for (|)n+1 is found by calculating the time averaged concentrations and gradients or,
equivalently, the diffusive fluxes at the cell faces in (E.26) and integrating them over one time
step. In the FORTRAN code, this final step makes use of the volume integrated version of
(E.26) by associating the time rate of change of mass with flow ((j>r) and dispersion flux. The
transactional symmetry of the cells (the left face of cell i is the same as the right cell face of cell
i-1) is exploited so that time averaged concentrations and diffusive fluxes only need to be
calculated at either the left or the right face of each cell. Following Chapman's (Chapman et al.,
1997) convention, estimates for the right cell face are used in this derivation.
E.3.1 UL TIMA TE QUICKEST Advective Multipliers
Rearranging and combining terms in the result (E.25) gives:
j.n+1 in
+ c
- c
+ Ax a(GRADr - GRAD,)
(E.27)
Using §"+/[ + $" - c($r + fy}) + ... from (E.26), the time averaged concentration at the right cell
wall is as follows:
315
-------
CURV
(E.28)
The results (E.25) and (E.28) are generally applicable to flow moving either from left to right -
as has been assumed up to this point - or from right to left across a cell face if the Courant
number c changes sign with u and if representations of the gradient and curvature terms are
modified to reflect a concentration profile that is interpolated upstream of the cell wall.
E.3.1.1 Solutions for Advective Multipliers for the Case u > 0
Solution for the case u > 0 makes use of a quadratic interpolation of the concentration $ that is
upstream of the cell wall xr (Figure E.2). Next, polynomial representations of the concentration,
gradient, and curvature terms such that the solution for ^ - where the superscript"+" is used
to denote results specific to the case u > 0 - can be written:
FAt --(Ax2 -u2At2)
r^ \ '
(E.29)
where P^x) and P2(x) are first- and second-order Lagrange interpolation polynomials.
P, (*) =
X
x
X - X,
\: . A A.:
(E.30)
~ x
|
(x-xi+1)(x-xM)
T
(E.31)
As before, $" are the uncorrected concentrations averaged over the respective cell volumes at
time tn. Further, the UQ corrected concentration at the right cell face can be expressed as a
weighted sum of the concentration being interpolated.
Pi+1
(E.32)
316
-------
xr ^
ur
rr
Figure E.2. Interpolation of concentration used for the case u > 0.
Evaluating the derivatives of P2(x) and substituting into (E.29) gives:
X
(Kn
Jx=x,
uAt
2x X
2x
i-1 jn
T^i
2x X
rAt--(Ax|2 -u2At2)
r^ \ '
(E.33)
317
-------
The coefficients of $" in this expression are simply evaluated. Referring to Figure E.2, the
numerator of the coefficient of (|)i+1 in Equation E.33 is:
2X -X: -XM _ = (X -X=) +(X-XM) = AX:
i i-n x-xr v i /x=xr V M /x=xr
+ AX: + AX: 1 = (3AX: + AX: 1
I 9 I 9
(E.34)
The denominator of the respective term is similarly calculated.
; Axi+1
i + AxM
(E.35)
The expression, for §r (E.33) can then be written as:
AX
j + Axi+1
j + Axi+1
uAt
J_
2
-(AxM +2AXj +Axi+1)(AxM+AXi)
-(AxM+2Axi-Axi+1)
-(Axi+Axi+1)(AxM+Axi)
l(Ax,1+3AXi)
j + Axi+1
j^ + 2AXj + Axi+1
Ax, 5x2 6
1
-i
- ( AxM + 2AXj + Axi+1 ) ( AxM
1
Axi+1 ) ( AxM
1
Axi+1) (AXj.! + 2AXj + Axi+1
(E.36)
where 5x is some characteristic length estimated as the minimum of the upstream and
downstream cell sizes.
318
-------
Values of the UQ advective multipliers V can be found by equating the coefficients of $" in
Equations E.32 and E.36. Approximating 5x/AXJ = 1 in the physical dispersion terms (Chapman,
private communication) gives:
T+ =
Ax
i+1
Ax
+
i+i
uAt
x
M
i - Axi+1
(E.37)
rAt
7(AxM+2Axi+Axi+1)(AxM+Axi)
(E.38)
Ax
+
2Ax2
"TAt 1 t. 2\
_8x2 6^ ° /_
uAt
2
i AY -i- ^
p V 1-1
\Xj)
i+1
Axi+1 ) ( AxM
Ax
i+1
(E.39)
Numerators and denominators of these coefficients are represented by the FORTRAN variables
shown in Table E.1. As before, the additional factor of 5x present in the definitions of the
numerator terms represents some typical grid size and is presented for purposes of
computational convenience. Scale factors representing 5x and AXj2 are assigned FORTRAN
variables as shown in Table E.1. Using the FORTRAN variables shown in Tables E.1 and E.3,
the UQ advective multipliers can be written as:
SF2 . ALFA--COUR TP
TERMf =
DEN
(E.40)
SF2 . ALFA--COUR TP2H
TERM2+ = T2++ 2
DEN2+
(E.41)
319
-------
TERM3+ = T3
SFA . ALFA --COUR TP3
DEN3
(E.42)
which are directly identifiable in Chapman's implementation of the UQ code (Chapman et al.,
1997).
E.3.1.2 Solutions for Advective Multipliers for the Case u < 0
Solution for the case u < 0 makes use of a quadratic interpolation of the concentration § that is
downstream of the cell wall xr (Figure E.3). Making use of the superscript"-" to denote results
that are specific to the u < 0 case, we have the following:
uAt
A
TAt--(Ax2 -u2At2)
(E.43)
-A^Pi+l
Xi+2
A
Ur
rr
Figure E.3. Interpolation of concentration used for the case u < 0.
where P^x) is given in (E.30) and P3(x) is, by analogy to P2(x), a second-order Lagrange
interpolation polynomial Ps(x;i) = P2(x;i+1).
320
-------
i ~ Xi+2 i
|
(x-xi+2)(x-xi)
~ X
i+2
~ X
|
(Xi+2 ~ Xi+1 j (Xi+2 ~ Xi
(E.44)
As before, substitution of P^x) and P3(x) into (E.43) gives an expression for the concentration at
the right cell face averaged over the time step At.
X x X
2x xi+2 Xj
uAt
2x xi+1 xi+2
V Y I I Y Y I I Y Y
Ai+1 Ai+2/V i+1 i/ VAi+2 Ai
rAt--(Ax|2 -u2At2)
R V ' /
Xi+1 Xi+2J(Xi+1 Xi
Di.-i +
(i Xi+2J(Xi Xi+1,
2
(Xi+2 Xi+
n+2
(E.45)
Ax
-------
This solution is expressed as a weighted-sum of the concentration in the interpolated cells.
1 = 'i
2Ax + Ax
i+i
i+2
Ax
i+1
(E.48)
AX;
Ax
i+1
2Ax2
"TAt
1 /
_2\
Lsx2 6V ^J
1<-
uAt
2
(i+1 +Axi+2)(Axi
1
2
+
(3Axw+Axi+2)~
Axi+1)
(E.49)
2Ax,2
T"+2 =
TAt
uAt
T(Axi+1 +Axi+2)(AXi +2Axi+1 +Axi+2)
(E.50)
The FORTRAN variable representations of these expressions are given in Table E.2 with the
results:
SF2 . ALFA--COUR TP1
TERMr = TT +
DENt
(E.51)
SF2 . ALFA--COUR - TP2
TERM2- = T2- +
DEN2-
(E.52)
SF2 . ALFA--COUR TP3
TERMS' =
DENS"
(E.53)
which are, again, directly identifiable in Chapman's implementation of the UQ code (Chapman
eta/., 1997).
322
-------
E. 3.2 UL TIM A TE QUICKEST Dispersive Multipliers
Chapman's implementation of UQ (Chapman et al., 1997) for dispersion employs a method
similar to that already discussed for advection; however, UQ dispersion multipliers are derived
not for a time-averaged concentration at the right cell face, but for the mass flux. To the first
order, we have that the [negative of the] time rate of change of mass is:
dv<|> = - dv5t^ (E.54)
where m is the mass present within the cell and the integral Jvdv is over volume. The basic
equation of continuity relating total flux density, mass/area/time to concentration in three
dimensions is simply:
V - f = -5t4>
(E.55)
where V is the divergence operator, jT is the total (advective and dispersive) flux density, and $
is concentration. Using this result in (E.54) gives:
f - - (E.56)
-atm = - dvV.jT
J V
By Gauss' divergence theorem, this is:
-atm = -f ds f (E57)
J s
It relates change in mass over time to the surface integral S over the cell face of the total flux
density jT. For a one-dimensional flux in the x direction, Equation E.57 gives:
-5tm = -(ArjTr-A,jTI) (E.58)
where Aris the area of the right cell face, and jT,r is the total flux density flowing through the right
cell face. Next, the advective ja and dispersive jd contributions to the total flux density are
examined.
T = a + d
Breaking up the flux density into its advective and dispersive components gives:
-5tm = - [Ar (ja r + jd r) - A, (ja, + jd,)] (E.60)
323
-------
Comparisons of (E.1), (E.55), and (E.59) reveals the dispersive flux contribution to be
Jd =
(E.61)
The dispersive contribution to the change in mass within a cell is given by:
(mn+1 - mn
V
Dispersive
r tn+1
= f dt
J tn
(E.62)
which can be written in terms of the left and right dispersive mass fluxes
(mn+1 -mn) = At(Gr-G,)
V /Dir -~i"~ v ' !/
'Dispersive
where:
Gr =
G -
(E.63)
(E.64)
(E.65)
E.3.2.1 Solutions for Dispersive Multipliers for the Case u > 0
As before, the flux at the right cell face is evaluated by assuming a second-order Lagrange
polynomial representation of the concentration (|)(x) = P2(x) given in (E.31) and shown in Figure
E.1. Substitution into (E.64) gives one solution for the flux at the right cell face.
Gr+ = Arrr
2x - x - X
M n
~
(XM - Xi+1 ) (XM - Xj
- X
M
2x - x, - XM
(E.66)
In analogy to (E.32), a second solution for Gr+ is proposed which is a linear combination of
concentrations used in the interpolation P2(x).
324
-------
Gr = Gj_1([)j_1
(E.67)
Comparing the coefficients of $" in (E.66) and (E.67) gives expressions for the UQ dispersive
multipliers
2x - X -
(E.68)
- A r
i ~ 'V r
2x xi+1 XM
x=x,
(E.69)
2x - x, - x,^
~ x
x=x,
(E.70)
As for the case of the UQ advective multipliers, evaluation at the right cell face gives:
J_
2"
_ .
vJj_-| - r^fL r
-(AxM
Axi+1)(AxM
>+ = Arrr 1
-(AxM
--(AXj +Axi+1)(AxM
(3Axi+AxM)
Axi+1 ) ( AxM + 2AXj + Axi+1
(E.71)
(E.72)
(E.73)
Associations with FORTRAN variables are provided in Table E.1, giving:
GRADf =
DIFF A
DEN1+ . SF1
(E.74)
325
-------
GRAD2+ =
DIFF A TP2H
DEN2+ . SF1
(E.75)
GRAD3+ =
DIFF A TP34
DEN3+ . SF1
(E.76)
which are, once again, readily identifiable in the FORTRAN transport code.
E.3.2.2 Solutions for Dispersive Multipliers for the Case u < 0
In analogy to (E.66), a solution for G,r is proposed:
- = Arrr
xi+2j n
Tj
i Xi+2J(Xi Xi
2x - X| - xi+2
Xi+2J(Xi+1
c
2x X
(x - x Wx -
V i+2 i+1 / v i+2
H+2
x=xr
Again, a second solution for Gr" is proposed:
G~ =
(E.77)
(E.78)
Evaluation of (E.77) at the right cell face gives the associated values for the UQ dispersive
multipliers for the case u < 0.
GT =
+Axi+2)
2Axi+1 + Axi+2) (Ax, + Axi+1
(E.79)
-(AXj -2Axi+1 -Axi+2)
-T(AXI+I +Axi+2)(Axi
(E.80)
J_
I
J^
4
Ax
i+2
2Axi+1 + Axi+2
(E.81)
326
-------
Substituting with the FORTRAN variables shown in Tables E.2 and E.3 gives:
(E.82)
DENr . SF1
(E.83)
DEN2- . SF1
(E.84)
DENS' . SF1
E.3.3 Updating the Concentration
Solution for the updated concentration §"+1 is straightforward. Equation E.26 is consistent with
upwind difference advection of the time-averaged, UQ corrected concentrations (j>r and cj),.
Advection and dispersion contributions to the mass derivative for each cell can, therefore, be
calculated:
a m n 7 nl^n n (E85)
c?trn = u,(b| Ur(br + or o,
I I T | | T | [ |
where Q, and Qr are the flows through the left and right faces of the cell.
Implementation of this in FORTRAN code is performed separately at the upstream and
downstream cells of each flow face. In LM3, the following calculation is performed
DTM(IB) = DTM(IB)-Q CADV + CDIFF (E.86)
DTM(JB) = DTM(JB) + Q CADV - CDIFF (E-87)
where IB is the upstream cell index, JB is the downstream cell index, and Q is the flow through
the respective cell face. The advected concentration CADV and dispersion mass flux CDIFF
are calculated using the relations (E.32), (E.47), (E.67), and (E.78) which are readily identified in
the FORTRAN code.1
1The advection calculation actually makes use of an intermediate FORTRAN variable FLUXC
used to perform additional numerical corrections to the UQ calculation.
327
-------
CADV = TERM1 CONC1 + TERM2 CONC2 + TERMS CONC3 (E.88)
CDIFF = GRAD1 CONC1 + GRAD2 CONC2 + GRAD3 CONC3 (E 89)
where CONC1, CONC2, and CONC3 represent the concentrations of the cells about which the
UQ interpolation is performed. The ICM method is most similar but combines those advection
and diffusion factors that multiply values of the concentration unique to each cell before
performing that multiplication.
Update of the concentration in each cell is then calculated as:
x/n+i
vi
(E.90)
where v" represents the volume of cell i at time t". The FORTRAN implementation of this is:
CSTAR = ^L+DLT.DTM
Associations between the FORTRAN variables and the symbolic notation are provided in Table
E.3.
References
Cerco, C. and T. Cole. 1994. Three-Dimensional Eutrophication Model of Chesapeake Bay,
Volume I: Main Report. U.S. Army Corps of Engineers, U.S. Army Engineer Waterways
Experiment Station, Baltimore, Maryland. Technical Report EL-94-4, 658 pp.
Cerco, C. and T. Cole. 1995. User's Guide to the CE-QUAL-ICM Three-Dimensional
Eutrophication Model. U.S. Army Corps of Engineers, U.S. Army Engineer Waterways
Experiment Station, Vicksburg, Mississippi. Technical Report EL-95-15, 2,420 pp.
Chapman, R.S., T.M. Cole, and T.K. Gerald. 1997. Development of a Hydrodynamic/Water
Quality (POM-IPX) Linkage for the Lake Michigan Mass Balance Project. Final Report. U.S.
Environmental Protection Agency, Office of Research and Development, National Health
and Environmental Effects Research Laboratory, Mid-Continent Ecology Division-Duluth,
Large Lakes Research Station, Grosse lie, Michigan. 63 pp.
Hall, R. and R. Chapman. 1985. Two-Dimensional QUICKEST: Solution of the Depth-
Averaged Transport Dispersion. U.S. Army Corps of Engineers, U.S. Army Engineer
Waterways Experiment Station, Vicksburg, Mississippi. Technical Report EL-85-3, 33 pp.
Leonard, B. 1979. A Stable and Accurate Convective Modelling Procedure Based on Quadratic
Upstream Interpolation. Comp. Methods Appl. Mechan. Engin., 19(1):59-98.
328
-------
Leonard, B. 1991. The ULTIMATE Conservative Difference Scheme Applied to Unsteady One-
Dimensional Advection. Comp. Methods Appl. Mechan. Engin., 88(1):17-74.
Velleux, M., S. Westenbroek, J. Ruppel, M. Settles, and D. Endicott. 2001. A User's Guide to
IPX, The In-Place Pollutant Export Water Quality Modeling Framework. U.S. Environmental
Protection Agency, Office of Research and Development, National Health and
Environmental Effects Research Laboratory, Mid-Continent Ecology Division-Duluth, Large
Lakes Research Station, Grosse lie, Michigan. 179 pp.
329
------- |