-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbasin_sdchannel_output.f90
103 lines (88 loc) · 3.88 KB
/
basin_sdchannel_output.f90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
subroutine basin_sdchannel_output
use time_module
use basin_module
use channel_module
use hydrograph_module
use water_body_module
implicit none
integer :: ichan !none |counter
real :: const ! |
bch_stor_d = chaz
bch_in_d = chaz
bch_out_d = chaz
bch_wat_d = wbodz
!! sum all channel output
do ichan = 1, sp_ob%chandeg
bch_stor_d = bch_stor_d + ch_stor(ichan)
bch_in_d = bch_in_d + ch_in_d(ichan)
bch_out_d = bch_out_d + ch_out_d(ichan)
bch_wat_d = bch_wat_d + ch_wat_d(ichan)
end do
bch_in_m = bch_in_m + bch_in_d
bch_out_m = bch_out_m + bch_out_d
bch_wat_m = bch_wat_m + bch_wat_d
!! daily print
if (pco%day_print == "y" .and. pco%int_day_cur == pco%int_day) then
if (pco%sd_chan_bsn%d == "y") then
write (4900,100) time%day, time%mo, time%day_mo, time%yrc, " 1", " 1", bsn%name, bch_wat_d, &
bch_stor_d, bch_in_d, bch_out_d
if (pco%csvout == "y") then
write (4904,'(*(G0.3,:","))') time%day, time%mo, time%day_mo, time%yrc, " 1", " 1", bsn%name, &
bch_wat_d, bch_stor_d, bch_in_d, bch_out_d
end if
end if
end if
!! monthly print
if (time%end_mo == 1) then
bch_in_y = bch_in_y + bch_in_m
bch_out_y = bch_out_y + bch_out_m
bch_wat_y = bch_wat_y + bch_wat_m
const = float (ndays(time%mo + 1) - ndays(time%mo))
bch_wat_m = bch_wat_m // const !! // only divides area (daily average values)
if (pco%sd_chan_bsn%m == "y") then
write (4901,100) time%day, time%mo, time%day_mo, time%yrc, " 1", " 1", bsn%name, bch_wat_m, &
bch_stor_d, bch_in_m, bch_out_m
if (pco%csvout == "y") then
write (4905,'(*(G0.3,:","))') time%day, time%mo, time%day_mo, time%yrc, " 1", " 1", bsn%name, &
bch_wat_m, bch_stor_d, bch_in_m, bch_out_m
end if
end if
bch_in_m = chaz
bch_out_m = chaz
bch_wat_m = wbodz
end if
!! yearly print
if (time%end_yr == 1) then
bch_in_a = bch_in_a + bch_in_y
bch_out_a = bch_out_a + bch_out_y
bch_wat_a = bch_wat_a + bch_wat_y
const = time%day_end_yr
bch_wat_y = bch_wat_y // const !! // only divides area (daily average values)
if (pco%sd_chan_bsn%y == "y") then
write (4902,100) time%day, time%mo, time%day_mo, time%yrc, " 1", " 1", bsn%name, bch_wat_y, &
bch_stor_d, bch_in_y, bch_out_y
if (pco%csvout == "y") then
write (4906,'(*(G0.3,:","))') time%day, time%mo, time%day_mo, time%yrc, " 1", " 1", bsn%name,&
bch_wat_y, bch_stor_d, bch_in_y, bch_out_y
end if
end if
bch_in_y = chaz
bch_out_y = chaz
bch_wat_y = wbodz
end if
!! average annual print
if (time%end_sim == 1 .and. pco%sd_chan_bsn%a == "y") then
bch_in_a = bch_in_a / time%yrs_prt !! all inflow and outflow variables (summed) are divided by years
bch_out_a = bch_out_a / time%yrs_prt
bch_wat_a = bch_wat_a / time%yrs_prt !! all summed variables divided by years
write (4903,100) time%day, time%mo, time%day_mo, time%yrc, " 1", " 1", bsn%name, bch_wat_a, &
bch_stor_d, bch_in_a, bch_out_a
if (pco%csvout == "y") then
write (4907,'(*(G0.3,:","))') time%day, time%mo, time%day_mo, time%yrc, " 1", " 1", bsn%name, &
bch_wat_a, bch_stor_d, bch_in_a, bch_out_a
end if
end if
!100 format (4i6,2x,2a,2x,a17,f14.4,59(1x,e14.4))
100 format (4i6,2x,2a,2x,a17,f16.4,59(1x,e14.4))
return
end subroutine basin_sdchannel_output