c subroutine caltot(maxper, simyrs, first) subroutine caltot(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 C Wed Apr 25 15:11:26 CDT 2001 - LEW C Changes were made to normalize the wind energy values to be C "per day" rather than "per period" or "per year". I simply C duplicated the way the dryness ratio value was being computed. C This doesn't guarantee that any of this is correct. include 'p1werm.inc' include 'main/output.inc' C + + + Arguments + + + c integer maxper integer simyrs logical first C + + + Local Variables + + + integer i,j,k c + + + OUTPUT FORMATS + + + c period values for each rotation c 2500 format (2(i2,'/'),i2,'|',1x,a40,'|',9(f10.4,'|'), c & 13(f10.4,'|'),f10.3,'|',f10.2,'|',15(f10.3,'|')) 2500 format (2(i2,'/'),i2,'|',1x,a40,'|',5(f10.4,'|'), & 13(f10.4,'|'),f10.3,'|',f10.2,'|',15(f10.3,'|')) c annual average for rotation year c 2520 format ('#',6x,(i1,'|'),' N/A',37x,'|',9(f10.4,'|'), c & 13(f10.4,'|'),f10.3,'|',f10.2,'|',15(' N/A|')) 2520 format ('#',6x,(i1,'|'),' N/A',37x,'|',5(f10.4,'|'), & 13(f10.4,'|'),f10.3,'|',f10.2,'|',15(' N/A|')) c monthly values regardless of rotation c 2540 format (6x,i2,'|',41x,'|',9(f10.4,'|'), c & 13(f10.4,'|'),f10.3,'|',f10.2,'|',15(f10.3,'|')) 2540 format (6x,i2,'|',41x,'|',5(f10.4,'|'), & 13(f10.4,'|'),f10.3,'|',f10.2,'|',15(f10.3,'|')) c annual average for all years c 2560 format('*',7x,'|',' N/A',37x,'|',9(f10.4,'|'), c & 13(f10.4,'|'),f10.3,'|',f10.2,'|',15(' N/A|')) 2560 format('*',7x,'|',' N/A',37x,'|',5(f10.4,'|'), & 13(f10.4,'|'),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 !rotation yr do 461 j = 1,12 !month do 471 i = 1,31 !day in period !determines if date should have a line of output for a period? if (outday(i,j,k) .eq. 1) then if (first .eqv. .true.) then ttmp1 = teros(i,j,k) sxqtmp1 = sumxsq(i,j,k) sxtmp1 = sumx(i,j,k) cstmp1 = cseros(i,j,k) csltmp1 = csloss(i,j,k) csdtmp1 = csdep(i,j,k) cslareatmp1 = sumcslarea(i,j,k) csdareatmp1 = sumcsdarea(i,j,k) stmp1 = seros(i,j,k) pm10tmp1 = pm10eros(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) teros(i,j,k) = teros(31,12,1) sumxsq(i,j,k) = sumxsq(31,12,1) sumx(i,j,k) = sumx(31,12,1) cseros(i,j,k) = cseros(31,12,1) csloss(i,j,k) = csloss(31,12,1) csdep(i,j,k) = csdep(31,12,1) sumcslarea(i,j,k) = sumcslarea(31,12,1) sumcsdarea(i,j,k) = sumcsdarea(31,12,1) seros(i,j,k) = seros(31,12,1) pm10eros(i,j,k) = pm10eros(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 = teros(i,j,k) sxqtmp2 = sumxsq(i,j,k) sxtmp2 = sumx(i,j,k) cstmp2 = cseros(i,j,k) csltmp2 = csloss(i,j,k) csdtmp2 = csdep(i,j,k) cslareatmp2 = sumcslarea(i,j,k) csdareatmp2 = sumcsdarea(i,j,k) stmp2 = seros(i,j,k) pm10tmp2 = pm10eros(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) teros(i,j,k) = ttmp1 sumxsq(i,j,k) = sxqtmp1 sumx(i,j,k) = sxtmp1 cseros(i,j,k) = cstmp1 csloss(i,j,k) = csltmp1 csdep(i,j,k) = csdtmp1 sumcslarea(i,j,k) = cslareatmp1 sumcsdarea(i,j,k) = csdareatmp1 seros(i,j,k) = stmp1 pm10eros(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 csltmp1 = csltmp2 csdtmp1 = csdtmp2 cslareatmp1 = cslareatmp2 csdareatmp1 = csdareatmp2 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 ! I have no idea what John is doing in this section of the code ! Evidently he doesn't either - LEW - Wed Apr 25 15:05:56 CDT 2001 c Larry is right. I have no idea what this code is spposed to do. c after checking it seems to be wrong anyway so I have commented it out. - jt c write(*,*)'teros(31,1,maxper)',teros(31,1,maxper),outyrs(maxper)+1 c & ,maxper c teros(31,1,maxper) = teros(31,1,maxper) - c & (teros(31,1,maxper)/(outyrs(maxper)+1)) c c write(*,*)'teros(31,1,maxper)',teros(31,1,maxper),outyrs(maxper)+1 c cseros(31,1,maxper) = cseros(31,1,maxper) - c & (cseros(31,1,maxper)/(outyrs(maxper)+1)) c csloss(31,1,maxper) = csloss(31,1,maxper) - c & (csloss(31,1,maxper)/(outyrs(maxper)+1)) c csdep(31,1,maxper) = csdep(31,1,maxper) - c & (csdep(31,1,maxper)/(outyrs(maxper)+1)) c sumcslarea(31,1,maxper) = sumcslarea(31,1,maxper) - c & (sumcslarea(31,1,maxper)/(outyrs(maxper)+1)) c sumcsdarea(31,1,maxper) = sumcsdarea(31,1,maxper) - c & (sumcsdarea(31,1,maxper)/(outyrs(maxper)+1)) c seros(31,1,maxper) = seros(31,1,maxper) - c & (seros(31,1,maxper)/(outyrs(maxper)+1)) c pm10eros(31,1,maxper) = pm10eros(31,1,maxper) - c & (pm10eros(31,1,maxper)/(outyrs(maxper)+1)) c cs1(31,1,maxper) = cs1(31,1,maxper) - (cs1(31,1,maxper)/ c & (outyrs(maxper)+1)) c cs2(31,1,maxper) = cs2(31,1,maxper) - (cs2(31,1,maxper)/ c & (outyrs(maxper)+1)) c cs3(31,1,maxper) = cs3(31,1,maxper) - (cs3(31,1,maxper)/ c & (outyrs(maxper)+1)) c cs4(31,1,maxper) = cs4(31,1,maxper) - (cs4(31,1,maxper)/ c & (outyrs(maxper)+1)) c ss1(31,1,maxper) = ss1(31,1,maxper) - (ss1(31,1,maxper)/ c & (outyrs(maxper)+1)) c ss2(31,1,maxper) = ss2(31,1,maxper) - (ss2(31,1,maxper)/ c & (outyrs(maxper)+1)) c ss3(31,1,maxper) = ss3(31,1,maxper) - (ss3(31,1,maxper)/ c & (outyrs(maxper)+1)) c ss4(31,1,maxper) = ss4(31,1,maxper) - (ss4(31,1,maxper)/ c & (outyrs(maxper)+1)) c pm1(31,1,maxper) = pm1(31,1,maxper) - (pm1(31,1,maxper)/ c & (outyrs(maxper)+1)) c pm2(31,1,maxper) = pm2(31,1,maxper) - (pm2(31,1,maxper)/ c & (outyrs(maxper)+1)) c pm3(31,1,maxper) = pm3(31,1,maxper) - (pm3(31,1,maxper)/ c & (outyrs(maxper)+1)) c pm4(31,1,maxper) = pm4(31,1,maxper) - (pm4(31,1,maxper)/ c & (outyrs(maxper)+1)) c precip(31,1,maxper) = precip(31,1,maxper) - c & (precip(31,1,maxper)/(outyrs(maxper)+1)) c drat(31,1,maxper) = drat(31,1,maxper) - c & (drat(31,1,maxper)/(outyrs(maxper)+1)) c winde(31,1,maxper) = winde(31,1,maxper) - c & (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 c Note - sign was changed for eros output write(41,2520) k, & teros(i,j,k)/outyrs(k), & std(i,j,k), & cseros(i,j,k)/outyrs(k), c c & csloss(i,j,k)/outyrs(k), c & csdep(i,j,k)/outyrs(k), c & sumcslarea(i,j,k)/outyrs(k), c & sumcsdarea(i,j,k)/outyrs(k), c & seros(i,j,k)/outyrs(k), & pm10eros(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), ! We want to change winde() to be normalized to "per day" values - LEW ! & winde(i,j,k)/outyrs(k), & winde(i,j,k)/(outyrs(k)*ndays(32,13,16)), & 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), & teros(i,j,k)/outyrs(k), & std(i,j,k), & cseros(i,j,k)/outyrs(k), c c & csloss(i,j,k)/outyrs(k), c & csdep(i,j,k)/outyrs(k), c & sumcslarea(i,j,k)/outyrs(k), c & sumcsdarea(i,j,k)/outyrs(k), c & seros(i,j,k)/outyrs(k), & pm10eros(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)), ! We want to change winde() to be normalized to "per day" values - LEW ! & winde(i,j,k)/outyrs(k), & winde(i,j,k)/(outyrs(k)*ndays(i,j,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), & rdgdir(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, & teros(32,j,16)/simyrs, & std(32,j,16), & cseros(32,j,16)/simyrs, c c & csloss(32,j,16)/simyrs, c & csdep(32,j,16)/simyrs, c & sumcslarea(32,j,16)/simyrs, c & sumcsdarea(32,j,16)/simyrs, c & seros(32,j,16)/simyrs, & pm10eros(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, ! We want to change winde() to be normalized to "per day" values - LEW ! & winde(32,j,16)/simyrs, & winde(32,j,16)/(simyrs*ndays(32,j,16)), & 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, & rdgdir(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) teros(32,13,16)/simyrs, & std(32,13,16), & cseros(32,13,16)/simyrs, c c & csloss(32,13,16)/simyrs, c & csdep(32,13,16)/simyrs, c & sumcslarea(32,13,16)/simyrs, c & sumcsdarea(32,13,16)/simyrs, c & seros(32,13,16)/simyrs, & pm10eros(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, ! We want to change winde() to be normalized to "per day" values - LEW ! & winde(32,13,16)/simyrs, & winde(32,13,16)/(simyrs*365.), & drat(32,13,16)/(simyrs*365.) end