📄 subbasin.f
字号:
subroutine subbasin
!! ~ ~ ~ PURPOSE ~ ~ ~
!! this subroutine controls the simulation of the land phase of the
!! hydrologic cycle
!! ~ ~ ~ INCOMING VARIABLES ~ ~ ~
!! name |units |definition
!! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!! auto_wstr(:,:,:)|none |water stress factor which triggers auto
!! |irrigation
!! bio_e(:) |(kg/ha)/ |biomass-energy ratio
!! | (MJ/m**2)|The potential (unstressed) growth rate per
!! |unit of intercepted photosynthetically
!! |active radiation.
!! canev |mm H2O |amount of water evaporated from canopy
!! |storage
!! ep_day |mm H2O |actual amount of transpiration that occurs
!! |on day in HRU
!! es_day |mm H2O |actual amount of evaporation (soil et) that
!! |occurs on day in HRU
!! gw_q(:) |mm H2O |groundwater contribution to streamflow from
!! |HRU on current day
!! hru_ra(:) |MJ/m^2 |solar radiation for the day in HRU
!! iafer(:,:,:) |julian date |date of auto fertilization initialization
!! iairr(:,:,:) |julian date |date of auto irrigation initialization
!! iida |julian date |day being simulated (current julian date)
!! idplt(:,:,:) |none |land cover code from crop.dat
!! ifert(:,:,:) |julian date |date of fertilizer application
!! igro(:) |none |land cover status code
!! |0 no land cover currently growing
!! |1 land cover growing
!! iir(:,:,:) |julian date |date of irrigation operation
!! inum1 |none |subbasin number
!! ipst(:,:,:) |julian date |date of pesticide application
!! imp_trig(:,:,:)|none |release/impound action code:
!! |0 begin impounding water
!! |1 release impounded water
!! irelease(:,:,:)|julian date |date of impound/release operation
!! irrsc(:) |none |irrigation source code:
!! |1 divert water from reach
!! |2 divert water from reservoir
!! |3 divert water from shallow aquifer
!! |4 divert water from deep aquifer
!! |5 divert water from source outside
!! | watershed
!! iurban(:) |none |urban simulation code:
!! |0 no urban sections in HRU
!! |1 urban sections in HRU, simulate using
!! | USGS regression equations
!! |2 urban sections in HRU, simulate using
!! | build up/wash off algorithm
!! latq(:) |mm H2O |total lateral flow in soil profile for the
!! |day in HRU
!! nafert(:) |none |sequence number of auto-fert application
!! |within the year
!! nair(:) |none |sequence number of auto-irrigation
!! |application within the year
!! nfert(:) |none |sequence number of fertilizer application
!! |within the year
!! nirr(:) |none |sequence number of irrigation application
!! |within the year
!! npest(:) |none |sequence number of pesticide application
!! |within the year
!! nrelease(:) |none |sequence number of impound/release
!! |operation within the year
!! nro(:) |none |sequence number of year in rotation
!! peakr |m^3/s |peak runoff rate
!! pet_day |mm H2O |potential evapotranspiration on current
!! |day in HRU
!! phuacc(:) |none |fraction of plant heat units accumulated
!! phuaf(:,:,:) |none |fraction of plant heat units at which
!! |auto-fertilization is initialized
!! phuai(:,:,:) |none |fraction of plant heat units at which
!! |auto-irrigation is initialized
!! phubase(:) |heat units |base zero total heat units (used when no
!! |land cover is growing)
!! phuirr(:,:,:) |none |fraction of plant heat units at which
!! |irrigation occurs
!! phun(:,:,:) |none |fraction of plant heat units at which
!! |fertilization occurs
!! phupst(:,:,:) |none |fraction of plant heat units at which
!! |pesticide application occurs
!! pot_fr(:) |km2/km2 |fraction of HRU area that drains into
!! |pothole
!! pot_vol(:) |m**3 H2O |current volume of water stored in the
!! |depression/impounded area
!! precipday |mm H2O |precipitation for the day in HRU
!! qday |mm H2O |surface runoff loading to main channel from
!! |HRU for day
!! qtile |mm H2O |drainage tile flow in soil layer for the
!! |day
!! sci(:) |none |retention coefficient for CN method based
!! |on plant ET
!! sedyld(:) |metric tons |soil loss for day in HRU
!! smx(:) |none |retention coefficient for CN method based
!! |on soil moisture
!! surfq(:) |mm H2O |surface runoff generated on day in HRU
!! tmn(:) |deg C |minimum temperature for the day in HRU
!! tmpav(:) |deg C |average temperature for the day in HRU
!! tmx(:) |deg C |maximum temperature for the day in HRU
!! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!! ~ ~ ~ OUTGOING VARIABLES ~ ~ ~
!! name |units |definition
!! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!! albday |none |albedo, the fraction of the solar radiation
!! |reflected at the soil surface back into
!! |space
!! etday |mm H2O |actual evapotranspiration occuring on day
!! |in HRU
!! ihru |none |HRU number
!! inflpcp |mm H2O |amount of precipitation that infiltrates
!! |into soil (enters soil)
!! nafert(:) |none |sequence number of auto-fert application
!! |within the year
!! nair(:) |none |sequence number of auto-irrigation
!! |application within the year
!! qdfr |none |fraction of water yield that is surface
!! |runoff
!! qdr(:) |mm H2O |total amount of water entering main channel
!! |for day from HRU
!! sci(:) |none |retention coefficient for CN method based
!! |on plant ET
!! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!! ~ ~ ~ LOCAL DEFINITIONS ~ ~ ~
!! name |units |definition
!! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!! d |
!! gma |kPa/deg C |psychrometric constant
!! ho | |net radiation
!! j |none |HRU number
!! pet_alpha |none |alpha factor in Priestley-Taylor ET
!! |equation
!! tmpk |deg K |average temperature for the day in the HRU
!! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!! ~ ~ ~ SUBROUTINES/FUNCTIONS CALLED ~ ~ ~
!! Intrinsic: Exp, Max
!! SWAT: varinit, albedo, solt, surface, percmain, etpot, etact, fert
!! SWAT: confert, graze, crpmd, nminrl, nitvol, pminrl, gwmod, apply
!! SWAT: washp, decay, pestlch, enrsb, pesty, orgn, psed, nrain, nlch
!! SWAT: solp, subwq, bacteria, urban, pothole, latsed, surfstor
!! SWAT: substor, wetland, hrupond, irrsub, autoirr, watuse, watbal
!! SWAT: sumv, virtual
!! ~ ~ ~ ~ ~ ~ END SPECIFICATIONS ~ ~ ~ ~ ~ ~
use parm
integer :: j
real :: tmpk, d, gma, ho, pet_alpha
ihru = 0
ihru = hru1(inum1)
do iihru = 1, hrutot(inum1)
j = 0
j = ihru
call varinit
if (bio_e(idplt(1,1,j)) <= 1.e-6 .and. nrot(j) > 0) then
!! if the HRU is water compute only pet and et
!! using Priestly-Taylor and a coefficient
tmpk = 0.
d = 0.
gma = 0.
ho = 0.
albday = .08
pet_alpha = 1.28
tmpk = tmpav(j) + 273.15
d = Exp(21.255 - 5304. / tmpk) * 5304. / tmpk ** 2
gma = d / (d + .68)
ho = hru_ra(j) * (1. - albday) / 2.44
pet_day = pet_alpha * ho * gma
etday = .7 * pet_day
else
!! Simulate land covers other than water
!! Check date for auto-irrigation and auto-fertilization
if (iida == iairr(nro(j),nair(j),j)) nair(j) = nair(j) + 1
if (phuacc(j) > phuai(nro(j),nair(j),j)) nair(j) = nair(j) + 1
if (iida == iafer(nro(j),nafert(j),j)) nafert(j) = nafert(j) + 1
if (phuacc(j) > phuaf(nro(j),nafert(j),j)) then
nafert(j) = nafert(j) + 1
endif
!! calculate albedo for day
call albedo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -