basin_reservoir_output.f90 [src] Revision: default Date:
subroutine basin_reservoir_output
use time_module
use basin_module
use reservoir_module
use hydrograph_module
use water_body_module
implicit none
integer :: ires !none |counter
real :: const
!! zero daily variables
bres = resmz
bres_in_d = resmz
bres_out_d = resmz
bres_wat_d = wbodz
!! sum all reservoirs to get basin totals
do ires = 1, sp_ob%res
bres = bres + res(ires)
bres_in_d = bres_in_d + res_in_d(ires)
res_in_d(ires) = resmz
bres_out_d = bres_out_d + res_out_d(ires)
res_out_d(ires) = resmz
bres_wat_d = bres_wat_d + res_wat_d(ires)
!res_wat_d(ires) = wbodz
end do
!! sum monthly variables
bres_in_m = bres_in_m + bres_in_d
bres_out_m = bres_out_m + bres_out_d
bres_wat_m = bres_wat_m + bres_wat_d
!! daily print - RESERVOIR
if (pco%day_print == "y" .and. pco%int_day_cur == pco%int_day) then
if (pco%res_bsn%d == "y") then
write (2100,100) time%day, time%mo, time%day_mo, time%yrc, ires, " 1", bsn%name, bres_wat_d, bres, bres_in_d, bres_out_d
if (pco%csvout == "y") then
write (2104,'(*(G0.3,:","))') time%day, time%mo, time%day_mo, time%yrc, ires, " 1", bsn%name, bres_wat_d, bres, bres_in_d, bres_out_d
end if
end if
end if
!! monthly print - RESERVOIR
if (time%end_mo == 1) then
const = float (ndays(time%mo + 1) - ndays(time%mo))
bres_in_y = bres_in_y + bres_in_m
bres_out_y = bres_out_y + bres_out_m
bres_wat_m = bres_wat_m // const
bres_wat_y = bres_wat_y + bres_wat_m
if (pco%res_bsn%m == "y") then
write (2101,100) time%day, time%mo, time%day_mo, time%yrc, ires, " 1", bsn%name, bres_wat_m, bres, bres_in_m, bres_out_m
if (pco%csvout == "y") then
write (2105,'(*(G0.3,:","))') time%day, time%mo, time%day_mo, time%yrc, ires, " 1", bsn%name, bres_wat_m, bres, bres_in_m, bres_out_m
endif
end if
bres_in_m = resmz
bres_out_m = resmz
bres_wat_m = wbodz
end if
!! yearly print - RESERVOIR
if (time%end_yr == 1) then
bres_in_a = bres_in_a + bres_in_y
bres_out_a = bres_out_a + bres_out_y
bres_wat_y = bres_wat_y // 12.
bres_wat_a = bres_wat_a + bres_wat_y
if (pco%res_bsn%y == "y") then
write (2102,100) time%day, time%mo, time%day_mo, time%yrc, ires, " 1", bsn%name, bres_wat_y, bres, bres_in_y, bres_out_y
if (pco%csvout == "y") then
write (2106,'(*(G0.3,:","))') time%day, time%mo, time%day_mo, time%yrc, ires, " 1", bsn%name, bres_wat_y, bres, bres_in_y, bres_out_y
end if
end if
!! zero yearly variables
bres_in_y = resmz
bres_out_y = resmz
bres_wat_y = wbodz
end if
!! average annual print - RESERVOIR
if (time%end_sim == 1 .and. pco%res_bsn%a == "y") then
bres_in_a = bres_in_a / time%yrs_prt
bres_out_a = bres_out_a / time%yrs_prt
bres_wat_a = bres_wat_a / time%yrs_prt
write (2103,100) time%day, time%mo, time%day_mo, time%yrc, ires, " 1", bsn%name, bres_wat_a, bres, bres_in_a, bres_out_a
if (pco%csvout == "y") then
write (2107,'(*(G0.3,:","))') time%day, time%mo, time%day_mo, time%yrc, ires, " 1", bsn%name, bres_wat_a, bres, bres_in_a, bres_out_a
end if
end if
return
100 format (4i6,i8,2x,a,2x,a17,f14.4,59(1x,e14.4))
end subroutine basin_reservoir_output