EPA/600/8-86/01 0
April 1986
TUPOS A MULTIPLE SOURCE GAUSSIAN DISPERSION
ALGORITHM USING ON-SITE TURBULENCE DATA
by
D. Bruce Turner
Meteorology and Assessment Division
Atmospheric Sciences Research Laboratory
Research Triangle Park, NC 27711
and
Thomas Chico and Joseph A. Catalano
Aerocomp, Inc.
3303 Harbor Boulevard
Costa Mesa, CA 92626
Contract No. EPA 68-02-3750
ATMOSPHERIC SCIENCES RESEARCH LABORATORY
OFFICE OF RESEARCH AND DEVELOPMENT
U. S. ENVIRONMENTAL PROTECTION AGENCY
RESEARCH TRIANGLE PARK, NC
-------
NOTICE
The information in this document has been funded by the United
States Environmental Protection Agency under contract No. EPA
68-02-3750 to Aerocomp, Inc. It has been subject to the Agency's
peer and administrative review, and it has been approved for
publication as an EPA document.
Mention of trade names or commercial products does not consti-
tute endorsement or recommendation for use.
AFFILIATION
Mr. D. Bruce Turner is a meteorologist in the Meteorology and
Assessment Division, Environmental Protection Agency, Research
Triangle Park, North Carolina. He is on assignment from the
National Oceanic and Atmospheric Administration, U. S. Department
of Commerce. Mr. Joseph A. Catalano is the technical director of
Aerocomp, Inc., Costa Mesa, California and Mr. Thomas Chico is a
research meteorologist there.
i i
-------
PREFACE
One area of research within the Meteorology and Assessment
Division is development, evaluation, validation, and application
of models for air quality simulation, photochemistry, and meteoro-
logy. The models must be able to describe air quality and atmos-
pheric processes affecting the dispersion of airborne pollutants
on scales ranging from local to global. Within the Division, the
Environmental Operations Branch adapts and evaluates new and exist-
ing meteorological dispersion models and statistical technique
models, tailors effective models for recurring user application,
and makes these models available through EPA's User's Network for
Applied Modeling of Air Pollution (UNAMAP) system.
Although resembling previous Gaussian dispersion models, TUPOS
introduces dispersion as functions of turbulence at plume level,
layer by layer plume rise, and plume penetration above the mixing
height. Multi-level meteorological information must be furnished
by the user. Output is hourly concentrations written to an exter-
nal file and optionally a second file with concentration contri-
butions from each source.
The first four sections of this document are directed to
managers and project directors who wish to evaluate the appli-
cability of the model to their needs. Sections 5 and 6 are
directed to engineers, meteorologists, and other scientists who
are required to become familiar with the details of the model.
Finally, Sections 7 through 9 are directed to persons responsible
for implementing and executing the program.
Comments and suggestions regarding this publication should be
directed to:
Chief, Environmental Operations Branch
Meteorology and Assessment Division (MD-80)
Environmental Protection Agency
Research Triangle Park, NC 27711.
i i i
-------
Although attempts are made to thoroughly check computer
programs with a wide variety of input data, errors are occa-
sionally found. Revisions may be obtained as they are issued
by completing and returning the form on the last page of this
gu i de.
Technical questions regarding use of the model should be
directed to (919) 541-4564. Users within the Federal Government
may call FTS 629-4564. Copies of the user's guide are available
from the National Technical Information Service (NTIS), Spring-
field, VA 22161.
The magnetic tape containing FORTRAN source code for TUPOS is
contained (along with other dispersion models) in UNAMAP (Version
6), which will become available from Computer Products, NTIS,
Springfield, VA 22161 (phone number: (703) 487-4763).
1 v
-------
ABSTRACT
TUPOS arid its postprocessor, TUPOS-P, form a Gaussian model
which resembles MPTER but offers several technical improvements.
TUPOS estimates dispersion directly from fluctuation statistics
at plume level and calculates plume rise and partial penetration
of the plume into stable layers using vertical profiles of wind
and temperature. The model user is thus required to furnish
meteorological information for several heights above-ground in a
separate input file.
TUPOS can be used for short-term (hours to days) impact
assessment of inert pollutants from single or multiple sources
and can be expected to have greatest accuracy for locations
within 10 km of the source. Although TUPOS will make computations
for receptors having any ground-level elevation, it is not intended
as a complex terrain model, but rather as a model for calculations
over flat or gently rolling terrain. TUPOS will optionally treat
buoyancy-induced dispersion but does not include building downwash,
deposition, or fumigation.
The maximum number of point sources and the maximum number
of receptor locations are easily adjusted at the time of program
compilation and so have no specific limit. The program as listed
in the appendix allows for 25 sources and 180 receptors.
Output from TUPOS consists principally of tape or disk con-
centration files which are then analyzed and summarized by the
postprocessor, TUPOS-P. An hourly concentration file is auto-
matically created by TUPOS; the user has the option of creating a
partial concentration file.
v
-------
CONTENTS
Preface i i i
Abstract v
F igures ix
Tables x
Symbols and Abbreviations xi
Acknowledgments xiii
Executive Summary 1
1. Introduction 3
2. Data-Requirements Checklist 6
Program control data 6
Emission data 7
Meteorological data 7
Receptor data 8
3. Features and Limitations 9
4. Basis for TUPOS 13
Meteorological parameters 14
Gaussian plume methodology 15
Plume rise 15
Dispersion 16
5. Technical Description 18
Meteorological parameters 18
Gaussian plume equations 19
Plume rise 20
Plume penetration above the mixing height . 29
Distance to final rise 31
Gradual plume rise 31
Dispersion parameters 31
Other considerations 34
6. Example Problem 39
7. Computer Aspects of the Model 44
System flow 44
Structure of TUPOS 46
v i i
-------
CONTENTS (Continued)
Non-standard features 51
8. Input Data Preparation 54
Record input sequence 54
Intricacies of the data 60
Multi-level meteorological data file .... 65
Optional hourly emission data file 67
9. Execution of the Model and Sample Test 68
Execution 68
Sample test 70
Concentration files 77
Error messages and remedial action 82
References 91
Append i ces
A. Listing of FORTRAN Source Code for TUPOS .... 95
B. Listing of FORTRAN Source Code for METVER .... 144
C. Listing of FORTRAN Source Code for LSTMET .... 147
D. Listing of FORTRAN Source Code for INMET .... 151
-------
FIGURES
Number Page
1 Schematic of multi-layer approach incorporated
in TUPOS 14
2 Coordinate system showing Gaussian distribution in
the horizontal and vertical 21
3 Flow diagram for the plume rise algorithm 23
4 "Top hat" distribution for plume penetration .... 30
5 Flow diagram for calculating penetration of plume
in relation to mixing height 32
6 Adjustment of plume height due to terrain 37
7 Source/receptor geometry for the example problem . . 40
8 System flow for TUPOS 45
9 TUPOS program structure 47
10 TUPOS flow diagram 52
11 Two examples of the polar coordinate grid option . . 64
12 Sample job stream for TUPOS 69
13 Annotated output for the sample test 72-76
i x
-------
TABLES
Number Page
1 Comparison of TUPOS to Other Commonly Used Air
Ouality Models 11
2 Differences in Approach Between MPTER and TUPOS ... 12
3 Definition of Variables Used in Gaussian Plume
Equations 20
4 Multi-Level Meteorological Data for the Example
Problem 41-42
5 Point Source Emission Inventory for the Example
Problem 43
6 Input/Output Units Used by TUPOS 46
7 Record Input Sequence for TUPOS 54-59
8 Record Layout for the Meteorological Data File ... 66
9 Record Layout for the Optional Hourly Emissions
File 67
10 Input Data for the Sample Test 71
11 Record Layout for the Hourly Concentration File . . . 78-80
12 Record Layout for the Partial Concentration File . . 81
13 Error Messages and Remedial Action 82-90
x
-------
SYMBOLS AND ABBREVIATIONS
Dimensions are abbreviated in terms of the
International Standard (SI) for units:
Mass = grams (g), Length = meters (m), Time
= seconds (s), and Temperature = Kelvin (K).
d -- stack inside diameter (m)
dz — the shortest distance between the effective plume
height and a bounding surface (m)
Er — ground level elevation of receptor (m)
Eg — ground level elevation of source (m)
f — stack-tip downwash correction factor
F — buoyancy flux parameter (m^/s^)
— residual buoyancy at bottom of layer (m4/s^)
FQ — initial buoyancy flux (m4/s^)
Fr -- Froude Number
Fr — residual buoyancy (m4/s^)
Ft — terrain adjustment factor (m)
fy — nondimensional function of travel time for
horizontal dispersion
fz — nondimensional function of travel time for vertical
di spersion
g — acceleration due to gravity (m/s^)
H -- effective height of plume (m)
h — stack height above ground (m)
Ha — adjusted effective height (m)
Hb -- plume bottom (m)
Ht — plume top (m)
L — mixing layer depth (m)
0 — emission rate (g/s)
r --a ratio used to calculate the height level of
maximum concentration
s — stability parameter (s~2)
t — travel time (s)
Ta -- ambient air temperature (K)
xi
-------
SYMBOLS AND ABBREVIATIONS (continued)
Th — ambient air temperature at stack top (K)
Ts — stack gas temperature (K)
Uft — wind speed at stack top (m/s)
vs — stack gas exit velocity (m/s)
x -- downwind distance (m)
Xf — distance to final rise (m)
y -- crosswind distance (m)
z — height above ground (m)
Zfc, — height of base of current layer (m)
Z(- — height of top of current layer (m)
AH — plume rise (m)
AT — temperature difference between ambient air and
stack gas (K)
Xp — pollutant concentration (g/m"^)
60/6z — vertical potential temperature gradient of a layer
of air (K/m)
tt ~ pi , 3. 14159
aa — standard deviation of the horizontal wind angle
(d imens i onless)
ae — standard deviation of the vertical wind angle
(d imens i onless)
ov — standard deviation of the horizontal crosswind
component of the wind (m/s)
aw — standard deviation of the vertical component
of the wind (m/s)
ay — lateral dispersion parameter (m)
oz -- vertical dispersion parameter (m)
°ze — effective vertical dispersion (m)
azo — initial vertical dispersion (m)
x i i
-------
ACKNOWLEDGMENTS
The authors wish to express their appreciation to Mr. John S.
Irwin and Mr. William B. Petersen for helpful comments regarding
aspects of the work presented here. The authors are also indebted
to Mr. Frank V. Hale III who designed the initial structure of
TUPOS. Portions of this text were excerpted from the MPTER and
PTPLU user's guides. ^
The secretarial assistance of Sylvia B. Coltrane is greatly
apprec i ated.
In addition to the listed authors of the user's guide, other
Aerocomp personnel made important contributions to the document.
Ms. Sarah Cunningham prepared all technical illustrations and
produced the final document. Editorial review was provided by
Ms. Vicki Catalano.
Support of Aerocomp by the Environmental Protection Agency
Contract No. 68-02-3750 is also gratefully acknowledged.
x i i i
-------
EXECUTIVE SUMMARY
TUPOS (Turbulence Profile ^igmas) is a Gaussian plume steady-
state model which calculates dispersion using measured (or infer-
red) turbulence data (wind fluctuation standard deviations) at
plume height. The model can be used to assess air pollutant
impact from single or multiple sources over level or gently
rolling terrain and can be expected to have greatest accuracy for
locations within 10 km of the source. Gaussian assumptions and
techniques are used to perform concentration estimates hour by
hour, considering each hour as a steady-state period.
Information must be furnished by the user for each simulated
hour at several levels for the five variables: ambient air
temperature, wind direction, wind speed, standard deviation of
wind azimuth, and standard deviation of wind elevation angle.
These parameters are interpolated vertically for calculating
plume rise, dilution, plume dispersion, and transport. This
profile information must be provided in sufficient detail so that
linear interpolation between levels is reasonable. One of the
levels specified must be that of the mixing height.
Source parameters are physical stack height above ground,
stack top inside diameter, stack gas temperature, stack gas exit
velocity, and pollutant emission rate. Optionally, values for
three variables: stack gas temperature, stack gas exit velocity,
and emission rate can be entered hourly.
Optional features of the TUPOS computer code include:
o Stack downwash, buoyancy-induced dispersion, and
gradual plume rise;
o Terrain adjustment as a function of stability
category; and
1
-------
o An optional program-generated polar coordinate
grid, with sector size and azimuth spacing
entered as input.
To take advantage of the vertical profiles of temperature and
wind speed provided by the input, a layer-by-layer plume rise
algorithm (Turner, 1985) is used which also considers partial
penetration of the plume into elevated stable layers. Dispersion
is estimated from the wind fluctuations at plume height using the
method of Irwin (1983).
The maximum number of point sources and the maximum number
of receptor locations are easily adjusted at the time of program
compilation and so have no specific limit. The program as listed
in the appendix allows for 25 sources and 180 receptors.
Output from TUPOS consists principally of tape or disk
concentration files which are then analyzed and summarized by the
postprocessor, TUPOS-P. An hourly concentration file is auto-
matically created by TUPOS; the user has the option of creating
a partial concentration file.
By making the number of sources and receptors easily adjust-
able at time of compilation and removing functions that are
largely bookkeeping to the post processor, the TUPOS system
should be easily adaptable to computer systems with small core
storage.
2
-------
SECTION 1
INTRODUCTION
TUPOS is a multiple point source Gaussian dispersion algorithm
which possesses many of the options and capabilities of MPTER.
However, its differences from MPTER and other prior UNAMAP dis-
persion models are significant. For instance, TUPOS utilizes
standard deviations of hourly wind fluctuations, in its dispersion
algorithm, in the manner discussed by Irwin (1983). Also intro-
duced in this model are layer-by-layer plume rise according to
Turner (1985) and plume penetration above the mixing height
(Briggs, 1975). A brief historical perspective on these new
refinements is presented next.
Prior to the development of TUPOS, most UNAMAP dispersion
algorithms utilized the crcurves of the Pasquill-Gifford (P-G)
scheme which are based on ground-level releases and short-range
dispersion studies. Despite cautionary remarks from Pasquill
(1976), the P-G dispersion estimates have been extrapolated to
elevated sources and receptor distances far beyond their experi-
mental basis.
Participants of an American Meteorological Society Workshop
on stability classification schemes and sigma curves (Hanna et
al., 1977) recommended refinement of methods for estimating the
vertical and lateral dispersion parameters used in Gaussian plume
models, especially for elevated releases. Draxler's (1976) and
Cramer's (1976) dispersion characterizations employing wind tur-
bulence data were mentioned as examples of available methods,
but it was suggested that the scatter in the data precluded
3
-------
recommending a particular scheme. A review panel (Randerson,
1979) stressed the usefulness of examining errors one might
encounter using a particular dispersion characterization as com-
pared to using other available schemes.
Irwin (1983, 1984) reviewed alternative dispersion schemes
using data collected during 17 field tracer experiments conducted
at 11 sites. From this review, Irwin synthesized a scheme from
the characterizations of Cramer and Draxler which is robust and
behaves well over a variety of dispersion conditions. This
scheme requires specification of the variances of the vertical
and lateral wind directions at plume height. TUPOS was designed
to make use of on-site turbulence measurements according to these
methods developed by Irwin.
Meteorological input to TUPOS consists of layer-by-layer
values for five variables: wind direction, wind speed, temper-
ature, standard deviation of wind azimuth, and standard deviation
of wind elevation angle. It is assumed that layer heights are
chosen so that linear interpolation of these five variables
between levels will be appropriate. A meteorological processor,
MPDA-1 (Paumier et al., 1986) produces information compatible
with the input requirements for TUPOS. This processor is capable
of using a variety of meteorological data sources to produce the
resulting profiles.
Nearly all of the air quality simulation models, made avail-
able to date through the UNAMAP system (U.S. EPA, 1983), use
plume rise methodology that depends upon only the wind speed esti-
mated at the physical stack height and the surface-based Pasquill
stability class and for the stable conditions, Pasquill stability
classes E and F, set temperature gradients, 60/6z, of 0.02 K/m
and 0.035 K/m, respectively. However, if available, it is more
desirable to use vertical profiles of temperature and wind speed.
TUPOS employs a layer-by-layer plume rise algorithm, developed by
Turner (1985), that utilizes this profile data.
4
-------
Full reflection or full penetration of plumes in the vicinity
of the mixing height, used in previous models, is also overly sim-
plistic. That is, if the plume centerline is above the mixing
height, then there is no contribution of the plume to concentrations
below the mixing height; or, if the plume centerline is below
the mixing height, then the entire plume is eddy-reflected downward
from the mixing height. TUPOS adopts a method suggested by Briggs
(1975) and modified by Turner (1985) for treatment of partial
plume penetration above the mixing height.
This user's guide is divided into three parts, with each part
directed to a different audience: managers, dispersion meteor-
ologists, and computer specialists. The first four sections are
aimed at managers and project directors who wish to evaluate the
applicability of TUPOS to their needs. Sections 5 and 6 are
directed to dispersion meteorologists or engineers who are required
to become familiar with the details of the model. Finally,.
Sections 7 through 9 are directed to persons responsible for
implementing and executing the program. A listing of the FORTRAN
source code is included in Appendix A.
The user's guide refers in various places to the features and
limitations of MPTER. This is done for the benefit of users
familiar with MPTER who now need some of the more refined
features available in TUPOS.
5
-------
SECTION 2
DATA-REQUIREMENTS CHECKLIST
To estimate concentrations for any simulated time period,
data for program control, as well as information on emissions,
meteorology, and receptors are required. These are mentioned
briefly here; more detail on proper formatting for data entry to
the program is covered in Section 8.
PROGRAM CONTROL DATA
The following control information is required for a simu-
lation:
° Headings (for output),
° Meteorological data file identifier and creation date,
° Starting time (year, Julian day, and hour),
° Abbreviation for pollutant considered,
° Conversion for user units, and
° Pollutant half-life.
In addition, the user must indicate whether the following options
are to be employed:
° Terrain adjustment,
° Stack downwash,
° Gradual plume rise, and
° Buoyancy-induced dispersion.
Output principally consists of tape or disk files which are then
6
-------
analyzed and summarized by a separate postprocessor TUPOS-P
(Turner, et al, 1985). An hourly concentration file is auto-
matically created by TUPOS: the user has the option of creating
a partial concentration file. For convenience, a brief summary
of the simulation is printed: however, the user is encouraged to
exercise the postprocessor, TUPOS-P (Turner et al., 1986), to
obtain a detailed listing of the results.
EMISSION DATA
The following information is required for each point source:
° East and north coordinates of the point source
(user units),
° Pollutant emission rate (g/s)
° Physical stack height (m),
° Stack gas temperature (K),
° Stack inside diameter (m), and
° Stack gas exit velocity (m/s).
The east-north coordinate system can be provided in any consistent
units. Also, the stack ground-level elevation is required if the
terrain adjustment option is used.
METEOROLOGICAL DATA
Hourly meteorological data are required for specific levels.
The user may prepare the data in the format specified in Section
8 or data prepared by the Meteorological Processor for Dispersion
Analyses, MPDA-1 (Paumier, et al, 1986), may be used. The hourly
meteorological data needed for the computations are as follows:
° Year,
° Julian day,
° Hour,
° Number of vertical levels,
7
-------
° Level number corresponding to the mixing height,
° Stability category,
° Height above ground of each level (m) ,
° Ambient air temperature at each level (K),
° Wind direction at each level (degrees),
° Wind speed at each level (m/s),
° Standard deviation of the azimuth angle (radians)
at each level, and
° Standard deviation of the elevation angle (radians)
at each level.
There are four stability categories in TUPOS: unstable, day-
time neutral, nighttime neutral, and stable designated 1 to 4,
respectively. These can be defined using the ratio of Monin-
Obukhov length to mixing height. (The stability category is con-
tained in the output from MPDA-1.)
It is assumed that the variation of meteorological parameters
with height is provided in sufficient detail such that linear
interpolation with height between levels yields reasonable values.
Any information required for a height below the height of the
lowest level is assigned the value of the lowest level. Similarly,
any information required for a height above the height of the
highest level is assigned the value of the highest level.
RECEPTOR DATA
The user has the option of designing his or her own receptor
grid or instructing TUPOS to generate a polar coordinate receptor
grid (see Section 8). In either case, the location (user length
units) and, if the terrain adjustment option is used, the ground-
level elevation (user height units) are required on input. Addi-
tionally, for the user-supplied receptors, the receptor height
above ground (m) must be given.
8
-------
SECTION 3
FEATURES AND LIMITATIONS
TUPOS is a Gaussian plume steady-state model using measured
(or inferred) turbulence data (wind fluctuation standard devi- -
ations) as part of the meteorological input. It is a useful
short-term (hours to days) algorithm to evaluate the effects of
multiple point sources in the near-field (within 10 km). It is
the intent of the authors that TUPOS be applied to sources whose
effluent is dominated by buoyancy or momentum (not heavier than
air releases). Only simple terrain adjustments are made; it is
not expected that plume impaction be considered. The model
includes the following optional computational features in common
with MPTER:
° Stack downwash,
° Buoyancy-induced dispersion,
° Gradual plume rise, and
° Terrain adjustment as a function of stability category.
Modeling features unique to TUPOS include:
° Layer-by-layer plume rise according to Turner (1985), and
° Partial plume penetration above the mixing height
(Briggs, 1975 and Turner, 1985).
TUPOS retains limitations typical of Gaussian plume models
including:
9
-------
° No consideration of nonlinear pollutant removal or
chemical reactions,
° No consideration of spatial variation in meteorology, and
° No consideration of increased horizontal dispersion due
to wind direction shear through the vertical extent of
plumes.
Also, TUPOS has no provision for calculating the effects from
area or line source emissions or consideration of building down-
wash or fumigation.
Table 1 presents a comparison of TUPOS features with those of
other air quality models. TUPOS has all the features of MPTER
including terrain adjustment, stack downwash, gradual plume rise,
buoyancy-induced dispersion, exponential removal mechanism, and a
standard steady-state Gaussian plume dispersion algorithm. Air
pollution concentrations are simulated for each one hour period
using hourly average meteorology. During the calculation, steady-
state conditions are assumed. The major improvements of TUPOS
over MPTER are (1) TUPOS calculates dispersion parameters from
on-site measured turbulence data instead of the Pasquill-Gifford
(P-G) scheme (Pasquill, 1961) and (2) the multi-layer approach to
plume rise, dilution, plume spreading, and transport considered
by TUPOS. Moreover, TUPOS can simulate partial plume penetration.
Table 2 summarizes the differences in approach between TUPOS and
MPTER.
10
-------
TABLE 1. COMPARISON OF TUPOS TO OTHER COMMONLY USED AIR QUALITY
MODELS.
M
E
I
c
V
S
T
p
N
p
M
R
A
O
X — used by model
U
T
P
T
P
s
L
P
0 -- optional
P
P
u
M
R
T
T
L
p
D
0
L
p
T
A
E
E
E
A
F
S
u
F
P
M
R
R
Y
L
F
MODEL TYPE
Gaussian plume
X
X
X
X
X
X
X
X
Gaussian puff
X
X1
GRID SIZE
100
1600
AVERAGING PERIOD
Hour
X
0
X
X
0
X
X
O
3-hour
0
0
0
0
X
0
O
24-hour
0
0
X
0
0
X
0
0
O
Annua 1
0
0
X
0
TYPE OF SOURCES
Single stack
X
X
X
X
X
X
X
X
X
X
Multiple stacks
25 2
25
250
250
19 1
50
99
10
Area sources
100
50'
99
Line sources
99
RECEPTORS
Number of
180*
25
30
180
180
180
112
99
Xs
Cartesian coordinates
X
X
X
X
Cartesian coordinates w/ elevations
X
X
X
X
X
Polar coordinates
X
X
X
Polar coordinates w/ elevations
X
X
X
X
Program generated grid
0
METEOROLOGICAL DATA
Preprocessor
X
X
X
X
X
STAR file
X
Us er spec i f i ed
0
X
X
0
0
X
X
Program generated
X
POLLUTANT
Non-react i ve
X
X
X
X
X
X
X
X
X
Xs
Half-1i fe
0
0
0
0
PLUME RISE
Stack tip downwash
0
0
0
0
0
0
Gradual plume rise
0
0
X
0
0
0
0
X
Buoyancy-induced dispersion
0
0
0
0
0
0
TERRAIN ADJUSTMENTS
0
0
0
0
0
0
0
(1) Specially suited for long range
t ranspor t .
(2) Maximum number of point sources
and receptors can be changed at
time of program compilation.
(3) Co-located stacks.
(4) Total of 50 point and/or area
sources .
(5) Concentrations computed at
each grid point and at up to
50 user-specified receptors.
(6)
SO,, and linear deposition of
SO2 and SO,. .
11
-------
TABLE 2. DIFFERENCES IN APPROACH BETWEEN MPTER AND TUPOS.
Technical
feature
MPTER
TUPOS
Dispers ion
Pasquill-Gif ford
Turbulence data
Meteorological
data
requirements
Pasquill stability
class,
wind speed/direction,
temperature, and
mixing height
stability category,
mixing height, and
at each input level:
wind speed/direction,
temperature,
oaand a©
Determination
of plume level
me teorology
Wind speed power law.
Temperature and wind
direction independent
of height
Linear interpolation
between vertical
leveIs
Plume rise
Calculated according
to surface temperature,
stack top wind speed,
and for stable condi-
tions a standard inver-
sion strength corres-
ponding to Pasquill
stability class
Calculated through
each layer based
upon vertical profiles
of wind and temperature
Partial plume
penetration
through the
mixing height
All of plume either
above or below mixing
he ight
Considered (based on
work of Briggs, 1975)
Source and
receptor
accommodat ions
250 point sources
180 receptors
Can be adjusted prior
to compilation to
process any number of
sources and receptors
Vertical
layers
1
Can be adjusted to any
number of levels
12
-------
SECTION 4
BASIS FOR TUPOS
This section presents a brief narrative highlighting impor-
tant aspects of the modeling approach. A detailed technical
description, including equations, is provided in Section 5.
Figure 1 illustrates the multi-layer approach incorporated in
TUPOS. It should help the reader visualize some of the items
discussed below. Although the structure of TUPOS resembles
previous Gaussian models, such as MPTER (Pierce and Turner, 1980)
it differs in several respects. Plume dispersion is estimated
from fluctuation statistics at plume level. Multi-level meteoro-
logical information must be input. Plume rise and partial pene-
tration of the plume into stable layers make use of the vertical
profiles of wind and temperature.
METEOROLOGICAL PARAMETERS
Multi-level meteorological information for levels above ground
must be furnished in a separate input file. Required parameters
for each level include: ambient air temperature, wind speed and
direction, the standard deviation of wind azimuth, and the
standard deviation of wind elevation angle, ae. It is assumed
that this information is sufficiently detailed such that linear
interpolation between levels characterizes the meteorology at any
particular height. One of the levels specified must be that of the
mixing height. Also, in order to properly specify the potential
temperature change with height, it is good practice to specify
at least one data level above the mixing height.
13
-------
Wind
SIDE VIEW
R LEVEL
TOP VIEW
Stack A
Figure 1. Schematic of multi-layer approach incorporated in
TUPOS.
14
-------
GAUSSIAN PLUME METHODOLOGY
Gaussian plume methodology assumes that pollutant concentra-
tions from a continuously emitted plume are proportional to the
emission rate, and are diluted by the wind at the point of emis-
sion at a rate inversely proportional to the wind speed. It
also assumes that the time-averaged (over approximately one hour)
pollutant concentrations crosswind and in the vertical near the
source are closely described by Gaussian or normal distributions.
The standard deviations of a plume concentration in these two di-
rections are empirically related to the levels of turbulence in the
atmosphere and increase with distance from the source.
Calculations are made for each simulated hour as if in steady-
state conditions; that is, concentrations for a given hour are
independent of those from previous hours. For receptors near
the sources, this is a reasonable assumption.
Calculations -for each hour are organized by source, such that
all calculations are made for one source before proceeding to the
next. In this regard, the total concentration for a given hour at
a particular receptor is the sum of the estimated contributions
from each source. This is also a reasonable assumption if there
are no synergistic effects among different species from different
sources. Emissions for only one pollutant are allowed for an
individual run of TUPOS.
PLUME RISE
TUPOS employs a layer-by-layer plume rise algorithm developed
by Turner (1985). In this approach, plume rise through each
vertical layer is calculated taking into account the variation of
temperature and wind speed with height.
Stack-tip downwash (optional) can be considered by applying a
correction factor to the estimated plume rise (Bjorklund and
15
-------
Bowers, 1982). This correction factor accounts for downwash in
the lee of stacks during periods when the wind speed at the stack
top is greater than or equal to 0.67 times the stack gas exit
veloc ity.
Gradual plume rise is available as an optional calculation in
TUPOS. Although the two-thirds dependence for rising plumes
determines average plume height with distance quite well, the
dispersive processes that occur during buoyant rise are thought
to be different from those that occur during steady-state trans-
port. The on-site dispersion parameters represent horizontal
and vertical dispersion about a horizontal plume, which may or
may not be appropriate for estimating dispersion during the plume
rise phase. By making computations with and without gradual plume
rise, potentially high concentrations can be identified. When
gradual rise is not employed, computations use only the final
effective plume height. Normal application of this model uses
only the plume final rise. However, gradual rise is evaluated
and used in determining buoyancy-induced dispersion.
Instead of the simplistic approach of either full reflection
or complete penetration of a plume in the vicinity of the mixing
height, TUPOS adopts the partial plume penetration technique sug-
gested by Briggs (1975) and modified by Turner (1985). Assuming
the initial vertical plume profile to be a "top hat" distribution,
the plume top and bottom are compared with the mixing height.
Then adjustments are made to the plume rise, and emission rate to
account for the partial penetration of the plume above the mixing
he ight.
DISPERSION
Dispersion is characterized by a scheme described by Irwin
(1983), which utilizes on-site measured (or inferred) turbulence
data. The method requires specification of the variances of the
vertical and lateral wind directions at plume height and the
16
-------
stability category (i.e., unstable, neutral-day, neutral-night,
or stable). It should be emphasized that the turbulence data
must be supplied in sufficient vertical detail such that linear
interpolation between levels is appropriate.
Buoyancy-induced dispersion calculations (optional) are of-
fered because emitted plumes undergo a certain amount of growth
during the plume rise phase. This is due to the turbulent en-
trainment of ambient air. During the initial growth phases of
release, the plume is assumed to be nearly symmetrical about its
centerline; hence, the buoyancy-induced dispersion in the hori-
zontal direction is modeled as equal to that in the vertical
direction. The maximum effects on ground-level concentrations
occur for short heights of release combined with large plume
rise, but, in general, buoyancy-induced dispersion has only a
small effect on maximum surface concentrations from elevated
releases.
17
-------
SECTION 5
TECHNICAL DESCRIPTION
TUPOS is a multiple point source, steady state Gaussian
disperison algorithm that estimates dispersion directly from
turbulent fluctuation statistics at plume level and calculates
plume rise and partial penetration of the plume into stable layers
using vertical profiles of wind and temperature. TUPOS can be
used for short term (hours to days) impact assessment of inert
pollutants from single or multiple sources and can be expected to
have greatest accuracy for locations within 10 km of the source.
METEOROLOGICAL PARAMETERS
In order to have turbulent fluctuations at plume level and
to calculate plume rise and penetration, TUPOS requires values
for five variables: wind direction (wind azimuth), wind speed,
temperature, standard deviation of wind azimuth angle, and stand-
ard deviation of wind elevation angle for a number of heights
above the ground. Sufficient heights should be used so that
linear interpolation of these values in the vertical between levels
will result in a reasonably accurate value for that height. One
of the levels specified must be that of the mixing height. In
order to properly specify the potential temperature change with
height, it is good practice to specify at least one data level
above the mixing height. The number of levels and the height
above ground of each level can be changed on the data from hour
to hour. A meteorological processor, MPDA-1 (Paumier, et al.
1986) can produce a data file that is compatible with the input
requirements for TUPOS. This processor is capable of using a
18
-------
variety of meteorological data sources to produce the required
data. After calculating the height of the plume centerline,
interpolated values of the meteorological parameters for plume
centerline height are determined and used to determine plume
transport direction and the plume dispersion.
GAUSSIAN PLUME EQUATIONS
Given a coordinate system with the origin at the ground, x
upwind from the receptor, y crosswind, and z vertical (see Figure
2), the Gaussian equations for a continuous release are as
follows:
Xp = Q/u * g^/(/2vay) • g2/(/2TTaz) t (1)
Xp = Q/u • g1/(/2^oy) * 1/L and (2)
Xp = Q/u * g ]_ / ( /2"tt
-------
TABLE 3. DEFINITION OF VARIABLES USED IN GAUSSIAN PLUME
EQUATIONS
Symbol Definition Units
Xp concentration g/m
Q emission rate g/sec
u wind speed m/sec
ay standard deviation of plume concentration - m
horizontal distribution
a2 standard deviation of plume concentration - m
vertical distribution
L mixing height m
H effective height m
z receptor height above ground m
y crosswind distance m
horizontal dispersion function —
g2f 92 vertical dispersion functions
PLUME RISE
Equations for estimating plume rise into neutral or unstable
conditions above the stack were modified from techniques presented
by Briggs (1983 and 1984). Equations for estimating plume, rise-
within stable layers both for calm and windy conditions are from
Briggs (1975).
These procedures are designed to take advantage of methods
developed by Briggs to consider the vertical profiles of wind
and temperature in estimating plume rise. It is assumed that
temperature and wind speed are available for at least two levels
above the ground. It is also assumed that the level of the mixing
height is available. It is recommended that at least one data
level above the mixing height be provided so that the potential
temperature with height above the mixing height may be calculated.
20
-------
Figure 2. Coordinate system showing Gaussian distribution in the
horizontal and vertical.
-------
The meteorological information given at different levels should
be sufficiently dense in the vertical so that linear interpolation
of the parameters between levels yields reasonable values.
Stack Tip Downwash
TUPOS considers the effects of stack downwash by applying a
correction factor to the estimated plume rise. According to
Bjorklund and Bowers (1982), the stack-tip downwash correction
factor, f, (which is multiplied times the calculated plume rise)
is defined by
f =
(3vs - 3uh)/v
0
for Uh < vs/1.5
for vs/1.5 < Uh < vs
for uh > vs
(7)
This correction factor accounts for the effects of downwash in
the lee of stacks during periods when the wind speed at the stack
height is greater than or equal to 0.67 times the stack gas exit
velocity. It is not used (i.e., f = 1) for stacks with Froude
numbers less than 3.0. The Froude number, Fr, is the ratio of the
inertial force to the force of gravity for a given fluid flow.
Briggs (1969) defines the Froude number for stack gas releases as
Fr = v 2/ [g d (T_ - T,)/Tj ,
(8)
where vs is stack gas exit velocity, d is stack diameter, g is
_ 2
acceleration of gravity (9 .806 m sec ), and Ts and Ta are tem-
peratures of the stack gas and ambient air, respectively.
Determination of Stable or Neutral-Unstable Conditions
In order to calculate plume rise, TUPOS must determine the
atmospheric thermal structure and decide whether the plume is
dominated by buoyancy or momentum. The skeletal outline for cal-
culating the plume rise is illustrated in Figure 3.
22
-------
Yes
'Proceed to makeN
dispersion calculation.
No
Yes
No
Yes
No
Yes
AH >Z.?
No
Go to penetration^
determination j
Is layer
containing h staole?
\ 59/iz >0.001^-^
AH = 2/3 AH
Calculate ah^
throufih a
staOle layer
Mu 11idly AH
Dy downwash
correction
f ac tor
Ca I cu l ate AH
usine neutral
unstaDle
methods
Calculate F(
at too of
this staDle
layer
CalcuI ate Fp
at too of
this neutral"
unstaole layer
Eva Iuate
Froude NumOer
at stack too
Calculate downwash
correction factor.
Determine ouoyancy
f I ux
Figure 3. Flow diagram for the plume rise algorithm.
23
-------
Regardless
the stack, a
needed. It is
of the thermal stability of the layer containing
value for the neutral-unstable momentum rise is
determined from
AHUm -3d vs/uh. (9)
The subscript um is for unstable momentum. The initial buoyancy
flux, F0, is also required. For stacks of circular cross section,
Fq = g vs d2 at/(4 Ts), (10)
where AT = Ts - T^ and Th is the ambient air temperature at stack
top.
The rate of potential temperature change with height for the
layer containing the stack top is used to select the plume rise
calculation method to be used initially. If 69/6z is greater than
0.001 Km~l, the layer is considered stable, and the stable plume
rise methods are used (see page 26). Otherwise, neutral-unstable
methods are used.
Plume Rise Calculation for Neutral-Unstable Conditions
For neutral-unstable conditions, buoyancy rise is calculated
with two different equations and the lower value from these two is
compared with the previously calculated momentum rise (Eq. 9).
These equations were modified from techniques presented by Briggs
(1983 and 1984). The two equations are
AH = 30 (F/u)0-6 + zb (11)
and
AH = 24 (F/u3)0*6 [h + 200 (F/u3)]0*4 + zb (12)
Eq. 11 gives the lower value for low wind speeds, whereas
Eq. 12 gives the lower value for high wind speeds. Both equations
24
-------
are evaluated and the lower value is used. For the initial eval-
uation at the stack top, F = FQ, h is the physical stack height,
u = Uftr and zj-,, the height of the base of the layer above stack
top, is zero. The equation that produced the value selected is
noted for use later. If the neutral-unstable momentum rise
(previously calculated from Eq. 9) is higher than the value
selected, momentum rise applies and the final plume rise is the
value from Eq. 9. Since momentum rise takes place near the stack
top, the distance to final rise is set equal to zero.
If the buoyancy rise is higher than the momentum rise, buoy-
ancy rise applies. If the plume rise is below the top of the
layer containing the stack, the calculated value is the final
plume rise. However, if the plume rise is greater than the top
of the layer considered, the procedures in this sub-section are
reapplied, using the mean wind speed between stack top and the
top of the layer instead of the wind speed at the stack top. If
the rise still exceeds the top of this layer, then the subsequent
residual buoyancy is calculated (see next sub-section).
Residual Buoyancy Calculation for Neutral-Unstable Conditions
If the buoyancy plume rise is higher than the layer under
consideration, the residual buoyancy at the top of this layer is
computed. The residual buoyancy Fr is that buoyancy at the top of
the layer that will give the same plume height as previously
calculated. For example, the buoyant plume rise from a 60 m
stack is calculated to be 330 m and the top of the layer contain-
ing the stack top is 80 m above the stack top. The residual
buoyancy at this level 80 m above the stack is that required to
yield 250 m plume rise. If Eq. 11 determined the buoyant plume
rise, then
FR = u [(ah - zt)/30]5/3 (13)
is used to determine the residual buoyancy, where zt is the height
25
-------
of the top of the layer above stack top. If the layer considered
is the one containing the stack, u is the mean wind speed between
the stack top and the top of the layer. If the layer is a higher
layer, u is the mean wind speed through that higher layer. If
Eq. 12 was used, then the residual buoyancy is determined from
Fr = 0.0055 m u3/[l + (h/m)]2/3f (14)
where m = AH - Zf Here, also, if the layer considered is the one
containing the stack, the mean wind speed between stack top and
the top of the layer is used for u. However, if the layer is a
higher layer, the mean wind speed through the higher layer is used.
Plume Rise Calculation for Neutral-Unstable Layers Above the Stack
After computing residual buoyancy at the layer top, thermal
stability is determined for the next layer. If 66/6z is greater
than 0.001 Km--'-, then the layer is considered stable. Otherwise,
the layer is considered neutral-unstable and Eqs. 11 and 12 are
both evaluated using F = Fr, the mean wind speed for the layer,
and the proper value for zfc,. The lower plume rise value is used
and compared with the top of the current layer, z^. If plume
rise terminates in this layer or if this is the last level for
which data were furnished, then final plume rise has been found.
If not, the iterative process described in the previous subsection
is repeated until the final plume rise is obtained. For heights
above the last data level, wind speeds are assumed constant and
equal to that of the top data level and 5 6/6z is assumed to be
the same as the topmost layer.
Plume Rise Calculation for Stable Layers
For determination of plume rise through stable layers, the
equation for stable momentum rise,
AHsm = 0.646 [vs2 d2/(Ts uh)]1/3 T1/2/( [60/6z)1/6 (15)
26
-------
is first evaluated. The subscript sm is for stable momentum.
This value is compared with the buoyancy momentum rise (Eq. 9),
and the lower of these two values is set aside as representing
the momentum rise under stable conditions.
Stable buoyancy rise is evaluated using
AHt = [(1.8 Fb T/(u fie/fiz)) + zb3]1/3 (16)
where aH^ is the height above h of the plume top. For the layer
containing the stack, Fb = FQ/ T is the ambient air temperature
at the level of the stack top, u is the stack top wind speed, and
zb is zero. This equation may give excessively high values for
low wind speeds. Thus stable rise for calm conditions, as given
by
AHt = [(4.1 Fb T/(F01/3 60/6Z)) + zb8/3]3/8 (17)
is also evaluated and the lowest value used. The equation used is
also noted. Assuming a "top hat" plume with the plume thickness
equal to the rise, the plume rise and the plume centerline are
2/3 AHt., and the height of the plume bottom is 1/3 AHf The plume
rise is compared with the value selected for momentum rise. If
the momentum rise is higher, momentum rise is used for the final
plume rise. If the buoyancy rise is higher, the plume top is
compared with the height of the top of the layer being considered.
If it exceeds the top of the layer, then Eqs. 16 and 17 are re-
evaluated, using mean values between the physical stack height
(h) and the top of the layer for air temperature (T) and wind
speed (u). If the resulting plume top is below the top of the
layer, the final plume top height has been found. However, if
the plume top still exceeds the top of the layer, the stable
residual buoyancy must be determined.
For the situation of a stable layer above the one containing
the stack, Fb is the residual buoyancy at the bottom of this
27
-------
layer, that is, the residual buoyancy at the top of the previous
layer; T is the mean temperature of the layer; u is the mean wind
speed of the layer; and zj-, is the height above h of the base of
the layer under consideration.
Residual Buoyancy Calculation for Stable Conditions
If Eq. 16 is used for the plume top determination, then
Fr = Fb - (0 . 56 5 6/ 6Z u/T) (zfc3 - zb3) (18)
is used to calculate the residual buoyancy at the top of a stable
layer. If the layer considered is the one containing the stack,
F5 is F0, u and T are the mean wind speed and mean temperature
between stack top and the top of the layer, and Z5 is zero. If it
is a higher layer, F5 is the residual buoyancy at the bottom of
the layer, that is, the top of the previous layer; u and T are
the mean wind speed and temperature for the layer; and z^ and Z5
are the heights of the top and bottom, respectively, of the layer.
If the value from Eq. 17 is used to estimate plume rise, then
Fr = Fb " (0.24 56/5Z FQ1/3/T) (zfc8/3 - zb8/3) (19)
is used to calculate the residual buoyancy at the top of the layer.
Final Plume Rise
The calculation of plume rise continues layer by layer (see
Figure 3) using appropriate equations for stable or neutral-
unstable layers until the plume rise height remains within a
given layer. This is then taken as the final plume rise.
28
-------
PLUME PENETRATION ABOVE THE MIXING HEIGHT
Methods have been suggested by Briggs (1975) and others (Weil
and Brower, 1982) to consider partial penetration of the plume
into the more stable layer above the mixing height. A modifi-
cation of these methods is used in TUPOS.
To account for partial plume penetration, TUPOS uses the "top
hat" distribution recommended by Briggs (1975). This assumes a
uniform distribution of the plume with height about the centerline
as shown in Figure 4. The plume depth is assumed to be the same
as the rise of the centerline above the stack top.
With this simple picture of plume rise, the following situ-
ations are considered. If the plume bottom ( Hb = H - 0 .5 AH) is
above the mixing height (i.e., Hb > L), the dispersion calculation
is skipped and no impact of the plume at ground level is assumed.
If the plume top (Ht = H + 0.5 aH ) is below the mixing height
(i.e., Ht < L), the entire plume is available for dispersion in
the mixing layer. If the mixing height is between plume top and
plume bottom, i.e.,
partial penetration is considered; that is, only the plume
beneath the mixing height is considered for dispersion. The
following parameters are used for the portion of the plume
remaining within the mixed layer:
where 0 and 0' are the source strength of the original plume and
the remaining plume (beneath the mixing height), respectively; H'
and AH1 are the height and plume rise of the remaining plume.
Hb < L < Ht
0' = OIL - Hb]/AH,
H' = [L + Hb]/2, and
AH' = H' - h,
(20)
(21)
(22)
29
-------
z
0.5 AH
PLUME CENTERUNE
a
0.5 AH
AH
PLUME BOTTOM
ELEVATION STACK TOP
Figure 4. "Top hat" distribution for plume penetration.
30
-------
Subsequently, AH1 is used in calculating distance to final rise
and buoyancy-induced dispersion. The plume penetration algorithm
is summarized in Figure 5.
DISTANCE TO FINAL RISE
Except for the situation of the plume rise being due to
momentum, in which case the distance to final rise is taken to be
zero, the plume is assumed to rise to its final height using the
2/3 rule (Briggs, 1971, p. 1030 ). For any of the buoyant rise
situations, the distance to final rise is calculated from
xf = [uh AH'/(160 Fq173)]1-5 (23)
GRADUAL PLUME RISE
If the distance between the source and the receptor, x (in
kilometers), is less than the distance to final rise, the
equivalent of Briggs' (1971, p. 1030), Eq. 2 is used to determine
plume height, that is,
H = h + (160 Fq1/3 x2/3)/uh. (24)
Although gradual rise might be calculated layer-by-layer, the
approximation in Eq. 24 using stack top conditions is sufficient.
The results of this equation are used only to calculate the
buoyancy-induced dispersion. Should it exceed the final rise for
the appropriate condition, the final rise is substituted instead.
DISPERSION PARAMETERS
TUPOS uses hour-by-hour turbulence data, according to methods
recommended by Irwin (1983), to determine the dispersion parame-
ters. Irwin proposed characterizing ay and az in a manner similar
to Cramer (1976) and Draxler (1976). It was suggested that the
standard deviations of the crosswind and vertical concentration
31
-------
Plume centerline»H
Plume rise? &H
Mixing heighti L I
Yes
No
be Iow L?
Next
Source,
Yes
above L?
No
Make dispersion
caIcuIation
PI ume top» H-t
Ht = H + 0.5 AH
Plume below
mixing heieht-
AH' =AH
Plume bottom»H
a'=a- (L - Hb)/AH
H1=(L + Hb)/2
AH1 = H' " h'
Figure 5. Flow diagram for calculating penetration of plume in
relation to mixing height.
32
-------
distributions,
Oy and 02 be
viewed
as:
and
Oy — 0y
°z " °w
t f.
t f
Z '
(25)
(26)
where ov and ow are the standard deviations of the horizontal and
vertical components of the wind, t is the downstream travel time
of the pollutant, and fy and fz are nondimensional functions of
travel time.
For small angles, the following approximations are made:
Oy=OgU, (27)
= oq Uf (28)
where oa and
(azimuth) and
respect ively.
ae are the standard deviation of horizontal
vertical (elevation) wind angles (in radians),
Substituting Eqs. 27 and 28 and t = x/u into Eqs.
25 and 26 yields,
and
oy - oa
°z ~ °e
x f,
x f.
( 29
(30 )
Irwin (1983) summarized the performance of various charac-
teristics of fy and fz over a variety of conditions and recommended
the following expression:
fy, fz = 1/[1 + 0.9(t/to)
1/2
] ,
(31)
For fy, tQ = 1000 seconds for all stability conditions. For fz,
tQ = 500 seconds for unstable and daytime neutral conditions, and
tD = 50 seconds for stable and nighttime neutral conditions.
33
-------
OTHER CONSIDERATIONS
Removal or Chemical Reactions
Transformations of a pollutant resulting in its loss through-
out the entire depth of each plume can be accomplished by an
exponential decrease with travel time. The input parameter is
the length of time expected for loss of 50% (half-life) of the
emitted pollutant. TUPOS does not have the capability to change
this parameter value during a given run. If the loss to be
simulated occurs throughout the whole plume, without dependence
upon concentration, then the exponential loss may provide a
reasonable simulation if the loss rate is realistic. However, if
the loss mechanism is selective, the loss rate will not be ade-
quately modeled. Selective loss mechanisms include impaction
with features on the ground surface, reactions with materials on
the ground, or dependence on the concentration in a given small
parcel of air (requiring consideration of contributions from all
sources to this parcel). Simulation of dry deposition by expo-
nential decay is quite reasonable if the plume is pretty well
mixed vertically (unstable conditions), so that material is
removed from the entire depth of the plume. When the plume is
not well mixed, material deposits from the lowest layers of the
plume and it becomes less Gaussian in shape with time.
Terrain Adjustments
A method is optionally included to treat terrain variations
between source and receptor. For each source-receptor pair, two
calculations are made and compared.
The first calculation is similiar to that in MPTER. The
relation of the plume to the topography can be varied by the user
according to stability category from a completely level plume
(which does not respond at all to topographic changes) to a plume
which responds completely to changes in the terrain (terrain
34
-------
following). Terrain adjustment factors are entered by the user
for each of the four stability categories (unstable, daytime
neutral, nighttime neutral, and stable). These factors can be any
real number between 0 (represents plumes which level off and
remain at the same mean-sea-level elevation) and 1 (represents
plumes which completely respond to terrain). The author's current
choice for these values is 0.5 for unstable and daytime neutral
and 0.0 for nighttime neutral and stable conditions. (These
values are used if both the terrain option and default option are
employed.) Calculations are made by subtracting the adjusted
difference, defined as the elevation of receptor ground level
minus the elevation of the source ground level, from the effective
plume he ight.
The equation used for the inclusion of the terrain adjustment
is
Ha = H - (1 - Ft) aE, (32)
whe re
HA = adjusted effective height,
H = effective height,
AE = Er - Eg,
Er = ground-level elevation of receptor,
Eg = ground-level elevation of source, and
Ft = terrain adjustment factor.
Shown below are the adjusted effective heights for four example
values of the terrain factor:
HA = H
for
FT =
l
HA = H - AE
for
Ft =
0
HA = H - 0 .7
AE
for
ft =
0 .3
H A = H - 0 .1
AE
for
Ft =
0 .9
35
-------
The manner in which the terrain adjustment is simulated is depicted
in Figure 6 for three values of the terrain adjustment factor.
The second calculation is made to insure that the concentration
resulting from the first (terrain) calculation is not used if it
exceeds the maximum concentration that is expected anywhere in the
plume at this distance from the source without terrain. The calcu-
lation uses the fact that the concentration in an elevated plume
is a maximum at the effective stack height until sufficient growth
occurs so that significant eddy reflection results from a bounding
surface (the ground or a stable layer aloft). The concentration
maximum in the plume then shifts toward that surface with increased
distance from the source. Once the maximum concentration reaches
the bounding surface, it remains there with increasing downwind
distances. The distance dz, equal to H or L-H, whichever is
smaller, is compared with the value of az at this distance. If
the ratio az/dz is less than or equal to 0.71, the concentration
calculation is made with z = H, that is, plume level. If this
ratio is 1.0 or greater, the calculation is made with z = 0. The
following four equations (which were determined empirically) are
used to approximate the transition zone when az/dz i-s between
0.71 and 1.0:
r = 2.0 1428 - 1.42857 (oz/dz)
r = 2.925 - 2.5 (az/dz)
r = 5.25 - 5.0 ( oz/dz)
r = 13.3333 - 13.3333 (az/dz)
<
az/dz <
LO
00
•
o
(33a)
<
a z/^ z S.
0.93;
(33b)
<
o z/d z
0.97;
(33c)
<
a z/^ z ^
•
o
o
•
I—1
(33d)
The calculation is then made for z = r dz.
The lower of the two calculations is taken as the value of
the concentration for the terrain situation.
Buoyancy-Induced Dispersion
Emitted plumes undergo a certain amount of growth during the
plume rise phase. This is due to the turbulent motions associated
36
-------
H-AE
H-0.7AE
Figure 6. Adjustment of plume height due to terrain.
37
-------
with conditions of plume release and the turbulent entrainment of
ambient air. Pasquill (1976) suggests that this induced disper-
sion, azo, can be approximated by aH/3.5, and the effective dis-
persion can be determined by adding variances, i.e.,
aze =
-------
SECTION 6
EXAMPLE PROBLEM
In this section, a hypothetical problem is provided to
illustrate the use of TUPOS and the type of information it
provides. Details concerning input and output for this example
are discussed in Section 9 after the reader has become familiar
with TUPOS input data preparation.
The problem is illustrated in Figure 7. All pertinent
meteorological parameters are provided in Table 4. Sampling is
to be performed along 30° arcs 1 and 5 kilometers downwind of the
sources (see Figure 7). The point source emission inventory is
summarized in Table 5.
This hypothetical problem forms the basis for the sample test
discussed in Section 9. The input data and TUPOS generated output
are provided there.
39
-------
30° sampling arcs
400
WIND
\ location
of sources
199
205
200
201
203
202
204
km
Figure 7. Source/receptor geometry for the example problem.
40
-------
TABLE 4. MULTI-LEVEL METEOROLOGICAL DATA FOR THE EXAMPLE PROBLEM
Wi nd
Level
Temp.
Di r
Speed
aa
Ge
Year Day Hour
(m)
(K)
(deg)
(m/s )
(rad i an )
1983 365 15
50
293 .5
263
2.30
0.219
0.134
100
293 .0
265
2.40
0.198
0.152
stabi1i ty = 1
200
292 .0
268
2.50
0.178
0.172
(daytime unstable)
1500*
285 .5
270
4.50
0.132
0.248
1600
287 .5
272
7.00
0. 130
0.251
1800
286 .5
273
8.00
0. 128
0 .256
1983 365 16
50
293 . 3
264
2.26
0. 209
0 .123
100
293 .0
266
2.40
0.189
0.134
stability = 1
200
293 .0
268
2.50
0.164
0.142
(daytime unstable)
1500*
285. 5
269
4.50
0.138
0.161
1600
287 .5
271
7.00
0.124
0.176
1800
286 .5
273
8.00
0.107
0.183
1983 365 17
50
293. 1
265
2.23
0.197
0.112
100
293. 0
267
2.40
0.174
0.111
stabi1i ty = 1
200
292.5
269
2.50
0.158
0.110
(daytime unstable)
1500*
285.5
271
4.50
0.142
0.108
1600
287 .5
272
7.00
0.118
0.107
1800
286 .5
273
8.00
0.094
0 . 106
1983 365 21
50
292.0
258
2.00
0.132
0.091
stability = 4
100*
292.0
262
2.20
0.111
0.078
(nighttime stable)
200
291.8
265
2.50
0.092
0.064
1983 365 22
50
291.5
256
1.90
0. 119
0.082
100
291.7
261
2.13
0.099
0 .069
stability = 4
200
291.8
263
2.50
0.085
0 .058
(nighttime stable)
1500*
285 .5
270
4.50
0.055
0.047
1600
287 .5
272
7.00
0.048
0.041
1800
286 .5
275
8.00
0.046
0.041
1983 365 23
50
291.0
254
1.80
0.105
0.070
100
291.3
260
2.06
0.085
0.061
stability = 4
200
291.7
263
2. 50
0.070
0.053
(nighttime stable)
1500*
285 .5
271
4.50
0.037
0.045
1600
287 . 5
272
7 .00
0.036
0.038
1800
286.5
273
8.00
0.035
0.032
1984 1 02
50
289 .8
256
1.50
0.079
0.052
100
290 . 0
258
1.86
0.067
0.043
s tabi1i ty = 4
200
—
263
2.50
0.056
0.038
(nighttime stable)
1500*
—
272
4. 50
0.049
0.036
1600
287 . 5
271
7.00
0.038
0.031
1800
286 .5
270
8.00
0.027
0.026
(cont i nued)
41
-------
TABLE 4 (continued)
Wind
Level
Temp.
Di r
Speed
aa
Year Day
Hour
(m)
(K)
(deg)
(m/s )
(rad i an)
1984 1
03
50
289 .5
255
1.40
0.075
0. 046
100
289 .7
258
1.80
0.066
0.039
stability =
: 4
200
291.5
264
2.50
0.050
0.035
(nightt ime
stable)
15 00 *
285 .5
271
4.50
0.041
0.031
1600
287 .5
271
7.00
0.033
0.027
1800
286.5
271
8.00
0.024
0.024
1984 1
04
50
289 . 2
254
1.32
0.069
0.041
100
289 .6
257
1.76
0.058
0.036
stabi1i ty =
= 4
200
291.5
262
2.50
0.045
0.031
(nightt ime
stable)
1500*
285 .5
269
4.50
0.032
0.026
1600
287 .5
270
7.00
0.027
0.022
1800
286 .5
272
8.00
0.021
0 .020
1984 1
07
50
288 .7
252
1.40
0.048
0.032
100
289 .5
258
1.80
0 .039
0 .028
stabi1i ty =
= 3
200
291.5
265
2.50
0.032
0.024
(n i ght t ime
neutral)
1600*
286.5
271
7.00
0.017
0.016
1800
290 .5
273
8.00
0.016
0.015
2000
289 . 5
276
9.00
0.016
0.015
1984 1
08
50
289 .0
253
1.60
0.052
0.041
100
289 .6
260
1.90
0.043
0.038
stabi1i ty =
: 3
200
291.5
266
2.50
0 .035
0.032
(n ight t ime
neutral)
1600*
285 . 5
270
7.00
0.026
0.023
1800
289 . 5
272
8.00
0.024
0.018
2000
288 .5
274
9.00
0.022
0.017
1984 1
09
50
289 .9
255
1.90
0.071
0.056
100
290 .0
262
2.10
0.061
0.048
stabi1i ty =
: 2
200
291. 5
267
2.50
0.050
0.041
(dayt ime neutral)
1600*
284.5
271
7.00
0.040
0.034
1800
288 .5
272
8.00
0.034
0.021
2000
287 .5
272
9.00
0.030
0.019
1984 1
14
50
294.7
264
2.30
0. 205
0.129
100
294 .1
266
2.40
0.194
0.149
stabi1i ty =
: 1
200
293 .0
268
2.50
0 .175
0 . 168
(daytime unstable)
1600*
279 .0
269
5.00
0.132
0.228
1800
283 .0
271
8.00
0.130
0.234
2000
282 . 0
270
9.00
0.127
0.241
* Indicates the location of the mixing height.
42
-------
TABLE 5. POINT SOURCE EMISSION INVENTORY FOR THE EXAMPLE PROBLEM
Locat ion
Emission rate
Stack
parame te rs
X
Y
Elev
S02
Hgt
Temp
Dia
Vel
(km)
(km)
(m)
(g/s)
(m)
(K)
(m)
(m/s)
200 .00
399.97
0
700
75
455
3.0
16.0
199 .95
400.00
0
2750
165
425
4.0
38.0
200 .00
400 .03
0
10000
335
425
13.0
16.0
43
-------
SECTION 7
COMPUTER ASPECTS OF THE MODEL
The general framework of TUPOS is discussed in this section.
It is intended to give the reader a general knowledge of the
computer program, rather than a detailed description of each
subroutine. The overall structure of the program, the general
processing flow, and a brief description of each subroutine is
given in this section. Also provided is the overall system flow,
which includes TUPOS, the input and output media, data flow, and
preprocessor and postprocessor programs.
SYSTEM FLOW
Figure 8 outlines the overall system flow. Note that TUPOS is
one of three programs required in the system. The Meteorological
Processor for Dispersion Analyses, MPDA-1 (1986) and subsequent
versions can be used to prepare meteorological data for input to
TUPOS using unit 9. TUPOS-P can be used to obtain a detailed con-
centration summary. Optional input consists of hourly emissions
data which includes emission rate, stack gas temperature, and
stack gas exit velocity. The hourly emission data are expected on
FORTRAN unit 10 and may be either a tape or disk file. If hourly
emission data are entered, there must be a record of emission data
for each hour of the simulation. Optional output includes hourly
partial concentrations to FORTRAN unit 14. Hourly concentrations
are automatically saved on FORTRAN unit 12. Units 12 and 14 can
be either tape or disk media.
The input/output units used by TUPOS are summarized in Table 6.
44
-------
MuI ti-
le vc I
Met.
Data
I
MPDA-1
I
Processed
Meteorological
Data
Printed
Output
Receptor Data
Source Data
Control Data
xons
TUPOS
Hourly
I Concentration I
File
fHour|y Partial!
, Concentration
File
AX
TUPOS-P
I
Printed
Output
Figure 8. System flow for TUPOS. A dashed line indicates
optional flow.
45
-------
TABLE 6. INPUT/OUTPUT UNITS USED BY TUPOS.
FORTRAN Input/Output Mode Contents
unit media
5 Reader or disk Input Program control and
input data
6 Printer or disk Output Output listing
9 Tape or disk Input Sequential meteorology
10* Tape or disk Input Hourly emissions data
12 Tape or disk Output Hourly concentrations
14* Tape or disk Output Hourly partial
concentrations
* Optional
STRUCTURE OF TUPOS
The program has a hierarchical static structure which also
represents the dynamic structure as closely as possible. Thus,
subprograms at higher levels perform coordinating tasks, and those
at lower levels perform calculations; also, the order of sub-
programs at the same level represents the order of their execution.
Subprograms are named according to the following convention:
TUlnn where TU represents TUPOS,
1 is the level number, and
nn is the sequence number of
the module on level 1.
Figure 9 shows the program structure. Brief descriptions of the
main program and subprograms follow.
TU100 — This is the main program. It begins with introductory
comments including the program abstract, authorship,
and program structure. Following these introductory
46
-------
TUIOO
TU210
F.« r c u t c
f) i % p e r s i on
Pr oces s
ConlroI
Inputs
Model
Mu I 11 I eve I
Buoyant
PI ume
TU2 10
TU10S
TUJIU
TU * 1
Po I m t
R rcr i> I n p
Oct MKT
file hcoder
r ecord
ChArActer i zc
Rank
Significant
Son rcc<
Rend
Me t cor oIocy
Pr oces s
Con t roI
1npu ts
Pr oces s
Sou re e
Input
TU220
TU3J0
TU40S
TU430
TUS30
TUM i
OuIpuI
Hour Iy
(*onccn .
Get
Hour Iy
Met coroIogy
Ca I cuI aie
Cone en -
Gel
llou r I y
h>ni s* i ons
Cxecut e
D1 sper sI on
SImoI a 11 on
S t a t> I e
huo y*nr
Hup
Head
Me t eoroIogy
File
Hun
S t « I p
Ca Icu I a t e
P I ume
Pe ne t r dI ion
Read
Emi ssions
Un .< t a b I e •
Neutral
Re*i dun I
HuoyA nc y
CaIcu I a t e
S t a c k Tip
[>0wnwA 9 h
Hi
-------
comments, subroutine TU210 is called to process the run
control data. If the data are acceptable, subroutine
TU220 is called to perform the run simulation. Program
termination occurs exclusively in this subroutine.
TU210 — Called by TU100, this module performs all input oper-
ations to unit 5 (control input file) and calls a
number of subroutines (TU305, TU310, and TU315) to
process the input. The subroutine begins with comments
describing the control input file (unit 5).
TU220 — This subroutine is called by TU100 and accomplishes the
actual simulation. It includes the loop over hours.
Comments describing the optional output files on units
12 and 14 are provided at the beginning of the
subroutine.
TU305 — This subroutine is called by TU210 and processes the
header record of the sequential meteorology file (unit
9). TU305 calls subroutine TU405 to perform the actual
1/0 to the meteorology file.
TU310 — Called by subroutine TU210, this subroutine coordinates
all of the calculations related to source input. It
calls subroutines TU410 and TU415 to characterize the
point sources and rank significant sources, respective-
ly. TU310 is executed once after all the source records
have been read by subroutine TU210.
TU315 — This subroutine is called by TU210 after all the receptor
input has been read. It coordinates the generation of
polar receptors and the printing of the receptor table
by calling subroutines TU420 and TU425, respectively.
48
-------
TU320 — This subroutine is called by TU220 and gets the hourly
meteorology for the current hour of simulation. TU320
calls subroutine TU405 to perform the actual I/O to the
meteorology file.
TU325 — This subroutine is called by TU220 if the hourly emissions
option is exercised (i.e., IOPQ = 1). TU325 retrieves
source data (emission rate, exit velocity, and stack
gas temperature) for the current hour of simulation.
TU325 calls subroutine TU430 to perform the actual I/O
to the emissions file (unit 10).
TU330 — Subroutine called by TU220 to calculate the point source
contribution to each receptor. Subroutines TU435,
TU440 , TU44 5, TU450, and TU455 are called by TU330 .
TU335 — Subroutine called by TU220 to update the maximum hourly
concentrat ion.
TU340 — This subroutine is called by TU220 to print hourly
concentration results for the number of hours desired.
TU405 — This subroutine, referenced by both TU305 and TU320,
performs all input from the meteorology file (unit 9).
It begins with comments describing the meteorology file.
TU410 — Subroutine called by TU310 to characterize each point
source based on estimates of potential impacts.
TU415 — Subroutine called by TU310 to rank significant sources
and print a table of ranked sources.
TU420 — This subroutine is called by TU315 to generate a polar
receptor grid in terms of cartesian coordinates.
49
-------
TU425 — This subroutine compiles and prints the receptor table
which includes the receptor location, ground-level
elevation, and height above ground level. It is called
by TU315.
TU430 — Subroutine called by TU325 to read the emissions file.
It begins with comments describing the emissions file
(unit 10).
TU435 — Subroutine called by TU330 to perform layer-by-layer
plume rise. This subroutine calls the following sub-
routines: TU510, TU515, TU520, TU530, TU540, and
TU550.
TU440 — Subroutine referenced by TU330 to calculate plume pene-
tration through the mixing layer.
TU445 — This subroutine is called by TU330 and estimates the
meteorology at the plume level.
TU450 — Subroutine called by TU330 to calculate the lateral and
vertical dispersion parameters for a particular recep-
tor .
TU455 — Called by TU330 to compute the relative concentrations
at a particular receptor.
TU510 — Subroutine called by TU435 to calculate the potential
temperature gradient between two adjacent layers.
TU515 — Called by TU435 to compute the stack-tip downwash
correction factor.
TU520 — This module is called by TU435 to compute unstable-
neutral buoyancy rise.
50
-------
TU530 — This subroutine is called by TU435 to calculate
unstable-neutral residual buoyancy.
TU540 — Module called by TU435 to compute stable buoyancy rise.
TU550 — Subroutine called by TU435 to calculate stable residual
buoyancy.
ZF — This function calculates a normalized height of peak
concentration and is referenced only by subroutine
TU330 .
CHRON — This subroutine is referenced in several places (sub-
routines TU220, TU320 , and TU325). It converts dates
between 1960 and 1999 to a common sequential hour.
ICHRON — Subroutine called by TU220 to convert a common sequen-
tial hour to a year, Julian day, and hour.
Figure 10 is an abbreviated flow diagram of TUPOS showing its
major loops and the relationships of the subroutines to each
other. Only the 300 and 400 level subroutines are shown in this
diagram since they perform most of the calculations and processing.
NON-STANDARD FEATURES
The PARAMETER statement, which is used in the TUPOS source
code, is considered a non-standard FORTRAN feature. It allows
constants to be referenced by symbolic names. This facilitates
the updating of programs in which the only changes between com-
pilations are in the values of certain constants. In TUPOS, the
PARAMETER statement initializes constants NLMAX, NPTMAX, and
NREMAX (i.e.,the maximum number of vertical levels, point sources,
and receptors, respectively). Also initialized by PARAMETER
statements are the constants NDMAX and NRL. All these constants
in turn are used to dimension numerous arrays. If the user's
51
-------
TUPOS
•Read Record Types 1-5
•TU305 (Get meteorology file header record)
' TU405 (Read meteorology file)
Read Record Types 6-8
TU310 (Process source input)
¦ TU410 (Characterize sources)
TU415 (Rank significant sources)
— Read Record Types 9-11
TU315 (Process receptor input)
h TU420 (Generate polar receptors)
' TU425 (Produce receptor table)
Loop Over Simulation Period
Loop Over Hours
•TU320 (Get hourly meteorological data)
1 TU405 (Read meteorology file)
TU325 (Get hourly emissions, if IOPQ = 1)
I TU430 (Read emissions file)
TU330 (Calculate concentrations)
Loop Over Sources
TU435 (Calculate layer-by-layer plume rise)
TU440 (Calculate plume penetration)
TU445 (Estimate meteorology at plume height)
CE
Loop Over Receptors
—TU450 (Calculate dispersion parameters)
—TU455 (Calculate relative concentration)
TU335 (Update maximum hourly concentrations)
TU340 (Output hourly results for the first hour only)
Ex i t
Figure 10. TUPOS Flow Diagram.
52
-------
compiler does not support PARAMETER, the desired value of NLMAX,
NPTMAX, NREMAX, NDMAX, and NRL must be hardcoded. The best way
to do this is through global changes with an editor.
The ENCODE statement is also considered a non-standard FORTRAN
feature. It is similar to formatted WRITE statements, however
rather than transferring data between a peripheral unit and
main storage, data is transferred between areas of main storage.
In TUPOS, the ENCODE statement is used in labeling the polar
coordinate receptors (subroutine TU420). If the user's compiler
does not support ENCODE the code containing it should be elimi-
nated. The result is that polar coordinate receptor names will
be blank on output.
53
-------
SECTION 8
INPUT DATA PREPARATION
RECORD INPUT SEQUENCE
There are 12 record types read by TUPOS; six of these are
free format input. While the free format is simple to use, care
should be taken to ensure that every variable is given a value in
the correct order. Each variable should be separated by a comma
and should conform to the variable name type. Three of the twelve
record types are optional, depending on the options exercised on
record type 5. A brief description of each input parameter is
given in Table 7 with the appropriate units. The unit abbre-
viations are standard with the exception of "uu" and "uhu" which
represent user length units and user height units, respectively.
Under the "Format" column of Table 7, FF represents free format.
TABLE 7. RECORD INPUT SEQUENCE FOR TUPOS.
Record type &
Variable Column Format Variable description Units
Record type 1
LINE1 1-80 20A4 80-character title —
Record type 2
LINE2
1-80
20A4
80-character title
(continued)
-------
TABLE 7 (continued)
Record type &
Variable Column Format Variable description
Units
Record type 3
LINE3 1-80 20A4 80-character title
Record type 4
IYRS
IDYS
IHRS
IHLIM
CONTWO
CELM
HAFL
FF
FF
FF
FF
FF
FF
FF
2-digit year for this yr
s imulat ion
Starting Julian day for day
this simulation (1-366)
Starting hour for this hr
simulation (1-24)
Total number of hours to hr
be simulated
Multiplier to convert user km/uu
length units (uu)to kilometers
i.e., ft to km 0.0003048
mi to km 1.609344
m to km 0.001
Multiplier to convert user m/uhu
height units (uhu) to meters,
i.e., ft to m 0 . 30 48
Pollutant half-life. An sec
entry of 0.0 will cause no
pollutant loss
Record type 5
NPOL 1- 4 A4
METID 5-12 2A4
4-character pollutant name
8-character identifier
Identical to METNAM in
meteorological file
(cont inued)
55
-------
TABLE 7 (continued)
Record type &
Var i able
Column Format Variable description
Units
MDATAC 13-18 16 Month/day/year of data
creation (6 digits) (Must
be same as MDATA in meteoro-
logical file header record.)
MDATBC 19-24 16 Hour/minute/second of data
creation (6 digits) (Must
be same as MDATB in meteoro-
logical file header record.)
Record type 6 — Technical and external file options
NPRNT
IOPT
IOPB
IOPD
IOPG
IOPM
IDF LT
IOP0
IOPR
IOPWPC
FF Number of hours of printed
output
(1 = employ option: 0 = do not use option)
FF Terrain adjustments
FF Buoyancy-induced dispersion
FF No stack downwash (use 0 to
have downwash)
FF No gradual plume rise (use 0
to have gradual plume rise)
FF Check for plume within
turbulent boundary layer
(nightt ime)
FF Option for default values
FF Read hourly emissions
(FORTRAN unit 10)
FF Input radial distances and
generate polar coordinate
receptor s
FF Write partial concentra-
tions to tape or disk
(FORTRAN unit 14)
(cont i nued)
56
-------
TABLE 7 (continued)
Record type &
Variable Column Format Variable description
Record type 7 — Optional (read only if IOPT = 1)
CONTER(1)
FF
Terrain adjustment factor
—
for stability category 1
CONTER(2)
pp
Terrain adjustment factor
—
for stability category 2
CONTER(3)
FF
Terrain adjustment factor
—
for stability category 3
CONTER(4)
FF
Terrain adjustment factor
—
for stability category 4
scord type
8 — Point
source
information*
PNAME
1-12
3A4
12-character source
—
identification
QEAST
13-20
F8.2
East coordinate of source
uu
QNORD
21-28
F8 .2
North coordinate of source
uu
QJ
29-36
F8.2
Emission rate for pollutant
g/sec
NPOL
PSH
37-44
F8.2
Physical stack height
m
TS
45-52
F8.2
Stack gas temperature
K
D
53-60
F8.2
Stack top inside diameter
m
VS
61-68
F8.2
Stack gas exit velocity
m/sec
QELEV
69-72
F4.0
Stack base ground-level
uhu
elevation
Important; A record containing 'ENDP' in the first 4 columns must
follow the last source record,
(continued)
Units
57
-------
TABLE 7 (continued)
Record type &
Variable Column Format Variable description
Units
Record type 9
CEST
CNOR
NAZ
AZBEG
AZINT
NRAD
RADIL(1)
RADIL(2)
Optional (read only if IOPR = 1)
FF East coordinate of center uu
of polar coordinate grid
FF North coordinate of center uu
of polar coordinate grid
FF Number of azimuths
FF Beginning azimuth (clock- deg
wise from north)
FF Azimuth interval deg
FF Number of radials
FF First radial distance uu
FF Next radial distance uu
RADIL(NRAD)
FF
Last radial distance
uu
Record type 10
ELR
— Optional (read only if IOPT = 1 & IOPR = 1)
FF Polar coordinate receptor
elevation.
The elevations are ordered
so elevations for the first
radial distance are entered
first, then elevations for
each succeeding radial.
There are NAZ times NRAD
elevat ions.
uhu
(continued)
58
-------
TABLE 7 (continued)
Record type &
Variable Column Format Variable description
Units
Record type 11 — Receptor information (Both polar coordinate
generated receptors and read-in receptors, this record, may be
used provided that their total number does not exceed NREMAX
set by the parameter statement.)
RNAME
RREC
SREC
ZR
ELR
1- 8 2A4 8-character alphanumeric
station identification
9-18 F10.3 East coordinate of receptor
19-28 F10.3 North coordinate of
receptor
29-38 F10.0 Receptor height above local
ground level
39-48 F10.0 Receptor ground-level
elevation
uu
uu
m
uhu
Important: A record containing 'ENDR1 in the first 4 columns must
follow the last receptor record.
Record Type 12
IYRS
IDYS
IHRS
IHLIM
•- Additional simulation period
FF 2-digit year for this
simulation
FF Starting Julian day for
this simulation
FF Starting hour for this
simulation
FF Total number of hours to
be simulated
yr
day
hr
hr
There are as many of this record type as there are sources.
59
-------
INTRICACIES OF THE DATA
Most of the input data listed above are straightforward and
typical of information required for Gaussian models. However,
there are some input variables which require additional expla-
nation to ensure proper assignment of values.
Record Type 4
The starting date must be within the period January 1, 1960
to December 31, 1999. Dates outside this range result in program
termination. IYRS is a 2-digit year, that is, if the starting
year is 1984 then IYRS = 84. IDYS is a Julian day between 1 and
366. IHRS is a 2-digit starting hour between 1 and 24.
Record Type 5
NPOL is a 4-character pollutant name for the pollutant whose
dispersion is being simulated. METID, MDATAC, and MDATBC are
compared with variables METNAM, MDATA, and MDATB, respectively,
which are read from the first record of the meteorology file
(FORTRAN unit 9). This is done to assure that the proper meteoro-
logical data is used for the simulation. If the variables do not
match, then execution is terminated.
Record Type 6
To employ a particular option, a 1 is entered on input; other-
wise a zero is entered. Some of the options are described briefly
ne xt.
I OPT -- Terrain adjustment is made if the option is employed.
The use of this option requires input of source ground-level
elevations on record type 8 and receptor ground-level elevations
on record type 11. If polar coordinate receptors are generated
(i.e., IOPR = 1), then record type 10 with elevations for the
60
-------
polar coordinate receptors is also read. Additionally, this
option requires that four terrain adjustment factors, one for
each stability category be entered on record type 7.
IOPD — With IOPD = 0, stack downwash is used if applicable (see
Section 5). With IOPD = 1, stack downwash is not estimated.
IOPG — With IOPG = 0, gradual plume rise from stack top to the
distance of final rise is determined using procedures outlined in
Section 5.
IOPM — With IOPM = 0, calculations are made in the usual way;
IOPM = 1 represents a special case to save calculation time for
elevated plumes during the nighttime. The purpose of this special
case is so that if the simulation is only for extremely tall
stacks, calculations can be avoided for nighttime situations when
the plume can be expected to grow vertically very slowly and have
no impact at the ground. With IOPM = 1 for nighttime conditions,
if the plume bottom is below the height of the turbulent boundary
layer (represented by the mixing height) the calculation is made
in the usual way. However, if the plume bottom is above this
height, this source is assumed not to contribute to receptor
concentrations and no calculations of concentration are made.
IOPQ — If IOPQ = 1, hourly emissions for each point source are
read from unit 10 in subroutine TU430 . A record with valid
emissions must exit for each hour of the simulation.
IOPR — For the user's convenience, implementing this option
(IOPR = 1) provides a means of generating an array of receptors
that are positioned about a specific source or some other point.
If IOPR = 1, then the user must supply the necessary information
on record type 9. If both IOPT = 1 and IOPR = 1, then elevations
of the polar coordinate receptors must be given on record type
10. Receptor information may also be read in on record type 11
as well as generating polar coordinate receptors. The total
61
-------
number of receptors is restricted to that set by the parameter
stateme nt.
IOPWPC — When IOPWPC = 1, an hourly partial concentration file
is written to FORTRAN unit 14. Output can become quite lengthy
since so much information is possible, as the contribution from
each source to each receptor is written. Therefore, care should
be taken to ensure the allocated storage space can accomodate the
amount of data generated.
Record Type 7
If I OPT = 1, then four terrain adjustment factors, one for
each stability category, should be entered on this record. The
values must be real numbers between zero and one. Terrain
adjustment factors outside this range result in program ter-
mination. See Section 5 for a description of the effects of the
terrain adjustment factors. In general, the authors feel that
the terrain adjustment factor should be 0.5 for unstable or
daytime neutral conditions and 0.0 for stable or nighttime neutral
condi t ions.
Record Type 8
The point source information is similar to that required by
most dispersion models. If the option to enter hourly emission
data is not used (i.e., IOPQ = 0), the emission data should be
the best estimate to suit the purposes of the modeler. (May be
average emissions; may be maximum possible emissions.) If the
terrain adjustment option is employed (i.e., IOPT = 1), the
ground-level elevation of each point source must be provided.
A record containing 1ENDP1 in the first 4 columns must follow
the last source record.
62
-------
Record Type 9
By using the radial grid option, the user can construct a
complete radial grid system or only a portion (i.e., sector) of
it. Two examples of how this option might be used are provided in
Figure 11.
Record Type 10
If IOPT = 1 and IOPR = 1, then TUPOS expects a record type
10. The elevations are ordered so that all elevations for the
first radial distance are entered first, then all elevations for
each succeeding radial. There should be NAZ times NRAD elevations.
Record Type 11
An additional method of entering receptors is to specify
their locations on individual records for each receptor. Note
that the receptor height above ground level must be in meters. In
many applications the height may be zero, other situations may
occur where determining concentrations above ground is desirable,
such as at plume centerline. Although no restriction on this
height exists, careful thought should be given to the assignment
of receptor heights far removed from the ground surface.
Values for ELR are required only if the terrain adjustment
option is employed (i.e., IOPT = 1). Note that elevations are
entered in user height units. A receptor whose elevation is below
the lowest stack base elevation or above the lowest stack top
value is flagged in the receptor table.
A record containing ' ENDR' in the first 4 columns must follow
the last receptor record. If no receptors are read in using card
type 11, the record containing 'ENDR' must be read following the
last record type 10 entry or record type 9 if record type 10 is
not used.
63
-------
RECORD TYPE 9
CEST
CNOR
NAZ
AZBEG
AZINT
NRAD
RADIL(l)
RAD IL ( 2)
RADIL(3)
0.0 uu
0.0 uu
16
0.0°
22.5°
3
1.0 uu
2.0 uu
3.0 uu
¦3uu
/ 1UU 1
22.5°
*
\ (0.0) I
RECORD TYPE 9
CEST
CNOR
NAZ
AZBEG
AZINT
NRAD
RADIL(l)
RADIL(2)
10.0 uu
5.0 uu
10
270.0°'
20.0°
2
1.0 uu
2.0 uu
(10 0.5 0)
Figure 11. Two examples of the polar coordinate grid
option.
64
-------
Record Type 12
Additional time periods may be analyzed on a particular run
by including one of these record types for each additional
simulation period. It should be noted that all other control
information remains fixed. An example might be helpful.
Suppose IYRS, IDYS, IHRS, and IHLIM on record type 4 are
initialized as follows: 85, 1, 1, and 24. Thus the first
simulation is for the first day of 1985. If the user also wants
to analyze the 30th day of 1985 , then a record type 12 must be
included with the variables IYRS, IDYS, IHRS, and IHLIM on record
type 12 defined as follows: 85, 30, 1, and 24. It is important to
note that the additional simulation periods cannot go backward in
t ime.
MULTI-LEVEL METEOROLOGICAL DATA FILE
It is recommended that the EPA-developed meteorological pro-
cessor, MPDA-1 (1986), be used to generate the sequential meteoro-
logy file; however, information on the file layout is presented
here for those users wishing to generate a TUPOS-compatible mete-
orology file. The file should be unformatted with the record
layout shown in Table 8. The date in each record must be within
the period January 1, 1960 to December 31, 1999.
65
-------
TABLE 8. RECORD LAYOUT FOR THE METEOROLOGICAL DATA FILE
Variable
Description
Units
Record type 1 (occurs once at top of file)
METNAM(2)
MDATA
MDATB
ND
DESC(18,ND)
An 8 character alphanumeric
identifier for the data
Date-time of data creation
(6 digits)
Date-time of data creation
(6 digits)
Number of 72 character alpha-
numeric description records
ND lines of alphanumeric inform-
ation that describe the file
mo/day/yr
hr/min/sec
Record type 2 (one for each hour)
MYR
Year (2 digits)
yr
MJD
Julian day (3 digits)
day
MHR
Hour (2 digits)
hr
NLLIM
Number of data levels
—
LMX
Level number of mixing height
—
KLASS
Stability category (1 to 4)
—
ZL(NLLIM)
Height of each level
m
TL(NLLIM)
Temperature for each level
K
WDL(NLLIM)
Wind direction for each level
deg
UL(NLLIM)
Wind speed for each level
m/sec
SAL(NLLIM)
aa for each level
radians
SEL(NLLIM)
ae for each level
rad ians
66
-------
OPTIONAL HOURLY EMISSION DATA FILE
If the hourly emissions option is employed (i.e., IOPQ = 1),
TUPOS reads hourly values of emission rate, stack gas temperature,
and stack gas exit velocity from FORTRAN unit 10. The emission
file should be unformatted with the record layout shown in Table
9. The date in each record must be within the period January 1,
1960 to December 31, 1999. If IOPQ = 1 and the emission data for
any hour in the simulation are missing, execution is terminated.
TABLE 9. RECORD LAYOUT FOR THE OPTIONAL HOURLY EMISSIONS FILE
Variable
Description
Units
Record type 1 (one for each hour)
IQYR
IQJD
IQHR
QJ(NPTLIM)
TS(NPTLIM)
VS(NPTLIM)
2-digit year
Julian day
2-digit hour
Emission rate for the pollutant
NPOL for each source NPT
Stack gas temperature for each
source NPT
Stack gas exit velocity for
each source NPT
yr
day
hr
g/sec
K
m/sec
67
-------
SECTION 9
EXECUTION OF THE MODEL AND SAMPLE TEST
EXECUTION
TUPOS produces an error-free compile on UNIVAC EXEC 8 and IBM
MVS computers. A sample job stream is presented below.
END OF JOB
INPUT RECORDS
UNIT 5 s PROGRAM
CONTROL DATA
UNIT 14 = PARTIAL
CONCENTRATIONS
--IF IOPWPC " t
UNIT t2 = HOURLY
CONCENTRATIONS
UNIT 10 s HOURLY
EMISSIONS
UNIT 9 = METEOROLOGY
UNIT 6 s PRINTER
EXECUTE TUPOS
JOB CARD
Figure 12. Sample job stream for TUPOS.
68
-------
A job stream for a UNIVAC EXEC 8 system might have the
following form:
@RUN, R/R JOB-ID,ETC
@ASG, A MODELS*LOAD.
@ASG,A MET.
@USE 9,MET.
@ ASG,A EMIS.
§USE 10 fEMIS. )
\ ii 10PQ. ' I
@ ASG,R HCON. )
@USE 12,HCON.
@ ASG,R PCON. )
] ii 10PWPC « 1
@USE 14,PCON. )
@XQT MODELS* LOAD.TUPOS
(input records shown in Table 10)
I FIN
The following is a sample job stream for an IBM system under
OS or MVS. Units 9, 10, 12, and 14 are assumed to have been
preallocated.
//JOBID '
JOB
(PROJ,ACCT,OTHER),CLASS=A,TIME=1
//XTUPOS
EXEC
PGM=TUPOS,TIME=(,30)
//STEPLIB
DD
DSN=USER.MODELS.LOAD,DISP=SHR
//FT0 9F001
DD
DSN=USER.MET.DATA,DISP=SHR
//FT10F001
DD
DSN=USER.EMIS.DATA,DISP=SHR
10PQ = J
//FT12F001
DD
DSN=USER.HCON.DATA,DISP=SHR
//FT14F001
DD
DSN=USER.PCON.DATA,DISP=SHR
I0PWPC *
//FT06F00 1
DD
SYSOUT=A
//FT0 5F001
DD
•k
(input records shown in Table 10)
/*
//
69
-------
SAMPLE TEST
The example problem discussed in Section 6 is used for model
verification. The meteorological file is generated by executing
the auxiliary FORTRAN program, METVER, provided in Appendix B.
The input data for model verification are given in Table 10.
Annotated output for the example problem is shown in Figure 13.
Users may verify the proper execution of the program by comparing
their results with those given in the figure.
As listed in the Appendix, TUPOS requires just under 8,000
words of core storage for instructions and just under 20,000 words
of core storage for data.
The relative potential impact given as part of the point
source information is the emission over the square of the effec-
tive height for unstable conditions with a 3 m/s stack top wind
speed.
70
-------
TABLE 10. INPUT DATA FOR THE SAMPLE TEST
Record
Record Type
Data column position
12345678
1234567890123 4 567 8901234567 890123456789012 34567890123456789012345678901234567890
TUPOS TEST 9.
THREE SOURCES WITH BID.
USES 24-HOUR SYNTHETIC DATA SET.
83,365,15,24,1.,1.,0.
S02SET6 840210105523
4,0 ,1,0 ,1,0 ,0 ,0,1,1
1 LOW 200. 399.97 700. 75.
2 MEDIUM 199.95 400. 2750. 165.
3 LARGE 200. 400 .0310000 . 335.
ENDP
200 . ,400 ., 15,75.,2.,2,1.,5.
ENDR
1
2
3
4
5
6
455.
3.
16.
0 .
8
425.
4.
38 .
0.
8
425 .
13.
16.
0 .
8
8
9
11
Data column position
12345678
1234567890123 4 56789012345678901234 56789012 3456789012345678901234567 8901234567890
-------
-J
to
TUP0S-1.0 IVERSION 65091)
AN AIR QUALITY DISPERSION (100EL IN
SECTION 2. HON-GUIDELINE MODELS*
IN UMAMAP (VERSION 6) JUL 86.
SOURCE: UNAMAP FILE ON EPA'S UNIVAC 1110, RTP. NC.
Three line run title
TITLE: TUPOS TEST 9.
THREE SOURCES WITH BID.
USES 222.2J'02.0J.04.07.09.09, AND 1«.
NO DATA FOR HOURS 18.19.20.2*.01.05.06,10,11.18, AND 1J.
HOUR 21 HAS ONLY J LEVELS. SOtlE TEMPERATURES ARE MISSING FOR HOUR 02.
VARIATION APPROXIMATES A CLEAR DAY AIID NIGHT.
Information regarding
meteorological file.
» • » GENERAL INPUT INFORMATION • « •
THIS SIMULATION FOR THE POLLUTANT S02 BEGINS AT YEAR: 198J JULIAN DAY: S6S HOUR::15 AND 18
A FACTOR OF l.OOOOOOtOOO HAS BEEN SPECIFIEO YO CONVERT USER LENGTH UNITS TO KILOMETERS.
THIS RUN WILL NOT CONSIDER ANY POLLUTANT LOSS.
OPTION SPECIFICATION (1 = EMPLOY OPTION', 0 3 DO NOT USE OPTION. I
OPTION MEANING
NP2NT <~ PRINT THIS ttANT HOURS OF OlfTPl/T.
t* HOURS.
TECHNICAL OPTIONS
IOPT 0 USE TERRAIN AOJUSTME»fTS.
IOPB I USE euOYAIJCr-IlflUCED OISPERSION.
ioro o ho stack oc;:j:wash.
I0PG 1 NO GRAOUAl PLUttg PISE.
IOf'fl 0 TEST AGAINST MIXING AT NIGHT.
INPUT OPTIONS
IOPQ 0 READ HOURLY EMISSIONS ON UNIT 10.
I0PP 1 INPUT RiOIAL OISTANCES AND GENERATE POUR COORDINATE RECEPTORS.
OUTPUT OPTIONS
IOPUPC 1 WRITE PARTIAL CONCENTRATIONS TO UNIT 1<1.
Figure 13.
Annotated output for sample test.
-------
TITLE: TUPOS TEST 9.
THREE SOURCES WITH DID.
USES 24-HOUR SYNTHETIC DATA SET.
(Run title included, on
every page of listing.
• • POINT SOURCE INFORMATION • « «
SOURCE
8 NAME
1 1 LOU
2 Z MEDIUM
3 3 LARGE
—COORDINATES-
tUSER UNITS)
EAST
200.00
199.95
200.00
NORTH
399.97
400.00
400.03
ELEV
.00
.00
.00
—EMISSIONS (S/SEC)
S02
700.00
2750.00
10000.00
HGT
CM)
75.00
165.00
335.00
-STACK PARAMETERS-
TEMP
(K)
455.00
425.00
425.00
OIA
(M)
3.00
4.00
13.00
VEL
M"4/S"3
357.12 125.69
781.83 462.94
1845.17 2056.67
« » • RANKEO S02 POINT SOURCES * ¦ •
RANK
1
2
3
SOURCE
NUMBER
1
Z
3
REL POTEN
IMPACT
5468.77
4498.94
2937.16
Point sources ranked according
to potential impact.
-vl
U>
Figure 13. (continued)
-------
TITLE: TUPOS TEST 9.
THREE SOURCES UITX BIO.
USES 24-HOUR SYNTHETIC OATA SET.
« • • RECEPTOR INFORMATION • • •
GENERATES 30 POLAR COORDINATE RECEPTORS CENTERED ABOUT (
15 AZIMUTHS BEGINNING AT 7S.0 DEGREES* AT INTERVALS OF
2 RADIAL DIST. (USER UNITS): 1.000 5.000
200.000» 400.000).
2.00 OEGREES.
If IOPR = lt then details
concerning TUPOS-generated
radial grid are provided here.
RECEPTOR
IDENTIFICATION
•COORDINATES
HEIGHT ABOVE
(USER UNITS)
LOCAL GRD-LVl
EAST
NORTH
ELEV
1
75.
1.0
200.97
400.26
.00
.00
2
77.
1.0
200.97
400.22
.00
.00
I
79.
1.0
200.98
400.19
.00
.00
4
61.
1.0
200.99
400.16
.00
.00
S
63.
1.0
200.99
400.12
.00
.00
6
05.
1.0
201.00
400.09
.00
.00
7
07.
1.0
201.00
400.05
.00
.00
6
89.
1.0
201.00
400.02
.00
.00
9
91 .
1.0
201.00
399.96
.00
.00
10
93.
1.0
201.00
399.95
.00
.00
11
95.
1.0
201.00
399.91
.00
.00
12
97.
1.0
200.99
399.68
.00
.00
13
99.
1.0
200.99
1 399.84
.00
.00
14
101.
1.0
200.98
399.81
.00
.00
15
103.
1.0
200.97
399.78
.00
.00
16
75.
5.0
204.83
401.29
.00
.00
17
77.
5.0
204.87
401.12
.00
.00
18
79.
5.0
204.91
400.95
.00
.00
19
81.
5.0
204.94
400.78
.00
.00
:o
63.
5.0
204.96
400.61
.00
.00
21
85.
5.0
204.96
400.44
.00
.00
22
67.
5.0
204.99
400.26
.00
.00
23
89.
5.0
2C5.0O
•400.09
.00
.00
24
91 .
5.0
205.00
399.91
.00
.00
25
93.
5.0
204.99
399.74
.00
.00
26
95.
5.0
204.98
399.56
.00
.00
27
97.
5.0
204.96
399.39
.00
.00
23
99.
5.0
204.94
399.22
.00
.00
29
101.
5.0
204.91
399.05
.00
.00
30
10 V
5-0
204.67
398.66
.00
.00
note: the
TERHAirt^PTION, I0PT,
IS NOT BEING
USED FOR THIS
RUN AND
GROUUO-IEVEL ELEVATIONS (STACK OR RECEPTOR) GIVEN OH INPUT ARE IGNOREO.
/
Radial receptors identified internally. First number
indicates azimuth direction; second number is the
distance from the center in user units. This column
is blank if user's computer does not support the
non-standard FORTRAN statement, ENCODE.
Warning message regarding source
and receptor elevations.
Figure 13.
(cont inued)
-------
-J
U1
TITLE:
TUPOS TEST 9.
THREE SOURCES WITH BID.
USES 2-HOUR SYNTHETIC OATA SET.
MET DATA FOR TEAR:
63 JUL
DAT: 365 HOUR:
15 UK = 4 KLASS a 1
LVL HT MIX
SA
SE
WD U
T
DTHDZ
6 1600.0
.1260
.2560
273.0 6.00
266.50
5 1600.0
.1300
.2510
272.0 7.00
267.50
.0046
4 1S00.0 •
.1320
. 2460
270.0 4.50
265.50
.0296
3 200.0
. 1760
.1720
266.0 2.50
292.00
.0046
2 100.0
.1980
.1520
265.0 2.40
293.00
-.0002
1 SO.O
.2190
.1340
263.0 2.30
293.50
-.0002
1
2
J 4
5
6
7 e
9
FINAL HT (Ml
177.7
322.7 627.1
OIST FIN HT I Kit)
.165
.176
.241
i Final effective
a • • S02 CONCENTRATION TABLE
FOR HOUR
63-365-15 • « *
/to final height
RECEPTOR IDENTIFICATION
HEIGHT ABOVE
(USER UNITS)
LOCAL GPD-LVL
CONCENTRATION
RANK
EAST
NORTH
ELEV
(M)
(hICROGRAMS/M»»3l
1 75.
1.0
200.97
400.26
.00
.00
252.74
24
2 77.
1.0
200.97
400.22
.00
.00
443.52
22
3 79.
1.0
200.96
400.19
.00
.00
709.34
16
4 ex.
1.0
200.99
400.16
.00
.00
1036.70
16
5 63.
1.0
200.99
400.12
.00
.00
1337.46
13
6 es.
1.0
201.00
400.09
.00
.00
1703.16
10
7 07.
1.0
201.00
400.05
.00
.00
1919.52
6
6 69.
1.0
201.00
400.02
.00
.00
1967.33
7
9 91.
1.0
201.00
399.96
.00
.00
1690.16
9
10 93.
1.0
201.00
399.95
.00
.00
1650.74
11
11 95.
1.0
201.00
399.91
.00
.00
1322.34
14
12 97.
1.0
200.99
399.66
.00
.00
970.11
17
13 99.
1.0
200.99
399.64
.00
.00
650.39
19
K 101.
1.0
200.96
399.61
.00
.00
397.36
23
15 103.
1.0
200.97
399.76
.00
.00
220.50
26
16 75.
5.0
204.63
401.29
.00
.00
60.06
29
17 77.
5.0
204.67
401.12
.00
.00
203.90
27
16 79.
5.0
204.91
400.95
.00
.00
561.21
21
19 61.
5.0
204.94
400.76
.00
.00
1256-50
15
20 63.
5.0
204.96
400.61
.00
.00
2306.27
6
21 65.
5.0
204.96
400.44
.00
.00
3472.66
4
22 67.
5.0
204.99
400.26
.00
.00
4293.06
2
23 69.
5.0
205.00
400.09
.00
.00
4364.74
1
24 91.
5.0
205.00
399.91
.00
.00
3646.90
3
25 93.
5.0
204.99
399.74
.00
.00
2505.36
5
26 95.
5.0
204.96
399.56
.00
.00
1409.73
12
27 97.
5.0
204.96
399.39
.00
.00
647.93
20
26 99.
5.0
204.94
399.22
.00
.00
242.16
25
29 101.
5.0
204.91
399.05
.00
.00
73.20
26
30 103.
5.0
204.67
396.66
.00
.00
17.77
30
Receptors ranked according to
concentration (from highest
to lowest concentration).
Output ia abridged.
Figure 13. (continued)
-------
TITLE: TUPOS TEST 9.
THREE SOURCES WITH BIO.
UOES 24-HOUR SYNTHETIC DATA SET.
• • ¦ SinuUTIOH SUmARY • • •
MAXIMUM S02C0NCENTRATI0N FOR THE PERIOD (YR(DAY»HR) 65-365-15 TO W- 1-14
CONCENTRATION: 4364.7*
DATE • 63-365-15
RECEPTOR NUMBER: 23
NUMBER OF HOURLY MET RECOP03 HISSING: H
NUMBER OF HOURLY MET RECORDS INCOMPLETE* 2
CONCENTRATION ESTIMATES HERE MADE FOR: U HRS
••• NORMAL TERMINATION •»»
\ . /
Julian day
1 Maximum concentration for the
simulation provided along with
where it occurred and at what time.
v The number of missing and incomplete
J records printed along with the number
of successful calculations.
Indicates successful Completion.
Figure 13. (continued)
-------
CONCENTRATION FILES
As mentioned earlier, the principal output consists of tape
or disk files. An hourly concentration file is automatically
created by TUPOS; the user has the option of creating a partial
concentration file. Hourly concentrations are written to FORTRAN
unit 12 and hourly partial concentrations to unit 14. The user
is encouraged to use the EPA-developed postprocessor, TUPOS-P
(Turner et al., 1986), to analyze the hourly and partial concen-
tration files. However, the record layouts for both unformatted
files are provided in Tables 11 and 12.
77
-------
TABLE 11. RECORD LAYOUT FOR THE HOURLY CONCENTRATION FILE
Variable
De scr ipt ion
Units
Record type 1 (occurs once at top of file)
IFLAGH Flag to indicate hourly concen-
tration file. A value of 12 is
output to represent unit 12.
Record type 2 (occurs once at top of file)
LINE1(20) 80-character title
LINE2(20) 80-character title
LINE3(20) 80-character title
Record type 3 (occurs once at top of file)
METNAM(2)
MDATA
MDATB
ND
DESC(18,ND)
8-character identifier of the
meteorological data
Month/day/year of data
creation (6 digits)
Hour/minute/second of data
creation (6 digits)
Number of 72-character lines of
description
ND 72-character lines to describe
the meteorological file
mo/day/yr
hr/min/sec
Record type 4 (occurs once at top of file)
NPOL
CONTWO
CELM
4-character pollutant name - —
Multiplier to convert user length km/uu
units to kilometers
Multiplier to convert user height m/uhu
units to meters
(continued)
78
-------
TABLE 11 (continued)
Variable
Description
Units
HAFL
NPTLIM
NRELIM
Pollutant half-life. If zero,
produced no pollutant loss
Number of point sources in this
s imulat ion
Number of receptors in this
s imulation
sec
Record type 5 (occurs once at top of file)
IOPT
IOPB
IOPD
IOPG
IOPM
IOPQ
IOPR
Terrain adjustment option
Buoyancy-induced dispersion option
Stack-tip downwash option
Gradual plume rise option
Test against mixing at night
Hourly emissions input option
Polar coordinate receptor option
Record type 6 (occurs once at top of file if IOPT = 1)
CONTER(4) Terrain adjustment factors
Record type 7 (NPTLIM records, one for each source, at top of file)
PNAME
QEAST
QNORD
QJ
PSH
TS
D
VS
QELEV
IMPS
12-character (3A4) source identifier
East coordinate of source uu
North coordinate of source uu
Emission rate for pollutant NPOL g/sec
Physical stack height m
Stack gas temperature K
Stack diameter m
Stack gas exit velocity g/sec
Stack base ground-level elevation uhu
Significance rank of this source
(continued)
79
-------
TABLE 11 (continued)
Variable Description Units
Record type 8 (occurs once at top of file; one for each receptor,
that is, NRELIM records,)
RNAME 8-character (2A4) receptor identifier
RREC East coordinate of receptor uu
SREC North coordinate of receptor uu
ZR Receptor height above ground-level m
ELR Receptor ground-level elevation uu
STAR Flag (2A1) to indicate receptor status,—
* receptor elevation is below
lowest stack base elevation
** receptor elevation is above
lowest stack top elevation
(Note: Records 9, 10, and 11 are repeated in sequence for each
hour.)
Record type 9 (one for each hour)
IYR 2-digit year yr
IDY Julian day day
LH Hour hr
Record type 10 (one for each hour)
HSAV NPTLIM values of effective plume m
heights for each source followed by
DSAV NPTLIM values of distance to final km
rise for each source
Record type 11 (one for each hour)
PHCHI Hourly concentrations at each g/m^
receptor (NRELIM values)
80
-------
TABLE 12. RECORD LAYOUT FOR THE PARTIAL CONCENTRATION FILE
Variable Description Units
Record type 1 (occurs once at top of file)
IFLAGP Flag to indicate partial concen-
tration file. A value of 14
output to represent unit 14.
Record types 2 through 8 are identical to those given in Table 11
Record type 9 (one for each hour)
IYR 2-digit year yr
IDY Julian day day
LH Hour hr
Record type 10 (one for each source for each hour,that is NPTLIM
records per hour.)
HSAV Effective plume height for this source m
DSAV Distance to final rise for this source km
PARTC Concentrations from this source at g/m^
each receptor (NRELIM values)
(Note: Records 9, 10, and 11 are repeated in sequence for each
hour.)
Record types 1 through 8 are not repeated when the user
requests additional simulation periods analyzed (i.e., record type
12 of Table 7 included in the input stream), since all other con-
trol information remains unchanged. Only hourly concentration
results for each additional simulation period are written accord-
ing to the specifications outlined in Tables 11 and 12. For
instance, for all additional simulation periods only record types
9 through 11 are written to the hourly concentration file and
81
-------
only record types 9 and 10 are written to the partial concen-
tration file. Record types 1 through 8 occur once at the top of
the files.
ERROR MESSAGES AND REMEDIAL ACTION
TUPOS can generate 31 error messages. Each of these termi-
nates program execution. Table 13 lists each error message,
along with its description and suggested corrective action. The
table is ordered on the condition code indicator, ICOND.
ICOND is used to indicate if an error is detected in the
input data which would preclude model execution. A nonzero value
is assigned to ICOND when an input error is detected. The first
3 digits of ICOND indicate the subprogram in which the error
occurred; the last 2 digits indicate the relative position within
the subprogram. For instance, if ICOND = 21003 then the error
occurred in subroutine TU210 at assignment 3 of ICOND.
TABLE 13. ERROR MESSAGES AND REMEDIAL ACTION.
ICOND: 21002
MESSAGE: *** CHECK OPTION LIST (I.E., RECORD TYPE 6).
***0ptI0N INPUT VARIABLES SHOULD BE EITHER 0 OR 1.
***EXECUTION TERMINATED, CONDITION CODE = 21002
DESCRIPTION: User input value other than 0 or 1 for options.
ACTION: Modify values on record type 6 to 0 or 1.
ICOND:
MESSAGE:
DESCRIPTION:
21003
*** CONTER VALUE IS OUTSIDE OF RANGE: ZERO TO ONE.
EXECUTION TERMINATED, CONDITION CODE = 21003
of the terrain adjustment factors is outside
* *~
One
the acceptable range of between 0.0 to 1.0.
(cont inued)
82
-------
TABLE 13 (continued)
ACTION: Change the offending value(s) of CONTER on record
type 7. Values that were entered are printed prior
to the error message.
ICOND:
MESSAGE:
DESCRIPTION:
ACTION:
21004
*** USER TRIED TO INPUT MORE THAN xxxx POINT
SOURCES.
*** EXECUTION TERMINATED, CONDITION CODE = 21004
The user either entered more than the maximum
number of point sources or forgot to place an
1ENDP1 following the last point source.
Reduce the number of point sources and/or place an
'ENDP' following the last point source.
ICOND:
MESSAGE:
DESCRIPTION:
ACTION:
21005
*** INPUT DATA INDICATES THAT THERE ARE xxx POINT
SOURCES FOR THIS SIMULATION.
*** EXECUTION TERMINATED, CONDITION CODE = 21005
No sources were specified for this simulation.
Revise the run stream so that it includes data for
at least one point source.
ICOND:
MESSAGE:
DESCRIPTION:
21006
*** TRYING TO GENERATE xxxxx RECEPTORS, BUT ARE
ONLY ALLOWED xxxxx.
*** EXECUTION TERMINATED, CONDITION CODE = 21006
The user is trying to generate more polar
coordinate receptors than allowed.
(continued)
83
-------
TABLE 13 (continued)
ACTION: Modify NAZ and NRAD on record type 9 so that their
product does not exceed maximum number of receptors
specif ied.
21007
*** USER EITHER TRIED TO INPUT MORE THAN xxxxx
RECEPTORS OR 'ENDR' WAS NOT PLACED AFTER THE LAST
RECEPTOR RECORD.
*** EXECUTION TERMINATED, CONDITION CODE = 21007
More receptors than maximum number specified
(including polar coordinate receptors) were entered
or an 'ENDR1 was not placed after the last receptor
record.
Reduce the receptors input (including polar
coordinate receptors) and/or place an 'ENDR' after
the last receptor record.
ICOND: 210008
MESSAGE: *** NO RECEPTORS HAVE BEEN CHOSEN.
*** EXECUTION TERMINATED, CONDITION CODE = 21008
DESCRIPTION: No receptors have been generated or read in.
ACTION: Restructure the input stream so that receptors are
generated and/or read.
ICOND: 22001
MESSAGE: *** YEAR INPUT (yyyy) IS NOT WITHIN RANGE OF 60-99.
*** EXECUTION TERMINATED, CONDITION CODE = 22001
DESCRIPTION: The year must be within the period 1960-1999.
ACTION: Modify starting year within input stream.
(continued)
ICOND:
MESSAGE;
DESCRIPTION:
ACTION:
84
-------
TABLE 13
(continued)
ICOND: 2200 1
MESSAGE: *** JULIAN DAY INPUT (dddd) IS NOT WITHIN RANGE OF
1-366.
*** EXECUTION TERMINATED, CONDITION CODE = 22001
DESCRIPTION: A valid Julian day must be a positive number not
greater than 366.
ACTION: Modify starting Julian day within input stream.
ICOND: 22001
MESSAGE: *** HOUR INPUT (hhhh) IS NOT WITHIN RANGE OF 1-24.
*** EXECUTION TERMINATED, CONDITION CODE = 22001
DESCRIPTION: The starting hour must be a 2-digit number between
1 and 24.
ACTION: Modify starting hour within input stream.
ICOND: 22001
MESSAGE: *** JULIAN DAY INPUT (dddd) CANNOT BE USED FOR YEAR
yy; THIS IS NOT A LEAP YEAR.
*** EXECUTION TERMINATED, CONDITION CODE = 22001
DESCRIPTION: The starting year is not a leap year therefore the
starting Julian day cannot equal 366.
ACTION: Modify Julian day within input stream.
ICOND: 22002
MESSAGE: *** COMMON SEQUENTIAL HOUR INPUT (hhhhhhh) IS NOT
WITHIN THE REQUIRED RANGE FOR CONVERSION TO DATES
BETWEEN YEARS 60 AND 99.
*** EXECUTION TERMINATED, CONDITION CODE = 22002
DESCRIPTION: The simulation period goes beyond December 31,
1999. This is outside the acceptable date range.
ACTION Reduce the simulation length (IHLIM) on record type
4.
(cont inued)
85
-------
TABLE 13 (continued)
ICOND:
MESSAGE:
DESCRIPTION:
ACTION:
22003
*** ERROR READING MET FILE (UNIT 11).
*** EXECUTION TERMINATED, CONDITION CODE = 22003
The meteorological file does not include the
simulation start date.
Check the meteorological file and make sure it is
complete for the simulation period.
ICOND:
MESSAGE:
DESCRIPTION:
ACTION:
22004
*** SYSTEM ERROR READING INPUT FOR NEXT SIMULATION
PERIOD.
*** EXECUTION TERMINATED, CONDITION CODE = 22004
An error occurred on reading the simulation start
date and duration for the next run.
Make sure the record type 12 has sufficient values
and they are of the proper data type.
ICOND:
30501
MESSAGE:
*** END OF FILE REACHED UPON ATTEMPTING TO
HEADER RECORD OF MET FILE.
READ
*** EXECUTION TERMINATED, CONDITION CODE =
30 50 1
DESCRIPTION:
The meteorology file is empty.
ACTION:
Check the contents of the file.
ICOND:
MESSAGE:
DESCRIPTION:
30502 to 30505
*** ID FROM MET FILE IS: xxxxxxxx yyyyyy zzzzzz
*** EXPECTED ID IS: xxxxxxxx yyyyyy zzzzzz
*** EXECUTION TERMINATED, CONDITION CODE = 30502 to
30 505
The meteorology file identification does not match
that provided on record type 5.
(cont inued)
86
-------
TABLE 13 (continued)
ACTION:
Substitute the proper file in the job stream or
change the identifier to match the data.
ICOND:
32001
MESSAGE:
*** xxxxxx HOURLY MET RECORDS WERE READ.
*** THE MET FILE WAS EXHAUSTED WITHOUT FINDING DATA
FOR HOUR REQUESTED.
*** EXECUTION TERMINATED, CONDITION CODE = 32001
DESCRIPTION:
The meteorology file was exhausted without finding
data for the hour requested.
ACTION:
Complete met file for the length of the simulation.
ICOND:
32002
MESSAGE:
*** YEAR INPUT (yyyy) IS NOT WITHIN RANGE OF 60-99.
*** EXECUTION TERMINATED, CONDITION CODE = 32002.
DESCRIPTION:
The year must be within the period 1960-1999.
ACTION:
Modify the year in the hourly meteorology record.
ICOND:
32002
MESSAGE:
*** JULIAN DAY INPUT (dddd) IS NOT WITHIN RANGE OF
1-366.
*** EXECUTION TERMINATED, CONDITION CODE = 32002
DESCRIPTION:
A valid Julian day must be a positive number not
greater than 366.
ACTION:
Modify the Julian day in the hourly meteorology
record.
ICOND:
32002
MESSAGE:
*** HOUR INPUT (hhhh) IS NOT WITHIN RANGE OF 1-24.
*** EXECUTION TERMINATED, CONDITION CODE = 32002.
(continued)
87
-------
TABLE 13 (continued)
DESCRIPTION: The starting hour must be a 2-digit number between
1 and 24.
ACTION: Modify the hour in the hourly meteorology record.
ICOND:
MESSAGE:
DESCRIPTION:
ACTION:
32002
*** JULIAN DAY INPUT (dddd) CANNOT BE USED FOR YEAR
yy; THIS IS NOT A LEAP YEAR.
*** EXECUTION TERMINATED, CONDITION CODE = 32002
The year read in the hourly meteorology record is
not a leap year therefore the Julian day read
cannot equal 366.
Modify the Julian day in the hourly meteorology
record.
ICOND:
MESSAGE:
DESCRIPTION:
ACTION:
32501
*** xxxxxx HOURLY EMISSION RECORDS WERE READ.
*** THE EMISSION FILE WAS EXHAUSTED WITHOUT FINDING
THE HOUR REQUESTED.
*** EXECUTION TERMINATED, CONDITION CODE = 32501
The emission file was exhausted without finding
data for the hour requested.
Complete-the emissions file for the length of the
simulation.
ICOND:
MESSAGE:
DESCRIPTION
ACTION:
32502
*** YEAR INPUT (yyyy) IS NOT WITHIN RANGE OF 60-99.
*** EXECUTION TERMINATED, CONDITION CODE = 32502
The year must be within the period 1960-1999.
Modify the year in the hourly emissions record.
(cont inued)
88
-------
TABLE 13 (continued)
ICOND:
MESSAGE:
DESCRIPTION:
ACTION:
32502
*** JULIAN DAY INPUT (dddd) IS NOT WITHIN RANGE OF
1-366.
*** EXECUTION TERMINATED, CONDITION CODE = 32502
A valid Julian day must be a positive number not
greater than 366.
Modify the Julian day in the hourly emissions
record.
ICOND:
MESSAGE:
DESCRIPTION:
ACTION:
32502
*** HOUR INPUT (hhhh) IS NOT WITHIN RANGE OF 1-24.
*** EXECUTION TERMINATED, CONDITION CODE = 32502
The starting hour must be a 2-digit number between
1 and 24.
Modify the hour in the hourly emissions record.
ICOND:
MESSAGE:
DESCRIPTION:
ACTION:
32502
*** JULIAN DAY INPUT (dddd) CANNOT BE USED FOR YEAR
yy; THIS IS NOT A LEAP YEAR.
*** EXECUTION TERMINATED, CONDITION CODE = 32502
The year read in the hourly emissions record is not
a leap year therefore the starting Julian day read
cannot equal 366.
Modify the Julian day in hourly emissions record.
ICOND:
MESSAGE:
DESCRIPTION:
EXCEEDS
32503
*** YEAR-DAY-HOUR READ (yy-ddd-hh)
YEAR-DAY-HOUR REQUESTED (yy-ddd-hh).
*** EXECUTION TERMINATED, CONDITION CODE = 32503
The year-day-hour read exceeds the year-day-hour
requested. The emissions file in incomplete. ,
(continued)
89
-------
TABLE 13 (continued)
ACTION:
The file must be complete for simulation period.
ICOND:
40 501
MESSAGE:
*** SYSTEM ERROR ON READING HEADER RECORD OF MET
FILE.
*** EXECUTION TERMINATED, CONDITION CODE = 40501
DESCRIPTION:
An error occurred on reading the header record of
the meteorology file.
ACTION:
Make sure the header record has sufficient values
and they are of the proper data type.
ICOND:
40 50 2
MESSAGE:
*** SYSTEM ERROR OCCURRED WHEN READING THE xxxxxxTH
HOURLY MET RECORD.
*** EXECUTION TERMINATED, CONDITION CODE = 40502
DESCRIPTION:
An error occurred on reading an hourly record from
the meteorology file.
ACTION:
Check the corresponding record of the file.
ICOND:
43001
MESSAGE:
*** SYSTEM ERROR ON READING HOURLY EMISSION RECORD.
*** EXECUTION TERMINATED, CONDITION CODE = 43001
DESCRIPTION:
An error occurred on reading an hourly record from
the emissions file.
ACTION:
Check the corresponding record of the file.
90
-------
REFERENCES
Bjorklund, J. R. and J. F. Bowers. 1982. User's Instructions for
the SHORTZ and LONGZ Computer Programs, Vols. I and II. EPA-
903/9-82-004A and B (NTIS Accession Numbers PB83-146 092 and
PB83-146 100). U.S. Environmental Protection Agency, Middle
Atlantic Region III, Philadelphia, PA.
Briggs, G. A. 1969. Plume Rise. USAEC Critical Review Series,
TID-25075, National Technical Information Service, Springfield,
VA. 81 pp.
Briggs, G. A. 1971. Some Recent Analyses of Plume Rise Obser-
vation. In: Proceedings of the Second International Clean
Air Congress, H. M. Englund and W. T. Beery (eds.), Academic
Press, New York. pp. 1029-1032.
Briggs, G. A. 1972. Discussion on chimney plumes in neutral and
stable surroundings. Atmos. Environ. 6: 507-510.
Briggs, G. A. 1975. Plume rise predictions. In: Lectures on
Air Pollution and Environmental Impact Analysis, D.A. Haugen
(ed.), Amer. Meteorol. Soc., Boston, MA. pp.59-111.
Briggs, G. A. 1983. Personal communication (April 14f 1983).
Briggs, G. A. 1984. Plume Rise and Buoyancy Effects. In: Atmos-
pheric Science and Power Production, DOE/TIC-27601, DE 84005177,
Darryl Randerson (ed.), Technical Information Center, Dept.
of Energy, Oak Ridge, TN. pp 327-366.
Cramer, H. E. 1976. Improved techniques for modeling the dispersion
of tall stack plume. In: Proceedings of the 7th International
Technical Meeting on Air Pollution Modeling and Its Application.
N. 51, NATO/CCMS, 731-780 (NTIS Accession Number PB 270 799).
91
-------
Draxler, R. R. 1976. Determination of atmospheric diffusion
parameters. Atmos. Environ. 10: 99-105.
Hanna, S. R. , G. A. Briggs, J. Deardorff, B. A. Egan, F. A.
Gifford, and F. Pasquill. 1977. AMS-workshop on stability
classification schemes and sigma curves - summary of recom-
mendations. Bull. Am. Meteorol. Soc. 58: 130 5-1309.
Irwin, J. S. 1983. Estimating plume dispersion - a comparison
of several sigma schemes. Journal of Climate and Applied Meteor-
ology 22: 92—114.
Irwin, J. S. 1984. Site-to-site variation in performance of
dispersion parameter estimation schemes. In: Air Pollution
Modeling and Its Application III, C. De Wispelaere (ed.),
Plenum Publishing Corporation. NY. p 605-616.
Pasquill, F. 1961. The estimation of the dispersion of windborne
material. Meteorol. Magazine 90: 33-49.
Pasquill, F. 1976. Atmospheric dispersion parameters in Gaussian
plume modeling. Part II. Possible requirements for change in
the Turner workbook values. EPA-600/4-7 6-030b, U.S. Environ-
mental Protection Agency, Research Triangle Park, NC. 44 pp.
Paumier, J., D. Stinson, T. Kelly, C. Bollinger, and J. S. Irwin,
1986. MPDA-1: A Meteorological Processor for Diffusion Analysis
- User's Guide. EPA-600/8-86/011. U.S. Environmental Protection
Agency, Research Triangle Park, N.C. 192 pp.
Randerson, D. 1979. Review panel on sigma computations. Bu11. Am.
Meteorol. Soc. 60: 682-683.
92
-------
Turner, D. B. 1985. Proposed pragmatic methods for estimating
plume rise and plume penetration through atmospheric layers.
Preliminary communication, Atmos. Environ. 19, 1215-1218.
Turner, D. B. , T. Chico, and J. A. Catalano. 1986. TUPOS-P — A
Program for Reducing Hourly and Partial Concentration Files
Produced by TUPOS: User's Guide. EPA-600/8-86/012. U.S. Envir-
onmental Protection Agency, Research Triangle Park, NC. in
press. 106 pp.
U.S. Environmental Protection Agency. 1983. User's Network for
Applied Modeling of Air Pollution (UNAMAP) (Version 5). (Computer
programs on magnetic tape for air quality simulation models.)
NTIS Accession Number PB-83-244 368, National Technical Infor-
mation Service, U.S. Department of Commerce, Springfield, VA
22161.
Weil, J. C. and R. B. Brower. 1982. The Maryland PPSP Dispersion
Model for Tall Stacks. Environmental Center, Martin Marietta
Corporation Report PPSP-MP-36 to Maryland Department of Natural
Resources. 86 pp.
93
-------
-------
APPENDIX A
LISTING OF FORTRAN SOURCE CODE FOR TUPOS
The source code listing of TUPOS follows. The program consists
of a main module, 29 subroutines, and 1 function.
95
-------
C TUPOS-1.0 (VERSION 85091) TUP00010
C AN AIR QUALITY DISPERSION MODEL IN TUP00020
C SECTION 2. NON-GUIDELINE MODELS, TUP00030
C IN UNAMAP (VERSION 6) JUL 86. TUP00040
C SOURCE: UNAMAP FILE ON EPA'S UNIVAC 1110, RTP, NC.TUP00050
C TUP00060
C * * * PROGRAM ABSTRACT ~ TUPOS TUP00070
C TUP00080
C THIS DISPERSION MODELING TECHNIQUE FOR ESTIMATING CONCEN- TUP00090
C TRATIONS FROM BUOYANT POINT SOURCES IS BASED UPON GAUSSIAN TUP00100
C ASSUMPTIONS AND CALCULATES THE GAUSSIAN PLUME SPREADING, TUP00110
C SIGMA-Y AND SIGMA-Z, UTILIZING HOURLY WIND FLUCTUATION STANDARDTUPOO120
C DEVIATIONS AT PLUME HEIGHT DESCRIBED BY IRWIN (1983). TUP00130
C MULTI-LEVEL METEOROLOGICAL INFORMATION FOR LEVELS ABOVE GROUND TUP00140
C MUST BE FURNISHED IN A SEPARATE INPUT FILE. METEOROLOGICAL TUP00150
C INPUT FILES COMPATIBLE WITH TUPOS INPUT REQUIREMENTS TUP00160
C CAN BE CREATED USING THE METEOROLOGICAL PROCESSOR MPDA-1 TUP00170
C (PAUMIER, ET AL, 1986). WIND SPEED TUP00180
C (INTERPOLATED VERTICALLY FROM THE INPUT DATA) IS USED BOTH FOR TUP00190
C ESTIMATION OF PLUME RISE AND FOR DILUTION. WIND DIRECTION AT TUP00200
C THE PLUME HEIGHT IS USED AS THE TRANSPORT DIRECTION. PLUME TUP00210
C RISE IS CALCULATED IN A LAYER-BY-LAYER MANNER USING THE INPUT TUP00220
C TEMPERATURE AND WIND SPEED PROFILES (TURNER, 1985). TO ACCOUNTTUP00230
C FOR PLUME PENETRATION ABOVE THE MIXING HEIGHT. TUPOS USES THE TUP00240
C "TOP HAT" DISTRIBUTION RECOMMENDED BY BRIGGS (1975). TUP00250
C DISPERSION IS CALCULATED FROM, TUP00260
C TUP00270
C SIGY = X ~ SIGA * FY TUP00280
C TUP00290
C SIGZ = X * SIGE * FZ TUP00300
C TUP00310
C WHERE SIGY AND SIGZ ARE THE STANDARD DEVIATION OF THE HORIZON- TUP00320
C TAL AND VERTICAL WIND ANGLES, RESPECTIVELY; AND FY AND FZ ARE TUP00330
C FUNCTIONS OF TRAVEL TIME AND STABILITY. OPTIONS ARE AVAILABLE TUP00340
C FOR TERRAIN ADJUSTMENT, STACK DOWNWASH, GRADUAL PLUME RISE, ANDTUP00350
C BUOYANCY-INDUCED DISPERSION. COMPUTATIONS CAN BE MADE FOR ANY TUP00360
C NUMBER OF POINT SOURCES AT ANY NUMBER OF RECEPTOR LOCATIONS; TUP00370
C THE MAXIMUM NUMBER OF EACH IS SET AT THE TIME OF PROGRAM TUP00380
C COMPILATION. TUP00390
C TUP00400
C OUTPUT PRINCIPALLY CONSISTS OF TAPE OR DISK CONCENTRATION TUP00410
C FILES WHICH ARE THEN ANALYZED AND SUMMARIZED BY A POSTPRO- TUP00420
C CESSOR, SUCH AS TUPOS-P (TURNER ET AL., 1985). AN HOURLY TUP00430
C CONCENTRATION FILE IS AUTOMATICALLY CREATED BY TUPOS; THE USER TUP00440
C HAS THE OPTION OF CREATING A PARTIAL CONCENTRATION FILE. FOR TUP00450
C CONVENIENCE, A BRIEF SUMMARY OF THE SIMULATION IS PRINTED: TUP00460
C HOWEVER. THE USER IS ENCOURAGED TO EXERCISE THE POSTPROCESSOR TUP00470
C TO OBTAIN A DETAILED LISTING OF THE RESULTS. TUP00480
C TUP00490
C TUP00500
C * * * REFERENCES TUP00510
C TUP00520
C BRIGGS, G. A. 1975. PLUME RISE PREDICTIONS. IN: LECTURES TUP00530
C ON AIR POLLUTION AND ENVIRONMENTAL IMPACT ANALYSIS. D. A. TUP00540
C HAUGEN (ED.). AMER. METEOROL. SOC., BOSTON, MA. PP 59-111.TUP00550
C TUP00560
C IRWIN, J. S. 1983. ESTIMATING PLUME DISPERSION — A COMPARI- TUP00570
C SON OF SEVERAL SIGMA SCHEMES. JOURNAL OF CLIMATE AND TUP00580
C APPLIED METEOROLOGY 22: 92-114. TUP00590
C TUP00600
C PAUMIER, J.. D. STINSON, T. KELLY, C. BOLLINGER, AND J. S. TUP00610
C IRWIN, 1986. MPDA-1: A METEOROLOGICAL PROCESSOR FOR TUP00620
C DIFFUSION ANALYSIS - USER'S GUIDE. EPA-600/ 8-86/011. TUP00630
C U. S. ENVIRONMENTAL PROTECTION AGENCY, RESEARCH TUP00640
C TRIANGLE PARK, NC. 192PP. TUP00650
C TUP00660
C PIERCE, THOMAS E., AND TURNER, D. BRUCE, 1980: USER'S GUIDE TUP00670
C FOR MPTER - A MULTIPLE POINT GAUSSIAN DISPERSION ALGORITHM TUP00680
C WITH OPTIONAL TERRAIN ADJUSTMENT. EPA-600/8-80-016. U. S. TUP00690
C ENVIRONMENTAL PROTECTION AGENCY. RESEARCH TRIANGLE PARK, NC TUP00700
96
-------
C 239 P. TUP00710
C TUP00720
C TURNER, D. B. 1985. PROPOSED PRAGMATIC METHODS FOR ESTIMATINGTUP00730
C PLUME RISE AND PLUME PENETRATION THROUGH ATMOSPHERIC LAYERS.TUP00740
C "PRELIMINARY COMMUNICATION" IN ATWOS. ENVIRON. 19, 7, 1215- TUP00750
- C 1218. TUP00760
C TUP00770
C TURNER, D. B., T. CHICO, AND J. A. CATALANO. 1986. TUPOS — TUP00780
C A MULTIPLE SOURCE GAUSSIAN DISPERSION ALGORITHM USING TUP00790
C ON-SITE TURBULENCE DATA. EPA/600/ 8-86/010. U. S. ENVIRON-TUP00800
C MENTAL PROTECTION AGENCY, RESEARCH TRIANGLE PARK, NC. TUP00810
C 171PP. TUP00820
C TUP00830
C TURNER, D. B., T. CHICO, AND J. A. CATALANO. 1986. TUPOS-P —TUP00840
C A PROGRAM FOR ANALYZING HOURLY AND PARTIAL CONCENTRATION TUP00850
C FILES PRODUCED BY TUPOS. EPA/600/ 8-86/012. U. S. ENVIRON-TUP00860
C MENTAL PROTECTION AGENCY, RESEARCH TRIANGLE PARK, NC. TUP00870
C 106 PP. TUP00880
C TUP00890
C * * * AUTHORS OF MODEL CODE FOR TUPOS TUP00900
C TUP00910
C D. BRUCE TURNER# AND TOM CHICO# TUP00920
C *ON ASSIGNMENT TO EPA FROM NOAA, DEPT OF COMMERCE. TUP00930
C #AEROCOMP, INC. TUP00940
C TUP00950
C TUP00960
C * * * ACKNOWLEDGMENTS TUP00970
C TUP00980
C THE AUTHORS OF THE MODEL CODE ARE GRATEFUL TO ALFREIDA D. TUP00990
C RANKINS FOR HER COMPUTER ASSISTANCE AND EXPERTISE, TO THOMAS TUP01000
C E. PIERCE FOR HIS WORK ON THE MPTER WHICH FORMED A CONVENIENT TUP01010
C FOUNDATION FOR THIS MODEL, AND TO JOHN S. IRWIN FOR HELPFUL TUP01020
C DISCUSSIONS AND DETAILED EXAMINATION OF MODEL CODE. TUP01030
C TUP01040
C A MODEL IS ONLY AS GOOD AS ITS WEAKEST INPUT DATA AND IT TUP01050
C SHOULD BE NOTED THAT THE ENVIRONMENTAL OPERATIONS BRANCH HAS TUP01060
C BEGUN WORK BY CONTRACT AND INTERAGENCY AGREEMENT POINTED TUP01070
C TOWARD EVALUATING VARIOUS METEOROLOGICAL INSTRUMENT SYSTEMS AS TUP01080
C TO THEIR ABILITY TO MEASURE ATMOSPHERIC VELOCITY AND TUP01090
C TURBULENCE. PROJECT OFFICER FOR THIS EFFORT IS DR. P. L. TUP01100
C FINKELSTEIN. TWO REPORTS RESULTING FROM THIS EFFORT ARE: TUP01110
C TUP01120
C KAIMAL. J.C., J. E. GAYNOR, P. L. FINKELSTEIN. M. E. TUP01130
C GRAVES AND T. J. LOCKHART, 1985: AN EVALUATION OF TUP01140
C WIND MEASUREMENTS BY FOUR DOPPLER SODARS. EPA-600/ TUP01150
C 3-84-111. U. S. ENVIRONMENTAL PROTECTION AGENCY. TUP01160
C RESEARCH TRIANGLE PARK, NC. 124 PP. (AVAILABLE TUP01170
C ONLY FROM NTIS, ACCESSION NUMBER PB85-115 301.) TUP01180
C TUP01190
C KAIMAL, J.C., J. E. GAYNOR, P. L. FINKELSTEIN, M. E. TUP01200
C GRAVES AND T. J. LOCKHART, 1985: A FIELD COMPARISON TUP01210
C OF IN SITU METEOROLOGICAL SENSORS. EPA-600/ TUP01220
C 3-85-057. U. S. ENVIRONMENTAL PROTECTION TUP01230
C AGENCY. RESEARCH TRIANGLE PARK, NC. 108 PP. TUP01240
C (AVAILABLE ONLY FROM NTIS, ACCESSION NUMBER TUP01250
C PB85-196 988.) TUP01260
C TUP01270
C * * * PROGRAM SUPPORTED BY: TUP01280
C TUP01290
C ENVIRONMENTAL OPERATIONS BRANCH TUP01300
C MAIL DROP 80, EPA TUP01310
C RESEARCH TRIANGLE PARK, NC 27711 TUP01320
C TUP01330
C PHONE: (919) 541-4564, FTS 629-4564. TUP01340
C TUP01350
C TUP01360
C * * * TWO SYSTEMS OF LENGTH AND COORDINATES ARE USED IN THIS PROGRAM:TUP01370
C TUP01380
C THE FIRST SYSTEM. USER UfllTS, IS SELECTED BY THE USER AND TUP01390
C NORMALLY USES THE COORDINATE SYSTEM OF THE EMISSION INVENTORY. TUP01400
97
-------
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
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
ALL LOCATIONS INPUT BY THE USER (SUCH AS SOURCES AND RECEPTORS)TUP01410
ARE IN THIS SYSTEM. ALSO AS A CONVENIENCE TO THE USER,
LOCATIONS ON OUTPUT ARE ALSO IN THIS SYSTEM.
ALL
THE SECOND SYSTEM. X, Y. IS AN UPWIND, CROSSWIND
COORDINATE SYSTEM RELATIVE TO EACH RECEPTOR. THE X-AXIS IS
DIRECTED UPWIND (SAME AS WIND DIRECTION FOR THE HOUR). IN
ORDER TO DETERMINE DISPERSION PARAMETER VALUES AND EVALUATE
EQUATIONS FOR CONCENTRATION ESTIMATES, DISTANCES IN THIS
SYSTEM MUST BE IN KILOMETERS. THIS SYSTEM IS INTERNAL AND IS
NOT APPARENT TO THE USER.
* * * INPUT/OUTPUT INFORMATION
FORTRAN DATA SET
UNIT
5 CONTROL INPUT
6 OUTPUT
9 METEOROLOGY (IN)
10 HOURLY EMISSIONS (IN)
12 HOURLY CONCENTRATIONS (OUT)
14 PARTIAL CONCENTRATIONS (OUT)
I/O UNIT
READER OR DISK
PRINTER OR DISK
DISK OR TAPE
DISK OR TAPE
DISK OR TAPE
DISK OR TAPE
* * * STRUCTURE AND MODULE SUMMARY
TU100 - MODEL MULTILEVEL BUOYANT PLUME
TU210 - PROCESS CONTROL INPUTS
TU305 - GET MET FILE HEADER
TU405 - READ MET FILE
TU310 - PROCESS SOURCE INPUT
TU410 - CHARACTERIZE SOURCES
TU415 - RANK SIGNIFICANT SOURCES
TU315 - PROCESS RECEPTOR INPUT
TU420 - GENERATE POLAR RECEPTORS
TU425 - PRODUCE RECEPTOR TABLE
TU220 - EXECUTE DISPERSION SIMULATION
CHRON - DATE/TIME TO INTEGER
ICHRON - INTEGER TO DATE/TIME
TU320 - GET HOURLY MET DATA
TU405 - READ MET FILE
CHRON - DATE/TIME TO INTEGER
TU325 - GET HOURLY EMISSIONS
TU430 - READ EMISSIONS FILE
CHRON - DATE/TIME TO INTEGER
TU330 - CALCULATE CONCENTRATIONS
TU435 - CALCULATE LAYER-BY-LAYER PLUME RISE
TU510 - CALCULATE POTENTIAL
TEMPERATURE GRADIENT
TU515 - CALCULATE STACK TIP
DOWNWASH
TU520
TU530
TUP01420
TUP01430
TUP01440
TUP01450
TUP01460
TUP01470
TUP01480
TUP01490
TUP01500
TUP01510
TUP01520
TUP01530
TUP01540
TUP01550
TUP01560
TUP01570
TUP01580
TUP01590
TUP01600
TUP01610
TUP01620
TUP01630
TUP01640
TUP01650
TUP01660
TUP01670
TUP01680
TUP01690
TUP01700
TUP01710
TUP01720
TUP01730
TUP01740
TUP01750
TUP01760
TUP01770
TUP01780
TUP01790
TUP01800
TUP01810
TUP01820
TUP01830
TUP01840
TUP01850
TUP01860
TUP01870
TUP01880
TUP01890
TUP01900
- UNSTABLE NEUTRAL BUOYANCY RISETUP01910
TU335
TU340
UNSTABLE NEUTRAL RESIDUAL
BUOYANCY
TU540 - STABLE BUOYANCY RISE
TU550 - STABLE RESIDUAL BUOYANCY
TU440 - CALCULATE PLUME PENETRATION
TU445 - CALCULATE EMISSION METEOROLOGY
TU450 - CALCULATE DISPERSION PARAMETERS
TU455 - CALCULATE RELATIVE CONCENTRATION
ZF - FIND HEIGHT OF MAXIMUM.
UPDATE MAXIMUM CONCENTRATION
OUTPUT HOURLY RESULTS
PARAMETER (NLMAX=20,NPTMAX=25,NREMAX=180,NDMAX=40)
USE OF PARAMETER STATEMENT SETS: MAXIMUMS FOR
NUMBER OF VERTICAL LEVELS FOR METEOROLOGY (NLMAX),
NUMBER OF POINT SOURCES (NPTMAX),
NUMBER OF RECEPTORS (NREMAX). AND
NUMBER OF LINES OF DESCRIPTION OF MET INFORMATION (NDMAX).
TUP01920
TUP01930
TUP01940
TUP01950
TUP01960
TUP01970
TUP01980
TUP01990
TUP02000
TUP02010
TUP02020
TUP02030
TUP02040
TUP02050
TUP02060
TUP02070
TUP02080
TUP02090
TUP02100
98
-------
c
c
c
COMMON /RUNCOM/CELM,CONTTVO,CTER.HAFL.TLOS.CONTER(4),IYRS,IDYS,
1 IHRS,IHLIM,IOPT,IOPB,IOPD,IOPG,IOPM,IOPQ,IOPR,
2 IOPWPC,NPOL,LINE1(20),LINE2(20;,LINE3(20j,NPRNT
COMMON /METCOM/DTHDZ(NLMAX).SAL(NLMAX),SEL(NLMAX),TL(NLMAX),
1 UL(NLMAX).WDL(NLMAX),ZL(NLMAX),KLASS,LMX,MDATA,
2 MDATB,MEtNAM(2),MYR,MJD,MHR,ND,NLLIM,DESC(18,NDMAX)
COMMON /SORCOM/D? NPTMAX j_, PNAME ( 3. NPTMAX), PSH (NPTMAX J, QJ (NPTMAX),
1 QELEV(NPTMAX),QEAST(NPTMAX),QNORD(NPTMAX),
2 TS^NPTOA)0 ^VS(NPTMAX),IQYR,IQJD,IQHR,NPTLIM,
COMMON /RECCOM/ELR(NREMAX),PARTC(NREMAX,NPTMAX),PHCHI(NREMAX),
1 RNAME(2,NREMAX),RREC(NREMAX),SREC(NREMAX),
2 STAR(2,NREMAX),ZR(NREMAX),NRELIM
COMMON /INOUT/ IN,10
DATA BLANK/' '/
WRITE HEADER.
WRITE (6 1234)
1234 FORMAT ('1',21X,'TUPOS-1.0 (VERSION 85091)'/
1 22X,'AN AIR QUALITY DISPERSION MODEL IN'/
2 22X,'SECTION 2. NON-GUIDELINE MODELS,'/
C
C
C
C
C
C
C
C
C
C
C
C
3 22X,'IN UNAMAP (VERSION 6) JUL 86.'/
4 22X,'SOURCE: UNAMAP FILE ON EPA"S UN
INITIALIZE.
IN = 5
10 = 6
ICOND = 0
DO 20 I = 1,2
DO 10 J = 1,NREMAX
START I,J) = BLANK
10 CONTINUE
20 CONTINUE
PROCESS CONTROL INPUTS.
CALL TU210(ICOND)
IF (ICOND .EQ. 0) GO TO 100
WRITE(IO.1000)ICOND
GO TO 999
EXECUTE DISPERSION SIMULATION.
100 CALL TU220(ICOND)
IF (ICOND .EQ. 0) GO TO 200
WRITE(10.1000)ICOND
GO TO 999
SUCCESSFUL EXECUTION.
200 WRITE(IO.IOIO)
999 STOP
FORMAT STATEMENTS.
IVAC 1110, RTP, NC.')
1000 FORMAT('0*** EXECUTION TERMINATED, CONDITION CODE = ',15)
1010 FORMAT('0*** NORMAL TERMINATION ~**')
END
C
C
C
C
C
C
SUBROUTINE TU210(ICOND)
210-PROCESS-CONTROL-INPUTS
PARAMETER LIST:
OUTPUT: ICOND - CONDITION INDICATOR (0
CALLING ROUTINES:
NO ERROR)
TUP02110
TUP02120
TUP02130
TUP02140
TUP02150
TUP02160
TUP02170
TUP02180
TUP02190
TUP02200
TUP02210
TUP02220
TUP02230
TUP02240
TUP02250
TUP02260
TUP02270
TUP02280
TUP02290
TUP02300
TUP02310
TUP02320
TUP02330
TUP02340
TUP02350
TUP02360
TUP02370
TUP02380
TUP02390
TUP02400
TUP02410
TUP02420
TUP02430
TUP02440
TUP02450
TUP02460
TUP02470
TUP02480
TUP02490
TUP02500
TUP02510
TUP02520
TUP02530
TUP02540
TUP02550
TUP02560
TUP02570
TUP02580
TUP02590
TUP02600
TUP02610
TUP02620
TUP02630
TUP02640
TUP02650
TUP02660
TUP02670
TUP02680
TUP02690
TUP02700
TUP02710
TUP02720
TUP02730
TUP02740
TUP02750
TUP02760
TUP02770
TUP02780
TUP02790
99
-------
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
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
MAIN
SUBPROGRAMS CALLED:
TU305, TU310, TU315
DESCRIPTION:
THIS MODULE PERFORMS ALL INPUT OPERATIONS TO UNIT 5, THE
CONTROL INPUT FILE AND CALLS A NUMBER OF MODULES TO PROCESS
THE INPUT. IF AN ERROR IS DETECTED IN THE DATA WHICH
PRECLUDES MODEL EXECUTION, A NONZERO VALUE IS ASSIGNED TO
ICOND.
********** CONTROL INPUT DATA (UNIT 5) **********
RECORD TYPES 1-3: ALPHANUMERIC DATA FOR TITLES. FORMAT(20A4)
LINE1 - 80 ALPHANUMERIC CHARACTERS.
LINE2 - 80 ALPHANUMERIC CHARACTERS.
LINE3 - 80 ALPHANUMERIC CHARACTERS.
RECORD TYPE 4: CONTROL.
FORMAT (FREE)
IYRS - 2-DIGIT YEAR FOR THIS SIMULATION.
IDYS - STARTING JULIAN DAY FOR THIS SIMULATION.
IHRS - STARTING HOUR FOR THIS SIMULATION.
IHLIM - THE TOTAL NUMBER OF HOURS TO BE SIMULATED.
CONTWO - MULTIPLIER TO CONVERT USER UNITS TO KILOMETERS.
EXAMPLE MULTIPLIERS:
FEET TO KM 3.048E-04
MILES TO KM 1.609344
METERS TO KM 1.0E-03
CELM - MULTIPLIER TO CONVERT USER HEIGHT UNITS TO METERS.
EXAMPLE MULTIPLIER:
FEET TO METERS 0.3048
HAFL - POLLUTANT HALF-LIFE (SECONDS); AN ENTRY OF ZERO
WILL CAUSE NO POLLUTANT LOSS.
RECORD TYPE 5: MET DATA IDENTIFIERS. FORMAT (3A4.2I6)
METID, MDATAC, MDATBC WILL BE USED TO COMPARE
WITH INFO IN FIRST RECORD OF MET FILE TO INSURE
PROPER DATA USED.
NPOL - 4 CHARACTER POLLUTANT NAME.
METID - 8 CHARACTER IDENTIFIER.
MDATAC - MO DAY YR OF DATA CREATION (6 DIGITS).
MDATBC - HR MIN SEC OF DATA CREATION (6 DIGITS).
RECORD TYPE 6: TECHNICAL & EXTERNAL FILE OPTIONS. FORMAT (FREE)
NPRNT
- NO. HRS PRINTED OUTPUT
1 = EMPLOY OPTION; 0 = DON'T USE OPTION.
TECHNICAL OPTIONS:
IOPT - USE TERRAIN ADJUSTMENTS.
IOPB - USE BUOYANCY INDUCED DISPERSION.
IOPD - NO STACK TIP DOWNWASH.
IOPG - NO GRADUAL PLUME RISE.
IOPM - TEST FOR PLUME WITHIN TURBULENT BOUNDARY
LAYER (NIGHTTIME).
IDFLT - OPTION FOR DEFAULT VALUES.
EMPLOYING DEFAULT OPTION USES MODEL FEATURES
ACCORDING TO AUTHOR'S PREFERENCE.
INPUT OPTIONS:
IOPQ - READ HOURLY EMISSIONS.(UNIT 10)
IOPR - INPUT RADIAL DISTANCES AND GENERATE POLAR
COORDINATE RECEPTORS.
TUP02800
TUP02810
TUP02820
TUP02830
TUP02840
TUP02850
TUP02860
TUP02870
TUP02880
TUP02890
TUP02900
TUP02910
~TUP02920
TUP02930
TUP02940
TUP02950
TUP02960
TUP02970
TUP02980
TUP02990
TUP03000
TUP03010
TUP03020
TUP03030
TUP03040
TUP03050
TUP03060
TUP03070
TUP03080
TUP03090
TUP03100
TUP03110
TUP03120
TUP03130
TUP03140
TUP03150
TUP03160
TUP03170
TUP03180
TUP03190
TUP03200
TUP03210
TUP03220
TUP03230
TUP03240
TUP03250
TUP03260
TUP03270
TUP03280
TUP03290
TUP03300
TUP03310
TUP03320
TUP03330
TUP03340
TUP03350
TUP03360
TUP03370
TUP03380
TUP03390
TUP03400
TUP03410
TUP03420
TUP03430
TUP03440
TUP03450
TUP03460
TUP03470
TUP03480
TUP03490
100
-------
C TUP03500
C OUTPUT OPTIONS: TUP03510
C IOPWPC - WRITE PARTIAL CONCENTRATIONS TO DISK OR TAPE TUP03520
C UNIT 14. TUP03530
C TUP03540
C*** RECORD TYPE 7: TERRAIN ADJUSTMENT FACTORS. FORMAT (FREE) TUP03550
C READ ONLY IF IOPT IS 1. TUP03560
C CONTER(I), I = 1,4 (MUST BE BETWEEN 0. AND 1.) TUP03570
C TUP03580
C*** RECORD TYPE 8: POINT SOURCE CARD. FORMAT(3A4,7F8.2,F4.0) TUP03590
C TUP03600
C (UP TO NPTMAX POINT SOURCE CARDS ARE ALLOWED.) TUP03610
C PNAME(I,NPT) 1-12 3A4 12 CHARACTER SOURCE IDENTIFICATION. TUP03620
C QEAST(NPT) 13-20 F8.2 EAST COORD. OF PT. SOURCE (USER UNITS) TUP03630
C QNORD(NPT) 21-28 F8.2 NORTH COORD. OF PT. SOURCE (USER UNITS)TUP03640
C QJ(NPT) 29-36 F8.2 EMISSION RATE (G/SEC) FOR POLLUTANT NPOTUP03650
C PSH(NPT) 37-44 F8.2 PHYSICAL STACK HEIGHT (METERS) TUP03660
C TS(NPT) 45-52 F8.2 STACK GAS TEMPERATURE (KELVIN) TUP03670
C D(NPT) 53-60 F8.2 STACK TOP INSIDE DIAMETER (METERS) TUP03680
C VS(NPT) 61-68 F8.2 STACK GAS EXIT VELOCITY (M/SEC) TUP03690
C QELEV(NPT) 69-72 F4.0 STACK BASE GROUND-LEVEL ELEVATION TUP03700
C (USER HEIGHT UNITS) TUP03710
C TUP03720
C !!! IMPORTANT !!! TUP03730
C RECORD WITH ENDP IN COLS 1-4 IS USED TO SIGNIFY END OF POINT TUP03740
C SOURCE INPUT. TUP03750
C TUP03760
C*** RECORD TYPE 9: POLAR COORDINATE RECEPTORS. FORMAT (FREE) TUP03770
C TUP03780
C (USED IF IOPR = 1) TUP03790
C CEST EAST COORDINATE ABOUT WHICH POLAR COORD GRID IS TUP03800
C CENTERED (USER UNITS). TUP03810
C CNOR NORTH COORDINATE ABOUT WHICH POLAR COORD GRID IS TUP03820
C CENTERED (USER UNITS). TUP03830
C NAZ NUMBER OF AZIMUTHS. TUP03840
C AZBEG BEGINNING AZIMUTH (DEGREES, CLOCKWISE FROM NORTH). TUP03850
C AZINT AZIMUTH INTERVAL (DEGREES). TUP03860
C NRAD NUMBER OF RADIALS. TUP03870
C RADIL RADIAL DISTANCES (USER UNITS; NRAD OF THESE). TUP03880
C TUP03890
C NOTE THAT IF NO TERRAIN AND NO RECEPTOR COORD TO BE TUP03900
C READ IN, MUST HAVE AN 'ENDR' RECORD HERE!! TUP03910
C TUP03920
C*** RECORD TYPE 10: POLAR COORDINATE RECEPTOR ELEV. FORMAT (FREE) TUP03930
C INPUT ONLY IF BOTH IOPT = 1 AND IOPR =1. TUP03940
C TUP03950
C ELR - POLAR COORDINATE RECEPTOR ELEVATION (USER HT UNITS) TUP03960
C READ IN RECEPTOR ELEVATIONS (USER HEIGHT UNITS) ORDERING TUP03970
C SO THAT ALL AZIMUTHS FOR THE FIRST RADIAL DISTANCE ARE ENTERED TUP03980
C FIRST, THEN ALL AZIMUTHS FOR EACH SUCCEEDING RADIAL. TUP03990
C TUP04000
C NOTE THAT IF NO RECEPTOR COORDINATES TO BE READ IN, TUP04010
C MUST HAVE AN 'ENDR' RECORD HERE!! TUP04020
C TUP04030
C*** RECORD TYPE 11: RECEPTORS. FORMAT(2A4,2F10.3,2F10.0) TUP04040
C TUP04050
C (UP TO NREMAX RECEPTORS MAY BE GENERATED INCLUDING POLAR TUP04060
C COORDINATE ONES IF IOPR =1.) TUP04070
C RNAME(I),1=1,2 ( 1- 8) 2A4 8 DIGIT ALPHANUMERIC STATION TUP04080
C IDENTIFICATION. TUP04090
C RREC (9-18) F10.3 EAST COORDINATE OF RECEPTOR (USER UNITS) TUP04100
C SREC (19-28) F10.3 NORTH COORDINATE OF RECEPTOR (USER UNITS) TUP04110
C ZR (29-38) F10.0 RECEPTOR HEIGHT ABV LOCAL GROUND-LEVEL (M) TUP04120
C ELR (39-48) F10.0 RECEPTOR GRD-LVL ELEVATION (USER HT UNITS) TUP04130
C TUP04140
C !!! IMPORTANT !!! TUP04150
C RECORD WITH 'ENDR' IN COLS 1-4 IS USED TO SIGNIFY THE END OF TUP04160
C THE RECEPTOR RECORDS. TUP04170
C TUP04180
C*** RECORD TYPE 12: ADDITIONAL SIMULATION PERIOD. FORMAT (FREE) TUP04190
101
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
IYRS - 2-DIGIT YEAR FOR ADDITIONAL SIMULATION PERIOD.
IDAYS - STARTING JULIAN DAY FOR THIS SIMULATION.
IHRS - STARTING HOUR FOR THIS SIMULATION.
IHLIM - THE TOTAL NUMBER OF ADDITIONAL HRS TO BE SIMULATED
PARAMETER (NPTOAX=25,NREMAX=180,NRL=15)
DIMENSION METID(2).RADIL(NRL)
COMMON /RUNCOM/CELM.CONTWO,CTER.HAFL,TLOS,CONTER(4).IYRS,IDYS,
1 IHRS,IHLIM,IOPT,IOPB,IOPD,IOPG,IOPM,IOPQ,IOPR,
2 IOPWPC, NPOL, LINE1 (20LINE2(20),LINE3 (20). NPRNT
COMMON /SORCOM/D(NPTMAX),PNAME(3,NPTMAX),PSH(NPTMAX),QJ(NPTMAX),
1 QELEV(NPTMAX),QEAST(NPTMAX),QNORD(NPTMAX),
2 TS(NPTMAX),VS(NPTMAX),IQYR,IQJD,IQHR.NPTLIM,
3 IMPS(NPTMAX)
COMMON /RECCOM/ELR(NREMAX),PARTC(NREMAX,NPTMAX).PHCHI(NREMAX),
1 RNAME(2,NREMAX),RREC(NREMAX_),SREC (NREMAX),
2 STAR(2,NREMAX),ZR(NREMAX),NRELIM
COMMON /INOUT/ IN,10
DATA ENDP/'ENDP'/. ENDR/'ENDR'/
READ RECORD TYPES 1-3.
READ(IN,1000) LINE1,LINE2,LINE3
WRITE(10,3000) LINE1,LINES,LINE3
READ RECORD TYPES 4 AND 5.
READ(IN,*) IYRS.IDYS.IHRS,IHLIM,CONTWO,CELM,HAFL
READ(IN,1010) NPOL,METID,MDATAC,MDATBC
READ HEADER RECORD OF MET FILE.
CALL TU305(METID,MDATAC,MDATBC,ICOND)
IF (ICOND .NE. 0) GO TO 999
READ RECORD TYPE 6.
READ(IN,*) NPRNT,IOPT,IOPB.IOPD.IOPG,IOPM.IDFLT.IOPQ,IOPR,IOPWPC
IF ((IOPT .NE. 0) .AND. (IOPT .NE. 1)) ICOND = 21002
IF
IF
IF
IF
IF
IF
IF
IF
IOPB .NE. 0) .AND. (IOPB .NE. 1
IOPD .NE. 0) .AND. (IOPD .NE. l)
IOPG .NE. 0) .AND. (IOPG .NE. 1
IOPM .NE. 0) .AND. (IOPM .NE. 1
.AND
IOPQ .NE. 0
IOPR .NE. 0) .AND.
IOPQ .NE. 1
IOPR .NE. 1
ICOND = 21002
ICOND = 21002
ICOND = 21002
ICOND = 21002
ICOND = 21002
ICOND = 21002
IOPWPC .NE. 0) .AND. (IOPWPC .NE. 1)) ICOND
(IDFLT — - • •
) GO TO 50
IDFLT.NE.O).AND.(IDFLT.NE.1)) ICOND = 21002
IF (ICOND .EQ. 6l ~ ""
21002
WRITE(10.2005)
GO TO 999
C
C
C
WRITE GENERAL INPUT INFORMATION.
50 WRITE(10,3010) NPOL,IYRS,IDYS,IHRS,IHLIM,CONTWO
IF (HAFL .GT. 0.0) GO TO 60
TLOS = 0.
WRITE (10,3020)
GO TO 80
60 WRITE(10,3030) HAFL
TLOS = 693./HAFL
80 IF (IOPT .EQ. 0) GO TO 100
IF(CELM .EQ. 0.) CELM = 1.
WRITE(10,3040) CELM
100 WRITE(10,3050) NPRNT
WRITEf10,3060) IOPT,IOPB,IOPD,IOPG,IOPM,IOPQ,IOPR
WRITE(10,3070) IOPWPC
READ RECORD TYPE 7.
TUP04200
TUP04210
TUP04220
TUP04230
.TUP04240
TUP04250
TUP04260
TUP04270
TUP04280
TUP04290
TUP04300
TUP04310
TUP04320
TUP04330
TUP04340
TUP04350
TUP04360
TUP04370
TUP04380
TUP04390
TUP04400
TUP04410
TUP04420
TUP04430
TUP04440
TUP04450
TUP04460
TUP04470
TUP04480
TUP04490
TUP04500
TUP04510
TUP04520
TUP04530
TUP04540
TUP04550
TUP04560
TUP04570
TUP04580
TUP04590
TUP04600
TUP04610
TUP04620
TUP04630
TUP04640
TUP04650
TUP04660
TUP04670
TUP04680
TUP04690
TUP04700
TUP04710
TUP04720
TUP04730
TUP04740
TUP04750
TUP04760
TUP04770
TUP04780
TUP04790
TUP04800
TUP04810
TUP04820
TUP04830
TUP04840
TUP04850
TUP04860
TUP04870
TUP04880
TUP04890
102
-------
0.) .OR. (CONTER(I) .GT. 1.)) GO TO 130
C
C
C
C
C
C
C
C
C
C
c
c
c
c
c
c
c
c
c
IF (IOPT .EQ. 0) GO TO 140
READ(IN,#) CONTER
WRITE(10,3080) CONTER
DO 120 1=1,4
IF ((CONTER(I) .LT.
120 CONTINUE
GO TO 140
130 WRITE (10.2010)
ICOND = 21003
GO TO 999
GET SOURCE INFORMATION.
140 NPT=0
IF DEFAULT, SET VALUES.
NOTE THAT DEFAULT (TO EXECUTE TUPOS ACCORDING TO
AUTHOR'S PREFERENCE) USES BUOYANCY-INDUCED DISPERSION,
STACK-TIP DOWNWASH, DOES NOT USE GRADUAL RISE (EXCEPT
FOR THE MAGNITUDE OF THE BID); AND IF THE TERRAIN
OPTION IS BEING USED, USES HALF-HEIGHT RISE OVER
TERRAIN FEATURES FOR UNSTABLE AND DAYTIME NEUTRAL,
AND LEVEL PLUMES FOR NIGHTTIME NEUTRAL AND STABLE.
IF (IDFLT.EQ.O) GO TO 150
IOPB = 1
IOPD = 0
IOPG = 1
IF (IOPT.EQ.0) GO TO 150
CONTER(l) = 0.5
CONTER(2) =0.5
CONTER(3) =0.0
CONTER(4) =0.0
BEGIN LOOP TO READ THE POINT SOURCE INFORMATION.
150 NPT = NPT + 1
IF (NPT .LE. NPTMAX) GO TO 160
READ(IN,1020) DUM
IF (DUM .EQ. ENDP) GO TO 230
WRltE(10,2020) NPTMAX
ICOND = 21004
GO TO 999
READ RECORD TYPE 8 — SOURCE INFORMATION.
160 READ(IN,1030) (PNAME(I,NPT), I = 1,3),QEAST(NPT),QNORD(NPT),
1 QJ(NPT).PSH(NPT),TS(NPT),D(NPT),
2 VS(NPT),QELEV(NPT)
CARD WITH 'ENDP' IN COL 1-4 IS USED TO SIGNIFY END OF POINT
SOURCES.
IF (PNAME(1,NPT) .EQ. ENDP) GO TO 230
GO BACK AND READ NEXT SOURCE.
GO TO 150
230 NPT = NPT - 1
NPTLIM = NPT
CHECK FOR NPT < OR = 0
IF (NPT .GT. 0) GO TO 240
WRITE(10,2030) NPT
ICOND = 21005
GO TO 999
PROCESS SOURCE INPUT.
240 ELHN = 99999.
ELOW = 99999.
CALL TU310(ELOW,ELHN)
GET RECEPTOR INFORMATION.
NRELIM = 0
WRITE(10,3090) LINE1,LINE2,LINE3
WRITE(10,3100)
IF (IOPR .EQ. 0) GO TO 520
READ RECORD TYPE 9.
TUP04900
TUP04910
TUP04920
TUP04930
TUP04940
TUP04950
TUP04960
TUP04970
TUP04980
TUP04990
TUP05000
TUP05010
TUP05020
TUP05030
TUP05040
TUP05050
TUP05060
TUP05070
TUP05080
TUP05090
TUP05100
TUP05110
TUP05120
TUP05130
TUP05140
TUP05150
TUP05160
TUP05170
TUP05180
TUP05190
TUP05200
TUP05210
TUP05220
TUP05230
TUP05240
TUP05250
TUP05260
TUP05270
TUP05280
TUP05290
TUP05300
TUP05310
TUP05320
TUP05330
TUP05340
TUP05350
TUP05360
TUP05370
TUP05380
TUP05390
TUP05400
TUP05410
TUP05420
TUP05430
TUP05440
TUP05450
TUP05460
TUP05470
TUP05480
TUP05490
TUP05500
TUP05510
TUP05520
TUP05530
TUP05540
TUP05550
TUP05560
TUP05570
TUP05580
TUP05590
103
-------
c
c
c
c
c
c
READ(IN,*) CEST.CNOR,NAZ, AZBEG, AZINT, NRAD,(RADIL(I),I=1,NHAD)
NRELIM = NAZ * NRAD
WRITE(10,3110) NRELIM,CEST.CNOR,NAZ,AZBEG,AZINT,NRAD,
1 (RADIL(I), I = 1,NRAD)
IF (NRELIM .LE. NREMAX) GO TO 460
WRITE(10,2040) NRELIM,NREMAX
ICOND = 21006
GO TO 999
READ RECORD TYPE 10 — POLAR COORDINATE ELEVATIONS.
460 IF (IOPT .EQ. 0) GO TO 520
READ(IN,*) (ELR(NRE), NRE = 1,NRELIM)
NOTE THAT INPUT IS IN FREE FORMAT.
THE USER MUST USE CARE TO ORDER THE RECEPTOR ELEVATIONS
PROPERLY FOR ALL AZIMUTHS FOR THE FIRST RADIAL, THEN ALL
AZIMUTHS FOR EACH SUCCEEDING RADIAL.
START LOOP TO ENTER RECEPTORS.
520 NRELIM = NRELIM + 1
IF (NRELIM .LE. NREMAX) GO TO 540
READ (IN,1020,END=530) DUM
IF (DUM .EQ. ENDR) GO TO 550
530 WRITE(10.2050) NREMAX
ICOND = 21007
GO TO 999
READ RECORD TYPE 11.
540 READ(IN,1050,END=570) (RNAME(J,NRELIM),J=1,2).RREC(NRELIM),
1
C
C
C
C
C
C
SREC(NRELIM),ZR(NRELIMj,ELR(NRELIM
PLACE 'ENDR' IN COLS 1 TO 4 ON CARD FOLLOWING LAST RE'
TO END READING TYPE 11 RECORDS.
IF (RNAME(1,NRELIM) .EQ. ENDR) GO TO 550
GO TO 520
550 NRELIM = NRELIM - 1
570 IF (NRELIM .GT. 0) GO TO 580
WRITE(10,2060)
ICOND = 21008
GO TO 999
PROCESS RECEPTOR INPUT.
580 CALL TU315(CEST.CNOR,NAZ,AZBEG,AZINT,NRAD,RADIL,ELOW,ELHN)
999 RETURN
)
RECEPTOR
C
C
C
INPUT FORMATS.
'1000 FORMAT(20A4/20A4/20A4)
1010 FORMAT(3A4,216)
1020 FORMAT(A4)
1030 FORMAT(3A4,7F8.2,F4. 0)
1050 FORMAT£2A4,2F10.3,2F10. 0)
ERROR STATEMENT FORMATS.
2005 FORMAT(
1
2010 FORMAT(
2020 FORMAT(
1
2030 FORMAT(
2040 FORMAT(
1
2050 FORMAT
1
'0*** CHECK OPTION LIST (I.E., RECORD TYPE 6).',/,
' *** OPTION INPUT VARIABLES SHOULD BE EITHER 0 OR 1.')
'0*** CONTER VALUE IS OUTSIDE OF RANGE: ZERO TO ONE.')
'0*** USER TRIED TO INPUT MORE THAN ',14,' POINT SOURCES
' THIS GOES BEYOND THE CURRENT PROGRAM DIMENSIONS.')
'0*** INPUT DATA INDICATES THAT THERE ARE ',13,'POINT ',
'SOURCES FOR THIS SIMULATION.')
'0*** TRYING TO GENERATE',15,' RECEPTORS, BUT ARE ONLY '
'ALLOWED',15 ' ')
('0*** USER EITHER TRIED TO INPUT MORE THAN ',15,
' RECEPTORS OR ',1H','ENDR',1HWAS NOT PLACED AFTER
TUP05600
TUP05610
TUP05620
TUP05630
TUP05640
TUP05650
TUP05660
TUP05670
TUP05680
TUP05690
TUP05700
TUP05710
TUP05720
TUP05730
TUP05740
TUP05750
TUP05760
TUP05770
TUP05780
TUP05790
TUP05800
TUP05810
TUP05820
TUP05830
TUP05840
TUP05850
TUP05860
TUP05870
TUP05880
TUP05890
TUP05900
TUP05910
TUP05920
TUP05930
TUP05940
TUP05950
TUP05960
TUP05970
TUP05980
TUP05990
TUP06000
TUP06010
TUP06020
TUP06030
TUP06040
TUP06050
TUP06060
TUP06070
TUP06080
TUP06090
TUP06I00
TUP06110
TUP06120
TUP06130
TUP06140
TUP06150
TUP06160
TUP06170
TUP06180
TUP06190
TUP06200
TUP06210
',TUP06220
TUP06230
TUP06240
TUP06250
TUP06260
TUP06270
TUP06280
, TUP06290
104
-------
2 'THE LAST RECEPTOR RECORD.')
2060 FORMAT ('0*** NO RECEPTORS HAVE BEEN CHOSEN.')
1
: OUTPUT FORMATS.
'3000 FORMAT('OTITLE: *,20A4,2(/,9X,20A4))
3010 FORMAT(1H0,31X,'* * * GENERAL INPUT INFORMATION * * ~',//,
- - - | r— — — — — — — - — - - - »
1
2
3
4
5 ' USER LENGTH UNITS TO'KILOMETERS.')
3020 F0RMAT(1X,'THIS RUN WILL NOT CONSIDER ANY POLLUTANT LOSS.')
3030 FORMAT(IX, 'A HALF-LIFE OF \F10.2,' SECONDS HAS BEEN ASSUMED BY'
1 ' THE USER.')
3040 F0RMAT(1X,'A FACTOR OF '.1PE12.6.' HAS BEEN SPECIFIED TO
1 'CONVERT USER HEIGHT UNITS TO METERS. )
3050 FORMAT(1HO,'OPTION SPECIFICATION fl = EMPLOY OPTION;',
1 ' 0 = DO NOT USE OPTION.)'/,
2 IX 'OPTION',8X,'MEANING'/,
3 lX.'NPRNT ',14,' PRI
3060 FORMAT(13X,'TECHNICAL OPTIONS'/,
1 lX.'IOPT ',14,' USE TERRAIN ADJUSTMENTS.'/,
2 1X,'I0PB ',14,' USE BUOYANCY-INDUCED DISPERSION.'/,
3 IX,'IOPD ',14,' NO STACK DOWNWASH.'/,
4 IX,'IOPG ',14,' NO GRADUAL PLUME RISE.'/
5 1X,'I0PM ',14,' TEST AGAINST MIXING AT NIGHT.'//,
6 13X,'INPUT OPTIONS'/,
7 lX.'IOPQ ',14,' READ HOURLY EMISSIONS ON UNIT 10.'/,
8 1X,'I0PR ',14,' INPUT RADIAL DISTANCES AND GENERATE '
9 'POLAR COORDINATE RECEPTORS.')
3070 FORMAT(1HO,12X 'OUTPUT OPTIONS'/,
1 IX,'IOPWPC',14,' WRITE PARTIAL CONCENTRATIONS TO UNIT
2 '14.'/)
3080 FORMAT('OTERRAIN ADJUSTMENTS ARE: '4F8.3//)
3090 FORMAT(1H1 'TITLE: ',20A4,2(/,9X,20A4))
3100 FORMAT (1H0.27X,'* * * RECEPTOR INFORMATION * * *')
3110 FORMAT(1HO,'GENERATES'.15,' POLAR COORDINATE RECEPTORS CENTERED
TUP06300
TUP06310
TUP06320
TUP06330
TUP06340
TUP06350
TUP06360
TUP06370
,TUP06380
TUP06390
IX, 'THIS SIMULATION FOR THE POLLUTANT \A4. ' BEGINS AT'.
' YEAR: 19' 12,' JULIAN DAY:',14,' HOUR:',13,' AND
' IS FOR',15,' HOURS.'/.
IX,'A FACTOR OF \1PE12.6,1 HAS BEEN SPECIFIED TO CONVERT',TUP06400
. . . TUP06410
TUP06420
TUP06430
TUP06440
TUP06450
TUP06460
TUP06470
TUP06480
TUP06490
NT THIS MANY HOURS OF OUTPUT.'/)TUP06500
1
2
3
4
5
END
'ABOUT (',F§.3, ' ,\F9.3,').'/,
IX,16.' AZIMUTHS BEGINNING AT'.FS.l,' DEGREES, AT
'INTERVALS OF',F7.2,' DEGREES.',/.
IX,16,' RADIAL DIST. (USER UNITS):',12F8.3/,
10X.15F8.3)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C*
SUBROUTINE TU305(METID,MDATAC,MDATBC,ICOND)
305-GET-MET-FILE-HEADER
8 CHARACTER IDENTIFIER
YR MO DAY OF DATA CREATION (6 DIGITS)
HR MIN SEC OF DATA CREATION (6 DIGITS)
CONDITION INDICATOR (0 = NO ERROR)
ARGUMENT LIST:
INPUT: METID
MDATAC
MDATBC
OUTPUT: ICOND
CALLING ROUTINES:
TU210
SUBPROGRAMS CALLED:
TU405
DESCRIPTION:
THIS MODULE CALLS TU405 TO DO THE ACTUAL I/O TO THE MET
FILE. ONLY THE HEADER RECORD IS PROCESSED HERE. THE
METEOROLOGY HEADING REPORT IS PRINTED IN THIS SUBROUTINE.
METEOROLOGICAL HEADER RECORD PARAMETERS ARE PASSED THROUGH
COMMON METCOM BETWEEN TU305 AND TU405.
PARAMETER (NLMAX=20,NDMAX=40)
DIMENSION METID(2)
COMMON /METCOM/DTHDZ(NLMAX),SAL(NLMAX),SEL(NLMAX),TL(NLMAX),
TUP06510
TUP06520
TUP06530
TUP06540
TUP06550
TUP06560
TUP06570
TUP06580
, TUP06590
TUP06600
TUP06610
'.TUP06620
TUP06630
TUP06640
TUP06650
TUP06660
'.TUP06670
TUP06680
TUP06690
TUP06700
TUP06710
TUP06720
TUP06730
TUP06740
TUP06750
TUP06760
TUP06770
TUP06780
TUP06790
TUP06800
TUP06810
TUP06820
TUP06830
TUP06840
TUP06850
TUP06860
TUP06870
TUP06880
TUP06890
TUP06900
TUP06910
TUP06920
TUP06930
TUP06940
TUP06950
TUP06960
TUP06970
TUP06980
105
-------
c
c
c
c
c
c
c
1 UL(NLMAX).WDL(NLMAX). ZL(NLMAX),KLASS,LMX,MDATA,
2 MDATB,METOAM(2),MYR,MJD,MHR,rTO,NLLIM,DESC(18,NDMAX)
COWON /INOUT/ IN,10
KMET = 0
READ MET FILE FOR HEADER RECORD.
CALL TU405(KMET,ICOND.IEOF.MISG)
IF (ICOND .EQ. 0) GO TO 50
WRITE (10,1000)
GO TO 999
50 IF (IEOF .EQ. 0) GO TO 100
WRITE(IO,1010)
ICOND = 30501
GO TO 999
MET HEADER RECORD PROCESSED.
THAT EXPECTED.
COMPARE HEADER RECORD DATA TO
100 WRITE(IO,1020) METNAM.MDATA,MDATB
WRITE(IO,1030) (DESC(J.1), J = 1,18)
IF (ND .EQ. 1) GO TO 110
DO 110 N = 2.ND
WRITE(10,1035) (DESC(J,N), J = 1,18)
110 CONTINUE
IF
IF
IF (MDATA .NE. MDATAC) ICOND
IF (MDATB .NE. MDATBC) ICOND = 30505
IF (ICOND .EQ. 0) GO TO 999
(METNAM(l) .NE. METID(l))
(METNAM(2) .NE. METID(2))
ICOND = 30502
ICOND = 30503
30504
WRITE(10,1040) METNAM,MDATA,MDATB,METID.MDATAC,MDATBC
C
C
C
999 RETURN
C
C
C
C
C
C
C
C
C
c
c
c
c
c
c
c
c
c
c
c
c
FORMAT STATEMENTS
'1000 FORMAT('0*** SYSTEM ERROR ON READING HEADER RECORD OF MET FILE.')
1010 FORMAT('0*** END OF FILE REACHED UPON ATTEMPTING TO READ HEADER (
1 'RECORD OF MET FILE.')
1020 FORMAT(1HO,'MET FILE IDENTIFIER: ',2A4,/,
1 IX 'CREATED: ',16,' (YR MO DAY)',5X,16,' (HRMINSEC)')
1030 FORMAT(IX,'DESCRIPTION: ',18A4)
1035 FORMATiIX,14X, 18A4)
1040 FORMAT('0*** ID FROM MET FILE IS: ',2A4,3X,16,3X,16,/
1 ' *** EXPECTED ID IS: ',2A4.3X,I6.3X,16)
END
SUBROUTINE TU405(KMET,ICOND,IEOF.MISG)
405-READ-MET-FILE
ARGUMENT LIST:
INPUT: KMET
OUTPUT: ICOND
IEOF
CALLING ROUTINES:
TU305, TU320
READ COUNTER
CONDITION INDICATOR (0 = NO ERROR)
END OF FILE INDICATOR (1 = END OF FILE)
DESCRIPTION:
THIS MODULE PERFORMS ALL I/O TO THE METEOROLOGY FILE,
UNIT 9. METEOROLOGY DATA IS READ INTO COMMON METCOM.
ERRORS ARE INDICATED BY PASSING A NONZERO VALUE THROUGH
ICOND. END OF FILE IS INDICATED BY PASSING A VALUE OF ONE
THROUGH IEOF. KMET IS USED TO RECORD BOTH THE NUMBER OF
RECORDS READ AND TO INDICATE THE TYPE OF RECORD BEING READ
(HEADER OR HOURLY).
* * * INPUT FILE (UNIT 9)
METEOROLOGICAL DATA MUST BE ENTERED VIA
THIS FILE.
TUP06990
TUP07000
TUP07010
TUP07020
TUP07030
TUP07040
TUP07050
TUP07060
TUP07070
TUP07080
TUP07090
TUP07100
TUP07110
TUP07120
TUP07130
TUP07140
TUP07150
TUP07160
TUP07170
TUP07180
TUP07190
TUP07200
TUP07210
TUP07220
TUP07230
TUP07240
TUP07250
TUP07260
TUP07270
TUP07280
TUP07290
TUP07300
TUP07310
TUP07320
TUP07330
TUP07340
TUP07350
TUP07360
,TUP07370
TUP07380
TUP07390
TUP07400
TUP07410
TUP07420
TUP07430
TUP07440
TUP07450
TUP07460
TUP07470
TUP07480
TUP07490
TUP07500
TUP07510
TUP07520
TUP07530
TUP07540
TUP07550
TUP07560
TUP07570
TUP07580
TUP07590
TUP07600
TUP07610
TUP07620
TUP07630
TUP07640
TUP07650
TUP07660
TUP07670
106
-------
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
c
c
c
c
c
c
c
c
c
c
c
c
c
THIS FILE IS UNFORMATTED.
THE ASSUMPTION IS MADE HERE THAT THE USER IS DEFINING THE
VARIATION OF METEOROLOGICAL PARAMETERS WITH HEIGHT BY
INCLUDING SUFFICIENT LEVELS SUCH THAT LINEAR INTERPOLATION
WITH HEIGHT BETWEEN LEVELS WILL BE ADEQUATE.
ANY INFORMATION REQUIRED FOR A HEIGHT BELOW THE HEIGHT OF THE
LOWEST LEVEL WILL BE ASSIGNED THE VALUE FOR THE LOWEST LEVEL.
SIMILARLY, ANY INFORMATION REQUIRED FOR A HEIGHT ABOVE THE
TUP07680
TUP07690
TUP07700
TUP07710
TUP07720
TUP07730
TUP07740
TUP07750
TUP07760
TUP07770
TUP07780
HIGHEST LEVEL.
RECORD 1 — HEADER RECORD (OCCURS ONCE AT TOP OF FILE)
HEIGHT OF THE HIGHEST LEVEL WILL BE ASSIGNED THE VALUE FOR THETUP07790
TUP07800
TUP07810
TUP07820
TUP07830
TUP07840
TUP07850
TUP07860
TUP07870
TUP07880
TUP07890
METNAM(2)
MDATA
MDATB
ND
DESC
AN 8 CHARACTER ALPHANUMERIC IDENTIFIER FOR THE MET
DATA.
DATE-TIME OF DATA CREATION, MO DAY YR (6 DIGITS)
DATE-TIME OF DATA CREATION, HR MIN SEC (6 DIGITS)
NUMBER OF 72 CHARACTER ALPHANUMERIC LINES OF
DESCRIPTION
ND LINES OF ALPHANUMERIC INFORMATION (72 CHARACTERS TUP07900
PER LINE) THAT DESCRIBES THE MET DATA.
RECORD 2 — REPETITIVE RECORDS ON MET FILE
MYR
MJD
MHR
NLLIM
LMX
KLASS
ZL
TL
WDL
UL
SAL
SEL
PARAMETER
YEAR (2 DIGITS)
JULIAN DAY (3 DIGITS)
HOUR (2 DIGITS)
NUMBER OF DATA LEVELS THIS HOUR
THE DATA LEVEL NUMBER OF THE MIXING HEIGHT
THE STABILITY CATEGORY FOR THIS HOUR
HEIGHT OF EACH LEVEL (METERS ABOVE GROUND)
TEMPERATURE (K) FOR EACH LEVEL
WIND DIRECTION (DEGREES AZIMUTH, CLOCKWISE FROM
NORTH) FOR EACH LEVEL
WIND SPEED (M/SEC) FOR EACH LEVEL
SIGMA-A STANDARD DEVIATION OF WIND AZIMUTH
(RADIANS} FOR EACH LEVEL
SIGMA-E STANDARD DEVIATION OF WIND ELEVATION ANGLE
(RADIANS) FOR EACH LEVEL
(NIMAX=20,NDMAX=40)
COMMON /METCOM/DTHDZ(NLMAX),SAL(NLMAX),SEL(NLMAX),TL(NLMAX),
TUP07910
TUP07920
TUP07930
TUP07940
TUP07950
TUP07960
TUP07970
TUP07980
TUP07990
TUP08000
TUP08010
TUP08020
TUP08030
TUP08040
TUP08050
TUP08060
TUP08070
TUP08080
TUP08090
TUP08100
TUP08110
TUP08I20
UL(NLMAX),WDL[NLMAX)tZL(NLMAX),KLASS,LMX,MDATA, TUP08130
MDATB,METNAM(2),MYR,MJD,MHR,ND,NLLIM,DESC(18,NDMAX)TUP08140
IEOF = 0
C
C
C
DETERMINE IF THIS IS THE FIRST READ OF MET FILE.
IF (KMET .GT. 0) GO TO 100
PROCESS HEADER RECORD.
READ(9,ERR=10,END=20) METNAM,MDATA,MDATB,ND,
1 ((DESC(I,J), I = 1,18), J = 1,ND)
GO TO 999
10 ICOND = 40501
GO TO 999
20 IEOF = 1
GO TO 999
PROCESS HOURLY RECORDS.
100 READ(9,ERR=110,END=120) MYR,MJD,MHR.NLLIM, LMX,KLASS,(ZL(I),TL(I)
1 WDL(I),UL(I),SAL(I),SEL(I), I = 1,NLLIM)
IF (KLASS.LT.1.OR.KLASS.GT.4) MISG =100
TUP08150
TUP08160
TUP08170
TUP08180
TUP08190
TUP08200
TUP08210
TUP08220
TUP08230
TUP08240
TUP08250
TUP08260
TUP08270
TUP08280
TUP08290
TUP08300
TUP08310
TUP08320
TUP08330
TUP08340
TUP08350
TUP08360
TUP08370
107
-------
GO TO 999
110 ICOND = 40502
GO TO 999
120 IEOF = 1
999 RETURN
END
C
C
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
SUBROUTINE TU310(ELOW,ELHN)
310-PROCESS-SOURCE-INPUT
ARGUMENT LIST:
I/O: ELOW
ELHN
CALLING ROUTINES:
TU210
- LOWEST GROUND-LEVEL ELEVATION FOR A SOURCE
- LOWEST STACK TOP ELEVATION FOR A SOURCE
C
C
C
C
SUBPROGRAMS CALLED:
TU410, TU415
DESCRIPTION:
THIS MODULE COORDINATES ALL OF THE CALCULATIONS RELATED TO
SOURCE INPUT. THE ACTUAL CALCULATIONS ARE PERFORMED BY
MODULES AT A LOWER LEVEL, AND THE TASK OF THIS MODULE IS
PRIMARILY TO COORDINATE THOSE CALCULATIONS. THIS SUBROUTINE
IS EXECUTED ONCE AFTER ALL THE SOURCE RECORDS HAVE BEEN
READ BY SUBROUTINE TU210.
PARAMETER (NPTMAX=25)
DIMENSION ESTIMP(NPTMAX).ESTHGT(NPTMAX)
COMMON /RUNCOM/CE LM,CONTWO,CTER,HAFL,TLOS,CONTER(4),IYRS,IDYS,
1 IHRS,IHLIM.I OPT,IOPB,IOPD,IOPG,IOPM.IOPQ,IOPR,
2 IOPWPC.NPOL,LINE1(20),LINE2(20),LINE3(20).NPRNT
COMMON /SORCOM/D(NPTMAX),PNAME(3.NPTMAX),PSH(NPTMAX),QJ(NPTMAX),
1 QELEV(NPTMAX),QEAST(NPTMAX),QNORD(NPTMAX),
2 TS£NP™aX)^VS(NPTMAX), IQYR, IQJD, IQHR, NPTLIM,
CHARACTERIZE ALL THE SOURCES.
SOURCES PROCESSED.
NPT IS A COUNTER FOR POINT
C
c
c
DO 100 NPT = 1.NPTLIM
CALL TU410(NPT,ELOW,ELHN,ESTIMP,ESTHGT)
100 CONTINUE
RANK POINT SOURCES.
IF (NPTLIM .EQ. 1) GO TO 999
CALL TU415(ESTIMP)
999 RETURN
END
C
C
C
c
c
c
c
c
c
c
c
c
c
c
c
SUBROUTINE TU410(NPT,ELOW,ELHN,ESTIMP,ESTHGT)
410-CHARACTERIZE-SOURCE
ARGUMENT LIST:
INPUT:
I/O:
OUTPUT:
NPT
ELOW
ELHN
ESTIMP
ESTHGT
COUNT OF POINT SOURCE TO BE PROCESSED
LOWEST GROUND-LEVEL ELEVATION FOR SOURCE
LOWEST STACK TOP ELEVATION FOR SOURCE
ESTIMATE OF POTENTIAL IMPACT
ESTIMATED EMISSION HEIGHT
CALLING ROUTINES:
TU310
DESCRIPTION:
THIS MODULE DETERMINES THE FOLLOWING:
- ELEVATION OF THE LOWEST STACK TOP IN INVENTORY (ELHN),
TUP08380
TUP08390
TUP08400
TUP08410
TUP08420
TUP08430
TUP08440
TUP08450
TUP08460
TUP08470
TUP08480
TUP08490
TUP08500
TUP08510
TUP08520
TUP08530
TUP08540
TUP08550
TUP08560
TUP08570
TUP08580
TUP08590
TUP08600
TUP08610
TUP08620
TUP08630
TUP08640
TUP08650
TUP08660
TUP08670
TUP08680
TUP08690
TUP08700
TUP08710
TUP08720
TUP08730
TUP08740
TUP08750
TUP08760
TUP08770
TUP08780
TUP08790
TUP08800
TUP08810
TUP08820
TUP08830
TUP08840
TUP08850
TUP08860
TUP08870
TUP08880
TUP08890
TUP08900
TUP08910
TUP08920
TUP08930
TUP08940
TUP08950
TUP08960
TUP08970
TUP08980
TUP08990
TUP09000
TUP09010
TUP09020
TUP09030
TUP09040
TUP09050
108
-------
c
c
c
c
c
c
c
c
- GROUND-LEVEL ELEVATION OF THE LOWEST SOURCE IN
INVENTORY (ELOW),
- BUOYANCY FACTORS, AND
- ESTIMATES OF POTENTIAL IMPACTS.
SOURCE DATA IS PASSED THROUGH COMMON SORCOM. THIS MODULE
ALSO PRODUCES A LISTING OF SOURCE INFORMATION.
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
PARAMETER (NPTMAX=25,NREMAX=180)
DIMENSION ESTIMP(NPTMAX).ESTHGT(NPTMAX)
CONMON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,CONTER(4),IYRS,IDYS,
1 IHRS,IHLIM.IOPT.IOPB,IOPD.IOPG,IOPM,IOPQ,IOPR.
2 IOPWPC,NPOL,LINE1(20;,LINE2(20;,LINE3(20J,NPRNT
COMMON /SORCOM/D(NPTMAX),PNAME(3.NPTMAX).PSHCNPTMAX),QJ(NPTMAX),
1 QELEV(NPTMAX),QEAST(NPTMAX),QNORD(NPTMAX),
2 TS^NPTMAX^^VS(NPTMAX),IQYR,IQJD,IQHR.NPTLIM,
3COM*)N /RECCOM/ELR(ffiiKx)^PARTC(NREMAX,NPTMAX).PHCHI(NREMAX),
1 RNAMEf2,NREMAX).RREC(NREMAX),SREC(NREMAX),
2 STAR(2,NREMAX),ZR(NREMAX),NRELIM
COfWON /INOUT/ IN, 10
CALCULATE ELOW AND ELHN.
TOM = PSH(NPT)/CEIM + QELEV(NPT)
NPT: KEEPS TRACK OF POINT SOURCE THAT MODULE IS PROCESSING
IF (TOM .LT. ELHN) ELHN = TOM
ELHN, ELEVATION OF LOWEST STACK TOP IN INVENTORY
(USER HEIGHT UNITS).
IF (QELEV(NPT) .LT. ELOW) ELOW = QELEV(NPT)
ELOW, ELEVATION OF LOWEST SOURCE GROUND-LEVEL ELEVATION IN
INVENTORY (USER HEIGHT UNITS).
CALCULATE BUOYANCY FACTOR AND ESTIMATE EMISSION HEIGHT.
IF STACK GAS TEMPERATURE > 293 K, THEN PLUME IS CONSIDERED
BUOYANT. BUOYANT PLUME RISE FOR LOW WIND SPEEDS IS USED
HERE.
A = D(NPT)
B = TS(NPT)
IF (B .GT. 293.) GO TO 100
NON-BUOYANT PLUME.
HF = PSH(NPT)
GO TO 200
BUOYANT PLUME.
100 F = 2.45153 * VS(NPT) ~ A * A ~ (B-293.)/B
HP = PSH(NPT)
CALCULATE UNSTABLE RISE FOR WIND SPEED OF 3 M/S.
HF = HP + 30. * (F/3.) ** 0.6
ESTIMATE POTENTIAL IMPACTS.
200 ESTHGT(NPT) = HF
ESTIMP(NPT) = QJ(NPT)/(HF * HF)
Q/H**2 IS USED FOR THIS SCREENING.
LIST POINT SOURCE INFORMATION.
IF (NPT .GT. 1) GO TO 210
WRITE(10,1000) LINE1,LINE2,LINE3
WRITE(10,1010) NPOL
210 WRITE(10,1020) NPT.(PNAME(J.NPT), J = 1,3),QEAST(NPT),QNORD(NPT),
1 QELEV(NPT),QJ(NPT),PSH(NPT),TS(NPT),
2 D(NPT),VS(NPT),ESTIMP(NPT),ESTHGT(NPT),F
RETURN
TUP09060
TUP09070
TUP09080
TUP09090
TUP09100
TUP09110
TUP09120
TUP09130
TUP09140
TUP09150
TUP09160
TUP09170
TUP09180
TUP09190
TUP09200
TUP09210
TUP09220
TUP09230
TUP09240
TUP09250
TUP09260
TUP09270
TUP09280
TUP09290
TUP09300
TUP09310
TUP09320
TUP09330
TUP09340
TUP09350
TUP09360
TUP09370
TUP09380
TUP09390
TUP09400
TUP09410
TUP09420
TUP09430
TUP09440
TUP09450
TUP09460
TUP09470
TUP09480
TUP09490
TUP09500
TUP09510
TUP09520
TUP09530
TUP09540
TUP09550
TUP09560
TUP09570
TUP09580
TUP09590
TUP09600
TUP09610
TUP09620
TUP09630
TUP09640
TUP09650
TUP09660
TUP09670
TUP09680
TUP09690
TUP09700
TUP09710
TUP09720
TUP09730
TUP09740
TUP09750
109
-------
1000 F0RMAT(1H1 'TITLE: ',20A4,2(/,9X.20A4))
1010 FORMAT (1H0,48X,'* * * POINT SOURCE INFORMATION * * #',//,
1 IX, 18X, ' COORDINATES ',25X,' STACK
2 'PARAMETERS REL POTEN EFF BUOY',/,
3 IX.4X,'SOURCE',15X'(USER UNITS) EMISSIONS',
4 '(G/SEC) ',5X, HGT TEMP DIA VEL IMP',
5 'ACT HGT',6X.'FLUX',/,
6 IX,2X,'#'.2X,'NAME',12X.'EAST NORTH ELEV',9X,
7 5X;A4,' (M) (K) (M) (M/S) Q',
8 '/H**2 \6X.'(M) M**4/S**3')
1020 FORMAT (IX,13,IX,3A4,IX,3F9.2,F16.2,8X,4F8.2,1PE13.5,0PF9.2,F9.2)
END
SUBROUTINE TU415(ESTIMP)
415-RANK-POINT-SOURCES
ARGUMENT LIST:
INPUT ESTIMP - ESTIMATE OF POTENTIAL IMPACT
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
CALLING ROUTINES:
TU310
DESCRIPTION:
THIS MODULE RANKS THE POINT SOURCES AND OUTPUTS A TABLE OF
RANKED SOURCES.
PARAMETER (NPTMAX=25)
DIMENSION PSAV(NPTMAX),ESTIMP(NPTMAX)
COMMON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,CONTER(4),IYRS,IDYS,
1 IHRS,IHLIM,IOPT.IOPB.IOPD,IOPG.IOPM,IOPQ.IOPR,
2 IOPWPC,NPOL,LINE1(20;,LINE2(20;,LINE3(20;,NPRNT
COMWN /SORCOM/D(NPTMAX),PNAME(3.NPTMAX) .PSH(NPTMAX),QJ(NPTMAX),
1 QELEV(NPTMAX),QEAST(NPTMAX),QNORD(NPTMAX),
2 TS(NPTOAX),VS(NPTMAX),IQYR,IQJD,IQHR,NPTLIM,
3 IMPS(NPTMAX)
COMMON /INOUT/ IN,10
RANK POINT SOURCES.
DO 200 I = 1,NPTLIM
SIGMAX=-1.0
DO 100 NPT = 1,NPTLIM
IF (ESTIMP(NPT) .LE. SIGMAX) GO TO 100
SIGMAX = ESTIMP(NPT)
LMAX = NPT
100 CONTINUE
IMPS(I) = LMAX
IMPS: SOURCE NUMBER IN ORDER OF SIGNIFICANCE.
PSAV(I) = SIGMAX
PSAV: POTENTIAL IMPACT IN ORDER OF SIGNIFICANCE.
ESTIMP(LMAX) = -1.0
200 CONTINUE
IF THERE IS MORE THAN ONE SOURCE, THEN OUTPUT TABLE OF
RANKED SOURCES.
IF (NPTLIM .EQ. 1) GO TO 999
WRITEf10,1000) NPOL
DO 250 I = 1.NPTLIM
WRITE(IO.IOIO) I,IMPS(I),PSAV(I)
250 CONTINUE
999 RETURN
FORMAT STATEMENTS
1000 FORMAT(1HO,47X,'* * * RANKED ',A4,' POINT SOURCES * * #',//,
1 IX,47X,' SOURCE REL POTEN',/,
2 IX,47X,'RANK NUMBER IMPACT')
TUP09760
TUP09770
TUP09780
TUP09790
TUP09800
TUP09810
TUP09820
TUP09830
TUP09840
TUP09850
TUP09860
TUP09870
TUP09880
TUP09890
TUP09900
TUP09910
TUP09920
TUP09930
TUP09940
TUP09950
TUP09960
TUP09970
TUP09980
TUP09990
TUP10000
TUP10010
TUP10020
TUP10030
TUP10040
TUP10050
TUP10060
TUP10070
TUP10080
TUP10090
TUP10100
TUP10110
TUP10120
TUP10130
TUP10140
TUP10150
TUP10160
TUP10170
TUP10180
TUP10190
TUP10200
TUP10210
TUP10220
TUP10230
TUP10240
TUP10250
TUP10260
TUP10270
TUP10280
TUP10290
TUP10300
TUP10310
TUP10320
TUP10330
TUP10340
TUP10350
TUP10360
TUP10370
TUP10380
TUP10390
TUP10400
TUP10410
TUP10420
TUP10430
TUP10440
110
-------
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
1010 FORMAT(IX,47X,13,7X,13,7X,6PF12.2)
END
*
SUBROUTINE TU315(CEST,CNOR.NAZ,AZBEG,AZINT,NRAD,RADIL,ELOW,ELHN)
315-PROCESS-RECEPTOR-INPUT
ARGUMENT
INPUT:
CALLING
TU210
LIST:
CEST
CNOR
NAZ
AZBEG
AZINT
NRAD
RADIL
ELOW
ELHN
ROUTINES:
EAST COORDINATE ABOUT WHICH POLAR
COORDINATE GRID IS CENTERED (USER UNITS)
NORTH COORDINATE ABOUT WHICH POLAR
COORDINATE GRID IS CENTERED (USER UNITS)
NUMBER OF AZIMUTHS
BEGINNING AZIMUTH (DEGREES)
AZIMUTH INTERVAL (DEGREES)
NUMBER OF RADIAL DISTANCES
ARRAY OF RADIAL DISTANCES
LOWEST GROUND-LEVEL ELEVATION FOR A SOURCE
LOWEST STACK TOP ELEVATION FOR A SOURCE
GENERATE RADIAL
COORDINATES.
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
ARGUMENT
INPUT:
CALLING
TU315
LIST:
CEST -
CNOR -
NAZ
AZBEG -
AZINT -
NRAD -
RADIL -
ROUTINES:
DESCRIPTION:
TUP10450
TUP10460
TUP10470
TUP10480
TUP10490
TUP10500
TUP10510
TUP10520
TUP10530
TUP10540
TUP10550
TUP10560
TUP10570
TUP10580
TUP10590
TUP10600
TUP10610
TUP10620
TUP10630
TUP10640
TUP10650
TUP10660
TUP10670
TUP10680
TUP10690
TUP10700
TUP10710
TUP10720
TUP10730
TUP10740
TUP10750
TUP10760
TUP10770
TUP10780
TUP10790
TUP10800
TUP10810
TUP10820
TUP10830
TUP10840
TUP10850
TUP10860
TUP10870
TUP10880
TUP10890
TUP10900
TUP10910
TUP10920
TUP10930
TUP10940
TUP10950
TUP10960
TUP10970
TUP10980
EAST COORDINATE ABOUT WHICH POLAR COORDINATETUP10990
GRID IS CENTERED (USER UNITS) TUP11000
NORTH COORDINATE ABOUT WHICH POLAR TUP11010
COORDINATE GRID IS CENTERED (USER UNITS) TUP11020
NUMBER OF AZIMUTHS TUP11030
BEGINNING AZIMUTH (DEGREES) TUP11040
AZIMUTH INTERVAL (DEGREES) TUP11050
NUMBER OF RADIAL DISTANCES TUP11060
ARRAY OF RADIAL DISTANCES TUP11070
TUP11080
TUP11090
TUP11100
TUP11110
TUP11120
SUBPROGRAMS CALLED:
TU420, TU425
DESCRIPTION:
THIS MODULE IS EXECUTED AFTER ALL RECEPTOR INPUT HAS BEEN
READ BY MODULE TU210. TU315 COORDINATES THE GENERATION OF
POLAR RECEPTORS AND THE OUTPUT OF THE RECEPTOR TABLE.
PARAMETER (NRL=15)
DIMENSION RADIL(NRL)
COMMON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,CONTER(4),IYRS.IDYS,
i IHRS.IHLIM.IOPT,IOPB,IOPD,IOPG,IOPM,IOPQ.IOPR,
I IOPWPC,NPOL,LINE1(20),LINE2(20),LINE3(20).NPRNT
DID USER SPECIFY RADIAL RECEPTOR GRID?
IF (IOPR .EQ. 0) GO TO 100
RECEPTOR GRID IN TERMS OF CARTESIAN
CALL TU420(CEST,CNOR,NAZ,AZBEG,AZINT,NRAD,RADIL)
PRINT OUT TABLE OF RECEPTORS.
100 CALL TU425(ELOW,ELHN)
RETURN
END
SUBROUTINE TU420(CEST,CNOR,NAZ,AZBEG,AZINT,NRAD,RADIL)
420-GENERATE-POLAR-RECEPTORS
111
-------
c
c
c
THIS MODULE GENERATES
COORDINATES.
POLAR RECEPTORS IN TERMS OF CARTESIAN
PARAMETER (NP-IMAX=25,NREMAX=180,NRL=15)
DIMENSION RADIL(NRL)
COMMON /RECCOM/ELR(NREMAX),PARTC(NREMAX,NPTWAX),PHCHI(NREMAX),
1 RNAME(2, NREMAX) ,RREC(NREMAX_),SREC(NREMAX),
2 STAR(2,NREMAX),ZR(NREMAX),NRELIM
NRE = 0
START LOOP OVER RADIALS.
DO 200 I = l.NRAD
DUM = RADIL(I)
AZDUM = AZBEG - AZINT
START LOOP OVER AZIMUTHS.
DO 100 J = l.NAZ
NRE = NRE + 1
AZDUM = AZDUM + AZINT
IF (AZDUM .GT. 360.) AZDUM = AZDUM - 360.
ADUM = AZDUM * 0.0174533
SINT = SIN(ADUM)
COST = COS(ADUM)
RREC(NRE) = DUM * SINT + CEST
SREC(NRE) = DUM * COST + CNOR
C
C
C
C
C
C
C
C
C
C
C
C
C
C
TUP11130
TUP11140
TUP11150
TUP11160
TUP11170
TUP11180
TUP11190
TUP11200
TUP11210
TUP11220
TUP11230
TUP11240
TUP11250
TUP11260
TUP11270
TUP11280
TUP11290
TUP11300
TUP11310
TUP11320
TUP11330
TUP11340
TUP11350
TUP11360
TUP11370
TUP11380
TUP11390
TUP11400
TUP11410
THE FOLLOWING TWO EXECUTABLE STATEMENTS USE THE ENCODE
ROUTINE AVAILABLE ON THE UNIVAC. THIS MAY NOT BE
AVAILABLE ON OTHER COMPUTERS. THE FUNCTION OF THIS IS TO
PLACE AZIMUTH AND DISTANCE IN THE ALPHANUMERIC NAME FOR
THE RECEPTOR SO THAT THIS INFO. WILL APPEAR ON SOME OF THETUP11420
OUTPUT PRINT-OUTS. SHOULD YOU DECIDE TO PROGRAM AROUND TUP11430
THIS BY MAKING THESE TWO STATEMENTS COMMENT STATEMENTS, THETUP11440
RECEPTOR NAMES WILL BE LEFT BLANK ON YOUR OUTPUT. TUP11450
TUP11460
ENCODE THE AZIMUTH (TO THE NEAREST DEGREE) AND THE RADIAL TUP11470
DISTANCE (TO THE NEAREST TENTH OF A USER UNIT) INTO THE TWOTUP11480
C
C
C
c
c
c
c
c
c
c
c
c
c
c
PORTIONS OF THE ALPHANUMERIC NAME: RNAME.
ENC0DE(4,1000,RNAME(1,NRE)) AZDUM
ENCODE(4,1010,RNAME(2,NRE)) DUM
ZR(_NRE) = 0.
100 CONTINUE
; END LOOP OVER AZIMUTHS.
200 CONTINUE
; END LOOP OVER RADIALS.
RETURN
'l000 FORMAT(F4.0)
1010 FORMAT(F4.1)
END
SUBROUTINE TU425(ELOW,ELHN)
425-PRODUCE-RECEPTOR-TABLE
ARGUMENT
INPUT:
LIST:
ELOW
ELHN
- LOWEST GROUND-LEVEL ELEVATION FOR A SOURCE
- LOWEST STACK TOP ELEVATION FOR A SOURCE
CALLING ROUTINES:
TU315
DESCRIPTION:
THIS MODULE COMPILES AND OUTPUTS THE RECEPTOR TABLE WHICH
INCLUDES THE RECEPTOR LOCATION, GROUND-LEVEL ELEVATION,
AND HEIGHT ABOVE GROUND-LEVEL.
PARAMETER (NPTMAX=25,NREMAX=180)
COMMON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,CONTER(4),IYRS,IDYS,
1 IHRS,IHLIM,IOPT,IOPB,IOPD.IOPG,IOPM.IOPQ,IOPR,
2 IOPWPCjNPOL,LINE1(20),LIN£2(20),LIN^3(20).NPR&T
TUP11490
TUP11500
TUP11510
TUP11520
TUP11530
TUP11540
TUP11550
TUP11560
TUP11570
TUP11580
TUP11590
TUP11600
TUP11610
TUP11620
TUP11630
TUP11640
TUP11650
TUP11660
TUP11670
TUP11680
TUP11690
TUP11700
TUP11710
TUP11720
TUP11730
TUP11740
TUP11750
TUP11760
TUP11770
TUP11780
TUP11790
TUP11800
TUP11810
112
-------
c
c
c
c
c
c
c
c
c
COMMON /RECCOM/ELR(NREMAX),PARTC(NREMAX,NPTMAX),PHCHI(NREMAX),
1 RNAME (2,NREMAX),RREC(NREMAX).SREC(NREMAX),
2 STAR(2,NREMAX),ZR(NREMAX).NRELIM
COfWON /INOUT/ IN, 10
DATA STR/'*'/
INITIALIZE.
NRE = 0
WRITE(IO,1010)
IDMA = 0
IDMB = 0
PRINT RECEPTOR TABLE.
DO 100 NRE = 1,NRELIM
IF (ELR(NRE) .GE. ELOW) GO TO 10
STAR(l.NRE) = STR
IDMA = 1
GO TO 20
10 IF (ELR(NRE) .LE. ELHN) GO TO 20
STAR(1,NRE) = STR
STAR(2,NRE) = STR
IDMB = 1
20 IF (NRE/50*50 .NE. NRE) GO TO 30
WRITE(IO,1000) LINE1,LINE2,LINE3
WRITE(10,1010)
30 WRITE (10,1020) NRE,(RNAME(I,NRE),I = 1,2), RREC(NRE),SREC(NRE)
1 ELH(NHE),STAH(1,NHE),STAR(2,NHE),ZR(NRE)
100 CONTINUE
PRINT FOOTNOTES AS REQUIRED.
IF ((IDMA .EQ. 0).AND.(IDMB .EQ. 0)) GO TO 150
IF (IDMA .EQ. 1) WRITE(10,1030]
IF (IDMB .EQ. 1) WRITE(IO,1040
150 IF (IOPT .EQ. 0) WRITE(IO,1050
IF (IOPT .EQ. 1) WRITE(10,1060J
RETURN
FORMAT STATEMENTS.
1000 F0RMAT(1H1,'TITLE: ',20A4,2(/,9X,20A4))
1010 FORMAT(1H0,'RECEPTOR IDENTIFICATION COORDI'
1 'NATES HEIGHT ABOVE' /,
2 1X.45X,'(USER UNITS)',16X,'LOCAL GRD-LVL',/,
3 1X.38X 'EAST NORTH ELEV (M)')
1020 FORMAT(IX,t5,10X,2A4,6X,3F13.2,IX,2A1,IX,F9.2)
1030 F0RMAT(11X,'* RECEPTOR ELEVATION IS BELOW LOWEST STACK BASE ',
1 'ELEVATION.')
1040 F0RMAT(11X,'** RECEPTOR ELEVATION IS ABOVE LOWEST STACK TOP ',
1 'ELEVATION.')
1050 FORMAT('ONOTE: THE TERRAIN OPTION, IOPT, IS NOT BEING USED FOR',
1 ' THIS RUN AND ',/,
2 8X,'GROUND-LEVEL ELEVATIONS (STACK OR RECEPTOR) GIVEN ',
3 'ON INPUT ARE IGNORED.')
1060 FORMAT('ONOTE: THE TERRAIN OPTION, IOPT, IS BEING USED FOR ',
1 'THIS RUN.'/,
2 8X,'GROUND-LEVEL ELEVATIONS OF RECEPTORS ARE CONSIDERED',
' RELATIVE TO STACK BASE ELEVATIONS.'/,
8X,'THE WAY THE EFFECTIVE HEIGHT COMPUTATION IS AFFECTED',
' IS ALSO DEPENDENT UPON TERRAIN ADJUSTMENT FACTORS.')
3
4
5
C
C
C
C
END
SUBROUTINE TU220(ICOND)
220-EXECUTE-DISPERSION-SIMULATION
PARAMETER LIST:
OUTPUT: ICOND - CONDITION INDICATOR (0 = NO ERROR)
TUP11820
TUP11830
TUP11840
TUP11850
TUP11860
TUP11870
TUP11880
TUP11890
TUP11900
TUP11910
TUP11920
TUP11930
TUP11940
TUP11950
TUP11960
TUP11970
TUP11980
TUP11990
TUP12000
TUP12010
TUP12020
TUP12030
TUP12040
TUP12050
TUP12060
TUP12070
TUP12080
,TUP12090
TUP12100
TUP12110
TUP12120
TUP12130
TUP12140
TUP12150
TUP12160
TUP12170
TUP12180
TUP12190
TUP12200
TUP12210
TUP12220
TUP12230
TUP12240
TUP12250
,TUP12260
TUP12270
TUP12280
TUPI2290
TUP12300
TUP12310
TUP12320
TUP12330
TUP12340
TUP12350
TUP12360
TUP12370
TUP12380
TUP12390
TUP12400
TUP12410
TUP12420
TUP12430
TUP12440
TUP12450
TUP12460
TUP12470
TUP12480
TUP12490
TUP12500
113
-------
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
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
CALLING ROUTINES:
MAIN
SUBPROGRAMS CALLED:
TU320, TU325, TU330, TU335, TU340, CHRON,
DESCRIPTION:
THIS MODULE ACCOMPLISHES THE ACTUAL SIMULATION.
FILES CAN BE CREATED BY THIS MODULE. THEY ARE:
ai
HOURLY CONCENTRATIONS. UNIT 12
HOURLY PARTIAL CONCENTRATIONS (OPTIONAL).
NOTE THAT BECAUSE OF THE ORGANIZATION OF THE PROGRAM
(NESTING OF LOOPS, SINCE EACH SOURCE MAY HAVE SOMEWHAT
DIFFERENT METEOROLOGY), THE PARTIAL CONCENTRATION FILE
GENERATED BY'THIS PROGRAM IS ORGANIZED DIFFERENT FROM THAT
RESULTING FROM MPTER.
OUTPUT FILE (UNIT 12) HOURLY CONCENTRATIONS
RECORD TYPE
IFLAGH
RECORD TYPE
LINE1
LINE2
LINE3
RECORD TYPE
METNAM
MDATA
MDATB
ND
DESC
RECORD TYPE 4
NPOL
CONTWO
CELM
HAFL
NPTLIM
NRELIM
RECORD TYPE 5
IOPT
IOPB
IOPD
IOPG
IOPM
IOPQ
IOPR
RECORD TYPE 6
C0NTER(4)
RECORD TYPE 7
PNAME
QEAST
QNORD
QJ(NPT)
PSH
TS
D
VS
TUP12510
TUP12520
TUP12530
TUP12540
TUP12550
ICHRON TUP12560
TUP12570
TUP12580
TWO OUTPUT TUP12590
TUP12600
TUP12610
TUP12620
UNIT 14 TUP12630
TUP12640
TUP12650
TUP12660
TUP12670
TUP12680
TUP12690
TUP12700
TUP12710
TUP12720
TUP12730
TUP12740
TUP12750
TUP12760
FOR TITLE TUP12770
FOR TITLE TUP12780
FOR TITLE TUP12790
TUP12800
TUP12810
IDENTIFIER FOR THE MET TUP12820
TUP12830
MO DAY YR (6 DIGITS). TUP12840
HR MIN SEC (6 DIGITS).TUP12850
FLAG TO INDICATE HOURLY CONCENTRATION FILE; = 12
80 ALPHANUMERIC CHARACTERS
80 ALPHANUMERIC CHARACTERS
80 ALPHANUMERIC CHARACTERS
(MET FILE HEADER RECORD)
AN 8 CHARACTER ALPHANUMERIC
DATA.
DATE-TIME OF DATA CREATION.
DATE-TIME OF DATA CREATION.
NUMBER OF 72 CHARACTER ALPHANUMERIC LINES OF TUP12860
DESCRIPTION TUP12870
ND LINES OF ALPHANUMERIC INFORMATION (72 CHARACTERSTUP12880
TUP12890
TUP12900
TUP12910
TUP12920
TUP12930
TUP12940
TUP12950
TUP12960
TUP12970
TUP12980
TUP12990
TUP13000
TUP13010
TUP13020
TUP13030
TUP13040
TUP13050
TUP13060
TUP13070
TUP13080
TUP13090
TUP13100
TUP13110
TUP13120
TUP13130
TUP13140
TUP13150
TUP13160
TUP13170
TUP13180
TUP13190
TUP13200
PER LINE) THAT DESCRIBES THE MET DATA
4 CHARACTER POLLUTANT NAME
MULTIPLIER TO CONVERT USER UNITS TO KILOMETERS
MULTIPLIER TO CONVERT USER HEIGHT UNITS TO METERS
POLLUTANT HALF-LIFE 1SECONDS). AN ENTRY OF ZERO
WILL CAUSE NO POLLUTANT LOSS.
NUMBER OF POINT SOURCES CONSIDERED
NUMBER OF RECEPTORS CONSIDERED
TERRAIN ADJUSTMENT OPTION
BUOYANCY-INDUCED DISPERSION OPTION
STACK-TIP DOWNWASH OPTION
GRADUAL PLUME RISE OPTION
TEST AGAINST BOUNDARY-LAYER HEIGHT AT NIGHT
HOURLY EMISSIONS INPUT OPTION
POLAR COORDINATE RECEPTOR OPTION
(WRITE IF IOPT = 1)
TERRAIN ADJUSTMENT FACTORS
- NPTLIM RECORDS (ONE FOR EACH SOURCE)
12 CHARACTER SOURCE IDENTIFICATION
EAST COORDINATE OF SOURCE (USER UNITS)
NORTH COORDINATE OF SOURCE (USER UNITS)
EMISSION RATE (G/SEC) FOR POLLUTANT NPOL
PHYSICAL STACK HEIGHT (M)
STACK GAS TEMPERATURE (K)
STACK DIAMETER (M)
~ 'VELC
STACK GAS EXIT VELOCITY (G/SEC)
114
-------
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
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
QELEV STACK BASE GROUND-LEVEL ELEVATION (USER HEIGHT
UNITS)
IMPS ARRAY OF SOURCE NUMBERS IN ORDER OF SIGNIFICANCE
RECORD TYPE 8
RNAME
RREC
SREC
ZR
ELR
STAR
TUP13210
TUP13220
TUP13230
TUP13240
TUP13250
TUP13260
TUP13270
TUP13280
TUP13290
#*
RECORD TYPES 1-8 OCCUR ONCE AT THE TOP OF THE FILE.
RECORDS 9, 10, AND 11 ARE REPEATED IN
SEQUENCE FOR EACH HOUR.
- NRELIM RECORDS (ONE FOR EACH RECEPTOR)
8 CHARACTER RECEPTOR IDENTIFICATION
EAST COORDINATE OF RECEPTOR (USER UNITS)
NORTH COORDINATE OF RECEPTOR {USER UNITS)
RECEPTOR HEIGHT ABOVE LOCAL GROUND-LEVEL (M)
RECEPTOR GROUND-LEVEL ELEVATION (USER HEIGHT UNITS)TUP13300
FLAG TO INDICATE RECEPTOR STATUS, I.E., TUP13310
* RECEPTOR ELEVATION IS BELOW LOWEST STACK BASETUP13320
ELEVATION TUP13330
RECEPTOR ELEVATION IS ABOVE LOWEST STACK TOP TUP13340
ELEVATION. TUP13350
TUP13360
TUP13370
TUP13380
TUP13390
TUP13400
TUP13410
TUP13420
TUP13430
TUP13440
TUP13450
TUP13460
TUP13470
TUP13480
TUP13490
TUP13500
TUP13510
TUP13520
TUP13530
TUP13540
OUTPUT FILE (UNIT 14) PARTIAL CONCENTRATIONS (CREATED IF IOPWPC=1)TUP13550
TUP13560
RECORD TYPE 1
FLAG TO INDICATE PARTIAL CONCENTRATION FILE; = 14
RECORD TYPE
IYR
IDY
LH
9 (ONE FOR EACH HOUR)
2-DIGIT YEAR
JULIAN DAY
HOUR
RECORD TYPE 10 (ONE FOR EACH HOUR)
HSAV
DSAV
EFFECTIVE PLUME HEIGHTS FOR EACH SOURCE
DISTANCE TO FINAL RISE FOR EACH SOURCE
RECORD TYPE 11 (ONE FOR EACH HOUR)
PHCHI(NRE) CONCENTRATIONS (G/M**3) AT EACH RECEPTOR
IFLAGP
*** RECORD TYPES 2-8 ARE IDENTICAL TO THOSE IN THE HOURLY
CONCENTRATION FILE (UNIT 12).
*## RECORD TYPES 1-8 OCCUR ONCE AT THE TOP OF THE FILE.
ONE RECORD 9 AND NPTLIM RECORD 10'S ARE
WRITTEN EACH HOUR.
RECORD TYPE
IYR
IDY
LH
9 (ONE FOR EACH HOUR)
2-DIGIT YEAR
JULIAN DAY
HOUR
RECORD TYPE 10 (ONE FOR EACH SOURCE, FOR EACH HOUR)
HSAV (NPT)
DSAV (NPT
PARTC(NREJ
EFFECTIVE PLUME HEIGHT
DISTANCE TO FINAL RISE
CONCENTRATIONS (G/M**3) AT EACH RECEPTOR FROM
SOURCE NPT (NRE = 1, NRELIM).
PARAMETER (NLMAX=20,NPTMAX=25,NREMAX=180,NDMAX=40)
DIMENSION HSAV(NPTMAX).DSAV(NPTMAX),CDUM(NHEMAX),
1 DHDUM(NPTMAX)
COMMON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,CONTER(4),IYRS,IDYS,
1 IHRS,IHLIM,IOPT,IOPB,IOPD,IOPG,IOPM,IOPQ,IOPR,
2 IOPWPC.NPOL,LINE1(20).LINE2(20),LINE3(20),NPRNT
COMMON /METCOM/DTHDZ(NLMAX;,SAL(NLMAX),SEL(NLMAX),TL(NLMAX),
1 UL(NLMAX),WDL(NLMAX),ZL(NLMAX),KLASS,LMX.MDATA,
2 MDATB,METNAM(2),MYR.MJD,MHR,ND,NLLIM,DESC(18,NDMAX)TUP13870
COMMON /SORCOM/D(NPTMAX), PNAME(3.NPTMAX). PSH(NPTMAX) ,QJ(NPTMAX), TUP13880
1 QELEV(NPTMAX),QEAST(NPTMAX),QNORD(NPTMAX), TUP13890
2 TS(NPTMAX),VS(NPTMAX),IQYR,IQJD,IQHR,NPTLIM, TUP13900
TUP13570
TUP13580
TUP13590
TUP13600
TUP13610
TUP13620
TUP13630
TUP13640
TUP13650
TUP13660
TUP13670
TUP13680
TUP13690
TUP13700
TUP13710
TUP13720
TUP13730
TUP13740
TUP13750
TUP13760
TUP13770
TUP13780
TUP13790
TUP13800
TUP13810
TUP13820
TUP13830
TUP13840
TUP13850
TUP13860
115
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
3 IMPS(NPTMAX)
COMMON /RECCOM/ELR(NREMAX),PAETC(NREMAX,NPTMAX),PHCHI(NREMAX),
1 RNAME(2.NREMAX),RREC(NREMAX),SHEC(NREMAX),
2 STAJ?(2,NREMAX) ,ZR(NREMAX) ,NRELIM
COMMON /INOUT/ IN,10
DATA IFLAGH,IFLAGP /12.14/
WRITE HEADER RECORDS FOR HOURLY CONCENTRATION FILE (UNIT 12).
WRITE(12) IFLAGH
WRITE(12) LINE1,LINE2,LINE3
WRITE?12) METNAM,MDATA,MDATB,ND,((DESC(I,J), I = 1,18), J = 1,ND)
WRITE(12) NPOL.CONTWO,CELM,HAFL,NPTLIM,NRELIM
WRITE(12) IOPT.IOPB,IOPD.IOPG,IOPM,IOPQ,IOPR
IF (IOPT .EQ. 1) WRITE(12) (CONTER(I), I = 1,4)
DO 5 NPT = 1,NPTLIM
5 WRITE(12) (PNAME(I.NPT), I = 1.3).QEAST(NPT).QNORD(NPT),
1 QJ(NPT),PSH(NPT),TS(NPT),D(NPT),VS(NPT),
2 QELEV(NPT),IMPS(NPT)
DO 10 NRE = 1,NRELIM
WRITE(12) (RNAME(I,NRE), I = 1,2).RREC(NRE),SREC(NRE),ZR(NRE),
1 ELR(NRE), (STA/?(J,NRE), } = 1,2)
10 CONTINUE
WRITE HEADER RECORDS FOR THE PARTIAL CONCENTRATION FILE
(UNIT 14).
IF (IOPWPC .EQ. 0) GO TO 20
WRITE(14) IFLAGP
WRITE(14) LINE1,LINE2,LINE3
WRITE(14) METNAM,MDATA,MDATB,ND,((DESC(I,J), I = 1,18), J = 1,ND)
WRITEC14) NPOL,CONTWO,CELM,HAFL,NPTLIM,NRELIM
WRITE(14) IOPT.IOPB,IOPD,IOPG,IOPM,IOPQ,IOPR
IF (IOPT .EQ. 1) WRITE(14) (CONTER(I), I = 1,4)
DO 13 NPT = 1,NPTLIM
13 WRITE(14) (PNAME(I.NPT), I = 1,3),QEAST(NPT),QNORD(NPT),
1 QJ(NPT).PSH(NPT).TS(NPT),D(NPT),VS(NPT),
2 QELEV(NPT),IMPS(NPT)
DO 15 NRE = 1,NRELIM
WRITE(14) (RNAME(I,NRE), I = 1,2),RREC(NRE),SREC(NRE),ZR(NRE),
1 ELR(NRE),(STAR(J.NRE), J = 1,2)
15 CONTINUE
INITIALIZE PRIOR TO START OF SIMULATION.
20 CALL CHRON(IYRS,IDYS,IHRS,IHRBEG)
IF (IHRBEG .GT. 0) GO TO 30
ICOND = 22001
GO TO 900
30 IHREX = IHRBEG - 1
IHREND = IHRBEG + IHLIM - 1
KMET = 0
KEMIS = 0
MYDH = -1
KMISS = 0
KINCOM = 0
NTAH = 0
NHR = 0
HMAX = -1.0
DO 40 NRE = 1,NRELIM
CDUM^NRE) = -9999.
40 CONTINUE
DO 50 NPT = 1,NPTLIM
DHDUM(NPT) = -9999.
50 CONTINUE
INITIALIZE FOR NEXT HOUR.
100 DO 110 NRE = 1,NRELIM
PHCHI(NRE) =0.0
TUP13910
TUP13920
TUP13930
TUP13940
TUP13950
TUP13960
TUP13970
TUP13980
TUP13990
TUP14000
TUP14010
TUP14020
TUP14030
TUP14040
TUP14050
TUP14060
TUP14070
TUP14080
TUP14090
TUP14100
TUP14110
TUP14120
TUP14130
TUP14140
TUP14150
TUP14160
TUP14170
TUP14180
TUP14190
TUP14200
TUP14210
TUP14220
TUP14230
TUP14240
TUP14250
TUP14260
TUP14270
TUP14280
TUP14290
TUP14300
TUP14310
TUPI4320
TUP14330
TUP14340
TUP14350
TUP14360
TUP14370
TUP14380
TUP14390
TUP14400
TUP14410
TUP14420
TUP14430
TUP14440
TUP14450
TUP14460
TUP14470
TUP14480
TUP14490
TUP14500
TUP14510
TUP14520
TUP14530
TUP14540
TUP14550
TUP14560
TUP14570
TUP14580
TUP14590
TUP14600
116
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
110 CONTINUE
IHREX = IHREX + 1
CALL ICHRON(IHREX,IYR,IDY,LH)
IF ((IYR .GE. 0) .AND. (IDY .GE. 0) .AND. (LH
ICOND = 22002
GO TO 900
140 IF (MYDH - IHREX) 150,300,400
GET MET DATA.
150 MISG = 0
CALL TU320(IHREX,KMET,MYDH.ICOND,MISG)
IF (ICOND .NE. 0) GO TO 900
MIST = MISG
IF (MYDH - IHREX) 200,300,400
ERROR READING MET FILE.
200 WRITE(IO.1000) MYDH,IHREX
ICOND = 22003
GO TO 900
HAVE FOUND HOUR OF INTEREST.
300 MISG = MIST
IF (MISG .GT. 0) GO TO 405
CTER = CONTER(KLASS)
GET HOURLY EMISSIONS IF IOPQ = 1
IF (IOPQ .EQ. 0) GO TO 310
CALL TU325(IHREX,KEMIS,ICOND)
IF (ICOND .NE. 0) GO TO 900
CALCULATE CONCENTRATIONS
.GE. 0)) GO TO 140
CHECK IF MISSING CODE TURNED ON
C
c
c
c
c
c
c
310 CALL TU330(HSAV,DSAV.MISG)
IF (MISG .GT. 0) GO TO 405
MET DATA IS SUFFICIENT TO COMPLETE SIMULATION FOR THIS HOUR.
WRITE HOURLY AND PARTIAL CONCENTRATIONS TO APPROPRIATE FILES
INCREMENT COUNTERS.
WRITE(12) IYR,IDY,LH
WRITE(12) (HSAV(NPT).NPT = 1,NPTLIM),(DSAV(NPT), NPT = l.NPTLIM)
WRITE(12) (PHCHI(NRE), NRE = 1,NRELIM)
IF (IOPWPC .EQ. 0) GO TO 320
WRITE(14) IYR.IDY,LH
DO 320 NPT = l.NPTLIM
WRITE(14) HSAV(NPT),DSAV(NPT),(PARTC(NRE,NPT), NRE = 1,NRELIM)
CONTINUE
C
C
C
C
320
KEEP TRACK OF NUMBER OF HOURS CALCULATED.
CONCENTRATION.
UPDATE MAXIMUM
C
c
c
NT AH = NT AH + 1
NTAH: TOTAL NUMBER OF HOURS CALCULATED.
CALL TU335(IYR,IDY,LH.HMAX,IYRMAX,IDYMAX,LHMAX.MAXREC)
IF (NTAH .GT.NPRNT) GO TO 500
CALL TU340(IYR,IDY,LH,HSAV,DSAV)
GO TO 500
MISSING (MISG = 1) AND INCOMPLETE (MISG > 1) PROCESSING.
400
405
MISG = 1
WRITE HOURLY RECORD, WITH MISG CONC
WRITE(12) IYR,IDY,LH
WRITE(12)
TO UNIT 12.
(DHDUM(NPT),NPT = l.NPTLIM),(DHDUM(NPT),NPT = l.NPTLIM)
TUP14610
TUP14620
TUP14630
TUP14640
TUP14650
TUP14660
TUP14670
TUP14680
TUP14690
TUP14700
TUP14710
TUP14720
TUP14730
TUP14740
TUP14750
TUP14760
TUP14770
TUP14780
TUP14790
TUP14800
TUP14810
TUP14820
,TUP14830
TUP14840
TUP14850
TUP14860
TUP14870
TUP14880
TUP14890
TUP14900
TUP14910
TUP14920
TUP14930
TUP14940
TUP14950
TUP14960
TUP14970
TUP14980
TUP14990
TUP15000
,TUP15010
TUP15020
TUP15030
TUP15040
TUP15050
TUP15060
TUP15070
TUP15080
TUP15090
TUP15100
TUP15110
TUP15120
TUP15130
TUP15140
TUP15150
TUP15160
TUP15170
TUP15180
TUP15190
TUP15200
TUP15210
TUP15220
TUP15230
TUP15240
TUP15250
TUP15260
TUP15270
TUP15280
TUP15290
TUP15300
117
-------
WRITE(12) (CDUM(NRE), NRE =
IF (MISG .GT. 1) GO TO 415
l.NRELIM)
C
C
C
C
C
C
C
C
C
c
c
WRITECO. 1010) IYR, IDY, LH
KMISS = KMISS + 1
GO TO 420
415 WRITE(10,1015) IYR.IDY,LH
KINCOM = KINCOM + 1
420 IF(IOPWPC .EQ. 0) GO TO 500
WRITE NPTLIM PARTIAL CONC. RECORDS, WITH MISG CONC., TO
UNIT 14.
WRITE(14j IYR.IDY,LH
DO 430 NPT = 1,NPTLIM
WRITE(14) DHDUM(NPT),DHDUM(NPT),(CDUM(NRE), NRE = l.NRELIM)
430 CONTINUE
CHECK FOR END OF SIMULATION.
500 NHR = NHR + 1
NHR: TOTAL NUMBER OF HOURS CONSIDERED.
IF (IHREX .NE. IHREND) GO TO 100
WRITE(IO,1030) LINE1,LINE2,LINE3
WRITEl10,1040)
WRITE(10,1050) NPOL,IYRS,IDYS,IHRS,IYR,IDY,LH
WRITE(IO,1060) HMAX.IYRMAX,IDYMAX,LHMAX,MAXREC
WRITE(10,1070) KMISS,KINCOM,NTAH
GET NEXT SIMULATION PERIOD.
READ(IN,*,ERR=650,END=900) IYRS,IDYS,IHRS,IHLIM
GO TO 20
ERROR ON READING NEW SIMULATION PERIOD.
650 ICOND = 22004
WRITE(IO,1020)
RETURN SEQUENCE.
900 ENDFILE 12
ENDFILE 12
IF (IOPWPC .EQ.
ENDFILE 14
ENDFILE 14
999 RETURN
0) GO TO 999
ARE
ARE
: FORMAT STATEMENTS.
*
1000 FORMAT('0*** ERROR READING MET FILE (UNIT 9).')
1010 FORMATC'OMET DATA FOR YEAR-DAY-HOUR,',12,'-',13,12,',
1 'MISSING. NO CONCENTRATION CALCULATIONS MADE.')
1015 FORMAT('OMET DATA FOR YEAR-DAY-HOUR, ', 12, 13, 12, ' .
1 'INCOMPLETE. NO CONCENTRATION CALCULATIONS MADE. )
1020 FORMAT('0*** SYSTEM ERROR ON READING INPUT FOR NEXT SIMULATION '
1 'PERIOD.')
1030 F0HMAT(1H1,'TITLE: ',20A4,2(/,9X,20A4))
1040 FORMATflHO;23X.'* * * SIMULATION SUMMARY * * *')
1050 FORMAT('OMAXIMUM ',A4.'CONCENTRATION FOR THE PERIOD (YR,DAY,HR)
1 12,,13,,12." TO ',12,'-',13,'-',12)
1060 FORMAT(' CONCENTRATION:'.6PF10.2, /,
1 DATE: ,12,'-',1$,,12,/,
2 ' RECEPTOR NUMBER: ',16,//)
1070 FORMAT('ONUMBER OF HOURLY MET RECORDS MISSING:
1 ' NUMBER OF HOURLY MET RECORDS INCOMPLETE:
2 ' CONCENTRATION ESTIMATES WERE MADE FOR:
END
16,/,
16,/,
16,' HRS')
C
C
C
C
SUBROUTINE TU320(IHREX,KMET.MYDH,ICOND.MISG)
320-GET-MET-DATA
ARGUMENT LIST:
INPUT: IHREX - SIMULATED HOUR
TUP15310
TUP15320
TUP15330
TUP15340
TUP15350
TUP15360
TUP15370
TUP15380
TUP15390
TUP15400
TUP15410
TUP15420
TUP15430
TUP15440
TUP15450
TUP15460
TUP15470
TUP15480
TUP15490
TUP15500
TUP15510
TUP15520
TUP15530
TUP15540
TUP15550
TUP15560
TUP15570
TUP15580
TUP15590
TUP15600
TUP15610
TUP15620
TUP15630
TUP15640
TUP15650
TUP15660
TUP15670
TUP15680
TUP15690
TUP15700
TUP15710
TUP15720
TUP15730
TUP15740
TUP15750
TUP15760
TUP15770
TUP15780
TUP15790
TUP15800
TUP15810
, TUP15820
TUP15830
TUP15840
TUP15850
',TUP15860
TUP15870
TUP15880
TUP15890
TUP15900
TUP15910
TUP15920
TUP15930
TUP15940
TUP15950
TUP15960
TUP15970
TUP15980
TUP15990
118
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
CALLING ROUTINES:
TU220
SUBPROGRAMS CALLED
TU405, CHRON
I/O: KMET - MET FILE READ COUNTER TUP16000
OUTPUT: MYDH - HOUR READ FROM MET FILE TUP16010
ICOND - CONDITION INDICATOR (0 = NO ERROR) TUP16020
MISG - MISSING CODE (1 = MISSING) TUP16030
TUP16040
TUP16050
TUP16060
TUP16070
TUP16080
TUP16090
TUP16100
DESCRIPTION: TUP16110
THIS MODULE CALLS TU405 TO DO THE ACTUAL I/O TO THE MET FILE.TUP16120
THE MET FILE IS READ UNTIL THE SIMULATED HOUR (IHREX) IS TUP16130
FOUND. METEOROLOGICAL DATA VALUES ARE PASSED THROUGH COMMON TUP16140
METCOM BETWEEN TU320 AND TU410. TUP16150
TUP16160
TUP16170
TUP16180
TUP16190
TUP16200
TUP16210
TUP16220
MDATB,METNAM(2).MYR.MJD.MHR,ND,NLLIM,DESC(18,NDMAX)TUP16230
PARAMETER (NLMAX=20,NDMAX=40)
COfWON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,CONTER(4),IYRS,IDYS,
1 IHRS,IHLIM.IOPT,IOPB,IOPD.IOPG,IOPM.IOPQ,IOPR,
2 IOPWPC.NPOL,LINE1(20),LINE2(20),LINE3(20),NPRNT
COMMON /METCOM/DTHDZ(NLMAXj .SAL(NLMAX).SEL(NLMAX),TL(NLMAX),
1 UL(NLMAX),WDL(NLMAX),ZL(NLMAX),KLASS,LMX,MDATA,
C
C
c
COMMON /INOUT/ IN,10
MISG = 0
C
C
C
READ HOURLY MET RECORDS.
10 KMET = KMET + 1
CALL TU405(KMET.ICOND.IEOF.MISG)
IF (ICOND .EQ. 6) GO TO 100
WRITE(IO.1000) KMET
GO TO 999
C
C
C
NO ERROR ON READ. CHECK FOR END OF FILE.
100 IF (IEOF .EQ. 0) GO TO 200
WRITE(IO.IOIO) KMET-1
ICOND = 32001
GO TO 999
HOURLY RECORD READ SUCCESSFULLY. IS IT HOUR OF INTEREST?
C
c
c
c
200 CALL CHRON(MYR.MJD.MHR,MYDH)
IF (MYDH .GT. 0) GO TO 210
ICOND = 32002
GO TO 999
210 IF (MYDH .LT. IHREX) GO TO 10
C
C
C
C
HAVE LOCATED MET DATA FOR THE SIMULATED HOUR OR A LATER HOUR.
CHECK TO SEE IF MIXING LEVEL IS TOO HIGH.
IF (LMX .LE. NLLIM) GO TO 300
WRITE(10,1020) MYR,MJD,MHR
MISG = 5
GO TO 999
CHECK TO SEE THAT LEVEL HEIGHTS ARE IN ASCENDING ORDER.
RETURN TO CALLING ROUTINE IF DATA PASSED SCREENING.
300 DO 310 NL = 2,NLLIM
IF (ZL(NL) .LE. ZL(NL-l)) GO TO 320
310 CONTINUE
GO TO 999
320 WRITE(IO,1030) MYR,MJD,MHR
MISG = 10
999 RETURN
TUP16240
TUP16250
TUP16260
TUP16270
TUP16280
TUP16290
TUP16300
TUP16310
TUP16320
TUP16330
TUP16340
TUP16350
TUP16360
TUP16370
TUP16380
TUP16390
TUP16400
TUP16410
TUP16420
TUP16430
TUP16440
TUP16450
TUP16460
TUP16470
TUP16480
TUP16490
TUP16500
TUP16510
TUP16520
TUP16530
TUP16540
TUP16550
TUP 165 60
TUP16570
TUP16580
TUP16590
TUP16600
TUP16610
TUP16620
TUP16630
TUP16640
TUP16650
TUP16660
TUP16670
TUP16680
TUP16690
119
-------
c
c
c
FORMAT STATEMENTS.
1000 FORMAT('0*** SYSTEM ERROR OCCURRED WHEN READING THE ',16,'TH
1 'HOURLY MET RECORD.')
1010 FORMAT('0*** ',16,' HOURLY MET RECORDS WERE READ.'/,
1 ' *** THE MET FILE WAS EXHAUSTED WITHOUT FINDING DATA ',
2 'FOR THE HOUR REQUESTED.')
1020 FORMAT('0*** THE LEVEL OF THE MIXING HEIGHT EXCEEDS THE NUMBER '
1 'OF LEVELS FURNISHED.*/,
2 * *** YEAR-DAY-HOUR = ',12,'-',13,'-',12,' IS CONSIDERED'
3 ' MISSING.')
1030 FORMAT('0*** HEIGHTS OF LEVELS ARE NOT IN ASCENDING ORDER.'/.
1 ' *** YEAR-DAY-HOUR = ',12,,13,,12,' IS CONSIDERED'
2 ' MISSING.')
END
¦1
SUBROUTINE TU325(IHREX,KEMIS,ICOND)
325-GET-HOURLY-EMISSIONS
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
c
c
c
SIMULATED HOUR
EMISSION FILE READ COUNTER
CONDITION INDICATOR (0 = NO ERROR)
C
C
C
ARGUMENT LIST:
INPUT: IHREX
I/O: KEMIS
OUTPUT: ICOND
CALLING ROUTINES:
TU220
SUBPROGRAMS CALLED:
TU430, CHRON
DESCRIPTION:
THE TASK OF THIS MODULE IS TO POSITION THE EMISSIONS FILE
FOR THE START OF THE RUN. THE ACTUAL I/O TO THE EMISSIONS
FILE IS DONE BY MODULE TU430. EMISSIONS DATA ARE ACCESSED
THROUGH COMMON SORCOM. ERROR MESSAGES ARE PRINTED BY THIS
MODULE, BUT PROGRAM TERMINATION IS INDICATED BY PASSING A
NONZERO VALUE THROUGH ICOND.
PARAMETER (NPTMAX=25)
COMMON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,CONTER(4),IYRS,IDYS,
1 IHRS,IHLIM,IOPT,IOPB,IOPD,IOPG,IOPM,IOPQ,IOPR,
2 IOPWPC.NPOL,LINE1(20), LINE2(20j.LINE3(20),NPRNT
COMMON /SORCOM/D(NPTMAX),PNAME(3,NPTMAX),PSH(NPTMAX),QJ(NPTMAX),
1
2
3 IMPS(NPTMAX)
COMMON /INOUT/ IN,10
QELEV(NPTMAX),QEAST(NPTMAX).QNORD(NPTMAX),
TS(NPTMAX),VS(NPTMAX),IQYR,If~ "
[QJD,IQHR,NPTLIM,
C
C
C
C
C
C
READ EMISSIONS FILE.
100 KEMIS = KEMIS + 1
CALL TU430(ICOND,IEOF)
IF (ICOND .EQ. 0) GO TO 200
WRITE(10.1000) KEMIS
GO TO 995
NO ERROR ON READ. CHECK FOR END OF FILE.
200 IF (IEOF .EQ. 0) GO TO 300
WRITE(IO.IOIO) KEMIS - 1
ICOND = 32501
GO TO 999
ONE HOUR OF EMISSIONS DATA READ. IS IT THE HOUR OF INTEREST?
300 CALL CHRON(IQYR.IQJD,IQHR.IQYDH)
IF (IQYDH .GT. 0) GO TO 310
ICOND = 32502
GO TO 999
TUP16700
TUP16710
TUP16720
TUP16730
TUP16740
TUP16750
TUP16760
TUP16770
TUP16780
TUP16790
TUP16800
TUP16810
TUP16820
TUP16830
TUP16840
TUP16850
TUP16860
TUP16870
TUP16880
TUP16890
TUP16900
TUP16910
TUP16920
TUP16930
TUP16940
TUP16950
TUP16960
TUP16970
TUP16980
TUP16990
TUP17000
TUP17010
TUP17020
TUP17030
TUP17040
TUP17050
TUP17060
TUP17070
TUP17080
TUP17090
TUP17100
TUP17110
TUP17120
TUP17130
TUP17140
TUP17150
TUP17160
TUP17170
TUP17180
TUP17190
TUP17200
TUP17210
TUP17220
TUP17230
TUP17240
TUP17250
TUP17260
TUP17270
TUP17280
TUP17290
TUP17300
TUP17310
TUP17320
TUP17330
TUP17340
TUP17350
TUP17360
TUP17370
TUP17380
120
-------
310 IF (IQYDH .EQ. IHREX) GO TO 999
IF (IQYDH .LT. IHREX) GO TO 100
WRITE (10,1020) IQYR,IQJD,IQHR,IYRS,IDYS,IHRS
ICOND = 32503
C
C
C
999 RETURN
FORMAT STATEMENTS
1000 FORMAT('0*** SYSTEM ERROR OCCURRED WHEN READING THE ',16,'TH \
1 'HOURLY EMISSION RECORD.')
1010 FORMAT('0*** ',16' HOURLY EMISSION RECORDS WERE READ.'/.
1 ' *## THE EMISSION FILE WAS EXHAUSTED WITHOUT FINDING ',
2 'DATA FOR THE HOUR REQUESTED.')
1020 FORMAT('0*** YEAR-DAY-HOUR READ ('.12..13 .12 ') EXCEEDS*
1 ' YEAR-DAY-HOUR REQUESTED (',12,'-',13,,12,*).')
END
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
SUBROUTINE TU430(ICOND,IEOF)
430-READ-EMISSIONS-FILE
ARGUMENT LIST:
OUTPUT: ICOND - CONDITION INDICATOR (0 = NO ERROR)
IEOF - END OF FILE INDICATOR (1 = END OF FILE)
CALLING ROUTINES:
TU325
DESCRIPTION:
THIS MODULE PERFORMS ALL I/O TO THE EMISSIONS FILE. UNIT 10.
EMISSIONS DATA ARE READ INTO COMMON SORCOM. ERRORS ARE
INDICATED BY PASSING A NONZERO VALUE THROUGH ICOND. END OF
FILE IS INDICATED BY PASSING A VALUE OF ONE THROUGH IEOF.
INPUT FILE (UNIT 10) EMISSION DATA (USED IF IOPQ = 1)
RECORD TYPE 1 (ONE FOR EACH HOUR OF SIMULATION)
IQYR
IQJD
IQHR
QJ(NPT)
TS(NPT)
VS(NPT)
YEAR
JULIAN DAY
HOUR
EMISSION RATE FOR THE POLLUTANT NPOL FOR EACH
SOURCE NPT (G/SEC).
STACK GAS TEMPERATURE (KELVIN) FOR EACH
SOURCE NPT.
STACK GAS EXIT VELOCITY (M/SEC) FOR EACH
SOURCE NPT.
PARAMETER (NPTMAX=25)
COMMON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,CONTER(4),IYRS,IDYS,
1 IHRS,IHLIM.IOPT,IOPB,IOPD.IOPG,IOPM,IOPQ,IOPR,
2 IOPWPC.NPOL,LINE1(20),LINE2(20),LINE3(20),NPRNT
COMMON /SORCOM/D(NPTMAX),PNAME(3,NPTMAX).PSH(NPTMAX),QJ(NPTMAX),
1 QELEV(NPTMAX),QEAST(NPTMAX),QNORD(NPTMAX),
2 TS^NPTMAJO^,VS(NPTMAX), IQYR, IQJD,IQHR,NPTLIM,
READ HOURLY RECORD.
READ(10,ERR=100,END=200) IQYR,IQJD,IQHR,
1 (QJ(NPT), NPT = 1, NPTLIM),
2 (TS(NPT), NPT = 1, NPTLIM),
3 (VS(NPT), NPT = 1, NPTLIM)
GO TO 999
ERROR IN READING HOURLY EMISSIONS RECORD.
100 ICOND = 43001
GO TO 999
REACHED END OF FILE.
TUP17390
TUP17400
TUP17410
TUP17420
TUP17430
TUP17440
TUP17450
TUP17460
TUP17470
TUP17480
TUP17490
TUP17500
TUP17510
TUP17520
TUP17530
TUP17540
TUP17550
TUP17560
TUP17570
TUP17580
TUP17590
TUP17600
TUP17610
TUP17620
TUP17630
TUP17640
TUP17650
TUP17660
TUP17670
TUP17680
TUP17690
TUP17700
TUP17710
TUP17720
TUP17730
TUP17740
TUP17750
TUP17760
TUP17770
TUP17780
TUP17790
TUP17800
TUP17810
TUP17820
TUP17830
TUP17840
TUP17850
TUP17860
TUP17870
TUP17880
TUP17890
TUP17900
TUP17910
TUP17920
TUP17930
TUP17940
TUP17950
TUP17960
TUP17970
TUP17980
TUP17990
TUP18000
TUP18010
TUP18020
TUP18030
TUP18040
TUP18050
TUP18060
TUP18070
121
-------
c
c
200 IEOF = 1
999 RETURN
END
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
c
c
c
c
c
c
SUBROUTINE TU330(HSAV.DSAV.MISG)
330-CALCULATE-CONCENTRATION
ARGUMENT LIST:
OUTPUT: HSAV
DSAV
MISG
CALLING ROUTINES:
TU220
- PLUME HEIGHTS FOR THIS HOUR (METERS)
- DISTANCE TO FINAL RISE FOR THIS HOUR
- MISSING CODE (1 = MISSING)
SUBPROGRAMS CALLED:
TU435, TU440, TU445, TU450, TU455, ZF
DESCRIPTION:
THIS MODULE COORDINATES THE CONCENTRATION CALCULATIONS WHICH
INCLUDES:
- CALCULATING PLUME RISE FOR EACH POINT SOURCE,
- CALCULATING PLUME PENETRATION FOR EACH POINT SOURCE,
- DETERMINING THE METEOROLOGY AT THE EFFECTIVE PLUME
HEIGHT FOR EACH POINT SOURCE,
- CALCULATING THE DISPERSION PARAMETERS AT EACH
RECEPTOR, AND
- COMPUTING RELATIVE CONCENTRATIONS AT EACH RECEPTOR.
DEFINITIONS OF IMPORTANT VARIABLES:
PARTC - HOURLY PARTIAL CONCENTRATION ARRAY. CONTRIBUTIONS
(G/M**3) BY RECEPTOR AND SOURCE.
PHCHI - HOURLY CONCENTRATION ARRAY. TOTAL CONCENTRATIONS
(G/M**3) BY RECEPTOR.
PARAMETER (NLMAX=20,NPTMAX=25,NREMAX=180,NDMAX=40)
DIMENSION HSAV(NPTMAX),DSAV(NPTMAX)
COMMON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,C0NTER(4),IYRS,IDYS,
1 IHRS,IHLIM,IOPT,IOPB,IOPD,IOPG,IOPM,IOPQ,IOPR,
2 IOPWPC,NPOL,LINE1(20).LINE2(20j,LINE3(20),NPRNT
COWON /METCOM/DTHDZ (NLMAX), SAL(NLMAX), SEL(.NLMAX), TL(NLMAX),
1 UL(NLMAX),WDL(NLMAX). Z L (NLMAX),KLASS,LMX,MDATA,
2 MDATB,METNAM(2),MYR,MJD,MHR,ND,NLLIM,DESC(18,NDMAX)
COMMON /SORCOM/D(NPTMAX) ,PNAME(3.NPTMAX). PSH(NPTMAXKQJ(NPTMAX),
1 QELEV(NPTMAX),QEAST(NPTMAX),QNORD(NPTMAX),
2 TS(NPTMAX).VS(NPTMAX),IQYR,IQJD,IQHR,NPTLIM,
3 IMPS(NPTMAfc)
COMMON /RECCOM/ELR(NREMAX),PARTC(NREMAX,NPTMAX).PHCHI(NREMAX),
1 RNAME(2,NREMAX),RREC(NREMAX),SREC(NREMAX),
2 STAR(2,NREMAX),ZR(NREMAX),NRELIM
INITIALIZE POTENTIAL TEMPERATURE GRADIENT ARRAY FOR THIS HOUR.
DO 5 NL = l.NLLIM
DTHDZ(NL) = 100.
5 CONTINUE
BEGIN LOOP OVER SOURCES.
DO 300 NPT = 1,NPTLIM
CALCULATE PLUME RISE.
CALL TU435(NPT.HL,H,TEMPST,UST,THZST,FO,DELH,DISTF,HE,MISG)
IF (MISG .GT. 0) GO TO 999
CALCULATE PARTIAL PLUME PENETRATION.
TUP18080
TUP18090
TUP18100
TUP18110
TUP18120
TUP18130
TUP18140
TUP18150
TUP18160
TUP18170
TUP18180
TUP18190
TUP18200
TUP18210
TUP18220
TUP18230
TUP18240
TUP18250
TUP18260
TUP18270
TUP18280
TUP18290
TUP18300
TUP18310
TUP18320
TUP18330
TUP18340
TUP18350
TUP18360
TUP18370
TUP18380
TUP18390
TUP18400
TUP18410
TUP18420
TUP18430
TUP18440
TUP18450
TUP18460
TUP18470
TUP18480
TUP18490
TUP18500
TUP18510
TUP18520
TUP18530
TUP18540
TUP18550
TUP18560
TUP18570
TUP18580
TUP18590
TUP18600
TUP18610
TUP18620
TUP18630
TUP18640
TUP18650
TUP18660
TUP18670
TUP18680
TUP18690
TUP18700
TUP18710
TUP18720
TUP18730
TUP18740
TUP18750
TUP18760
122
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
CALL TU440(H,HL,DELH,HEPR.PORT,DELHPR,ZMN)
IF (PORT .GT. 0.) GO TO 20
NONE OF PLUME AVAILABLE FOR MIXING.
IF (IOPWPC .EQ. 0) GO TO 300
DO 10 NRE = l.NRELIM
PARTC(NRE.NPT) = 0.0
10 CONTINUE
GO TO 300
CALCULATE EMISSIONS METEOROLOGY.
20 CALL TU445(HEPR,UPL,WDPL.SAPL,SEPL,MISG)
IF (MISG .GT. 0) GO TO 999
CALCULATE DISTANCE TO FINAL RISE.
IF (DISTF .EQ. 0) GO TO 25
DISTF = (DELHPR * UST/(160. * FO ** 0.333333)) ** 1.5
25
30
C
C
SET SOURCE PARAMETERS.
Q = QJ(NPT) * PORT
RQ = QEAST(NPT)
SQ = QNORD(NPT)
EP = QELEV(NPT)
HSAV(NPT) = HEPR
DSAV(NPT) = DISTF
TRAD = WDPL * 0.017453292
SINT = SIN(TRAD)
COST = COS(TRAD)
IF (IOPT .EQ. 0) GO TO 110
CONCENTRATION CALCULATIONS — TERRAIN CASE.
DO 100 NRE = l.NRELIM
BEGIN LOOP OVER RECEPTORS.
HTEMP = HEPR
INITIALIZING HTEMP AGAIN IN CASE MODIFIED BY TERRAIN OR
GRADUAL RISE.
PARTC(NRE.NPT)
ER = ELR(NRE)
Z = ZR(NRE)
IF (KLASS .EQ.
IF (Z .GT
XDUM = RQ
YDUM = SQ
X = (YDUM
IF (X .LE
Y = (YDUM
= 0.0
4) GO TO 30
GO TO 100
- RREC(NRE)
_ SREC(NRE)
* COST + XDUM * SINT) * CONTWO
0.) GO TO 100
* SINT - XDUM * COST) * CONTWO
HL)
IF
IF
(X .GE.
((IOPB
50
DELH = DELHPR
MUST RESET PLUME RISE HERE SINCE MAY HAVE MODIFIED (FOURTH
EXECUTABLE STATEMENT DOWN) FOR LAST RECEPTOR.
"" DISTF) GO TO 50
.EQ. 0) .AND. (IOPG .EQ. 1)) GO TO 50
RECALCULATE PLUME RISE IF EITHER GRADUAL RISE OR BID.
DLHG = 160. * FO ** 0.333333 * X ** 0.666667/UST
IF (DELH .GT. DLHG) DELH = DLHG
IF (IOPG .EQ. 1) GO TO 50
MODIFY PLUME HEIGHT ONLY IF USING GRADUAL RISE.
HTEMP = H + DELH
ZMN = HTEMP
IF (KLASS .GT. 2} GO TO 50
IF (HL - HTEMP .LT. ZMN) ZMN = HL - HTEMP
MODIFY H FOR TERRAIN.
DUM = ER - EP
HTEMP = HTEMP + CELM * (CTER * DUM - DUM)
TUP18770
TUP18780
TUP18790
TUP18800
TUP18810
TUP18820
TUP18830
TUP18840
TUP18850
TUP18860
TUP18870
TUP18880
TUP18890
TUP18900
TUP18910
TUP18920
TUP18930
TUP18940
TUP18950
TUP18960
TUP18970
TUP18980
TUP18990
TUP19000
TUP19010
TUP19020
TUP19030
TUP19040
TUP19050
TUP19060
TUP19070
TUP19080
TUP19090
TUP19100
TUP19110
TUP19120
TUP19130
TUP19140
TUP19150
TUP19160
TUP19170
TUP19180
TUP19190
TUP19200
TUP19210
TUP19220
TUP19230
TUP19240
TUP19250
TUP19260
TUP19270
TUP19280
TUP19290
TUP19300
TUP19310
TUP19320
TUP19330
TUP19340
TUP19350
TUP19360
TUP19370
TUP19380
TUP19390
TUP19400
TUP19410
TUP19420
TUP19430
TUP19440
TUP19450
TUP19460
123
-------
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
RC = 0.0
IF (X .LT. 0.001) GO TO 60
IF (HTEMP.LT.O.) HTEMP = 0.
CALCULATE DISPERSION PARAMETERS.
CALL TU450(X,UPL,SAPL,SEPL,DELH,SY,SZ)
CALCULATE RELATIVE CONCENTRATION.
CALL TU455(Y,Z,HTEMP,SY,SZ,HL,UST,RC)
DA = SZ/ZMN
Z = ZFfDA) * ZMN
CALL TU455(Y,Z,ZMN,SY,SZ,HL,UST,RCT)
IF (RCT .LT. RC) RC = RCT
CALCULATE ABSOLUTE CONCENTRATION. INCLUDE EXPONENTIAL
POLLUTANT LOSS. UNITS OF CONCENTRATION ARE G/M**3.
60 TT = X/UPL
TT: TRAVEL TIME IN SEC-KM/M.
PROD = RC * Q/EXP(TT * TLOS)
PHCHI(NRE) = PHCHI(NRE) + PROD
PARTC(NRE,NPT) = PROD
100 CONTINUE
END OF LOOP FOR RECEPTORS.
GO TO 300
CONCENTRATION CALCULATIONS — NO TERRAIN.
110 DO 200 NRE = 1,NRELIM
BEGIN LOOP OVER RECEPTORS.
HTEMP = HEPR
INITIALIZING HTEMP AGAIN IN CASE MODIFIED BY GRADUAL RISE.
PARTC(NRE,NPT) =0.0
Z = ZR(NRE)
IF (KLASS .EQ. 4) GO TO 130
IF (Z .GT. HL) GO TO 200
130 XDUM = RQ - RREC(NRE)
YDUM = SQ - SREC(NRE)
X = (YDUM * COST + XDUM * SINT) * CONTWO
IF (X .LE. 0.) GO TO 200
Y = (YDUM * SINT - XDUM * COST) * CONTWO
DELH = DELHPR
MUST RESET PLUME RISE HERE SINCE MAY HAVE MODIFIED (FOURTH
EXECUTABLE STATEMENT DOWN) FOR LAST RECEPTOR.
IF (X .GE. DISTF) GO TO 150
IF ((IOPB .EQ. 0) .AND. (IOPG .EQ. 1)) GO TO 150
RECALCULATE PLUME RISE IF EITHER GRADUAL RISE OR BID.
DLHG = 160. * FO ** 0.333333 * X ** 0.666667/UST
IF (DELH .GT. DLHG) DELH = DLHG
IF (IOPG .EQ. 1) GO TO 150
MODIFY PLUME HEIGHT ONLY IF USING GRADUAL RISE.
HTEMP = H + DELH
150 RC = 0.0
IF (X .LT. 0.001) GO TO 160
CALCULATE DISPERSION PARAMETERS.
CALL TU450(X,UPL,SAPL,SEPL,DELH,SY,SZ)
CALCULATE RELATIVE CONCENTRATION.
CALL TU455(Y,Z,HTEMP,SY,SZ,HL,UST,RC)
CALCULATE ABSOLUTE CONCENTRATION. INCLUDE EXPONENTIAL
POLLUTANT LOSS. UNITS OF CONCENTRATION ARE G/M**3.
160 TT = X/UPL
TT: TRAVEL TIME IN SEC-KM/M.
TUP19470
TUP19480
TUP19490
TUP19500
TUP19510
TUP19520
TUP19530
TUP19540
TUP19550
TUP19560
TUP19570
TUP19580
TUP19590
TUP19600
TUP19610
TUP19620
TUP19630
TUP19640
TUP19650
TUP19660
TUP19670
TUP19680
TUP19690
TUP19700
TUP19710
TUP19720
TUP19730
TUP19740
TUP19750
TUP19760
TUP19770
TUP19780
TUP19790
TUP19800
TUP19810
TUP19820
TUP19830
TUP19840
TUP19850
TUP19860
TUP19870
TUP19880
TUP19890
TUP19900
TUP19910
TUP19920
TUP19930
TUP19940
TUP19950
TUP19960
TUP19970
TUP19980
TUP19990
TUP20000
TUP20010
TUP20020
TUP20030
TUP20040
TUP20050
TUP20060
TUP20070
TUP20080
TUP20090
TUP20100
TUP20110
TUP20120
TUP20130
TUP20140
TUP20150
TUP20160
124
-------
PROD = RC * Q/EXP(TT * TLOS)
PHCHI(NRE) = PHCHI(NRE) + PROD
PARTC(NRE,NPT) = PROD
200 CONTINUE
C END OF LOOP FOR RECEPTORS.
300 CONTINUE
C END OF LOOP FOR SOURCES.
999 RETURN
END
C
SUBROUTINE TU435(NPT,HL,H,TEMPST,UST,THZST,FO,DELH,DISTF,HE,MISG)
435-LAYER-BY-LAYER-PLUME-RISE
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
ARGUMENT LIST:
INPUT: NPT
OUTPUT: HL
H
TEMPST
UST
THZST
FO
DELH
DISTF
HE
MISG
CALLING ROUTINES:
TU330
SOURCE NUMBER
MIXING HEIGHT (METERS)
PHYSICAL STACK HEIGHT (METERS)
AMBIENT AIR TEMPERATURE AT STACK TOP (K)
WIND SPEED AT STACK TOP (M/SEC)
POTENTIAL TEMPERATURE OF LAYER CONTAINING
STACK
INITIAL BUOYANCY FLUX (M*#4/S*#3)
PLUME RISE (METERS)
DISTANCE TO FINAL RISE
EFFECTIVE PLUME HEIGHT (METERS)
MISSING CODE (IF MISG > 0 THEN MISSING)
C
C
C
SUBPROGRAMS CALLED:
TU510, TU515, TU520, TU530, TU540, TU550
DESCRIPTION:
PLUME RISE IS CALCULATED THROUGH EACH VERTICAL LAYER TAKING
INTO ACCOUNT THE VARIATION OF METEOROLOGICAL INFORMATION
WITH HEIGHT (SPECIFICALLY, TEMPERATURE AND WIND SPEED). IT
IS ASSUMED THAT THE METEOROLOGICAL INFORMATION IS SUFFI-
CIENTLY DENSE IN THE VERTICAL SO THAT LINEAR INTERPOLATION
OF THE PARAMETERS BETWEEN LEVELS YIELDS REASONABLE VALUES.
PARAMETER (NLMAX=20.NPTMAX=25,NDMAX=40)
DIMENSION ZTOP(NLMAX)
COMMON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,CONTER(4).IYRS.IDYS,
1 IHRS,IHLIM,IOPT,IOPB,IOPD,IOPG,IOPM,IOPQ,IOPR,
2 IOPWPC,NPOL,LINE1(20).LINE2(20),LINE3(20),NPRNT
COMMON /METCOM/DTHDZ(NIMAX),SAL(NLMAX).SEL(NLMAX),TL(NLMAX),
1 UL(NLMAX2,1m(NLMAX) ,ZL(NLMAX),KLASS,LMX.MDATA,
2 MDATB,METNAM(2),MYR,MJD.MHR,ND,NLLIM.DESC(18,NDMAX)
COMMON /SORCOM/D(NPTMAXi,PNAME(3,NPTMAX).PSH(NPTMAXl,QJ(NPTMAX),
1 QELEV(NPTMAX),QEAST(NPTMAX),QNORD(NPTMAX),
2 TS(NPTMAX),VS(NPTMAX),IQYR,IQJD,IQHR,NPTLIM,
3 IMPS(NPTMAX)
DATA AMISG/-9999./
INITIALIZE.
MISG = 0
DISTF = 5000.
DO 10 NL = 1,NLLIM
ZTOP(NL) = 0.0
10 CONTINUE
HL = ZL(LMX)
H = PSH(NPT)
FIND HEIGHT ABOVE STACK TOP OF EACH LEVEL.
DO 30 NL = 1,NLLIM
ZTOP(NL) = ZL(NL) - H
ZTOP HAS INDEX OF EACH LEVEL.
TUP20170
TUP20180
TUP20190
TUP20200
TUP20210
TUP20220
TUP20230
TUP20240
TUP20250
TUP20260
TUP20270
TUP20280
TUP20290
TUP20300
TUP2Q310
TUP20320
TUP20330
TUP20340
TUP20350
TUP20360
TUP20370
TUP20380
TUP20390
TUP20400
TUP20410
TUP20420
TUP20430
TUP20440
TUP20450
TUP20460
TUP20470
TUP20480
TUP20490
TUP20500
TUP20510
TUP20520
TUP20530
TUP20540
TUP20550
TUP20560
TUP20570
TUP20580
TUP20590
TUP20600
TUP20610
TUP20620
TUP20630
TUP20640
TUP20650
TUP20660
TUP20670
TUP20680
TUP20690
TUP20700
TUP20710
TUP20720
TUP20730
TUP20740
TUP20750
TUP20760
TUP20770
TUP20780
TUP20790
TUP20800
TUP20810
TUP20820
TUP20830
TUP20840
TUP20850
125
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
30 CONTINUE
IF (H .LT. ZL(NLLIM)) GO TO 45
PHYSICAL STACK HEIGHT IS ABOVE OR EQUAL TO HIGHEST DATA LEVEL.
UST = UL(NLLIM)
IDUM = 20
IF (UST .EQ. AMISG) GO TO 900
TEMPST = TL(NLLIM)
IDUM = 30
IF (TEMPST .EQ. AMISG) GO TO 900
IBOT = NLLIM - 1
ITOP = NLLIM
IF (DTHDZ(IBOT) .NE. 100.) GO TO 40
CALL TU510(IBOT,ITOP.MISG)
IF (MISG .GT. 0) GO TO 999
40 THZST = DTHDZ(IBOT)
IBOT = NLLIM
GO TO 100
45 IF (H .GT. ZL(1)) GO TO 60
PHYSICAL STACK HEIGHT IS BELOW OR EQUAL TO LOWEST DATA LEVEL.
UST = UL(1)
IDUM = 70
IF (UST .EQ. AMISG) GO TO 900
TEMPST = TL(1)
IDUM = 80
IF (TEMPST .EQ. AMISG) GO TO 900
IBOT = 1
ITOP = 2
IF (DTHDZ(IBOT) .NE. 100.) GO TO 50
CALL TU510(IBOT,ITOP.MISG)
IF (MISG .GT. 0) GO TO 999
50 THZST = DTHDZ(IBOT)
IBOT = 0
ITOP = 1
GO TO 100
PHYSICAL STACK HEIGHT IS BETWEEN LOWEST 8c HIGHEST DATA LEVELS.
60 NL = 0
70 NL = NL + 1
IF (ZTOP(NL) .LE. 0.) GO TO 70
HAVE FOUND LAYER OF STACK.
ITOP = NL
IBOT = ITOP - 1
ZLYR = ZL(ITOP) - ZL(IBOT)
FRACT = (H - ZL(IBOT))/ZLYR
IDUM = 90
IF (TL(IBOT) .EQ. AMISG) GO TO 900
IDUM = 100
IF (TL(ITOP) .EQ. AMISG) GO TO 900
TEMPST = TL(IBOT) + FRACT * (TL(ITOP) - TL(IBOT))
IDUM = 110
IF (UL(IBOT) .EQ. AMISG) GO TO 900
IDUM = 120
IF (UL(ITOP) .EQ. AMISG) GO TO 900
UST = UL(IBOT) + FRACT * (UL(ITOP) - UL(IBOT))
IF (DTHDZ(IBOT) .NE. 100.) GO TO 80
CALL TU510(IBOT,ITOP.MISG)
TUP20860
TUP20870
TUP20880
TUP20890
TUP20900
TUP20910
TUP20920
TUP20930
TUP20940
TUP20950
TUP20960
TUP20970
TUP20980
TUP20990
TUP21000
TUP21010
TUP21020
TUP21030
TUP21040
TUP21050
TUP21060
TUP21070
TUP21080
TUP21090
TUP21100
TUP21110
TUP21120
TUP21130
TUP21140
TUP21150
TUP21160
TUP21170
TUP21180
TUP21190
TUP21200
TUP21210
TUP21220
TUP21230
TUP21240
TUP21250
TUP21260
TUP21270
TUP21280
TUP21290
TUP21300
TUP21310
TUP21320
TUP21330
TUP21340
TUP21350
TUP21360
TUP21370
TUP21380
TUP21390
TUP21400
TUP21410
TUP21420
TUP21430
TUP21440
TUP21450
TUP21460
TUP21470
TUP21480
TUP21490
TUP21500
TUP21510
TUP21520
TUP21530
TUP21540
TUP21550
126
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
IF (MISG .GT. 0) GO TO 999
80 THZST = DTHDZ(IBOT)
IF STACK DOWNWASH IS TO BE CONSIDERED, COMPUTE ITS VALUE.
100 IF (IOPD .EQ. 1) GO TO 110
CALL TU515(NPT,TEMPST.UST.FDW)
IF (FDW .GT. 0.) GO TO 110
DELH = 0.
GO TO 990
DETERMINE THE INITIAL BUOYANCY FLUX, FO.
110 FO = 9.806*VS(NPT)*D(NPT)*D(NPT) * (TS(NPT)-TEMPST)/(4.*TS(NPT))
F = FO
CALCULATE UNSTABLE-NEUTRAL MOMENTUM RISE FOR LATER COMPARISON
DELHUM = 3. * D(NPT) * VS(NPT)/UST
IS THE LAYER CONTAINING THE STACK STABLE?
IF (THZST .GT. 0.001) GO TO 200
THE LAYER CONTAINING THE STACK IS UNSTABLE-NEUTRAL.
CALCULATE BUOYANCY RISE.
CALL TU520(F,UST,H,IB,DELH)
IF UNSTABLE-NEUTRAL MOMENTUM RISE (DELHUM) EQUALS OR EXCEEDS
UNSTABLE-NEUTRAL BUOYANCY RISE (DELH) THEN MOMENTUM RISE
APPLIES.
C
C
C
C
C
C
C
C
C
IF (DELH .GT.
DISTF = 0.
DELH = DELHUM
GO TO 990
DELHUM) GO TO 120
IF AT THE TOP LEVEL OR IF PLUME RISE IS LESS THAN OR EQUAL TO
THE TOP OF THE LAYER CONTAINING THE STACK THEN THE FINAL
RISE HAS BEEN FOUND.
120 IF (IBOT .EQ. NLLIM) GO TO 990
IF (DELH .LE. ZTOP(ITOP)) GO TO 990
IF (ITOP .EQ. 1) GO TO 130
UNSTABLE-NEUTRAL PLUME RISE EXTENDS INTO NEXT LEVEL. REPEAT
INITIAL PLUME RISE ESTIMATE USING AVERAGE METEOROLOGY.
T = TEMPST
U = UST
T = (T + TL(ITOP))/2.
U = (U + UL( ITOPjj/2.
THZST WILL STAY THE SAME
130
C
C
C
C
C
C
C
C
CALL TU520(F,U.H,IB, DELH)
IF (DELH .LE. ZT6p(IT0P))
ZT = ZTOP(ITOP)
GO TO 990
DETERMINE UNSTABLE-NEUTRAL RESIDUAL BUOYANCY.
BRANCH TO CONSIDER NEXT LAYER.
CALL TU530(U,H,IB,DELH,ZT,FR)
GO TO 300
LAYER CONTAINING STACK IS STABLE.
RISE (DELHSM).
CALCULATE STABLE MOMENTUM
200 ZB = 0.
TUP21560
TUP21570
TUP21580
TUP21590
TUP21600
TUP21610
TUP21620
TUP21630
TUP21640
TUP21650
TUP21660
TUP21670
TUP21680
TUP21690
TUP21700
TUP21710
TUP21720
TUP21730
TUP21740
TUP21750
TUP21760
TUP21770
TUP21780
TUP21790
TUP21800
TUP21810
TUP21820
TUP21830
TUP21840
TUP21850
TUP21860
TUP21870
TUP21880
TUP21890
TUP21900
TUP21910
TUP21920
TUP21930
TUP21940
TUP21950
TUP21960
TUP21970
TUP21980
TUP21990
TUP22000
TUP22010
TUP22020
TUP22030
TUP22040
TUP22050
TUP22060
TUP22070
TUP22080
TUP22090
TUP22100
TUP22110
TUP22120
TUP22130
TUP22140
TUP22150
TUP22160
TUP22170
TUP22180
TUP22190
TUP22200
TUP22210
TUP22220
TUP22230
TUP22240
TUP22250
127
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
DELHSM = 0.646 * (VS(NPT)*VS(NPT)*D(NPT)*D(NPT)/(TS(NPT)*UST))**
1 0.333333 * TEMPST*#0.5/THZST##0.166667
CHOOSE LOWEST OF THE MOMENTUM RISES.
IF (DELHUM .LT. DELHSM) DELHSM = DELHUM
CALCULATE STABLE RISE.
CALL TU540(FO,F,UST,TEMPST,THZST,ZB,IS,DELH)
CHECK AGAINST MOMENTUM RISE.
IF (DELH .GT. DELHSM) GO TO 210
DELH = DELHSM
DISTF = 0.
GO TO 990
IF AT THE TOP LEVEL OR IF PLUME RISE IS LESS THAN OR EQUAL TO
THE TOP OF THE LAYER CONTAINING THE STACK THEN THE FINAL
RISE HAS BEEN FOUND.
C
C
C
C
210 IF (IBOT .EQ. NLLIM) GO TO 990
DELHT = DELH * 1.5
IF (DELHT .LE. ZTOP(ITOP)) GO TO 990
IF (ITOP .EQ. 1) GO TO 220
STABLE PLUME RISE EXTENDS INTO NEXT LEVEL, REPEAT INITIAL
PLUME RISE ESTIMATE USING AVERAGE METEOROLOGY.
T = TEMPST
U = UST
T = jT + TL(ITOP))/2.
C
C
UL(ITOP))/2.
THZST WILL REMAIN THE SAME
CALL TU540(FO, F.U, T,THZST,ZB,IS,DELH)
DELHT = DELH * 1.5
IF (DELHT .LE. ZTOP(ITOP)) GO TO 990
220 ZT = ZTOP(ITOP)
DETERMINE STABLE RESIDUAL BUOYANCY.
CALL TU550(FO,F,U,T,THZST,ZB,ZT,IS,FR)
CONSIDER NEXT LAYER.
300 IBOT = IBOT + 1
CHECK TO SEE IF NEW BOTTOM IBOT = NLLIM
IF (IBOT .NE. NLLIM) GO TO 310
U = UL(IBOT)
DTHDZ(IBOT) = DTHDZ(IBOT-l)
T = TL(IBOT)
GO TO 320
310 ITOP = ITOP + 1
IDUM = 130
IF (UL(ITOP) .EQ. AMISG) GO TO 900
U = (UL(ITOP) + UL(IBOT))/2.
IDUM = 140
IF (TL(ITOP) .EQ. AMISG) GO TO 900
T = (TL(ITOP) + TLViBOT))/2.
IF (DTHDZ(IBOT) .NE. 100.) GO TO 320
CALL TU510(IBOT.ITOP.MISG)
IF (MISG .GT. 0) GO TO 999
320 THZ = DTHDZ(IBOT)
F = FR
ZB = ZTOP(IBOT)
ZT = ZTOP(ITOP)
TUP22260
TUP22270
TUP22280
TUP22290
TUP22300
TUP22310
TUP22320
TUP22330
TUP22340
TUP22350
TUP22360
TUP22370
TUP22380
TUP22390
TUP22400
TUP22410
TUP22420
TUP22430
TUP22440
TUP22450
TUP22460
TUP22470
TUP22480
TUP22490
TUP22500
TUP22510
TUP22520
TUP22530
TUP22540
TUP22550
TUP22560
TUP22570
TUP22580
TUP22590
TUP22600
TUP22610
TUP22620
TUP22630
TUP22640
TUP22650
TUP22660
TUP22670
TUP22680
TUP22690
TUP22700
TUP22710
TUP22720
TUP22730
TUP22740
TUP22750
TUP22760
TUP22770
TUP22780
TUP22790
TUP22800
TUP22810
TUP22820
TUP22830
TUP22840
TUP22850
TUP22860
TUP22870
TUP22880
TUP22890
TUP22900
TUP22910
TUP22920
TUP22930
TUP22940
TUP22950
128
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
IS THIS LAYER STABLE?
IF (THZ .GT. 0.001) GO TO 400
LAYER IS UNSTABLE-NEUTRAL.
CALL TU520(F,U.H,IB.DELH)
DELH = DELH + ZB
IF (IBOT .EQ. NLLIM) GO TO 990
IF (DELH .LE. ZT) GO TO 990
PLUME RISE EXCEEDS LAYER, FIND UNSTABLE-NEUTRAL RESIDUAL
BUOYANCY AND REPEAT FOR NEXT LAYER.
CALL TU530(U,H,IB,DELH,ZT,FR)
GO TO 300
THIS LAYER IS STABLE. CALCULATE STABLE RISE.
C
C
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
TUP22960
TUP22970
TUP22980
TUP22990
TUP23000
TUP23010
TUP23020
TUP23030
TUP23040
TUP23050
TUP23060
TUP23070
TUP23080
TUP23090
TUP23100
TUP23110
TUP23120
TUP23130
TUP23140
TUP23150
TUP23160
TUP23170
TUP23180
TUP23190
TUP23200
TUP23210
TUP23220
TUP23230
TUP23240
TUP23250
TUP23260
TUP23270
TUP23280
TUP23290
TUP23300
TUP23310
TUP23320
TUP23330
TUP23340
TUP23350
TUP23360
TUP23370
TUP23380
TUP23390
TUP23400
TUP23410
TUP23420
TUP23430
TUP23440
TUP23450
TUP23460
TUP23470
TUP23480
DESCRIPTION: TUP23490
THIS SUBROUTINE CALCULATES THE POTENTIAL TEMPERATURE GRADIENTTUP23500
BETWEEN TWO LAYERS. TUP23510
TUP23520
PARAMETER (NLMAX=20,NDMAX=40) TUP23530
COMMON /METCOM/DTHDZ(NLMAX),SAL(NLMAX),SEL(NLMAX),TL(NLMAX). TUP23540
1 UL(NLMAX),WDL(NLMAX),ZL(NLMAX),KLASS,LMX,MDATA, TUP23550
2 MDATB,METNAM(2),MYR,MJD,MHR,ND,NLLIM,DESC(18,NDMAX)TUP23560
DATA AMISG/-9999./ TUP23570
TUP23580
IDUM = 40 TUP23590
IF (ITOP .GT. NLLIM) GO TO 990 TUP23600
IDUM = 50 TUP23610
IF (TL(ITOP) .EQ. AMISG) GO TO 990 TUP23620
IDUM = 60 TUP23630
IF (TL(IBOT) .EQ. AMISG) GO TO 990 TUP23640
400 CALL TU540(FO,F,U,T,THZ,ZB,IS,DELH)
IF (IBOT .EQ. NLLIM) GO TO 990
DELHT = DELH * 1.5
IF (DELHT .LE. ZT) GO TO 990
PLUME RISE EXCEEDS LAYER. FIND STABLE RESIDUAL BUOYANCY
AND REPEAT FOR NEXT LAYER.
CALL TU550(FO,F,U,T,THZ,ZB,ZT,IS,FR)
GO TO 300
MISSING PROCESSING.
900 MISG = IDUM
GO TO 999
RETURN SEQUENCE.
990 DELH = DELH * FDW
HE = H + DELH
999 RETURN
END
SUBROUTINE TU510(IBOT.ITOP,MISG)
510-CALCULATE-POTENTIAL-TEMPERATURE-GRADIENT
ARGUMENT LIST:
INPUT: IBOT - NUMBER OF BOTTOM LEVEL OF LAYER
ITOP - NUMBER OF TOP LEVEL OF LAYER
OUTPUT: MISG - MISSING INDICATOR (1 = MISSING)
CALLING ROUTINES:
TU435
129
-------
DTHDZ(IBOT) = (TL(ITOP) - TL(IBOT))/(ZL(ITOP) - ZL(IBOT))
GO TO 999
990 MISG = IDUM
999 RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
SUBROUTINE TU515(NPT,TEMPST.UST,FDW)
515-CALCULATE-STACK-TIP-DOWNWASH
ARGUMENT
INPUT:
LIST:
NPT
TEMPST
UST
OUTPUT: FDW
SOURCE NUMBER
AMBIENT AIR TEMPERATURE AT STACK TOP
WIND SPEED AT STACK TOP (M/SEC)
STACK-TIP DOWNWASH CORRECTION FACTOR
(K)
CALLING
TU435
ROUTINES:
C
C
C
DESCRIPTION:
THE STACK-TIP DOWNWASH CORRECTION FACTOR IS CALCULATED
ACCORDING TO METHODS SUGGESTED BY BJORKLUND AND BOWERS
PARAMETER (NPTMAX=25)
COtWON /SORCOM/D(NPTMAX),PNAME(3,NPTMAX).PSH(NPTMAX),QJ(NPTMAX)
L QELEV(NPTMAX),QEAST(NPTMAX),QNORD(NPTMAX),
I TS(NPTMAX).VS(NPTMAX),IQYR,IQJD,IQHR,NPTLIM,
} IMPS(NPTMAX)
CALCULATE FROUDE NUMBER.
FR = VS(NPT) * VS(NPT)/9.806 * D(NPT) * (TS(NPT)-TEMPST)/TEMPST
IF (FR .LT. 3.) GO TO 100
IF (UST .LE. VS(NPT)/1.5) GO TO 100
IF (UST .GE. VS(NPT)) GO TO 200
CALCULATE STACK-TIP DOWNWASH CORRECTION FACTOR.
FDW =
GO TO
100 FDW =
GO TO
^3*VS(NPT)
- 3*UST)/VS(NPT)
1.0
999
200 FDW = 0.0
999 RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
c
c
c
SUBROUTINE TU520(F,U,H.IB,DELH)
520-CALCULATE-UNSTABLE-NEUTRAL-BUOYANCY-RISE
PARAMETER
INPUT:
OUTPUT:
LIST:
F
U
H
IB
DELH
BUOYANCY FLUX (M**4/S**3)
WIND SPEED (M/SEC)
PHYSICAL STACK HEIGHT (METERS)
EQUATION FLAG
PLUME RISE (METERS)
CALLING ROUTINES:
TU435
DESCRIPTION:
THIS SUBROUTINE COMPUTES UNSTABLE-NEUTRAL BUOYANCY RISE.
IB = 2
DELH =
30. * (F/U) ** 0.6
0.0098TUP23650
TUP23660
TUP23670
TUP23680
TUP23690
TUP23700
TUP23710
TUP23720
TUP23730
TUP23740
TUP23750
TUP23760
TUP23770
TUP23780
TUP23790
TUP23800
TUP23810
TUP23820
TUP23830
TUP23840
(1982)TUP23850
TUP23860
TUP23870
TUP23880
TUP23890
TUP23900
TUP23910
TUP23920
TUP23930
TUP23940
TUP23950
TUP23960
TUP23970
TUP23980
TUP23990
TUP24000
TUP24010
TUP24020
TUP24030
TUP24040
TUP24050
TUP24060
TUP24070
TUP24080
TUP24090
TUP24100
TUP24110
TUP24120
TUP24130
TUP24140
TUP24150
TUP24160
TUP24170
TUP24180
TUP24190
TUP24200
TUP24210
TUP24220
TUP24230
TUP24240
TUP24250
TUP24260
TUP24270
TUP24280
TUP24290
TUP24300
TUP24310
TUP24320
130
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
DUM = F/U ## 3.
DEL5 = 24. * DUM ## 0.6 * (H + 200. * DUM) **0.4
IF (DEL5 .GE. DELH) GO TO 999
IB = 5
DELH = DEL5
999 RETURN
END
SUBROUTINE TU530(U,H,IB,DELH,ZT,FR)
530-UNSTABLE-NEUTRAL-RESIDUAL-BUOYANCY
ARGUMENT LIST:
INPUT: U - WIND SPEED (M/SEC)
H - PHYSICAL STACK HEIGHT (METERS)
IB - EQUATION FLAG
DELH - PLUME RISE
ZT - HEIGHT ABOVE STACK OF UPPER LAYER (METERS)
OUTPUT: FR - RESIDUAL BUOYANCY FLUX (M**4/S**3)
CALLING ROUTINES:
TU435
DESCRIPTION:
THIS SUBROUTINE COMPUTES UNSTABLE-NEUTRAL RESIDUAL BUOYANCY.
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
IF (IB .EQ. 5) GO TO 100
USE METHOD TWO FOR RESIDUAL BUOYANCY.
FR = U * ((DELH-ZT)/30.) ** 1.66667
GO TO 999
USE METHOD FIVE FOR RESIDUAL BUOYANCY.
100 M = DELH - ZT
FR = 0.0055 * M * U**3/(l. + H/M)**0.666667
999 RETURN
END
SUBROUTINE TU540(FO,F,U,T,THZ,ZB,IS,DELH)
540-CALCULATE-STABLE-BUOYANCY-RISE
ARGUMENT LIST:
INPUT:
OUTPUT:
FO
F
U
T
THZ
ZB
IS
- INITIAL BUOYANCY FLUX (M**4/S**3)
- PREVIOUS RESIDUAL BUOYANCY
- WIND SPEED (M/SEC)
- AMBIENT AIR TEMPERATURE (KELVIN)
- POTENTIAL TEMPERATURE GRADIENT
- HEIGHT ABV STACK OF BOTTOM OF LAYER (METERS)
- EQUATION FLAG
DELH - PLUME RISE (METERS)
CALLING ROUTINES:
TU435
DESCRIPTION:
THIS SUBROUTINE CALCULATES STABLE BUOYANCY RISE.
CALCULATE TOP OF PLUME FOR WINDY AND CALM CONDITIONS.
IS = 1
DELHT = (1.8 * F * T/(THZ * U) + ZB ** 3.) ** 0.333333
IF (U .GT. 1.) GO TO 999
USE 1 M/SEC FOR CRITERION FOR CALCULATION OF CALM RISE.
DELHTC = (4.1 * F * T/(FO ** 0.333333 * THZ) + ZB ** 2.66667)
1 ** 0.375
IF (DELHT .LT. DELHTC) GO TO 999
SUBSTITUTE CALM RISE IF SMALLER.
TUP24330
TUP24340
TUP24350
TUP24360
TUP24370
TUP24380
TUP24390
TUP24400
TUP24410
TUP24420
TUP24430
TUP24440
TUP24450
TUP24460
TUP24470
TUP24480
TUP24490
TUP24500
TUP24510
TUP24520
TUP24530
TUP24540
TUP24550
TUP24560
TUP24570
TUP24580
TUP24590
TUP24600
TUP24610
TUP24620
TUP24630
TUP24640
TUP24650
TUP24660
TUP24670
TUP24680
TUP24690
TUP24700
TUP24710
TUP24720
TUP24730
TUP24740
TUP24750
TUP24760
TUP24770
TUP24780
TUP24790
TUP24800
TUP24810
TUP24820
TUP24830
TUP24840
TUP24850
TUP24860
TUP24870
TUP24880
TUP24890
TUP24900
TUP24910
TUP24920
TUP24930
TUP24940
TUP24950
TUP24960
TUP24970
TUP24980
TUP24990
TUP25000
131
-------
c
c
c
IS = 2
DELHT =
DELHTC
CALCULATE PLUME CENTERLINE.
999 DELH = 0.666667 * DELHT
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
c
c
c
c
c
c
c
SUBROUTINE TU550(FO,F,U,T,THZ,ZB,ZT,IS,FR)
550-CALCULATE-STABLE-RESIDUAL-BUOYANCY
ARGUMENT
INPUT:
LIST:
FO
F
U
T
THZ
ZB
ZT
IS
OUTPUT: FR
INITIAL BUOYANCY FLUX (M**4/S**3)
PREVIOUS RESIDUAL BUOYANCY
WIND SPEED (M/SEC)
AMBIENT AIR TEMPERATURE (KELVIN)
POTENTIAL TEMPERATURE GRADIENT
TUP25010
TUP25020
TUP25030
TUP25040
TUP25050
TUP25060
TUP25070
TUP25080
TUP25090
TUP25100
TUP25110
TUP25120
TUP25130
TUP25140
TUP25150
TUP25160
TUP25170
- HEIGHT ABOVE STACK OF BOTTOM OF LAYER (METERS)TUP25180
HEIGHT ABOVE STACK OF TOP OF LAYER (METERS)
EQUATION FLAG
RESIDUAL BUOYANCY (M**4/S**3)
CALLING ROUTINES:
TU435
DESCRIPTION:
THIS SUBROUTINE COMPUTES
IF (IS .EQ. 2) GO TO 100
STABLE RESIDUAL BUOYANCY.
CALCULATE USING WINDY FORM OF RESIDUAL BUOYANCY.
C
C
C
FR
GO
= F - 0.56
TO 999
* THZ * U/T * (ZT ** 3. - ZB #* 3.)
CALCULATE USING CALM FORM OF RESIDUAL BUOYANCY.
C
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
100 FR = F - 0.24 * FO ** 0.333333 * THZ/T *
1 CZT ** 2.66667 - ZB ** 2.66667)
999 RETURN
END
SUBROUTINE TU440(H.HL,DELH,HEPR.PORT,DELHPR,ZMN)
440-calculate-pLume-penetration
ARGUMENT LIST:
INPUT: H
HL
DELH
OUTPUT: HEPR
PORT
DELHPR
ZMN
CALLING ROUTINES:
TU330
PHYSICAL STACK HEIGHT (METERS)
MIXING HEIGHT (METERS)
PLUME RISE ^METERS)
EFFECTIVE HEIGHT AFTER PLUME PENETRATION
(METERS)
PORTION OF PLUME BENEATH THE MIXING HEIGHT TUP25510
PLUME RISE AFTER PLUME PENETRATION (METERS)TUP25520
TUP25190
TUP25200
TUP25210
TUP25220
TUP25230
TUP25240
TUP25250
TUP25260
TUP25270
TUP25280
TUP25290
TUP25300
TUP25310
TUP25320
TUP25330
TUP25340
TUP25350
TUP25360
TUP25370
TUP25380
TUP25390
TUP25400
TUP25410
TUP25420
TUP25430
TUP25440
TUP25450
TUP25460
TUP25470
TUP25480
TUP25490
TUP25500
MINIMUM DISTANCE BETWEEN THE EFFECTIVE
PLUME HEIGHT AND A BOUNDING SURFACE
DESCRIPTION:
THIS SUBROUTINE CALCULATES THE PORTION OF THE PLUME BENEATH
THE MIXING HEIGHT USING THE "TOP HAT" DISTRIBUTION
RECOMMENDED BY BRIGGS (1975).
PARAMETER (NLMAX=20,NDMAX=40)
COMMON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,CONTER(4),IYRS,IDYS,
1 IHRS,IHLIM.IOPT,IOPB,IOPD.IOPG,IOPM,IOPQ,IOPR,
2 IOPWPC.NPOL,LINE1(20),LINfi2(20),LINE3(20).NPRNT
TUP25530
TUP25540
TUP25550
TUP25560
TUP25570
TUP25580
TUP25590
TUP25600
TUP25610
TUP25620
TUP25630
TUP25640
TUP25650
TUP25660
TUP25670
132
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
COMMON /METCOM/DTHDZ(NLMAX),SAL(NLMAX),SEL(NLMAX),TL(NIMAX),
1 UL(NLMAX),WDL(NLMAX),ZL(NLMAX),KLASS,LMX.MDATA,
2 MDATB,METNAM(2),MYR,MJD,MHR,ND,NLLIM,DESC(18,NDMAX)
INITIALIZE.
C
C
C
C
C
C
HE = H + DELH
ZMN = HE
HDELH = 0.5 * DELH
PB = HE - HDELH
PT = HE + HDELH
TEST FOR DAYTIME CONDITIONS.
IF (KLASS .LT. 3) GO TO 50
NIGHTTIME CONDITIONS.
IF (IOPM .EQ. 0) GO TO 300
IF (PB .LT. HL) GO TO 300
GO TO 200
DAYTIME CONDITIONS.
50 IF (PT .LT.
IF (PB .GT.
HL)
HL)
GO TO 300
GO TO 200
PART OF PLUME AVAILABLE FOR MIXING. I.E.. PLUME BOTTOM LESS
THAN THE MIXING HEIGHT AND PLUME TOP GREATER THAN THE
MIXING HEIGHT.
HEPR = (HL + PB)/2.
PORT = (HL - PB)/DELH
DELHPR = HEPR - H
ZMN = HEPR
IF (HL - HEPR .LT. ZMN) ZMN = HL - HEPR
GO TO 999
NONE OF PLUME AVAILABLE FOR MIXING.
200 HEPR = HE
PORT = 0.
DELHPR = DELH
GO TO 999
C
C
C
C
C
C
C
c
c
c
c
c
c
c
ALL OF PLUME AVAILABLE FOR MIXING.
300 HEPR = HE
PORT = 1.
DELHPR = DELH
IF ((KLASS .LT. 3) .AND. (HL - HEPR .LT. ZMN)) ZMN = HL - HEPR
999 RETURN
END
SUBROUTINE TU445(HEPR,UPL.WDPL,SAPL.SEPL,MISG)
445-CALCULATE-EMISSIONS-METEOROLOGY
ARGUMENT LIST:
INPUT: HEPR - EFFECTIVE PLUME HEIGHT (METERS)
OUTPUT: UPL - WIND SPEED AT PLUME HEIGHT (M/SEC)
WDPL - WIND DIRECTION AT PLUME HEIGHT (DEGREES)
SAPL - SIGMA-AZIMUTH AT PLUME HEIGHT (RADIANS)
SEPL - SIGMA-ELEVATION AT PLUME HEIGHT (RADIANS)
MISG - MISSING CODE (IF MISG > 0, THEN MISSING)
CALLING ROUTINES:
TU330
DESCRIPTION:
TUP25680
TUP25690
TUP25700
TUP25710
TUP25720
TUP25730
TUP25740
TUP25750
TUP25760
TUP25770
TUP25780
TUP25790
TUP25800
TUP25810
TUP25820
TUP25830
TUP25840
TUP25850
TUP25860
TUP25870
TUP25880
TUP25890
TUP25900
TUP25910
TUP25920
TUP25930
TUP25940
TUP25950
TUP25960
TUP25970
TUP25980
TUP25990
TUP26000
TUP26010
TUP26020
TUP26030
TUP26040
TUP26050
TUP26060
TUP26070
TUP26080
TUP26090
TUP26100
TUP26110
TUP26120
TUP26130
TUP26140
TUP26150
TUP26160
TUP26170
TUP26180
TUP26190
TUP26200
TUP26210
TUP26220
TUP26230
TUP26240
TUP26250
TUP26260
TUP26270
TUP26280
TUP26290
TUP26300
TUP26310
TUP26320
TUP26330
TUP26340
TUP26350
TUP26360
133
-------
c
c
c
c
THIS MODULE CALCULATES WIND DIRECTION AND SPEED. SIGMA-A,
AND SIGMA-E AT PLUME LEVEL. IT IS EXECUTED EACH HOUR FOR
EACH SOURCE.
PARAMETER
COMMON /ME
1
2
(NLMAX=20.NDMAX=40)
TCOM/DTHDZ(NLMAX),SAL(NLMAX),SEL(NLMAX),TL(NLMAX),
UL(NLMAX).WDL(NLMAX),ZL(NLMAX).KLASS,LMX.MDATA,
TUP26370
TUP26380
TUP26390
TUP26400
TUP26410
TUP26420
TUP26430
ULi V. l»jji 1/kA / • TT1J 1j V 1* 1-fl in A J j La ±J \ i* UL 1/1A J I ULAwu J 11 1A»1 U/AiA) WTU \J
MDATB,METNAM (2),MYR,MJD,MHR,ND,NLLIM,DESC(18,NDMAX)TUP26440
C
C
C
C
C
C
DATA AMISG/-9999./
IF (HEPR .LE. ZL(1)) GO TO 200
IF (HEPR .GE. ZL(NLLIM)) GO TO 300
FIND LEVEL OF EFFECTIVE PLUME HEIGHT.
DO 50 NL = 2,NLLIM
IF (_HEPR .LT. ZL(NL)) GO TO 100
50 CONTINUE
C
C
C
200
C
C
c
EFFECTIVE PLUME HEIGHT IS BETWEEN FIRST AND TOP LAYER.
100
IBOT = NL -
ITOP = NL
ZLYR = ZL(ITOP)
- ZL(IBOT)
FRACT = (HEPR - ZL(IBOT))/ZLYR
IDUM = 150
IF (UL(IBOT) .EQ. AMISG) GO TO 900
IDUM = 160
IF (UL(ITOP) .EQ. AMISG) GO TO 900
UPL = UL(IBOT) + FRACT * (UL(ITOP) -
UL(IBOT))
IDUM = 170
IF (WDL(IBOT)
IDUM = 180
IF (WDL(ITOP)
.EQ. AMISG) GO TO 900
.EQ. AMISG) GO T6 900
DIFF = WDL(ITOP) - WDL(IBOT)
IF (DIFF .GT. 180.) DIFF = DIFF - 360.
IF (DIFF .LT. -180.) DIFF = DIFF + 360.
WDPL = WDL(IBOT) + FRACT * DIFF
IF (WDPL .GT. 360.) WDPL = WDPL - 360.
IF (WDPL .LE. 0.) WDPL = WDPL + 360.
AMISG) GO TO 900
IDUM = 190
IF (SAL(IBOT) .EQ.
IDUM = 200
IF (SAL(ITOP) .EQ. AMISG) GO TO 900
SAPL = SAL(IBOT) + FRACT * (SAL(ITOP) - SAL(IBOT))
IDUM = 210
IF (SEL(IBOT) .EQ. AMISG) GO TO 900
IDUM = 220
IF (SEL(ITOP) .EQ.
SEPL = SEL(IBOT) +
GO TO 999
AMISG) GO TO 900
FRACT * (SEL(ITOP)
- SEL(IBOT))
300
EFFECTIVE PLUME HEIGHT IS AT OR BELOW FIRST LAYER.
IDUM = 120
UPL = UL(1)
WDPL = WDL(l)
SAPL = SAL(l)
SEPL = SEL(l)
GO TO 400
EFFECTIVE PLUME HEIGHT IS AT OR ABOVE THE TOP LAYER.
IDUM = 130
UPL = UL(NLLIM)
WDPL = WDL(NLLIM)
TUP26450
TUP26460
TUP26470
TUP26480
TUP26490
TUP26500
TUP26510
TUP26520
TUP26530
TUP26540
TUP26550
TUP26560
TUP26570
TUP26580
TUP26590
TUP26600
TUP26610
TUP26620
TUP26630
TUP26640
TUP26650
TUP26660
TUP26670
TUP26680
TUP26690
TUP26700
TUP26710
TUP26720
TUP26730
TUP26740
TUP26750
TUP26760
TUP26770
TUP26780
TUP26790
TUP26800
TUP26810
TUP26820
TUP26830
TUP26840
TUP26850
TUP26860
TUP26870
TUP26880
TUP26890
TUP26900
TUP26910
TUP26920
TUP26930
TUP26940
TUP26950
TUP26960
TUP26970
TUP26980
TUP26990
TUP27000
TUP27010
TUP27020
TUP27030
TUP27040
TUP27050
TUP27060
134
-------
SAPL = SAL(NLLIM) TUP27070
SEPL = SEL(NLLIM) TUP27080
C TUP27090
C MAKE SURE METEOROLOGICAL DATA IS COMPLETE. TUP27100
C TUP27110
400 IF ((UPL .EQ. AMISG) .OR. (WDPL .EQ. AMISG) .OR. TUP27120
1 (SAPL .EQ. AMISG) .OR. (SEPL .EQ. AMISG)) GO TO 900 TUP27130
GO TO 999 TUP27140
C TUP27150
C SET MISSING FLAG IF METEOROLOGICAL DATA ARE INCOMPLETE. TUP27160
C TUP27170
900 MISG = IDUM TUP27180
C TUP27190
999 RETURN TUP27200
END TUP27210
C
SUBROUTINE TU450(X,UPL,SAPL,SEPL,DELH,SY,SZ) TUP27220
C 450-CALCULATE-SIGMAS TUP27230
C TUP27240
C ARGUMENT LIST: TUP27250
C INPUT: X - RECEPTOR TO SOURCE DISTANCE (KM) TUP27260
C UPL WIND SPEED AT PLUME LEVEL (M/SEC) TUP27270
C SAPL - SIGMA-AZIMUTH AT PLUME HEIGHT (RADIANS) TUP27280
C SEPL - SIGMA-ELEVATION AT PLUME HEIGHT (RADIANS) TUP27290
C DELH - PLUME RISE (METERS) TUP27300
C OUTPUT: SY - LATERAL DISPERSION PARAMETER (METERS) TUP27310
C SZ - VERTICAL DISPERSION PARAMETER (METERS) TUP27320
C TUP27330
C CALLING ROUTINES: TUP27340
C TU330 TUP27350
C TUP27360
C DESCRIPTION: TUP27370
C THIS SUBROUTINE CALCULATES SIGMA-Y AND SIGMA-Z. TUP27380
C TUP27390
C MDIS IS A SELECTOR FOR DISPERSION SCHEME: TUP27400
C 1 = SIMPLIFIED, 2 = MODIFIED, TUP27410
C TUP27420
C AT THE PRESENT TIME ONLY THE MODIFIED DISPERSION SCHEME TUP27430
C (MDIS = 2) IS CONSIDERED. TUP27440
C TUP27450
PARAMETER (NLMAX=20,NDMAX=40) TUP27460
COMMON /RUNCOM/CELM,CONTWO,CTER,HAFL,TLOS,C0NTER(4),IYRS,IDYS, TUP27470
1 IHRS,IHLIM,IOPT,IOPB,IOPD,IOPG,IOPM,IOPQ,IOPR, TUP27480
2 IOPWPC.NPOL,LINE1(20).LINE2(20),LINE3(20),NPRNT TUP27490
CONWON /METCOM/DTHDZ(NLMAX;,SAL(NLMAX),SEL(NLMAX),TL(NLMAX), TUP27500
1 UL(NLMAX),WDL(NLMAX),ZL(NLMAX),KLASS,LMX.MDATA, TUP27510
2 MDATB,METNAM(2),MYR,MJD,MHR,ND,NLLIM,DESC(18,NDMAX)TUP27520
C TTIP97^Tn
DATA MDIS/2/ TUP27540
C CALCULATE SIGMA-Y. TUP27550
C TUP27560
TX = 1000. * X TUP27570
TT = TX/UPL TUP27580
FY = 1./(1. + 0.9 ~ SQRT (TT/1000.)) TUP27590
SY = TX * SAPL * FY TUP27600
C FOR APPLICATION TO DISTANCES BEYOND 10 KM WHERE VERTICAL WIND TUP27610
C SHEAR IS LIKELY TO CAUSE ENHANCED HORIZONTAL DISPERSION, A TUP27620
C GROWTH OF SIGMA-Y SUCH AS SY = SAPL * TX ** 0.9 MAY BE MORE TUP27630
C USEFUL (JOHN S. IRWIN, 11 FEB 82). TUP27640
C TUP27650
C CALCULATE SIGMA-Z. FIRST TEST FOR DAY- OR NIGHTTIME TUP27660
C CONDITIONS. TUP27670
C TUP27680
IF (KLASS .LT. 3) GO TO 200 TUP27690
C NIGHTTIME CONDITIONS. TUP27700
C SIMPLIFIED AND MODIFIED STABLE SIGMA-Z. TUP27710
FZ = 1-/(1. + 0.9 * SQRT (TT/50.)) TUP27720
SZ = TX * SEPL * FZ TUP27730
C NEXT STATEMENT PROBABLY UNNECESSARY. TUP27740
IF (SZ .GT. 5000.) SZ = 5000. TUP27750
135
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
GO TO 900
DAYTIME CONDITIONS.
200 IF (MDIS .EQ. 2) GO TO 250
SIMPLIFIED UNSTABLE SIGMA-Z.
SZ = TX * SEPL
IF (SZ .GT. 5000.) SZ = 5000.
GO TO 900
MODIFIED UNSTABLE SIGMA-Z.
250 FZ = l./(l. + 0.9 * SQRT (TT/500.))
SZ = TX * SEPL * FZ
IF (SZ .GT. 5000.) SZ = 5000.
CALCULATE BID (IF IOPB =1).
900 IF (IOPB.EQ.O) RETURN
DUM = DELH/3.5
DUM = DUM*DUM
SY = SQRT(SY*SY + DUM)
SZ = SQRT(SZ*SZ + DUM)
RETURN
END
FUNCTION ZF(DA)
PARAMETER LIST'
DA = SIGMA Z/ZMN, WHERE ZMN IS THE MINIMUM DISTANCE BETWEEN
THE EFFECTIVE PLUME HEIGHT AND A BOUNDING SURFACE
CALLING ROUTINES:
TU330
DESCRIPTION:
THIS FUNCTION CALCULATES A NORMALIZED HEIGHT OF PEAK
CONCENTRATION.
IF (DA .LT. 0.93) GO TO 30
DA > 0.93
IF (DA .LT. 1.0) GO TO 10
DA > 1.0
ZF = 0.0
GO TO 999
10 IF (DA .LT. 0.97) GO TO 20
0.97 < DA < 1.0
ZF = 13.3333 - 13.3333*DA
GO TO 999
0.93 < DA < 0.97
20 ZF = 5.25 - 5.0*DA
GO TO 999
DA < 0.93
30 IF(DA.GE.0.71) GO TO 40
DA < 0.71
ZF = 1.
GO TO 999
0.71
-------
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
c
c
c
c
c
c
c
CALLING ROUTINES:
TU330
DESCRIPTION:
TU460 DETERMINES
RELATIVE CONCENTRATIONS, CHI/Q, FROM POINT
SOURCES. THE FOLLOWING EQUATION IS SOLVED —
H - EFFECTIVE PLUME HEIGHT (METERS) TUP28440
SY - LATERAL DISPERSION PARAMETER (METERS) TUP28450
SZ - VERTICAL DISPERSION PARAMETER (METERS) TUP28460
HL - MIXING DEPTH (METERS) TUP28470
UST - WIND SPEED AT STACK TOP (M/SEC) TUP28480
OUTPUT: RC - RELATIVE CONCENTRATION (SEC/M**3) TUP28490
TUP28500
TUP28510
TUP28520
TUP28530
TUP28540
TUP28550
TUP28560
TUP28570
RC = (1/(2*PI*UST*SIGMA Y*SIGMA Z) )*(EXP(-0.5*(Y/SIGMA Y)**2)) TUP28580
(EXP(-0.5*( (Z-H)/SIGMA Z)**2) + EXP(-0.5*( (Z+H)/SIGMA Z)**2)TUP28590
TUP28600
PLUS THE SUM OF THE FOLLOWING 4 TERMS K TIMES (N=1,K) — TUP28610
FOR NEUTRAL OR UNSTABLE CASES: TUP28620
TERM 1- EXP(-0.5*((Z-H-2NL)/SIGMA Z)**2) TUP28630
TERM 2- EXP(-0.5*((Z+H-2NL)/SIGMA Z)«2) TUP28640
TERM 3- EXP(-0.5*((Z-H+2NL)/SIGMA Z)**2) TUP28650
TERM 4- EXP(-0.5*((Z+H+2NL)/SIGMA Z)**2) TUP28660
TUP28670
NOTE THAT MIXING HEIGHT ~ THE TOP OF THE NEUTRAL OR UNSTABLETUP28680
LAYER — HAS A VALUE ONLY FOR STABILITIES 1-3. THAT IS, TUP28690
MIXING HEIGHT, THE HEIGHT OF THE NEUTRAL OR UNSTABLE LAYER, TUP28700
DOES NOT EXIST FOR STABLE LAYERS AT THE GROUND SURFACE — TUP28710
STABILITY 4. THE ABOVE EQUATION IS SIMILAR TO EQ. 5.8 (P 36)TUP28720
IN WORKBOOK OF ATMOSPHERIC DISPERSION ESTIMATES WITH
ADDITION OF THE EXPONENTIAL INVOLVING Y.
THE
HAVE CHECKED
HAVE CHECKED
HAVE CHECKED
TO SEE
TO SEE
TO SEE
IF PLUME ABOVE MIXING HEIGHT.
IF RECEPTOR IS ABOVE MIXING HEIGHT.
IF X IS LESS THAN 1 METER.
PARAMETER (NLMAX=20,NDMAX=40)
COMMON /METCOM/DTHDZ(NLMAX),SAL(NLMAX),SEL(NLMAX),TL(NLMAX),
1 UL(NLMAX),WDL(NLMAX),ZL(NLMAX),KLASS,
10
TUP28730
TUP28740
TUP28750
TUP28760
TUP28770
TUP28780
TUP28790
TUP28800
TUP28810
LMX.MDATA, TUP28820
MDATB,METNAM(2),MYR,MJD,MHR,ND,NLLIM,DESC(18,NDMAX)TUP28830
TUP28840
TUP28850
TUP28860
TUP28870
DISTANCE IN METERS. TUP28880
TUP28890
TUP28900
TUP28910
TUP28920
TUP28930
TUP28940
TUP28950
0, OR EQ 3.1 FOR NON-ZERO Z. TUP28960
(EQUATION NUMBERS REFER TO WORKBOOK OF ATMOSPHERIC DISPERSIONTUP28970
CI = 1.
IF (Y .EQ. 0.0) GO TO 10
YD = 1000. * Y
YD IS CROSSWIND
DUM = YD/SY
TEMP = 0.5 * DUM * DUM
IF (TEMP .GE. 50.) GO TO 50
CI = EXP(TEMP)
IF (KLASS .LT. 3) GO TO 300
C2 = 2. * SZ * SZ
IF NIGHTTIME CONDITION,
USE EQUATION 3.2 IF Z =
IF
50 RC
GO
ESTIMATES.)
(Z) 50,100,200
AN ERRONEOUS NEGATIVE Z
= 0.
TO 999
WILL RESULT IN ZERO CONCENTRATIONS
STABLE OR UNLIMITED MIXING, Z IS ZERO.
C
C
100 C3 =H * H/C2
IF (C3 .GE. 50.) GO TO 50
A2 = l./EXP(C3)
WADE EQUATION 3.2.
RC=A2/(3.14159*UST#SY*SZ*C1)
GO TO 999
STABLE OR UNLIMITED MIXING, Z IS NON-ZERO.
TUP28980
TUP28990
TUP29000
TUP29010
TUP29020
TUP29030
TUP29040
TUP29050
TUP29060
TUP29070
TUP29080
TUP29090
TUP29100
TUP29110
TUP29120
TUP29130
137
-------
200
210
220
C
C
C
C
C
C
C
C
300
C
C
C
310
C
C
C
C
C
C
c
c
A2 = 0.
A3 = 0.
CA = Z - H
CB = Z + H
C3 = CA * CA/C2
C4 = CB * CB/C2
IF (C3 .GE. 50.) GO TO 210
A2 = l./EXP(C3)
IF (C4 .GE. 50.) GO TO 220
A3 = l./EXP(C4)
WADE EQUATION 3.1.
RC = (A2 + A3)/(6.28318 * UST
GO TO 999
* SY * SZ * CI)
UNSTABLE, ASSURED OF UNIFORM MIXING.
IF SIGMA-Z IS GREATER THAN 1.6 TIMES THE MIXING HEIGHT,
THE DISTRIBUTION BELOW THE MIXING HEIGHT IS UNIFORM WITH
HEIGHT REGARDLESS OF SOURCE HEIGHT OR RECEPTOR HEIGHT BECAUSETUP29330
OF REPEATED EDDY REFLECTIONS FROM THE GROUND AND THE MIXING TUP29340
TUP29140
TUP29150
TUP29160
TUP29170
TUP29180
TUP29190
TUP29200
TUP29210
TUP29220
TUP29230
TUP29240
TUP29250
TUP29260
TUP29270
TUP29280
TUP29290
TUP29300
TUP29310
TUP29320
,6J GO TO 310
HEIGHT.
IF (SZ/HL .LE. 1.
WADE EQUATION 3.5.
RC = 1-/(2.5066 * UST * SY * HL * CI)
GO TO 999
INITIAL VALUE OF AN SET EQUAL TO ZERO.
AN - THE NUMBER OF TIMES THE SUMMATION TERM IS EVALUATED
AND ADDED IN.
AN = 0.
IF (Z) 50,500,400
UNSTABLE, CALCULATE MULTIPLE EDDY REFLECTIONS, Z IS NON-ZERO.
TUP29350
TUP29360
TUP29370
TUP29380
TUP29390
TUP29400
TUP29410
TUP29420
TUP29430
TUP29440
TUP29450
TUP29460
TUP29470
TUP29480
TUP29490
400
A1
C2
A2
A3
CA
CB
C3
C4
IF
SEVERAL INTERMEDIATE VARIABLES ARE USED TO AVOID REPEATING
CALCULATIONS. CHECKS ARE MADE TO BE SURE THAT THE ARGUMENT
OF THE EXPONENTIAL FUNCTION IS NEVER GREATER THAN 50 (OR LESSTUP29500
THAN -50). CALCULATE MULTIPLE EDDY REFLECTIONS FOR RECEPTOR TUP29510
HEIGHT Z. TUP29520
= l./(6.28318 * UST * SY * SZ * CI) TUP29530
-2. * SZ * SZ TUP29540
410
420
430
0.
0.
= Z - H
= Z + H
= CA * CA/C2
= CB * CB/C2
(C3 .GE. 50.) GO TO 410
A2 = l./EXP(C3)
IF (C4 .GE. 50.) GO TO 420
A3 = l./EXP(C4)
SUM = 0.
THL = 2. ~ HL
TUP29550
TUP29560
TUP29570
TUP29580
TUP29590
TUP29600
TUP29610
TUP29620
TUP29630
TUP29640
TUP29650
TUP29660
440
AN
= AN + 1.
TUP29670
A4
= 0.
TUP29680
A5
= 0.
TUP29690
A6
= 0.
TUP29700
A7
= 0.
TUP29710
C5
= AN * THL
TUP29720
CC
= CA - C5
TUP29730
CD
= CB - C5
TUP29740
CE
= CA + C5
TUP29750
CF
= CB + C5
TUP29760
C6
= CC * CC/C2
TUP29770
C7
= CD * CD/C2
TUP29780
C8
= CE * CE/C2
TUP29790
C9
= CF * CF/C2
TUP29800
IF
(C6 .GE. 50.) GO TO 440
TUP29810
A4
= l./EXP(C6)
TUP29820
IF
(C7 .GE. 50.) GO TO 450
TUP29830
138
-------
450
460
470
C
C
C
C
A5 = l./EXP(C7)
IF (C8 .GE. 50.)
A6 = l./EXP(C8)
IF (C9 .GE. 50.)
A7 = l./EXP(C9)
T = A4 + A5 + A6
SUM = SUM + T
IF (T .GE. 0.01)
RC = A1 * (A2 +
GO TO 999
500
A1
A2
C2
C3
IF
A2
510 SUM
THL
TUP29840
GO TO 460 TUP29850
TUP29860
GO TO 470 TUP29870
TUP29880
+ A7 TUP29890
TUP29900
GO TO 430 TUP29910
A3 + SUM) TUP29920
TUP29930
TUP29940
UNSTABLE. CALCULATE MULTIPLE EDDY REFLECTIONS, Z IS ZERO. TUP29950
CALCULATE MULTIPLE EDDY REFLECTIONS FOR GROUND LEVEL RECEPTORTUP29960
TUP29970
= l./(6.28318 ~ UST * SY * SZ * CI)
= $! * SZ * SZ
= H * H/C2
"" GO TO 510
520
530
540
(C3 .GE. 50.)
= 2./EXP(C3)
= 0.
=2. ~ HL
AN = AN + 1.
A4 = 0.
A6 = 0.
C5 = AN * THL
CC = H - C5
CE = H + C5
C6 = CC * CC/C2
C8 = CE * CE/C2
IF (C6 .GE. 50.)
A4 = 2./EXP(C6)
IF (C8 .GE. 50.)
A6 = 2./EXP(C8)
T = A4 + A6
SUM = SUM + T
IF (T .GE. 0.01)
RC = Al * (A2 +
GO TO 530
GO TO 540
GO TO 520
SUM)
999 RETURN
END
C
C
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
SUBROUTINE TU335(IYR,IDY,LH,HMAX,IYRMAX,IDYMAX,LHMAX,MAXREC)
335-UPDATE-MAXIMUM-CONCENTRATION
ARGUMENT
INPUT:
I/O:
OUTF
TPUT;
CALLING
TU220
LIST:
IYR
IDY
LH
HMAX
IYRMAX
IDYMAX
LHMAX
MAXREC
ROUTINES:
YEAR TO SIMULATE
DAY TO SIMULATE
HOUR TO SIMULATE
MAXIMUM HOURLY CONCENTRATION (G/M**3)
YEAR OF MAXIMUM
DAY OF MAXIMUM
HOUR OF MAXIMUM
RECEPTOR NUMBER OF MAXIMUM
DESCRIPTION:
THIS MODULE IS CALLED BY SUBROUTINE TU220 TO UPDATE THE
MAXIMUM HOURLY CONCENTRATION.
PARAMETER (NPTMAX=25,NREMAX=180)
COMMON /RECCOM/ELR(NREMAX),PARTC(NREMAX,NPTMAX),PHCHI(NREMAX),
1 RNAME(2,NREMAX), RREC(NREMAX),SREC(NREMAX),
2 STAR(2,NREMAX).ZR(NREMAX),NRELIM
DO 100 NRE = 1,NRELIM
IF (PHCHI(NRE) .LE. HMAX) GO TO 100
HMAX = PHCHI(NRE)
TUP29980
TUP29990
TUP30000
TUP30010
TUP30020
TUP30030
TUP30040
TUP30050
TUP30060
TUP30070
TUP30080
TUP30090
TUP30100
TUP30110
TUP30120
TUP30130
TUP30140
TUP30150
TUP30160
TUP30170
TUP30180
TUP30190
TUP30200
TUP30210
TUP30220
TUP30230
TUP30240
TUP30250
TUP30260
TUP30270
TUP30280
TUP30290
TUP30300
TUP30310
TUP30320
TUP30330
TUP30340
TUP30350
TUP30360
TUP30370
TUP30380
TUP30390
TUP30400
TUP30410
TUP30420
TUP30430
TUP30440
TUP30450
TUP30460
TUP30470
TUP30480
TUP30490
TUP30500
TUP30510
TUP30520
139
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
IYRMAX = IYR
IDYMAX = IDY
LHMAX = LH
MAXREC = NRE
100 CONTINUE
RETURN
END
SUBROUTINE TU340(IYR,IDY.LH,HSAV,DSAV)
340-OUTPUT-HOURLY-RESULTS
C
C
C
C
C
C
ARGUMENT LIST:
INPUT: IYR
IDY
LH
HSAV
DSAV
CALLING ROUTINES:
TU220
- YEAR TO SIMULATE
- JULIAN DAY TO SIMULATE
- HOUR TO SIMULATE
- PLUME HEIGHTS FOR THIS HOUR (METERS)
- DISTANCE TO FINAL RISE FOR THIS HOUR
C
C
DESCRIPTION:
THIS SUBROUTINE OUTPUTS TOTAL HOURLY CONCENTRATIONS IN
MICROGRAMS PER CUBIC METER BY USING A "6P" SCALE FACTOR IN
FORMAT STATEMENT 1060.
PARAMETER (NLMAX=20,NPTMAX=25,NREMAX=180,NDMAX=40)
DIMENSION IRANK(NREMAX),HSAV(NPTMAX),DSAV(NPTMAX),
1 CSAV(NREMAX)
DIMENSION ALP(NLMAX)
COMMON /RUNCOM/CELM,CONTWO.CTER,HAFL,TLOS,C0NTER(4),IYRS,IDYS,
1 IHRS,IHLIM,IOPT,IOPB,IOPD,IOPG,IOPM,IOPQ,IOPR,
2 IOPWPC,NPOL,LINE1(20).LINE2(20),LINE3(20),NPRNT
COMMON /METCOM/DTHDZ(NLMAX),SAL(NLMAX),SEL(NLMAX),TL(NLMAX),
1 UL(NLMAX),WDL(NLMAX),ZL(NLMAX),KLASS,LMX,MDATA,
2 MDATB,METNAM(2),MYR.MJD,MHR,ND,NLLIM,DESC(18,NDMAX)
COMMON /SORCOM/D(NPTMAX),PNAME(3,NPTMAX),PSH(NPTMAXj,QJ(NPTMAX),
1 QELEV(NPTMAX),QEAST(NPTMAX),QNORD(NPTMAX),
2 TS{NPTMAX),VS(NPTMAX),IQYR,IQJD,IQHR,NPTLIM,
3 IMPS(NPTMAX)
COMMON /RECCOM/ELR(NREMAX),PARTC(NREMAX,NPTMAX),PHCHI(NREMAX),
1 RNAME(2,NREMAX),RREC(NREMAX),SREC(NREMAX),
2 STAR(2,NREMAX),ZR(NREMAX),NRELIM
COMMON /INOUT/ IN,10
DATA BLNK /' '/, ASTR /'~'/
PRINT TITLE.
WRITE(IO,1000) LINE1,LINE2,LINE3
LIST MET DATA.
LIM = NLLIM - 1
DO 200 L = l.LIM
LT = L + 1
DTHDZ(L) = (TL(LT) - TL(L))/(ZL(LT) - ZL(L)) + 0.0098
200 IF (TL(LT).EQ.-9999..OR.TL(L).EQ.-9999.) DTHDZ(L) = -9999.9999
DO 250 L = 1,NLLIM
ALP(L) = BLNK
IF (L.EQ.LMX) ALP(L) = ASTR
250 CONTINUE
WRITE (6,1090) MYR.MJD,MHR,LMX,KLASS
WRITE (6,1100) NLLIM,ZL(NLLIM),ALP(NLLIM).SAL(NLLIM),SEL(NLLIM),
1 WDL(NLLIM). UL(NLLIM),TL(NLLIM)
DO 300 L = l.LIM
LT = NLLIM - L
300 WRITE (6,1100) LT,ZL(LT),ALP(LT),SAL(LT),SEL(LT),WDL(LT),UL(LT),
1 TL(LT),DTHDZ(LT)
PRINT FINAL PLUME HEIGHT AND DISTANCE TO FINAL RISE.
TUP30530
TUP30540
TUP30550
TUP30560
TUP30570
TUP30580
TUP30590
TUP30600
TUP30610
TUP30620
TUP30630
TUP30640
TUP30650
TUP30660
TUP30670
TUP30680
TUP30690
TUP30700
TUP30710
TUP30720
TUP30730
TUP30740
TUP30750
TUP30760
TUP30770
TUP30780
TUP30790
TUP30800
TUP30810
TUP30820
TUP30830
TUP30840
TUP30850
TUP30860
TUP30870
TUP30880
TUP30890
TUP30900
TUP30910
TUP30920
TUP30930
TUP30940
TUP30950
TUP30960
TUP30970
TUP30980
TUP30990
TUP31000
TUP31010
TUP31020
TUP31030
TUP31040
TUP31050
TUP31060
TUP31070
TUP31080
TUP31090
TUP31100
TUP31110
TUP31120
TUP31130
TUP31140
TUP31150
TUP31160
TUP31170
TUP31180
TUP31190
TUP31200
TUP31210
140
-------
c
c
c
WRITE(10,1010)
WRITE?10,1020
WRITE(10,1030)
I, I = 1.10)
HSAV(NPT), NPT = l.NPTLIM)
.DSAV(NPT), NPT = l.NPTLIM)
C
C
c
PRINT HOURLY CONCENTRATION TABLE.
WRITE(IO,1040) NPOL,IYR,IDY,LH
WRITE(10,1050)
CALCULATE GRAND TOTALS AND RANK CONCENTRATIONS.
DO 30 NRE = 1,NRELIM
CSAV?NRE) = PHCHI(NRE)
30 CONTINUE
DETERMINE RANKING ACCORDING TO CONCENTRATION.
DO 50 I = 1.NRELIM
CMAX = -1.0
DO 40 K = 1.NRELIM
IF (CSAV(K) .LE. CMAX) GO TO 40
CMAX = CSAV(K)
LMAX=K
40 CONTINUE
IRANK(LMAX) = I
CSAV(LMAX) = -1.0
50 CONTINUE
DO 60 NRE = 1.NRELIM
WRITE(10,1060) NRE,(RNAME(J.NRE), J =
1 ELR(NRE),STAR(1,NRE),
2 PHCHI(NRE),IRANK(NRE)
60 CONTINUE
RETURN
FORMAT STATEMENTS.
1,2)
,RREC(NRE).SREC(NRE)
,NRE),ZR(NRE),
14 '
Mix
HOUR:
DTHDZ')
1000 F0RMAT(1H1,'TITLE: *,20A4,2(/,9X,20A4)/)
1090 FORMAT (» MET DATA FOR YEAR:' ,13, JUL DAY:
1 13,' LMX =',12,' KLASS =',12/' LVL HT
2 'SA SE WD U T
1100 FORMAT (I3,F10.1,2X,Al,2X,2F10.4,F10.1,2F10.2,F10.4)
1010 FORMATS1HO.12X.10I11)
1020 FORMAT(' FINAL HT (M) ',10(F8.1.3X))
1030 FORMAT(' DIST FIN HT (KM)\10(F10.3.IX))
1040 FORMAT(1H0,30X,'* * * \A4,' CONCENTRATION TABLE FOR HOUR ',12,
1 '—' 13 '-' 12 ' * * *')
1050 FORMAT(1H0, 'RE^EP^OR ' IDENTIFICATION COORDI'
1 'NATES HEIGHT ABOVE'./,
2 IX,45X,'(USER UNITS)',16X,'LOCAL GRD-LVL
3 'CONCENTRATION RANK',/,
4 IX,38X,'EAST NORTH ELEV (M)',9X,
5 '(MICROGRAMS/M**3)')
1060 FORMAT(IX,15,10X,2A4,6X,3F13.2,IX,2A1,IX,F9.2,8X,6PF13.2,7X, 15)
END
1
SUBROUTINE CHRON(IYR,IJD,IHR,IYDH)
CHRON-CONVERT-DATE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
ARGUMENT LIST:
INPUT: IYR - YEAR (2 DIGITS)
IJD - JULIAN DAY (3 DIGITS)
IHR - HOUR (2 DIGITS)
OUTPUT: IYDH - DATE CONVERTED TO HOUR
CALLING ROUTINES:
TU220, TU320, TU325
DESCRIPTION:
THIS SUBROUTINE CONVERTS DATES BETWEEN 1960 AND 1999 TO A
COMMON SEQUENTIAL HOUR. THE ZERO POINT IS 1959, 365, 24,
I.E., HOUR 1 IS THE FIRST HOUR OF 1960.
TUP31220
TUP31230
TUP31240
TUP31250
TUP31260
TUP31270
TUP31280
TUP31290
TUP31300
TUP31310
TUP31320
TUP31330
TUP31340
TUP31350
TUP31360
TUP31370
TUP31380
TUP31390
TUP31400
TUP31410
TUP31420
TUP31430
TUP31440
TUP31450
TUP31460
,TUP31470
TUP31480
TUP31490
TUP31500
TUP31510
TUP31520
TUP31530
TUP31540
TUP31550
TUP31560
TUP31570
TUP31580
TUP31590
TUP31600
TUP31610
TUP31620
TUP31630
TUP31640
TUP31650
,TUP31660
TUP31670
TUP31680
TUP31690
TUP31700
TUP31710
TUP31720
TUP31730
TUP31740
TUP31750
TUP31760
TUP31770
TUP31780
TUP31790
TUP31800
TUP31810
TUP31820
TUP31830
TUP31840
TUP31850
TUP31860
TUP31870
TUP31880
TUP31890
TUP31900
141
-------
DIMENSION ICUM(41),NDAY(40)
COMMON /INOUT/ IN,10
DATA ICUM/ 0, 8784, 17544, 26304, 35064, 43848, 52608,
1 61368, 70128, 78912, 87672, 96432,105192,113976,
2 122736,131496,140256,149040,157800,166560,175320,
3 184104,192864,201624,210384,219168,227928,236688,
4 245448,254232,262992,271752,280512,289296,298056,
5 306816.315576.324360,333120,341880,350640/
C
C
C
DATA NDAY/366
1 366
2 366
3 366
4 366
5 366
6 366
7 366
8 366
9 366
DATA IZPT/59/
SCREEN INPUT.
,365
365,
,365
365,
,365
365,
,365
365,
,365
365,
,365
365,
,365
365,
,365
365,
,365
365,
3&5,
365,
365,
365,
365,
365,
365,
365,
365,
365/
C
C
C
C
C
C
C
c
c
c
c
c
c
c
c
IF ((IYR .GT. 59) .AND. (IYR .LT. 100)) GO TO 100
WRITE(IO.1000) IYR
GO TO 990
100 IF f(IJD .GT. 0) .AND. (IJD .LT. 367)) GO TO 200
WRITE(IO.1010) IJD
GO TO 990
200 IF ((IHR -GT. 0) -AND. (IHR .LT. 25)) GO TO 300
WRITE(IO.1020) IHR
GO TO 990
300 NYR = IYR - IZPT
IF (IJD .LE. NDAY(NYR)) GO TO 400
WRITE(IO,1030) IJD,IYR
GO TO 996
CONVERT YEAR/JULIAN DAY/HOUR TO COMMON SEQUENTIAL HOUR.
400 IYDH = ICUM(NYR) + (IJD - 1) * 24 + IHR
GO TO 999
ERROR PROCESSING.
990 IYDH = -999999
' 999 RETURN
1 FORMAT STATEMENTS.
'lOOO FORMAT (' 0*** YEAR INPUT (\I4,') IS NOT WITHIN RANGE OF 60-99.')
1010 FORMATS0*** JULIAN DAY INPUT ( ,14,') IS NOT WITHIN RANGE OF ',
1 '1-366.')
1020 FORMAT('0*** HOUR INPUT (',14,') IS NOT WITHIN RANGE OF 1-24.')
1030 FORMAT('0*** JULIAN DAY INPUT ('.14,') CANNOT BE USED FOR YEAR '
2 12,'; THIS IS NOT A LEAP YEAH.*)
END
SUBROUTINE I'CHRON(IYDH, IYR, IJD, IHR)
ICHRON-CONVERT-DATE
ARGUMENT LIST:
INPUT: IYDH - COMMON SEQUENTIAL HOUR
OUTPUT: IYR - YEAR (2 DIGITS)
IJD - JULIAN DAY (3 DIGITS)
IHR - HOUR (2 DIGITS)
CALLING ROUTINES:
TUP31910
TUP31920
TUP31930
TUP31940
TUP31950
TUP31960
TUP31970
TUP31980
TUP31990
TUP32000
TUP32010
TUP32020
TUP32030
TUP32040
TUP32050
TUP32060
TUP32070
TUP32080
TUP32090
TUP32100
TUP32110
TUP32120
TUP32130
TUP32140
TUP32150
TUP32160
TUP32170
TUP32180
TUP32190
TUP32200
TUP32210
TUP32220
TUP32230
TUP32240
TUP32250
TUP32260
TUP32270
TUP32280
TUP32290
TUP32300
TUP32310
TUP32320
TUP32330
TUP32340
TUP32350
TUP32360
TUP32370
TUP32380
TUP32390
TUP32400
TUP32410
TUP32420
TUP32430
TUP32440
TUP32450
TUP32460
TUP32470
TUP32480
TUP32490
TUP32500
TUP32510
TUP32520
TUP32530
TUP32540
TUP32550
TUP32560
TUP32570
TUP32580
TUP32590
142
-------
c
c
c
c
c
c
c
c
c
c
TU220
DESCRIPTION:
THIS SUBROUTINE CONVERTS A COMMON SEQUENTIAL HOUR TO A DATE
BETWEEN 1960 AND 1999. THE ZERO POINT IS 1959, 365, 24,
I.E., HOUR 1 IS THE FIRST HOUR OF 1960.
DIMENSION ICUM(41),NDAY(40)
COMMON /INOUT/ IN, 10
DATA ICUM/ 0, 8784, 17544, 26304, 35064, 43848, 52608,
1 61368, 70128, 78912, 87672, 96432,105192,113976,
2 122736,131496,140256,149040,157800,166560,175320,
3 184104,192864,201624,210384,219168,227928,236688,
4 245448,254232,262992,271752,280512,289296,298056,
5 306816,315576.324360,333120,341880,350640/
DATA NDAY/366,365,365,365,
1 366,365,365,365
2 366,365,365,365,
3 366,365,365,365,
4 366,365,365,365,
5 366,365,365,365,
6 366,365,365,365,
7 366,365,365,365,
8 366,365,365,365,
9 366,365,365,365/
DATA IZPT/59/
C
C
C
SCREEN INPUT.
IF ((IYDH .GT. ICUM(l)) .AND.
WRITE(10.1000) IYDH
IYR = -999999
IJD = -999999
IHR = -999999
GO TO 999
(IYDH .LE. ICUM(41))) GO TO 100
C
C
CONVERT COMMON SEQUENTIAL HOUR TO YEAR/JULIAN DAY/HOUR.
100 NYR = IYDH/8760 + 1
200 DIFF = IYDH - ICUM(NYR)
IF (DIFF.GE. 0.) GO TO 300
NYR = NYR - 1
GO TO 200
300 IF (DIFF .NE. 0.) GO TO 400
IS THE LAST HOUR OF THE PREVIOUS YEAR.
NYR = NYR - 1
IYR = NYR + IZPT
IJD = NDAY(NYR)
IHR = 24
GO TO 999
400 IYR = NYR + IZPT
IHTY = DIFF
IJD = IHTY/24
IHR = IHTY - IJD * 24
IF (IHR.EQ.O) THEN
IHR = 24
ELSE
IJD = IJD + 1
END IF
999 RETURN
FORMAT STATEMENTS.
1000 FORMAT('0*** COMMON SEQUENTIAL HOUR INPUT ('.17,') IS NOT ',
1 'WITHIN THE REQUIRED RANGE FOR CONVERSION TO DATES ',
2 'BETWEEN YEARS 60 AND 99.')
END
TUP32600
TUP32610
TUP32620
TUP32630
TUP32640
TUP32650
TUP32660
TUP32670
TUP32680
TUP32690
TUP32700
TUP32710
TUP32720
TUP32730
TUP32740
TUP32750
TUP32760
TUP32770
TUP32780
TUP32790
TUP32800
TUP32810
TUP32820
TUP32830
TUP32840
TUP32850
TUP32860
TUP32870
TUP32880
TUP32890
TUP32900
TUP32910
TUP32920
TUP32930
TUP32940
TUP32950
TUP32960
TUP32970
TUP32980
TUP32990
TUP33000
TUP33010
TUP33020
TUP33030
TUP33040
TUP33050
TUP33060
TUP33070
TUP33080
TUP33090
TUP33100
TUP33110
TUP33120
TUP33130
TUP33140
TUP33150
TUP33160
TUP33170
TUP33180
TUP33190
TUP33200
TUP33210
TUP33220
TUP33230
TUP33240
TUP33250
TUP33260
TUP33270
TUP33280
TUP33290
TUP33300
143
-------
APPENDIX B
LISTING OF FORTRAN SOURCE CODE FOR METVER
METVER generates the meteorological data file which may be
used to verify TUPOS. The source code listing is given on the
following pages.
144
-------
c
c
c
c
c
c
c
c
c
c
METVER (VERSION 85093)
A UTILITY PROCESSOR FOR TUPOS IN
SECTION 2. NON-GUIDELINE MODELS,
IN UNAMAP (VERSION 6) JUL 86.
SOURCE: UNAMAP FILE ON EPA'S UNIVAC 1110, RTP, NC
THIS PROGRAM GENERATES THE UNFORMATTED METEOROLOGICAL DATA
FILE TO BE USED IN THE VERIFICATION RUN OF THE TUPOS USER'S
GUIDE.
DIMENSION METNAM(2),DESC(18,5),MYR(13),MJD(13),MHR(13),NLLIM(13),
1 LMX(13J,KLASS(13).ZL(6,13),TL(6,13),WDL(6,13),UL(6,13),
2 SAL(6,13).SEL(6,13)
DATA METNAM/'SET6'/
DATA MDATA,MDATB,ND/840210,105523,5/
DATA DESC/ SYNT'
1 'SSIN'
2 'DATA'
3 '7,21*
4 'D 14'
5 'NO D'
6 ',05,'
7 'HOUR'
8 * TEM'
9 'UR 0'
A 'VARI'
B 'AY A'
/ 83,
DATA MYR
DATA MJD
DATA MHR
DATA NLLIM/
DATA LMX /
DATA KLASS/
HETI
'G AN
' AVA
; ,22,
'ATA
'06.1
' 2i
'PERA
'2.
' ATIO
,'ND N
83, 83
/365,365,365
DATA ZL /
1
2
3
4
5
6
7
8
9
A
B
C
DATA TL /
1
2
3
4
5
6
7
8
9
A
B
C
I
1
2
3
4
5
6
7
8
9
A
DATA WDL/
15,
!:
50*.
50.
50.
50.
50.
50.
50.
50.
50.
50.
50.
50.
50.
293.5
293.3
293.1
292.0
291.5
291.0
289.8
289.5
289.2
288.7
289.0
289.9
294.7
263.
264.
265.
258.
256.
254.
256.
255.
254.
252.
253.
16, 17
6, 6
4, 4
1 loo?"
100.
100.
100.
100.
100.
100.
100.
100.
100.
100.
100.
100.
293.0
293.0
293.0
292.0
291.7
291.3
290.0
289.7
289.6
289.5
289.6
290.0
294. 1
265.
266.
267.
262.
261.
260.
258.
258.
257.
258.
260.
'C DA'
'D DA'
'I LAB'
'23,0'
'FOR '
'0,11'
'HAS '
'TURE'
•N AP*
'IGHT'
83, 83
365,365
21, 22
6, 6
2, 4
4. 4
2C)0.
200.
200.
200.
200.
200.
200.
200.
200.
200.
200.
200.
200.
292.0
293.0
292.5
291.8
291.8
291.7
-9999.
291.5
291.5
291.5
291.5
291.5
293.0
268.
268.
269.
265.
263.
263.
263.
264.
262.
265.
266.
'TA S','ET W
'TA M*,'ISSI'
'LE F','OR H*
'2,03',',04,'
'HOUR'
' 12, |
'ONLY'
'S AR'
'PROX'
'S 18'
* AND'
' 3 L*
'E MI'
•ITH
'NG.
'OURS
'07,0
',19,
' 13.
'EVEL
' SSIN
IMAT','ES A
',6*' '/
83, 84, 84, 84, 84
365,001,001,001,001
23, 02, 03, 04, 07
6, 6, 6, 6, 6
4, 4, 4, 4, 4
4 4 4 4 r>
1506., l600'. , 1&00.
1500., 1600., 1800.
1500., 1600., 1800.
-9999.,-9999.,-9999.
1500., 1600., 1800.
1500., 1600., 1800.
1500., 1600., 1800.
1500., 1600., 1800.
1500., 1600., 1800.
1600., 1800., 2000.
1600., 1800., 2000.
1600., 1800., 2000.
1600., 1800., 2000.
285.5, 287.5, 286.5
285.5, 287.5, 286.5
285.5, 287.5, 286.5
-9999.,-9999. ,-9999.
285.5, 287.5, 286.5
285.5, 287.5, 286.5
-9999., 287.5, 286.5
285.5, 287.5, 286.5
285.5, 287.5, 286.5
286.5, 290.5, 289.5
285.5, 289.5, 288.5
284.5, 288.5, 287.5
279.0, 283.0, 282.0/
270., 272., 273.
269., 271., 273.
271., 272., 273.
-9999.,-9999.,-9999.
270., 272., 275.
271., 272., 273.
272., 271., 270.
271., 271., 271.
269., 270., 272.
271., 273., 276.
270., 272., 274.
,'HOUR'
,4*'
' 15 '
,''8,0^'
, '20,2'
,4*'
,'S. '
,'G FO*
'S MI'
i
'l6,r
\ AN1
;4,or
'SOME'
'R HO'
,' CLE','AR D'
84, 84, 84/
001,001,001/
08, 09, 14/
6, 6, 6/
4, 4, 4/
3, 2, 1/
TPM00010
TPM00020
TPM00030
TPM00040
.TPM00050
TPM00060
TPM00070
TPM00080
TPM00090
TPM00100
TPM00110
TPM00120
TPM00130
TPM00140
TPM00150
,TPM00160
TPM00170
,TPM00180
,TPM00190
TPM00200
,TPM00210
TPM00220
,TPM00230
,TPM00240
TPM00250
,TPM00260
TPM00270
TPM00280
TPM00290
TPM00300
TPM00310
TPM00320
TPM00330
TPM00340
TPM00350
TPM00360
TPM00370
TPM00380
TPM00390
TPM00400
TPM00410
TPM00420
TPM00430
TPM00440
TPM00450
TPM00460
TPM00470
TPM00480
TPM00490
TPM00500
TPM00510
TPM00520
TPM00530
TPM00540
TPM00550
TPM00560
TPM00570
TPM00580
TPM00590
TPM00600
TPM00610
TPM00620
TPM00630
TPM00640
TPM00650
TPM00660
TPM00670
TPM00680
TPM00690
TPM00700
145
-------
DATA UL /
255.
264.
2.30
2.26
2.23
2.00
1.90
1.80
1.50
1.40
1.32
1.40
1.60
1.90
2.30
t-M
0. 197
0. 132
0.119
0. 105
0.079
0.075
0.069
0.048
0.052
0.071
0.205
DATA SEL/ 0.134
B
C
I
1
2
3
4
5
6
7
8
9
A
B
C
1
2
3
4
5
6
7
8
9
A
B
C
DATA SAL/
1
2
3
4
5
6
7
8
9
A
B
C
262.
266.
2.40
2.40
2.40
2.20
2.13
2.06
1.86
1.80
1.76
1.80
1.90
2.10
2.40
8:11
0. 174
0.111
0.099
0.085
0.067
0.066
0.058
0.039
0.043
0.061
0.194
0.152
0. 134
0.111
0.078
0.069
0.061
0.043
0.039
0.036
0.028
0.038
0.048
0. 149
267.
268.
2.50
2.50
2.50
2.50
2.50
2.50
2.50
2.50
2.50
2.50
2.50
2.50
2.50
8:181
0.158
0.092
0.085
0.070
0.056
0.050
0.045
0.032
0.035
0.050
0. 175
0.172
0.142
0.110
0.064
0.058
0.053
0.038
0.035
0.031
0.024
0.032
0.041
0.168
C
C
C
0.123
0. 112
0.091
0.082
0.070
0.052
0.046
0.041
0.032
0.041
0.056
0.129,
WRITE (6.1234)
1234 FORMAT ('1',21X,'METVER (VERSION 85093)'/
1 22X,'A UTILITY PROCESSOR FOR TUPOS IN'/
2 22X,'SECTION 2. NON-GUIDELINE MODELS,'/ '
3 22X,'IN UNAMAP (VERSION 6) JUL 86.'/
4 22X,'SOURCE: UNAMAP FILE ON EPA"S UNIVAC 1110, RTP, NC.')
WRITE HEADER RECORD.
271.
269.
4.50
4.50
4.50
-9999.
4.50
4.50
4.50
4.50
4.50
7.00
7.00
7.00
5.00
8:118
0.142
-9999.
0.055
0.037
0.049
0.041
0.032
0.017
0.026
0.040
0. 132
0.248
0. 161
0. 108
-9999.
0.047
0.045
0.036
0.031
0.026
0.016
0.023
0.034
0.228
272.
271.
7.00
7.00
7.00
-9999.
7.00
7.00
7.00
7.00
7.00
8.00
8.00
8.00
8.00
8:®
0.118
-9999.
0.048
0.036
0.038
0.033
0.027
0.016
0.024
0.034
0.130
0.251
0.176
0.107
-9999.
0.041
0.038
0.031
0.027
0.022
0.015
0.018
0.021
0.234
272. ,
270./
8.00
8.00
8.00
-9999.
8.00
8.00
8.00
8.00
8.00
9.00
9.00
9.00,
9.00/
0.094
-9999.
0.046
0.035
0.027
0.024
0.021
0.016
0.022
0.030.
0.127/
0.256
0.183
0. 106
-9999.
0.041
0.032
0.026
0.024
0.020
0.015
0.017
0.019,
0.241/
C
C
C
WRITE(9) METNAM,MDATA,MDATB,ND,
1 ((DESC(I,J), I = 1,18), J = 1,ND)
WRITE HOURLY RECORDS.
DO 100 I = 1,13
NLMAX = NLLIM(I)
WRITE(9) MYR(I),MJD(I),MHR(I),NLMAX,LMX(
1 (ZL(NL,I),TL(NL,I),WDL(NL,I),UL
2 SEL(NL,I , NL = 1,NLMAX)
100 CONTINUE
STOP
END
I).KLASS(I),
(NL,I),SAL(NL,I),
TPM00710
TPM00720
TPM00730
TPM00740
TPM00750
TPM00760
TPM00770
TPM00780
TPM00790
TPM00800
TPM00810
TPM00820
TPM00830
TPM00840
TPM00850
fEN88$8
TPM00880
TPM00890
TPM00900
TPM00910
TPM00920
TPM00930
TPM00940
TPM00950
TPM00960
TPM00970
TPM00980
TPM00990
TPM01000
TPM01010
TPM01020
TPM01030
TPM01040
TPM01050
TPM01060
TPM01070
TPM01080
TPM01090
TPM01100
TPM01110
TPM01120
TPM01130
TPM01140
TPM01150
TPM01160
TPM01170
TPM01180
TPM01190
TPM01200
TPM01210
TPM01220
TPM01230
TPM01240
TPM01250
TPM01260
TPM01270
TPM01280
TPM01290
TPM01300
TPM01310
TPM01320
TPM01330
146
-------
APPENDIX C
LSTMET is a program to list data from any meteorological
files prepared for input to TUPOS. There are two types of input
to the program: A line of identifiers to compare with those on
the input file, and a line of data consisting of two date-time
groups, a start date-time and an ending date-time. Data with
date-times inclusive between these two date-times will be printed.
Each date-time consists of a year, Julian day and hour. Upon
completion of printing the data included between the two date-
times, an additional line of data is read expecting two more date-
time groups. If the input data ends without a second line of
date, the program will terminate normally. However, if a second
line or subsequent lines are present, the data between each pair
of date-time groups will be printed. For example, if a met file
exists having 31 days' data from 85,001,01 through 85,031,24 and
two data lines as
85, 017, 15, 85, 018, 14
85, 023, 10, 85, 023, 12
are included in the run stream, the first line will cause print
out of 24 hours' met data beginning on Julian day 17 at hour 15
and the second line will cause print out of 3 hours' met data
beginning on Julian day 23 at hour 10. As can be seen by this
example, meteorological data can be skipped to get to those data
desired. It is necessary to have the data portions in chrono-
logical order. If the two data lines above were reversed, the
second data group would not be written.
The data print out is organized so that the printed lines
appear as the layers in the atmosphere do wi.th the lower heights
above ground at the botton. In order to make the data display of
greatest use, the potential temperature change with height, aB/azl
for each layer is calculated and included in the data display.
147
-------
c LSTWET (VERSION 85095)
C A UTILITY PROCESSOR FOR TUPOS IN
C SECTION 2. NON-GUIDELINE MODELS,
C IN UNAMAP (VERSION 6) JUL 86.
C SOURCE: UNAMAP FILE ON EPA'S UNIVAC 1110, RTP, NC.
C PROGRAM LSTMET.
C LIST MET DATA FOR SELECTED HOURS.
C
PARAMETER (NLMAX = 20, NDMAX = 40)
DIMENSION ZL(NIMAX),TL(NIMAX),WDL(NIMAX),UL(NIMAX),SAL(NIMAX),
1 SEL(NLMAX),DTHDZ(NLMAX).ALP(NLMAX)
DIMENSION MID(2),METNAM(2),DESC(18,NDMAX)
DATA ICON /0/, BLNK /' V, ASTR /'*'/
WRITE (6.1234)
1
2
3
4
JIVAC 1110, RTP, NC.')
1234 FORMAT ( 1',2lX,'LS1WET (VERSION 85095)'/
" 22X,'A UTILITY PROCESSOR FOR TUPOS IN*/
22X,'SECTION 2. NON-GUIDELINE MODELS,'/
22X,'IN UNAMAP (VERSION 6) JUL 86.*/
22X, 1 SOURCE: UNAMAP FILE ON EPA"S UN]
C FIRST DATA LINE
C DATA LABELS TO COMPARE WITH METEOROLOGICAL FILE.
C MID 8-CHARACTER IDENTIFIER
C MA 6-DIGIT DATE-TIME ID
C MB 6-DIGIT TIME ID
READ (5,1000)MID,MA,MB
1000 FORMAT (2A4.2I6)
READ (9) METNAM,MDATA,MDATB,ND,
1 ((DESC(I.J). I = 1,18), J = l.ND)
IF (MID(l).BQ.METNAM(l)) GO TO 10
ICON = 1
10 IF (MID(2).EQ.METNAM(2)) GO TO 20
ICON = 1
20 IF (MA.EQ.MDATA) GO TO 30
ICON = 1
30 IF (MB.EQ.MDATB) GO TO 40
ICON = 1
40 IF (ICON.EQ.0) GO TO 50
WRITE (6.1010) METNAM,MDATA,MDATB,MID,MA,MB
1010 FORMAT ( 0MET DATA FILE IS LABELLED: \ 2A4,18,',*,18,
1 EXPECTED:', 2A4,\ ',18,', ',18,'.')
STOP
C LIST HEADER AND DESCRIPTION.
50 WRITE(6,1020) METNAM,MDATA,MDATB
WRITE(6,1030) (DESC(J.l), J = 1,18)
IF (ND .EQ. 1) GO TO 110
DO 110 N = 2,ND
WRITE(6,1040) (DESC(J,N), J = 1,18)
110 CONTINUE
1020 FORMAT(' OMET FILE IDENTIFIER: \2A4,/,
1 IX 'CREATED: ',16,' (YR MO DAY)',5X,16,' (HRMINSEC)')
1030 FORMAT(IX,'DESCRIPTION: \18A4)
1040 FORMAT(IX,14X,18A4)
C
C
C
C
C
C
C
C
C
SECOND (AM) SUBSEQUENT ) DATA LINE.
IYR START PRINT - 2 DIGIT YEAR
START PRINT - JULIAN DAY
START PRINT - HOUR (1-24)
END PRINT - 2 DIGIT YEAR
IJD
IHR
JYR
JJD
JHR
END PRINT - JULIAN DAY
END PRINT - HOUR (1-24)
70 READ (5,1050,END=700) IYR,IJD.IHR,JYR,JJD,JHR
END OF FILE ENTRY FOR THE ABOVE LINE CAUSES
NORMAL TERMINATION.
1050 FORMAT ()
b,:
'/',12,
WRITE (6.1060) IYR,IJD,IHR,JYR,JJD,JHR
1060 FORMAT ('OLIST MET DATA FROM:»,13,'/',13,
1 ' TO: ',13,'/' 13, ' /', 12)
CALL CHRON (IYR,IJD,IHR,IYDH
CALL CHRON (JYR,JJD,JHR,JYDH)
100 READ (9,ERR=500,END=600) MYR,MJD,MHR,NLLIM,LMX.KLASS,
1 (ZL(I),TL(I),WDL(I),UL(I),SAL(I),SEL(I), I = l.NLLIM)
TPL00010
TPL00020
TPL00030
TPL00040
TPL00050
TPL00060
TPL00070
TPL00080
TPL00090
TPL00100
TPL00110
TPL00120
TPL00130
TPLOO140
TPL00150
TPLOO160
TPL00170
TPLOO180
TPLOO190
TPL00200
TPL00210
TPL00220
TPL00230
TPL00240
TPL00250
TPL00260
TPL00270
TPL00280
TPL00290
TPL00300
TPL00310
TPL00320
TPL00330
TPL00340
TPL00350
TPL00360
TPL00370
TPL00380
TPL00390
TPL00400
TPL00410
TPL00420
TPL00430
TPL00440
TPL00450
TPL00460
TPL00470
TPL00480
TPL00490
TPL00500
TPL00510
TPL00520
TPL00530
TPL00540
TPL00550
TPL00560
TPL00570
TPL00580
TPL00590
TPL00600
TPL00610
TPL00620
TPL00630
TPL00640
TPL00650
TPL00660
TPL00670
TPL00680
TPL00690
TPL00700
148
-------
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
CALL CHRON (MYR.MJD.MHR.MYDH)
IF (MYDH.LT.IYDH) GO TO 100
IF (MYDH.GT.JYDH) GO TO 70
LIST MET DATA.
LIM = NLLIM - 1
DO 200 L = 1,LIM
LT = L + 1
CALCULATE D THETA/DZ BETWEEN LAYERS FOR
INCLUSION ON PRINT OUT.
DTHDZ(L) = (TL(LT) - TL(L))/(ZL(LT) - ZL(L)) + 0.0098
200 IF (TL(LT).EQ.-9999..OR.TL(L).EQ.-9999.) DTHDZ(L) = -9999.9999
DO 250 L = 1,NLLIM
ALP(L) = BLNK
IF (L.EQ.LMX) ALP(L) = ASTR
250 CONTINUE
WRITE (6.1090) MYR,MJD,MHR,LMX.KLASS
1090 FORMAT ('OMET DATA FOR YEAR:'13.' JUL DAY:',14,' HOUR:'.
1 13,' LMX = ', 12, ' KLASS =',12/ LVL HT MIX
2 'SA SE WD U T DTHDZ')
WRITE (6,1100) NLLIM,ZL(NLLIM),ALP(NLLIM),SAL(NLLIM),SEL(NLLIM),
UL^NLLIM) ,TL(NLLIM)
LT = NLLIM -*L
300 WRITE (6,1100) LT,ZL(LT),ALP(LT),SAL(LT),SEL(LT),WDL(LT),UL(LT),
1 TL(LT) DTHDZ(LT)
1100 FORMAT ^I3,F10.1,2X,A1,2X,2F10.4,F10.1,2F10.2,F10.4)
IF (MYDH.EO.JYDH) GO TO 70
GO TO 100
500 WRITE (6.1110)
1110 FORMAT ( OSYSTEM ERROR ON READING MET DATA RECORD!')
STOP
600 WRITE (6.1120)
1120 FORMAT ('OMET FILE WAS EHAUSTED WITHOUT FINDING DATA FOR THE HOUR
1REQUESTED!')
STOP
700 WRITE (6.1130)
1130 FORMAT (10 NORMAL TERMINATION')
STOP
END
SUBROUTINE CHRON(IYR,IJD,IHR,IYDH)
CHRON-CONVERT-DATE
ARGUMENT LIST:
INPUT: IYR
IJD
IHR
OUTPUT: IYDH
YEAR (2 DIGITS)
JULIAN DAY (3 DIGITS)
HOUR (2 DIGITS)
DATE CONVERTED TO HOUR
CALLING ROUTINES:
TU220, TU320, TU325
DESCRIPTION:
THIS SUBROUTINE CONVERTS DATES BETWEEN 1960 AND 1999 TO A
COMMON SEQUENTIAL HOUR. THE ZERO POINT IS 1959, 365, 24,
I.E., HOUR 1 IS THE FIRST HOUR OF 1960.
DIMENSION ICUM(41),NDAY(40)
DATA 10/6/
DATA ICUM/ 0, 8784, 17544, 26304, 35064, 43848, 52608,
1 61368, 70128, 78912, 87672, 96432,105192 113976,
2 122736,131496,140256,149040,157800,166560,175320,
3 184104,192864,201624,210384,219168,227928 236688,
4 245448,254232,262992,271752,280512,289296 298056
5 306816,315576,324360,333120,341880,350640/
DATA NDAY/366,365,365,365,
1 366,365,365,365,
2 366,365,365,365,
TPL00710
TPL00720
TPL00730
TPL00740
TPL00750
TPL00760
TPL00770
TPL00780
TPL00790
TPL00800
TPL00810
TPL00820
TPL00830
TPL00840
TPL00850
TPL00860
TPL00870
TPL00880
TPL00890
TPL00900
TPL00910
TPL00920
TPL00930
TPL00940
TPL00950
TPL00960
TPL00970
TPL00980
TPL00990
TPL01000
TPL01010
TPL01020
TPL01030
TPL01040
TPL01050
TPL01060
TPL01070
TPL01080
TPL01090
TPL01100
TPL01110
TPL01120
TPL0U30
TPL01140
TPL01150
TPL01160
TPL01170
TPL01180
TPL01190
TPL01200
TPL01210
TPL01220
TPL01230
TPL01240
TPL01250
TPL01260
TPL01270
TPL01280
TPL01290
TPL01300
TPL01310
TPL01320
TPL01330
TPL01340
TPL01350
TPL01360
TPL01370
TPL01380
TPL01390
TPL01400
149
-------
3
4
5
6
7
8
9
366,365,365,365,
366,365,365,365,
366,365,365,365,
366,365,365,365,
366,365,365,365,
366,365,365,365,
366,365,365,365/
C
C
C
DATA IZPT/59/
SCREEN INPUT.
IF ((IYR .GT. 59) .AND. (IYR
WRITE(10,1000) IYR
GO TO 990
100 IF ((IJD .GT. 0) .AND. (IJD
WRITE(IO.IOIO) IJD
GO TO 996
LT. 100)) GO TO 100
,LT. 367)) GO TO 200
200 IF ((IHR -GT. 0) .AND.
WRITE(10.1020) IHR
GO TO 990
(IHR .LT. 25)) GO TO 300
C
C
C
C
C
C
300 NYR = IYR - IZPT
IF (IJD .LE. NDAY(NYR)) GO TO 400
WRITE(IO.1030) IJD,IYR
GO TO 990
CONVERT YEAR/JULIAN DAY/HOUR TO COMMON SEQUENTIAL HOUR.
400 IYDH = ICUM(NYR) + (IJD - 1) * 24 + IHR
GO TO 999
"ERROR PROCESSING.
990 IYDH = -999999
999 RETURN
FORMAT STATEMENTS.
1000 FORMAT('0*** YEAR INPUT
1010 FORMAT('0*»* JULIAN DAY
1 '1-366.')
1020 FORMAT('0*** HOUR INPUT
1030 FORMAT('0*** JULIAN DAY
END
12,'; THIS IS NOT A LEAP ^EAfi.')
('14,') IS NOT WITHIN RANGE OF 60-99.')
INPUT ( ,14,') IS NOT WITHIN RANGE OF ',
(',14,') IS NOT WITHIN RANGE OF 1-24.')
INPUT ('jJ4^CANNOT BE USED FOR YEAR '
TPL01410
TPL01420
TPL01430
TPL01440
TPL01450
TPL01460
TPL01470
TPL01480
TPL01490
TPL01500
TPL01510
TPL01520
TPL01530
TPL01540
TPL01550
TPL01560
TPL01570
TPL01580
TPL01590
TPL01600
TPL01610
TPL01620
TPL01630
TPL01640
TPL01650
TPL01660
TPL01670
TPL01680
TPL01690
TPL01700
TPL01710
TPL01720
TPL01730
TPL01740
TPL01750
TPL01760
TPL01770
TPL01780
TPL01790
TPL01800
TPL01810
TPL01820
TPL01830
TPL01840
TPL01850
TPL01860
TPL01870
TPLO1880
150
-------
APPENDIX D
INMET is a program that will allow creation of a meteorolog-
ical data file compatible with the input requirements of TUPOS.
This program would be of greatest use, when it is desirable to
create a file for a short period of record, such as, for just
several hours.
Data type 1 consists of the indentifiers to be used on the
header record on the meteorological file plus ND, the number of
lines of the description. Data type 2 is a line of alphanumeric
description of the met file. Lines of data type 2 are repeated
ND times in the run stream. The header record in the meteorolog-
ical file is created from type 1 and type 2 inputs.
Data type 3 contains values for six variables. The first
three are year, Julian day and hour. The fourth is the number of
levels in the vertical for which data will be furnished. The
fifth is the number of the level that corresponds to the mixing
height or the top of the nocturnal boundary layer height. The
sixth is the stability classification: 1 = unstable, 2 = daytime
neutral, 3 = nighttime neutral, and 4 = stable.
There is a data type 4 line of input for each of the number
of levels given in data type 3. A value is given for each of the.
following six or seven (see following) variables: height above
ground of the level, temperature for this height, wind direction
for this height, wind speed for this height, standard deviation of
wind azimuth angle, standard deviation of wind elevation angle,
and the change of potential temperature with height between this
level and the next.
151
-------
It should be noted that although the change of potential
temperature with height, 6 9/6z, is not a data parameter to be
placed in the meteorological file, it may be a parameter that
the user may want to adjust. Therefore, the user has the choice
of providing temperatures for each level, in which case, the
DTHDZ may be left off on the data input; or providing a tempera-
ture for only the lowest level and a value for 60/6z for that
level and each subsequent level except the last, and allowing the
temperatures for the data file to be calculated from the first
level temperature and the 60/6z for each layer. For the latter
case, zero is supplied for all temperatures except that for the
first level and 60/6Z is given in the input data for all but
the last layer.
152
-------
INMET (VERSION 85094)
A UTILITY PROCESSOR FOR TUPOS IN
SECTION 2. NON-GUIDELINE MODELS,
IN UNAMAP (VERSION 6) JUL 86.
SOURCE: UNAMAP FILE ON EPA'S UNIVAC 1110, RTP, NC
1
2
3
4
CREATE MET FILE.
PARAMETER (NLMAX = 20. NDMAX = 40)
DIMENSION ZL(NLMAX),TL(NLMAX), WDL(NLMAX),UL(NLMAX),SAL(NLMAX),
1 SEL(NLMAX).DTHDZ(NLMAX)
DIMENSION METNAM(2),DESC(18,NDMAX)
WRITE (6 1234)
1234 FORMAT ('121X,'INMET (VERSION 85094)'/
" 22X,'A UTILITY PROCESSOR FOR TUPOS IN'/
22X,'SECTION 2. NON-GUIDELINE MODELS,'/
22X, 'IN UNAMAP (VERSION 6) JUL 86.'/
22X) SOURCE: UNAMAP FILE ON EPAvyS UNIVAC 1110, RTP, NC. ')
C FIRST DATA LINE
C METNAM(2) AN 8 CHARACTER ALPHANUMERIC IDENTIFIER FOR THE MET
C DATA.
C MDATA DATE-TIME OF DATA CREATION, MO DAY YR (6 DIGITS)
C MDATB DATE-TIME OF DATA CREATION, HR MIN SEC ?6 DIGITS)
C ND NUMBER OF 72 CHARACTER ALPHANUMERIC LINES OF
C DESCRIPTION.
READ (5,1000) METNAM,MDATA,MDATB,ND
1000 FORMAT (2A4,2I6,I3)
DO 10 J = l.ND
C NEXT "ND* LINES.
C DESC DESCRIPTION OF MET DATA.
10 READ (5,1010) (DESC(I,J), I = 1,18)
1010 FORMAT (18A4)
C THE ABOVE INPUTS COMPLETES THE HEADER INFO.
WRITE (9) METNAM,MDATA.MDATB,ND,
1 ((DESCfI,J)
NREC = 0
C DATA TYPE
C MYR
C MJD
C MHR
C NLLIM
C LMX
C KLASS
I = 1,18)', J =' 1, ND)
YEAR (2 DIGITS)
JULIAN DAY (3 DIGITS)
HOUR (2 DIGITS)
NUMBER OF DATA LEVELS THIS HOUR
THE DATA LEVEL NUMBER OF THE MIXING HEIGHT
THE STABILITY CATEGORY FOR THIS HOUR
20 READ (5,1020,ERR=500,END=600) MYR,MJD,MHR,NLLIM,LMX,KLASS
1020 FORMAT ()
DO 30 L = 1,NLLIM
DATA TYPE 4 ("NLLIM" OF THESE)
ZL HEIGHT OF EACH LEVEL (METERS ABOVE GROUND)
TL TEMPERATURE (K) FOR EACH LEVEL
WDL WIND DIRECTION (DEGREES AZIMUTH, CLOCKWISE FROM
NORTH) FOR EACH LEVEL
UL WIND SPEED (M/SEC) FOR EACH LEVEL
SAL SIGMA-A STANDARD DEVIATION OF WIND AZIMUTH
(RADIANS) FOR EACH LEVEL
SEL SIGMA-E STANDARD DEVIATION OF WIND ELEVATION ANGLE
(RADIANS) FOR EACH LEVEL
DTHDZ D THETA/DZ FOR THE LAYER WHOSE BASE
IS AT THIS LEVEL.
DTHDZ SHOULD BE ENTERED AS ZERO IF YOU GAVE AN
ENTRY FOR TEMPERATURE, TL.
CAN OPTIONALLY INPUT ZERO FOR TL FOR SECOND AND
SUBSEQUENT LAYERS. THIS WILL HAVE THE EFFECT
OF CALCULATING THE TEMPERATURE FOR THAT HEIGHT
FROM THE FURNISHED D THETA/DZ FOR THE LAYER
WHOSE TOP IS AT THIS HEIGHT.
READ (5,1020,ERR=500,END=600) ZL(L),TL(L),WDL(L),UL(L),SAL(L),
1 SEL(L),DTHDZ(L)
IF (TL(L).EQ.O.) TL(L) = (DTHDZ(L-l) - 0.0098) * (ZL(L) - ZL(L-l)
1 + TL(L-l)
30 CONTINUE
WRITE (9) MYR,MJD,MHR,NLLIM,LMX,KLASS,
TPI00010
TPI00020
TPI00030
TPI00040
.TPI00050
TPI00060
TPI00070
TPI00080
TPI00090
TPI00100
TPI00110
TPI00120
TPI00130
TPI00140
TPI00150
TPIQ016Q
TPI00170
TPI00180
TPI00190
TPI00200
TPI00210
TPI00220
TPI00230
TPI00240
TPI00250
TPI00260
TPI00270
TPI00280
TPI00290
TPI00300
TPI00310
TPI00320
TPI00330
TPI00340
TPI00350
TPI00360
TPI00370
TPI00380
TPI00390
TPI00400
TPI00410
TPI00420
TPI00430
TPI00440
TPI00450
TPI00460
TPI00470
TPI00480
TPI00490
TPI00500
TPI00510
TPI00520
TPI00530
TPI00540
TPI00550
TPI00560
TPI00570
TPI00580
TPI00590
TPI00600
TPI00610
TPI00620
TPI00630
TPI00640
TPI00650
TPI00660
)TPI00670
TPI00680
TPI00690
TPI00700
153
-------
1 (ZL(I),TL(I),WDL(I),UL(I),SAL(I),SEL(I), I = 1,NLLIM) TPI00710
NREC = NREC + 1 TPI00720
GO TO 20 TPI00730
500 WRITE (6.1110) TPI00740
1110 FORMAT ( OSYSTEM ERROR ON READING MET DATA RECORD!') TPI00750
STOP TPI00760
600 WRITE (6.1030) NREC TPI00770
1030 FORMAT ('ONORMAL TERMINATION.14,' HOURLY RECORDS WRITTEN TO FILETPI00780
19.') TPI00790
STOP TPI00800
END TPI00810
C
C TEST INPUT FOR INMET PROVIDED BELOW WILL PRODUCE THE
C SAME DATA SET THAT CAN BE PRODUCED BY METVER WHICH
C CAN BE USED TO RUN THE TEST FOR TUPOS.
C
C DATA BEGINS ON NEXT LINE.
SET6 840210105523 5
SYNTHETIC DATA SET WITH HOURS MISSING AND DATA MISSING.
DATA AVAILABLE FOR HOURS: 15.16,17.21.22.23,02,03,04,07.08,09, AND 14.
NO DATA FOR HOURS: 18.19.20,24,01,05,06,10,11,12. AND 13.
HOUR 21 HAS ONLY 3 LEVELS. SOME TEMPERATURES ARE MISSING FOR HOUR 02.
VARIATION APPROXIMATES A CLEAR DAY AND NIGHT.
83,365.15,6,4,1
50.,293.5,263.,2.3,0.219,0.134,0.
100.,293.,265.,2.4,0.198,0.152,0.
200.,292.,268..2.5,0.178.0.172,0.
1500. ,285.5,270.,4.5.0.152.0.248.0.
1600.,287.5,272.,7.,0.130,0.251,0.
1800. .286.5,273.,8.,0.128,0.256,0.
83,365,16,6,4,1
50.,293.3,264.,2.26,0.209.0.123,0.
100.,293.,266.,2.4,0.189,6.134,0.
200.,293.,268.,2.5,0.164.0.142.0.
1500.,285.5,269.,4.5.0.138.0.161.0.
1600.,287.5,271.,7.,0.124,6.176,6.
1800.,286.5,273.,8.,0.107,0.183,0.
83,365,17,6,4,1
50.,293.1,265.,2.23.0.197.0.112,0.
100.,293.,267.,2.4,6.174,6.111,0.
200.,292.5,269.,2.5,0.158.0.110,0.
1500.,285.3,271.,4.5,0.142,0.108,0.
1600.,287.5,272.,7.,0.118,0.107,0.
1800..286.5,273.,8.,0.094,0.106,0.
83,365.21.6,2,4
50.,292.,258.,2.,0.132.0.091.0.
100.,292.,262.,2.2,0.Ill.0.078,0.
200.,291.8,265..2.5,0.092,0.064,0.
1000.,-999§.,-9999.,-9999.,-999§.,-9999.,0.
1200.,-9999.,-9999.,-9999.,-9999.,-9999.,0.
1400.,-9999.,-9999.,-9999.,-9999.,-9999.,0.
83,365.22,6,4,4
50.,291.5,256.,1.9.0.119.0.082,0.
100.,291.7,261.,2.13.0.059,0.069,0.
200.,291.8,263.,2.5,6.085,0.058,6.
1500.,285.5,270.,4.5,0.055,0.047,0.
1600.,287.5,272.,7.,0.048,6.041,0.
1800.,286.5,275.,8.,0.046,0.041,0.
83,365.23.6,4,4
50.,291.,254..1.8,0.105.0.070,0.
100.,291.3,266.,2.06.0.685.0.061.0.
200.,291.7,263.,2.5,6.070,6.053.6.
1500.,285.5,271.,4.5.0.037,0.045,0.
1600.,287.5,272.,7.,6.036,6.038,0.
1800.,286.5,273.,8.,0.035,0.032,0.
84,001,02,6,4,4
50. ,289.8,256.,1.5,0.079,0.052,0.
100.,290.,258..1.86,0.067,0.043,0.
200. ,-9999.,263.,2.5,0.056.0.038,0.
1500.,-9999.,272.,4.5,0.049,0.036,0.
154
-------
1600. ,287.5,271.,7.,0.038,0.031,0.
1800. .286.5,270.,8.,0.027,0.026,0.
84,001.03,6,4,4
50.,289.5,255.,1.4.0.075.0.046.0.
100.,289.7,258.,1.8,0.066,0.039,0-
200.,291.5.264.,2.5.0.050,0.035,0.
1500.,285.5,271.,4.5.0.041.0.031.0.
1600.,287.5,271.,7.,6.033,0.027,0.
1800..286.5,271.,8.,0.024,0.024,0.
84,001.04,6.4,4
50.,289.2,254.,1.32,0.069,0.041,0.
100. ,289.6,257.,1.76.0.058.0.036.0.
200.,291.5,262.,2.5,0.045,0.031,0.
1500.,285.5,269.,4.5.0.032.0.026.0.
1600.,287.5,270.,7.,0.027,0.022,0.
1800..286.5,272.,8.,0.021,0.020,0.
84,001.07,6,4,3
50.,288.7.252.,1.4,0.048.0.032,0.
100.,289.5,258.,1.8,0.039,0.028,0.
200.,291.5,265.,2.5,0.032,0.024,0.
1600.,286.5,271.,7.,0.017,0.016,0.
1800.,290.5,273.,8.,0.016,0.015,0.
2000..289.5,276.,9.,0.016,0.015,0.
84,001.08.6.4,3
50.,289.,253.,1.6,0.052,0.041,0.
100.,289.6,260.,1.9,0.043,0.038,0.
200.,291.5,266.,2.5,0.035,0.032,0.
1600.,285.5,270.,7.,0.026,0.023,0.
1800. ,289.5,272.,8.,0.024,0.018,0.
2000..288.5,274.,9.,0.022,0.017,0.
84,001,09,6,4,2
50.,289.9,255.,1.9,0.071,0.056,0.
100.,290..262.,2.1,0.061,0.048.0.
200.,291.5,267.,2.5,0.050,0.041,0.
1600.,284.S,271.,7.,0.040,0.034,0.
1800.,288.5,272.,8.,0.034,0.021,0.
2000..287.5,272.,9.,0.030,0.019,0.
84,001,14,6,4,1
50.,294.7.264.,2.3,0.205,0.129,0.
100.,294.1.266..2.4.0.194.0.149.0.
200.,293.,268.,2.5,0.175,0.168,0.
1600.,279.,269.,5.,0.132,0.228,0.
1800.,283.,271.,8.,0.130,0.234,0.
2000.,282..270.,9..0.127,0.241,0.
C DATA ENDS ON PREVIOUS LINE.
155
-------
Date
ChLef, Environmental Operations Branch
Meteorology and Assessment Division (MD-80)
U. S. Environmental Protection Agency
Resrch Tri Pk, NC 27711
I would like to receive future revisions to the "TUPOS User's
Guide."
Name
Organization
Address _
State _
Phone (Optional) (
)
Zip Code
-------
TECHNICAL REPORT DATA
(Please read Instructions on the reverse before completing)
1. REPORT NO. 2.
EPA/600/8-86/010
3. RECIPIENT'S ACCESSION NO.
M b £ i I 3 10 M
4. TITLE AND SUBTITLE
TUPOS — A MULTIPLE SOURCE GAUSSIAN DISPERSION
ALGORITHM USING ON-SITE TURBULENCE DATA
5. REPORT DATE
April 1986
6. PERFORMING ORGANIZATION CODE
7. AUTHOR(S) ] 2
D. Bruce Turner, Thomas Chico ,
and Joseph Catalancr
8. PERFORMING ORGANIZATION REPORT NO.
9. PERFORMING ORGANIZATION NAME AND ADDRESS
EPA/EOB/ASRL/MD Aerocomp, Inc.
RTP, NC 27711 Costa Mesa, CA 92626
10. PROGRAM ELEMENT NO.
CDTA1D/04 - 0275 (FY-86)
11. CONTRACT/GRANT NO.
EPA 68-02-3750
12. SPONSORING AGENCY NAME AND ADDRESS
Atmospheric Sciences Research Laboratory--RTP,NC
Office of Research and Development
U. S. Environmental Protection Agency
Research Triangle Park, NC 27711
13. TYPE OF REPORT AND PERIOD COVERED
Final
14. SPONSORING AGENCY COD6
EPA/600/09
is. supplementary notes
16. abstract TUPOS and its postprocessor, TUFUS-F, lorm a Gaussian model which resembles
MPTER but offers several technical improvements. TUPOS estimates dispersion directly
from fluctuation statistics at plume level and calculates plume rise and partial
penetration of the plume into stable layers using vertical profiles of wind and
temperature. The model user is thus required to furnish meteorological information
for several heights above-ground in a separate input file.
TUPOS can be used for short-term (hours to days) impact assessment of inert pol-
lutants from single or multiple sources and can be expected to have greatest accuracy
for locations within 10 km of the source. Although TUPOIS will make computations for
receptors having any ground-level elevation, it is not intended as a complex terrain
model, but rather as a model for calculations over flat or gently rolling terrain.
TUPOs will optionally treat buoyancy-induced dispersion but does not include building
downwash, deposition, or fumigation.^
The maximum number of point sources and the maximum number of receptor locations
are easily adjusted at the time of program compilation and so have no specific limit.
The program as listed in the appendix allows for 25 sources and 180 receptors.
Output from TUPOS consists principally of tape or disk concentration files which
are then analyzed and summarized by the postprocessor, TUPOS-P. An hourly concentra-
tion file is automatically created by TUPOS; the user has the option of creating a
partial concentration file.
17. KEY WORDS AND DOCUMENT ANALYSIS
a. DESCRIPTORS
b.IDENTIFIERS/OPEN ENDED TERMS
c. COSATi Field/Group
18. DISTRIBUTION STATEMENT
RELEASE TO PUBLIC
19. SECURITY CLASS (This Report)
UNCLASSIFIED
21. NO- OF PAGES
17 Q
20. SECURITY CLASS /This page)
UNCLASSIFIED
22. PRICE
EPA Form 2220-1 (Rav. 4-77) previous edition is obsolete
i
------- |