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-,   M—CH,—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. GRADr—a-  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

-------