-------
142
10
TTPB or COUBCB TBBJU
AXB - roim
HATH •ODTIIIII COHlZOIUDi
- LAKI IIA8 IOOBCBI
- Bivn (BAi lonen
- ISTBABT IBM (OnCBI
- OCBAB IBM lOOBCl)
BPVBB loit, - mm
BiooLB SOIL - BOBB
LOWH IOZL - BOMB
QBOOBArBXC BBBZOB - CLXB*OB.BAII.(*0 TB AVBBA6BP DATA fOB TUT OKITI
BMBXTOBB OF lOmCBIII
OCT mat BBC JAB FBI BAB AIB BAT JOB JOT. A08 ft*
AIB
(KO/SBC)
TBAB 1 2.201-0) 2.201-01 2.201-09 2.201-01 2.201-01 2.201-01 2.201-01 2.201-01 2.201-01 2.201-01 2.20B-01 2.20B-01
(EG/BBC)
TBAB 1 1.001-02 1.00B-02 1.00B-02 1.00B-02 1.001-02 1.00B-02 1.00B-02 1.00B-02 1.001-02 1.001-02 1.001-02 1.00B-02
BIVBB
IKG/IBCI
TBAB 1 1.00B-OI 1.00B-02 1.00B-02 1.001-02 1.001-01 1.00B-02 1.00B-OI 1.00B-02 1.001-02 1.001-02 (.001-02 1.00B-01
IBTDABT
IXB/1BC)
TBAB 1 1.00B-02 1.00B-02 1.00B-02 1.001-02 1.001-02 1.00B-02 1.00B-02 1.00B-02 1.00B-02 1.001-02 1.00B-02 1.00B-02
I(a/B**!l
TBAB 1 1.00B-02 1.00B-02 1.00B-02 1.001-02 1.001-02 1.00B-02 1.00B-02 1.00B-02 1.00B-02 1.00B-02 1.001-02 1.00B-02
-------
143
FOR14.DAT
iBATXOM AMD XMTDACTXOB
ntm ion xi A uu
conjuuuTn um unrxci AOAI n •••» - i.7ioi«o«
COKAUBAm IOIL AUA HIT •ORI! n •••> . f.(lll*OI
TIAI i
OCT
COM HUIKUM ui anwui AXI «*i nvnuu «u tone w uioum mm MIL noau IOXL um ion
t>a/ifii i iMi-oi i.ixfoi •.»i«>oi o.oewrti l.lfii-ci I.MII*OI •.«j»i»oi o.oooi-oo
oir a* ton TOUT urn raun ion mr mmarr awn marr IUILOU
7.»i(«ii e.oi»«oo
CMCI wnmi k» AVOUOI A» u* mtui, ut IOBIC UT uiatus gFrn «oii MXDBU n» um ion ummixai
UTM Dt» a Mta M» OB I0» TOUT UTD TOUT IOH IB** MBO** «MWI» >nO*r WAMLOU
>.oog**oo
-------
144
FOR15.DAT
COBTMUWTn «*B KUIPACI AUA) II •••! . 0. 1001*01
comuiziunp ioi> AUA cm onmi 11 •••! - 1.0111*00
raAi i
OCT
COHC< HAximm AII ATUAOI AII WAT ironuu. «AT lone «A* ADOOUD mm ton. nom ten Lom ran uiairnoioi
IDG/It**!! 1.1011*01 1.0111*01 II- 1 1.1011*01 0.0001*00 1 0711-01 0.1111*01 l.(IOI.O) 0.0001*00 0.0001*00
ii- a 1.1x1.01 0.0001*00 1.0111-01
Zl- 1 1 1111*01 0 0001*00 1.7711-01
RATH an am •AH* DIP o» (OIL TOLA? •A*n TOUT lozi. ODiF morp oawn imarr *AHUAD
cuB/mHi i 0101*11 a. 1011.11 i mi.il 0.1011*10 o.0101*01 0.0001*00 I.OOOI.OT
•IP
cowl Human AII ATOJBAII AIR WAT urmuu. TOT tone HAT AOIOUIB mm 1011, unu IOIL Lawn OOIL uoDomoiai
C1IG/M**]! 1.1011*01 1.1111*01 Zl- 1 a.1011*01 0.0001*00 a.0711-01 1.0111*00 I.10«l*01 0.0001*00 0 0001*00
IR- a i.KOI.01 0.0001*00 a.0101-01
Zl- 1 1.101*01 0.0001*00 1.7011-01
RATH oir am urn u» o> IOZL TOIAT «ATD rauw IBZL mw inoopr oiwn io»or» WAIHOAP
1 1111*11 1.0001*11 1.llll.11 1.0911*11 0.0001*00 0.0001*00 «.lt«1.07
-------
145
FOR16.DAT
X II DtfTMCI mi
•••a - i.7soi*oo
I n «••! - 0.1701*07
•ATM on> am «*m
•.010*00 X- 0
x- oaio
x- -oaio
X- IIf00
DXF 0> MIL
o.»7i*ia
u une
.0001*00
.0001*00
.0001*00
.0001*00
.aui*oa 0.0001*00
«QL*> nia TCLAI OOIL su*w umorr
l.01»*11 1.0071*09
1.1JTI*0<
1.1001-01
0.1171*00
1.SOOI-01
•irau (OIL ton* OOIL
1.1111*03 0.0001*00
on
comet
i»*oi 0.0001*00
x- -oaio >.oiii*oa 0.0001*00
x> uioo uTOOKOO 0.0001*00
x—i»oo i.otn*oa 0.0001*00
DX* tm IOIL *au* nn« TOLA* MIL
i.oiion a.0011*11 t.oi7i*ii
oran MIL
i.»ai*oo
Biau OOIL
o.oi»*oi
LOVD OOIL
0.0001*00
uontnoiot
0.0001*00
-------
146
FOR17.DAT
MONTHLY POLLUTANT CONCENTRATIONS
HATER BODY IS AN OCEAN
X IS DISTANCE FROM SOURCE IN METERS
YEAR 1
CONCENTRATIONS (UG/M**3)
OCT
X=
x=
x=
0.50E+03
0.10B+04
0.15E+04
HATER (NEUTRAL)
3.816E+06
1.856E+06
1.108E+06
HATER (IONIC)
O.OOOE+00
O.OOOE+00
O.OOOE+00
HATER (ADSORBED)
1.431B+03
6.959B+02
4.156E+02
SEP
X= 0.50E+03 3.816E+06
X= 0.10E+OU 1.8S6B+06
X= 0.15E+04 1.108E+06
O.OOOE+00
O.OOOE+00
O.OOOE+00
1.Q31E+03
6.959B+02
4.156E+02
-------
147
FOR19.DAT
NOD OUUB iiMCcamunai ma
UT"-1
Ml
ton am tw
1.0001*01
•.0001-01
1 .9001*01
1.9001-01
1.0001*01
1.1001*01
I - 0. 1001*00
I - 1.0011*00
> COKBRBAIIOal !• AOOATZC OMMIOI .
fOIt-XIl OtTIGM
UT
jm
JUL
Ana
ID
xguTic
1.1191-01
l.t171-01
1.1101-01
1.1101-01
i.iaoi-oi
1.1111-01
1.1111-01
1.1171-01
1.1111-01
1.1101-01
1.1171-01
1.1101-01
1.0101*01
1.1711*01
1.1001*01
1.1111*01
1.1171*01
1.10»*01
1.1111*01
1.1001*01
1.1101*01
1.1101*01
1.1001*01
1.1101*01
.OMI-01
.0(01-01
.0111-01
-0<»-01
.0001-01
. 0101-01
.0001-01
.0001-01
.0101-01
.0001-01
.0001-01
.OOOB-01
.1001*01
.0011*01
.0001*01
.0011*01
.0001*01
. 0001*01
.0111*01
.0900*01
.0071*01
.1071*01
.0901*01
.0011*01
.1101-01
.1111-01
.1101-01
.1101-01
.1101-01
.1101-01
.1101-01
.1111-01
.1101-01
.1101-01
.1110-01
.1101-01
.0901*01
.•••0*01
.0101*01
.7101*01
7011*01
.7111*01
.7711*01
.7101*01
.7711*01
7001*01
.7111*01
.7701*01
•40ATIC
.0111*01
.0111*01
.0111*01
.0111*01
.0111*01
.0111*01
0111*01
.om>oi
0111*01
0111*01
0111*01
.0001.00
.0001*00
0001*00
.0001-00
.0001*00
.0001*00
0000*00
0001*00
.0001*00
0001*00
.0001*00
.0001*00
-------
148
• CAUTION
NO CONFIDBNCB SHOULD BB PLACBD IN THE NBTHODS USBD TO CALCULATE
CONCENTRATION IN AQUATIC ORGANISMS OR IN TERRESTRIAL PLANTS VIA ROOT
UPTAKE, OR TO EVALUATE BIOACCUMULATION POTENTIAL IN TERRESTRIAL ANIMALS, IP:
1) THB COMPOUND IS A COVALENTLY BONDING COMPOUND,
2) THB COMPOUND IS APPRBCIABLY DBGRADBD IN THB BIOTIC PHASB,
3) THB DOMINANT CONCENTRATING PHASB IN THB ORGANISM IS NOT A LIPID,
4 > THB ROW EQUALS OR BXCBBDS 1.OB+6, OR IP
5) THB CALCULATED BCP VALUE IS BBLON 10.
IT SHOULD FURTHER BB RECOGNIZED THAT THB METHOD IS NOT ABSOLUTS
BECAUSE STBRIC PROPERTIES AND SIZE OP THB CHEMICAL COMPOUND. IN ADDITION
TO LIPOPHILICITY, AFFBCT THB PRBDICTBD ACCUMULATION IM TISSUES.
ALSO, A POSSIBLY SIGNIFICANT DEGREE OF UNCERTAINTY SHOULD
BB ATTACHED TO ESTIMATED CONCENTRATIONS FOR ANY ONB ORGANISM
DUB TO DIFFERENCES IN FRACTIONAL LIPID COMPOSITION.
-------
APPENDIX E
LISTING OF TOX-SCREEN (INCLUDES SESOIL PORTION WHICH
HAS BEEN ADAPTED)
149
-------
The MAIN program is listed first followed by the TOX-SCREEN
routines in alphabetical order. These routines are then followed by
the SESOIL routines (in alphabetical order) which have been adapted
for TOX-SCREEN. Finally, a listing of the general purpose integrator
package D01AJF is included at the end of this appendix.
151
-------
152
C
C TOX-SCREEN
C MULTIMEDIA SCREENING-LEVEL MODEL
C D.M. HBTRZCK AND L.M. MCDOWELL-BOYBR
C OAK RIDGE NATIONAL LABORATORY
C JULY, 1982
C DEVELOPED TO ASSESS THE POTENTIAL FOR ENVIRONMENTAL ACCUMULATION OP
C CHEMICALS RELEASED TO AIR, SURFACE WATER, OR SOIL. SOIL MODEL SBSOIL
C (BONAZOUNTAS AND WAGNER, 1981 PROM A.D. LITTLE) WAS ADAPTED POR THIS
C MODEL. THIS PROGRAM WAS DEVELOPED AT THE REQUEST OP THE U.S.
C ENVIRONMENTAL PROTECTION AGENCY.
C
C SESOIL-82 (MAIN PROGRAM)
C
REAL NUT1.LOAD
COMMON /TI/ TITLES(5,12)
COMMON /EX/ JRUN,LEVEL,JRB,JSO,JCH,JNUT,JAPPL,JYRS
COMMON /HYM/ CLIMM1(6,12,10),CLIMM2(6,12,10),CLIMM3(12,10)
COMMON /NU/ NUTK6)
COMMON /SO/ SOIL1(6).SOIL2(6)
COMMON /CH/ CHBM1(18)
COMMON /AP/ GBOM(20).LOAD(6),RUNLO(6),RUNM1 (10,12),RUNM2MO, 12)
COMMON /HB/ HYDBAL(13,10)
COMMON /PI/ IOR.IOW,IGB,ILO,IL1,IL2,IL3
REAL LIGU,LIGM,LIGL,IA
COMMON /LBV2/PCONC(13,15,3),THM,LIGU,LIGL,LIGM
COMMON /HYR/ THA, PA, IA,BTA,RSA,RGA,YA.GZ,SIGMA,FGAM,G,XI
COMMON/CAVPAR/HBPFIV,XMAX,HMIXZ,U,VG,UDPW,DBPPAC
COMMON/MBDIA/AWMINR,AWMOUR,WAMOUR(20),AWMINL,AWMOUL,
WAMOUL,SWMINL,SWMINR,AWMINB,AWMOUB,SWMINE,WAMOUB,
SAMOUL,ASMIDL,ASMIWL,SAMOUR,ASMIDR,ASMIWR,SAMOUB,
ASMIDB,ASMIWB,ASMOWL,ASMODL,ASMODR,ASMOWR,
ASMODB,ASMOWB,SWMOUL,SWMOUR,SWMOUB,CUMLKB,
CLMLKB,CUMRIV,CLMRIV,CUMBST,CLMBST,ASMODS,ASMOWS,
ASMIDS,ASMIWS,SAMOUS,CUMS.CLMS,SUMLKB,SLMLKB,CUSALK,
CLSALK,LIGCUL,LIGCLL,SUMRIV,SLMRIV,CUSARV,CLSARV,
LIGCUR,LIGCLR,SUMBST,SLMBST,CUSABS,CLSABS,LIGCUB,
LIGCLB,SUMS,SLMS,CUSAS,CLSAS,LIGCUS,LIGCLS,CMMLKB,
CMMRIV,CMMBST,CMMS,SMMLKB.SMMRIV,SMMBST.SMMS,
CMSALK,CMSARV.CMSABS,CMSAS,LIGCML,LIGCMR,LIGCME,
LIGCMS
COMMON/WPARL/WVBLL(12,10),WMINL(12.10),WMTLKB,ARBALK,
t WDBPL.WVOLL
COMMON/WPARR/WVELR(12,10),WMINR(12,10),WMTRIV(20),
$ NR,WWIDR,WLENR,WDBPR,WVOLR.HMTOLD,ARBAR
COMMON/FLAGS/AIRPLG.AIRPOL,TRICON,LAKE,RIVER,
$ ESTU,OCEAN,SBDRIV,SBDLKB,DISPLG,CHMFLG.WATBOD
DATA YES/4H YES/
C
C FILE NUMBERS
C
IGB=1
IL3=2
IOR=5
IOW=6
-------
153
C
C RUN FOR BACH EXECUTION CARD
C
10 CONTINUE
C
C INITIALIZE ARRAYS
C
C
DO 8 1=1,6
DO 8 J=1,12
DO 8 K=1,10
CLIMM1 JRUN,LEVEL,JRB,JSO,JCH,JNUT.JAPPL,JYRS
904 FORMATC8I5)
C
C IP LAST CARD, GO TO END
C
IF(JRUN .GB. 999)GO TO 999
C
C OTHERWISE EXECUTE RUN
C
C READ DATA FOR ONB RUN AT A TIME
C
CALL RFILB
CALL RBADIN
IF(RIVBR.NE.YBS)GO TO 20
-------
154
C
C INITIALIZE VARIABLES FOR BACH WATER BODY TYPE (VOLATILIZATION TERMS,
C DEPOSITION TERMS, ETC.)
C
DO 30 1=1,NR
HAMOUR(I)=0.0
30 WMTRIVd )=0. 0
20 WMTLKE=0.0
WMTOLD=0.0
WAMOUL=0.0
ANMOUL=0.0
AWMOUR=0.0
WAMOUE=0.0
AVmOUE=0. 0
ASMOWL=0.0
ASMODL=0.0
SAMOUL=0.0
SAMOUR=0.0
ASMODR=0.0
ASMOWR=0.0
SAMOUE=0.0
ASMODB=0.0
ASMOWB=0.0
SWMOUL=0.0
SWMOUR=0.0
SWMOUB=0.0
CUMLKB=0.0
CLMLKE=0.0
CUMRIV=0.0
CLMRIV=0.0
CUMBST=0.0
CLMEST=0.0
CUMS=0.0
CLMS=0.0
ASMODS=0.0
ASMOWS=0.0
SAMOUS=0.0
SUMLKB=0.0
SLMLKB=0.0
CUSALK=0.0
CLSALK=0.0
LIGCUL=0.0
LIGCLL=0.0
SUMRIV=0.0
SLMRIV=0.0
CUSARV=0.0
CLSARV=0.0
LIGCUR=0.0
LIGCLR=0.0
SUMBST=0.0
SLMBST=0.0
CUSAES=0.0
CLSABS=0.0
-------
155
LZ6CUB=0.0
LIGCLB=0.0
SUMS=0.0
SLMS=0.0
CUSAS=0.0
CLSAS=0.0
LIGCUS=0.0
LZGCLS=0.0
CMMLKB=0.0
CKMRZV=0.0
CMMBST=0.0
CMMS=0.0
SMMLKB=0.0
SMMRZV=0.0
SMMBST=0.0
SMHS=0.0
CMSALK=0.0
CMSARV=0.0
CMSABS=0.0
CMSAS=0.0
LZGCML=0.0
LIGCMR=0.0
LIGCME=0.0
LZGCMS=0.0
C
C CALL ROUTINES FOR BXBCUTZON LBVBL
C
IP(LBVBL .BQ.3)CALL LBVBL3
C
C END OP EXECUTION -STOP
C
999 STOP
END
-------
156
SUBROUTINE AIR(IHON,IYR,ZSTBP,NSTBPS,DT)
COMMON/MEDIA/AWMINR,AHMOUR,WAMOUR(20),AHMZNL,AWMOUL,
$ WAMOUL,SWMZNL,SWHIMR,AHHZNE,AWMOUB,SHMZNB,WAHOUB,
I SAMOUL,ASMZDL,ASMZHL,SAMOUR,ASMZDR,ASMIWR,SAMOUE,
$ ASMIDE,ASMZWB,ASMOWL,ASMODL,ASMODR,ASMOHR,
$ ASMODE,ASMOWE,SWMOUL,SWMOUR,SHMOUB,CUMLKB.
$ CLMLKE,CUMRZV,CLMRZV,CUMEST,CLHBST,ASMODS,ASMOWS,
t ASMZDS,ASMZWS,SAMOUS,CUMS,CLMS,SUMLKB,SLMLKB,CUSALK,
$ CLSALK,LZGCUL,LZ6CLL,SUMRZV,SLMRZV,CUSARV,CLSARV,
t LZGCUR,LZGCLR,SUMBST.SLMEST,CUSABS,CLSABS,LZGCUB,
$ LZGCLE.SUMS,SLMS,CUSAS,CLSAS,LZGCUS,LZGCLS,CMMLKB,
$ CMMRZV,CMMBST,CMMS,SMHLKB.SMMRZV,SMMBST,SMMS.
$ CMSALK,CMSARV,CMSABS,CMSAS,LZGCML,LIGCMR,LZGCMB,
$ LZGCMS
COMMON/FLAGS/AZRFLG, AZRPOL,TRZCON,LAKE.RZVBR,
$ BSTU,OCEAN,SBDRZV,SBDLKB,OZSFLG,CHMFLG,WATBOD
COMMON/ALPHAS/AIL.A2L,A3L,A1R,A2R,A3R,A1B,A2B,A3B,
$ A10.A2O.A3O
COMMON/AZRPAR/QS(12,10),UW(12,10),HMZX(12,10),CTYLTH,
$ UDG,UDP,HRATG.HRATP,AK,HS,VS,SRAD,RHO,ENTPY
COMMON/WPARL/WVELL(12,10),HMZNL(12,10),WMTLKE,ARBALK,
$ WDEPL.HVOLL
COMMON/WPARR/WVELR(12,10),WMINR(12,10),HMTRZV(20 >,
$ NR,WWZDR,WLENR-,WDBPR,WVOLR,WMTOLD,ARBAR
COMMON/WPARB/WVELE(12,10),WMZNE(12,10),TZDMAX,EL,HWZDB,
$ NLENB,WDBPE,NPTSE,ARBAB
COMMON/CAVPAR/HBFPZV,XMAX.HMIXZ,U,VG,UDPW,DBPFAC
COMMON/SPARS/ARS.AREAS,XLBNS
COMMON/SPARL/ARL,ARBASL,XSOZL
COMMON/SPARR/ARR,AREASR
COMMON/SPARE/ARE.AREASB
COMMON /AP/ GEOM(20),LOAD(6),RUNLO(6),RUNM1(10,12).RUNM2(10,12)
COMMON /HB/ HYDBAL(13,10)
COMMON/OUT/ACMAXL,AVAIRL,AVAZRR,AVAZRB.AWDEPL,AWDBPR.AHDBPB,
$ ASDEPL,ASDBPR,ASDBPE,WVOLAL.HVOLAR,HVOLAB,SVOLAL.
$ SVOLAR,SVOLAE,SWSURL,SWSURR,SWSURB,SWGRWL,SWGRHR,
$ SHGRWB,SCONUL,SCONUR,SCONUB,SCONLL,SCONLR.SCONLB,
$ CONL1,CONL2,CONL3,CONR1(20),CONR2(20),CONR3(20),
$ CNCBD1(11),CNCBD2(11),CNCBO3(11),CNCBU1(11),CNCBU2(11),
$ CNCEU3(11),XESTY(11).CON01(10),CON02(10),CON03(10),
$ RESUSB,WASHL,HASHR,WASHB,ACMAXR,ACMAXB,ACMAXS,
$ AVAZRS,ASOBPS,SVOLAS.SWGRWS,SCONUS,SCONLS.RBSUSS,
$ RBSUSL,RESUSR,SCONML,SCONMR,SCONME,SCONMS,SWSURS,
$ WASHS.ARBAK3)
REAL NONE.LAKE,NO
DZMBNSZON HBFFC18),XMXBFF(18),HORK(800),ZWORK(102)
EXTERNAL CAVGB
EXTERNAL DBPAVG
DATA HEFF/7.,8.,10.,15.,20.,30.,40.,50.,60.,70 . ,
$ 100., 150. ,200. ,250. ,300. ,350. ,400. .450./
C
C DATA ZN XMXBFP ARB LN (f'S) ZN GRAPH ZN DOCUMENT (HBFF AND XMXEFF
C ARB USED ZN COMPUTZNG XMAX AND HEFFZV BELOW)
C
DATA XMXBFF/-2.254,-2.096,-1.833.-1.374.-1.050.-.58.
$ -.248,.02,.30,.604,1.065,1.723,2.197,2.565,2.862,
-------
157
S 3.157,3.434.3.75/
DATA EPS/1.O/
DATA AREA/4HAREA/,GAS/4H GAS/.YBS/4H YES/.POINT/4HPOZN/
DATA NONB/4HNONE/,PI/3.1 415927/.NO/4H NO/
C
IWP=13
MOH=ZMON
IPdSTEP.GT.1 )GO TO 225
IP(AIRFLG.EQ.NONE)GO TO 140
ZF(AZRFLG.BQ.AREA)GO TO 5
ZP(AZRPLG.BQ.POZMT)GO TO 10
C
C AREA SOURCE
C QS ZS MONTHLY SOURCE STRENGTH (KG/S), CTYLTH ZS LENGTH OF
C URBAN AREA (M), UW ZS HZND SPEED (M/S), AK ZS AZR CHBHZCAL
C RATE CONSTANT (S**-1)
C
5 DBDGE=0.5*CTYLTH
C=SQRT(2.0/PZ)*DBDGB**.25/0.0375
ACMAX=C*QS(MON,ZYR)/(CTYLTH*CTYLTH*UW(HON,ZYR))
ZP(AK.EQ.O.O)GO TO 150
ACMAX=ACMAX*EXP(-DBDGB*AK/UW(HON,ZYR))
GO TO 150
C
C POZNT SOURCE
C F ZS HEAT FLUX (M**4/S**3), UW WZND SPEED (M/S), HS STACK HBZGHT (M)
C QS ZS MONTHLY SOURCE STRENGTH (KG/S)
C
10 CONTZNUE
C
C QH ZS ZN WATTS (JOULES/SBC), 4.184 CONVERTS TO CAL/SEC NEEDED ZN
C F BELOW. THE FOLLOWZNG ZS USED TO COMPUTE XMAX AND HBFFZV (DBFZNBD BBLOW)
C
ZP(RHO.EQ.O.O.OR.ENTPY.EQ.O.O)GO TO 20
QH=VS*PZ*SRAD*SRAD*RHO*ENTPY/4.184
P=3.7B-5*QH
GO TO 23
20 F=G*VS*SRAD*SRAD
23 CONTZNUE
PP=F»*0.4
ZP(HS.GT.300.0)XSTAR=67.31*FP
ZP(HS.LB.300.0)XSTAR=2.164*FP*(HS**0.6)
FDUW=1.60*(F**0.3333333)/UW(MON,ZYR)
XMAX=5.6
HOLD=150.0
25 XMAX=XMAX*1000.0
DH=FDUW*XMAX**0.6666667
ZP(XSTAR.EQ.O.O)GO TO 30
XMXDXS=XMAX/XSTAR
ZP(XMXDXS.GT.1.0)DH=PDUW»(XSTAR**0.6666667)*(0.4+0.64*XMXDXS+
$ 2.2*XMXDXS*XMXDXS)/(1.0+0.8*XMXDXS)**2
C
C HSPDH ZS BFPBCTZVB STACK HBZGHT; ASSUME 7.LB.HSPDH.LB.450 METERS
C
30 HSPDH=HS+DH
ZP(ABS(HSPDH-HOLD).LT.BPS)GO TO 100
-------
158
HOLD=HSPDH
IP(HOLD.LT.HBFP<1 »GO TO 60
DO 50 1=1,17
50 IF(HOLD.GB.HBPP(Z).AND.HOLD.LT.HBPF(X+1))GO TO 75
XMAX=BXP(XHXBFF(18))
J=18
GO TO 25
60 J=1
XMAX=BXP(XMXBFF(1))
GO TO 25
7 5 DBLTA=(HOLD-HBFF(!))/(HBFF(1+1)-HBFF(I))
XMAX=BXP(XMXBFF(I)+(XMXBFF(I+1)-XMXBFF(Z))*DELTA)
J=I
GO TO 25
100 IF((J.BQ.18).OR.(J.BQ.1.AND.HOLD.LT.HBPF(1)))GO TO 110
GO TO 130
110 CONTINUE
WRITE(IHP,125)
125 FORMAT(1X,'WARNING IN AIR : HBFF OUTSIDE THB BOUNDS OF AVAILABLE D
SATA; CODE USED DATA AT BNDPOINT FOR XMAX ')
130 HBFFIV=HOLD
C
C XMAX IS X MAXIMUM (M) - DISTANCE TO POINT OF MAXIMUM CONCENTRATION. HBFFIV
C IS EFFECTIVE STACK HEIGHT (M).
C
140 ACMAX=0.0
C
C PM IS MONTHLY PRECIPITATION IN CM/MON; CONVERT TO M/SBC.
C
150 PM=HYDBAL(MON,2)*3.8580247B-9
C
C UWG IS WET DEPOSITION VELOCITY FOR GASES, ALWAYS NEEDED FOR
C VOLATILIZATION CALCULATIONS BELOW.
C
UWG=WRATG*PM
IF(AIRFLG.EQ.NONB)GO TO 225
UD=UDG
UWBT=UHG
IF(AIRPOL.BQ.GAS)GO TO 160
UD=UDP
UWBT=WRATP*PM
160 IF(AIRFLG.BQ.AREA)GO TO 225
C
C UD I UWET ARB DRY i WET DEPOSITION VELOCITIES FOR POLLUTANT FROM STACK
C
UDPW=UD+UWET
C
C SET PARAMETERS FOR QUADRATURE ROUTINE D01AJF
C
BPSRBL=1.OB-4
BPSABS=0.0
ABSBRR=0.0
IFAIL=0
HMIXZ=HMIX(MON,IYR)
U=UW(MON,IYR)
CALL DO1AJP(DEPAVG.100.0,XMAX,BPSABS,BPSRBL,DBPFAC,ABSERR,WORK,
-------
159
$ 800,IWORK,102,IFAIL)
C
C WRITE ERROR MESSAGE IF ZFAZL .NB. 0.
C
IF(ZFAIL.EQ.O)GO TO 170
WRZTE(ZWP,165)IFAZL
165 FORMAT(1X,'PROBLEM WITH D01AJF CALL ZN AZR, QP CALCULATZON, ZFAZL
$= ,'Z3)
170 CONTINUE
VBLFAC=-SQRT(2.0/PZ)*UOPH/U
C
C QP IS DEPLETED SOURCE TERM AMD ZS USED BELOW.
C
QP=QS(MON,ZYR)*BXP(VBLFAC*DBPFAC-AK*XMAX/U)
SZGHAY=0.08*XMAX/SQRT(1.0+0.0001*XMAX>
SZGHAZ=0.06*XMAX/SQRT(1.0+0.0015*XMAX)
SIGZMX=2.0*(HMIXZ-HBFPIV)/2. 1 5
C
C CHECK IF SZGZMX < 0.0 AND WRZTB ERROR MESSAGE ZF ZT ZS.
C
IF(SZGZMX.GT.O.O)GO TO 190
WRITE(IWP,175)MON.ZYR
175 FORMAT(1X,'ERROR ZN AZR: MZXZNG HBZGHT .LT. BFFBCTZVE STACK HBZGHT
$ - SZGMA SUB Z .LT. 0.0 - ZNCREASE MZXYNG HBZGHT FOR MONTH',13,
$' YEAR1,13)
STOP
190 CONTZNUB
ZF(SZGMAZ.GT.SZGZMX)SZGMAZ=SZGZMX
C
C COMPUTE MAXIMUM CONCENTRATION FOR POZNT SOURCE
C
ACMAX=QP*BXP(-0.5*((HBFFZV-VG*XMAX/U)/SZGMAZ)**2)/
$ (PZ*SZGMAY*SZGMAZ*U)
225 IF(WATBOD.BQ.NO)GO TO 700
C
C
IF(LAKE.NE.YES)GO TO 250
C
C CALCULATE CONCENTRATION IN AIR FROM LAKE AND SOIL VOLATILIZATION
C
IF(AZ RFLG.BQ.AREA)ARL=(CTYLTH«CTYLTH-ARBALK)*10 0 0 0.0
C
C WAMOUL = WATER TO AZR VOLATZLZZATZON, SAMOUL = SOZL TO AIR VOLATILZZATZON
C FOR LAKE.
C
WSAMIN=WAMOUL+SAMOUL
ARBAT=ARBALK+ARL*.0001
DBDGB=0.5 * SQRT(ARBAT)
C=SQRT(2.0/PI)*DBDGB**0.25/0.0375
WSACON=C*WSAMIN/(ARBAT*UW(MON,IYR))
IF(AK.BQ.O.O)GO TO 230
WSACON=WSACON*BXP(-DBDGB*AK/UW(MON,IYR))
230 CONTINUE
C
C CALCULATE WET (FWLAKB) « DRY (FDLAKB) DEPOSITION
C
-------
160
ASMIDL=ASMODL
ASMIWL=ASMOWL
AWMINL=AWMOUL
FDLAKB=WSACON*UDG
FHLAKB=WSACON*UWG
AWMOUL=FDLAKB+FWLAKB
C
C DEPOSITION RATE INTO LAKE AND ONTO SOIL ARE THE SAME; HOWEVER
C THE AREAS THIS RATE GOES INTO ARE DIFFERENT
C
ASHODL=FDLAKE
ASMOWL=FWLAKE
IF(ARL.NE.O.O)GO TO 231
ASHODL=0.
ASMOWL=0.
231 CONTINUE
C
AWMOUL=AWMOUL*AREALK
IF(AIRFLG.BQ.NONB)GO TO 243
IF(AIRFLG.EQ.AREA>GO TO 240
AROLD=ARL*0.0001
ARL=ARBASL*10000.0
C
C ARL IS PLUME SURFACE AREA OVER SOIL NEXT TO LAKE (IN CM**2) TO BE
C TRANSFERRED TO SBSOIL.
C
IF(ACMAX.EQ.O.O) GO TO 245
IFdSTBP.GT.1 ) GO TO 236
C
C CONST = 2.0*0.08 ; CALCULATION OF AREAS BELOW INCLUDES 2 SIGMAY'S
C ON EITHER SIDE OF PLUME CENTERLINB.
C
CONST=0.16
C
C CALCULATE SIGMA SUB Y'S
C
SIGY1=CONST*XMAX/SQRT(1.0 + 0.0001 *XMAX)
WLBNL=SQRT(ARBALK)
XMXPLK=XMAX+WLBNL
SIGY2=CONST*XMXPLK/SQRT(1.0+0.0001*XMXPLK>
XMXPLS=XMXPLK+XSOIL
SIGY3=CONST*XMXPLS/SQRT(1.0+0.0001*XMXPLS >
C
C FIND AREA OF PLUMB OVER LAKE ARBAPL AND SOIL ARBAPS USING
C TWO TRAPBZOIDS FOR EACH.
C
ARBAPL=(SIGY1+SIGY2)*WLBNL
AREAPS=(SIGY2+SIGY3)*XSOIL
ARPLLK=AREALK
IF(ARBAPL.LB.ARBALK) ARPLLK=ARBAPL
IF(ARBAPL.GT.ARBALK) AREAPS=ARBAPS+(ARBAPL-ARBALK)
ARBASL=ARBAPS
C
C CALCULATE CONCENTRATIONS AND DEPOSITIONS DUB TO AIR POINT SOURCE
C
IFAIL=0
-------
161
C
C CALCULATE AVERAGE CONCENTRATION OVER LAKE AVCONL FROM POINT SOURCE
C 1ST FIND DEPLETION FACTOR (DEPFAC) FROM XMAX TO XMXPLK
C
CALL D01AJF(DEPAVG,XMAX,XMXPLK,BPSABS,BPSRBL,DEPPAC,ABSBRR,WORK.
$ 800,IWORK,102,IFAIL>
C
C WRITE ERROR MESSAGE IF IFAIL NOT EQUAL TO 0
C
IF(IFAIL.EQ.O)GO TO 265
WRITE(IWP,260)IFAIL
260 FORMATMX.'PROBLEM WITH D01AJF CALL IN AIR, LAKE SECTION, IFAIL =
$',13)
STOP
265 CONTINUE
IFAIL=0
CALL DO1AJF(CAVGE,XMAX,XMXPLK.EPSABS,BPSRBL.RESULT,ABSBRR,WORK,
$ 800,IWORK,102,IFAIL)
C
C WRITE ERROR MESSAGE IF IFAIL NOT EQUAL TO 0
C
IF(IFAIL.BQ.O)GO TO 275
WRITE(IWP,260)IFAIL
STOP
275 CONTINUE
C
AVCONL=QP*RBSULT/WLBNL
C
C CALCULATE AVERAGE CONCENTRATION OVER SOIL AVCONS
C 1ST, DEPLETE SOURCE QS FROM 0 TO XMXPLK
C
IFAIL=0
CALL DO1AJF(DBPAVG,100.,XMXPLK,BPSABS,BPSRBL,DBPFAC,ABSERR,WORK,
$ 800,IWORK.102,IFAIL)
C
C WRITE ERROR MESSAGE IF IFAIL NOT EQUAL TO 0
C
IF(IFAIL.BQ.O)GO TO 280
WRITE(IWP,260)IFAIL
STOP
280 CONTINUE
QPS=QS(MON,IYR)*BXP(VBLFAC*DEPFAC-AK*XMAX/U)
C
C CALCULATE DEPLETION FACTOR FROM XMXPLK TO XMXPLS
C
IFAIL=0
CALL DO1AJF(DEPAVG,XMXPLK,XMXPLS.BPSABS,BPSRBL.DBPFAC,ABSBRR,
t WORK.800,IWORK,102,IFAIL)
C
C WRITE ERROR MESSAGE IF IFAIL NOT EQUAL TO 0
C
IF(IFAIL.BQ.O)GO TO 290
WRITE(IWP,260)IFAIL
STOP
290 CONTINUE
IFAIL=0
-------
162
CALL D01AJP(CAVGB.XMXPLK,XMXPLS,BPSABS,BPSRBL,RESULT,ABSBRR.
$ WORK,800,IWORK.102.IFAZL)
C
C WRITE ERROR MESSAGE IF IFAIL NOT EQUAL TO 0
C
IF(IFAIL.BQ.O>GO TO 295
WRITE(IWP,260 >IFAIL
STOP
295 CONTINUE
AVCONS=QPS*RBSULT/XSOIL
AVCSL=(AVCONS+AVCONL)/2.0
S LAREA=AREAPS +ARPLLK
C
236 CONTINUE
C
C CALCULATE DRY t WET DEPOSITION INTO LAKE DUE TO AIR POINT SOURCE
C IN (KG/H**2/SEC)
C
FDLAKB=AVCONL *UD
FWLAKB=AVCONL *UWET
C
C CALCULATE TOTAL DEPOSITION IN LAKE IN (KG/SBC)
C
AHMOUL=AWMOUL+(FDLAKB+FHLAKB)*ARPLLK
C
C CALCULATE DEPOSITION ONTO SOIL DUE TO AIR POINT SOURCE
C
FDSOIL=AVCONS*UD
FWSOIL=AVCONS*UWET
C
C DEPOSITION DUB TO VOLATILIZATION CONCENTRATION ABOVE MUST GO INTO
C SOIL AREA (ARBASL). VALUES IN KG/M**2/SBC
C
ASMODL=ASMODL*AROLD/ARBASL+PDSOIL
ASHOHL=ASHOHL*AROLD/ARBASL+FWSOIL
GO TO 245
C
C CALCULATE DEPOSITION DUB TO AREA SOURCE
C
240 FDLAKB=ACMAX*UD
FWLAKB=ACMAX*UWBT
AWMOUL=AWMOUL+AREALK*(FDLAKB+FHLAKB)
C
C DEPOSITION FOR SOIL SAME AS FOR LAKE(AREA DIFFERENT HOWEVER)
C
ASHODL=ASMODL+FDLAKB
ASHOWL=ASHOWL+FWLAKB
ARBASL=ARL*.0001
AVCSL=ACMAX
SLARBA=CTYLTH*CTYLTH
GO TO 245
243 AVCSL=0.0
SLAREA=0.0
245 IPdSTBP.GT. 1 )GO TO 247
ASDBPL=0.0
AWDBPL=0.0
-------
163
c
C ASDBPL ( AWDBPL (TOTAL DEPOSITION TO SOIL AND HATER - LAKE) CONVERTED
C TO UG PROM KG
C
247 ASDBPL=ASDBPL+(ASMODL+ASMOWL)*ARBASL*DT*1.OE+9
AHDBPL=AWDEPL+AHMOUL*DT*1.OE+9
IP(ISTBP.LT.NSTBPS)GO TO 250
C
C CALCULATE AVERAGE AIR CONCENTRATION AVAIRL POR LAKE
C
AVAIRL=(AVCSL*SLAREA+WSACON*ARBAT)/AMAX1(ARBAT,SLARBA)
C
C CONVERT PROM KG/M**3 TO UG/H**3
C
AVAIRL=AVAIRL*1.OE+9
IP(AIRPLG.NE.AREA)ACMAXL=(WSACON+ACMAX)*1.OE+9
C
C
250 IP(RIVBR.NB.YBS)GO TO 400
C
C CALCULATE CONCENTRATION IN AIR PROM RIVER VOLATILIZATION
C
WAHINR=0
DO 325 1=1,NR
325 WAMINR=WAHINR+WAMOUR(I)
C
C HAHINR IS TOTAL KG/SBC COMING PROM RIVER DUE TO VOLATILIZATION
C
ARBARB=HWIDR*WLENR
C
C ARBAR IS TOTAL SURFACE AREA OP RIVER
C
AREAR=ARBARB*PLOAT(NR)
IP(AIRPLG.EQ.AREA)ARR=(CTYLTH*CTYLTH-AREAR)*10000.
AREAT=ARBAR+ARR*.0001
C
C WSAMIN IS TOTAL KG/SBC COMING PROM RIVER AND SOIL DUB
C TO VOLATILIZATION (ARR INITIALIZED AS GEOM(1))
C
HSAMIN=HAMINR+SAMOUR
DBDGB=0.5*SQRT(ARBAT)
C=SQRT(2.0/PI)*DBDGB**0.25/0.0375
HSACON=C*WSAMIN/(AREAT*UH(MON,IYR))
IP(AK.BQ.O.O) GO TO 350
WSACON=WSACON*BXP(-DBDGB*AK/UW(MON,IYR))
350 CONTINUE
C
C CALCULATE WET (PHRIV) C DRY (PDRIV) DEPOSITION DUB
C TO CONCENTRATION CALCULATED PROM VOLATILIZATION.
C
AHMINR=AWMOUR
ASMIDR=ASMODR
ASMIWR=ASMOWR
PDRIV=WSACON*UDG
PHRIV=WSACON*UWG
AHMOUR=PDRIV+FWRIV
-------
164
C
C DEPOSITION RATE INTO RIVER AND ONTO SOIL ARE SAME; HOWEVER,
C THE AREAS THIS RATE GOES INTO ARE DIFFERENT.
C
ASMODR=FDRIV
ASMOWR=FWRIV
IP(ARR.NB.O.O)GO TO 360
ASMODR=0.
ASHOWR=0.
360 CONTINUE
AWMOUR=AWMOUR*ARBARE
IF(AIRPLG.EQ.NONE) GO TO 397
IF(AIRFLG.BQ.AREA) GO TO 396
AROLD=ARR*.0001
ARR=AREASR*10000.
C
C ARR IS PLUME SURFACE AREA OVER SOIL NEXT TO RIVER (IN CM**2) TO BE
C TRANSFERRED TO SBSOIL.
C
IF(ACMAX.BQ.O.O) GO TO 398
IF(ISTEP.GT.1) GO TO 395
ARRTPS=1.0
C
C CONST = 2.0*0.08 ; CALCULATION OF AREAS BELOW INCLUDES 2 SIGMAY'S ON
C EITHER SIDE OF PLUME CBNTERLINE
C
CONST=0.16
C
C CALCULATE SIGMA SUB Y'S
C
SIGY1=CONST*XMAX/SQRT(1.0+0.0001 *XMAX)
TWLBNR=FLOAT(NR)*WLENR
XMAXPR=XMAX+TWLENR
SIGY2=CONST*XMAXPR/SQRT(1.0+0.0001*XMAXPR)
C
C FIND AREA OF PLUMB OVER RIVER AND SOIL USING TRAPBZOID
C
ARPLSR=(SIGY1+SIGY2)«TWLBNR
ARPLR=AREAR
IP(ARPLSR.LB.ARBAR) GO TO 385
C
C CALCULATE AREA OF PLUME OVER SOIL (ARBAPS)
C
ARBAPS=ARPLSR-ARBAR
ARBASR=ARBAPS
GO TO 390
385 ARRTPS=0.0
ARPLR=ARPLSR
ARBASR=AROLD
390 CONTINUE
C
C CALCULATE AVERAGE CONCENTRATION C DEPOSITIONS DUB TO AIR POINT SOURCE
C FOR RIVER
C
IFAIL=0
C
-------
165
C 1ST.FIND DEPLETION FACTOR (DEPFAC) FROM XMAX TO XMAXPR
C
CALL DO1AJF(DEPAVG,XMAX,XMAXPR,BPSABS,BPSRBL,DBPFAC,ABSBRR,WORK,
$ 800,IWORK,102,IFAIL)
C
C WRITE ERROR MESSAGE IF IFAIL NOT EQUAL TO 0
C
IF(IFAIL.BQ.O)GO TO 370
WRITE(IWP,365)IFAIL
365 FORMAT<1X.'PROBLEM WITH D01AJF CALL IN AIR, RIVBR SECTION, IFAIL
$ ',13)
STOP
370 CONTINUE
IFAIL=0
CALL DO1AJF(CAVGB,XMAX,XMAXPR,BPSABS,BPSREL,RESULT,ABSBRR,WORK,
$ 800.IWORK,102.IFAIL)
C
C WRITE ERROR MESSAGE IF IFAIL NOT EQUAL TO 0
C
IF(IFAIL.BQ.O)GO TO 375
WRITE(IWP,365)IFAIL
STOP
375 CONTINUE
C
C CALCULATE AVERAGE CONCENTRATION OVER RIVBR AND SOIL NEXT TO RIVBR
C
AVCNRS=QP*RESULT/TWLBNR
395 CONTINUE
C
C CALCULATE DRY AND WET DEPOSITION INTO RIVBR DUB TO POINT SOURCE
C IN KG/M**2/SBC
C
FDRIV=AVCNRS*UD
FWRIV=AVCNRS*UWET
C
C CALCULATE TOTAL DEPOSITION INTO BACH REACH IN KG/SBC
C
AWMOUR=AWMOUR+(FDRIV+FWRIV)*ARPLRXFLOAT(NR)
C
C CALCULATE DEPOSITION ONTO SOIL NEXT TO RIVBR DUB TO POINT SOURCE
C
IF(ARBASR.BQ.O.O)GO TO 398
FDSOIL=AVCNRS *UD
FWSOIL=AVCNRS*UWET
C
C DEPOSITION DUB TO VOLATILIZATION CONCENTRATION ABOVE MUST
C GO INTO SOIL AREA ARBASR; VALUES ARB IN KG/M**2/SBC
C
ASMODR=ASMODR*AROLD/ARBASR+FDSOIL*ARRTPS
ASMOWR=ASMOWR*AROLD/AREASR+FWSOIL*ARRTPS
GO TO 398
C
C CALCULATE DEPOSITION DUB TO AREA SOURCE
C
396 FDRIV=ACMAX*UD
FWRIV=ACMAX*UWET
-------
166
AWMOUR=AHMOUR+ARBARB*(FDRIV+FWRIV)
C
C DEPOSITION FOR SOIL SAME AS FOR RIVER (AREAS DIFFERENT HOWEVER)
C
ASMODR=ASMODR+FDRIV
ASHOWR=ASHOWR+PHRIV
AREASR=ARR*.0001
AVCNRS=ACHAX
ARPLSR=CTYLTH*CTYLTH
GO TO 398
397 AVCNRS=0.0
ARPLSR=0.0
398 IFdSTEP.GT.1 )GO TO 399
ASDEPR=0.0
ANDBPR=0.0
C
C CALCULATE TOTAL MONTHLY DEPOSITION IN UG ONTO SOIL (ASDBPR) I
C INTO HATER (AWDBPR) FOR RIVER
C
399 ASDBPR=ASDBPR+(ASMODR+ASMOWR)*AREASR*DT*1.OE+9
AWDBPR=AHDBPR+AHHOUR*DT*1.OB+9*FLOAT(NR)
IF(ISTBP.LT.NSTEPS) GO TO 400
C
C CALCULATE AVERAGE t MAXIMUM AIR CONCENTRATION IN UG/M**3
C
AVAIRR= (WSACON*AREAT+AVCNRS*ARPLSR) /AMAX1 (AREAT, ARPLSR)
AVAIRR=AVAIRR*1.OE+9
IF(AIRFLG.NE.ARBA)ACMAXR=(ACMAX+WSACON)*1.OE+9
C
C
400 IF(BSTU.NB.YES)RETURN
C
C CALCULATE CONCENTRATION IN AIR FROM ESTUARY VOLATILIZATION
C
ARBAE=HLBNB*HHIDB
IF(AIRFLG.BQ.AREA) ARB=(CTYLTH*CTYLTH-ARBAB)*10000.0
AREAT=ARBAB+ARB*.0001
WSAMIN=HAMOUB+SAMOUB
DBDGB=0.5 * SQRT(AREAT)
C=SQRT(2.0/PI)*DBDGB**0.25/0.0375
WSACON=C*HSAMIN/(AREAT*UW(MON,IYR))
IF(AK.BQ.O.O)GO TO 425
WSACON=WSACON*EXP(-DEDGE*AK/UW(MON,IYR))
425 CONTINUE
C
C CALCULATE WET (FWBST) ( DRY (FDBST) DEPOSITION
C
AHMINE=AHMOUE
ASMIDB=ASMODB
ASMIHB=ASMOHB
FDEST=WSACON*UDG
FHBST=HSACON*UHG
AHMOUB=FDBST+FNBST
C
C DEPOSITION RATE INTO ESTUARY AND ONTO SOIL ARE SAME; HOWEVER,
C THE AREAS THIS RATE GOBS INTO ARE DIFFERENT
-------
167
c
ASMODE=PDBST
ASMOHB=PWBST
ZP(ARB.NB.0.0)60 TO 427
ASMODB=0.
ASMOHB=0.
427 CONTINUE
AWMOUB=AWMOUB*ARBAB
IPCAIRPLG.EQ.NONB) GO TO 453
IF(AIRPLG.BQ.ARBA) GO TO 450
AROLD=ARE*.0001
ARB=AREASB*10000.
C
C ARE IS PLUME SURPACE AREA OVER SOZL NEXT TO ESTUARY (ZN CM**2l TO BE
C TRANSFERRED TO SBSOZL
C
ZP(ACMAX.BQ.O.O) GO TO 455
IPCISTBP.GT.1) GO TO 445
ABRTPS=1.0
C
C CONST = 2.0*0.08 ; CALCULATIONS OF AREAS BELOW ZNCLUDBS 2 SIGMAY'S ON
C EITHER SIDE OP PLUME CENTBRLINB
C
CONST=0.16
C
C CALCULATE SIGMA SUB Y'S
C
SIGY1=CONST*XMAX/SQRT(1.0+0.0001*XMAX)
XMAXPB=XMAX+HLENB
SIGY2=CONST*XMAXPE/SQRT(1.0+0.0001*XMAXPB)
C
C PIND AREA OP PLUMB OVER BSTUARY AND SOIL USING TRAPEZOID
C
ARPLSE=(SZGY1+SIGY2)*NLBNB
ARPLB=AREAB
IP(ARPLSB.LB.ARBAB) GO TO 435
C
C CALCULATE AREA OP PLUME OVER SOIL (ARBAPS) NEXT TO ESTUARY
C
ARBAPS=ARPLSE-ARBAE
ARBASB=ARBAPS
GO TO 440
435 ABRTPS=0.0
ARPLB=ARPLSB
AREASB=AROLD
440 CONTINUE
C
C CALCULCATB AVERAGE CONCENTRATION ( DEPOSITION DUB TO AIR POINT SOURCE
C
IPAIL=0
C
C 1ST, PIND DEPLETION PACTOR (DBPPAC) PROM XMAX TO XMAXPB
C
CALL DO1AJP(DBPAVG.XMAX,XMAXPB,BPSABS,BPSRBL,DBPPAC,ABSBRR,WORK,
$ 800,IHORK,102,IPAIL)
C
-------
168
C WRITE ERROR MESSAGE IF IPAZL NOT EQUAL TO 0
C
IF(IPAIL.EQ.O)GO TO U85
WRITE(IWP,480)IPAIL
480 FORMAT(1X,'PROBLEM WITH D01AJP CALL IN AIR. ESTUARY SECTION. IPAIL
$ = ',13)
STOP
485 CONTINUE
IPAIL=0
CALL DO1AJP(CAVGB,XMAX,XMAXPB,EPSABS,BPSREL,RESULT,ABSBRR,WORK,
$ 800,IWORK,102.IPAIL)
C
C WRITE ERROR MESSAGE IP IPAIL NOT EQUAL TO 0
C
IP(IPAIL.EQ.O)GO TO 490
WRITE(IWP.480)IPAIL
STOP
490 CONTINUE
C
C CALCULATE AVERAGE CONCENTRATION OVER ESTUARY AND SOIL NEXT
C TO ESTUARY
C
AVCNES=QP*RESULT/WLENE
445 CONTINUE
C
C CALCULATE DRY AND WET DEPOSITION INTO ESTUARY DUB TO
C POINT SOURCE IN KG/M**2/SEC
C
PDEST=AVCNES*UD
PWBST=AVCNBS*UWET
C
C CALCULATE TOTAL DEPOSITION INTO ESTUARY IN KG/SEC
C
AWMOUE=AWMOUE+(PDBST+PWEST)*ARPLB
C
C CALCULATE DEPOSITION ONTO SOIL NEXT TO ESTUARY DUB TO
C POINT SOURCE
C
IP(ARBASE.EQ.O.O)GO TO 455
PDSOIL=AVCNBS*UD
PWSOIL=AVCNES*UWBT
C
C DEPOSITION DUB TO VOLATILIZATION CONCENTRATION ABOVE MUST GO INTO
C SOIL AREA ARBASB; VALUES ARE IN KG/M**2/SEC
C
ASMODB=ASMODB*AROLD/ARBASB+PDSOIL*AERTPS
ASMOWE=ASMOWB*AROLD/ARBASE+FWSOIL*ABRTPS
GO TO 455
C
C CALCULATE DEPOSITION DUE TO AREA SOURCE
C
450 PDBST=ACMAX*UD
PWBST=ACMAX*UWET
AWMOUB=AWMOUE+ARBAE*(FDBST+FWBST)
C
C DEPOSITION POR SOIL SAMB AS POR ESTUARY (AREAS DIPPBRBNT, HOWEVER)
-------
169
C
ASMODE=ASMODB+FDBST
ASMOWB=ASMOWE+PWBST
AREASE=ARB*.0001
AVCNBS=ACMAX
ARPLSE=CTYLTH*CTYLTH
GO TO 455
453 AVCNBS=0.
ARPLSE=0.
455 IPdSTBP.GT.1 )GO TO 475
ASDBPE=0.0
AWDEPE=0.0
C
C CALCULATE TOTAL MONTHLY DEPOSITION ONTO SOIL AND INTO ESTUARY IN UG
C
475 ASDEPE=ASDEPE+(ASHODB+ASHOHB)*ARBASB*DT*1.OB+9
AWDEPB=AHDBPB+AWMOUB*DT*1.OB+9
IF(ISTBP.LT.NSTBPS) RETURN
C
C CALCULATE AVERAGE t MAXIMUM AIR CONCENTRATION IN UG/M**3 (ABOVE
C ESTUARY)
C
AVAIRE=(HSACON*AREAT+AVCNBS*ARPLSB)/AMAX1(ARBAT,ARPLSB>
AVAIRE=1.OB+9*AVAIRB
IF(AIRFLG.EQ.POINT)ACMAXE=(ACMAX+WSACON)*1.OB+9
RETURN
C
C
C NO WATER BODY IS CONSIDERED; COMPUTE CONCENTRATION OF AIR OVER SOIL
C
700 CONTINUE
IF(AIRFLG.EQ.AREA)ARS=CTYLTH*CTYLTH*10000.0
AREAT=ARS*0.0001
IF(AREAT.BQ.0.0)60 TO 725
C
C COMPUTE CONCENTRATION IN AIR DUE TO VOLATILIZATION FROM SOIL
C
SAMIN=SAMOUS
DBDGE=0.5*SQRT(ARBAT)
C=SQRT(2.0/PI)*DEDGE**0.25/0.0375
SACON=C*SAMIN/(ARBAT*UW(MON,IYR))
IP(AK.EQ.O.O)GO TO 725
SACON=SACON*BXP(-DBDGB*AK/UWCMON,IYR))
GO TO 730
725 CONTINUE
SACON=0.0
730 ASMIDS=ASMODS
ASMIWS=ASMOHS
C
C CALCULATE DRY C WET DEPOSITION ONTO SOIL DUB TO CONCENTRATION FROM
C VOLATILIZATION
C
ASMODS=SACON*UDG
ASMOWS=SACON*UHG
IF(AIRFLG.BQ.NONE)GO TO 753
IF(AIRFLG.EQ.AREA)GO TO 750
-------
170
AROLD=ARS*0.0001
ARS=AREAS*10000.
ZP(ACMAX.BQ.O.O)GO TO 755
IFdSTBP.GT. 1 )GO TO 745
C
C CONST=2.0*0.08 f CALCULATION OF AREAS BELOW INCLUDES 2 SIGMAY'S
C ON EITHER SIDE OP PLUME CENTBRLINE
C
CONST=0.16
C
C CALCULATE SIGMA SUB Y'S
C
SIGY1=CONST*XMAX/SQRT(1.0+0.0001*XMAX)
XMAXPS=XMAX+XLENS
SIGY2=CONST*XMAXPS/SQRT(1.0+0.0001 *XMAXPS)
C
C FIND AREA OF PLUMB OVER SOIL USING TRAPEZOID
C
ARPLS=(SIGY1+SIGY2)*XLBNS
AREAS=ARPLS
C
C CALCULATE AVERAGE CONCENTRATION C DEPOSITION DUE TO AIR POINT SOURCE
C
IFAIL=0
C
C 1ST, FIND DEPLETION FACTOR (DEPFAC) FROM XMAX TO XMAXPS
C
CALL DO1AJF(DBPAVG,XMAX,XMAXPS,BPSABS,BPSRBL,DBPFAC,ABSBRR,
$ WORK,800,IWORK,102,IFAIL)
C
C WRITE ERROR MESSAGE IF IFAIL .NB. 0
C
IF(IFAIL.BQ.O)GO TO 735
WRITE(IWP,732)IFAIL
732 FORMAT(1X,'PROBLEM WITH D01AJF CALL IN AIR, SOIL SECTION, IFAIL =
$'.13)
STOP
735 CONTINUE
IPAIL=0
CALL D01AJF(CAVGE,XMAX,XMAXPS,EPSABS,BPSRBL,RESULT,ABSBRR,
$ WORK,800,IWORK,102,IFAIL)
C
C WRITE ERROR MESSAGE IF IFAIL .HE. 0
C
IP(IFAIL.BQ.O)GO TO 740
WRITE(IWP,732)
STOP
740 CONTINUE
C
C CALCULATE AVERAGE CONCENTRATION IN AIR OVER SOIL AVCNS
C
AVCNS=QP*RBSULT/XLBNS
745 CONTINUE
C
C CALCULATE DRY t WBT DEPOSITION ONTO SOIL DUB TO POINT SOURCE
C IN KG/M**2/S
-------
171
c
FDSOIL=AVCNS*UD
FWSOIL=AVCNS*UWBT
C
C DEPOSITION DUB TO VOLATILIZATION CONCENTRATION ABOVE MUST GO INTO
C SOIL AREA AREAS; VALUES ARE IN KG/H**2/S
C
ASMODS=ASMODS*AROLD/ARBAS+FDSOIL
ASMONS=ASMOWS*AROLD/ARBAS+PWSOIL
GO TO 755
C
C CALCULATE DEPOSITION DUE TO AREA SOURCE
C
750 FDSOIL=ACMAX*UD
FWSOIL=ACMAX*UWBT
ASMODS=ASMODS+FDSOIL
ASHOHS=ASHOWS+FWSOIL
AREAS=ARS*.0001
AVCNS=ACMAX
ARPLS=CTYLTH*CTYLTH
GO TO 755
753 AVCNS=0.
ARPLS=0.
755 IFdSTEP.GT.DGO TO 775
ASDBPS=0.0
C
C CALCULATE TOTAL MONTHLY DEPOSITION ONTO SOIL IN UG
C
775 ASDBPS=ASDBPS+(ASMODS+ASMOWS)*ARBAS*DT*1.OB+9
IF(ISTEP.LT.NSTBPS)RETURN
C
C CALCULATE AVERAGE C MAXIMUM AIR CONCENTRATION ABOVE SOIL IN UG/M**3
C
AVAIRS=(SACON*ARBAT+AVCNS*ARPLS >/AMAX1(ARBAT,ARPLS)
AVAIRS=1.OB+9*AVAIRS
IF(AIRFLG.NB.AREA)ACMAXS=(SACON+ACMAX)*1.OE+9
RETURN
END
-------
172
SUBROUTINE ALPHA(IMON,IYR)
COMMON/SDPARB/SBDCEC12,10).CONSDB
COMMON/SDPARO/SBDCO(12,10).CONSDO
COMMON/SDPARR/SBDCR(12,10),DZASDR,DBNSDR,DBNWR,SLOPBR,CONSDR
COMMON/SDPARL/SBDCL(12,10),DZASDT,DBNSDT,DENWT,SLOPET,WDBPT,CONSDL
COMMON/EQUIL/DISK,HPLUSL,HPLUSR,HPLUSB,HPLUSO,
t SWKSHL,SWKSWR.SWKSWB,SWKSWO
COMMON/FLAGS/AIRPLG,AZRPOL,TRICON,LAKE,RIVBR,
$ ESTU,OCEAN,SBDRIV,SBDLKB,DISFLG,CHMFLG,HATBOD
COMMON/ALPHAS/AIL,A2L.A3L,A1R,A2R.A3R,A1E,A2B.A3B,
$ A1O.A2O.A3O
REAL LAKE
DATA YES/4H YES/,EPS/1.OE-5/,BASB/4HBASE/,ZDENOM/1/,NONE/4HNONB/
IWP=13
MON=IMON
IF(MON.GT.1.OR.IYR.GT.1)GO TO 50
IF(CHMFLG.BQ.BASE.AND.DISK.BQ.0.0)IDENOM=0
C
c
50 IP(LAKE.NB.YBS)GO TO 100
IF(IDBNOM.BQ.O)GO TO 75
IF(MON.GT.1.OR.IYR.GT.1)GO TO 70
C
C COMPUTE DISSOCIATION CONSTANT OVER H-PLUS (DISOHL) TO BE USED BELOW.
C
IF(CHMFLG.EQ.NONE)GO TO 60
C
C IF CHMFLG IS BASE THEN CONVERT HPLUS TO [OH-]
C
IF(CHMFLG.EQ.BASE)HPLUSL=1.OB-14/HPLUSL
DISOHL=DISK/HPLUSL
IF(CHMFLG.BQ.BASE)DISOHL=1.0/DISOHL
DISP1L=DISOHL+1.0
GO TO 70
60 DISP1L=1.0
DISOHL=0.0
70 CONTINUE
C
C CONSDL IS IN KG/M**3; NEED KG/L HERE, SO MULTIPLY BY 0.001.
C COMPUTE ADSORPTION TERM (ADSORB) AND DENOMINATOR (DBNOM)
C
ADSORB=SHKSWL*CONSDL*.001
DBNOM=DISP1L+ADSORB
C
C CALCULATE ALPHA 1 C 2 i 3 FOR LAKE.
C
A1L=1.0/DBNOM
A2L=DISOHL/DBNOM
A3L=ADSORB/DBNOM
GO TO 80
75 A1L=0.0
A2L=1.0
A3L=0.0
80 CONTINUE
IF((A1L+A2L+A3L-1.0).LT.BPS)GO TO 100
-------
173
C WRITE ERROR MESSAGE
C
WRITE(IWP,90)
90 FORMATMX,'ERROR IN ALPHA ROUTINE, ALPHAS FOR LAKE DO MOT ADD UP T
$0 1.0')
STOP
C
C
100 IF(RIVER.HE.YES)GO TO 200
IF(IDENOM.EQ.O)GO TO 150
IFCMON.GT.1.OR.IYR.GT.1)GO TO 170
C
C COMPUTE DISSOCIATION CONSTANT OVER H-PLUS (DISOHR) TO BE USED BELOW.
C
IF(CHMFLG.EQ.NONB)GO TO 160
C
C IF CHMFLG IS BASE THEN CONVERT HPLUS TO |OH-]
C
IF (CHMFLG. EQ. BASE)HPLUSR= 1 . OB-1 4/HPLUSR
DISOHR=DISK/HPLUSR
IF(CHMFLG.EQ.BASE)DISOHR=1.0/DISOHR
DISP1R=DISOHR+1.0
GO TO 170
160 DISP1R=1.0
DISOHR=0.0
170 CONTINUE
C
C CONSDR IS IN KG/M**3, NEED KG/L, SO MULTIPLY BY .001
C COMPUTE ADSORPTION TERM (ADSORB) AND DENOMINATOR (DENOM)
C
ADSORB=SWKSWR*CONSDR*.001
DBNOM=DISP1R+ADSORB
C
C COMPUTE ALPHA 1 t 2 t 3 FOR RIVER.
C
A1R=1.0/DENOM
A2R=DISOHR/DBNOM
A3R=ADSORB/DENOM
GO TO 175
150 A1R=0.
A2R=1.
A3R=0.
175 CONTINUE
IF((A1R+A2R+A3R-1.0).LT.BPS)GO TO 200
C
C WRITE ERROR MESSAGE
C
WRITE(IWP,180)
180 FORMATMX,'ERROR IN ALPHA ROUTINE, ALPHAS FOR RIVBR DO NOT ADD UP
$TO 1.0')
STOP
C
C
200 IF(ESTU.NB.YBS)GO TO 300
IP(IDBNOM.EQ.O)GO TO 250
IF(MON.GT.1.OR.IYR.GT.1)GO TO 270
-------
174
C
C COMPUTE DISSOCIATION CONSTANT OVER H-PLUS (DISOHE) TO BE USED BELOW.
C
IP(CHMPLG.EQ.NONE)GO TO 260
C
C IP CHMPLG IS BASE THEN CONVERT HPLUS TO [OH-]
C
IP(CHMPLG.EQ.BASE > HPLUSB=1 .OB-1 */HPLUSE
DISOHE=DISK/HPLUSB
IP(CHMPLG.BQ.BASE>DISOHB=1.0/DISOHB
DISP1E=DISOHE+1.0
GO TO 270
260 DISP1E=1.0
DISOHB=0.0
270 CONTINUE
C
C CONSDE IS IN KG/M**3, NEED KG/L HERE, SO MULTIPLY BY .001
C COMPUTE ADSORPTION TERM (ADSORB) AND DENOMINATOR (DENOM)
C
ADSORB=SWKSHE*CONSDB*.001
DENOM=DISP1B+ADSORB
C
C COMPUTE ALPHA 1 t 2 & 3 POR ESTUARY
C
A1E=1.0/DENOM
A2E=DISOHB/DBNOM
A3B=ADSORB/DENOM
GO TO 275
250 A1B=0.
A2E=1 .
A3E=0.
275 CONTINUE
IF((A1E+A2B+A3E-1.0).LT.EPS )GO TO 300
C
C WRITE ERROR MESSAGE
C
WRITE(IHP,280)
280 FORMAT(1X,'ERROR IN ALPHA ROUTINE, ALPHAS POR ESTUARY DO NOT ADD U
$P TO 1.0')
STOP
C
C
300 IP(OCEAN.NB.YBS)RETURN
IP(IDBNOM.BQ.O)GO TO 350
IP(MON.GT.1.OR.IYR.GT.1)GO TO 370
C
C COMPUTE DISSOCIATION CONSTANT OVER H-PLUS (DISOHO) TO BE USED BELOW.
C
IP(CHMPLG.EQ.NONE)GO TO 360
C
C IP CHMPLG IS BASE THEN CONVERT HPLUS TO [OH-]
C
IP(CHMPLG.BQ.BASE)HPLUSO=1.OB-14/HPLUSO
DISOHO=DISK/HPLUSO
IP(CHMPLG.BQ.BASE)DISOHO=1.0/DISOHO
DISP1O=DISOHO+1.0
-------
175
360
370
GO TO 370
DISP10=1.0
DISOHO=0.0
CONTINUE
C CONSDO IS IN KG/M**3, NEED KG/L HERE, SO MULTIPLY BY .001
C COMPUTE ADSORPTION TERM (ADSORB) AND DENOMINATOR (DENOM)
C
ADSORB=SHKSHO*CONSDO*.001
DENOM=DISP1O+ADSORB
C
C COMPUTE ALPHA 1i2i3 FOR OCEAN
C
A1O=1.0/DENOM
A2O=DISOHO/DENOM
A3O=ADSORB/DBNOM
GO TO 375
350 A10=0.
A20=1.
A3O=0.
375 CONTINUE
IP((A10+A2O+A3O-1
0).LT.EPS)RETURN
C WRITE ERROR MESSAGE
C
WRITE(IWP,380)
380 FORMATdX,'ERROR IN ALPHA ROUTINE, ALPHAS FOR OCEAN DO NOT ADD UP
$TO 1.0')
STOP
END
-------
176
SUBROUTINE BIOCHNCIMO.IYR)
COMMON /EX/ JRUN,LEVEL,JRB,JSO,JCH,JNUT.JAPPL,JYRS
COMMON /SO/ SOIL1(6),SOIL2C6)
COMMON /CH/ CHBM1(18)
COMMON/FLAGS/AXRPL6,AIRPOL,TRICON,LAKE,RIVER,
$ BSTU,OCEAN,SBDRIV,SEDLKB,DISPLG,CHMPLG,HATBOD
COMMON/HPARR/WVBLR(12,10),WMINR(12,10),WMTRIV(20),
f NR,WWIDR,HLBNR,HDBPR,HVOLR,WMTOLD,ARBAR
COMMON/WPARE/WVBLE(12,10),WHINE(12,10),TIDMAX,EL,WWIDE,
f WLBNB,WDBPB,NPTSE,ARBAE
COMMON/HPARO/HVBLO(12.10),WCINO(12,10).BO,XOCBAN,NPTSO
COMMON/SPARS/ARS,AREAS,XLENS
COMMON/SPARL/ARL,AREASL,XSOIL
COMMON/SPARR/ARR,ARBASR
COMMON/SPARE/ARE,ARBASB
COMMON/OUT/ACMAXL, AVAIRL,AVAIRR,AVAIRB,AWDBPL,AWDBPR,AWDBPB,
$ ASDBPL,ASDBPR,ASDEPB,HVOLAL,WVOLAR,HVOLAB,SVOLAL,
f SVOLAR,SVOLAB,SWSURL,SWSURR,SHSURB,SWGRWL,SWGRWR,
$ SWGRWB,SCONUL,SCONUR,SCONUE,SCONLL,SCONLR,SCONLB,
$ CONL1,CONL2,CONL3,CONR1(20),CONR2(20),CONR3(20),
$ CNCBD1(11),CNCBD2(11),CNCBD3(11),CNCEU1(11),CNCBU2(11).
$ CNCBU3M1 ) ,XBSTY(11 ) .CONO1 (1 0 ) ,CONO2( 1 0 ) ,CON03(10) ,
$ RBSUSE,WASHL,NASHR,WASHB,ACMAXR,ACMAXB,ACMAXS,
$ AVAIRS,ASDBPS,SVOLAS,SWGRHS,SCONUS,SCONLS,RBSUSS,
$ RESUSL,RBSUSR,SCONML,SCONMR,SCONMB,SCONMS,SWSURS,
$ HASHS,AREA1(3)
REAL KOW, LAMBDA, NO, KD, KOC , LOGKOW, LAKE
DIMENSION AMOM2)
DATA AMO/' OCT',' NOV',< DEC',1 JAN',1 FEB',' MAR',
$' APR',' MAY',' JUN',' JUL',' AUG',' SBP•/
DATA YES/' YES'/,NO/' NO'/
IF(IMO.NB.1.OR.IYR.GT.1>GO TO 280
IRB=18
IWB=19
READ(IRB,10)COVFLG
10 FORMAT(AU)
WRITE(1KB,20)
20 FORMAT('1', 44X,'FOOD CHAIN BIOACCUMULATION FLAG')
WRITE(IHB,30)
30 FORMAT('0',26X,'OPTION CHOSEN',6X,'NAME',21X,'MEANING',/)
IF(COVFLG.BQ.YES)GO TO 70
IF(COVFLG.NB.NO)GO TO 50
WRITE(IHB,40)
40 FORMAT(38X, 'NO' ,5X, 'COVFLG',5X, 'SIGNIFIES COMPOUND IS NOT A COVALE
(NTLY BONDING MATERIAL')
GO TO 100
50 WRITE(IWB,60)COVFLG
60 FORMAT(1X,'ERROR IN DATA: COVFLG DOES NOT EQUAL YES OR NO, BUT = '
S.A4)
STOP
70 WRITB(IWB,80)
80 FORMAT(37X,'YES',5X, 'COVFLG',5X,'SIGNIFIES COMPOUND IS A COVALBNTL
$Y BONDING MATERIAL',///)
WRITE(IWB,90)
90 FORMAT(37X,'BIOACCUMULATION CANNOT BE ESTIMATED BY THE EMPLOYED MB
ITHOD')
-------
177
RETURN
100 CONTINUE
C
C ZNZTIALXZB CONCENTRATION VARIABLES FOR AQUATIC C PLANT PHASES FOR
C LAKE, RIVER, ESTUARY, OCEAN, I SOIL-AIR OPTION.
C
CONAQL=0.
CONPLL=0.
CONPLR=0.
CONAQR=0.
CONPLE=0.
CONAQE=0.
CONAQO=0.
CONPLS=0.
READdRB, 110)KOH,R,YV,LAMBDA,TE
110 FORMAT(20X,6B10.3)
WRITE(IWB,120)
120 FORMAT('0'.////,42X,'POOD CHAIN BIOACCUMULATION PARAMETERS')
WRITB(IWB,130)
130 FORMAT('0',30X,'DEFINITION',20X.'NAME',9X,'UNIT',6X,'VALUE',/)
WRITE(IWB,140)ROW
140 FORMAT(19X,'N-OCTANOL WATER PARTITION COEFFICIENT',6X,'KOW',9X,'(-
$)',4X,1PE10.3)
IF(OCBAN.BQ.YBS.AND.LAKB.BQ.NO.AND.RIVBR.BQ.NO.AND.BSTU.EQ.NO)
9 GO TO 205
WRITB(IWB,150)R
150 FORMAT(27X,'INITIAL INTERCEPTION FRACTION',7X,'R',1 OX,'<-)',«X,
S1PB10.3)
WRITE(IWB,160)YV
160 FORMAT(37X,'FORAGE PRODUCTIVITY',6X,'YV,9X,'G/M**2',2X,1PE10.3)
WRITE(IWB,170)LAMBDA
170 FORMAT(37X,'WEATHERING CONSTANT',4X,'LAMBDA',6X,'DAY**-1',2X,
S1PB10.3)
WRITECIWB,180)TB
180 FORMAT(18X,'GROWTH PERIOD OF FORAGE BEFORE HARVEST',6X,'TB',1 OX,
S'DAY',4X.1PB10.3)
C
C COMPUTE SOIL DENSITY RS IN G/M**3 (RS IS INPUT IN G/CM**3)
C
RS=SOIL1(1)*1.08+6
KD=CHBM1(6)
IF(KD.NB.O.)GO TO 190
KOC=CHBM1(2)
OC=SOIL1(5)
KD=KOC*OC/100.
190 WRITE(IWB.200)KD
200 FORMAT(24X,'SOIL WATER PARTITION COEFFICIENT',6X,'KD',1 OX,'(-)',
I4X.1PB10.3)
205 WRITB(IWB,210)
210 FORMAT(/////,49X,'BIOACCUMULATION FACTORS: ')
IF(WATBOD.BQ.NO)GO TO 225
BCFAQ=0.048*KOW
WRITE(IWB,220)BCFAQ
220 FORMAT('0',23X,'BCFAQ (AQUATIC) = CONC. IN TISSUE (FRESH WT.)/CONC
$. IN WATER (ML/G) = '.1PB10.3)
IF(OCEAN.BQ.YBS.AND.LAKE.BQ.NO.AND.RIVER.BQ.NO.AND.BSTU.BQ.NO)
-------
178
fGO TO 273
225 BCFPL=BXP((ALOG(KD)-3.02>/(-0.85))
WRITE!1MB,230 JBCFPL
230 FORMAT(24X,'BCPPL (PLANT) = CONC. IN TISSUE (DRY WT.)/CONC. IN SOI
$L (UNZTLBSS) = '.1PB10.3)
WRITE(IWB,240)
240 FORMAT(/,24X.'BCPAN (ANIMAL) = CONC. IN TISSUE (FRESH HT.)/CONC. I
IN DIET (UNITLBSS):')
LOGKOH=ALOG10(ROW>
IF(LOGKOW.GB.3.5)GO TO 260
WRITB(IWB,250)
250 FORMAT(41X,'* BCFAN OF THE COMPOUND IS LIKELY TO BE LESS THAN 0.1'
$,////)
GO TO 272
260 WRITB(IWB,270)
270 FORMAT(41X,'* THE COMPOUND MAY BE BIOACCUMULATBD WITH A BCFAN OF A
$T LEAST 0.1',////)
272 CONTINUE
C
C THE FOLLOWING PARAMETERS ARE CONSTANTS USED IN THE EQUATIONS BELOW
C
TBLAM=TB*LAMBDA
BCFPRS=BCFPL/RS
PLFAC=(R/(YV*LAMBDA)>*(1 . 0-«1 .0-EXP(-TBLAM))/TBLAM))/30.0
273 WRITE(IWB,274)
274 FORMAT('0',26X.'* CONCENTRATIONS IN AQUATIC ORGANISMS AND TBRRBSTR
SIAL PLANTS (FORAGE) IN UG/G',/)
WRITE(IWB.276)
276 FORMAT(25X,'LAKE',23X,'RIVER',21X,'ESTUARY',15X,'OCEAN',5X,'SOIL-A
SIR OPTION')
WRITE(IWB,278)
278 FORMAT(16X,3(2X,'AQUATIC',5X,'PLANTS',7X),2X,'AQUATIC',8X,'PLANTS'
$./>
GO TO 290
280 IF(COVFLG.BQ.YES)RETURN
290 CONTINUE
IF(WATBOD.BQ.NO)GO TO 600
C
C
IF(LAKE.NB.YES)GO TO 300
C
C COMPUTE CONCENTRATIONS IN AQUATIC ORGANISMS C TERRESTRIAL PLANTS
C FOR LAKE SIMULATION.
C
CONAQL=BCFAQ*(CONL1+CONL2+CONL3)/1.OE+6
IF(ARBASL.BQ.O.O)GO TO 300
CONPLL=BCPPRS*SCONUL+PLFAC*ASDBPL/ARBASL
C
C
300 IF(RIVBR.NB.YBS)GO TO 400
C
C COMPUTE CONCENTRATIONS IN AQUATIC ORGANISMS t TERRESTRIAL PLANTS
C FOR RIVER SIMULATION. (USB MAXIMUM CONCENTRATION IN RIVER)
C
CONRIV=0.0
DO 350 1=1,NR
-------
179
350 CONRIV=AMAX1(COHRZV,(CONR1(I>+CONR2(I)+CONR3(I)))
COMAQR=BCFAQ*COMRIV/1.OE+6
ZP(ARBASR.BQ.O.O)GO TO 400
COMPLR=BCFPRS*SCONUR+PLPAC*ASDBPR/ARBASR
C
c
400 ZP(BSTU.MB.YBS)GO TO 500
C
C COMPUTE CONCENTRATIONS IN AQUATIC ORGANISMS ft TERRESTRIAL PLANTS
C FOR ESTUARY SIMULATION (USE MAXIMUM CONCENTRATION IN ESTUARY).
C
CONEST=0.0
NPTSP1=NPTSB+1
DO 450 1=1,NPTSP1
450 CONBST=AMAX1(CONEST,(CNCBD1(I>+CNCBD2(I)+CNCBD3(I)),
ft (CNCBU1 (I)+CNCBU2(I)+CNCEU3(I» >
CONAQE=BCFAQ*CONEST/1.OB+6
IF(ARBASB.BQ.O.O)GO TO 500
CONPLB=BCFPRS*SCONUB+PLFAC*ASDBPB/ARBASB
C
C
500 IF(OCEAN.NE.YES)GO TO 700
C
C COMPUTE CONCENTRATIONS IN AQUATIC ORGANISMS FOR OCEAN (USB MAXIMUM
C CONCENTRATION IN OCEAN)
C
CONOCN=0.0
DO 550 1=1,NPTSO
550 CONOCN=AMAX1(CONOCN,(CONO1(1)+CONO2(I)+CONO3(I)))
CONAQO=BCFAQ*CONOCN/1.OB+6
GO TO 700
C
C
C HERB, SIMULATION CONSIDERS ONLY AIR-SOIL INTERACTIONS; IB NO
C HATER BODY IS CONSIDERED.
C
600 CONPLS=BCFPRS*SCONUS+PLFAC*ASDEPS/ARBAS
C
C WRITE OUT RESULTS
C
700 WRITE(IWB,800)AMO(IMO),CONAQL,CONPLL,CONAQR,CONPLR,CONAQB,CONPLB,
$ CONAQO.CONPLS
800 FORMAT(10X,A4.2X.3(1PB10.3,2X,1PB10.3.5X).1PB10.3.5X.1PB10.3)
IF(IMO.EQ.12.AND.IYR.BQ.JYRS)GO TO 900
RETURN
900 WRITE(IWB,1000)
1000 PORMAT(////,56X,'* CAUTION',/)
WRITE(IWB,1100)
1100 FORMAT(27X,'NO CONPIDBNCB SHOULD BE PLACED IN THE METHODS USED TO
$ CALCULATE')
WRITE(IWB,1200)
1200 FORMAT(27X,'CONCENTRATION IN AQUATIC ORGANISMS OR IN TBRRBSTRIAL P
SLANTS VIA ROOT')
WRITE(IWB,1300)
1300 FORMAT(27X,'UPTAKE, OR TO EVALUATE BIOACCUMULATION POTENTIAL IN TE
SRRBSTRIAL ANIMALS, IF:',/)
-------
180
WRITE
-------
181
REAL FUNCTION CAVGB(X)
COMMON/AIRPAR/QS(12,10>,UW(12,10),HMIX(12,10),CTYLTH,
$ UDG,UDP,HRATG,WRATP,AK,HS,VS,SRAD,RHO,BNTPY
COMMON/CAVPAR/HBPPIV,XMAX,HMIXZ,U,VG,UDPW,DBPPAC
PI=3.1415927
SIGZMX=2.0*(HMIXZ-HBPPXV)/2.15
C
C CALCULATE SIGMA SUB Y AND Z
C
SXGMAY=0.08*X/SQRT( 1 .0+O.OOOKX)
SIGHAZ=0.06*X/SQRT(1.0+0.0015*X>
IP(SIGHAZ.GT.SIGZHX) SIGMAZ=SZGZMX
C
C INTEGRATE CAVGB PROM A TO X-PINAL BY D01AJP TO PIND AVERAGE AIR CONCENTRATION
C
CAVGE=BXP(-0.5*((HEPPIV-VG*X/U)/SIGMAZ)**2-SQRT(2.0/PI)*UDPH/U
$*DBPPAC-AK*X/U)/(2.0«SQRT(2.0*PI)*SIGMAY*SIGMAZ*U)
C
RETURN
END
-------
182
REAL FUNCTION DBPAVG(X)
COMMON/AZRPAR/QS(12,10),UW(12,10).HMZX(12,10),CTYLTH.
f UDG,UDP,WRATG,HRATP,AK,HS,VS,SRAD,RHO,BNTPY
COMMON/CAVPAR/HBPPXV,XMAX,HHIXZ,U,VG,UDPW,OBPFAC
SIGZHX=2.0*(HMZXZ-HBPPZV)/2.15
SZGMAZ=0.06*X/SQRT(1.0+0.0015*X)
C
C CALCULATE SIGMA SUB Z
C
IF(SIGMAZ.GT.SZGZHX)SIGMAZ=SIGZMX
C
C CALCULATE AVERAGE DBPLBTZON - THZS ZS ZNTBGRATBD FROM A TO X-FZNAL
C BY ROUTZNB D01AJF
C
DBPAVG=BXP(-0.5*((HBFFIV-VG*X/U)/SZGMAZ)**2)/SZGHAZ
C
RBTURN
END
-------
183
SUBROUTINE FUNLAU(DIASBD,DBNSBD,DBNWAT,WDEPTH,SLOPE,TCRIT,
t FUNC.TOPFAC.RATIO)
DIMENSION SVFL(26),P(26),BPUNC(26),CPUNC(26),DPUNC(26),DIAVFL(12),
$ VPL(12),BVPALL(12),CVPALL(12),DVPALL(12),DIATHE(22),SHIBLD(22),
$ BTHETA(22),CTHETA(22),DTHETA(22)
C
C DIATHB, SHIELD, BTHBTA, CTHBTA, t DTHBTA ARE PARAMETERS
C NEEDED IN SPLINE CALCULATION OP SHIELDS FACTOR (THBTA) BELOW.
C
DATA DIATHB/.01,.015,.02,.03,.04,.06,.08,.1,.15,.2,.3,.4,.6,.8,
$ 1.0,1.5,2.0,3.0,4.0,6.0.8.0,10.O/
DATA SHIELD/1.0,.60,.43,.275,.20..17,.12,.085,.06,.05,.038,.034,
f .032,.033,.034,.04,.045,.053,.056..059,.06,.06/
DATA BTHBTA/-112.5423,-51.66603,-22.79358,-10.40648,-4.580516,
-1 .203952,-2.603676,-1.131346,-.1963915,-.1830883,
-.06868714,-.02216312,.0003529924,.005751148..006642417,
.01262521,.008856734,.005609170,.001706586,.001042143,
.0001248412,-.00004150783/
DATA CTHBTA/7350.127,4825.127,949.3631,289.3469,293.2492,
-124.421,54.43484,19.18166,-.4825736,.7486376,.3953741,
.06986621,.04271434,-.01572356,.02017991 ,-.008214317,
.0006773615,-.003924926,.00002234224,-.0003545637,
-.0001040873,.00002091275/
DATA DTHBTA/-168333.3,-258384.3,-22000.54,130.0753,-6961.17,
2980.931,-587.553,-131.0949,8.208074,-1.1 77545,
-1.085026,-.04525312,-.0973965,.05983912,-.01892948,
.005927786,-.001534096,.001315756,-.00006281766,
.00004174608,.00002083333,.00002083333/
C
C DIAVFL, VPL. BVPALL, CVPALL, DVPALL ARE PARAMETERS NEEDED IN SPLINE
C CALCULATION OP PALL VELOCITY (VPALL) BELOW.
C
DATA DIAVFL/.035,.O5..08,.1,.2,.5,.8,1.,2.,5.,8.,10./
DATA VPL/.001,.0021,.0053,.0084,.028,.062,.082,.094,.130,
$ .20,.245,.270/
DATA BVFALL/.06516542,.0822833,.1359694,.1702466,.1901943,
$ .07170594,.06298195,.05558953,.02601584..01910471,
$ .01256532,.01287912/
DATA CVFALL/.4923909,.6488011,1.140735,.5731256,-.3736484,
$ -.02131277,-.00776719,-.0291949,-.0003787943,-.001924914,
$ -.0002548826,.0004117841/
DATA DVPALL/3.475783,5.465927,-9.460148,-3.155913,.3914841,
t .01505064,-.03571286,.00960537,-.0001717911,.0001855591 ,
$ .0001111111,.0001111111/
c
C SVPL, P, BPUNC, CPUNC, DPUNC ARE PARAMBTBRS NEEDED IN SPLINE CALCULATION
C OP LAURSBN'S FUNCTION (PUNC) BELOW.
C
DATA SVPL/-4.60517,-3.91202,-3.21887,-2.81341,-2.52573,-2.30258,
$ -1.60944,-.91629.-.51083,-.22314,0.,.69315,1.38629,1.79176,
$ 2.07944,2.30258,2.99573,3.68888.4.09434,4.38203,4.60517,5.29832,
$ 5.99146,6.39693,6.68461.6.90776/
DATA P/1 .253,1.411,1.569.1.668,1 .758.1.792,1 .960,2.197,2.398,
$ 2.565,2.773,3.496,4.867.5.768,6.397,6.867,8.455,9.245,9.904,
f 10.1 27,10.275,10.545,10.692,10.799,10.878,10.933/
DATA BFUNC/.2288849,.2309644,.2149268,.3161113,.2249758,.1409309,
-------
184
.2907453,.4489659,. 4939646,.7892218,.9613132,1.469371,2.224274,
2.227120,2.096494,2.233934,1.642620,1.487729,1.199183,.6293903,
.6281968,.2352389,.2356600,.2792161,.2636840,.22S4239/
DATA CPUNC/-.007068473,.01006856,-.03320577,.2827604,-.5995552,
.2229258,-.006787031,.2350501,-.1240681,1.150371,-.3791451,
1.112114,-.02300823,.03002671,-.4840906,1.100025,-1.9531 07,
1.729647,-2.441297,.4607183,-.466067,-.1008493,.1014569,
.005964327,-.05995511,-.1114997/
DATA DFUNC/.008241137,-.02081047,.2597594,-1.022335,1.228592,
-.1104696,.1162986,-.2952353,1.476635,-2.284838,.7171412,
-.5458842,.04359956,-.5957051,2.366401,-1.46824,1.771023,
-3.428981,3.362434,-1.384460,.1756319,.09728969,-.07850358,
-.07638051,-.0769955,-.0769955/
IWP=13
C
C DIASED IS SEDIMENT MEDIAN DIAMETER IN MM.
C
DIA=DIASBD
IP(DIASBD.GB.DIATHBd) . AND.DIASED. LB.DIATHB(22»GO TO 10
IF(DIASBD.LT.DIATHEd) )DIA=DIATHB( 1 )
IF(DIASBD.GT.DIATHB(22»DIA=DIATHB(22)
WRITBdWP.S)
5 FORMATMX,'WARNING IN FUNLAU: THE SEDIMENT DIAMETER IS OUTSIDE THE
$ BOUNDS OF THE SHIELDS FACTOR CURVE; CODE. USED BNDPOINT')
10 THBTA=SPLBVA(22,DIA.DIATHB,SHIELD,BTHBTA,CTHBTA,DTHBTA)
C
C DIASDM IS SEDIMENT MEDIAN DIAMETER IN M.
C
DIASDM=0.001*DIASBD
C
C CONVERT DENSITY OF SEDIMENT (DBNSED) AND DENSITY OF HATER
C (DENWAT) FROM G/CM**3 TO KG/M**3.
C
DENSBD=DBNS ED*1000.0
DBNWAT=DENWAT*1000.0
C
C CALCULATE CRITICAL TRACTIVE FORCE FOR BEGINNING OF
C SEDIMENT TRANSPORT.
C
TCRIT=THETA*(DBNSBD-DBNWAT > *DIASDM
DIADTB>DIASDM/WDBPTH
C
C COMPUTE FACTOR (TOPFAC) USBD IN BOUNDARY SHEAR EQUATION IN SBDCON.
C
TOPFAC=DBNWAT*(DIADTH)**(1./3.1/590.0928
C
C CALCULATE RATIO OF SEDIMENT DIAMETER TO WATER DEPTH RAISED
C TO THE 7/6 POWER (TO BE USBD IN LAURSBN'S FORMULA BELOW).
C
RATIO=DIADTH**(7.0/6.0)
C
C CALCULATE SQ. ROOT OF BOUNDARY SHEAR (SHBAR) USBD IN LAURSBN'S
C FORMULA BELOW.
C
SHBAR=SQRT(WDBPTH*SLOPB*9.80665)
-------
185
C COMPUTE PALL VELOCITY (M/S).
C
DIA=DXASED
IF(DIASBD.GB.DIAVPL(1).AND.DIASED.LE.DIAVPL(12))GO TO 20
IP(DZASBD.LT.DZAVPL(1))DIA=DZAVPL(1)
IP(DIASBD.GT.OIAVPL(12))DIA=OIAVPL(12)
WRITE(IWP,15)
15 FORMAT<1X,'WARNING IN PUHLAU: THE SEDIMENT DIAMETER IS OUTSIDE THE
$ BOUNDS OP THE PALL VELOCITY CURVE; CODE USED BNDPOINT1)
20 VPALL=SPLBVA(12,DIA,DIAVPL,VPL.BVPALL,CVPALL,DVPALL)
C
C CALCULATE FUNCTION NBBDBD IN LAURSBN'S PORMULA. LOG'S USED POR ACCURACY.
C
SHBVPL=ALOG(SHBAR/VPALL)
IP(SHBVPL.GB.SVPL(1>.AND.SHBVPL.LB.SVPL(26»GO TO 50
IP( SHBVPL.LT.SVPLM))SHBVPL=SVPL(1)
IP(SHBVPL.GT.SVPL(26))SHBVPL=SVPL(26)
WRITE(IWP,25)
25 FORMATMX,'WARNING IN PUNLAU: THB BOTTOM SHEAR VELOCITY DIVIDED BY
* THB PALL VELOCITY IN LAURSBNS PUNCTION IS OUTSIDB THB BOUNDS OP L
$AURSENS CURVE; CODE USED ENDPOINT')
50 PUNC=SPLBVA(26,SHBVPL,SVFL,P,BPUNC,CPUNC,DFUNC)
PUNC=BXP(PUNC)
RETURN
END
-------
186
SUBROUTINE OUTPUT(HON,IYR)
COMMON/OUT/ACMAXL,AVAZRL,AVAZRR,AVAZRB,AWDBPL,AHDBPR,AHDBPB,
$ ASDBPL,ASDBPR.ASDBPB.WVOLAL.HVOLAR,HVOLAB,SVOLAL,
$ SVOLAR,SVOLAB,SHSURL,SHSURR,SHSURB,SWGRWL,SWGRWR,
$ SHGRWB,SCONUL,SCONUR,SCONUB,SCOMLL,SCONLR,SCONLB,
f CONL1,COML2,COML3,CONR1(20),COMR2(20),CONR3(20),
$ CNCBD1(11),CNCBD2(11),CNCED3(11),CNCBU1(11>,CNCBU2(11),
$ CNCBU3(11),XBSTY(11),CONO1(10),CON02(10),CONO3(10),
f RBSUSB,WASHL,WASHR,WASHB,ACHAXR,ACMAXB,ACMAXS,
$ AVAZRS,ASDBPS,SVOLAS,SHGRWS,SCOMUS,SCOMLS,RBSUSS,
$ RBSUSL,RBSUSR,SCONML,SCONMR,SCOMMB,SCOMMS,SHSURS,
$ WASHS.ARBAK3)
COMMON/FLAGS/AIRPLG.AXRPOL,TRICON,LAKE,RIVBR,
$ BSTU,OCEAN.SEDRIV,SBDLKB,DISPLG,CHMFLG,WATBOD
COHHON/HPARL/WVBLLd2,10),WMINL(12,10),WMTLKB,ARBALK,
$ HDBPL,WVOLL
COMMON/WPARR/WVBLR(12,10),WMINR(12,10),HMTRIV(20),
$ NR,WWIOR,WLBNR,WDEPR,WVOLR,WMTOLD,AREAR
COMMON/WPARB/HVBLB(12,10),WHINE(12,10),TIDMAX,EL,HWIDB,
$ WLBNB,WDBPB,NPTSB,ARBAB
COMMON/NPARO/WVBLO(12,10).WCINO(12,10),BO,XOCBAN,NPTSO
REAL LAKE,NO
DIMENSION AMOM2)
DATA YES/4H YBS/,ARBA/4HARBA/,NO/4H NO/
DATA AMD/1 OCT',1 NOV,' DEC1,1 JAN',' PBB',' MAR',
$' APR',1 MAY1,1 JUN',' JUL',1 AUG',' SEP1/
C
C LAKE RESULTS ARE WRITTEN WITH UNIT fl IWL, RIVER RESULTS WITH UNIT
C f IWR, ESTUARY RESULTS WITH UNIT fl IWB, t OCEAN RESULTS WITH UNIT
C • IWO. IP NO WATER BODY IS CONSIDERED, UNIT I IWL IS USED TO WRITE
C THE RESULTS.
C
IWL=14
IWR=15
IWB=16
IWO=17
IP(MON.GT.1)GO TO 100
IP(WATBOD.BQ.NO)GO TO 96
C
C
IP(LAKE.NB.YBS)GO TO 30
WRITE(IWL,10)
10 FORMAT('1',33X,'MONTHLY POLLUTANT CONCENTRATIONS AND INTERACTION T
SBRMS')
WRITE(IWL,20)
20 FORMAT('0',50X,'WATER BODY IS A LAKE')
WRITB(IWL,22)ARBALK
22 FORMAT('0',33X,'CONTAMINATED WATER (SURFACE AREA) IN M**2 = ',
S1PB10.3)
WRITB(IWL,24)ARBA1(1)
24 FORMAT(34X,'CONTAMINATED SOIL ARBA (1ST MONTH) IN M**2 = ',
S1PB10.3)
WRITB(IWL,2 5)IYR
25 FORMAT('0',56X,'YEAR ',12)
C
C
-------
187
30 IF(RIVBR.NB.YBS)GO TO 50
WRITE(IHR,10)
WRITEIYR
95 FORMAT('0',40X,'YEAR ',12)
WRITEdWO, 103)
103 FORMAT(33X,'CONCENTRATIONS (UG/M**3)')
WRITE(IWO,104)
104 FORMAT(//,19X,'WATER (NEUTRAL)',
$ 3X,'WATER (IONIC)',3X,'WATER (ADSORBED)')
GO TO 100
C
C
96 WRITE(IWL,10)
WRITE(IWL,97)
97 FORMAT('O1,46X,'NO WATER BODY IS CONSIDERED')
WRITB(IWL,24)AREA1(1)
WRITE(IWL.25)IYR
GO TO 500
100 CONTINUE
IF(WATBOD.BQ.NO)GO TO 500
C
C
IF(LAKE.NB.YES)GO TO 200
WRITB(IWL,105)AMO(MON)
105 FORMAT(1X,3X.A4)
WRITE(IWL,110)
110 FORMATC1X,1 CONCS ',3X.'MAXIMUM AIR',3X,'AVERAGE AIR',5X,
I'WAT NEUTRAL',1X,' WAT IONIC ',2Xt'WAT ADSORBED',2X,
-------
188
$'UPPER SOIL',2X,'MIDDLE SOIL',2X,'LOWER SOIL',2X,'RBSUSPENSION')
ACMAXL=ACMAXL+RESUSL
AVAIRL=AVAIRL+RESUSL
IF(AIRPLG.EQ.ARBA)GO TO 130
WRITS(IWL,120)ACMAXL,AVAZRL,CONL1,CONL2,CONL3,SCOMUL,SCONML,
$ SCONLL.RBSUSL
120 FORMATMX, • (U6/M**3) ' ,2MPB1 0 . 3 , 4X) , 2X, 1PB1 0 . 3.
$2X,6(1PB10.3,3X»
GO TO 150
1 30 WRITE(IWL,140)AVAZRL,CONL1,CONL2,CONL3,SCONUL,SCONML,SCONLL,RBSUSL
140 FORMATMX, ' ,/)
C
c
200 IF(RIVBR.NB.YBS)GO TO 300
WRITB(IWR.105)AMO(MON)
WRITBdWR, 110)
IR=1
ACMAXR=ACMAXR+RBSUSR
AVAIRR=AVAIRR+RBSUSR
IF(AIRFLG.BQ.AREA)GO TO 215
WRITBdWR, 21 0)ACMAXR,AVAIRR,IR,CONR1 ( 1 ) ,CONR2( 1 ) ,CONR3( 1 ) ,
* SCONUR,SCONMR,SCONLR,RBSUSR
210 FORMATMX, ' (UG/M**3) ' , 1X, 1PB1 0 . 3 , IX, 1PB1 0 . 3 , ' IR=' , 12, 1PB1 0 . 3 ,
$2X,6MPB10.3,3X»
GO TO 218
215 WRITBdWR, 21 7 )AVAIRR, IR.CONR1 (1 >,CONR2(1 ) ,CONR3(1 ),
$ SCONUR,SCONMR,SCONLR,RBSUSR
217 FORMATMX, ' (UG/M**3) ***********•,3X,1PE10.3.' IR=',I2,
$1PB10.3,2X,6(1PB10.3,3X))
218 IF(NR.BQ.1)GO TO 235
DO 220 IR=2,NR
220 WRITBdWR, 230 )IR,CONR1 (IR) ,CONR2(IR) ,CONR3(IR)
230 FORMATMX.36X, ' IR= ' , 12, 1PB1 0 . 3 , 2X, 2( 1PB10 . 3 , 3X»
235 CONTINUE
WRITE(IWR,160)
WRITE(IWR,170)AWDBPR,ASDBPR,WVOLAR,SVOLAR,SWSURR,
$ SWGRWR.WASHR
C
C
300 IF(BSTU.NB.YBS)GO TO 400
WRITE(IWB,105)AMO(MON)
WRITE(IWE,110)
IXBST=XBSTY(1)
ACMAXE=ACMAXB+RBSUSB
AVAIRE=AVAIRB+RBSUSE
IF(AIRFLG.BQ.ARBA)GO TO 320
WRITE (IWB,310)ACMAXB.AVAIRB,IXBST.CNCBU1(1),CNCBU2(1),CNCBU3(1),
-------
189
$ SCOMUB.SCONMB,SCONLB,RBSUSB
310 FORMAT(1X,'(UG/M**3) ',1X,1PB10.3.4X,1PB9.2,' X=',16.1PB10.3,
S6(1PB10.3,3X»
GO TO 340
320 WRITE(1KB.330>AVAXRB,XXBST,CNCBU1(1),CMCBU2(1),CNCEU3(1),
* SCOHUB,SCONMB,SCONLB,RBSUSB
330 FORMAT(1X,•(UG/M**3) **********«", 3X. 1PB9 . 2, ' X=',I6,
$1PB10.3,6(1PB10.3,3X))
340 DO 350 1=1.NPTSB
18=1+1
ZXBST=XBSTY(IB)
WRITE(IWE,360)IXBST,CNCBD1(IB),CNCBD2(IB),CNCBD3(IE)
XXBST=-XXBST
350 WRITE(IWB,360)IXBST,CNCBU1(IB),CNCBU2(IB>,CNCBU3(XB)
360 FORMAT(1X,35X,'X='.16.1PB10.3,2(1PB10.3,3X>)
WRITB(IWE,160)
WRITE(1KB,170)AWDBPB,ASDBPB,WVOLAE,SVOLAB,SWSURB,
9 SWGRWB.WASHB
C
C
400 IP(OCEAN.MB.YBS)RETURN
WRITE(IWO,405)AMO(MON)
405 PORMAT(2X,A4)
OCNPT=0.
DO 420 1=1.NPTSO
OCNPT=OCNPT+XOCBAN
420 WRITB(XHO.410)OCNPT,CONO1(I)tCONO2(I),CONO3(I)
410 FORMAT(7X,'X= ',E9.2,2X,3(1PE10.3,7X))
RETURN
C
C
500 CONTINUE
WRITE(IHL.105)AMO(MON)
WRITE(IWL,110)
ACMAXS=ACMAXS+RBSUSS
AVAIRS=AVAIRS+RBSUSS
IF(AIRPLG.EQ.ARBA)GO TO 520
WRITE(IWL,510)ACMAXS,AVAIRS,SCONUS,SCONNS,SCONLS,RBSUSS
510 FORMAT(1X,'(UG/M**3) ' , 2( 1PB1 0 . 3 , 4X) . 2( 2X, • *********'),3X,
$• *********',3X,4(1PB10.3,3X»
GO TO 540
520 WRITE(IWL,530)AVAIRS,SCONUS,SCONMS,SCONLS.RBSUSS
530 PORMATdX, ' (UG/M**3) ***********',3X.1PB10.3,6X,' *********•,
$2X,' *********',3X,' «»»*»»»»*•,3X,4(1PE10.3,3X))
540 WRITE(IWL,160)
WRITE(XWL,550)ASDBPS.SVOLAS,SWSURS,SWGRWS,WASHS
550 PORMATdX, ' (UG/MON) ***********',3X,1PB10.3,6X,' »********',
$2X,4(1PB10.3,3X),/)
RETURN
BND
-------
190
SUBROUTINE READIN
COMMON/MEDIA/AWMINR,AHMOUR,WAMOUR(20),AHMZNL,AWMOUL.
$ WAMOUL,SHHINL,SHMXNR,AWMINE,AWMOUB,SWMINE,WAMOUE,
S SAMOUL,ASHZOL,ASMIWL,SAMOUR,ASMIDR,ASMIWR,SAHOUE,
$ ASMIDE,ASMZWE,ASMOWL,ASMODL,ASMODR,ASMOWR,
$ ASMODE,ASMOWB,SWMOUL,SWMOUR,SWMOUE,CUMLKE,
$ CLMLKB.CUMRIV.CLMRIV,CUMEST,CLHEST,ASMODS,ASMOWS,
$ ASMZOS,ASMZWS,SAMOUS,CUMS,CLHS,SUMLKE,SLMLKB,CUSALK,
$ CLSALK,LZGCUL,LZGCLL,SUMRIV,SLMRZV,CUSARV,CLSARV,
$ LIGCUR,LZGCLR,SUMEST,SLMEST,CUSABS,CLSABS,LZGCUE,
$ LZGCLB,SUMS,SLMS,CUSAS,CLSAS.LIGCUS,LZGCLS,CHMLKB,
$ CMMRIV,CHHBST,CMMS.SMMLKE,SMMRIV,SHMBST,SMMS,
$ CMSALK,CMSARV,CMSABS,CMSAS,LZGCHL,LZGCMR,LIGCME,
$ LZGCMS
COMMON/FLAGS/AIRFLG,AZRPOL,TRZCON,LAKE,RZVBR,
$ BSTU,OCEAN,SBDRZV,SBDLKE,DISPLG.CHMFLG,WATBOD
COMMON/ALPHAS/AIL, A2L,A3L,A1R,A2R,A3R,A1E,A2E,A3E,
$ A10.A20.A30
COMMON/AIRPAR/QS (1 2', 1 0 ) , UW (1 2 ,1 0 ) . HMZX (12,10). CTYLTH,
$ UDG,UDP,WRATG,WRATP.AK,HS,VS,SRAD,RHO,ENTPY
COMMON/WPARL/WVBLL(12,10),WMINL(12,10),WMTLKE,ARBALK,
$ WDEPL.WVOLL
COMMON/WPARR/WVELR(12,10),WMINR(12,10),WMTRZV(20),
$ NR,WWZDR,HLBNR,WDEPR,WVOLR,WMTOLD,ARBAR
COMMON/WPARB/WVBLE(12,10),WMINE(12,10),TZDMAX,EL,WWZDE,
$ WLENE.WDEPE.NPTSE,AREAS
COMMON/CAVPAR/HEFFIV,XMAX,HMZXZ,U,VG,UDPW,DBPPAC
COMMON/SPARS/ARS,AREAS,XLBNS
COMMON/SPARL/ARL.AREASL,XSOZL
COMMON/SPARR/ARR.AREASR
COMMON/SPARE/ARE.AREASE
COMMON /AP/ GEOM(20),LOAO(6),RUNLO(6),RUNM1(10,12),RUNM2(10,12)
COMMON /HB/ HYDBALM3, 10)
COMMON/SDPARE/SEDCE(12.10),CONSDB
COMMON/SDPARO/SBDCO(12,10).CONSDO
COMMON/SDPARR/SBDCR(12,10),DZASDR,DBNSDR,DBNWR,SLOPBR,CONSDR
COMMON/SDPARL/SEDCL(12,10),OZASDT,DBNSDT,DBNWT.SLOPBT,WDEPT,CONSDL
COMMON/BQUZL/DZSK,HPLUSL,HPLUSR,HPLUSB,HPLUSO,
S SWKSWL,SWKSWR,SWKSWE,SWKSWO
COMMON/WPARO/HVBLO(12,10).HCZNO(12.10),BO,XOCBAN,NPTSO
COMMON/WRATES/WKVL. HKPL,WKOL,HKBL,WKHL,
f WKVR,HKPR,HKOR,HKBR,WKHR,
f WKVB,WKPE,WKOE,WKBE,WKHB,
$ HKVO,HKPO.WKOO,HKBO,HKHO
COMMON /EX/ JRUN,LEVEL,JRB,JSO,JCH,JNUT,JAPPL,JYRS
COMMON /TZ/ TZTLES(5,12)
DZMENSZON AMO(12)
REAL LAKE,NO,NONE
DATA AMD/' OCX',' NOV,' DEC',' JAN',' FEB',' MAR',
$' APR',• MAY',' JUN',' JUL',' AUG',' SEP'/
DATA YES/4H YBS/.NO/4H NO/,NONE/4HNONE/,AREA/4HARBA/,
$ POZNT/4HPOZN/,PART/4HPART/,GAS/4H GAS/,ACZD/4HACZD/,
$ BASB/4HBASB/
C
C ZRF UNZT • FOR PZLB READING ZN MODEL FLAGS
C
-------
191
IRP=10
C
C IRA UNIT * FOR FILE READING IN AIR PARAMETERS
C
IRA=11
C
C IRW UNIT # FOR FILE READING IN HATER PARAMETERS
C
IRW=12
C
C IWP UNIT ft FOR OUTPUT MESSAGES (ALSO, OUTPUTS INPUT DATA)
C
IWP=13
C
C IHG UNIT • FOR GENERAL OUTPUT FILE
C
IWG=13
C
READ(IRF,10) AIRFLG,AIRPOL
10 FORMAT(A4,6X,A4,6X,A4>
READ(IRF,10) LAKE,SEDLKE,TRICON
READdRF.IO) RIVER, SEDRIV
RBAD(IRF,10) ESTU.DISF-LG
READ(IRF,10) OCEAN
WATBOD=YES
IF(LAKE.EQ.NO.AND.RIVER.EQ.NO.AND.ESTU.EQ.NO.AND.OCEAN.EQ.NO >
$ WATBOD=NO
IF(WATBOD.NE.NO)READ(IRF,10)CHMFLG
WRITE(IWP,1)
1 FORMAT('1', 44X,'MODEL FLAGS THAT DETERMINE WHAT USER INPUTS')
WRITE(IWP,2)
2 FORMAT('0',26X,'OPTION CHOSEN',6X,'NAME',21X,'MEANING',/)
IF(AIRFLG.EQ.POINT)WRITE(IWP,3)
3 FORMAT(35X.'POINT',5X,'AIRFLG',5X,'SIGNIFIES AIR POINT SOURCE')
IF(AIRFLG.EQ.AREA)WRITE(IWP,4)
4 FORMATO6X, 'AREA' ,5X, 'AIRFLG' ,5X, 'SIGNIFIES AIR AREA SOURCE')
IF(AIRFLG.EQ.NONE)WRITE(IWP,5)
5 FORMAT(36X,'NONE',5X,'AIRFLG',5X,'SIGNIFIES NO AIR SOURCE')
IF(AIRPOL.EQ.GAS)WRITE(IWP,6)
6 FORMATO7X. 'GAS' ,5X, 'AIRPOL' ,5X, 'SIGNIFIES POLLUTANT IS A GAS')
IF(AIRPOL.EQ.PART)WRITE(IWP,7)
7 FORMAT(27X,'(PART)ICULATE',5X,'AIRPOL',5X,'SIGNIFIES POLLUTANT IS
$A PARTICULATB')
C
C
IF(LAKE.EQ.YES)WRITE(IWP,8)
8 FORMAT(37X,'YES1,6X,'LAKE'.6X,'SIGNIFIES THAT A LAKE IS BEING CONS
$IDERED')
IF(LAKE.BQ.NO)WRITE(IWP,9)
9 FORMATO8X.'NO' ,6X.'LAKE',6X,'SIGNIFIES THAT A LAKE IS NOT BEING C
«ONSIDERED')
IF(LAKE.EQ.NO)GO TO 25
IF(LAKE.EQ.YES)GO TO 1020
WRITE!IWP,1010)LAKE
1010 FORMATMX,'ERROR IN DATA: LAKE DOES NOT EQUAL YES OR NO, BUT = ',
$ A4)
-------
192
STOP
1020 IF(SEDLKE.EQ.YES.OR.SEDLKE.EQ.NO)GO TO 1040
WRITE(IHP,1030)SEDLKE
1030 FORMAT(IX,'ERROR IN DATA: SEDLKE DOES NOT EQUAL YES OR NO, BUT = '
$. A4)
STOP
1040 IF(TRICON.EQ.YES.OR.TRICON.EQ.NO)GO TO 1060
WRITE{IHP,1050)TRICON
1050 FORMAT(1X,'ERROR IN DATA: TRICON DOES NOT EQUAL YES OR NO, BUT = '
$, A4)
STOP
1060 CONTINUE
IF(SEDLKE.EQ.NO)GO TO 13
WRITE(IHP,11)
11 FORMAT(37X,'YES1 ,5X, 'SEDLKE1 ,5X, 'SIGNIFIES THAT SEDIMENT CONCBNTRA
$TIONS FOR THE LAKE')
WRITE(IHP,12)
12 FORMAT(57X,'ARE INPUT (SEE BELOH)')
GO TO 25
13 IF(TRICON.EQ.NO)GO TO 19
WRITE(IHP,14)
14 FORMAT<38X,'NO1,5X,'SEDLKE',5X,'SEDLKE = NO AND TRICON = YES SIGNI
SPY THAT SEDIMENT')
WRITE(IHP,16)
16 FORMAT(37X, 'YES1 ,5X, 'TRICON' ,6X,'CONCENTRATIONS FOR A TRIBUTARY FL
SOWING INTO A LAKE')
WRITE(IHP,18)
18 FORMAT(57X,'ARE INPUT (SEE BELOH)')
GO TO 25
19 WRITE(IWP,21)
21 FORMAT(38X,'NO',5X,'SEDLKE',5X,'SEDLKE = NO AND TRICON = NO SIGNIF
$Y THAT SEDIMENT')
WRITE(IHP,23)
23 FORMAT(38X,'NO',5X,'TRICON',6X,'PARAMETERS (FOR LAURSBNS FORMULA)
$FOR A TRIBUTARY')
WRITE(IWP,24)
24 FORMAT(57X,'FLOWING INTO A LAKE ARE INPUT (SEE BELOW)')
C
C
25 IF(RIVER.EQ.YES)WRITE(IWP,26)
26 FORMAT(37X,'YES1,6X,'RIVER',5X,'SIGNIFIES THAT A RIVER IS BEING CO
SNSIDERED')
IF(RIVER.EQ.NO)WRITE(IHP,27)
27 FORMAT(38X,'NO',6X,'RIVER',5X,'SIGNIFIES THAT A RIVER IS NOT BEING
$ CONSIDERED')
IF(RIVER.EQ.NO)GO TO 41
IF(RIVBR.EQ.YES)GO TO 1120
HRITE(IHP,1110)RIVER
1110 FORMAT(1X,'ERROR IN DATA: RIVER DOES NOT EQUAL YES OR NO, BUT = '
$, A4)
STOP
1120 IF(SEDRIV.EQ.YES.OR.SEDRIV.EQ.NO)GO TO 1140
HRITE(IHP,1130)SEDRIV
1130 FORMAT(IX,'ERROR IN DATA: SEDRIV DOBS NOT EQUAL YES OR NO, BUT = '
$. A4)
STOP
-------
193
1140 CONTINUE
IF
WRITE(IWP,39)
39 FORMAT(57X,'FORMULA) FOR THE RIVER ARE INPUT (SEE BELOW)')
C
C
41 IF(BSTU.EQ.YES)WRITE
IF BSTU
1210 FORMAT(IX,'ERROR IN DATA: ESTU DOBS NOT EQUAL YES OR NO, BUT = '
$ ,A4)
STOP
1220 IF(DISFLG.EQ.YES.OR.DISFLG.EQ.NO)GO TO 1240
WRITE,
53 FORMAT(37X,'YES',6X,'OCEAN*,5X,'SIGNIFIES THAT AN OCEAN IS BEING C
SONSIDERED')
IF(OCEAN.BQ.NO)WRITB(IWP,54)
54 FORMATC38X,'NO',6X,'OCEAN1,5X,'SIGNIFIES THAT AN OCEAN IS NOT BEIN
$G CONSIDERED')
IF(OCEAN.EQ.YES.OR.OCEAN.BQ.NO)GO TO 1320
WRITE{IWP,1310)OCEAN
-------
194
1310 FORMAT(1X,'ERROR IN DATA: OCEAN DOES NOT EQUAL YES OR NO, BUT = '
$,A4)
STOP
1320 CONTINUE
C
c
IF(WATBOD.EQ.NO)GO TO 57
IP(CHHFLG.EQ.ACID.OR.CHHPLG.BQ.BASB.OR.CHMFLG.EQ.NONE)GO TO 1340
WRITE(IWP,1330)CHMFLG
1330 FORMAT<1X,'ERROR IN DATA: CHMFLG DOES NOT EQUAL ACID OR BASE OR NO
$NE, BUT = ',A4)
STOP
1340 CONTINUE
IF(CHMFLG.EQ.ACID)WRITE(IWP.55)
55 FORMAT(36X,'ACID1,5X,'CHMFLG1,5X,'SIGNIFIES THAT CHEMICAL IS AN AC
SID' )
IF(CHMFLG.EQ.BASE)WRITE(IWP,56)
56 FORMAT(36X,'BASE1,5X,'CHMFLG1,5X,'SIGNIFIES THAT CHEMICAL IS A BAS
$E')
IF(CHMFLG.EQ.NONE)WRITE(IWP,58)
58 FORMAT(36X,'NONE',5X,'CHMFLG1,5X,'SIGNIFIES THAT CHEMICAL IS NEUTR
$AL' )
57 CONTINUE
C
IF(OCEAN.EQ.YES.AND.LAKE.EQ.NO.AND.RIVER.BQ.NO.AND.BSTU.BQ.NO >
$ GO TO 100
C
WRITE(IWP,15)
1 5 FORMAT('0',//,51X,'AIR COMPARTMENT PARAMETERS INPUT')
WRITE(IWP,17)
17 FORMAT('0',15X.'DEFINITION',20X,'NAME',9X.'UNIT'.6X.'VALUE(S)',/)
DO 30 IYR=1,JYRS
READ(IRA,20) (UW(MON.IYR),MON=1.6)
20 FORMAT(20X.6E10.3)
WRITE(IWP,22)IYR,(UW(MON,IYR),MON=1,6)
22 FORMAT(1 OX, 'WIND SPEED FOR MON=1 , 6 IYR=',12,3X, •UW(MON,IYR)'5X,
$'M/S',5X,6(1PB10.3,1X))
READ(IRA,20) (UW(MON.IYR),MON=7,12)
30 WRITE(IWP,31)IYR,(UH(MON,IYR),MON=7,12)
31 FORMAT(25X,'MON=7,12 IYR=',12,27X,6(1PE10.3,1X))
READ(IRA,20) UDG,WRATG,AK
WRITE(IWP,32)UDG
32 FORMAT(7X,'DRY DEPOSITION VELOCITY FOR GASES',7X,'UDG',9X,'M/S',
$5X,1PE10.3)
WRITE(IWP,33)WRATG
33 FORMAT(17X,'WASHOUT RATIO FOR GASES',6X,'WRATG',8X,'(-)',5X,
S1PE10.3)
WRITE(IWP,34)AK
34 FORMAT(11X, 'AIR CHEMICAL DEGRADATION RATE',7X, 'AK' ,9X,'S**-1 ' , 4X,
S1PE10.3)
IF(AIRFLG.BQ.NONE) GO TO 100
DO 35 IYR=1,JYRS
READ(IRA,20) (QS(MON.IYR),MON=1,6)
WRITE(IWP,36)IYR,(QS(MON,IYR),MON=1,6)
36 FORMAT(2X,'AIR POLLUTANT RATE FOR MON=1, 6 IYR=',I2,3X,
*'QS(MON,IYR>',5X,'KG/S',4X,6(1PE10.3,1X))
-------
195
READ(IRA,20) (QS(MON,IYR),MON=7,12)
35 WRITE(IWP,31)IYR,(QS(MON.IYR),MON=7,12)
ZF(AZRFLG.BQ.ARBA) GO TO 70
IF(AIRFLG.EQ.POINT) GO TO 50
WRITE(IWP,40) AZRFLG
40 FORMAT(1X,'ERROR IN DATA: AZRFLG DOBS NOT EQUAL NONE,AREA, OR POZN
$T, BUT = ',A4)
STOP
50 DO 60 IYR=1,JYRS
READ(IRA,20) (HMIX(MON,IYR),MON=1,6)
WRITE(IWP,52)IYR,(HMIXCMON,ZYR),MON=1,6)
52 FORMAT(7X.'MIXING HBZGHT FOR MON=1, 6 IYR=',12,2X,'HMIXCMON,IYR)',
$5X,'M',6X,6(1PE10.3;1X))
READ(IRA,20) (HMIXCMON,ZYR),MON=7,12)
60 WRITE(IWP,31)IYR,(HMIX(MON,IYR),MON=7,12)
READ(ZRA,20) HS,VG,VS,SRAD.RHO,ENTPY
WRITE(IWP,61)HS
61 FORMAT(2BX,'STACK HEIGHT',7X,'HS',11X,'M1,6X,1PB10.3)
WRITE(IWP,62)VG -
62 FORMAT(9X, 'GRAVITATIONAL SETTLZNG VELOCITY',7X,'VG',1 OX, 'M/S',
$5X,1PB10.3)
WRITE(IWP,63)VS
63 FORMAT(17X,'STACK GAS EXZT VELOCITY',7X,'VS',1 OX,'M/S',5X,1PE10.3)
WRITE(IWP,64)SRAD
64 FORMAT(2BX, 'STACK RADIUS',6X,'SRAD',1 OX,'M' ,6X,1PB10.3)
WRITE(IWP,65)RHO
65 FORMAT(23X,'STACK GAS DENSITY',7X,'RHO1,8X,'KG/M**3',2X,1PB10.3)
WRITE(ZWP,66)BNTPY
66 FORMAT(19X,'ENTHALPY OF STACK GAS',6X,'ENTPY',8X,'J/KG',«X,
S1PE10.3)
GO TO 80
C
70 READ(ZRA,20) CTYLTH
WRITE(IWP,75)CTYLTH
75 FORMAT(12X,'LENGTH OF CITY OR URBAN AREA',5X,'CTYLTH',9X,'M1,
$6X,1PE10.3)
C
80 ZF(AZRPOL.BQ.PART) GO TO 90
ZF(AZRPOL.BQ.GAS) GO TO 100
WRITE(IWP,85) AZRPOL
85 FORMAT(IX,'ERROR ZN DATA: AZRPOL DOBS NOT EQUAL GAS OR PARTZCULATB
$, BUT = ',A4)
STOP
90 READ(ZRA,20) UDP.WRATP
WRITE(IWP,92)UDP
92 FORMAT(2X,'DRY DEPOSZTZON VELOCITY (PARTICULATBS)',7X,'UDP',9X,
S'M/S',5X,1PE10.3)
WRZTB(ZWP,94)WRATP
94 FORMAT(1 OX, 'WASHOUT RATZO FOR PARTICULATBS',6X, 'WRATP',8X,'(-)',
$5X,1PE10.3)
C
100 CONTZNUB
C
IF(WATBOD.NE.NO)GO TO 99
ZF(AZRFLG.NB.POINT)GO TO 98
READ(ZRA,20)XLENS
-------
196
WRITE(IWP,96)XLENS
96 FORMAT(2X, 'LENGTH OF PLUMB CONSIDERED (OVER SOIL)' ,6X, 'XLENS ' , 9X, '
$M',6X,1PB10.3)
98 WRITB(IWP,97)
97 FORMAT('0',//,36X,'NO HATER BODY IS CONSIDERED - SOIL AND AIR INTE
SRACTION ONLY* >
GO TO 300
C
99 WRITE(IWP,101)
101 FORMAT( '0' ,//,5 OX. 'WATER COMPARTMENT PARAMETERS INPUT' )
WRITE(IWP,17)
READ(IRW,20) DISK
WRITE(IWP,107JDISK
107 FORMAT(19X,'DISSOCIATION CONSTANT',6X,'DISK',7X,'MOLES/L',3X,
S1PE10.3)
C
C
IF(LAKE.NB.YES) GO TO 150
WRITE(IWP,113)
113 FORMAT('0','LAKE :',/)
DO 110 IYR=1,JYRS
RBAD(IRW,20) (WMINL(MON,IYR),MON=1,6)
WRITE(IWP,114)1YR,(WMINL(MON,IYR>,MON=1,6)
114 FORMAT<5X,'LAKE POLLUTANT RATE MON=1, 6 IYR=',12,2X,'WMINL(MON.IYR
$) ' , 3X, 'KG/S' ,
WVOLL=ARBALK*WDEPL
WRITE(IWP,129)HPLUSL
129 FORMAT(36X,'[H+]',5X,'HPLUSL',7X,'MOLBS/L',2X.1PB10.3)
READ(IRW,2 0) WKPL,WKHL,WKOL,WKBL,WKVL,SWKSWL
WRITE(IWP,102)WKPL
102 FORMAT<8X,'PHOTOLYSIS RATE CONSTANT (WATER)',6X,'WKPL',8X,'S**-1',
S4X.1PB10.3)
WRITE(IWP,103)WKHL
103 FORMAT(8X,'HYDROLYSIS RATE CONSTANT (WATER)',6X,'WKHL',8X,'S**-1',
S4X.1PE10.3)
WRITE(IWP,10 4)WKOL
104 FORMAT<9X,'OXIDATION RATE CONSTANT (WATER)',6X,'WKOL',8X,'S**-1',
$4X,1PE10.3)
-------
197
HRITE(IWP,105)HKBL
105 FORMAT(4X,'BIODBGRADATION RATE CONSTANT (WATER)',6X,'WKBL',8X,
$'S**-1'.4X.1PE10.3)
WRITE(IWP,106)WKVL
106 FORMAT(4X,'VOLATILIZATION RATE CONSTANT (WATER)',6X,'WKVL',8X,
$'S**-1'.4X.1PB10.3)
WRITE(IWP,112)SWKSWL
112 FORMAT(8X,'SOIL-WATER PARTITION COEFFICIENT',5X,'SWKSWL'.4X,
S'HOL/KG/MOL/L',1PE10.3)
C
IF(SEDLKE.BQ.YBS) GO TO 130
IF(TRICON.EQ.YES) GO TO 130
C
C HERE SBDLKE AND TRICON BOTH EQUAL NO SO MUST INPUT SEDIMENT
C PARAMETERS FOR TRIBUTARY FLOWING INTO LAKE.
C
READ(IRW.20) DIASDT,DBNSDT,DBNWT,WDBPT,SLOPBT
WRITE(IWP,124)DIASDT
124 FORMAT(3X,'MEDIAN SEDIMENT DIAMETER IN TRIBUTARY',5X,'DIASDT',9X,
$'MM',5X,1PB10.3>
WRITE(IWP,125)DENSDT
125 FORMATM1X.'SEDIMENT DENSITY IN TRIBUTARY',5X,'DENSDT',7X.'G/CM**3
$'.2X.1PE10.3)
WRITE(IWP,126)DENWT
126 FORMAT(14X,'WATER DENSITY IN TRIBUTARY',6X,'DBNWT',7X,'G/CM**3',
$2X,1PE10.3)
WRITE(IWP.127)WDEPT
127 FORMAT(22X,'DEPTH OF TRIBUTARY ',5X,'WDBPT',9X,'M',6X,1PE10.3)
WRITE(IWP,128)SLOPET
128 FORMAT(22X,'SLOPE OF TRIBUTARY ',4X,'SLOPBT',8X,'(-)',5X,1PB10.3)
GO TO 150
130 DO 140 IYR=1,JYRS
READ(IRW,20) (SEDCL(MON,IYR),MON=1,6)
IF(SBDLKB.BQ.YES)WRITB(IWP,132>IYR,
DO 160 IYR=1,JYRS
READ(IRW,20) (WMINR(MON,IYR),MON=1,6)
WRITE(IWP,154)IYR,(WMINR(MON,IYR),MON=1,6)
154 FORMAT(4X,'RIVER POLLUTANT RATE MON=1, 6 IYR=',12.2X.'WMINR(MON,IY
$R>',3X,'KG/S1,4X,6(1PB10.3,1X))
READ(IRW,20) (WMINR(MON,IYR),MON=7,12)
160 WRITE(IWP,31)IYR,(WMINR(MON,IYR),MON=7,12)
DO 170 IYR=1,JYRS
READ(IRW,20) (WVELR(MON,IYR),MON=1,6)
WRITE(IWP,162)IYR,(WVELR(MON,IYR),MON=1,6)
-------
198
162 FORMAT(ax,'RIVER WATER VELOCITY MON=1, 6 IYR=',12,2X,'WVBLRCMON,IY
$R)',3X,'M/S',5X,6(1PE10.3,1X))
RBAD(IRW,20) (WVELR(MON,IYR),HON=7,12)
170 WRITE(IWP,31)IYR,(WVELRCMON,IYR),MON=7,12)
RBAD(IRW,180) NR
180 FORMAT(28X,12)
WRITE(IWP,182)NR
182 FORMAT(23X,'NUMBER OF REACHES',7X,'NR'.1 OX,'(-)',12X,13)
READ(IRH,20) WLENR,WWIDR,WDEPR,HPLUSR
WRITE(IWP,181)HLENR
181 FORMAT(19X,'LENGTH OF RIVER REACH',6X,'WLBNR',9X,'M',6X,1PE10.3)
WRITE(IWP,188)WWIDR
188 FORMAT(2OX,'WIDTH OF RIVER REACH',6X,'WWIDR',9X,'M',6X,1PE10.3)
WRITE(IWP,183)WDEPR
183 FORMAT(2OX.'DEPTH OF RIVER REACH',6X,'WDEPR',9X,'M1,6X,1PB10.3)
WVOLR=WLENR*WWIDR*WDEPR
WRITE(IWP,189)HPLUSR
189 FORMAT(36X,'[H+]',5X,'HPLUSR',7X,'MOLBS/L',2X,1PE10.3)
READ(IRW,20) WXPR.WKHR,WKOR,WKBR,WKVR.SWKSWR
WRITE(IWP,191)WKPR
191 FORMAT(8X,'PHOTOLYSIS RATE CONSTANT
WRITE(IWP,193)WKHR
193 FORMAT(8X, 'HYDROLYSIS RATE CONSTANT (WATER)',6X,' WKHR',8X,'S**-1 ',
$4X,1PB10.3>
WRITE(IWP,194)WKOR
194 FORMAT<9X.'OXIDATION RATE CONSTANT ',6X,'WKOR',8X,'S**-1',
S4X.1PE10.3)
WRITE(IWP,196)WKBR
196 FORMAT(4X,'BIODEGRADATION RATE CONSTANT (WATER>',6X,'WKBR',8X,
$'S**-1',4X,1PB10.3)
WRITE(IWP,197)WKVR
197 FORMAT(4X,'VOLATILIZATION RATE CONSTANT (WATER)',6X,'WKVR',8X,
$'S**-1',4X,1PB10.3)
WRITE(IWP,198)SWKSWR
198 FORMAT<8X,'SOIL-WATER PARTITION COEFFICIENT'.5X,'SWKSWR',OX,
$'MOL/KG/MOL/L',1PE10.3)
IF(SEDRIV.EQ.YBS) GO TO 190
READ(IRW,20) DIASDR,DENSDR,DBNWR,SLOPBR
WRITE(IWP,184)DIASDR
184 FORMAT<7X,'MEDIAN SEDIMENT DIAMETER IN RIVER',5X,'DIASDR',9X,'MM',
$5X,1PE10.3)
WRITE(IWP,185)DBNSDR
185 FORMAT(15X,'SEDIMENT DENSITY IN RIVER',5X,'DBNSDR',7X,'G/CM**3',
$2X,1PE10.3)
WRITE(IWP,186)DENWR
186 FORMAT(18X.'WATER DENSITY IN RIVER',6X,'DENWR',7X,'G/CM**3',2X,
$1PE10.3)
WRITE(IWP,187)SLOPBR
187 FORMAT(26X,'SLOPE OF RIVER',5X,'SLOPBR',8X,'(->',5X,1PE10.3)
GO TO 200
190 DO 195 IYR=1,JYRS
READ(IRW,20) (SBDCR(MON.IYR),MON=1,6)
WRITE(IWP,192)IYR,(SBDCR(MON,IYR),MON=1,6)
192 FORMAT<2X,'SEDIMENT CONC. (RIVER) MON=1, 6 IYR=',I2,2X,
$'SBDCR(MON,IYR)',2X,'KG/M**3',2X,6(1PB10.3))
-------
199
READ(IRH,20) (SEDCR(HON,IYR),HON=7,12)
195 WRITE(IWP,31)IYR,(SEDCR(HON,IYR),MON=7,12)
C
c
200 XF(BSTU.NE.YBS) GO TO 250
WRITE(IWP,202)
202 FORMAT('0','ESTUARY :',/)
DO 210 IYR=1,JYRS
REAO(IRW,20) (WHINE(HON,IYR),MON=1,6)
WRITE(IWP,204)IYR,(WHINE(HON,IYR>,HON=1,6)
204 FORMAT<2X,'ESTUARY POLLUTANT RATE HON=1, 6 IYR=',12,2X,'WHINE(MON,
$IYR)',3X,'KG/S',
READ(IRW,20) (WHINE(HON,IYR),HON=7,12)
210 WRITE(IWP,31)IYR,(WHINE(HON,IYR),HON=7,12)
DO 220 IYR=1,JYRS
READ(IRW,20) (WVELE(MON,IYR),MON=1,6)
WRITE(IWP,212)IYR,(WVELE(HON.IYR),HON=1,6)
212 FORHATUX, 'FRESH WATER VELOCITY MON=1, 6 IYR=',12,2X,'WVELE(HON,IY
$R>',3X,'H/S1,5X,6(1PE10.3.1X))
RBAD(IRW,20) (WVELE(HON,IYR),HON=7,12)
220 WRITE(IWP,31)IYR,(WVELE(HON,IYR),HON=7,12)
READ(IRW,180) NPTSE
WRITE(IWP,222)NPTSE
222 FORHATdX,'* PTS UP & DOWNSTREAH OF SOURCE(OUTPUT)', 6X,'NPTSE',
$8X,'(-)'.12X.I3)
READ(IRW,20) WLBNE,WWIDE,WDEPE,EL.TIDHAX,HPLUSE
WRITE(IWP,2231WLENB
223 FORMAT(23X,'LENGTH OF ESTUARY',6X,'WLBNE',9X,'H',6X,1PE10.3)
WRITE(IWP,224)WWIDE
224 FORMAT<2«X,'WIDTH OF ESTUARY',6X,'WWIDB',9X.'H1,6X,1PB10.3)
WRITE(IWP,225)WDEPE
225 FORHAT(24X,'DEPTH OF ESTUARY',6X,'WDEPE',9X,'H1,6X,1PE10.3)
IF ( DISFLG. EQ . YES ) WRITE(IWP, 226 ) EL
226 FORMAT(5X,'LONGITUDINAL DISPERSION COEFFICIENT',7X,'EL',9X,
$'H**2/S',3X,1PE10.3)
IF(DISFLG.EQ.NO)WRITE(IWP,227)TIDHAX
227 FORMAT(18X,'HAXIHUH TIDAL VELOCITY',5X,'TIDHAX',8X,'H/S',5X,
S1PE10.3)
WRITE(IWP,229)HPLUSE
229 FORMAT(36X,'(H+]',5X,'HPLUSE1,7X,'HOLES/L',2X,1PB10.3)
READ(IRW,20) WKPB,WKHE,WKOE.WKBB,WKVE,SWKSWB
WRITE(IWP,231)WKPE
231 FORMAT(8X,'PHOTOLYSIS RATE CONSTANT (WATER)',6X,'WKPB1,8X,'S**-1',
S4X.1PB10.3)
WRITE(IWP,232)WKHE
232 FORMAT<8X.'HYDROLYSIS RATE CONSTANT (WATER)',6X,'WKHB',8X,'S**-1',
$4X,1PB10.3)
WRITE(IWP,233)WKOB
233 FORMAT(9X,'OXIDATION RATE CONSTANT (WATER)',6X,'WKOB',8X,'S**-1',
S4X.1PE10.3)
WRITE(IWP,234 JWKBE
234 FORMAT(HX,'BIODEGRADATION RATE CONSTANT (WATER)',6X,'WKBB',8X,
$'S**-1',4X,1PB10.3)
WRITE(IWP.235)WKVE
235 FORMAT(4X,'VOLATILIZATION RATE CONSTANT (WATER)',6X,'WKVE',8X,
$'S**-1',4X,1PE10.3)
-------
200
WRITE(ZWP,236)SWKSWE
236 FORMAT<8X,'SOIL-WATER PARTITION COEFFICIENT',5X,'SWKSWB',«X,
S'MOL/KG/MOL/L',1PE10.3)
C
DO 230 IYR=1,JYRS
READ(IRW,20) (SEDGE(MON,IYR),MON=1,6)
WRITE(IWP.228)IYR,tSEDCE(MON,IYR),MON=1,6)
228 FORMAT(1X,'SEDIMENT CONC.(ESTUARY) MON=1, 6 IYR=',12,2X,'SEDGE(MON
$,IYR)',2X,'KG/H**3',2X,6(1PE10.3.1X))
READ(IRW,20) (SEDCE(MON,IYR),MON=7,12)
230 WRITE(IWP,31)IYR.
WRITE(IWP,291)WKHO
291 FORMAT(8X,'HYDROLYSIS RATE CONSTANT (WATER)',6X,'WKHO',8X.'S**-1',
$4X,1PB10.3)
WRITE(IWP,292)WKOO
292 FORMAT(9X,'OXIDATION RATE CONSTANT (WATER)',6X,'WKOO',8X,'S**-1',
$4X,1PB10.3>
WRITE(IWP,293)WKBO
293 FORMAT(UX,'BIODEGRADATION RATE CONSTANT (WATER)',6X,'WKBO',8X,
$'S**-1',4X,1PB10.3>
WRITE(IWP,294)WKVO
294 FORMAT(4X,'VOLATILIZATION RATE CONSTANT (WATER)',6X,'WKVO', 8X,
$'S**-1',4X,1PE10.3)
WRITE(IWP,295)SWKSWO
295 FORMAT(8X,'SOIL-WATER PARTITION COEFFICIENT',5X,'SWKSWO',4X,
-------
201
$'MOL/KG/MOL/L',1PB10.3)
READ(IRW,180)NPTSO
WRITE(IWP,279)NPTSO
279 FORMAT(3X,'NUMBER OF POINTS FROM SOURCE (OUTPUT)',6X,'NPTSO',8X,'(
$-)'.12X.I3)
C
DO 280 IYR=1 , JYRS
READ(IRW,20) ( SEDCO(MON.IYR),MON=1,6)
WRITE(IWP,282)IYR,(SEDCO(MON,IYR),MON=1,6)
282 FORMAT(2X,'SEDIMENT CONC. (OCEAN) MON=1, 6 IYR=',12,2X,'SEDCO(MON,
$IYR)',2X.'KG/M**3',2X,6(1PE10.3,1X))
READ(IRH.20) (SEDCO(MON,IYR),MON=7,12)
280 WRITE(IWP,31)IYR,(SBDCO(MON,IYR),MON=7,12)
C
999 CONTINUE
300 CONTINUE
WRITE(IWG,310)
310 FORMAT('1•,61X.'SCENARIO',//)
WRITE(IWG,320)
320 FORMAT('0',54X,'TYPE OF SOURCE TERMS',/)
C
IF(AIRFLG.EQ.POINT)WRITE(IWG,330)
330 FORMAT(1X,57X,'AIR - POINT',//)
IF(AIRFLG.BQ.AREA)WRITE(IWG,340)
340 FORMATC1X.57X,'AIR -AREA',//)
IF(AIRFLG.EQ.NONE)WRITE(IWG,350)
350 FORMAT(1X,57X,'AIR -NONE',//)
C
WRITE(IWG,360)
360 FORMATMX,57X,'WATER BODY(IBS) CONSIDERED:')
IF(WATBOD.EQ.NO)WRITE(IWG,361)
361 FORMAT(69X,'- NONE')
IF(WATBOD.EQ.NO)GO TO 420
C
C
IF(LAKE.NE.YES)GO TO 385
DO 365 IYR=1,JYRS
DO 365 MON=1,12
365 IF(WMINL(MON,IYR).NE.O.O)GO TO 375
WRITE(IWG,370)
370 FORMAT(1X.68X,'- LAKE (NO SOURCE)')
GO TO 385
375 ILAKE=1
WRITE(IWG,380)
380 FORMAT(1X.68X,'- LAKE (HAS SOURCE)')
C
C
385 IF(RIVER.NB.YBS)GO TO 400
DO 390 IYR=1,JYRS
DO 390 MON=1.12
390 IF(WMINR(MON,IYR).NE.O.O)GO TO 395
WRITE(IWG,392)
392 FORMAT(1X.68X,'- RIVER (NO SOURCE)')
GO TO 400
395 IRIV=1
WRITE(IWG,397)
-------
202
397 FORMAT(1X,68X,'- RIVER (HAS SOURCE)1)
C
c
400 IF(BSTU.NB.YBS)GO TO 415
DO 405 IYR=1.JYRS
DO 405 HON=1,12
405 IF(WMZNE(MON,IYR).NE.O.O)GO TO 410
HRXTE(XHG,407)
407 FORMAT(1X.68X,'- ESTUARY (NO SOURCE)1)
GO TO 415
410 XEST=1
WRXTE(XWG,412)
412 FORMAT(1X,68X,'- ESTUARY (HAS SOURCE)')
C
C
415 IF(OCEAN.NB.YES)GO TO 420
DO 416 IYR=1,JYRS
DO 416 HON=1,12
416 IF(WCINO(MON,IYR).NB.O.O)GO TO 418
HRITB(XHG,417)
417 FORMAT(1X.68X.'- OCEAN (NO SOURCE)1)
GO TO 420
418 IOCN=1
HRITE(XHG,419)
419 FORMAT(1X,68X,'- OCEAN (HAS SOURCE)')
C
420 DO 422 MON=1,12
422 IF(RUNM1(4.MON).NE.O.O)GO TO 430
WRITE(IWG,425)
425 FORMAT('0',57X,'UPPER SOXL - NONE')
GO TO 450
430 XUPSL=1
HRXTB(XWG,440)
440 FORMAT('0',57X,'UPPER SOXL - DIRECT APPLICATION'>
450 DO 452 MON=1,12
452 IF(RUNM1(5.MON).NE.O.O)GO TO 456
WRITB(IWG,454)
454 FORMAT(58X,'MIDDLE SOIL - NONE')
GO TO 458
456 IMSL=1
WRITB(XHG,457)
457 FORMAT(58X,'MIDDLE SOXL - DIRECT APPLICATION')
458 DO 460 MON=1,12
460 IF(RUMM1(6,MON).NB.0.0)60 TO 480
WRITB(IHG,470)
470 FORMAT(58X.'LOWER SOIL - NONE')
GO TO 500
480 ILSL=1
WRITB(IWG,490)
490 FORMAT(58X,'LOWER SOIL - DIRECT APPLICATION')
C
500 WRITE(IWG,510)(TITLES(1,IR),IR=1,12)
510 FORMAT('0',//,55X,'GEOGRAPHIC REGION - ',12A4,//)
WRITE(IWG,520)
520 FORMAT('0',54X,'MAGNITUDE OF SOURCE(S)',/)
WRITB(IWG,530)(AMO(X),X=1,12)
-------
203
530 FORMAT(1X,6X,12(6X.A4>,/>
IF(AZRFLG.BQ.NONB)GO TO 580
WRITE(IWG,540)
540 FORMAT(3X,'AIR')
WRITE(IWG,550)
550 FORMAT(1X,'(KG/SBC)')
DO 560 IYR=1,JYRS
560 WRITE(IWG,570)IYR,(QS(MON,IYR),MON=1,12)
570 FORMAT(2X,'YEAR ',12,2X,12(1PB9.2,IX))
580 IFdLAKE.NB. 1 )GO TO 620
WRITE(IWG,590)
590 FORMAT(/,2X,'LAKE')
WRITBdWG.SSO)
DO 610 IYR=1,JYRS
610 WRITE(IWG,570)IYR,(WMINL(MON,IYR),MON=1,12)
620 IFdRIV.NE. 1 )GO TO 650
WRITE(IWG,630)
630 FORMAT(/,IX,'RIVER')
WRITE(IWG,550)
DO 640 IYR=1,JYRS
640 WRITE(IWG,570)IYR,(WMINR(MON,IYR),HON=1,12)
650 IFdEST.NE. 1 )GO TO 680
WRITB(IWG,660)
660 FORMAT(/,1X,'ESTUARY1)
WRITBdWG.SSO)
DO 670 IYR=1,JYRS
670 WRITE(IWG,570)IYR,(WHINE(MON,IYR),MON=1,12)
680 IFdOCN.NE.1 )GO TO 720
WRITE(IWG,690)
690 FORMAT(/,1X,'OCEAN1)
WRITE(IWG,700)
700 FORMATMX, ' (KG/M**3) ' )
DO 710 IYR=1,JYRS
710 WRITE(IWG,570)IYR,(WCINO(MON,IYR),MON=1,12)
720 CONTINUE
IFdUPSL.NE. 1 )GO TO 750
WRITE(IWG,730)
730 FORMAT(/,1X,'UPPER SOIL')
WRITE(IWG,740)
740 FORMAT(1X,'(UG/MON)')
IYR=1
WRITE(IWG,570)IYR,(RUNM1(4,MON),MON=1,12)
750 IFdMSL.NE. 1 )GO TO 758
WRITE(IWG,752)
752 FORMAT(/,1X,"MIDDLE SOIL1)
WRITE(IWG,740)
IYR=1
WRITE(IWG.570)IYR,(RUNM1(5,MON),MON=1,12)
758 IF(ILSL.NE.1)RETURN
WRITE(IWG,760)
760 FORMAT,1X,'LOWER SOIL')
WRITE(IWG,740)
IYH=1
WRITE(IWG,570)IYR,(RUNM1(6,MON),MON=1,12)
RETURN
END
-------
204
SUBROUTINE SEDCON(ZHON,ZYR)
COMMON/FLAGS/AZRFLG,AZRPOL,TRZCOM,LAKE,RZVER,
$ ESTU,OCEAN,SBDRZV,SEDLKB,DZSFLG,CHMFLG,WATBOD
COMMON/WPARL/WVBLL(12,10),HMZNL(12,10),HHTLKB,AREALK,
$ WDBPL.WVOLL
COMMON/WPARR/WVELR(12,10),HMZNR(12,10),HMTRZV(20),
$ NR.WWZDR,WLBNR,WDBPR,WVOLR,WMTOLD,ARBAR
COMMON/SDPARR/SBDCR(12,10),DZASDR,DBNSDR,DBNWR,SLOPBR,CONSOR
COMMON/SDPARL/SBDCL(12,10),DZASDT,DBNSDT,DENNT,SLOPBT,WDBPT,CONSDL
REAL LAKE,NO
DIMENSION VDQ(20),PDAT(20>,BP(20),CP(20),DP(20)
C
C VDQ. PDAT, BP, CP, DP NEEDED FOR COMPUTING TRAPPING EFFICIENCY P FOR LAKES
C
DATA VDQ/.002,.003,.005..007,.01,.02,.03,.05,.07,.1,.2,
$ .3,.5,.7,1.,2.,3.,5.,7.,10./
DATA PDAT/.02,.14,.27,.355,.448,.60,.690,.775,.825..865, .925,
t .945,.965,.975,.980,.990,.990,.990,.990,.990/
DATA BP/146.8928,95.64891,47.32103,37.56698,25.43354,
9.952678,7.355743,2.710186,2.053512,.9171595,.339577,
.1245326,.07365036,.03086593,.01019481,.005425183,
-.001895546,.0005229092,-.0001960909,.0001960909/
DATA CP/-29434.42,-21809.42,-2354.518,-2522.503,-1521.977,
-26.10996,-233.5836,1.305765,-34.13947,-3.73896,-2.036866,
-.11 3578,-.1408333,-.0730889, . 0041 851 88,-'.00895482,
.001634091,-.0004248637,.00006536365,.00006536365/
DATA DP/2541667.,3242484.,-27997.51,111169.6,49862.22,
-6915.788,3914.823,-590.7538,337.7834,5.673646,
6.410959,-.04542552,.1129073,.0858601,-.004380003,.003529637,
-.0003431592..00008170456,0.,0./
DATA NO/4H NO/.IHP/13/
MON=IMON
IP(SEDRIV.NB.NO.OR.RIVER.BQ.NO)GO TO 200
10 IF(MON.GT.1.OR.IYR.GT.1)GO TO 100
C
C THE FOLLOWING COMPUTES THE SEDIMENT CONCENTRATION FOR A
C RIVER OR STREAM. 1ST, COMPUTE LAURSBNS FUNCTION.
C
CALL FUNLAU(DIASDR,DBNSDR,DBNWR,WDBPR,SLOPER,
$ TCRITR,FUNCR,TOPFCR,RATIOR)
100 TOPRIM=TOPFCR*(WVBLR(MON,IYR)**2)
IF((TOPRIM/TCRITR).GT.1.0)GO TO 150
WRITE(IWP,125)
125 FORMATMX,'STOP IN SBDCON (IN RIVER CALCULATION): TOPRIM/TCRITR I
$S < 1.0 CAUSING SEDIMENT CONCENTRATION TO BE NEGATIVE. USSR SHOULD
$ CHECK INPUT DATA FOR ERRORS. IF NO ERRORS, USER SHOULD SET SBDRIV
$ TO YES AND INPUT EMPIRICAL (GENERIC) DATA (PARAMETER SBDCR(MON,IY
$R))')
STOP
C
C HERB CONSDR IS SEDIMENT CONCENTRATION (X BY WEIGHT) (LAURSENS FORMULA)
C
150 CONSDR=RATIOR*((TOPRIM/TCRITR)-1.0>*FUNCR
C
C CALCULATE CONSDR IN KG/M**3
C
-------
205
CONSDR=CONSDR/((CONSDR/DENSDR)+{(100.0-CONSDR)/DBNWR)>
C
c
C THE FOLLOWING COMPUTES THE SEDIMENT CONCENTRATION FOR A LAKE.
C
200 CONTINUE
IF(SBDLKB.NE.NO.OR.LAKE.EQ.NO)RETURN
IF(TRICON.BQ.NO)GO TO 225
C
C HERB, CONSDL IS SEDIMENT CONCENTRATION FOR TRIBUTARY FLOWING INTO
C A LAKE.
C
CONSDL=SEDCL(MON,IYR)
GO TO 245
225 IFCMON.GT.1.OR.IYR.GT.1)GO TO 230
C
C CALCULATE SEDIMENT CONCENTRATION FOR TRIBUTARY FLOWING INTO LAKE.
C 1ST, COMPUTE LAURSEN'S FUNCTION USING TRIBUTARY PARAMETERS.
C
CALL FUNLAU(DIASDT,DENSDT,DBNWT,WDBPT,SLOPBT,TCRITT.FUNCT,
$ TOPFCT.RATIOT)
230 TOPRIM=TOPFCT*(WVELL(MON,IYR)**2>
IF((TOPRIM/TCRITT).GT.1.0)GO TO 240
WRITB(IWP,235)
235 FORMATMX,'STOP IN SEDCON (IN LAKE CALCULATION): TOPRIM/TCRIT IS
* < 1.0 CAUSING SEDIMENT CONCENTRATION TO BE NEGATIVE. USER SHOULD
SCHECK INPUT DATA FOR ERRORS. IF NO ERRORS, USER SHOULD SET SBDLKB
STO YES AND INPUT EMPIRICAL (GENERIC) DATA (PARAMETER SBDCL(MON,IYR
$) ) ' )
STOP
C
C HERE CONSDL IS SEDIMENT CONCENTRATION (X BY WEIGHT). (LAURSBNS FORMULA)
C
240 CONSDL=RATIOT*((TOPRIM/TCRITT)-1.0)*PUNCT
C
C CALCULATE CONSDL IN KG/M**3
C
CONSDL=CONSDL/((CONSDL/DBNSDT)+((100.0-CONSDL)/DBNWT))
245 CONTINUE
C
C HERE, NEED MEAN TRIBUTARY FLOW VELOCITY (MONTHLY) AND LENGTH OF
C LAKE TO COMPUTE VOLUME OF LAKE/FLOW RATE (IN S)
C
250 VOLFLO=SQRT(ARBALK)/WVBLL(MON,IYR)
C
C CONVERT VOLFLO TO YEARS
C
VOLFLO=VOLFLO/3.1536B+7
IFCVOLPLO.LT..002.OR.VOLFLO.GT.10.0)GO TO 300
C
C CALCULATE TRAPPING EFFICIENCY P USING SPLINE
C
P=SPLBVA(20,VOLFLO,VDQ,PDAT.BP,CP,DP)
GO TO 400
300 IF(VOLFLO.LT..002)P=0.0
IF(VOLFLO.GT.10.0)P=.99
-------
206
C
C COMPUTE SEDIMENT CONCENTRATION IN LAKE CONSDL IN KG/M**3,
C
400 CONSDL=CONSDL*(1.0-P)
RETURN
END
-------
207
FUNCTION SPLEVA,B(NPTS),C(NPTS>,D(NPTS)
DATA I/1/
C
C THIS SUBROUTINE EVALUATES A CUBIC SPLINE FUNCTION USING
C HORNBR'S RULE.
C
C NPTS=» OF DATA POINTS
C U=ABSCISSA AT WHICH SPLINE IS TO BE EVALUATED
C X,Y=ARRAYS OF DATA ABSCISSAA I ORDINATBS
C B.C,D=ARRAYS OF SPLINE COEFFICIENTS
C
IF(I.GE.NPTS)I=1
IF(U.LT.X(I»GO TO 10
IF(U.LB.X(I+1 »GO TO 30
10 1=1
J=NPTS+1
20 K=(I+J)/2
IF(U.LT.X(K»J=K
IF(U.GB.X(K»I=K
IFCJ.GT.I+1>GO TO 20
C
C EVALUATE SPLINE
C
30 DX=U-X(I)
SPLEVA=Y (I) +DX* (BCD +DX* (C (I ) +DX*D ( I ) ) )
RETURN
END
-------
c
c
208
SUBROUTINE WATER(ZMON,IYR.DT,ISTEP,NSTBPS)
COMMOM/MBDZA/AHHZNR,AWHOUR,WAMOUR(20),AWHIML,AHHOUL,
WAMOUL,SHMZNL,SHHZNR,AWMZNB,AWMOUB,SWMZNB,WAMOUB,
SAMOUL,ASMIDL,ASHZWL,SAMOUR,ASMIDR,ASMZWR,SAMOUB,
ASMZDB,ASMZWB,ASMOWL,ASHODL,ASMODR,ASHOHR,
ASMODB,ASMONB,SHMOUL,SHMOUR,SWMOUB,CUHLKB,
CLHLKB,CUMRZV,CLMRZV,CUHBST,CLMBST,ASHODS,ASMOWS,
ASMIDS,ASMZHS,SAMOUS,GUMS,CLMS,SUHLKB,SLMLKB,CUSALK,
CLSALK,LZGCUL,LIGCLL,SUHRZV,SLMRZV,CUSARV,CLSARV,
LIGCUR,LZGCLR,SUMBST,SLHBST,CUSABS,CLSABS,LZGCUB,
LZGCLB,SUMS.SLMS,CUSAS,CLSAS,LZGCUS,LZGCLS,CMMLKB,
CMMRZV,CMMBST,CMMS,SMMLKB,SMMRZV,SMMBST,SMMS,
CMSALK.CMSARV,CMSABS,CMSAS,LZGCML,LIGCMR,LIGCME,
LZGCMS
COMMON/FLAGS/AZRPLG, AZRPOL,TRZCON,LAKE,RZVBR,
$ BSTU,OCEAN,SEDRZV,SBDLKB.DZSFLG,CHMPLG,HATBOD
COMMON/ALPHAS/A1L,A2L,A3L.A1R,A2R,A3R.A1B,A2B,A3E,
$ A1O.A2O.A30
COMMON/WPARL/WVBLL(12,10),WMZNL(12,10),HMTLKB,ARBALK,
$ WDBPL.WVOLL
COMMON/WPARR/WVBLRC12.10),WMZNRC12,10),WMTRZV(20),
$ NR,HHZDR,WLBNR,HDEPR.WVOLR,WMTOLD,ARBAR
COMMON/WPARB/WVELE (12,10), WMZNB (1 2 . 1.0 ) , TZDMAX, BL, HWZDB,
$ WLENB,WDBPB,NPTSB,ARBAB
COMMON/WPARO/WVBLO(12,10),WCINO(12,10),BO,XOCEAN,NPTSO
COMMON/WRATBS /HKVL , WKPL, WKOL , WKBL . WKHL,
WKVR.WKPR,HKOR,WKBR,HKHR,
HXVB,WKPB,WKOB,WKBB,WKHB,
HKVO,HKPO,WKOO.HKBO,HKHO
COMMON/OUT/ACMAXL,AVAIRL,AVAZRR,AVAZRB,AWDEPL,AWDBPR,AHDEPB,
ASDBPL,ASDBPR,ASDBPB,WVOLAL,HVOLAR.HVOLAB,SVOLAL,
SVOLAR,SVOLAB,SWSURL,SWSURR,SWSURB.SWGRWL,SHGRWR,
SWGRHB,SCONUL,SCONUR,SCONUB,SCONLL,SCONLR,SCONLB,
CONL1,CONL2,CONL3,CONR1(20),CONR2(20),CONR3(20),
CNCBD1(11),CNCBD2(11),CNCBO3(11),CNCEU1(11),CNCEU2(11>,
CNCBU3(11),XBSTY(11),CONO1(10),CON02(10),CON03(10),
RBSUSB,HASHL,WASHR,WASHE,ACMAXR,ACMAXB,ACMAXS,
AVAZRS,ASDBPS,SVOLAS,SWGRWS,SCONUS,SCONLS,RESUSS,
RBSUSL,RBSUSR,SCONML,SCONMR,SCONMB,SCONMS,SHSURS,
HASHS.AREAK3)
REAL LAKE
DATA YES/OH YBS/.NO/4H NO/
MON=IMON
IP(LAKE.NB.YES)GO TO 100
C COMPUTE TOTAL RATE CONSTANT WKTOTL
C
ZF(MON.BQ.1.AND.ISTBP.BQ.1.AND.IYR.BQ.1)WKTOTL=
$ WKPL+WKHL+WKOL+WKBL+WKVL
C
C WATER BODY IS A LAKE. COMPUTE TOTAL POLLUTANT SOURCE WMINLK.
C
WMINLK=WMINL(MON,IYR)+AWMINL+SWMZNL
IP(WMINLK.BQ.O.O.AND.WMTLKB.BQ.O.O)GO TO SO
-------
209
WKDL=WVELL(MON,IYR)/SQRT(ARBALK)
WKTL=WXTOTL*A1L+WKDL
WKTDT=-WKTL*DT
BXHKT=BXP(WKTDT)
C
C COMPUTE MASS OF POLLUTANT IN LAKE (WHTLKB).
C
WMTLKE=WMINLK*(1.0-BXWKT)/WKTL+WMTLKB*BXWKT
C
C CALCULATE VOLATILIZATION RATE OUT OF LAKE (WAMOUL)
C
50 WAHOUL=HKVL*A1L*WMTLKB
IFdSTBP.GT.1 )GO TO 75
WVOLAL=0.0
C
C CALCULATE TOTAL MONTHLY VOLATILIZATION IN UG FROM LAKE (NVOLAL)
C
7 5 WVOLAL=WVOLAL+WAMOUL*DT*1.OE+9
IP(ISTBP.LT.NSTEPS)GO TO 100
C
C CONVERT CONCENTRATIONS TO UG/M**3 (WERE KG/M**3)
C CONL1 IS UNDISSOCIATBD DISSOLVED (NEUTRAL) CONCENTRATION, CONL2 IS
C IONIC CONCENTRATION, AND CONL3 IS ADSORBED CONCENTRATION (SEDIMENT)
C
CONL1=1.OE+9*A1L*HMTLKB/WVOLL
CONL2=1.OB+9*A2L*WMTLKB/WVOLL
CONL3=1.OB+9*A3L*WMTLKB/WVOLL
C
C
100 IF(RIVER.NB.YES)GO TO 200
C
C HATER BODY IS RIVER
C
C
C COMPUTE TOTAL RATE CONSTANT HKTOTR
C
IF(MON.BQ.1.AND.ISTBP.BQ.1.AND.IYR.BQ.1)WKTOTR=
$ WKPR+WKHR+WKOR+WKBR+WKVR
WKDR=WVELR(MON,IYR)/WLENR
WKTR=HKTOTR*A1R+WKDR
HKTDT=-WKTR*DT
BXHKT=BXP(WKTDT)
DO 150 1=1,NR
C . -
C COMPUTE TOTAL POLLUTANT SOURCE HMIN INTO REACH I
C
WMIN=AWMINR+SWMINR/PLOAT(NR)
IFd.BQ.1 )HMIN=WMINR(MON,IYR)+HMIN
IF(I.GT.1)WMIN=WMIN+HKDR*WMTOLD
IF(WMIN.BQ.O.O.AND.HMTRIV(I).EQ.O.O)GO TO 125
WMTOLD=WMTRIV(I)
C
C CALCULATE MASS OF POLLUTANT IN REACH I (NMTRIV) AND VOLATILIZATION
C RATE FROM REACH I (WAMOUR)
C
WMTRIV(I)=WMIN*(1.0-BXWKT)/WKTR+WMTRXV(I)*BXWKT
-------
210
WAMOUR(I> =HKVR*A1R*HMTRIV(I)
125 IPdSTEP.GT. 1 .OR.I.GT.1 )GO TO 140
WVOLAR=0.0
C
C CALCULATE TOTAL MONTHLY VOLATILIZATION IN UG PROM RIVER (HVOLAR)
C
1 40 WVOLAR=HVOLAR+WAHOUR(I)*DT*1.OB+9
IP(ISTBP.LT.NSTBPS)GO TO 150
C
C CONVERT CONCENTRATIONS TO UG/M**3 (WERE KG/H**3)
C CONR1 IS NEUTRAL PORN, CONR2 IS IONIC PORM, t CONR3 IS ADSORBED PORM
C
CONR1(I)=1.OB+9*A1R*NMTRIV(I)/HVOLR
CONR2(I)=1.OB+9*A2R*WMTRIV(I)/HVOLR
CONR3(I)=1.OB+9*A3R*HHTRIV(I)/HVOLR
150 CONTINUE
C
C
200 IP(ESTU.NB.YBS)GO TO 450
C
C HATER BODY IS ESTUARY
C
C
C COMPUTE TOTAL RATE CONSTANT HKTOTB
C
IP(MON.EQ.1.AND.ISTBP.EQ.1.AND.IYR.BQ.1)HKTOTB=
t HKPB+HKHE+HKOB+HKBB+HKVE
IPdSTBP.GT. 1 )GO TO 300
IP(MON.GT.1 .OR.IYR.GT.DGO TO 250
XARBAB=HHIDB*HDBPB
HVOLE=XARBAB*HLBNE
IP(DISPLG.EQ.NO)BL=378.6359*TIDMAX**(4.0/3.0)
C
C TIDMAX IS MAXIMUM TIDAL VELOCITY IN M/S AND
C EL IS THE LONGITUDINAL DISPERSION COBPPICIBNT IN M«*2/S
C
BLTHO=2.0*BL
HLBD2=HLBNB/2.0
ESTPT=HLBD2/PLOAT(NPTSB)
250 CONTINUE
HKTB=HKTOTB*A1B
DISPAC=4.0*HKTB*BL
C
C HVBLB IS PRBSH HATER VELOCITY OP THE ESTUARY, POLLOHING TERMS ARE
C CALCULATIONS USED IN PINAL CONCENTRATION EQUATION.
C
BSTPAC=SQRT(HVBLB(MON,IYR)*HVBLB(MON,IYR)+DISPAC)
HVELBU=(HVBLB(MON,IYR)+BSTPAC)/BLTHO
HVBLED=(HVBLB(MON,IYR)-BSTPAC)/BLTHO
SOURCB=HMINB(MON,IYR)/(XARBAB*BSTPAC)
C
C SOURCE IS IN KG/M**3
C
300 CONTINUE
C
C COMPUTE POLLUTANT SOURCE PROM AIR (AHMINB) I SOIL (SHMINB)
-------
211
C
AWMINB=AWMINB/WVOLB
SNMZMB=SWMZNB/WVOLB
NMZHDK=(AWMZNB+SHMZNB)/WKTE
C
C WHZNDK ZS ZN KG/H**3
C
ZF(ZSTBP.LT.NSTBPS)GO TO 400
XBST=0.0
NPTSP1=NPTSB+1
DO 350 1=1.NPTSP1
C
C CALCULATE CONCENTRATION ZN ESTUARY AT SELECTED POZNTS BOTH
C DOWNSTREAM (CONCBD) ( UPSTREAM (CONCBU) FROM SOURCE
C
CONCED=WMZNDK+SOURCB*EXP(HVBLED*XBST >
CONCEU=WMZNDK+SOURCB*BXP(-HVBLBU*XBST)
XBSTY(Z)=XBST
XBST=XBST+BSTPT
C
C COMPUTE CONCENTRATZONS ZN NEUTRAL (CNCBD1 C CNCBU1), ZONZC (CNCBD2
C t CNCBU2) AND ADSORBED FORM (CNCBD3 t CNCBU3) ZN UG/M**3
C
CNCBD1 ( Z ) =CONCBD*A1 B* 1'. OB+9
CNCBU1(Z)=CONCEU*A1B*1.OB+9
CNCBD2(Z)=CONCBD*A2B*1.OB+9
CNCBU2(Z)=CONCBU*A2B*1.OB+9
CNCBD3(Z)=CONCBD*A3B*1.OB+9
CNCBU3(Z)=CONCBU*A3E*1.OB+9
350 CONTZNUB
400 CONTZNUB
C
C CALCULATE POLLUTANT MASS ZN ESTUARY
C
PMASSE=HVOLB*(SOURCE*((1.0-BXP(-WVBLBU*HLBD2))/HVBLBU+
$ (-1.0+BXP(WVBLBD*WLBD2))/HVBLBD)+
$ WMZNDK*WLBNB)/WLBNB
C
C CALCULATE VOLATILZZATZON RATE (KG/S) TO AZR (WAMOUB)
C
NAMOUB=HKVB*A1B*PMASSB
ZFdSTEP.GT.1 )GO TO 425
WVOLAB=0.0
C
C COMPUTE TOTAL MONTHLY VOLATZLZZATZON FROM ESTUARY ZN UG (HVOLAB)
C
425 HVOLAB=WVOLAB+HAMOUB*DT*1.OB+9
C
C
450 IF(OCEAN.NB.YBS)RETURN
C
C COMPUTE TOTAL RATE CONSTANT HKTOTO
C
IFCMON.BQ.1.AMD.ZSTBP.EQ.1.AND.ZYR.BQ.1)WKTOTO=
$ WKPO+WKHO+HKOO+HKBO+WKVO
ZF(ISTBP.LT.NSTBPS)RBTURN
-------
212
IF(MON.GT.1 .OR.ZYR.GT.DGO TO 500
C
C FACO IS 12.0*A/(B**2/3> WHERE A = .000464159 IN MKS UNITS
C
PACO=.0055699/(BO**(2./3. »
500 CONTINUE
OFAC=PACO/HVELO(MON,IYR)
WKTODV=-WKTOTO*A10/WVELO(MON,IYR)
OCNPT=0.0
DO 600 1=1,NPTSO
OCNPT=OCNPT+XOCBAN
C
C COMPUTE CONCENTRATION FOR OCEAN AT POINTS OUT FROM DIFFUSER
C
CMAXO=WCINO(MON,IYR)*EXP(WKTODV*OCNPT)*
$ BRFCSQRTM.5/((1.0+2.0*OFAC*OCNPT/3.0)**3-1.0)))
C
C CALCULATE CONCENTRATIONS IN NEUTRAL (CONO1), IONIC (CON02) AND
C ADSORBED (CONO3) FORMS IN UG/M**3.
C
CONO1(I)=1.OB+9*A10*CMAXO
CONO2(I)=1.OB+9*A20*CMAXO
600 CON03(I)=1.OB+9*A30*CMAXO
RETURN
END
-------
213
The following subprograms are the SESOIL routines that were modified
and adopted for the TOX-SCREEN model. They are in alphabetical order.
-------
214
FUNCTION COHP(CONC,MWT,SK,LIGC.MWTLIG,B,THA,OPTH)
REAL LIGC, MWT, MLC, INT, HWTLIG, HLCO
COHP=0.0
ZP(SK .BQ. 0.0) GO TO 99
IP(CONC.BQ.O.O)GO TO 99
IF(LIGC.EQ.O.O)GO TO 99
C
C SOLUTION HILL BE NEAR FULL COMPLEXATZON OF EITHER LIGAND OR
C POLLUTANT. MAKE INITIAL ESTIMATE OP COHPLEXED CONCENTRATION AND
C DETERMINE WHICH DIRECTION TO GO.
C
C
CP=CONC/(MWT*1.E6>
CLIG=LIGC/(MWTLIG*1.E6)
IF(CP .LT. CLIG/B)GO TO 10
C
C LIGAND IS LIMITING REAGENT
C
MLCO=CLIG/B
GO TO 20
C
C POLLUTANT IS LIMITING REAGENT
C
10 MLCO=CP
C
C TO AVOID CONVERGENCE PROBLEMS, IF CONC. OF COMPLBXED
C POLLUTANT IS IN THE SUB PPB RANGE, SET IT TO 0. (DON'T CALC.)
C
20 IF(MLCO*MWT*1.E6 .LT. 1.B-3)GO TO 99
C
C ITERATIVE SOLUTION OF EQUATION
C
C SET UP ITERATION PARAMETERS
C
IFIG=0
ISIG=0
INT=1. B8
C
C FIND APPROPRIATE ITERATION INTERVAL
C
28 IF(INT.LT.MLCO) GO TO 29
INT=INT/10.
GO TO 28
C
C USB NEGATIVE INTERVAL TO DECREASE CONCENTRATION
C
29 INT=-1*INT
IFIABS(INT).LT.1.E-7)GO TO 99
SVMLC=MLCO
MLC=MLCO+INT
C
C SOLVE EQUATION SYSTEM
C CONVERGENCE CRITERIA:BASED ON E
C
25 SK1=MLC/((CP-MLC)*((CLIG-B*MLC)**B))
E=SK1-SK
-------
215
C
C TEST FOR CONVERGENCE
C
305 AE=ABS(E)
C
C CONVERGENCE CRITERION 1, IS EQUATION BALANCED WITHIN 1 PERCENT
C
IF(AE.LT. 0.01) GO TO 400
C
C CONVERGENCE CRITERION 2, HAS IT CROSSED THE ORIGIN(OVERSHOT)
C
IF(E.LT.O) GO TO 402
C
C CONVERGENCE CRITERION 3. HILL THE NEXT STEP CAUSE A NEGATIVE
C CONCENTRATION
C
IFCMLC+INT .LT. O.OJGO TO 402
C
C NOT CONVERGED
C
IFIG=1
SVHLC=HLC
MLC=MLC+INT
GO TO 25
C
C TRY SMALLER INTERVAL(CRITERIA 2 OR 3)
C
402 IFCIFIG .EQ. 0) GO TO 410
ISIG=ISIG+1
IF(ISIG.EQ.6)GO TO 409
410 INT=INT/10.
IF(ABS(INT).LT.1.OE-8) GO TO 409
MLC=SVMLC+INT
GO TO 25
C
C STOP WHEN INTERVAL IS VERY SMALL,(I.E. CONCENTRATRATION IS
C CALCULATED TO WITHIN NUMERICAL ACCURACY OF THE MACHINE)
C
409 MLC=SVMLC
C
C FINAL CONVERGENCE OF EQUATION
C
400 COMP=MLC*MWT*THA*DPTH*1.E6
C
C SET COMPLEXBD MASS TO ZERO IF IN LOW RANGE
C
IF(MLC*MWT*1.E6 .GE. 1.E-3)GO TO 99
COMP=0.0
99 CONTINUE
RETURN
END
-------
216
FUNCTION DEPTHCTHA.N.IE.RG.DO.NI)
C
C THIS SUBROUTINE CALCULATES THE DEPTH OF THE RAINFALL FRONT.
C
REAL N,IZ,NI
FLOW=(IZ+RG)
IF(FLOW.LT.0.)FLOW=IA
DEPTH1=FLOW/(2.*THA*N*NI>
IP(DEPTH1 .LT. 0)DEPTH1=0.
DEFTH=DO + DEPTH1
RETURN
END
-------
217
FUNCTION PGAMA(X)
C
C THIS SUBROUTINE HAS BEEN CODED IN FORTRAN BY P.G. BAGLESON
C (BAGLESON,1977)
C
C
DIMENSION B(8)
DATA B/-0.577191165,0.98820589,-0.89705694,0.91820686,
$-0.75670408,0.48219939.-0.19352782.0.03586834/
C
C FOR 02, USB STERLING'S APPROXIMATION
4 IF(X-2.) 6,9,7
6 FGAMA=1.
X2=X-1
XII=1.
8 DO 5 1=1,8
XII=XII*X2
5 FGAMA=FGAMA+B(I)*XII
RETURN
9 FGAMA=1.
RETURN
7 XII=1./X
X2=XII*XII
X3=X2*XII
X4=X2*X2
FGAMA=(1.0+XII/12.0+X2/288.-139./51840.*X3
$-571./2488320.*X4)*2.50662B*X**(X-0.6)*EXP(-X)
RETURN
END
-------
218
FUNCTION PZB(D)
C ===============
C
C THIS SUBROUTINE HAS BEEN CODED IN FORTRAN BY P.G. EAGLBSON
C (EAGLBSON,1977)
C
C
C THIS FUNCTION COMPUTES THE DESORPTION COEFFICIENT BY MEANS OF A
C LOGARITHMIC INTERPOLATION OF THE VALUES GIVEN IN THE TABLE(SEE
C (SEE BAGLESON.1977)
C
DIMENSION Y(6)
DATA Y/0.18,0.11,0.077,0.056,0.044,0.034/
IFCD.GT.7.)GO TO 11
IFCD.LT.2.) GO TO 12
X=D-1.
I=IFIX(X>
FRAC=X-FLOAT(I)
Y1=ALOG(Y(I))
Y2=ALOG(Y(I+1))
FIB=BXP((Y2-Y1)*FRAC+Y1)
RETURN
11 FIB=0.034
RETURN
12 FIE=0.20
RETURN
END
-------
219
FUNCTION PII(D,SO,IOW>
C
C THIS SUBROUTINE HAS BEEN CODED IN FORTRAN BY P.G. BAGLBSON
C (BAGLBSON,1977)
C
C
C THIS FUNCTION COMPUTES THE SORPTION COEFFICIENT BY MEANS OF A
C DOUBLE LINEAR INTERPOLATION (BAGLBSON, 1977)
C
DIMENSION DK1 0,4)
DATA DI/0.295,0.314,0.345,0.375.0.415,0.440,0.477,0.520,0.560,0.6,
$0.234,0.254,0.280,0.310,0.345,0.382,0.428,0.478,0.537,0.6,
f0.192,0.205,0.232,0.264,0.300,0.340,0.390,0.450,0.520,0.6,
$0.142,0.151,0.175,0.203,0.234,0.274,0.323,0.390,0.482,0.67
IS=IFIX(SO*10.)
IFdS.GB.10) GO TO 30
IP(D-4.) 12,11,10
10 DD=2.
ID1=3
ID2=4
X=D-4.0
GO TO 13
12 ID1=IFIX(D)-1
ID2=ID1+1
X=D-FLOAT(ID1+1 )
DD=1.0
GO TO 13
11 ID1=3
102=3
X=0.0
DD=1.0
13 IFdS.LT.1 ) GO TO 20
17 CALL LINT(DI,ID1,IS.SO.VAL1,IOW)
14 CALL LINT(DI,ID2,IS,SO,VAL2,IOW)
15 PII=((VAL2-VAL1)/DD)*X+VAL1
RETURN
20 VAL1=DI(1,ID1)
VAL2=DI(1,ID2)
GO TO 15
30 FII=0.6
RETURN
END
-------
220
FUNCTION GAMA(A.X)
C
C THIS SUBROUTINE HAS BEEN CODED IN FORTRAN BY P.G. EAGLESON
C (EAGLESON.1977)
C
C
C THIS FUNCTION COMPUTES THE TRUNCATED GAMMA DISTRIBUTION
C ACCORDING TO THE ALGORITHM DEVELOPED BY THE NATIONAL BUREAU OF
C STANDARDS (HANDBOOK OF MATHEMATICAL TABLES; BAGLBSON,1977)
C
C
IFCX.EQ.O.) GO TO 13
SUM = 1./A
AN = 1.0
OLD=SUM
33 OLD=OLD*X/(A+AN>
IF(OLD/SUM-1.B-5) 20,10,10
10 AN=AN+1.
SUM=SUM+OLD
IF(AN-300.)33,33,12
12 WRITE(ION,100) X
100 FORMAT(1 OX,'NO CONVERGENCE CAN BE OBTAINED FOR X=',B20.6>
20 GAMA=(0.886227-BXP(A*ALOG(X)+ALOG(SUM)-X»
RETURN
C THE FOLLOWING STATEMENT IS A DEFINITION ONLY
13 GAMA=0.0
RETURN
END
-------
221
SUBROUTINE HYDROA(L,TA,NN,S,A,REP,T,MPA,MTR,MN,MT,MH)
C
C THIS SUBROUTINE CALCULATES ANNUAL HATER BALANCES
C
REAL NUT1.LOAD
COMMON /TI/ TITLBS(5,12)
COMMON /EX/ JRUN,LEVEL,JRB,JSO,JCH,JNUT,JAPPL,JYRS
COMMON /HYM/ CLIMMK6,12.10),CLIMM2(6,12,10),CLIMM3(12,10)
COMMON /NU/ NUTK6)
COMMON /SO/ SOILK6) , SOIL2C6)
COMMON /CH/ CHEM1(18)
COMMON /AP/ GEOM(20) ,LOAD(6) ,RUNLO(6),RUNM1 (10,12), RUNM2MO, 12)
COMMON /HB/ HYDBAL(13,10)
COMMON /PI/ IOR.IOW,IGB.ILO,IL1,IL2.IL3
REAL LIGU.LIGM.LIGL
COMMON /LBV2/PCONC(13,15,3),THM,LIGU,LIGL,LIGM
COMMON /HYR/ THA.PA,IA,ETA,RSA,RGA,YA.GZ,SIGMA,PGAM,G,XI
REAL L,M,C,N,K1,NU,MWA,MPA,MH,MTR,MN,MT,NN,KOC.KDB,KD,MI,MA,MTB,MB
REAL NUT,JB,IA.KS,IAX,IAU,IAL, K1U.K1M.K1L
C
C COMPILE SOIL PARAMETERS(SOIL1)
C
12 RS = SOIL1(1)
K1 = SOIL1(2)
C = SOIL1(3)
N = SOIL1(4)
OC = SOIL1(5)
CC = SOIL1(6)
CEC= SOIL2CI )
K1U= SOIL2(2)
K1L= SOIL2U)
K1M=0.
IP(LEVEL .GB. 3)K1M=SOIL2(3)
C
C COMPILE GEOMETRY DATA
C
AR = GBOMM )
Z = GEOM(2)*100.
DU = GBOM(3)
DM = GEOM(I)
C
C CALCULATE AVERAGE PERMEABILITY (IP NECESSARY)
C
IP(K1 .NB. 0.0 )GO TO 15
DL = Z -(DU+DM)
K1=(DU+DL)/((DU/K1U)+(DL/K1L))
IP(LEVEL .GB.3) K1=(DU+DM+DL)/((DU/KlU)+(DM/K1M)+(DL/K1L))
C
C SET CONSTANTS (LATENT HEAT OP VAP.;WATER DENSITY)
C
15 HLB=597.
RH=1.0
C
C COMPUTE BASIC PARAMETERS (STEPS 1-9)
C
MI=MH/MTR
-------
222
ALFA=1./MI
HTB=(MT/MN)-HTR
BBTA=1./MTB
ETHA=1./MM
DBLTA=1./HTR
M =2./(C-3. )
D =(C+1.>/2.
PC = 10.**<0.66+<0.55/M)+(0.14/M*»2.))
C
C COMPUTE WATER CONSTANTS
C SUT=SATURATION
C NU=VISCOSITY
C GAMSW=SPECIFIC WEIGHT OF WATER
C
CALL WATCN(TA,SUT,NU,GAMSW)
C
C COMPUTE WAT.BUDGET PARAMETERS (STEPS 10-21)
C
SG=SUT/GAMSW
PSI1= SG*SQRT(N/(K1*PC))
BK1 = K1*GAMSW*86400./NU
B = 1. + ((3./2.)/(M*C-1 . ))
W = B*BK1*((PSZ1/Z)**(M*C))
IFCREP.GT.O.> GO TO 20
QZ = 0.358-0.004*(L-25.)
QB = <1.-0.8*NN>*(0.245-0.145*(10.**(-10.»*,10X,'*************WARNZNG*************',///,
11 OX,'USB OF SMALL SOZL PERMEABILITY AND/OR GROUNDWATBR DEPTH',/,
21 OX,'HAVE CAUSED THB CALCULATED CAPILLARY RISE VELOCITY(W) TO',/,
310X,'BB GREATER THAN THE POTENTIAL BVAPOTRANSPIRATZON RATB(BP),',
4/,10X,'A VIOLATION TO THB MODEL ASSUMPTION. TO ENSURE THE CON-',
5/,10X,'TINUITY OF THB MODEL EXECUTION, W IS RESET TO W=0.99(BP).'
6/,1OX,'MODEL OUTPUT MAY GIVE ONLY APPROXIMATE SOLUTIONS AND',/,
71 OX,'MUST BE INTERPRETED WITH CAUTION.')
C ********************************
22 FIBD=FIB(D)
C
C START ITERATIVE PROCEDURE TO SOLVE WATER BALANCE
C
SO=.038059*(1.0/K1**0.0466573>*C**0.757928
IPLAG=1
ISW=0
-------
223
c
C COMPUTE FUNCTIONS (STEPS 22-25)
C
800 B = ((2.*BBTA*N*BK1*PSZ1*PZBD)/(3.1415927*H*((ABS(BP-W))**2.)))
$*(SO**(D+2.))
IFCB.GT.10.)GO TO 10
GAM=GAMA(1.5,B>
JB = 1.-(1.+1.414114*B)*BXP(-B)+SQRT(2.*B)*GAM
GO TO 101
10 JB =1.0
101 CONTINUE
C
C COMPUTE MATRIX POTENTIAL COEFFICIENTS (STEPS 26-30)
C
FIID = FIKD.SO.IOW)
SIGMA=((5.*N*(ETHA**2.)*BK1*PSI1*((1.-SO)**2.)*FIIO)/(6.*3.1415927
$*DBLTA*M))**(1./3.)
FGAM = FGAMA(SIGMA+1.)
G = 0.5*ALFA*BK1*(1 .+SO**O-ALFA*W
XI = BXP(-2.*SIGMA>*FGAM/(SIGMA**SIGMA)
C
C COMPUTE HATER BALANCE COMPONENTS (STEPS 31-36)
C
IP(REP .GT. 0.0)BTA=EBPA
IF(REP .BQ. 0.0)BTA=BBPA*JB
PA = (ETA+(MT*BK1*(SO**C))-T*W)/(1.-BXP(-G)*XI)
IA = PA*(1.-EXP(-G)*XI)
RSA= PA*(BXP(-G)*XI)
RGA=MT*BK1*(SO**C)-T*W
YA = RSA+RGA
C
C TEST FOR CONVERGENCE
C
C AGREEMENT TO WITHIN . 1*
C
GZ = PA/MPA
IPCGZ.GB.1.01.AND.IFLAG.BQ.1)ISH=1
IFLAG=2
IF(ISH.BQ.1)GO TO 25
IF(GZ.GT.0.999) GO TO 70
C
C NOT CONVERGED
C
23 CONTINUE
ISH=0
DSO=0.001
SO=SO+DSO
IP(SO.GT.1.)GO TO 999
GO TO 800
25 IF(GZ.LT..99)GO TO 23
IF(GZ.LT.1.01)GO TO 70
DSO=0.001
SO=SO-DSO
GO TO 800
C
C CALCULATE ACTUAL SOIL MOISTURE CONTENT THA=SO*N
-------
224
C
70 THA=SO*N
C
C RETURN TO LEVEL ROUTINE
C
RETURN
999 WRITB19.903)
903 FORMAT('SO OUT OF BOUNDS')
STOP
END
-------
225
SUBROUTINE HYDROM
-------
226
IMO=1
TASUM=TASUM/12.
NNSUM=NNSUM/12.
SSUM=SSUM/12.
ASUM=ASUM/12.
REPSUM=REPSUM/12.
MTRSUM=MTRSUM/12.
MHSUM=MPASUM/MNSUM
T=365.
C
C COMPILATION OF SOIL PARAMETERS (STORED IN ARRAY SOIL!)
C
RS = SOIL1(1)
K1 = SOIL1(2)
C = SOIL1(3)
N = SOIL1(4)
OC = SOIL1(5)
CC = SOIL1(6)
K1U= SOIL2C2)
K1L= SOIL2(4)
IF(LEVEL .GB. 3)K1M= SOIL2(3)
C
C COMPILATION OF GEOMETRIC PARAMETERS
C
AR = GBOM(1)
Z = GEOM(2>*100.
DU = GEOM(3)
DM = GBOM(4>
C
C CALCULATE AVERAGE PERMEABILITY (IF NECESSARY)
C
IFCK1 .NE. 0.0 )GO TO 14
DL = Z -(DU+DM)
K1=(DU+DL)/((DU/K1U)+(DL/K1L)>
IF(LEVEL .GB.3) K1=(DU+DM+DL)/((DU/K1U)+(DM/K1M)+(DL/K1L))
C
C FOR FIRST YEAR ONLY , RUN HYDROA TO GET AN ESTIMATE FOR INITIAL
C MOISTURE CONTENT AND OTHER PARAMETERS
C
14 CALL HYDROA(L,TASUM,NNSUM,SSUM,ASUM,REPSUM,T,MPASUM,MTRSUM,
*MNSUM.MTSUM,MHSUM)
C
C ESTIMATION OF MONTHLY HYDROLOGIC CYCLE COMPONENTS
C RUN FOR 12 MONTHS
C
100 CONTINUE
C
C COMPILATION OF CLIMATIC PARAMETERS (LEVELS 2(3)
C
L = CLIMM1(1,1,IYR)
TA = CLIMM1(2,IMO.IYR)
NN = CLIMM1(3,IMO.IYR)
S = CLIMM1(4,IMO.IYR)
A = CLIMM1(5,IMO.IYR)
REP= CLIMM1(6,IMO.IYR)
-------
227
C COMPILATION OP TIME C RAINFALL PARAMETERS (LEVELS 2(3)
C
T = 365.
MPA= CLIMM2M ,IMO,IYR)*12.
MTR= CLIMM2C2,IMO.IYR)
MM = CLIMM2(3,IMO,IYR)*12.
NT = CLIMM2(4,IMO,IYR)*12.
C
C CONSTANT VALUES (LATENT HEAT OP VAP.;WATER DENSITY)
C
HLB=597.
RW=1.0
C
C IP MONTHLY RAINPALL IS NOT 0.0, PROCEED AS USUAL
C OTHERWISE SEE BELOW STATEMENT POR ZERO RAINPALL CONSTRAINT
C
IP(MPA.GT.O.O)GO TO 15
C
C POR MPA=0.0 ASSUME BASIC CLIMATIC PARAMETERS (STEPS 1-6)
C HAVING A NEGLIGIBLE VALUE. THIS CONSTRAINT IS NOT USED
C
C MPA=0.1
C MTR =0.20
C MN = 1.0
C MT = 0.5
C
C ALTERNATIVE CONSTRAINTS POR MPA=0.0
C
MPA= 0.0
MTR= 0.0
MN = 0.0
MT = 0.0
MH = 0.0
MI = 0.0
MTB= 365./12.
BBTA=12./365.
GO TO 16
C
C ESTIMATE BASIC SYNTHETIC PARAMETERS(POR MPA NOT =0.) (STEPS 1-9)
C
15 MH=MPA/MN
MI=MH/MTR
ALPA=1./MI
MTB=(MT/MN)-MTR
BETA=1./MTB
ETHA=1./MH
DBLTA=1./MTR
C
16 M =2./(C-3.)
D =(C+1.)/2.
PC = 10.**(0.66+(0.55/M)+(0.1«/M**2.))
C
C COMPUTE WATER CONSTANTS
C SUT=SATURATION
C NU=VISCOSITY
C GAMSW=SPBCIPIC WEIGHT OP WATBR
-------
228
CALL WATCH(TA,SUT,NU,GAMSW>
C
C COMPUTE WATER BUDGET PARAMETERS (STEPS 10-21)
C
SG=SUT/GAMSW
PSZ1= SG*SQRT(N/(K1*PC>)
BK1 = K1*GAMSW*86400./NU
B = 1.+(C3./2.)/(M*C-1.))
W = B*BK1*((PSI1/Z)**(M*C»
IF(REP.GT.O.> GO TO 20
QZ = 0.358-0.004*(L-25.)
IF(TA.GE.O.O) GO TO 411
QB = (1.-0.8*NM)*(0.245-0.145*(10.**(-10.))*(0.0)>
GO TO 412
411 QB = (1.-0.8*NN>*(0.245-0.145*(10.**(-10.))*(TA**4.))
412 H = QB/(0.25+<1./<1 .-S)))
DB=0.42+0.013*TA
EP = 60.*24.*(QZ*(1.-A)-QB+H)/(RW*HLE/DB>
GO TO 21
20 QZ=0.
QB=0.0
H=0.0
DB=0.0
EP=REP
21 BBPA=MT*EP
C ******************************
ZF(W.GB.EP) W=0.99*BP
C ******************************
PIED=PIE(D)
C
C START ZTERATZVE PROCEDURE TO OBTAZN SOLUTION OF HYD.BALANCE BQUAT.
C
SO=THA1/N
ZSW=0
ZFLAG=1
C
C COMPUTE FUNCTZONS (STEPS 22-25)
C
800 E = ((2.*BETA*N*BK1*PSZ1*FZED)/(3.1415927*M*((ABS(BP-W))**2.)))
$*(SO**(D+2.))
ZF(E.GT.10.)GO TO 10
GAM=GAMA(1.5,E)
JE = 1.-(1.+1.414114*B)*BXP(-B)+SQRT(2.*B)*GAM
GO TO 101
10 JB =1.0
101 CONTINUE
C
C COMPUTE MATRZX POTENTIAL COEFFICIENTS (STEPS 26-30)
C
FZZD = FIZ(D,SO,IOW)
C
C ZF HPA NOT = 0, PROCEED AS USUAL
C
ZF(MPA .GT. 0) GO TO 17
C
C ZF MPA = 0, SET BELOW SOIL-MOISTURE INSENSITIVE PARAMETERS
-------
229
C TO PREVIOUS MONTHLY VALUES. THIS SECTION IS OPERATIONAL
C
SIGMA = SIGMA1
PGAM = PGAM1
G = G1
XI = XI1
GO TO 18
C
C FOR MPA NOT = 0, CALCULATE PARAMETERS
C
17 SIGMA=((5.*N*(ETHA**2.)*BK1*PSI1*((1.-S0)**2.)*FIID)/(6.*3.1415927
$*DELTA*M))**(1./3. )
IF(SIGMA.GT.25.0)SIGMA=25.0
FGAM = PGAMA(SIGMA+1.)
G = 0.5*ALFA*BK1*(1.+SO**C)-ALFA*H
XI = EXP(-2.*SIGMA>*FGAM/(SIGMA**SIGMA>
C
18 CONTINUE
C
C
C ESTIMATION OF HYDROLOGIC CYCLE COMPONENTS (STEPS 31-36)
C
S01=THA1/N
IF(REP .GT. 0.0)ETA=EEPA
IF(REP .BQ. 0.0)ETA=EBPA*JB
PA=(BTA+(MT*BK1*(SO**C))-(T*W)+(N*Z*(SO-SO1)))/(1.-BXP(-G)*XI)
IA = PA*(1.-BXP(-G)*XI)
RSA= PA*(BXP(-G)*XI>
RGA= MT*BK1*(SO**C)-T*W
YA = RSA+RGA
C
C CONVERGENCE CRITERION FOR MPA=0.0
C
IF(MPA.GT.O.O) GO TO 22
IF(PA.GT.O.O) GO TO 70
GO TO 23
C
C TEST FOR CONVERGENCE
C TO WITHIN . 1*
C
22 GZ = PA/MPA
IFCGZ.GE.1.01.AND.IFLAG.BQ.1)ISW=1
IFLAG=2
IFdSH.BQ.1 )GO TO 25
IF(GZ.GT.0.99> GO TO 70
C
23 CONTINUE
C
C
C CONVERGENCE NOT ACHIEVED. REPEAT SO LOOP
C
ISW=0
DSO=0.001
SO=SO+DSO
GO TO 800
25 IF(GZ.LT.0.99)GO TO 23
-------
230
ZP(GZ.LT.1.01)GO TO 70
080=0.001
SO=SO-DSO
GO TO 800
c
C ESTIMATE ACTUAL SOIL MOISTURE CONTENT THA=SO*N
C
70 THA=SO*N
THA1=THA
PA1=PA
IA1=IA
ETA1=BTA
RSA1=RSA
YA1=YA
GZ1=GZ
SIGMA1=SIGMA
FGAM1=PGAM
G1=G
XI1=X1
C
C STORE MONTHLY SIMULATION RESULTS IN HYDBAL ARRAY
C
HYDBAL(IMO,1)=THA
HYDBAL(IMO,2)=PA/12.
HYDBAL(IMO,3)=IA/12.
HYDBAL(IMO,4)=BTA/12.
HYDBAL(IMO,5)=RSA/12.
HYDBAL(IMO,6)=RGA/12.
HYDBAL(IMO,7)=YA/12.
HYDBAL(IMO,8)=GZ
HYDBAL(IMO,9)=CLIMM2(1,IMO,IYR)
500 CONTINUE
C
C THIS YEAR'S SIMULATION ACCOMPLISHED RETURN TO LEVEL ROUTINE
C
RETURN
END
-------
231
SUBROUTINE LEVEL3
C =================
C
C THIS SUBROUTINE ESTIMATES THE MONTHLY HYDROLOGIC CYCLES AND
C CONSEQUENTLY GIVES A PATE ASSESSMENT FOR THE COMPOUND. THIS
C LEVEL MODELS 3 SOIL LAYERS, WITH A MONTHLY TIME STEP.
C
REAL NUT1.LOAD
COMMON /TI/ TITLES(5,12)
COMMON /EX/ JRUN.LEVEL,JRB,JSO.JCH,JNUT,JAPPL.JYRS
COMMON /HYM/ CLIMM1(6,12,10),CLIMM2(6,12,10),CLIMM3(12,10)
COMMON /NU/ NUTK6)
COMMON /SO/ SOILK6) ,SOIL2(6)
COMMON /CH/ CHBM1(18)
COMMON /AP/ GEOM(20),LOAD(6),RUNLO(6),RUNM1(10,12),RUNM2C10,12)
COMMON /HB/ HYDBAL(13,10)
COMMON /PI/ IOR.IOW,IGB,ILO,IL1,IL2,IL3
REAL LIGU,LIGM,LIGL,IA
COMMON /LEV2/PCONC(13,15,3),THM,LIGU,LIGL.LIGM
COMMON /HYR/ THA.PA,IA,ETA,RSA,RGA,YA.GZ.SIGMA,PGAM,G,XI
COMMON/SPARE/ARE,AREASE
COMMON/SPARR/ARR,AREASR
COMMON/SPARL/ARL,ARBASL,XSOIL
COMMON/SPARS/ARS,AREAS,XLBNS
COMMON/MEDIA/AHMINR.AHMOUR,WAMOUR(20),ANMINL,AWMOUL,
$ WAMOUL,SWMINL,SNMINR,AWMINB,AHMOUB,SWMINB,WAMOUB,
$ SAMOUL,ASMIDL,ASMINL,SAMOUR,ASMIDR,ASMIWR,SAMOUB,
$ ASMIDB,ASMIHE,ASMOHL,ASMODL,ASMODR,ASMOWR,
$ ASMODB,ASMOWE.SWMOUL,SNMOUR,SWMOUB,CUMLKE,
$ CLMLKB,CUMRIV.CLMRIV,CUMBST,CLMBST,ASMODS,ASMOWS,
$ ASMIDS,ASMIHS,SAMOUS,CUMS,CLMS,SUMLKB,SLMLKB,CUSALK,
$ CLSALK.LIGCUL,LIGCLL,SUMRIV,SLMRIV,CUSARV,CLSARV.
$ LIGCUR.LIGCLR,SUMBST,SLMBST,CUSABS,CLSABS,LIGCUB,
$ LIGCLE,SUMS,SLMS,CUSAS,CLSAS,LIGCUS,LIGCLS,CMMLKB,
$ CMMRIV,CMMBST,CMMS,SMMLKB,SMMRIV,SMMBST,SMMS,
$ CMSALK.CMSARV,CMSABS,CMSAS,LIGCML,LIGCMR,LIGCME,
$ LIGCMS
COMMON/SDPARO/SBDCO(12,10).CONSDO
COMMON/SDPARB/SEDCB(12,10).CONSDE
COMMON/SDPARL/SEDCL(12,10),DIASDT,DBNSDT.DENWT,SLOPBT,WDBPT,CONSDL
COMMON/SDPARR/SEDCR(12,10),DIASDR,DENSDR,DENWR,SLOPBR,CONSDR
COMMON/PLAGS/AIRPLG,AIRPOL,TRICON,LAKE,RIVER,
$ ESTU,OCEAN,SBDRIV,SBDLKB,DISPLG,CHMPLG,WATBOD
REAL NO,LAKE
DIMENSION AMO(12),HYDOUT(12)
DATA AMO/' OCT',' NOV.' DEC',1 JAN1,' PEB'.' MAR',
*' APR1,1 MAY1,1 JUN1,1 JUL1,1 AUG',1 SBP1/
DATA NO/4H NO/,YBS/4H YES/
C
C INITIALIZE ARRAYS
C
DO 1 IHATBR=1,3
DO 1 1=1,12
DO 1 J=1,15
PCONC(I,J,IHATBR)=0.0
1 CONTINUE
-------
232
c
C PRINT TITLES AND INPUT VARIABLES
C
WRITB(IOW,703)
703 PORMATC'1',/,1X,77('*'),/)
WRITE(IOW,700)JRUN
700 PORMATC/./,1X,'RUN :',13,T25,'****** LEVELS SBSOIL MODEL '.
*'OPERATION ****»*•,/,T26,'MONTHLY SITE SPECIFIC SIMULATIONS LAY',
*'ERS)',/,/)
WRITE(IOW,901)
901 PORMAT(/,/,5X, 99('*'),/,5X,'****»',T100,'*****',/,
*5X,'***** SBSOIL-82: SEASONAL CYCLES OP WATER. SEDIMENT, ',
1'AND POLLUTANTS IN SOIL ENVIRONMENTS',T100,'*****',/,
2 5X,'*****',T100,'***»*')
WRITE (IOW.902)
902 FORMAT<5X,****** DEVELOPERS: M. BONAZOUNTAS,ARTHUR D. LITTLE INC.
1 ,(617)864-5770,X5871',T100,•*****')
WRITE(IOW,903)
903 FORMAT<5X,****** j. WAGNER .ARTHUR D. LITTLE INC.
1 ,(617)864-5770,X2585',T100,•*****•,/,
2 5X,'*****',T100,'*»***')
WRITE(IOW,90S)
905 FORMAT(5X,****** VERSION: JULY 1982',T100.'*****',/,
* 5X.•*****',T100,'*****•,/,5X,•*****•,T100,•*****•,/.
*5X,99('*'),/,/,23X,'INDEX')
WRITE(IOW,702)JRE,(TITLES(1,IQ),IQ=1.12),
*JSO,(TITLES(2,IR).IR=1,12),
*JCH,(TITLES(3,IS),15=1,12),
*JAPPL,(TITLES(5.IT),IT=1,12>
702 FORMAT(1 OX,'REGION : (',15,' )',T35,12A4,/
*1OX,'SOIL TYPE : ( ' , 15, ')',T35,12A4,/,
*1OX,'COMPOUND : ( ' ,15, ')',T35,12A4,/,
*10X,'APPL. AREA: ( ' , 15, ')',T35,12A4)
WRITB(IOW.705)(GBOM(IQ),IQ=1,4).GEOMMQ)
705 FORMAT(/,/,1OX,'GENERAL INPUT PARAMETERS',/,1 OX,24(' = '),4(/),6X,
*'— APPLICATION PARAMETERS —',/,/,IX,'AREA(SQ.CM): ',G7.2,/,1X,
•'DEPTH TO GRW(M): ',G7.2,/,1X,'UPPER SOIL ZONE DBPTH(CM): '.
•G7.2./.1X,'MIDDLE SOIL ZONE DEPTH(CM): ',G7.2,/,1X.
*'FREUNDLICH BXPONBNT(-): ',G7.2>
WRITB(IOW,711)GBOM(15),GBOM(16),GEOM(17)
711 FORMATdX, ' PH UPPER ZONB(-): ',G7.2,/,
*1X.'PH RATIO MIDDLE:UPPER ZONB(-): ',G7.2,/
*1X,'PH RATIO LOWER:UPPER ZONE(-): ',G7.2>
WRITB(IOW,712)GEOM(6),GBOM(9),GBOM(7),GBOM(10),GBOM(8),GBOM(11>
712 FORMAT(IX,'DEGRADATION RATIO MIDDLE:UPPER ZONB(-): ',
*G7.2,/,IX,'DEGRADATION RATIO LOWER:UPPER ZONB(-): ',G7.2
*,/,1X,'ORGANIC CARBON CONTENT RATIO MIDDLE:UPPER ZONE(-): ',
*G7.2,/,IX,'ORGANIC CARBON CONTENT RATIO LOWER:UPPER ZONE(-):
*'.G7.2./.1X,'CLAY CONTENT RATIO MIDDLE:UPPER ZONB(-): '.G7.2.
*/,1X,'CLAY CONTENT RATIO LOWER:UPPER ZONB(-): ',G7.2)
WRITE(IOW,725)GBOM(18),GBOM(19>
725 FORMATdX,'CATION EXCHANGE CAPACITY RATIO MIDDLE: LOWER ZONB(-): ',
•G7.2./.1X,'CATION EXCHANGE CAPACITY RATIO LOWER:UPPER ZONB(-): ',
*G7.2)
WRITB(IOW,708)(CHBM1(IQ),IQ=1.6)
708 FORMATC1 ' ,5(/),6X,'— CHEMICAL PARAMETERS —',/,/, 1X,
-------
233
•'SOLUBILITY(UG/ML): ',G7.2./.1X,•ADSORP. COEP.(KOC): ',G7.2,/.1X,
*'DZF. COEF. IN AIR(SQ.CM/SBC): ',G7.2,/,1X,
*'DEGRADATION RATE(/DAY): ',G7.2,/,1X,'HENRYS CON.(CU.M-ATM/MOLE):
*',G7.2,/,1X,'ADSORP. COBF. ON SOZL(K): ',67.2)
WRITB(IOW,709)(CHBH1(IQ),IQ=7,11)
709 FORMATdX,
•'MOLECULAR HT.(G/MOL): ',G7.2,/,1X.'VALENCE(-): '.G7.2./.1X,
•'NEUTRAL HYDROLYSIS CONSTANT(/DAY): ',G7.2,/,1X,
•'BASE HYDROLYSIS CONSTANT(L/MOL-DAY): ',G7.2f/,1X,
*'ACID HYDROLYSIS CONSTANT(L/MOL-DAY): ',G7.2)
WRITE(IOH,713)(CHEM1(IQ),IQ=13,15)
713 FORMATdX,
*'LIGAND-POLLUTANT STABILITY CONST.(-): ',G7.2f/,1X,
•'NO. MOLES LIGAND/MOLB POLLUTANT(-): ',G7.2,/,1X,
•'LIGAND MOLECULAR HEIGHT(G/MOL): ',67.2)
WRITB(IOW,710>(SOIL1(IQ),IQ=1,6)
710 FORMAT(/,/,6X,'— SOIL PARAMETERS —',/,/,1X,
•'DENSITY(6/CU.CM): ',67.2,/,1X,'INT. PERMEABILITY(SQ.CM): ',
•67.2,/,1X,'DISCONNECTEDNESS INDBX(-): ',67.2,/,1X,'POROSITY(-): '
•G7.2,/,1X,'ORGANIC CARBON CONTBNT(X): ',G7.2,/,1X,
*'CLAY CARBON CONTENT(X): ',67.2)
WRITE(IOW,714>(SOIL2(IQ),IQ=1,5)
714 FORMAT(1X,
'CATION EXCHANGE CAP. (MILLI BQ./1006 DRY SOIL): '.G7.2,/,1X,
•INTRINSIC PERMEABILITY-UPPER ZONE(SQ.CM): ',G7.2,/,1X,
•INTRINSIC PERMEABILITY-MIDDLE ZONE(SQ.CM): '.G7.2,/,1X,
'INTRINSIC PERMEABILITY-LOWER ZONB(SQ.CM): ',G7.2,/,1X,
'DUST LOADING FACTOR (U6(SOIL)/M**3): ',67.2)
IF(JYRS .LT. 1)JYRS=1
C
C RUN FOR JYRS
C
C INITIALIZE AREA OF DIRECT APPLICATION FOR BACH WATER BODY CASE
C AND AREA OF SOIL NEXT TO EACH WATER BODY COVERED BY PLUMB.
C
ARE=GBOM(1)
AREASE=ARE*.0001
ARR=GBOM(1)
ARBASR=ARR*.0001
ARL=GEOM(1)
ARBASL=ARL*.0001
ARS=6EOM(1)
AREAS=ARS*.0001
C
C TIME STEP IS 3 DAYS, NSTBPS IS NUMBER OF STEPS PER MONTH
C
DT=3.0*24.0*3600.0
NSTBPS=10
DO 720 1=1,JYRS
C
C IF NOT FIRST YEAR.READ APPLICATION DATA FROM FILE: L3 DATA
C
IFd.BQ.1 ) GO TO 718
READ (IL3, 906 HRUNM1 ( 1 , IQ) ,IQ=1 ,12)
READ (IL3, 906 HRUNM1 (2,IQ),IQ=1 ,12)
READ (IL3, 906 HRUNM1 (3,IQ) ,IQ=1 ,12)
-------
234
RBAD(IL3,906)(RUNM1(4,IQ).ZQ=1,12)
READ (IL3, 906 XRUNM1 (5,ZQ),IQ=1 ,12)
READ
9061 FORMAT(8X.12P6.2)
C
C PRZNT ANNUAL ZNPUT DATA (MONTHLY PRBCIPITAION,CLIMATIC
C PARAMETERS, AND APPLZCATZON DATA)
C
718 WRITECIOW,722)1,(AMO(ZQ),ZQ=1,12)
722 FORMAT(I1I,1(/),1X,131(1-I>,/./,
*3(/>,25X,'YEAR-',12,2X,'MONTHLY ZNPUT PARAMETERS',/,25X,7('=')
*2X,24(' = ' ),/,/,/,
*18X.12(2X,A4,3X),/,/)
WRITE (ZOW, 706 >«CLIMM1 ( ZR, ZQ, Z ) , ZQ=1 ,12),IR=1,6)
WRITECIOW,719)<(CLZMM2(ZR,ZQ,Z).ZQ=1,12),IR=1,4)
706 PORMAT(/,/,6X,'— CLIMATIC PARAMETERS —',/,/,1X,
*•LATITUDE(DBG) ',T20,12G9.3./,1X,'TEMP.(DEC C) ',T20,1269.3,/,
*1X,'CLOUD CVR(FRAC.> ',T20.12G9.3,/.1X,'REL. HUMID.(FRAC.) ',
*T20,12G9.3,/,1X,'ALBEDO(-) ',T20,12G9.3,/,1X,
*'BVAPOT.(CM/DAY) ',T20,12G9.3)
719 FORMAT(/,1X,'PRBCIP.(CM) ',T20,1269.3,/,1X,
*'M.TIME RAIN(DAYS) ' ,T20,12G9.3,/,1X,
*'M. STORM NO.(-) ',T20,12G9.3,/,1X,
*'M. SBASON(DAYS) ',T20,1269.3)
WRITE(IOW,721HRUNM1(1,IQ),IQ=1,12),(RUNM1(2.IQ),ZQ=1,12),
*(RUNM1(3,IQ),ZQ=1,12),(RUNM1(4,IQ),IQ=1,12),
*(RUNM1(S.ZQ),ZQ=1,12)
721 FORMAT(5(/>,6X,'— RUN DATA-SET 1 —',/./,1X,'MOIS. CONC-UP.'
*,'(UG/ML)',T24,12G9.3,/,IX,'MOIS. CONC-MI.(UG/ML)',T24,12G9.3
*./,1X,'MOIS. CONC-LO.(UG/ML)',T24,12G9.3
*,/,1X,'POL. ZNP-U(UGXSQ.CM)',T2»,1269.3,
*/.1X,'POL. ZNP-M(U6/SQ.CM)',T24,1269.3)
WRITB(IOW,716)(RUNM1(6,ZQ),ZQ=1,12),(RUNM1(7,IQ),IQ=1,12)
716 PORMATdX.
*'POL. INP-L(U6/SQ.CM>',T24,1269.3,
*/,1X,'SUR. RUNOFF(1=Y,0=N)',T24,1269.3)
WRITE(IOW,717)(RUNM2(1,ZQ),IQ=1,12),(RUNM2(2,IQ),IQ=1,12),
*(RUNM2(3,IQ),ZQ=1,12>.(RUNM2(4,IQ),XQ=1,12),
*(RUNM2(5,IQ>,IQ=1,12)
717 FORMAT(/,/,6X,'— RUN DATA-SBT 2 —',/,/,1X,'CONC. IN RAIN(U6'
*,'/ML)',T24,1269.3,/,1X,'TRNSFORMBD-U(UG/SQ.CM)',T24,1269.3,
*/,1X,'TRNSFORMBD-M(U6/SQ.CM)',T24,1269.3,
*/.1X,'TRNSFORMBD-L(UG/SQ.CM)',T24,1269.3,
*/,1X.'SZNKS-U(U6/SQ.CM)',T24,1269.3)
-------
235
WRITE(IOW.715)(RUNM2(6,IQ),IQ=1,12),(RUNM2(7,IQ),IQ=1,12),
*(RUMM2(8,ZQ).ZQ=1,12).(RUNH2(9,IQ),ZQ=1,12),
*(RUNM2(10,IQ),IQ=1.12)
715 PORMATdX, ' SINKS-IK UG/SQ.CM) ' ,T24 , 1 2G9 . 3 , / , IX,
*'SINKS-L(UG/SQ.CM)'.T24,12G9.3./.1X,
*'LZG.ZMPUT-U(UG/SQ.CM)',T24,12G9.3./,1X.
*'LIG.INPUT-M(UG/SQ.CM)',T24,12G9.3,/,1X,
*'LIG.INPUT-L(UG/SQ.CM)',T24,12G9.3)
C
C RUN FOR HYDRO CYCLE FOR 1 YEAR
C
DO 720 ZMO=1,12
CALL HYDROMd.IMO)
C
C FIND SEDIMENT CONCENTRATION FOR BACH WATER BODY
C
IF(SEDLKB.EQ.YES.AND.LAKE.EQ.YES) CONSDL=SBDCL(IMO,I)
IF(SEDRIV.EQ.YES.AND.RIVER.BQ.YES) CONSDR=SBDCR(IMO,I)
IF(SBDLKB.BQ.NO.OR.SBDRIV.BQ.NO) CALL SBDCON(IMO,I)
IF(BSTU.BQ.YES) CONSDE=SBDCB(IMO,I)
IF(OCEAN.BQ.YES) CONSDO=SBDCO(IMO,I)
IF(WATBOD.BQ.YBS)CALL ALPHA(IMO,I)
C
C USE HYDROLOGIC CYCLE RESULTS TO CALULATB ANNUAL TOTALS AND
C AVERAGES
C
DO 200 J=1,10
HYDBAL(13,J)=HYDBAL(13,J)+HYDBAL(IMO,J)
200 CONTINUE
IF(IMO.BQ.12)HYDBAL(13,1)=HYDBAL<13,1)/12.
C
C PRINT HYDROLOGIC RESULTS
C
IF(IMO.LT.12)GO TO 800
WRITE(IOW,753) I
753 FORMAT('1•,5(/),25X,'YEAR -',12,2X,'MONTHLY RESULTS (OUTPUT)',/,
*25X,8('='),2X,2«('='),/,/)
WRITE(IOW.704)(AMO(IQ).IQ=1,12)
704 FORMAT(5(/),6X,'— HYDROLOGIC CYCLE COMPONENTS —',4(/>,
*18X,12(2X.A4.3X),/)
DO 120 K=1,12
120 HYDOUT(K)=HYDBAL(K,1)*100.
WRITE(IOW,751 XHYDOUT(IMN),IMN=1.12).((HYDBAL(IMN,IVAL),IMN=1,1 2),
*IVAL=2,5)
WRITE(IOW,752)((HYDBAL(IMN,IVAL),IMN=1,12),IVAL=6,8)
751 PORMATdX, 'SOIL MOISTURBC % ) • ,T20 ,1 2G9 . 3 , / ,
*1X.'PRBCIPATION(CM)',T20,12G9.3,/,
*1X,'NET INFILTR.(CM)',T20,12G9.3,/,
*1X,'BVAPOTRANSP.(CM)',T20,12G9.3,/,
*1X.'SURFACE RUNOFF(CM)',T20,12G9.3)
752 FORMAT(1X,'GRW RUNOFF(CM)',T20.12G9.3,/.
*1X,'YIELD (CM)',T20,12G9.3,/,/,
*1X,'RATIO PA/MPA(GZ)',T20,12G9.3)
C
C DO MONTHLY POLLUTANT CYCLE SIMULATION
C
-------
236
800 CONTINUE
DO 825 ISTBP=1.NSTBPS
IP(LAKE.NB.YES. AND.RIVER.NB.YES.AND.ESTU.NB.YES.AND.OCEAN.EQ.YES)
$ GO TO 600
C
C CALL AIR ROUTINE TO CALCULATE AIR CONCENTRATIONS; CONSIDERS INTERACTIONS
C BETWEEN AIR AND WATER AND BETWEEN AIR AND SOIL.
C
CALL AIR(IMO.I,ISTBP,NSTBPS,DT)
IPASS=1
IP(WATBOD.BQ.NO)GO TO 500
C
C
IF(LAKE.NB.YES) GO TO 300
SWMINL=SWMOUL
C
C CONVERT WBT ft DRY DEPOSITION PROM AIR TO SOIL PROM KG/M**2/SBC
C TO UG/CM**2/MON (NEXT TO LAKE)
C
ASMIDL=ASMIDL*2.592B11
ASMIWL=ASMIWL*2.592B11
IWATBR=1
C
C IWATBR = 1 SIGNIFIES LAKE
C
CALL TRANS3(I,IMO,ISTEP.NSTEPS.ASMIDL,ASMIWL,SURROP,
$ GRWROP,SAMOUL,ARL,IWATBR,IPAS S,CUMLKB,CLMLKB,
$ SUMLKB,SLMLKE,CUSALK,CLSALK,LIGCUL.LIGCLL.CMMLKB,
f SMMLKB.CMSALK.LIGCML)
IPASS=2
C
C CALCULATE SOIL TO WATER RATE ft CONVERT PROM MICRO-GRAMS/MON
C TO KG/SBC
C
SWMOUL=(SURROF+GRWROP)*3.8580247B-16
C
C CONVERT SOIL TO AIR RATE TO KG/SBC
C
SAMOUL=SAMOUL*3.8580247B-16
C
C
300 IP(RIVBR.NB.YBS) GO TO 400
SWMINR=SWMOUR
C
C CONVERT WBT ft DRY DEPOSITION PROM AIR TO SOIL PROM
C KG/M**2/SBC TO UG/CM**2/MON (NEXT TO RIVER)
C
ASMIDR=ASMIDR*2.592E11
ASMIWR=ASMIWR*2.592B11
IWATBR=2
C
C IWATBR=2 SIGNIFIES RIVER
C
CALL TRANS3(1,IMO,ISTEP.NSTBPS,ASMIDR,ASMIWR,SURROP,
$ GRWROF,SAMOUR,ARR,IWATBR,IPASS,CUMRIV,CLMRIV,
$ SUMRIV,SLMRIV,CUSARV,CLSARV,LIGCUR,LIGCLR,CMMRIV,
-------
237
$ SMMRIV,CMSARV,LIGCMR>
IPASS=2
C
C CALCULATE SOIL TO WATER RATE AND CONVERT PROM MICRO-GRAMS/MON
C TO KG/SBC.
C
SHMOUR=(SURROF+GRHROP)*3.8580247B-16
C
C CONVERT SOIL TO AIR RATE TO KG/SBC
C
SAMOUR=SAMOUR*3.8580247B-16
C
C
400 ZP(BSTU.NE.YES) GO TO 600
SHMZNB=SNMOUE
C
C CONVERT WET ( DRY DEPOSITION FROM AIR TO SOIL PROM
C KG/M««2/SEC TO UG/CM»*2/MON (NEXT TO ESTUARY)
C
ASMIDE=ASMIDB*2.592B11
ASMIWB=ASMIWE*2.592B11
IHATBR=3
C
C IHATBR = 3 SIGNIFIES ESTUARY
C
CALL TRANS3(1,IMO,ISTBP,NSTBPS,ASMIDE,ASMIHB,SURROP,
$ GRWROP,SAMOUB,ARE.IHATBR,IPASS,CUMEST,CLMBST,
$ SUMBST,SLMBST,CUSABS,CLSABS,LIGCUB,LIGCLB,CMMBST,
$ SMMBST.CMSABS.LIGCMB)
IPASS=2
C
C CALCULATE SOIL TO HATER RATE AND CONVERT PROM MICRO-GRAMS/MON
C TO KG/SBC.
C
SHMOUB=(SURROF+GRHROF)*3.8580247E-16
C
C CONVERT SOIL TO AIR RATE TO KG/SBC
C
SAMOUE=SAMOUE*3.85802Q7B-16
GO TO 600
500 CONTINUE
C
C NO HATER BODY CONSIDERED, ONLY AIR ( SOIL
C CONVERT HBT AND DRY DEPOSITION PROM AIR TO SOIL PROM
C KG/M**2/SBC TO UG/CM**2/MON
C
ASMIDS=ASMIDS*2.592B11
ASMIHS=ASMIHS*2.592B11
IHATBR=1
C
C IHATBR = 1 AND HATBOD = NO SIGNIFIES NO HATER BODY
C
CALL TRANS3(1,IMO,ISTEP,NSTBPS,ASMIDS,ASMIHS.SURROF,
$ GRWROP,SAMOUS.ARS,IHATBR,IPASS,CUMS,CLMS,
$ SUMS,SLMS,CUSAS,CLSAS,LIGCUS,LIGCLS,CMMS,SMMS,
$ CMSAS,LIGCMS)
-------
238
IPASS=2
C
C CONVERT SOIL TO AIR RATE TO KG/SEC
C
SAMOUS=SAMOUS*3.8580247B-16
GO TO 825
600 CONTINUE
C
C CALL WATER SUBROUTINE FOR CALCULATION OP WATER CONCENTRATIONS (BACH WATER
C BODY), C INTERACTION TERMS BETWEEN WATER i AIR
C
CALL WATER(IMO,I,DT.ISTEP,NSTBPS)
825 CONTINUE
C
C CALL POODCHAIN ROUTINE
C
CALL BIOCHN(IMO.I)
C
C OUTPUT RESULTS
C
CALL OUTPUT(IMO.I)
720 CONTINUE
C
C PRINT END MESSAGE
C
WRITB(IOW,805)
805 PORMAT(
-------
239
SUBROUTINE LINT(DI,ID1.IS,SO,VAL,IOW)
C
C THIS SUBROUTINE HAS BEEN CODED IN FORTRAN BY P.G. BAGLBSON
C (BAGLESON.1977)
C
C
C THIS FUNCTION PRFORHS A LINEAR INTERPOLATION WHEN CALLED FROM
C FUNTION FIKD.SO)
C
DIMENSION DI(10.U)
XX=SO-FLOAT(IS)*0. 1
Y1=DI(IS,ID1)
Y2=DI(IS+1,ID1)
VAL=(Y2-Y1>*10.*XX+Y1
RETURN
END
-------
240
C
c
C
c
c
c
c
c
c
c
c
c
c
c
c
SUBROUTINE RFILB
COMPILES USER INPUT DATA FROM DATA PILES
REAL NUT1.LOAD
COMMON /TI/ TITLES(5,12)
COMMON /EX/ JRUN,LEVEL,JRB,JSO,JCH,JNUT,JAPPL,JYRS
COMMON /HYM/ CLIMM1(6,12,10>,CLIMM2<6,12,10),CLIMM3C12,10>
COMMON /NU/ NUT1(6>
COMMON /SO/ SOIL1(6),SOIL2(6)
COMMON /CH/ CHBM1(18)
COMMON /AP/ GBOM(20),LOAD(6),RUNLO(6).RUNM1(10,12),RUHM2(10,12:
COMMON /HB/ HYDBAL(13,10)
COMMON /PI/ lOR.IOH.IGB.ILO.ILI,IL2.IL3
REAL LIGU.LIGM.LIGL.IA
COMMON /LBV2/PCONC(13,15,3),THM,LIGU.LIGL,LIGM
COMMON /HYR/ THA,PA,IA,ETA,RSA.RGA,YA,GZ,SIGMA,FGAM,G,XI
DIMBNS ION TITLE (12)', APPL ( 6 ) , A JUNK (12)
READ GENERAL DATA PILE
(CLIMATALOGICAL.SOIL, CHEMISTRY,AND NUTRIENT DATA)
READ SECTION TITLE
READ(IGB,901)NP,NTY.TITLE
CLIMATOLOGICAL DATA
100 READ(IGE,902)NP.NRB,TITLE,IYRS.ITY
IP(NP.BQ.2)GO TO 200
IP(NP.BQ.3)GO TO 300
IF(NF.BQ.4)GO TO 400
IP(NP.BQ.9)GO TO 900
IP NOT REGION SPECIFIED FOR THIS RUN, SKIP TO NEXT DATA SET
IF(NRE.NE.JRB)GO TO 150
WRITE(IOW,9021)HP,NRB,TITLE,IYRS,ITY
DO 110 1=1,12
110 TITLES(1,I)=TITLE(I)
C
c
c
READ CLIMATOLOGICAL DATA- LEVEL 2,3
130 DO 135 1=1 .IYRS
RBAD(IGB,906) (CLIMMK1 ,IQ,
READ(IGB,906) (CLIMM1 (2, IQ,
RBAD(IGB,906> (CLIMM1 ( 3 , IQ,
RBAD(IGB,906) (CLIMM1 ( 4 , IQ,
READ(IGB,906) (CLIMM1 (S.IQ,
RBAD(IGE,906) (CLIMM1 (6.IQ,
READ (IGB, 906) (CLIMM2M , IQ,
READ ( IGB . 906 ) ( CLIMM2 ( 2 , IQ ,
READ ( IGB . 906 ) ( CLIMM2 ( 3 , IQ ,
READ ( IGE . 906 ) ( CLIMM2 ( 4 . IQ ,
,IQ=
,IQ=
,IQ=
,IQ=
,IQ=
,IQ=
,IQ=
,IQ=
,IQ=
).IQ=
.12)
.12)
,12)
,12)
,12)
.12)
,12)
.12)
.12)
,12)
READ (IGB, 906 ) ( AJUNK( IQ) , IQ=1 .12)
135 CONTINUE
-------
241
GO TO 100
c
c
c
SKIP OVER
REGIONAL DATA SET
150 ZBND=ZYRS*11
IP ( I END . BQ . 0 ) IEND=4
DO 160 1=1 , IEND
C
C
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
READdGE,
160 CONTINUE
GO TO 100
SOIL DATA
200 CONTINUE
201 READdGE,
IFCNF.EQ.
IFCNF.EQ.
IFCNF.EQ.
904)
901 )NP.NSO, TITLE
3) GO TO 300
4) GO TO 400
9) GO TO 900
IP NOT SOIL TYPE SPECIFIED POR
SET
IFCNSO.NB
DO 210 1=
210 TITLBS(2.
READdGE,
READ ( IGE ,
GO TO 201
SKIP OVER
250 DO 260 1=
READ ( IGE ,
260 CONTINUE
GO TO 201
CHEMISTRY
300 CONTINUE
301 READdGE.
IFCNF.EQ.
IFCNP.EQ.
.JSO)GO TO 250
1.12
I)=TITLB(I)
903XSOIL1 (IQ),IQ=1 ,6)
903) (SOIL2(IQ) , IQ=1 ,6)
SOIL DATA SET
1,2
904)
DATA
901 )NP,NCH, TITLE
4)GO TO 400
9)GO TO 900
IP NOT CHEMICAL SPECIFIED FOR T
DATA SET
THIS RUN, SKIP TO NEXT SOIL DATA
THIS RUN, SKIP TO NEXT CHEMICAL
IP(NCH.NB.JCH)GO TO 350
DO 310 1=1,12
310 TITLBS(3,I)=TITLB(I)
READdGE,903) (CHBM1 (IQ) ,IQ=1 ,6)
READ(IGE,903)(CHEM1(IQ),IQ=7,12)
READ(IGE,903)(CHBM1(IQ),IQ=13,18)
GO TO 301
C
C SKIP OVER CHEMICAL DATA SBT
C
-------
242
350 DO 360 1=1,3
READ(IGE,904)
360 CONTINUE
GO TO 301
C
C NUTRIENT DATA
C
400 CONTINUE
401 READ(IGE.901>NF.NNU,TITLE
IP(NF.EQ.9)GO TO 900
C
C IF NOT NUTRIENT SET SPECIFIED FOR THIS RUN. SKIP TO NEXT
C NUTRIENT DATA SET
C
IF(NNU.NE.JNU)GO TO 450
DO 410 1=1,12
410 TITLES(4,I)=TITLE(I>
RBAD(IGE,903)(NUT1(IQ),IQ=1,6)
GO TO 401
C
C SKIP OVER NUTRIENT DATA SET
C
450 RBAD(IGB,904>
GO TO 401
C
C READ APPLICATION DATA FOR LEVEL OF THIS RUN
C
900 IF(LEVEL.EQ.3)GO TO 1300
C
C LEVEL 3
C
1300 READ(IL3,902)NF,NTY,TITLE,IYRS
IF(NF.BQ.9)GO TO 999
C
C IF NOT APPLICATION SPECIFIED FOR THIS RUN. SKIP TO NEXT
C APPLICATION DATA SET
C
IF(NTY.NE.JAPPL)GO TO 1350
DO 1310 1=1,12
1310 TITLBS(5,I)=TITLB(I)
RBAD(IL3,903)(APPL(IQ).IQ=1.6)
GBOMM )=APPL(1 )
GBOM(2)=APPL(2)
GBOM(3)=APPL(3>
GBOM(4)=APPL(4>
GBOM(14)=APPL(5)
READ(IL3.903)(APPL(IQ),IQ=1.6)
GBOM(15)=APPL(1)
GEOM(16)=APPL(2)
GBOM(17>=APPL(3>
RBAD(IL3,903)(APPL(IQ),IQ=1,6)
GBOM(6)=APPL(1>
GBOH(9)=APPL(2)
GBOM(7)=APPL(3)
GBOM(10)=APPL(4)
GBOM(8)=APPL(5)
-------
243
c
c —
c
1350
GBOMC
RBADC
GBOMC
GBOMC
READC
RBADC
RBADC
RBADC
READC
RBADC
READC
RBADC
READC
RBADC
READC
RBADC
RBADC
RBADC
RBADC
READC
RBADC
GO TO
SKIP
1 1 ) =APPL C 6 )
ZL3.903HAPPLCIQ)
1 8 ) =APPL C 1 )
,IQ=1,6)
19)=APPLC2>
ZL3,
ZL3,
ZL3,
ZL3,
ZL3,
ZL3,
ZL3,
ZL3,
ZL3,
ZL3,
ZL3,
ZL3,
ZL3,
ZL3,
ZL3.
ZL3,
ZL3,
999
OVER
906
906
906
906
906
906
906
906
906
906
906
906
906
906
906
906
906
HRUNM1 C
HRUNM1C
HRUNM1 (
HRUNM1 (
) CRUNM1 (
XRUNM1 (
)CRUNM1 (
)CRUNM2(
)CRUNM2C
) C RUNM2 C
> C RUNM2 C
> C RUNM2 C
)(RUNM2(
) C RUNM2 C
) C RUNM2 C
HRUNM2C
HRUNM2C
1.
2,
3.
4,
5,
6,
7,
1,
2,
3,
4,
5.
6,
7,
8.
9,
10
OTHER LEVEL 3
ZPCZYRS.LB.O
)ZYRS=1
IQ),
IQ) ,
ZQ),
ZQ),
IQ),
IQ) ,
IQ),
IQ),
IQ>,
IQ).
ZQ),
IQ),
IQ).
ZQ),
ZQ),
ZQ),
.ZQ)
ZQ=
IQ=
IQ=
IQ=
ZQ=
IQ=
IQ=
IQ=
IQ=
ZQ=
ZQ=
ZQ=
ZQ=
ZQ=
IQ=
IQ=
9
9
9
9
r
*
9
9
9
9
9
9
9
9
9
9
,IQ=1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
,
2)
2)
2)
2)
2)
2)
2)
2)
2)
2)
2)
2)
2)
2)
2)
2)
12)
PZLBS
ZEND=21 + C CZYRS-1)*17)
DO 1360 1=1,IEND
RBADCIL3,904)
1360 CONTINUE
GO TO 1300
C
C
c
999
C
901
902
9011
9021
903
9031
904
906
9061
RETURN TO MAIN PROGRAM
RETURN
PORMATCZ1,1X.I3.1X,12A4)
PORHATCZ1,1X.I3,1X.12A4.2I5)
FORMAT(1X,I1,1X.I3.1X.12A4)
PORMATC1X.Z1,1X,13,1X.12A4,215)
PORMATC38X.6P7.2)
PORMATC38X.6G7.2)
PORMAT C1X)
FORMAT(8X.12F6.2)
PORMAT C 8X,12P6.2)
BND
-------
244
C
C
C
C
C
C
C
C
C
C
C
SUBROUTINE TRAMS3(IYR,IMO,ISTBP,NSTEPS,ASHIND,ASMZMH,SURROF,
$ GRHROP,SAMOUT,ARSPLU,ZWATBR,ZPASS,CUM,
$ CLM,SUM,SLM,CUSA,CLSA,LIGCU,LIGCL,CMM,SMM,
$ CHSA,LZGCH)
C
C
C
THZS SUBROUTZNE ESTIMATES THE MONTHLY POLLUTANT MASS DZSTRZBUTZON
ZN A SOZL COMPARTMENT,CONSZSTZNG OP 3 SOZL LAYERS.
SZMULATZON STARTS WITH THE MONTH OP OCTOBER. CONCENTRATIONS AT
THE BEGINNING OF THE SIMULATION (IB THE COLUMN DOBS NOT START
CLEAN) CAN BE INPUT.
THE THEORETICAL BACKGROUND IS DESCRIBED IN APPENDIX PT.
REAL NUT1.LOAD
COMMON /TI/ TITLES(5,12)
COMMON /EX/ JRUN.LEVEL,JRE.JSO,JCH,JNUT.JAPPL,JYRS
COMMON /HYM/ CLIMM1<6,12,10),CLIMM2<6,12,10>,CLIMM3<12,10)
COMMON /NU/ NUTK6)
COMMON /SO/ SOIL1(6),SOIL2(6)
COMMON /CH/ CHBM1(18)
COMMON /AP/ GEOM(20)(LOAD(6),RUNLO(6),RUNM1(10,12).RUNM2(10,12)
COMMON /HB/ HYDBAL(13.10)
COMMON /PI/ IOR.IOW,IGE,ILO,IL1 .IL2.IL3
REAL LIGU.LIGM.LIGL.IA
COMMON /LEV2/PCONC(13,15,3),THM,LIGU,LIGL,LIGM
COMMON /HYR/ THA,PA,IA.BTA,RSA,RGA,YA.GZ,SIGMA,PGAM.G.XI
COMMON/FLAGS/AIRFLG,AIRPOL,TRICON,LAKE,RIVER,
$ BSTU,OCEAN,SBDRIV,SBDLKB,DISFLG,CHMPLG,HATBOD
COMMON/OUT/ACMAXL,AVAIRL,AVAIRR,AVAIRB,AWDEPL,ANDBPR,AWDEPB,
ASDBPL,ASDEPR,ASDEPE,WVOLAL,HVOLAR,HVOLAB,SVOLAL,
SVOLAR.SVOLAB,SWSURL,SWSURR,SWSURB,SHGRHL,SWGRWR,
SHGRHE,SCONUL,SCONUR,SCONUB,SCONLL,SCONLR,SCONLE,
CONL1.CONL2.CONL3.CONR1(20),CONR2(20),CONR3(20),
CNCBD1(11),CNCBD2(11),CNCBD3(11),CNCBU1(11),CNCBU2(11),
CNCEU3M1 ) ,XBSTY<1 1 ) ,CONO1 (10) ,CONO2( 1 0 ) ,CON03 (1 0 ) ,
RESUSB,WASHL,WASHR,WASHE,ACMAXR.ACMAXE,ACMAXS,
AVAIRS.ASDBPS,SVOLAS,SWGRWS,SCONUS,SCONLS.RESUSS,
RESUSL,RBSUSR,SCONML,SCONMR,SCONME,SCONMS,SWSURS,
HASHS.ARBA1(3)
DIMENSION POLBALC13,45,3),PINP(13,6,3)
DIMENSION AMOM2) ,PINPUC3) ,PINPL(3) ,PINPM(3) ,ARBA(3)
REAL IM,KOC,MP,KDB,MPL,MPL1,MPO,MPLO,ISRM,INT, N,
$MWT,KNH,KBH,KAH,KTU,KTL,
$MWTLIG,MWTML,NI,K1,K1Z,K1U,K1L,KU,KL,K,LZGCU1,LIGCL1,
SLIGCUF,LZGCLF.ZMDU,KDBL,LZGCM,LZGCMF,KM,KDBM,K1M,ZMDM,
$MP2,MP2O,KTM,LIGCM1,LIGCU,LIGCL, K2
REAL NO
DATA AMO/' OCT' , ' NOV.1 DEC',' JAN',' PBB' , ' MAR',
*' APR1,1 MAY1,1 JUN1,1 JUL1,1 AUG1,1 SEP1/
DATA ISKIP/1/.NO/QH NO/
INZTZALZZB ARRAYS (SET ALL PLACES TO 0.0)
IP(IMO.GT.1.OR.ISTBP.GT.1)GO TO 50
-------
245
DO 5 1=1,13
DO 6 J=1,45
6 POLBAL(I,J,IWATBR)=0.0
DO 7 J=1,6
7 PINP(I,J,IHATBR)=0.0
5 CONTINUE
DO 8 J=1,15
8 PCONCM3, J,IWATER)=0.0
LIGCUP=PCONC(12,10.IWATER)
LIGCHF=PCONC(12,11,IWATER)
LZ6CLF=PCONC(12,12,IWATER)
C
C CALCULATE ANNUAL PRECIPITATION MPASUH
C
HPASUH=0.
DO 9 IMON=1,12
9 HPASUN=HPASUM+CLIMM2(1,IHON,IYR)
C
C CONVERT HPASUM TO INCHES
C
HPASUH=MPASUH*0.3937
C
C CALCULATE SOIL EROSION 6 IN GRAMS OP SOIL/M**2/YEAR
C
GWASH=7.0*(HPASUM**2.3 >/(1.0+0.0007*(MPASUM**3.3))
C
C CONVERT TO UNITS OF GRAMS/CM**2/MONTH
C
GWASH=GWASH/(12.0*1.OE4)
C
C COMPILE GEOMETRY DATA
C
10 IFdYR.GT.1 .OR.IMO.GT.1 .OR. ISTEP . GT. 1 .OR. IPASS .GT. 1 )GO TO 50
AR = GEOM(1)
Z = GEOM(2)*100.
DU = GEOMC3)
DM = GBOMC4)
A2KDB= GEOMC6)
A20C = GBOMC7)
A2CC = GBOMC8)
AKDE= GBOMO)
AOC = GBOM(10)
ACC = GEOM(11)
FRN = GEOM(14)
PH = GBOM(15)
A2PH = GBOM(16)
APH = GEOM(17)
IF(PH.BQ.0.0)PH=7.0
IF(A2PH.BQ.O.O)A2PH=1.0
IF(APH.BQ.O.O)APH=1.0
A2CEC= GEOMM8)
ACBC= GBOM(19)
DO 11 1=1,3
11 ARBA(I)=0.0
C
C COMPILE SOIL PARAMETERS
-------
246
RS = SOZL1(1)
K1 = SOZL1(2)
C = SOIL1(3)
N = SOZL1(4)
OC = SOZL1(5)
CC = SOIL1(6)
CBC= SOIL2M )
K1U= SOIL2(2)
K1M= SOIL2O)
K1L= SOIL2(4>
RDUST=SOIL2(5)
C
C SEDIMENT AND HIND SUSPENSION ROUTINES YET TO BE INCORPORATED
C
SBDM=0.
DUSTM=0.
C
C COMPILE CHEMISTRY DATA
C
SL = CHEM1(1)
KOC = CHBM1(2)
DA = CHBM1(3)
KDE = CHBM1(4)
H = CHBM1(5)
K = CHEM1(6)
MWT = CHBM1(7)
VAL = CHBM1(8)
KNH = CHEM1(9 >
KBH = CHBM1(10)
KAH = CHEM1(11)
SK = CHBM1(13)
B = CHBM1(14)
MWTLIG= CHEM1M5)
C
C SET CONSTANTS
C
R=8.2056B-5
DT=30.
NI=PLOAT(NSTBPS)
C
C SET INITIAL CONCENTRATIONS
C
DPTH=DU
LIGU=0.0
LIGM=0.0
LIGL=0.0
C
C SUPPORTING EQUATIONS:
C
C EQUATIONS FOR LOWER ZONES
C
55 PHL=APH*PH
OCL=OC*AOC
CBCL=CBC*ACBC
KDBL=KDE*AKDB
-------
247
DL=Z-(DU+DM>
PHM=A2PH*PH
OCH=OC*A20C
CBCM=CBC*A2CEC
KDBM=KD8*A2XDB
C
C CALCULATE K FOR ORGAMICS
C
KU=K
KM=K
KL=K
ZP(KU.NB.O.)6O TO 16
KU=KOC*OC/100.
KM=KOC*OCM/100.
KL=KOC*OCL/100.
C
C CALCULATE AVERAGE PERMEABILITY (IP NECESSARY)
C
16 K1Z=K1
IP(K1Z .MB. 0.0 )GO TO 20
C
C DIFPEREHT PERMEABILITIES INPUT POR BACH ZONE,CALCULATE AVB. PERM.
C
K1Z=(DU+DM+DL)/< ( DU/K1U> + (DM/K1M) + < DL/K1J.) )
GO TO 17
C
C SAME PERMEABILITY ENTERED FOR BACH ZONE
C
20 K1U=K1Z
K1M=K1Z
K1L=K1Z
C
C CALCULATE TOTAL CATION EXCHANGE CAPACITY OF THB SOIL
C
17 TCECU=0.0
TCECM=0.0
TCECL=0.0
IF(VAL.EQ.O)GO TO 18
TCECU=t(CBC*MHT/VAL)*10.)*OU*RS
TCECM=((CBCM*MHT/VAL > * 10.)*DM*RS
TCBCL=((CBCL*MWT/VAL > * 10.> *DL*RS
C
C CALCULATE MOLECULAR HEIGHT OF COMPLEX
C
18 MWTML=MWT+B*MHTLIG
C
C CALCULATE HYDROLYSIS CONSTANTS
C
KTU=0.0
KTM=0.0
KTL=0.0
IFCKNH+KAH+KBH .BQ. 0.0) GO TO 21
KTU=KNH+KAH*(10.**<-1.*PH))+KBH*(10.**(-1.*(14.-PH)))
KTM=KNH+KAH»(10.**<-1.*PHM))+KBH*<10.»*(-1.*(1«.-PHM)))
KTL=KNH+KAH*(10.**(-1.*PHL))+KBH*(10.**(-1.*(14.-PHD »
-------
248
c —
c
21
C
c —
c
50
C
308
C
C
c
c
c —
c
c
c —
c
c
c —
c
SET DEPTHS FOR VOLATILIZATION ROUTINE
VOLDU=DU/2.
VOLDM=DU+DM/2.
VOLDL=DU+DM+DL/2 .
RUN FOR 12 MONTHS
CONTINUE
HRITB(9,308)IYR,AMO(IMO> , IMO
FORMATMX, 'YEAR' ,15, 5X, 'MONTH1 ,A4,2X,I2>
COMPILE MONTHLY HYDROLOGIC PARAMETERS
IFdSTBP.GT.1 .OR.ISKIP.GT.1 )GO TO HO
THM1 = HYDBAL ( IMO , 1 )
PM = HYDBAL (IMO, 2)
IM = HYDBAL (IMO, 3)
EM = HYDBAL (IMO, 4)
RSM = HYDBAL (IMO, 5)
RGM = HYDBAL ( IMO , 6 )
COMPILE MONTHLY APPLICATION DATA ( LOADING, SURFACE
POLINU = RUNM1 ( 4 , IMO )
POLINM = RUNM1(5,IMO)
POLINL = RUNMK6.IMO)
ISRM = RUNM1 (7, IMO)
TA = CLIMM1 (2,IMO,IYR)
COMPILE SECONDARY MONTHLY INPUT DATA
ASL= RUNM2(1,IMO)
TRANSU = RUNM2 ( 2 , IMO ) /NI
TRANSM = RUNM2 ( 3 , IMO ) /NI
TRANSL = RUNM2 ( 4 , IMO ) /NI
SINKU = RUNM2 ( 5 , IMO ) /NI
SINKM = RUNM2(6,IMO)/NI
SINKL = RUNM2(7,IMO)/NI
ESTIMATE LOWER UNSZO INFILTRATION
RUNOFF,ETC.)
K2=(DU+DM)/((DU/K1U)+(DM/K1M))
IMDU=(RGM+(IM-RGM>*( (DM+DD/Z) )*(K1U/K1Z)
IMDM=(RGM+(IM-RGM)*(DL/Z))*(K2/K1Z)
ISKIP=2
40 CONTINUE
IF(ISTBP.EQ.NSTBPS >ISKIP=1
IFdPASS.GT.1 )GO TO 45
LIGU=LIGU+RUNM2(8,IMO)/NI
LIGM=LIGM+RUNM2(9,IMO)/NI
LIGL=LIGL+RUNM2(10,IMO)/NI
C
C CALCULATE LIGAND CONCENTRATION FROM LIGAND MASSES
C
LIGCU1=LIGU/(DU*THM1)
-------
249
LIGCM1=LIGM/(DM*THM1 )
LIGCL1=LIGL/(DL*THM1)
C
C SEE IP GROUNDWATER CONTAMINATION IS POSSIBLE(I.B. IF ANY SURFACE
C WATER PROM THIS SIMULATION REACHES THE GROUNDWATER THIS MONTH)
C IF NOT SET GROUNDWATER RUNOFF TO ZERO FOR THIS MONTH'S
C POLLUTANT CYCLE
C
DPTH=DEPTH(THM1,N,IM,RGM,DPTH,NI)
IP(DPTH.LE.Z)RGM=0.0
C
C ITERATIVE SOLUTION OF EQUATION SYSTEM -UPPER LAYER
C
C SET UP ITERATION PARAMETERS
C
45 CONTINUE
LAYER=1
IFIG=0
ISIG=0
INT=1.B8
SVCUM1=0.0
CUM1=0.0
C
C TO START WITH A DIRTY SITE, LOAD CUM AND CLM
C
IF(CUM.EQ.0.)CUM=RUNM1(1,IMO)
IFCCMM.EQ.O.)CMM=RUNM1(2,IMO)
IF(CLM.EQ.0.)CLM=RUNM1(3,IMO)
C
C SOLVE EQUATION SYSTEM-UPPER LAYER
C
PINU=POLINU/NI + ASMIND/NI + ASMINW/NI
PTHERU=CUM*THM*DU + SUM*RS*DU + CUSA*(N-THM)*DU + COMPCCUM.
1 MWT,SK,LIGCU,MNTLIG,B.THM,DU)
C
C CALCULATE AMOUNT INVOLVED IN CEC
C
IF(TCECU.GE.(PINU+PTHBRU)>PCECU=PINU+PTHERU
IF(TCBCU.LT.(PINU+PTHERU))PCECU=TCECU
PHYDCU = PCECU*KTU*30./NI
IFCPHYDCU .GT. PCECU)PHYDCU=PCECU
PCECU=PCBCU-PHYDCU
C
C CHECK VALID ENTRIES FOR OTHER SINKS AND TRANS
C
IFCSINKU+TRANSU .LB. PINU+PTHERU-(PCBCU+PHYDCU))GO TO 200
SINKU=0.0
TRANSU=0.0
WRITE(IOW,806)IYR,IMO,ISTEP
806 FORMAT(/,1X,'***WARNING- YEAR',15,' MONTH',15,' ITBRATION=',IS,
*':',/,' INSUFFICIENT',
*' POLLUTANT MASS FOR',/,' SPECIFIED SINKS AND TRANSFORMATIONS',
*' IN UPPER ZONE',/,
*' OTHER SINKS SET TO ZERO,OTHER TRANSFORMATIONS SET TO ZERO')
C
C MASS BALANCE EQUATION
-------
250
c
200 PREMU=THM1*CUM1*DU + CUM1**(1./PRN)*KU*RS*DU + PCBCU +
1COMP(CUM1,MNT,SK,LXGCU1.MWTLIG,B.THM1,DU) +
2(CUM1*H*DU*(N-THM1))/(R*(TA+273.))
POUTU = CUM1*RSM*ISRM/NZ +
VOLM(0.,CUM1,H,R,TA,VOLDU,DA,N,THM1,NZ) +
CUM1*ZMDU/NZ + SZNKU +
(CUM1**(1.XPRN)*KU+PCBCU/(RS+DU))*GWASH/MZ
PTRAMU=CUH1*THH1*DU*XTU*30./HI
+ CUM1**(1./PRN)*DU*RS*KTU*KU*30./NZ
+ CUM1*DU*THH1*KDB*30./MZ
+ PHYDCU + TRANSU
C
C CONVERGENCE CRZTBRZA :BASED ON HP
C
HP = PZNU+PTHERU-PRBMU-POUTU-PTRANU
C
C PZRST TZMB THROUGH (CHECK POR SPBCZAL CASB OP CLEAN COLUMN)
C
ZP(CUHI) 300,300,305
300 HPO=MP
ZP(ABS(MP).BQ. 0.00)GO TO 400
SVCUH1=CUM1
CUM1=.CUM1+ZNT
GO TO 200
C
C TEST POR CONVBRGBNCB
C
305 AHP=ABS(MP)
C
C CONVBRGBNCB CRZTBRZON 1, ZS EQUATZON BALANCED WITHIN IX
C
ZP(AMP.LT.1.B-8) GO TO 400
C
C CONVERGENCE CRZTERZON 2, HAS ZT CROSSED THE ORIGIN(OVERSHOT)
C
ZP((HP*MPO).LT.O) GO TO 402
C
C CONVBRGBNCB CRZTBRZON 3, ZS ZT GOZNG ZN WRONG DZRECTZON (Z.B.
C COLUMN HAS BECOME CLEAN ZN THZS MONTH)
C
ZP(ABS(MPO).LT.ABS(MP))GO TO 401
C
C NOT CONVERGED
C
IPIG=1
SVCUM1=CUM1
CUM1=CUM1+ZNT
GO TO 200
C
C CROSSED ORIGIN, TRY SMALLER INTERVAL
C
402 ZF(ZPZG .BQ. 0) GO TO 410
ZSZG=ZSZG+1
IP(ZSZG.EQ.6)GO TO 409
410 ZNT=ZNT/10.
-------
251
IFdNT.LT. 1.B-16) GO TO 409
CUM1=SVCUM1+INT
GO TO 200
C
C SPECIAL CASE ALL POLLUTANT LEAVES THIS MONTH
C
401 CUM1=0.
GO TO 400
C
C STOP WHEN INTERVAL IS VERY SHALL,(I.E. CONCENTRATRATION IS
C CALCULATED TO WITHIN NUMERICAL ACCURACY OP THE MACHINE)
C
409 CUM1=SVCUM1
C
C FINAL CONVERGENCE OP UPPER LAYER-CALCULATE OTHER CONCENTRATIONS
C
400 SUM1=(CUM1**(1./PRN)*DU*RS*KU + PCECU)/(RS*DU)
CUSA1=(CUM1*H)/(R*(TA+273.>)
IF(MHT.EQ.O.O)GO TO 495
LIGCUF=(LIGCU1*DU*THM1 - B*COMP(CUM1.MWT,SK.LIGCU1.MWTLIG,B,THM1 .
1DU )*(MHTLIG/MWT))/(DU*THM1)
IFCLIGCUF.LT.O.>LIGCUF=0.0
C
C ITERATIVE SOLUTION OP EQUATION .SYSTEM -MIDDLE LAYER
C
C SET UP ITERATION PARAMETERS
C
495 LAYER=2
IPIG=0
ISIG=0
INT=1.B8
SVCMM1=0.0
CMM1=0.0
C
C SOLVE EQUATION SYSTEM-MIDDLE LAYER
C
PINM=POLINM/NI + CUM1*IMDU/NI
PTHBRM=CMM*THM*DM + SMM*RS*DM + CMSA*(N-THM)*DM + COMP(CMM,MWT,SK,
1 LIGCM,MWTLIG,B,THM,DM)
C
C CALCULATE AMOUNT INVOLVED IN CBC
C
IP(TCBCM.GB.(PINM+PTHBRM))PCBCM=PINM+PTHBRM
IF(TCBCM.LT.(PINM+PTHBRM))PCECM=TCECM
PHYDCM = PCECM*KTM*30./NI
IF(PHYDCM .GT. PCECM)PHYDCM=PCECM
PCBCM=PCBCM-PHYDCM
C
C CHECK THAT VALUES ENTERED FOR OTHER SINKS AND TRANS ARE VALID
C
IF(SINKM+TRANSM .LB. PINM+PTHBRM-(PCBCM+PHYDCM))GO TO 500
SINKM=0.0
TRANSM=0.0
WRITE(IOW,808)IYR,IMO,ISTBP
808 FORMAT(/,1X,'***WARNING- YEAR',IS,' MONTH'.15,• ITBRATION=',15,
*':',/,' INSUFFICIENT1,
-------
252
*' POLLUTANT MASS FOR1,/,' SPECIFIED SINKS AND TRANSFORMATIONS',
*' IN MIDDLE EONS',/,
*' OTHER SINKS SET TO ZERO,OTHER TRANSFORMATIONS SET TO ZERO')
C
C MASS BALANCE EQUATION
C
500 PREMM=THM1*CMM1*DM + CMM1**(1./FRN)*KM*RS*DM + PCBCM +
1COMP(CMM1,MWT,SK,LIGCM1,MHTLIG,B,THM1,DM) +
2(CMM1*H*DM*(N-THM1 ) ) /(R*(TA+273.))
POUTM = CMM1*IMDM/NI +
VOLMCCUM1,CMM1,H,R.TA,VOLDM,DA,N,THM1,NI) +
SINKM
PTRANM=CMM1*THM1*DM*KTM*30. /HI
+ CMM1**(1./FRN)*DM*RS*KTM*KM*30./NI
+ CMM1*DM*THM1*KDEM*30./NI
+ PHYDCM + TRANSM
C
C CONVERGENCE CRITERIA :BASED ON MP2
C
MP2= PINM+PTHBRM-PREMM-POUTM-PTRANM
C
C FIRST TIME THROUGH (CHECK FOR SPECIAL CASE OF CLEAN COLUMN)
C
IF(CMM1) 505,505,510
505 MP20=MP2
IF(ABS(MP2).LT. 1.E-4)GO TO 590
SVCMM1=CMM1
CMM1=CMM1+INT
GO TO 500
C
C TEST FOR CONVERGENCE
C
510 AMP2=ABS(MP2)
C
C CONVERGENCE CRITERION 1, IS EQUATION BALANCED WITHIN IX
C
IFCAMP2.LT.0.01) GO TO 590
C
C CONVERGENCE CRITERION 2. HAS IT CROSSED THE ORIGIN(OVERSHOT)
C
IF((MP2*MP2O).LT.O) GO TO 585
C
C CONVERGENCE CRITERION 3, IS IT GOING IN WRONG DIRECTION (SPECIAL
C CASES)
C
IF(ABS(MP2O).LT.ABS(MP2))GO TO 580
C
C NOT CONVERGED
C
IFIG=1
SVCMM1=CMM1
CMM1=CMM1+INT
GO TO 500
C
C CROSSED ORIGIN, TRY SMALLER INTERVAL
C
-------
253
585 IPdPIG .EQ. 0) GO TO 575
ISIG=ZSZG+1
ZF(ISZG.BQ.6)GO TO 570
575 INT=INT/10.
ZFdNT.LT. 1.E-8) GO TO 570
CMM1=SVCMM1+INT
GO TO 500
C
C SPECIAL CASE:
C ALL POLLUTANT LEAVES THZS MONTH
C
580 CMM1=0.
GO TO 590
C
C STOP WHEN ZNTERVAL ZS VERY SMALL,(Z.E. CONCENTRATRATZON ZS
C CALCULATED TO HZTHZN NUMERICAL ACCURACY OF THE MACHZNB)
C
570 °CMM1 =SVCMM1
C
C FINAL CONVERGENCE OF MZDDLE LAYER-CALCULATE OTHER CONCENTRATIONS
C
590 SMM1=(CMM1**(1./FRN)*DM*RS»KM + PCECM)/(RS*DM)
CMSA1=(CMM1*H)/(R*(TA+273.))
ZF(MWT .EQ. 0) GO TO 599
LIGCMF=(LIGCM1*DM*THM1 - B*COMP)PCBCL=TCBCL
PHYDCL = PCBCL*KTL*30./NI
IFCPHYDCL .GT. PCECL)PHYDCL=PCBCL
PCBCL=PCECL-PHYDCL
C
C CHECK VALZD ENTRIES FOR OTHER SINKS AND TRANS
C
IF(SINKL+TRANSL .LB. PINL+PTHBRL-(PCBCL+PHYDCL))GO TO 600
-------
254
SINKL=0.0
TRANSL=0.0
WRITE(IOW,807)IYR,IMO,ISTEP
807 FORMAT(/,1X,'***WARNING- YEAR',IS,' MONTH',15,' ITBRATZON=',15,
*':•,/.• INSUFFICIENT1,
*' POLLUTANT MASS FOR1,/,' SPECIFIED SINKS AND TRANSFORMATIONS',
*' IN LOWER ZONE',/,
*' OTHER SINKS SET TO ZERO,OTHER TRANSFORMATIONS SET TO ZERO')
C
C MASS BALANCE EQUATION
C
600 PRBML=THM1*CLM1*DL + CLM1**(1./FRN)*KL*RS*DL + PCECL +
1COMPCCLM1,MWT,SK.LI6CL1.MNTLIG,B,THM1,DL) +
2(CLM1*H*DL*(N-THM1))/(R*(TA+273.))
CMAX=AMAX1(CUM1,CMM1>
POUTL = CLM1*RGM/NI
+ VOLM(CMAX,CLM1,H,R,TA,VOLDL,DA,N,THM1,NI)
-I- SINKL
PTRANL=CLM1*THM1*DL*KTL*30./NI
+ CLM1**(1./FRN)*DL*RS*KTL*KL*30./NI
+ CLM1*DL*THM1*KDBL*30./NI
+ PHYDCL + TRANSL
C
C CONVERGENCE CRITERIA :BASED ON MPL1
C
MPL1 = PINL+PTHERL-PREML-POUTL-PTRANL
C
C FIRST TIME THROUGH, (CHECK FOR SPECIAL CASE OF CLEAN COLUMN)
C
IFCCLM1) 333,333,334
333 MPLO=MPL1
IF(ABS(MPL1).LT. 1.E-4) GO TO 444
CLM1=CLM1+INT
GO TO 600
C
C TEST FOR CONVERGENCE
C
334 AMPL=ABS(MPL1)
C
C CONVERGENCE CRITERION 1, IS EQUATION BALANCED WITHIN IX
C
IP(AMPL.LT.0.01) GO TO 444
C
C CONVERGENCE CRITERION 2, HAS IT CROSSED THE ORIGIN(OVERSHOT)
C
IF(MPL1*MPLO.LT.O.) GO TO 446
C
C CONVERGENCE CRITERION 3, IS IT GOING IN WRONG DIRECTION (I.E.
C COLUMN HAS BECOME CLEAN IN THIS MONTH)
C
IF(ABS(MPLO).LT.ABS(MPL1))GO TO 443
C
C NOT CONVERGED
C
IPIG=1
SVCLM1=CLM1
-------
255
CLM1=CLM1+INT
GO TO 600
C
C CROSSED ORIGIN, TRY SMALLER INTERVAL
C
446 IFdFIG .EQ. 0) GO TO 450
ISIG=ISIG+1
IF(ISXG.BQ.6> GO TO 447
450 INT=INT/10.
IPdNT.LT. 1 .B-8) GO TO 447
CLM1=SVCLM1+INT
GO TO 600
C
C SPECIAL CASE ALL POLLUTANT LEAVES THIS MONTH
C
443 CLM1=0.
IF(RGM.EQ.O)GO TO 444
PXNFL=PXNL+PTHERL
GO TO 444
C
C STOP WHEN INTERVAL IS VERY SMALL
C
447 CLM1=SVCLM1
C
C FINAL CONVERGENCE OF LOWER LAYER-CALCULATE SOIL CONCENTRATIONS
C
444 SLM1=(CLM1**(1./FRN)*DL*RS*KL + PCBCL)/(RS*DL)
CLSA1=(CLM1*H)/(R*(TA+273.))
IFCMHT .EQ. 0.0)GO TO 499
LIGCLF=(LIGCL1*DL*THM1 - B*COMP(CLM1,MWT,SK,LXGCL1,MWTLIG,B,THM1 .
1DL)*(MWTLIG/MWT))/(DL*THM1)
IF(LIGCLF .LT.O.)LIGCLF=0.0
499 CONTINUE
C
C CALCULATE AND STORE MONTHLY POLLUTANT MASS DISTRIBUTIONS
C
C DEPTOT IS TOTAL DEPOSITION FROM DRY C WBT DEPOSITION AND
C DIRECT APPLICATION (POLINU)
C
DEPTOT=ASMIND+ASMINW+POLINU+POLINM+POLINL
IF(DEPTOT.BQ.O.O)GO TO 502
DBPRAT=(ASMIND+ASMINW)/DBPTOT
PINRAT=(POLINU+POLINM+POLINL)/DBPTOT
C
C AR IS AREA OF DIRECT APPLICATION, ARSPLU IS ARBA OF SOIL AFFECTED
C BY DEPOSITION, ARBASP IS WEIGHTED ARBA
C
AREASP=AR*PINRAT+ARSPLU*DEPRAT
GO TO 504
502 ARBASP=AR
IF(ARBASP.BQ.0.0)ARBASP=ARSPLU
504 CONTINUE
ARSPLU=ARBASP
IF(ARSPLU.BQ.O.O)GO TO 506
AREA(IWATBR > =ARSPLU
GO TO 508
-------
256
506 ARSPLU=AREA(IWATER)
508 CONTINUE
PZNP(ZMO,1,IWATBR)=PZNP(IMO.1,IWATER)+ARSPLU*ASMZNH/NZ
PZNP(ZMO,2,IWATER)=PZNP(ZMO,2.IWATER)+AR*POLINU/NZ+ARSPLU*
$ ASMZND/NZ
PZNP(ZMO,3,IWATER)=PZNP(ZMO,3,IWATER)+AR*POLINL/NI
PZNP(ZMO,4,ZHATER)=PZNP(ZMO,4,IWATER)+AR*POLZNM/NI
PZNP(ZMO,6,ZHATER)=0.0
DO 350 1=1.5
PZNP(ZMO.6,ZHATER)=PZNP(ZMO,6,ZHATER)+PZNP(ZMO,I,ZHATER)
350 CONTINUE
POLBAL(ZMO,1 ,ZHATER)=POLBAL(IMO,1,ZHATER > +ARBASP*CUM1*RSM* ZSRM/NI
POLBAL(ZMO.2,IWATBR)=POLBAL(IMO,2,ZHATER > +
$ ARBASP*VOLM(0.,CUM1,H,R,TA.VOLDU,DA.N,THM1,NZ)
POLBAL(ZMO,3,ZHATER)=POLBAL(ZMO,3,ZHATER > +AREASP*SINKU
POLBAL(ZMO,4,IWATBR)=AREASP* > *RS*DL*KL
POLBAL(ZMO,10.IWATER)=POLBAL(ZMO,10,ZHATBR)+
$ ARBASP*CLM1*THM1*DL*KDEL*30./NZ
POLBAL(ZMO,11,ZHATBR)=POLBAL(ZMO,11,ZHATBR)+ARBASP* TRANSL
POLBAL(ZMO,12,ZHATER)=AREASP*THM1*CUM1*DU
POLBAL(ZMO,13,ZHATER)=AREASP*THM1*CLM1*DL
POLBAL(ZMO,16,ZHATBR)=PCBCU*ARBASP
POLBAL(ZMO,17,ZHATBR)=PCBCL*AREASP
POLBAL < ZMO.18,ZHATBR)=POLBAL(ZMO,18,ZHATBR) +
* ARBASP*CUM1*THM1*DU*KTU*30./NI
POLBAL(ZMO,19,ZHATBR)=POLBAL(ZMO,19,ZHATBR)+
$ AREASP*CLM1*THM1*DL*KTL*30./NZ
POLBAL(ZMO.20,ZHATBR)=AREASP*
$ COMP(CUM1.MHT.SK.LZGCU1.MHTLZG,B,THM1,DU)
POLBAL(ZMO,21,ZHATER)=AREASP*
$COMP(CLM1,MHT,SK,LZGCL1,MHTLZG,B.THM1,DL)
POLBAL(ZMO.22,ZHATER)=POLBAL(ZMO,22,ZHATBR) + ARBASP*SZNKM
POLBAL(ZMO,23.ZHATBR)=ARBASP*(CMM1**(1./PRN))*RS*DM*KM
POLBAL(ZMO.24.ZHATER)=POLBAL(ZMO,24,ZHATBR)
$ +ARBASP*CMM1*THM1*DM*KDBM*30./NZ
POLBAL(ZMO,25,ZHATER>=POLBAL(ZMO,25,ZHATBR) + ARBASP*TRANSM
POLBAL(ZMO,26,ZHATER)=ARBASP*THM1*CMM1*DM
POLBAL(ZMO,28.ZHATER)=PCECM*AREASP
POLBAL(ZMO.29,ZHATBR)=POLBAL(ZMO,29,ZHATER)
$ +AREASP*CMM1*THM1*DM*KTM*30./NZ
POLBAL(ZMO,30.ZHATBR)=ARBASP*COMP(CMM1.MHT.SK,LIGCM1.MHTLIG.B,
$ THM1.DM)
POLBAL(ZMO,31 ,ZHATER > =POLBAL(ZMO,31,ZHATER) +
$ ARBASP*VOLM(CUM1,CMM1,H,R.TA,VOLDM,DA,N,THM1,NZ)
CMAX=AMAX1(CUM1,CMM1>
POLBAL(ZMO,32,ZHATBR > =POLBAL(ZMO,32,ZHATBR)+AREASP*
$VOLM(CMAX,CLM1,H,R,TA,VOLDL,DA.N.THM1,NZ)
POLBAL(ZMO,33,ZHATER)=POLBAL(ZMO,33,ZHATBR)+AREASP*
$(CUM1**(1./PRN))*KU*RS*DU*KTU*30./NI
POLBAL(ZMO,34,ZHATBR)=POLBAL(ZMO.34,ZHATBR)+
-------
257
$AREASP*(CHH1**(1./PRN)>*KM*RS*DM*KTM*30.0/NZ
POLBAL(ZHO,35,IWATBR)=POLBAL(IMO,35,IHATBR)+AREASP*
$(CLH1**(1./PRN))*KL*RS*DL*KTL*30./NI
POLBAL(ZHO,36,IWATBR)=POLBAL(IMO,36,ZWATBR)+ARBASP*PHYDCU
POLBAL(ZMO,37,IHATBR)=POLBAL(ZMO.37,IWATBR)+AREASP*PHYDCM
POLBAL(ZMO,38,IWATBR)=POLBAL(ZMO.38,ZWATER)+ARBASP*PHYDCL
POLBAL(ZMO,39,ZWATBR)=ARBASP*CUSA1*(N-THM1)*DU
POLBAL(ZMO,40,ZWATBR)=ARBASP*CMSA1*(N-THM1)*DM
POLBAL(ZMO,41,ZWATBR)=ARBASP*CLSA1*(N-THM1)*DL
POLBAL(ZMO,42,ZWATBR)=POLBAL(ZMO,42,ZWATBR)+ARBASP*SUM1*GWASH/NZ
PCONC(ZMO,1 ,ZWATER > =CUM1
PCONC(ZMO,2,ZWATER > =CMM1
PCONC(ZMO,3,ZWATBR)=CLM1
PCONC(ZMO,4,ZWATBR)=SUM1
PCONC(ZMO,5.ZWATBR)=SMM1
PCONC(ZMO,6.ZWATBR)=SLM1
PCONC(ZMO,7,ZWATBR)=CUSA1
PCONC(ZMO,8,IWATBR)=CMSA1
PCONC(ZMO,9,IWATBR)=CLSA1
PCONC(ZMO,10,ZWATBR)=LZGCUF
PCONC(ZMO,11,ZWATBR)=LZ6CMF
PCONC(ZMO,12.ZWATBR)=LIGCLF
PCONC(ZMO,13,IWATBR)=DPTH
C
C THIS ITERATION'S CALCULATED CONCENTRATIONS BBCOMB STARTING
C CONCENTRATIONS FOR THE NEXT ITERATION
C
CUM=CUM1
CMM=CMM1
CLM=CLM1
THM=THM1
SUM=SUM1
SMM=SMM1
SLM=SLM1
CUSA=CUSA1
CMSA=CMSA1
CLSA=CLSA1
LIGCU=LZGCU1
LZGCM=LZGCM1
LIGCL=LIGCL1
C
C CALCULATE ZNTBRACTZON TERMS BETWEEN SOZL C WATER ( AZR FOR
C WATER BODY I (USB WEIGHTED AREA FROM ABOVE - ARBASP)
C 1=1 SIGNIFIES LAKE, 1=2 SIGNIFIES RIVER, 1=3 SIGNIFIES ESTUARY
C 1=1 AND WATBOD = NO SIGNIFIES NO WATER BODY IS CONSZDBRBD.
C SURROF ZNCLUDBS BOTH WASHLOAD AND SURFACE RUNOFF
C
SURROF=ARBASP*(CUM1*RSM*ZSRM+SUM1*GWASH)
GRWROF=ARBASP*CLM1*RGM
ZFCGRWROF.LT.O.>GRWROF=0.
SAMOUT=ARBASP*(VOLM(0.,CUM1,H,R,TA,VOLDU,DA,N,THM1,1.0)+
t VOLMCCUM1,CMM1,H,R,TA.VOLDM,DA,N,THM1,1.0)+
$ VOLM(CMAX,CLM1,H,R,TA,VOLDL,DA.N,THM1,1.0))
ZP(Z STEP.LT.NSTEPS)RETURN'
ZF(IWATBR.BQ.1.AND.WATBOD.BQ.NO)GO TO 530
IFdWATER.NE. 1 )GO TO 610
-------
258
SVOLAL=POLBAL(IMO,2,IWATBR)+POLBAL(IMO,31,IWATBR)+
$ POLBAL(IMO,32,IWATBR)
SHSURL=POLBAL(IMO,1,IWATBR)
SWGRWL=POLBAL(IMO,7,IWATER)
SCONUL=(RS*SUM1+THM1*CUM1+(N-THM1)*CUSA1)*1.08+6
SCONML=(RS*SMM1+THM1*CMM1+*1.OB+6
RBSUSL=RDUST*SUM1*1.B-6
WASHL=POLBAL(IMO,42,IWATBR)
610 IF(IWATER.NB.2)GO TO 520
SVOLAR=POLBAL(IMO,2,ZWATBR)+POLBAL(IMO,31,IWATBR)+
$ POLBAL(IMO,32,IWATBR)
SWSURR=POLBAL(IMO,1,IWATBR)
SWGRWR=POLBAL(IMO,7,IWATBR)
SCONUR=(RS*SUM1+THM1*CUM1+(N-THM1)*CUSA1)*1.OB+6
SCONMR=(RS*SMM1+THM1*CMM1+(N-THM1)*CMSA1)*1.08+6
SCONLR=(RS*SLM1+THM1*CLM1+(N-THM1>*CLSA1)*1.OB+6
RBSUSR=RDUST*SUM1*1.B-6
WASHR=POLBAL(IMO,42,IWATER)
520 IF(IWATER.NB.3)GO TO 540
SVOLAB=POLBAL(IMO,2,IWATBR)+POLBAL(IMO,31,IWATBR)+
$ POLBAL *CMSA1)*1.OB+6
SCONLS=(RS*SLM1+THM1*CLM1+(N-THM1>*CLSA1)*1.OB+6
RBSUSS=RDUST*SUM1*1.E-6
WASHS=POLBAL(IMO,42,IWATBR)
540 CONTINUE
C CALCULATE ANNUAL POLLUTANT MASS AVERAGES AND TOTALS
C
00 420 J=1,45
POLBAL(13,J,IWATBR)=POLBAL(13,J,IWATBR)+POLBAL(IMO,J,IWATBR)
420 CONTINUE
DO 430 J=1,6
PINP(13.J,IWATBR)=PINP(13,J,IWATBR)+PINP(IMO,J,IWATBR)
430 CONTINUE
DO 431 J=1,15
PCONC ( 1 3 , J, IWATER) =PCONC ( 1 3 , J, IWATBR ) +PCONC ( IMO, J , IWATBR)
431 CONTINUE
IFCIMO.BQ.1)ARBA1(IWATBR>=ARBASP*0.0001
IF(IMO.LT.12)RETURN
DO 432 J=1,15
432 PCONC(13,J,IWATBR)=PCONC(13,J,IWATBR)/12.
-------
259
PZMPU(ZHATBR) = PINP(13,1,IWATER) + PIMP (13.2,IWATER)
PINPM(IWATER) = PZNP(13,4,ZWATER)
PZHPL(ZHATBR) = PINPM 3 , 3 , ZWATER)
C
C PRZNT POLLUTANT CYCLE RESULTS
C
WRZTE(ZOH,649)
6«9 FORMAK//. IX,T5.55( ' = ')./)
ZP(ZWATER.BQ.1.AND.WATBOO.EQ.NO)GO TO 695
ZF(ZWATBR.BQ.1) WRZTBCZOW,650)
650 FORMAT(/,1X,TS,'WATER BODY ZS A LAKE')
IF(ZWATER.EQ.2) WRITE(ZOW,670)
670 FORMAT(/,1X.T5,'WATER BODY ZS A RZVER')
ZF(ZWATER.EQ.3) WRITE(ZOW,690)
690 FORMAT,1X,T5,'WATER BODY ZS AN ESTUARY')
GO TO 700
695 WRZTB(ZOW,696)
696 FORMAT(/,1X.T5,'THERE ZS NO WATER BODY')
700 CONTZNUE
WRZTE(ZOW,702)AREA1(ZWATER)
702 FORMAT (/, 1X, T5 , 'CONTAMINATED SOZL AREA (1ST MONTH) ZN H**2 ••
S1PE10.3)
WRITE(IOW,649)
WRZTE(ZOW,704)(AMO(IQ),ZQ=1 ,12)
704 FORMAK 5(/) ,
*6X,'— POLLUTANT MASS ZNPUT TO COLUHN(UG) —',
*4(/),18X,12(2X,A4,3X),/>
WRZTB(ZOW,751)((PINP(ZQ,ZVAL,ZWATER),ZQ=1,12),ZVAL=1,2),
*(PZNP(ZR,4,IWATER),IR=1.12),(PZNP(ZS,3,IWATER),ZS=1,12)
WRZTB(ZOW,753)(PZNP(ZQ,6,ZWATER),ZQ=1,12)
751 FORMATMX, ' PRBCZPATZON' ,T20, 1 2G9 . 3 , / ,
*1X,'OTHER(UPPER)',T20,12G9.3,/,
*1X,'OTHER(MIDDLE)',T20,12G9.3,/,
*1X,'OTHER(LOWBR)',T20,12G9.3>
753 FORMAT(/,/,1X,'TOTAL ZNPUT',T20,12G9.3)
WRITEdOW, 705)
705 FORMAK'1',/,6X,'-- POLLUTANT MASS DZSTRZBUTZON ZN COLUMN (
*'UG) —')
WRITEdOW, 706)
706 FORMAK2(/),1X,T5,'UPPER SOZL ZONE:',/)
WRZTE(ZOW,759)((POLBAL(ZQ,ZVAL,IWATER),IQ=1,12).ZVAL=1,4),
*(POLBAL(ZR,16,ZWATBR),ZR=1 ,12)
759 FORMAT MX,'SURFACE RUNOFF',T20 ,1 2G9 . 3 ,/.
*1X,'VOLATZLZZBD*,T20,12G9.3,/,
*1X,'OTHER SINKS',T20,12G9.3,/,
*1X,'ADS. ON SOIL'.T20.12G9.3,/,
*1X,'ZMMOBZLZZD-CBC',T20,12G9.3)
WRZTB(ZOW,762)(POLBAL(ZQ,5,ZWATBR),ZQ=1,12),
*
-------
260
•MX, 'COMPLBXBD' ,T20,12G9.3>
WRITE(IOW,763)(POLBAL(IQ,6.IWATBR),IQ=1,12),
*(POLBAL(IQ,12,ZHATBR),IQ=1,1 2) ,
*(POLBAL(IR,39,IWATER),ZR=1.12)
763 FORMAT MX, 'OTHER TRANS . ' ,T20 , 1 269 . 3 ,
*/,1X,'ZN SOIL MOIST.',T20.12G9.3,/,
*1X.'IN SOIL AIR',T20,12G9.3)
WRITE(IOW,720)
720 FORMAT(2(/),1X,T5,'MIDDLE SOIL ZONE:',/,/)
WRITECIOW.721)(POLBAL(IQ,31,IWATBR),IQ=1,12),
*(POLBAL(IR,22,IWATER),IR=1,12),
*(POLBAL(18,23,IWATBR),IS=1,12).
*(POLBAL(IT.28.IWATER),IT=1,12)
721 FORMAT(
*1X,'VOLATILIZED',T20,12G9.3,/,
*1X,'OTHER SINKS',T20,12G9.3,/,
•MX.'ADS. ON SOIL',T20,12G9.3,/.
*1X,'IHMOBILIZBD-CBC',T20,12G9.3)
WRITE(IOW,7 22)(POLBAL(IQ.24,IWATBR),IQ=1,12),
*(POLBAL(IR,29,IWATBR),IR=1,12),
*(POLBAL(IT,34,IWATBR),IT=1,12),
*(POLBAL(18,37.IWATBR),18=1 , 1 2) .
*(POLBAL(IU,30,IWATBR),IU=1 ,12)
722 FORMATMX, 'DEGRADED1 ,T20 ,1 2G9 . 3 , / ,
*1X,'HYDROLYZED-MOI',T20,12G9.3,/ ,
*1X,'HYDROLYZBD-SOI',T20,12G9.3,/,
*1X,'HYDROLYZED-CEC',T20,12G9.3,/ ,
*1X,'COMPLBXBD',T20,12G9.3)
WRITE(IOW,7 23)(POLBAL(IQ,2 5,IWATBR),IQ=1,12),
*(POLBAL(IQ,26,IWATBR),IQ=1.12) ,
*(POLBAL(IR,40,IWATBR).IR=1 ,12)
723 FORMAT(1X,'OTHER TRANS.',T20,12G9.3,
*/,1X,'IN SOIL MOIST.'.T20.12G9.3,/,
*1X,'IN SOIL AIR',T20,12G9.3)
WRITB(IOW,764)
764 FORMAT(2(/).1X.T5,'LOWER SOIL ZONE:',/)
WRITE(IOW,765)(POLBAL(IQ,7,IWATBR),IQ=1,12),
*(POLBAL(IQ,32,IWATBR),IQ=1 ,12) ,
*(POLBAL(IR,8,IWATBR),IR=1,12),
*(POLBAL(IT,9,IWATBR),IT=1,12).
*(POLBAL(IT,17,IWATBR),IT=1,12).
*(POLBAL(IS,10,IWATBR),IS=1 ,12)
765 FORMAT(1X,'INTO GRWATBR',T20,1 2G9.3 , / ,
*1X. 'VOLATILIZED' ,T20,12G9.3,/ ,
*1X,'OTHER SINKS'.T20.12G9.3,/,
*1X,'ADS. ON SOIL'.T20.12G9.3,/,
*1X,'IMMOBILIZD-CBC',T20,12G9.3,/,
*1X,'DEGRADED',T20,12G9.3)
WRITE(IOW,766)(POLBAL(IQ,19,IWATBR),IQ=1,12),
*(POLBAL(IQ,35,IWATER),IQ=1.12).
*(POLBAL(IQ,38,IWATBR),IQ=1, 1 2),
*(POLBAL(IR,21,IWATBR),IR=1,12),
•(POLBAL(IT,11,IWATER),IT=1,12)
766 FORMATMX, ' HYDROLYZBD-MOI' ,T20 ,1 2G9 . 3 , / ,
*1X,'HYDROLYZBD-SOI',T20,12G9.3,/,
*1X,'HYDROLYZED-CEC',T20,12G9.3,/ ,
-------
261
*1X,'COMPLEXED',T20,1269.3,/,
* 1X,'OTHER TRAMS.',T20,12G9.3)
WRITECIOW,760)(POLBAL(IU.13,IWATBR),IU=1.12).
*(POLBAL(IS,41,IWATBR),IS=1,12)
760 FORMAT(
*1X,'IN SOIL MOIST.',T20,12G9.3,/.
*1X,'IN SOIL AIR',T20,12G9.3)
HRITE(IOH,767)
767 FORMAT('1•,3(/),6X.'-- POLLUTANT CONCENTRATIONS-(UG/ML) OR (UG/G)
* —',/./)
WRITE(IOW,761)(PCONC(IQ,1,IWATER),IQ=1.12).
*(PCONC(IR,a,IWATER),IR=1,12).
*(PCONC(IR,7,IWATER).IR=1,12),
*(PCONC(IT,10,IWATER),IT=1,12)
761 FORMATdX, 'MOISTURE-UPPER' . T20 , 1 2G9 . 3 , /
*1X,'SOIL-UPPER1,T20,12G9.3,/,
*1X,'AIR-UPPER*,T20,12G9.3,/,
*1X,'FREE LIGAND-UPPER',120,12G9.3 >
WRITE(IOW,7 24)(PCONC(IQ,2,IWATBR),IQ=1,12),
*(PCONC(IR,5,IWATBR),IR=1,12),
*(PCONC(IR,8,IWATBR), IR=1,12),
*(PCONC(IT,11.IWATBR),IT=1,12)
724 FORMAT(/,/,/,1X,'MOISTURE-MIDDLE',T20,12G9.3,/
*1X,'SOIL-MIDDLE',T20,12G9.3,/,
*1X.'AIR-MIDDLE',T20,12G9.3,/,
*1X.'LIGAND-MIDDLB',T20,12G9.3)
WRITE(IOW,770XPCONC(IQ,3,IWATBR),IQ=1,12).
*(PCONC(IR,6,IWATBR),IR=1,12),
*(PCONC(IR,9,IWATBR),IR=1,12),
*(PCONC(IT,12,IWATBR),IT=1,12)
770 FORMAT(/,/,1X,'MOISTURE-LOWER',T20,12G9.3,/
*1X,'SOIL-LOWER',T20,12G9.3,/,
* 1X,'AIR-LOWER',T20,12G9.3,/,
* 1X,'FREE LIGAND-LOWBR',T20,12G9.3 >
WRITE(IOW,768)(PCONC(IQ,13,IWATBR),IQ=1,12)
768 FORMAT(/,/,1X,'MAX. POL.DBPTH(CM)',T20,12G9.3)
WRITE(IOW,709)IYR
709 FORMAT('1',/,T30,'YEAR -',15,' ANNUAL SUMMARY REPORT',/,T30,
*34('='))
WRITE(IOW,714 >PINPU(IWATER) ,PINPM(IWATBR),PINPL(IWATER)
714 FORMAT(3(/).6X,'— TOTAL INPUTS —',/./,
*1X.'UPPER SOIL ZONE'.T35.G9.3,/,
*1X,'MIDDLE SOIL ZONE',T35,G9.3,/,
• IX, 'LOWER SOIL ZONE-'.T35.G9.3)
WRITE(IOW,710)
HYDOUT=HYDBAL(13,1 )* 100
710 FORMAT(2(/>,6X,'— HYDROLOGIC CYCLE COMPONENTS —',/,/>
WRITE(IOW,791)HYDOUT,(HYDBAL(13,IVAL),IVAL=2,5)
WRITB(IOW,792)(HYDBAL(13,IVAL),IVAL=6,7)
791 FORMATdX,'AVERAGE SOIL MOISTURB( X ) ' ,T35 ,G9 . 3 , / ,
*1X.'TOTAL PRBCIPATION(CM)',T35,G9.3,/,
*1X,'TOTAL INFILTRATION (CM)•,T35,G9.3,/,
*1X,'TOTAL BVAPOTRANSP.(CM)'.T35.G9.3,/.
*1X,'TOTAL SURFACE RUNOFF(CM)',T35,G9.3)
792 FORMATdX,'TOTAL GRW RUNOFF(CM) ' ,T35 ,G9 . 3 . / ,
*1X,'TOTAL YIELD (CM)',T35,G9.3,/)
-------
262
WRITE
WRITE(IOW,771)(POLBAL<13.IVL,IWATER),IVL=1,3),POLBAL(12,4,IWATER),
•POLBAL(12,16,IWATER)
771 FORMAT MX,'TOTAL SURFACE RUNOFF ' ,T35 ,G9. 3 ,/,
*1X,'TOTAL VOLATILIZED',T35,G9.3,/,
*1X,'TOTAL OTHER SINKS',T35,G9.3,/,
*1X,'FINAL ADS. ON SOIL1,T35,G9.3,/,
*1X,'FINAL IMMOBILIZED-CBC',T35,G9.3)
WRITE(IOW,772)POLBAL(13,5,IWATBR >,
*POLBAL(13,18,IWATER),
*POLBAL(13,33,IWATER),
*POLBAL(13,36,IWATBR),
*POLBAL(12,20,IWATBR)
772 FORMAT<1X,'TOTAL DEGRADED',T35,G9.3,/,
*1X,'TOTAL HYDROLYZBD-MOI'.T35.G9.3,/,
*1X.'TOTAL HYDROLYZBD-SOI'.T35.G9.3,/,
*1X,'TOTAL HYDROLYZED-CBC'.T35.G9.3,/,
*1X,'FINAL COMPLBXBD',T35,G9.3)
WRITE(IOW,773)POLBAL(13,6,IWATBR),
•POLBAL(12,12,IWATBR).
*POLBAL(12,39,IWATBR)
773 FORMAT MX,'TOTAL OTHER TRANS. ' ,T35 ,69 . 3 ,
*/,1X,'FINAL IN SOIL MOIST.',T35,G9.3,/,
*1X,'FINAL IN SOIL AIR1,T35,G9.3)
WRITE(IOW,730)
730 FORMAT(2(/>,1X,T5,'MIDDLE SOIL ZONE:',/,/)
WRITB(IOW,725)POLBAL(13,31,IWATER),POLBAL(13,22,IWATBR),
•POLBAL(12,23,IWATBR).
* POLBAL(12,28,IWATBR)
725 FORMAT(
*1X,'TOTAL VOLATILIZED',T35,G9.3,/,
*1X.'TOTAL OTHER SINKS',T35,G9.3,/,
*1X,'FINAL ADS. ON SOIL',T35,69.3./,
*1X,'FINAL IMMOBILIZED-CBC',T35,G9.3)
WRITE(IOW,726)POLBAL(13,24,IWATBR),
•POLBAL(13,29,IWATBR),
•POLBAL(13,34.IWATBR),
•POLBAL(13,37,IWATBR),
•POLBAL(12,30,IWATBR)
726 FORMAT MX,'TOTAL DEGRADED' ,T35,G9 . 3, /,
*1X,'TOTAL HYDROLYZBD-MOI',T35,G9.3,/,
•IX,'TOTAL HYDROLYZBD-SOI',T35,G9.3,/,
*1X,'TOTAL HYDROLYZED-CBC',T35,G9.3,/,
*1X.'FINAL COMPLBXBD1,T35,G9.3)
WRITE(IOW,727)POLBAL(13,25.IWATBR),
•POLBAL(12,26,IWATBR),
•POLBAL(12,40,IWATER)
727 FORMAT MX, 'TOTAL OTHER TRANS . ' ,T35 ,G9 . 3 .
•X.1X,'FINAL IN SOIL MOIST.',T35,G9.3,/,
*1X,'FINAL IN SOIL AIR',T35,G9.3)
WRITB(IOW,764)
WRITE(IOW,774)POLBAL(13,7,IWATBR),
•POLBAL(13.32,IWATBR),
•POLBAL(13,8,IWATBR),
-------
263
•POLBAL(12.9,ZHATER),
*POLBAL(12,17,ZWATBR),
*POLBAL(13,10,IWATER)
774 FORMAT MX,'TOTAL INTO GRWATBR1 ,T35 ,G9. 3 , / ,
*1X.'TOTAL VOLATALZZBD',T35,69.3,/,
*1X,'TOTAL OTHER SINKS',T35,G9.3,/,
*1X,'FINAL ADS. ON SOZL',T35,G9.3,/,
*1X,'FINAL ZMMOBZLZZED-CEC',T35,G9.3,/,
*1X,'TOTAL DEGRADED*,T35,69.3)
WRITE(IOW,775)POLBAL(13,19,IWATER),
*POLBAL(13,35,ZWATBR).
•POLBAL(13,38,ZWATBR),
*POLBAL(12,21,ZWATER).
*POLBAL(13,11,ZWATBR)
775 FORMATMX,'TOTAL HYDROLYZED-HOI',T35,G9.3,/,
*1X,'TOTAL HYDROLYZBD-SOZ',T35,G9.3,/,
*1X,'TOTAL HYDROLYZBD-CEC',T35,G9.3,/,
*1X.'FINAL COHPLEXED',T35,G9.3,/,
*1X,'TOTAL OTHER TRANS.',T35,G9.3)
WRITE(ZOW,776)POLBAL(12,13,ZWATBR),
•POLBAL(12,41,ZWATER)
776 FORMAT(
*1X,'FINAL ZN SOZL MOZST.',T35,G9.3,/,
*1X,'FINAL ZN SOZL AZR',T35,G9.3)
WRZTB(ZOW,777)
777 FORMAT('1',5(/),6X,'— AVERAGE POLLUTANT CONCENTRATIONS-(UG/ML)'
•,'OR (UG/G) —',/,/)
WRITE(ZOW,781)PCONC(13,1,ZWATBR),
•PCONC(13,4,ZWATBR),
*PCONC(13,7,ZWATBR),
•PCONC(13,10,ZWATER)
781 FORMAT(/,/,/,IX,'MOISTURE-UPPER'.T35.G9.3./
*1X,'SOIL-UPPER'.T35.G9.3,/,
*1X.'AIR-UPPER',T35,G9.3,/,
•1X,'FRBB LZGAND-UPPER',T35,G9.3)
WRZTB(ZOW,7 2 8)PCONC(13,2,ZWATBR),
*PCONC(13,5,ZWATBR),
*PCONC(13,8,ZWATBR),
•PCONC(13,11,ZWATBR)
728 FORMAT(/,/,/,IX,'MOISTURE-MIDDLE',T35,G9.3,/
*1X,'SOIL-MIDDLE',T35,G9.3,/,
*1X,'AIR-MIDDLE',T35,G9.3,/,
*1X.'FREE LIGAND-MIDDLB'.T35.G9.3)
WRZTB(ZOW,779)PCONC(13,3,ZWATBR),
•PCONC(13,6,ZWATBR),
•PCONC(13,9,ZWATBR),
•PCONC(13,12,ZWATBR)
779 FORMAT(/,/,/,IX,'MOZSTURB-LOWBR',T35,G9.3,/
*1X,'SOIL-LOWER',T35,G9.3./,
*1X.'AIR-LOWER'.T35.G9.3,/,
*1X,'FREE LZGAND-LOWBR',T35,G9.3)
PDBP=PCONC(12,13,ZWATBR)/10 0.
WRZTB(ZOW,7 7 8)PDBP
778 FORMAT(/,1X,'MAX. POL. DBPTH(M)',T35,G9.3)
C
C RETURN TO LBVBL ROUTZNBS
-------
264
C
999 RETURN
END
-------
265
FUNCTION VOLMCC1,C2,H,R,T,DPTH,DA,N,THA.NI)
C
C THIS FUNCTION CALCULATES THE POLLUTANT MASS (U6/SQ CM) INVOLVED
C IN VOLATILIZATION FOR THE MONTLY ROUTINES
C
REAL N,NI
C
C CHECK CONCENTRATION GRADIENT
C
VOLM=0.0
IF(C1 .GE. C2> GO TO 10
VOLM=C2*(H/(R*(T+273.)*DPTH))*DA*((N-THA)**(10./3.)/N**2>
2 *86400.*30/NI
10 RETURN
END
-------
266
SUBROUTINE WATCN(TA.SUT.HU,GAMSW)
C ================
c
C THIS SUBROUTINE HAS BEEN COOED IN FORTRAN BY P.G. EAGLESON
C (BAGLBSON,1977)
C
C
C COMPUTES THE HATER CONSTANTS AT A GIVEN TEMPERATURE(EAGLESON,1977)
REAL NU.NUT
DIMENSION SUTT(11),NUT(11),GAMST(11)
DATA SUTT/75.6, 7(1.9,74.2, 73. 5 ,72. 0,72.1 , 71 . 4 , 70 . 7 , 70 . 0 , 69 . 3 , 68 . 6/ ,
1 NUT/17.93B-3.15.18E-3.13.09E-3.1 1.44E-3,10.08E-3,8.94E-3,8.B-3,
27.2E-3,6.53B-3,5.97B-3,5.94B-3/.
3GAMST/0.99987,0.99999,0.99973,0.99913,0.99823,0.99708,0.99568, 0.99
4406,0.99225,0.99025,0.988077
IPCTA.GT.50.) GO TO 10
ITA=IPIX(TA*0.2)+1
PRAC=TA-PLOAT(IPIX(TA))
ITA1=ITA+1
SUT=(SUTT(ITA1)-SUTT(ITA))*0.2*PRAC+SUTT(ITA)
NU=(NUT(ITA1)-NUT(ITA))*0.2*PRAC+NUT(ITA)
GAMSH=((GAMST(ITA1>-GAMST(ITA))*0.2*PRAC+GAMST(ITA))*980.
RETURN
10 SUT=SUTT(11)
NU=NUT(11)
GAMSW=GAMST(11)*980.
RETURN
END
-------
267
The following routines comprise the general purpose integrator
package D01AJF.
-------
268
SUBROUTINE D01AJFCF, A, B, EPSABS. BPSREL, RESULT, ABSERR,
* WORK, LWORK, IWORK, LIWORK, IFAIL)
C MARK 8 RELEASE. NAG COPYRIGHT 1980
C
C D01AJF IS A GENERAL PURPOSE INTEGRATOR WHICH CALCULATES
C AN APPROXIMATION TO THE INTEGRAL OF A FUNCTION OVER A FINITE
C INTERVAL (A.B)
C
C D01AJF ITSELF IS ESSENTIALLY A DUMMY ROUTINE WHOSE FUNCTION IS TO
C PARTITION THE WORK ARRAYS WORK AND IWORK FOR USE BY D01AJV.
C WORK IS PARTITIONED INTO 4 ARRAYS EACH OF SIZE LWORK/4.
C IWORK IS A SINGLE ARRAY IN D01AJV.
C
C .. SCALAR ARGUMENTS ..
REAL A, ABSERR, B, EPSABS, EPSREL, RESULT
INTEGER IFAIL, LIWORK. LWORK
C .. ARRAY ARGUMENTS ..
REAL WORK(LWORK)
INTEGER IWORK(LIWORK)
C .. FUNCTION ARGUMENTS ..
REAL F
C
C .. LOCAL SCALARS ..
DOUBLE PRECISION SRNAMB
INTEGER IBL, IBL, IBR, IRL, LIMIT
C .. FUNCTION REFERENCES ..
INTEGER P01AAF
C .. SUBROUTINE REFERENCES ..
C D01AJV
C
EXTERNAL F
DATA SRNAME /8H D01AJF /
C CHECK THAT MINIMUM WORKSPACE REQUIREMENTS ARE MET
IF (LWORK.LT.4) GO TO 20
IF (LIWORK.LT.LWORK/8+2) GO TO 20
C LIMIT = UPPER BOUND ON NUMBER OF SUBINTBRVALS
LIMIT = LWORK/4
C SET UP BASE ADDRESSES FOR WORK ARRAYS
IBL = LIMIT + 1
IBL = LIMIT + IBL
IRL = LIMIT + IBL
C PERFORM INTEGRATION
CALL D01AJVCF, A, B, ABS(EPSABS), ABS(EPSRBL), WORKM),
* WORK(IBL), WORK(IBL), WORK(IRL), LIMIT, IWORK, LIWORK,
* RESULT, ABSERR, IER)
IF (IER.NB.O) GO TO 40
IFAIL = 0
GO TO 60
C ERROR 6 = INSUFFICIENT WORKSPACE
20 IBR = 6
40 IFAIL = P01AAF(IFAIL,IBR,SRNAME)
60 RETURN
END
SUBROUTINE D01AJV(F, A, B, BPSABS, BPSREL, ALIST, BLIST,
* ELIST, RLIST, LIMIT, IORD, LIORD, RESULT, ABSBRR, IBR)
C MARK 8 RELEASE. NAG COPYRIGHT 1979
-------
269
C BASED ON QUADPACK ROUTINE DQAGS (FORMERLY QAGS)
C **********************************************************
C
C PURPOSE
C THE ROUTINE CALCULATES AN APPROXIMATION
C /RESULT/ TO A GIVEN DEFINITE INTEGRAL I =
C INTEGRAL OF /F/ OVER
-------
270
C INCREASING THE DIMENSIONS OF THE
C WORK ARRAYS WORK AND IWORK.
C HOWEVER, THIS HAY
C YIELD NO IMPROVEMENT. AND IT
C IS RATHER ADVISED TO HAVE A
C CLOSE LOOK AT THE INTEGRAND,
C IN ORDER TO DETERMINE THE
C INTEGRATION DIFFICULTIES. IF
C THE POSITION OF A LOCAL
C DIFFICULTY CAN BE DETERMINED
C (I.E. SINGULARITY,
C DISCONTINUITY WITHIN THE
C INTERVAL) ONE WILL PROBABLY
C GAIN FROM SPLITTING UP THE
C INTERVAL AT THIS POINT AND
C CALLING THE INTEGRATOR ON THE
C SUB-RANGES. IF POSSIBLE, AN
C APPROPRIATE SPECIAL-PURPOSE
C INTEGRATOR SHOULD BE USED
C WHICH IS DESIGNED FOR
C HANDLING THE TYPE OF
C DIFFICULTY INVOLVED.
C = 2 THE OCCURRENCE OF ROUNDOFF
C ERROR IS DETECTED WHICH
C PREVENTS THE REQUESTED
C TOLERANCE FROM BEING
C ACHIEVED. THE ERROR MAY BE
C UNDER-ESTIMATED.
C =3 EXTREMELY BAD INTEGRAND BEHAVIOUR
C OCCURS AT SOME INTERIOR POINTS OF THE
C INTEGRATION INTERVAL.
C = H IT IS PRESUMED THAT THE REQUESTED
C TOLERANCE CANNOT BE ACHIEVED,
C AND THAT THE RETURNED RESULT
C IS THE BEST WHICH CAN BE
C OBTAINED.
C =5 THE INTEGRAL IS PROBABLY DIVERGENT, OR
C SLOWLY CONVERGENT. IT MUST BE NOTED
C THAT DIVERGENCY CAN OCCUR
C WITH ANY OTHER VALUE OF IER.
C
C **********************************************************
C .. SCALAR ARGUMENTS ..
REAL A, ABSBRR, B. BPSABS, BPSRBL, RESULT
INTEGER IBR, LIMIT, LIORD
C .. ARRAY ARGUMENTS ..
REAL ALIST(LIMIT), BLISTtLIMIT), BLIST(LIMIT), RLIST(LIMIT)
INTEGER IORD(LIORD)
C .. FUNCTION ARGUMENTS ..
REAL F
C
C .. SCALARS IN COMMON ..
INTEGER JUPBND
C
C .. LOCAL SCALARS ..
REAL A1, A2, ABSEPS, ARBA12, ARBA1, ARBA2, AREA, B1, B2,
-------
271
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
* CORREC, DEFAB1, DBFAB2. DBFABS, ORBS, BPMACH, BRLARG,
* ERLAST, BRRBMD, BRRMAX. BRRO12, ERROR1, ERROR2, ERRSUM,
* BRTBST, OFLOW, RESABS. RBSBPS, SMALL, UFLOH
INTEGER ID, XBRRO, ZROFP1, ZROPP2, ZROFF3, K. KSGN, KTMIN,
* LAST1, LAST, MAXBRR, NRBS, MRMAX, NUHRL2
LOGICAL EXTRAP, NOEXT
.. LOCAL ARRAYS ..
REAL RES3LAO). RLIST2(52)
.. FUNCTION REFERENCES ..
REAL X02AAF, X02ABF, X02ACF
.. SUBROUTINE REFERENCES ..
D01AJX, D01AJY, D01AJZ
• •
EXTERNAL F
COMMON /AD01AJ/ JUPBND
THE DIMENSION OF /RLIST2/ IS DETERMINED BY
DATA /LIMBXP/ IN SUBROUTINE D01AJY (/RLIST2/
SHOULD BE OF DIMENSION (LIMEXP-t-2) AT LEAST).
EPMACH = X02AAFM.O)
UFLOH = X02ABFM .0)
OFLOW = X02ACFM .0)
LIST OF MAJOR VARIABLES
ALIST - LIST OF LEFT END-POINTS OF ALL SUBINTERVALS
CONSIDERED UP TO NOW
BLIST - LIST OF RIGHT END-POINTS OF ALL SUBINTBRVALS
CONSIDERED UP TO NOW
RLIST(I) - APPROXIMATION TO THE INTEGRAL OVER
(ALIST(I),BLIST(I))
RLIST2 - ARRAY OF DIMENSION AT LEAST LIMBXP+2
CONTAINING THE PART OF THE EPSILON TABLE
WHICH IS STILL NEEDED FOR FURTHER
COMPUTATIONS
BLIST(I) - ERROR ESTIMATE APPLYING TO RLIST(I)
MAXBRR - POINTER TO THE INTERVAL WITH LARGEST ERROR
ESTIMATE
BRRMAX - BLIST(MAXBRR)
ERLAST - ERROR ON THE INTERVAL CURRENTLY SUBDIVIDED
(BEFORE THAT SUBDIVISION HAS TAKEN PLACE)
AREA - SUM OF THE INTEGRALS OVER THE SUBINTBRVALS
BRRSUM - SUM OF THE ERRORS OVER THE SUBINTBRVALS
ERRBND - REQUESTED ACCURACY MAX(BPSABS.BPSRBL*
-------
272
C
c
C
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ABS = A
BLISTM ) = B
RLISTM > = RESULT
RLIST2M ) = RESULT
-------
273
BRRMAX = ABSERR
MAXERR = 1
AREA = RESULT
ERRSUM = ABSERR
ABSERR = OPLOH
NRMAX = 1
NRBS = 0
NUMRL2 = 2
KTMZN = 0
EXTRA? = .FALSE.
NOEXT = .FALSE.
IROFF1 = 0
IROFF2 = 0
ZROFF3 = 0
KSGN = -1
IF (DRES.GE.(0.1B+01-0.5B+02*EPMACH)*DBFABS> KS6N= 1
C
C MAIN DO-LOOP
C
C
IF (LIMIT.LT.2) GO TO 220
DO 200 LAST=2,LIMIT
C
C BISECT THE SUBINTERVAL WITH THB NRMAX-TH LARGEST
C ERROR ESTIMATE
C
LAST1 = LAST
A1 = ALIST(MAXERR)
B1 = 0.5B+00*(ALIST(MAXERR)+BLIST(MAXERR»
A2 = B1
B2 = BLIST(MAXBRR)
ERLAST = ERRMAX
CALL D01AJZCF, A1, B1, AREA1, ERROR1, RBSABS, DEFAB1)
CALL D01AJZCF, A2. B2, ARBA2, BRROR2, RBSABS, DEFAB2)
C
C IMPROVE PREVIOUS APPROXIMATION OF INTEGRAL
C AND ERROR AND TEST FOR ACCURACY
C
AREA12 = AREA1 + ARBA2
ERR012 = ERROR1 + BRROR2
ERRSUM = BRRSUM + BRRO12 - BRRMAX
AREA = AREA + ARBA12 - RLIST(MAXBRR)
IF (DEFAB1.EQ.ERROR1 .OR. DBFAB2.BQ.BRROR2) GO TO 40
IF (ABS(RLIST(MAXERR)-ARBA12).GT.0.1E-04*ABS(ARBA12) .OR.
* ERRO12.LT~.0.99E+Ob*BRRMAX> GO TO 20
IF (BXTRAP) IROPP2 = IROFF2 + 1
IF (.NOT.BXTRAP) IROFF1 = IROFF1 + 1
20 IF (LAST.GT.10 .AND. BRRO12.GT.BRRMAX) IROFF3 = IROFF3 + 1
40 RLIST(MAXBRR) = AREA1
RL1ST(LAST) = ARBA2
ERRBND = AMAX1 (BPSABS , BPSRBL*ABS( AREA) )
IF (BRRSUM.LE.ERRBND) GO TO 280
C
C TEST FOR ROUNDOFF ERROR AND EVENTUALLY
C SET ERROR FLAG
C
-------
274
IP (IROFF1+IROFF2.GB.10 .OR. ZROFF3.GB.20) ZBR = 2
IF (ZROFF2.GB.5) ZBRRO = 3
C
C SBT BRROR FLAG IN THE CASE THAT THE NUMBER OP INTERVAL
C BISECTIONS EXCEEDS /LIMIT/
C
IF (LAST.BQ.LIMIT) IBR = 1
C
C SET ERROR FLAG IN THE CASE OF BAD INTEGRAND BEHAVIOUR
C AT INTERIOR POINTS OF INTEGRATION RANGE
C
IF (AMAX1(ABSCA1),ABS(B2)).LE.(0.1E+01+0.1E+03*EPMACH)*
* (ABS(A2)+0.1E+04*UFLOW>) IBR = a
IF (IBR.NE.O) GO TO 220
C
C APPEND THE NEWLY-CREATED INTERVALS TO THE LIST
C
IF (BRROR2.GT.ERROR1) GO TO 60
ALIST(LAST) = A2
BLIST(MAXBRR) = B1
BLIST(LAST) = B2
BLIST(MAXBRR) = BRROR1
ELIST(LAST) = BRROR2
GO TO 80
60 ALIST(MAXBRR) = A2
ALIST(LAST) = A1
BLIST(LAST) = B1
RLIST(MAXERR) = ARBA2
RLIST(LAST) = AREA1
BLIST(MAXBRR) = ERROR2
ELIST(LAST) = ERROR1
C
C CALL SUBROUTINE D01AJX TO MAINTAIN THE
C DESCENDING ORDERING IN THE LIST OF ERROR
C ESTIMATES AND SELECT THE SUBINTBRVAL WITH
C NRMAX-TH LARGEST BRROR ESTIMATE (TO BE BISECTED
C NEXT)
C
80 CALL D01AJXCLIMIT, LAST, MAXBRR, ERRMAX, BLIST, IORD,
* LIORD, NRMAX)
IF (LAST.EQ.2) GO TO 180
IF (NOBXT) GO TO 200
BRLARG = ERLARG - BRLAST
IF (ABS(B1-A1>.GT.SMALL) BRLARG = BRLARG + BRR012
IF (BXTRAP) GO TO 100
C
C TEST WHETHER THE INTERVAL TO BB BISECTED NEXT IS THE
C SMALLEST INTERVAL
C
IF (ABS(BLIST(MAXBRR)-ALIST(MAXERR)).GT.SMALL) GO TO 200
BXTRAP = .TRUE.
NRMAX = 2
100 IP (IERRO.BQ.3 .OR. BRLARG.LB.ERTBST) GO TO 100
C
C THE SMALLEST INTERVAL HAS THE LARGEST ERROR.
C BEFORE BISECTING DBCRBASB THE SUM OP THE ERRORS
-------
275
C OVER THE LARGER INTERVALS(BRLARC) AND PERFORM
C EXTRAPOLATION
C
ID = NRHAX
DO 120 K=ID,JUPBND
HAXBRR = lORD(NRMAX)
BRRHAX = BLIST(MAXERR)
IP (ABS(BLIST(MAXERR)-ALIST(HAXERR)).GT.SHALL) GO TO 200
NRMAX = NRHAX + 1
120 CONTINUE
C
C PERFORM EXTRAPOLATION
C
140 NUHRL2 = NUHRL2 + 1
RLIST2(NUHRL2) = AREA
CALL D01AJY(NUNRL2, RLIST2, RBSBPS, ABSBPS, RBS3LA, NRBS)
KTHIN = KTHIN + 1
IF (KTHIN.GT.5 .AND. ABSBRR.LT.0.1E-02*ERRSUH) IBR = 5
IF (ABSBPS.GB.ABSERR) GO TO 160
KTHIN = 0
ABSERR = ABSBPS
RESULT = RESBPS
CORRBC = BRLARG
ERTBST = AHAX1(BPSABS,EPSREL*ABS(RBSBPS))
IF (ABSBRR.LE.ERTEST) GO TO 220
C
C PREPARE BISECTION OF THB SMALLEST INTERVAL
C
160 IF (NUHRL2.BQ.1) NOBXT = .TRUE.
IF (IBR.BQ.5) GO TO 220
HAXBRR = IORD(1)
BRRMAX = ELIST(HAXERR)
NRHAX = 1
EXTRAP = .FALSE.
SHALL = SHALL*0.5E+00
BRLARG = BRRSUH
GO TO 200
180 SHALL = ABS(B-A)*0.375B+00
BRLARG = BRRSUH
ERTBST = BRRBND
RLIST2(2) = AREA
200 CONTINUE
C
C SET FINAL RESULT AND ERROR ESTIMATE
C
C
220 IF (ABSERR.BQ.OFLOW) GO TO 280
IP (IBR+IBRRO.BQ.O) GO TO 260
IF (IBRRO.EQ.3) ABSERR = ABSBRR + CORRBC
IP (IBR.BQ.O) IER = 3
IF (RESULT.NB.O.B+00.AND .AREA. NB.O.E+00) GO TO 240
IF (ABSBRR.GT.ERRSUH) GO TO 280
IP (ARBA.BQ.O.E+00) GO TO 320
GO TO 260
240 IF (ABSERR/ABS(RESULT>.GT.ERRSUM/ABS(AREA)) GO TO 280
C
-------
276
C TEST ON DIVERGENCY
C
260 IP (KSGN.EQ.-1 .AND. AMAX1(ABS(RESULT),ABS(AREA)).LB.DBPABS*
* 0.1E-01) GO TO 320
IF (0.1B-01.GT.(RESULT/AREA) .OR. (RESULT/AREA).GT.0.1B+03
* .OR. BRRSUM.GT.ABS(AREA» IBR = 6
GO TO 320
C
C COMPUTE GLOBAL INTEGRAL SUM
C
280 RESULT = O.E+00
DO 300 K=1,LAST
RESULT = RESULT + RLIST(K)
300 CONTINUE
ABSBRR = BRRSUM
320 IP (IBR.GT.2) IBR = IBR - 1
IORD(1) = 4*LAST1
RETURN
END
SUBROUTINE D01AJXCLIMIT, LAST, MAXERR, ERMAX, BLIST, IORD,
* LIORD, NRMAX)
C MARK 8 RELEASE. NAG COPYRIGHT 1979
C BASED ON QUADPACK ROUTINE ORDER
C ***********************«4i«****************************
C
C PURPOSE
C THIS ROUTINE MAINTAINS THE DESCENDING ORDERING
C IN THE LIST OP THE LOCAL ERROR ESTIMATES
C RESULTING PROM THE INTERVAL SUBDIVISION
C PROCESS. AT BACH CALL TWO ERROR ESTIMATES
C ARE INSERTED USING THE SEQUENTIAL SEARCH
C METHOD . TOP-DOWN POR THE LARGEST ERROR
C ESTIMATE, BOTTOM-UP POR THE SMALLEST ERROR
C ESTIMATE.
C
C CALLING SEQUENCE
C CALL D01AJX
C (LIMIT,LAST,MAXERR,ERMAX,BLIST,IORD,LIORD,NRMAX)
C
C PARAMETERS (MEANING AT OUTPUT)
C LIMIT - MAXIMUM NUMBER OP ERROR ESTIMATES THE LIST
C CAN CONTAIN
C
C LAST - NUMBER OP ERROR ESTIMATES CURRENTLY
C IN THE LIST. BLIST(LAST) CONTAINS
C THE SMALLEST ERROR BSTIMATB.
C
C MAXERR - MAXERR POINTS TO THE NRMAX-TH LARGEST ERROR
C BSTIMATB CURRENTLY IN THB LIST.
C
C BRMAX - NRMAX-TH LARGEST ERROR BSTIMATB
C BRMAX = BLIST(MAXBRR)
C
C ELIST - ARRAY OP DIMENSION LAST CONTAINING
C THB ERROR ESTIMATES
C
-------
277
C IORD - ARRAY CONTAINING POINTERS TO ELIST SO
C THAT IORD(1) POINTS TO THE LARGEST
C ERROR ESTIMATE lORD(LAST) TO THE
C SMALLEST ERROR ESTIMATE
C
C LIORD - DIMENSION OP IORO
C
C NRMAX - MAXERR = lORO(NRMAX)
C
C ******************************************************
C
C .. SCALAR ARGUMENTS ..
REAL ERMAX
INTEGER LAST. LIMIT. LIORD. MAXERR, NRMAX
C .. ARRAY ARGUMENTS ..
REAL BLIST(LAST)
INTEGER IORD(LIORD)
C
C .. SCALARS IN COMMON ..
INTEGER JUPBND
C
C .. LOCAL SCALARS ..
REAL BRRMAX, ERRMIN
INTEGER I, IBBG. IDO, ISUCC, J. JBND, K.
C
COMMON /AD01AJ/ JUPBND
C
C CHECK WHETHER THE LIST CONTAINS MORE THAN
C TWO ERROR ESTIMATES
C
IF (LAST.GT.2) GO TO 20
IORD(1) = 1
IORD(2) = 2
GO TO 180
C
C THIS PART OF THE ROUTINE IS ONLY EXECUTED
C IF, DUE TO A DIFFICULT INTEGRAND, SUBDIVISION
C INCREASED THE ERROR ESTIMATE. IN THE NORMAL CASE
C THE INSERT PROCEDURE SHOULD START AFTER THE
C NRMAX-TH LARGEST ERROR ESTIMATE.
C
20 ERRMAX = ELIST(MAXERR)
IF (NRMAX.BQ.1) GO TO 60
IDO = NRMAX - 1
DO 40 1=1,IDO
ISUCC = IORD(NRMAX-1)
IF (BRRMAX.LB.ELIST(ISUCC)) GO TO 60
IORD(NRMAX) = ISUCC
NRMAX = NRMAX - 1
40 CONTINUE
C
C COMPUTE THE NUMBER OF ELEMENTS IN THE LIST TO
C BE MAINTAINED IN DESCENDING ORDER. THIS NUMBER
C DEPENDS ON THE NUMBER OF SUBDIVISIONS STILL
C ALLOWED
C
-------
278
60 JUPBND = LAST
IF (LAST.GT.(LIMIT/2+2)) JUPBND = LIMIT + 3 - LAST
BRRMIN = BLIST(LAST)
C
C INSERT BRRMAX BY TRAVERSING THE LIST TOP-DOWN
C STARTING COMPARISON FROM THE ELEMENT
C ELIST(IORD(NRMAX+1))
C
JBND = JUPBND - 1
IBBG = NRMAX + 1
IF (IBBG.GT.JBND) GO TO 100
DO 80 I=IBBG.JBND
ISUCC = IORD(I)
IF (BRRMAX.GB.BLIST(ISUCC)) GO TO 120
IORD(I-1) = ISUCC
80 CONTINUE
100 IQRD(JBND) = MAXERR
IORD(JUPBND) = LAST
GO TO 180
C
C INSERT BRRMIN BY TRAVERSING THE LIST BOTTOM-UP
C
120 IORDCI-1) = MAXBRR
K = JBND
DO 140 J=I,JBND
ISUCC = IORD(K)
IF (ERRMIN.LT.ELIST(ISUCC)) GO TO 160
IORD(K+1) = ISUCC
K = K - 1
140 CONTINUE
IORD(I) = LAST
GO TO 180
160 IORD(K+1) = LAST
C
C SET MAXBRR AND ERMAX
C
180 MAXBRR = IORD(NRMAX)
BRMAX = BLIST(MAXBRR)
RETURN
END
SUBROUTINE D01AJYCN, BPSTAB, RESULT, ABSBRR. RBS3LA, NRBS)
C MARK 8 RELEASE. NAG COPYRIGHT 1979
C BASED ON QUADPACK ROUTINE BPSALG
C ******************************************************
C
C PURPOSE
C THE ROUTINE TRANSFORMS A GIVEN SEQUENCE OF
C APPROXIMATIONS, BY MEANS OF THE BPSILON
C ALGORITHM OF P. HYNN.
C
C AN ESTIMATE OF THE ABSOLUTE ERROR IS ALSO GIVEN.
C THE CONDENSED EPSILON TABLE IS COMPUTED. ONLY THOSE
C ELEMENTS NEEDED FOR THE COMPUTATION OF THE
C NEXT DIAGONAL ARE PRESERVED.
C
C CALLING SEQUENCE
-------
279
C CALL D01AJY (N,EPSTAB,RESULT,ABSBRR,RES3LA.NRES>
C
C PARAMETERS
C N - BPSTAB(N) CONTAINS THE NEW ELEMENT IN THE
C FIRST COLUMN OP THE BPSILON TABLE.
C
C BPSTAB - ONE DIMENSIONAL ARRAY CONTAINING THE
C ELEMENTS OF THE TWO LOWER DIAGONALS OF
C THE TRIANGULAR BPSILON TABLE.
C THE ELEMENTS ARE NUMBERED STARTING AT THE
C RIGHT-HAND CORNER OF THE TRIANGLE.
C THE DIMENSION SHOULD BE AT LEAST N+2.
C
C RESULT - RESULTING APPROXIMATION TO THE INTEGRAL
C
C ABSBRR - ESTIMATE OF THE ABSOLUTE ERROR COMPUTED FROM
C RESULT AND THE 3 PREVIOUS /RESULTS/
C
C RES3LA - ARRAY CONTAINING THE LAST 3 /RESULTS/
C
C NRES - NUMBER OF CALLS TO THE ROUTINE
C (SHOULD BE ZERO AT FIRST CALL)
C
C .. SCALAR ARGUMENTS ..
REAL ABSERR, RESULT
INTEGER N. NRBS
C .. ARRAY ARGUMENTS ..
REAL EPSTAB(52), RBS3LAO)
C
C .. LOCAL SCALARS ..
REAL DBLTA1, DELTA2. DELTA3, BO. B1 , B1ABS, B2, E3, BPMACH,
* EPSINF, ERR1, ERR2, ERR3, ERROR, OFLOW, RES. SS, TOL1, TOL2,
« TOL3
INTEGER I, IB2, IB, IE, IND, K1, K2, K3, LIMBXP, NEWELM, NUM
C .. FUNCTION REFERENCES ..
REAL X02AAF, X02ACF
C
C
C MACHINE DEPENDENT CONSTANTS
C
C /LIMBXP/ IS THE MAXIMUM NUMBER OF ELEMENTS THE BPSILON
C TABLE CAN CONTAIN. IF THIS NUMBER IS REACHED, THE UPPER
C DIAGONAL OF THE EPSILON TABLE IS DELETED.
C
DATA LIMBXP /SO/
BPMACH = X02AAFM.O)
OFLOW = X02ACFM .0)
C
C LIST OF MAJOR VARIABLES
C
C BO - THE 4 ELEMENTS ON WHICH THE
C B1 COMPUTATION OF A NEW ELEMENT IN
C E2 THE BPSILON TABLE IS BASED
C S3 EO
C E3 B1 NEW
-------
280
C E2
C NEWELM - NUMBER OF ELEMENTS TO BE COMPUTED IN THE NEW
C DIAGONAL
C ERROR - ERROR = ABS(B1-BO)+ABS(E2-E1)+ABS(NBW-B2)
C RESULT - THE ELEMENT IN THE NEW DIAGONAL WITH LEAST
C ERROR
C
NRBS = NRBS + 1
ABSERR = OPLOH
RESULT = EPSTAB(N)
IP (N.LT.3) GO TO 200
EPSTAB(N+2> = BPSTAB(N)
NEWELM = (N-1)/2
BPSTAB(N) = OFLOW
NUM = N
K1 = N
DO 80 1=1,NBWBLM
K2 = K1 - 1
K3 = K1 - 2
RES = EPSTAB(K1+2>
BO = BPSTABCK3)
E1 = BPSTAB(K2)
E2 = RES
• E1ABS = ABSCB1 )
DBLTA2 = B2 - B1
ERR2 = ABSCDBLTA2)
TOL2 = AMAX1(ABS(B2),B1ABS)*EPMACH
DBLTA3 = B1 - BO
BRR3 = ABS(DBLTA3)
TOL3 = AMAX1(E1ABS,ABSCBO))*BPMACH
IF (ERR2.GT.TOL2 .OR. ERR3.GT.TOL3) GO TO 20
C
C IP BO, B1 AND B2 ARE EQUAL TO WITHIN MACHINE
C ACCURACY, CONVERGENCE IS ASSUMED
C RESULT = E2
C ABSBRR = ABS(B1-BO)+ABS(B2-B1>
C
RESULT = RES
ABSBRR = BRR2 + ERR3
GO TO 200
20 S3 = BPSTABCK1)
EPSTABCK1) = B1
DBLTA1 = B1 - B3
ERR1 = ABSCDELTA1)
TOL1 = AMAXK BUBS, ABS (E3) >*BPMACH
C
C IP TWO BLBMBMTS ARE VERY CLOSE TO EACH OTHER, OMIT
C A PART OF THE TABLE BY ADJUSTING THE VALUE OP N
C
IF (BRR1.LT.TOL1 .OR. ERR2.LT.TOL2 .OR. BRR3.LT.TOL3) GO
* TO 40
SS = 0.1B+01/DELTA1 + 0.18+01/DBLTA2 - 0.1E+01/DELTA3
EPSINF = ABS(SS*B1)
C
C TEST TO DETECT IRREGULAR BEHAVIOUR IN THE TABLE, AND
C EVENTUALLY OMIT A PART OP THE TABLE ADJUSTING THE VALUE
-------
281
C OF N
C
IF (BPSXNF.GT.0.1E-03) GO TO 60
40 N = I + I - 1
GO TO 100
C
C COMPUTE A NEW ELEMENT AND EVENTUALLY ADJUST
C THE VALUE OF RESULT
C
60 RES = B1 + 0.1E+01/SS
BPSTAB(K1) = RES
K1 = K1 - 2
ERROR = ERR2 + ABS(RES-B2) + ERR3
XF (ERROR.GT.ABSERR) GO TO 80
ABSBRR = ERROR
RESULT = RES
80 CONTINUE
C
C SHIFT THE TABLE
C
100 IF (N.EQ.LIMBXP) N = 2*(LIMEXP/2) - 1
IB = 1
IF ((NUM/2)*2.BQ.NUM) IB = 2
IE = NEWBLM + 1
DO 120 1=1, IB
IB2 = IB + 2
EPSTAB(IB) = EPSTAB(IB2)
IB = XB2
120 CONTINUE
IF (NUM.EQ.N) GO TO 160
IND = NUM - N + 1
DO 140 1=1,N
BPSTAB(I) = BPSTAB(IND)
IND = IND + 1
140 CONTINUE
160 IF (NRES.GE.4) GO TO 180
RES3LA(NRES> = RESULT
ABSBRR = OFLOW
GO TO 200
C
C COMPUTE ERROR ESTIMATE
C
180 ABSBRR = ABS(RESULT-RES3LA(3 )) + ABS(RBSULT-RBS3LA(2)) +
* ABS(RESULT-RES3LA(1))
RBS3LAM) = RES3LAC2)
RES3LAC2) = RBS3LAC3)
RBS3LAO) = RESULT
200 ABSERR = AMAX1(ABSBRR,5.OB+00*BPMACH*ABS(RESULT))
RETURN
END
SUBROUTINE D01AJZ(F, A, B. RESULT, ABSBRR, RBSABS, RBSASC)
C MARK 8 RELEASE. NAG COPYRIGHT 1979
C BASED ON QUADPACK ROUTINE QUARUL
C
C
C PURPOSE
-------
282
C TO COMPUTE I = INTEGRAL OF F OVER (A,B), WITH ERROR
C ESTIMATE
C J = INTEGRAL OF ABS(P) OVER (A,B)
C
C CALLING SEQUENCE
C CALL D01AJZ (F,A,B,RESULT.ABSBRR,RBSABS,RBSASC)
C
C PARAMETERS
C F FUNCTION SUBPROGRAM DEFINING THE INTEGRAND
C FUNCTION F(X). THE ACTUAL NAME FOR F NEEDS
C TO BE DECLARED EXTERNAL IN THE
C CALLING PROGRAM
C
C A - LOWER LIMIT OF INTEGRATION
C
C B - UPPER LIMIT OP INTEGRATION
C
C RESULT - APPROXIMATION TO THE INTEGRAL I.
C RESULT IS CALCULATED BY APPLYING
C THE 21-POINT GAUSS-KRONROD RULE
C (RESK), OBTAINED BY OPTIMAL
C ADDITION OF ABSCISSAE TO THE
C 10-POINT GAUSS RULE (RESG).
C
C ABSBRR - ESTIMATE OF THE MODULUS OF THE
C ABSOLUTE ERROR, WHICH SHOULD NOT
C EXCEED ABS(I-RBSULT)
C RBSABS - APPROXIMATION TO THE INTEGRAL J
C
C RESASC - APPROXIMATION TO THE INTEGRAL OF
C ABS(F-I/(B-A)) OVER (A,B)
C
C .. SCALAR ARGUMENTS ..
REAL A, ABSBRR, B. RBSABS, RESASC, RESULT
C .. FUNCTION ARGUMENTS ..
REAL P
C
C .. LOCAL SCALARS ..
REAL ABSC, CENTRE. DHLGTH, EPMACH, PC, PSUM, PVAL1, PVAL2,
* HLGTH, RBSG, RESK, RBSKH, UPLOW
INTEGER J
C .. LOCAL ARRAYS ..
REAL FVK10), FV2MO), WG(10), WGK( 1 1 > , XGKM1)
C .. FUNCTION REFERENCES ..
REAL X02AAF, X02ABP
C
C
C THE ABSCISSAE AND WEIGHTS ARE GIVEN FOR THE
C INTERVAL (-1,1) . BECAUSE OP SYMMETRY ONLY THE
C POSITIVE ABSCISSAE AND THEIR CORRESPONDING
C WEIGHTS ARE GIVEN.
C XGK - ABSCISSAE OP THE 21-POINT GAUSS-KRONROD RULE
C XGK(2), XGK(4), ABSCISSAE OF THE 10-POINT
C GAUSS RULE
C XGKM), XGK(3), ABSCISSAE WHICH
-------
283
C ARE OPTIMALLY ADDED TO THE 10-POINT
C GAUSS RULE
C WGK - WEIGHTS OP THE 21-POINT GAUSS-KRONROD RULE
C WG WEIGHTS OP THE 10-POINT GAUSS RULE,
C CORRESPONDING TO THE ABSCISSAE XGK(2),
C XGK(4), ... WG(1), WG(3), ... ARE SET
C TO ZERO.
C
DATAXGKM), XGK(2). XGK(3), XGK(4), XGK(5), XGK(6), XGK(7),
* XGK(8). XGK(9). XGK(10). XGK(11) /O.9956571630258080807355272
* 807B+00.0.9739065285171717200779640121E+00.
* 0.9301574913557082260012071801E+00.0.865063366688984510732096
* 6884B+00,0.7808177265864168970637175783B+00,
* 0.6794095682990244062343273651B+00.0.562757134668604683339000
* 0993E+00.0.4333953941292471907992659432E+00.
* 0.2943928627014601981311266031B+00,0.148874338981631210884826
* 0011E+00.0.0/
DATAWGKd), WGK(2), WGK(3), WGK(4). WGK(5), WGK(6), NGK(7),
* WGK(8). WGK(9)/ WGK(10), WGK(11) /O.1169463886737187427806439
* 606B-01,0.3255816230796472747881897246E-01,
* 0.5475589657435199603138130024B-01,0.750396748109199527670431
* 4092B-01.0.9312545458369760553506546508B-01.
* 0.10938715880229764189921059038+00.0.123491976262065851077958
* 1098E+00.0.13470921731147332592805400188+00.
* 0.1427759385770600807970942731B+00,0.147739104901338491374841
* 5160E+00.0.1494455540029169056649364684B+00/
DATA WG(1 ) , WG(2 ) , WG(3 > , WG(4). WG(5), WG(6 > , WG(7), WG(8),
* WG(9), WG(10) /O.0,0.66671344308688137593568809898-01,0.0,
* 0.14945134915058059314577633978+00,0.0,0.21908636251598204399
* 553493428+00,0.0,0.26926671930999635509122692168+00,0.0,
* 0.2955242247147528701738929947B+00/
BPHACH = X02AAPM.O)
UPLOW = X02ABPM .0)
C
C LIST OP MAJOR VARIABLES
C
C CENTRE - MID POINT OF THE INTERVAL
C HLGTH - HALP LENGTH OP THE INTERVAL
C ABSC - ABSCISSA
C PVAL* - FUNCTION VALUE
C RBSG - 10-POINT GAUSS FORMULA
C RBSK - 21-POINT GAUSS-KRONROD FORMULA
C RBSKH - APPROXIMATION TO MEAN VALUE OF F OVER
C *PC
RBSABS = ABSCRBSK)
-------
284
DO 20 J=1,10
ABSC = HLGTH*XGK(J)
FVAL1 = F(CBNTRB-ABSC)
PVAL2 = P(CBNTRB+ABSC)
PV1(J) = PVAL1
FV2CJ) = PVAL2
PSUH = PVAL1 + PVAL2
RESG = RBSG + HG(J)*PSUH
RBSK = RESK + HGK(J)*PSUH
RESABS = RBSABS + WGK(J)*(ABS(PVAL1)+ABS(PVAL2))
20 CONTINUE
RBSKH = RESK*0.5B+00
RESASC = WGKM1 ) *ABS ( PC-RBSKH)
DO 40 J=1,10
RBSASC = RBSASC + WGK(J)*(ABSCPV1(J)-RBSKH)+ABS(PV2( J)
* -RBSKH))
40 CONTINUE
RESULT = RBSK*HLGTH
RESABS = RESABS*DHLGTH
RESASC = RBSASC*DHLGTH
ABSBRR = ABSC(RBSK-RBSG)*HLGTH)
IP (RESASC.NB.O.B+00) ABSERR = RBSASC*AHIN1(0.1B+01,(0.2E+03*
* ABSBRR/RBSASC)**1.580)
IP (RBSABS.GT.UPLOH/( 0 . 5E+02*BPMACH) ) A-BSBRR =
* AMAX1(BPMACH*RBSABS*0.5B+02,ABSBRR)
RETURN
END
INTEGER PUNCTION P01AAP(IPAIL, ERROR, SRNAMB)
C MARK 1 RELEASE. NAG COPYRIGHT 1971
C MARK 3 REVISED
C MARK 4A REVISED, IBR-45
C MARK 4.5 REVISED
C MARK 7 REVISED (DEC 1978) (APR 1979)
C RETURNS THE VALUE OF ERROR OR TERMINATES THE PROGRAM.
C IP A HARD FAILURE OCCURS, THIS ROUTINE CALLS A FORTRAN AUXILIARY
C ROUTINE P01AAZ WHICH GIVES A TRACE, A FAILURE MESSAGE AND HALTS
C THE PROGRAM
INTEGER ERROR, IFAIL, NOUT
DOUBLE PRECISION SRNAME
C TEST IP NO ERROR DETECTED
IF (ERROR.BQ.O) GO TO 20
C DBTBRMINB OUTPUT UNIT FOR MESSAGE
CALL X04AAP (O.NOUT)
C TEST FOR SOFT FAILURE
IF (MOD(IPAIL,10).BQ.1) GO TO 10
C HARD FAILURE
WRITE (NOUT,99999) SRNAMB, ERROR
C STOPPING MECHANISM MAY ALSO DIFFER
CALL P01AAZ (X)
C STOP
C SOFT FAIL
C TBST IP ERROR MESSAGES SUPPRESSED
10 IF (MOD(IFAIL/10,10).BQ.O) GO TO 20
WRITE (NOUT,99999) SRNAMB, ERROR
20 P01AAF = ERROR
RETURN
-------
285
99999 FORMAT (1HO, 38HERROR DETECTED BY NAG LIBRARY ROUTINE , A8,
* 11H - IFAIL = , IS//)
END
SUBROUTINE P01AAZ
C MARK 2 RELEASE. TOM THACKER AND JOYCE CLARKE OBG OXFORD
C MARK 6 REVISED.
C CALL TRACE
STOP
END
C AUTO EDIT 20 SEP 76
REAL FUNCTION X02AAF(X)
C NAG COPYRIGHT 1975
C EDITED BY JOYCE CLARKE OXFORD OBG NUCLEAR PHYSICS 03RD OCT 1976
C FORTRAN MACRO VERSION FDIA26.TBC
C MARK 4.5 RELEASE
C * EPS *
C RETURNS THE VALUE EPS WHERE EPS IS THB SMALLEST
C POSITIVE
C NUMBER SUCH THAT 1.0+ EPS > 1.0
C THE X PARAMETER IS NOT USED
C FOR ICL 1900
C X02AAF = 2.0**(-37.0>
REAL X
X02AAF = 9.54B-7
C X02AAF = "146400000000
RETURN
END
C AUTO EDIT 17 OCT 76
REAL FUNCTION X02ABF(X)
C NAG COPYRIGHT 1975
C EDITED BY JOYCE CLARKE OXFORD OBG NUCLEAR PHYSICS 03RD OCT 1976
C FORTRAN MACRO VERSION FDIA26.TEC
C MARK 4.5 RELEASE
C * RMIN *
C RETURNS THB VALUE OF THE SMALLEST POSITIVE REAL FLOATING-
C POINT NUMBER EXACTLY REPRESBNTABLB ON THB COMPUTER
C THB X PARAMETER IS NOT USED
C FOR ICL 1900
C X02ABF = 2.0**(-257.0)
REAL X
C X02ABF = "000400000000
X02ABF = 5.4B-79
RETURN
END
C AUTO EDIT 17 OCT 76 -
REAL FUNCTION X02ACPCX)
C NAG COPYRIGHT 1975
C EDITED BY JOYCE CLARKE OXFORD OBG NUCLEAR PHYSICS 03RD OCT 1976
C FORTRAN MACRO VERSION FDIA26.TBC
C MARK 4.5 RELEASE
C * RMAX *
C RETURNS THB VALUE OF THB LARGEST POSITIVE REAL FLOATING-
C POINT NUMBER REPRBSBNTABLB ON THB COMPUTER
-------
286
C FOR ZCL 1900
C X02ACP = (2.0 - 2.0**(-36.0»--2.0**25
-------
293
species according to Y , and between species; the chemical and physical
form of the compound depositing on the vegetation (i.e., in determining
whether it is initially retained); and the presence of other vegetation
which may interfere with interception by the species of concern. A default
value for an interception fraction for TOX-SCREEN may be taken from some
work of Morton et al. (1967) in which an interception of approximately 40%
of applied herbicides was measured (Hoerger and Kenaga, 1972). This value
of r may be more appropriate for organic chemicals than the Regulatory
Guide value or Chamberlain's value, although a great deal of uncertainty
2
still exists. A default value for Y might be 150 g/m , consistent with
values reported by Chamberlain (1971) and Booth and Kaye (1971). The
weathering constant, ^g-» is quite dependent on climatic factors, plant
surface, exposed surface area, and the form of the compound. Although a
value of 0.05 day , corresponding to a 14 day half-life, is reported by
Chamberlain and in the Regulatory Guide, a somewhat smaller value of A_. is
indicated for some organics (Hoerger and Kenaga, 1972). There is
undoubtedly a large range in values of A.,, due to the variability in the
£>L
factors affecting loss. It should be noted that X . does not include loss
due to grazing.
The value of t will vary depending on grazing conditions, if a
pasture is being considered. The value used in the Regulatory Guide is 30
days for grasses.
The total concentration in plants is calculated in TOX-SCREEN by
summing concentrations due to root uptake and interception. As can be seen
from the preceding discussion, there is a large uncertainty associated with
these calculations due to the variability in parameters used. Because it
is believed that grasslands would intercept depositing compounds to a
greater degree than many other crops, based strictly on consideration of
surface-to-volume ratios, it may be conservative to use parameter values
pertinent to grasslands for all types of vegetation in estimating
concentrations due to interception.
-------
294
APPENDIX F
REFERENCES
1. Baes, C. F., Ill, "Prediction of Radionuclide K Values From
Soil-Plant Concentration Ratios," Trans. Am. Nucl. Soc.. Vol. 38
(in press).
2. Booth, R. S. and S. V. Kaye, A Preliminary Systems Analysis Model
of Radioactivity Transfer to Man from Deposition in a Terrestrial
Environment. ORNL/TM-3135, Oak Ridge National Laboratory (1971).
3. Chamberlain, A. C., "Interception and Retention of Radioactive
Aerosols by Vegetation," Atmos. Environ. 4:57-78 (1970).
4. Hoerger, F. and E. E. Kenaga, "Pesticide Residue on Plants:
Correlation of Representative Data as a Basis for Estimation of
Their Magnitude in the Environment," pp. 9-28 in Global Aspects
of Chemistry. Toxicology and Technology as Applied to the Environment.
Vol. I, F. Coulston and F. Korte, Eds., Academic Press, Inc., New
York, New York (1972).
5. Karickoff, S. W., D. S. Brown, and T. A. Scott, "Sorption of
Hydrophobic Pollutants on Natural Sediments," Water Res.
13: 241-248 (1979).
6. Mackay, D., "Correlation of Bioconcentration Factors," Environ. Sci.
Techno1. 16: 274-278 (1982).
7. McDowell-Boyer, L. M. and D. M. Hetrick, A Multimedia Screening-Level
Model for Assessing the Potential Fate of Chemicals Released to the
Environment. ORNL/TM-8334, Oak Ridge National Laboratory (1982).
8. Means, J. C., S. G. Wood, J. J. Hassett, and W. L. Banwart,
"Sorption of Amino- and Carboxy-Substituted Polynuclear Aromatic
Hydrocarbons by Sediments and Soils," Environ. Sci. Techno1.
16: 93-98 (1982).
9. Morton, H. L., E. D. Robison, and R. E. Meyer, "Persistence of
2,4-D, 2,4,5-T, and Dicamba in Range Forage Grasses," Weeds
15: 268-271 (1967).
10. Neely, W. B., "Complex Problems - Simple Solutions," Chemtech
249-251 (April 1981).
-------
295
11. Trabalka, J. R., Personal Communication, Oak Ridge National
Laboratory, Oak Ridge, Tennessee (April 1982).
12. USNRC, Calculation of Annual Doses to Han From Routine Releases
of Reactor Effluents for the Purpose of Evaluating Compliance
with 10 CFR Part 50. Appendix I. Regulatory Guide 1.109,
Revision 1, Washington, D.C. (1977).
-------
INTERNAL DISTRIBUTION
ORNL-6041
EPA-560/5-83-024
1.
2.
3.
4.
5.
6.
7.
8.
9-13.
14.
15.
16.
17.
18.
19-23.
24.
25.
26.
27.
J.
H.
CS
R.
S.
C.
C.
D.
R.
D.
F.
J.
S.
F.
R.
L.
G.
C.
B.
S.
E. Breck
P. Carter/G. E. Whitesides/
Library
0. Chester
J. Cotter
C. Coutant
J. Emerson
E. Fields
H. Gardner
M. Hetrick
0. Hoffman
T. Holdeman
V. Kaye
F. Knapp, Jr.
J. Luxmoore
M McDowell-Boyer
S. McNeilly
W. Miller
D. Murphy
J. Niemczyk
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41-42.
F. R
D. C
M. R
D. E
P. S
A. S
T. J
J. R
C. C
P. J
J. P
G. T
Cent;
ORNL
43.
44.
45.
46.
0'Donne11
Parzyck
Patterson
Reichle
Rohwer
Sjoreen
Sworksi
Trabalka
Travis
Walsh
J. P. Witherspoon
G. T. Yeh
Central Research Library
ORNL Y-12 Technical
Library
Laboratory Records
Laboratory Records,
ORNL-RC
RSIC Library
ORNL Patent Office
EXTERNAL DISTRIBUTION
47. Roseanne Aaberg, Battelle Northwest, P.O. Box 999,
Richland, WA 99352.
48. Herman A. Birnbaum, Toxicology and Environmental Science, Calgon
Corporation, P.O Box 1346, Pittsburgh, PA 15230.
49. Robert G. Butz, Velsicol Chemical Corporation, 341 E. Ohio
Street, Chicago, IL 60611.
50. Jeffrey Carlson, Department of Food and Agriculture, 100 Cambridge
Street, Boston, MA 02202.
51. Ken Condra, U.S. Environmental Protection Agency, Mail Stop
TS-769, Washington, D.C. 20460.
52. Ed Devlin, North Dakota State University, Stevens Hall, Fargo, ND
58102.
53. Gregory Diachinko, Division of Chemical Technology, HFF-424, Food
and Drug Administration, 200 C Street, S.W., Washington, D.C.
20204.
54. Jim Falco, U.S. Environmental Protection Agency, Washington,
D.C. 20460.
297
-------
298
55. Jerry B. Hook, Center of Environmental Toxicology, Michigan State
University, East Lansing, MI 48824.
56. R. S. Kinerson, Office of Toxic Substances, U.S. Environmental
Protection Agency, Mail Stop TS-798, 401 M Street, S.W.,
Washington, D.C. 20460.
57. Joan Lefler, Office of Toxic Substances, U.S. Environmental
Protection Agency, Mail Stop TS-798, 401 M Street, S.W.,
Washington, D.C. 20460.
58. David Mauriello, Office of Toxic Substances, U.S. Environmental
Protection Agency, Mail Stop TS-798, 401 M Steeet, S.W.,
Washington, D.C. 20460.
59. Allan Moghissi, U.S. Environmental Protection Agency, Washington,
D.C. 20460.
60. Lee Mulkey, Environmental Research Laboratory, U.S. Environmental
Protection Agency, Athens, GA 30603.
61. Annette Nold, Office of Toxic Substances, U.S. Environmental
Protection Agency, Mail Stop TS-798, 401 M Street, S.W.,
Washington, D.C. 20460.
62. Carolyn Offutt, Office of Pesticide Programs, U.S. Environmental
Protection Agency, 401 M Street, S.W., Washington, D.C. 20460.
63. R. A. Peloquin, Battelle Northwest Laboratories, Sigma 3,
P.O. Box 999, Richland, WA 99352.
64. Joe C. Reinert, Hazard Evaluation Division, Office of Pesticide
Programs, U.S. Environmental Protection Agency, Washington, D.C.
20460.
65. Jim Roberts, Science Applications, Inc., 1 Woodfield Place Bldg.,
1701 E. Woodfield Road, Suite 819, Schaumburg, IL 60195.
66. K. J. Roberts, Ministry of the Environment, 135 St. Clair Avenue
West, Toronto, Ontario, M4V 1P5, Canada.
67. J. N. Rogers, Division 8324, Sandia Laboratories, Livermore,
CA 94550.
68. Gloria W. Sage, Life and Environmental Sciences Division,
Syracuse Research Corporation, Merrill Lane, Syracuse, NY 13210.
69. Carol A. Sudick, Bureau of Water Quality Management, P.O. Box
2063, Harrisburg, PA 17120.
70. Mel Suffet, Environmental Studies Institute, Drexel University,
Philadelphia, PA 19104.
71. F. Ward Whicker, Department of Radiology and Radiation Biology,
Colorado State University, Ft. Collins, CO 80523.
72-122. William Wood, Office of Toxic Substances, U.S. Environmental
Protection Agency, Mail Stop TS-798, 401 M Street, S.W.,
Washington, D.C. 20460.
123. Frank Wobber, Ecological Research Division, ER-75, U.S.
Department of Energy, Washington, D.C. 20545.
124. G. Zukovs, Pollution Control Branch, Ministry of the Environment,
135 St. Clair Avenue West, Toronto, Ontario, M4V 1P5, Canada.
-------
299
125-151. Technical Information Center, P.O. Box 62, Oak Ridge, TN 37830.
152. Office of Assistant Manager, Energy Research and Development,
DOE-ORO, Oak Ridge, TN 37830.
-------
REPORT DOCUMENTATION ;>_ REPORT HO. j t
PACE ! EPA-560/5-83-024 1
. 4. Thle, cantlfi«n/O0«n-endad 7«rm»
COSATI Retd.'Crauo
| 13. A««.iaeiliTy Statement
19. Security CU*t (Thi* Report)
-_:. NO. e< Pign
' 20. Security Class (Thu Page)
-nca
-------