!$Author$ !$Date$ !$Revision$ !$HeadURL$ subroutine report_hydrobal( isr, bmrotation, bmperod ) ! + + + ARGUMENT DECLARATIONS + + + integer isr, bmrotation, bmperod ! + + + ARGUMENT DEFINITIONS + + + ! isr - subregion number ! bmrotation - rotation count updated in manage.for ! + + + PARAMETERS AND COMMON BLOCKS + + + include 'p1werm.inc' include 'file.inc' include 'm1flag.inc' include 'main/main.inc' include 'manage/oper.inc' include 'h1balance.inc' ! + + + FUNCTION DEFINITIONS + + + integer julday ! + + + LOCAL VARIABLES + + + integer presdy, presmon, presyr integer initdy, initmon, inityr integer presjday integer initjday real fallow_eff real water_use_eff real water_use ! + + + LOCAL DEFINITIONS + + + ! fallow_eff - computed fallow efficiency from period rain and soil water content values ! water_use_eff - computed water use efficiency from period rain and soil water content values ! water use - The total water that was used during period if( am0sif ) then ! initilizing cycle ! set to the beginning of simulation ! to eliminate newline at beginning of file hprevrotation(isr) = 1 else ! done when initializing cycle(s) completed if( bmrotation .gt. hprevrotation(isr) ) then ! write newline write(unit=luohydrobal,fmt=1001) '' end if ! check initial day and present day for order ! daysim counting is restarted when initialization complete if( initday(isr) .gt. presday(isr) ) then ! initial day greater than present day, correct using date math call caldatw(presdy, presmon, presyr) presjday = julday(presdy, presmon, presyr) initjday = presjday + (initday(isr) - presday(isr)) call caldat(initjday, initdy, initmon, inityr) do while( initjday .gt. presjday ) inityr = inityr - bmperod initjday = julday(initdy,initmon,inityr) end do initday(isr) = presday(isr) - (presjday - initjday) end if if ( cumprecip(isr) .gt. 0.0 ) then fallow_eff = ( presswc(isr) - initswc(isr) & & + pressnow(isr) - initsnow(isr) - cumirrig(isr) )& & / cumprecip(isr) else fallow_eff = 0.0 end if water_use = ( initswc(isr) - presswc(isr) & & + pressnow(isr) - initsnow(isr) & & + cumprecip(isr) + cumirrig(isr) ) if( water_use .ne. 0.0 ) then water_use_eff = cumtrans(isr) / water_use else water_use_eff = 0.0 end if if( cumtrans(isr) .gt. 0.0 ) then write(unit=luohydrobal,fmt=1000, advance='NO') & & lopday, lopmon, lopyr, & & opname(1:len_trim(opname)), & & 'Start day,swc,snow', initday(isr), initswc(isr), initsnow(isr),& & 'End day,swc,snow', presday(isr), presswc(isr), pressnow(isr), & & 'rain,irrigation,runoff,evap,trans,drain,check,wateruse_eff', & & cumprecip(isr), cumirrig(isr), & & cumrunoff(isr), cumevap(isr), cumtrans(isr), cumdrain(isr), & & initswc(isr) - presswc(isr) + initsnow(isr) - pressnow(isr) & & + cumprecip(isr) + cumirrig(isr) - cumrunoff(isr) - cumevap(isr)& & - cumtrans(isr) - cumdrain(isr), water_use_eff else write(unit=luohydrobal,fmt=1000, advance='NO') & & lopday, lopmon, lopyr, & & opname(1:len_trim(opname)), & & 'Start day,swc,snow', initday(isr), initswc(isr), initsnow(isr),& & 'End day,swc,snow', presday(isr), presswc(isr), pressnow(isr), & & 'rain,irrigation,runoff,evap,trans,drain,check,falloweff', & & cumprecip(isr), cumirrig(isr), & & cumrunoff(isr), cumevap(isr), cumtrans(isr), cumdrain(isr), & & initswc(isr) - presswc(isr) + initsnow(isr) - pressnow(isr) & & + cumprecip(isr) + cumirrig(isr) - cumrunoff(isr) - cumevap(isr)& & - cumtrans(isr) - cumdrain(isr), fallow_eff end if 1000 format(1x,i2,'/',i2,'/',i2,'|',a,'|',a,'|',f7.0,'|',2(f9.3,'|'), & & a,'|',f7.0,'|',2(f9.3,'|'),a,'|',8(f9.3,'|')) 1001 format(a) hprevrotation(isr) = bmrotation end if ! reset counters and accumulators initday(isr) = presday(isr) initswc(isr) = presswc(isr) initsnow(isr) = pressnow(isr) cumprecip(isr) = 0.0 cumirrig(isr) = 0.0 cumrunoff(isr) = 0.0 cumevap(isr) = 0.0 cumtrans(isr) = 0.0 cumdrain(isr) = 0.0 return end