subroutine caltot(maxper, simyrs, first) C ***************************************************************** wjr C Contains output code from main C C Edit History C 10-Mar-99 wjr created c note - this code writes output for the accounting region where c the the accounting region is contained in or equal to c the subregion. The loop variable for number of rotations C is a constant and should be made to expand to number of c years in a rotation. C include 'p1werm.inc' include 'main/output.inc' C + + + Arguments + + + integer maxper integer simyrs logical first C + + + Local Variables + + + integer i,j,k c + + + OUTPUT FORMATS + + + c period values for each rotation 2500 format (2(i2,'/'),i2,'|',1x,a40,'|',5(f10.4,'|'), & 13(f10.2,'|'),f10.3,'|',f10.2,'|',15(f10.3,'|')) c annual average for rotation year 2520 format ('#',6x,(i1,'|'),' N/A',37x,'|',5(f10.4,'|'), & 13(f10.2,'|'),f10.3,'|',f10.2,'|',15(' N/A|')) c monthly values regardless of rotation 2540 format (6x,i2,'|',41x,'|',5(f10.4,'|'), & 13(f10.2,'|'),f10.3,'|',f10.2,'|',15(f10.3,'|')) c annual average for all years 2560 format('*',7x,'|',' N/A',37x,'|',5(f10.4,'|'), & 13(f10.2,'|'),f10.3,'|',f10.2,'|',15(' N/A|')) c adjust output to print previous period values on current date c this next section is not the best way to do this - jt c****************************************************************** do 451 k = 1,15 do 461 j = 1,12 do 471 i = 1,31 if (outday(i,j,k) .eq. 1) then if (first .eqv. .true.) then ttmp1 = tloss(i,j,k) sxqtmp1 = sumxsq(i,j,k) sxtmp1 = sumx(i,j,k) cstmp1 = csloss(i,j,k) stmp1 = sloss(i,j,k) pm10tmp1 = pm10loss(i,j,k) cs1tmp1 = cs1(i,j,k) cs2tmp1 = cs2(i,j,k) cs3tmp1 = cs3(i,j,k) cs4tmp1 = cs4(i,j,k) ss1tmp1 = ss1(i,j,k) ss2tmp1 = ss2(i,j,k) ss3tmp1 = ss3(i,j,k) ss4tmp1 = ss4(i,j,k) pm1tmp1 = pm1(i,j,k) pm2tmp1 = pm2(i,j,k) pm3tmp1 = pm3(i,j,k) pm4tmp1 = pm4(i,j,k) ptmp1 = precip(i,j,k) dtmp1 = drat(i,j,k) wtmp1 = winde(i,j,k) tloss(i,j,k) = tloss(31,12,1) sumxsq(i,j,k) = sumxsq(31,12,1) sumx(i,j,k) = sumx(31,12,1) csloss(i,j,k) = csloss(31,12,1) sloss(i,j,k) = sloss(31,12,1) pm10loss(i,j,k) = pm10loss(31,12,1) cs1(i,j,k) = cs1(31,12,1) cs2(i,j,k) = cs2(31,12,1) cs3(i,j,k) = cs3(31,12,1) cs4(i,j,k) = cs4(31,12,1) ss1(i,j,k) = ss1(31,12,1) ss2(i,j,k) = ss2(31,12,1) ss3(i,j,k) = ss3(31,12,1) ss4(i,j,k) = ss4(31,12,1) pm1(i,j,k) = pm1(31,12,1) pm2(i,j,k) = pm2(31,12,1) pm3(i,j,k) = pm3(31,12,1) pm4(i,j,k) = pm4(31,12,1) precip(i,j,k) = precip(31,12,1) drat(i,j,k) = drat(31,12,1) winde(i,j,k) = winde(31,12,1) else ttmp2 = tloss(i,j,k) sxqtmp2 = sumxsq(i,j,k) sxtmp2 = sumx(i,j,k) cstmp2 = csloss(i,j,k) stmp2 = sloss(i,j,k) pm10tmp2 = pm10loss(i,j,k) cs1tmp2 = cs1(i,j,k) cs2tmp2 = cs2(i,j,k) cs3tmp2 = cs3(i,j,k) cs4tmp2 = cs4(i,j,k) ss1tmp2 = ss1(i,j,k) ss2tmp2 = ss2(i,j,k) ss3tmp2 = ss3(i,j,k) ss4tmp2 = ss4(i,j,k) pm1tmp2 = pm1(i,j,k) pm2tmp2 = pm2(i,j,k) pm3tmp2 = pm3(i,j,k) pm4tmp2 = pm4(i,j,k) ptmp2 = precip(i,j,k) dtmp2 = drat(i,j,k) wtmp2 = winde(i,j,k) tloss(i,j,k) = ttmp1 sumxsq(i,j,k) = sxqtmp1 sumx(i,j,k) = sxtmp1 csloss(i,j,k) = cstmp1 sloss(i,j,k) = stmp1 pm10loss(i,j,k) = pm10tmp1 cs1(i,j,k) = cs1tmp1 cs2(i,j,k) = cs2tmp1 cs3(i,j,k) = cs3tmp1 cs4(i,j,k) = cs4tmp1 ss1(i,j,k) = ss1tmp1 ss2(i,j,k) = ss2tmp1 ss3(i,j,k) = ss3tmp1 ss4(i,j,k) = ss4tmp1 pm1(i,j,k) = pm1tmp1 pm2(i,j,k) = pm2tmp1 pm3(i,j,k) = pm3tmp1 pm4(i,j,k) = pm4tmp1 precip(i,j,k) = ptmp1 drat(i,j,k) = dtmp1 winde(i,j,k) = wtmp1 ttmp1 = ttmp2 sxqtmp1 = sxqtmp2 sxtmp1 = sxtmp2 cstmp1 = cstmp2 stmp1 = stmp2 pm10tmp1 = pm10tmp2 cs1tmp1 = cs1tmp2 cs2tmp1 = cs2tmp2 cs3tmp1 = cs3tmp2 cs4tmp1 = cs4tmp2 ss1tmp1 = ss1tmp2 ss2tmp1 = ss2tmp2 ss3tmp1 = ss3tmp2 ss4tmp1 = ss4tmp2 pm1tmp1 = pm1tmp2 pm2tmp1 = pm2tmp2 pm3tmp1 = pm3tmp2 pm4tmp1 = pm4tmp2 ptmp1 = ptmp2 dtmp1 = dtmp2 wtmp1 = wtmp2 end if first = .false. end if 471 continue 461 continue 451 continue tloss(31,1,maxper) = tloss(31,1,maxper) - & (tloss(31,1,maxper)/(outyrs(maxper)+1)) csloss(31,1,maxper) = csloss(31,1,maxper) - & (csloss(31,1,maxper)/(outyrs(maxper)+1)) sloss(31,1,maxper) = sloss(31,1,maxper) - & (sloss(31,1,maxper)/(outyrs(maxper)+1)) pm10loss(31,1,maxper) = pm10loss(31,1,maxper) - & (pm10loss(31,1,maxper)/(outyrs(maxper)+1)) cs1(31,1,maxper) = cs1(31,1,maxper) - (cs1(31,1,maxper)/ & (outyrs(maxper)+1)) cs2(31,1,maxper) = cs2(31,1,maxper) - (cs2(31,1,maxper)/ & (outyrs(maxper)+1)) cs3(31,1,maxper) = cs3(31,1,maxper) - (cs3(31,1,maxper)/ & (outyrs(maxper)+1)) cs4(31,1,maxper) = cs4(31,1,maxper) - (cs4(31,1,maxper)/ & (outyrs(maxper)+1)) ss1(31,1,maxper) = ss1(31,1,maxper) - (ss1(31,1,maxper)/ & (outyrs(maxper)+1)) ss2(31,1,maxper) = ss2(31,1,maxper) - (ss2(31,1,maxper)/ & (outyrs(maxper)+1)) ss3(31,1,maxper) = ss3(31,1,maxper) - (ss3(31,1,maxper)/ & (outyrs(maxper)+1)) ss4(31,1,maxper) = ss4(31,1,maxper) - (ss4(31,1,maxper)/ & (outyrs(maxper)+1)) pm1(31,1,maxper) = pm1(31,1,maxper) - (pm1(31,1,maxper)/ & (outyrs(maxper)+1)) pm2(31,1,maxper) = pm2(31,1,maxper) - (pm2(31,1,maxper)/ & (outyrs(maxper)+1)) pm3(31,1,maxper) = pm3(31,1,maxper) - (pm3(31,1,maxper)/ & (outyrs(maxper)+1)) pm4(31,1,maxper) = pm4(31,1,maxper) - (pm4(31,1,maxper)/ & (outyrs(maxper)+1)) precip(31,1,maxper) = precip(31,1,maxper) - & (precip(31,1,maxper)/(outyrs(maxper)+1)) drat(31,1,maxper) = drat(31,1,maxper) - & (drat(31,1,maxper)/(outyrs(maxper)+1)) winde(31,1,maxper) = winde(31,1,maxper) - & (winde(31,1,maxper)/(outyrs(maxper)+1)) c********************************************************************* do 450 k = 1,15 do 460 j = 1,13 do 470 i = 1,32 if((sumxsq(i,j,k) / ndays(i,j,k) - & (sumx(i,j,k) / ndays(i,j,k))**2.).gt.0.) & then std(i,j,k) = sqrt(sumxsq(i,j,k) / ndays(i,j,k) - & (sumx(i,j,k) / ndays(i,j,k))**2.) else std(i,j,k) = 0.0 end if if (outday(i,j,k) .eq. 1) then if (i .eq. 32) then c write annual average for each rotation year write(41,2520) k, & tloss(i,j,k)/outyrs(k), & std(i,j,k), & csloss(i,j,k)/outyrs(k), & sloss(i,j,k)/outyrs(k), & pm10loss(i,j,k)/outyrs(k), & cs1(i,j,k)/outyrs(k),cs2(i,j,k)/outyrs(k), & cs3(i,j,k)/outyrs(k),cs4(i,j,k)/outyrs(k), & ss1(i,j,k)/outyrs(k),ss2(i,j,k)/outyrs(k), & ss3(i,j,k)/outyrs(k),ss4(i,j,k)/outyrs(k), & pm1(i,j,k)/outyrs(k),pm2(i,j,k)/outyrs(k), & pm3(i,j,k)/outyrs(k),pm4(i,j,k)/outyrs(k), & precip(i,j,k)/outyrs(k), & winde(i,j,k)/outyrs(k), & drat(i,j,k)/(outyrs(k)*ndays(32,13,16)) else c write average values for previous two week period and/or operation write(41,2500) i,j,k, & opnam(i,j,k), & tloss(i,j,k)/outyrs(k), & std(i,j,k), & csloss(i,j,k)/outyrs(k), & sloss(i,j,k)/outyrs(k), & pm10loss(i,j,k)/outyrs(k), & cs1(i,j,k)/outyrs(k),cs2(i,j,k)/outyrs(k), & cs3(i,j,k)/outyrs(k),cs4(i,j,k)/outyrs(k), & ss1(i,j,k)/outyrs(k),ss2(i,j,k)/outyrs(k), & ss3(i,j,k)/outyrs(k),ss4(i,j,k)/outyrs(k), & pm1(i,j,k)/outyrs(k),pm2(i,j,k)/outyrs(k), & pm3(i,j,k)/outyrs(k),pm4(i,j,k)/outyrs(k), & precip(i,j,k)/(outyrs(k)), & winde(i,j,k)/outyrs(k), & drat(i,j,k)/(outyrs(k)*ndays(i,j,k)), & ccovtot(i,j,k)/outyrs(k), & cstsilh(i,j,k)/outyrs(k), & cabmass(i,j,k)/outyrs(k), & dflcov(i,j,k)/outyrs(k), & dstsilh(i,j,k)/outyrs(k), & dflmass(i,j,k)/outyrs(k), & dstmass(i,j,k)/outyrs(k), & fldec(i,j,k)/outyrs(k), & stdec(i,j,k)/outyrs(k), & flmass(i,j,k)/outyrs(k), & stmass(i,j,k)/outyrs(k), & opdir(i,j,k)/outyrs(k), & rdght(i,j,k)/outyrs(k), & rdgsp(i,j,k)/outyrs(k), & rr(i,j,k)/outyrs(k) end if end if 470 continue 460 continue 450 continue c write monthly averages regardless of rotation year do 480 j = 1,12 if((sumxsq(32,j,16) / ndays(32,j,16) - & (sumx(32,j,16) / ndays(32,j,16))**2.).gt.0.) then std(32,j,16) = sqrt(sumxsq(32,j,16) / ndays(32,j,16) - & (sumx(32,j,16) / ndays(32,j,16))**2.) else std(32,j,16) = 0.0 end if write(41,2540) j, & tloss(32,j,16)/simyrs, & std(32,j,16), & csloss(32,j,16)/simyrs, & sloss(32,j,16)/simyrs, & pm10loss(32,j,16)/simyrs, & cs1(32,j,16)/simyrs,cs2(32,j,16)/simyrs, & cs3(32,j,16)/simyrs,cs4(32,j,16)/simyrs, & ss1(32,j,16)/simyrs,ss2(32,j,16)/simyrs, & ss3(32,j,16)/simyrs,ss4(32,j,16)/simyrs, & pm1(32,j,16)/simyrs,pm2(32,j,16)/simyrs, & pm3(32,j,16)/simyrs,pm4(32,j,16)/simyrs, & precip(32,j,16)/simyrs, & winde(32,j,16)/simyrs, & drat(32,j,16)/(simyrs*ndays(32,j,16)), & ccovtot(32,j,16)/simyrs, & cstsilh(32,j,16)/simyrs, & cabmass(32,j,16)/simyrs, & dflcov(32,j,16)/simyrs, & dstsilh(32,j,16)/simyrs, & dflmass(32,j,16)/simyrs, & dstmass(32,j,16)/simyrs, & fldec(32,j,16)/simyrs, & stdec(32,j,16)/simyrs, & flmass(32,j,16)/simyrs, & stmass(32,j,16)/simyrs, & opdir(32,j,16)/simyrs, & rdght(32,j,16)/simyrs, & rdgsp(32,j,16)/simyrs, & rr(32,j,16)/simyrs 480 continue if((sumxsq(32,13,16) / ndays(32,13,16) - & (sumx(32,13,16) / ndays(32,13,16))**2.).gt.0.) then std(32,13,16) = sqrt(sumxsq(32,13,16) / ndays(32,13,16) - & (sumx(32,13,16) / ndays(32,13,16))**2.) else std(32,13,16) = 0.0 end if c write anual average values write(41,2560) tloss(32,13,16)/simyrs,std(32,13,16), & csloss(32,13,16)/simyrs, & sloss(32,13,16)/simyrs, pm10loss(32,13,16)/simyrs, & cs1(32,13,16)/simyrs,cs2(32,13,16)/simyrs, & cs3(32,13,16)/simyrs,cs4(32,13,16)/simyrs, & ss1(32,13,16)/simyrs,ss2(32,13,16)/simyrs, & ss3(32,13,16)/simyrs,ss4(32,13,16)/simyrs, & pm1(32,13,16)/simyrs,pm2(32,13,16)/simyrs, & pm3(32,13,16)/simyrs,pm4(32,13,16)/simyrs, & precip(32,13,16)/simyrs,winde(32,13,16)/simyrs, & drat(32,13,16)/(simyrs*365.) end