⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 impndday.f

📁 水文模型的原始代码
💻 F
字号:
      subroutine impndday

!!    ~ ~ ~ PURPOSE ~ ~ ~
!!    this subroutine writes daily HRU output to the output.wtr file

!!    ~ ~ ~ INCOMING VARIABLES ~ ~ ~
!!    name          |units         |definition
!!    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!!    cpnm(:)       |NA            |four character code to represent crop name
!!    ep_day        |mm H2O        |actual amount of transpiration that occurs on
!!                                 |day in HRU
!!    es_day        |mm H2O        |actual amount of evaporation (from soil) that
!!                                 |occurs on day in HRU
!!    hru_km(:)     |km^2          |area of HRU in square kilometers
!!    hru_ha(:)     |ha            |area of HRU in hectares
!!    hrugis(:)     |none          |GIS code printed to output files(output.hru,.rch)
!!    icr(:)        |none          |sequence number of crop grown within the
!!                                 |current year
!!    iida          |julian date   |current day of simulation
!!    idplt(:,:,:)  |none          |land cover code from crop.dat
!!    ihru          |none          |HRU number
!!    inum1         |none          |subbasin number
!!    ipot(:)       |none          |number of HRU (in subbasin) that is ponding
!!                                 |water--the HRU that the surface runoff from
!!                                 |current HRU drains into. This variable is
!!                                 |used only for rice paddys or closed
!!                                 |depressional areas
!!    nmgt(:)       |none          |management code (for GIS output only)
!!    nro(:)        |none          |sequence number of year in rotation
!!    pnd_chla(:)   |kg chl_a      |amount of chlorophyll-a in pond at end of day
!!    pnd_fr(:)     |none          |fraction of HRU/subbasin area that drains
!!                                 |into ponds
!!    pnd_no3(:)    |kg N          |amount of nitrate originating from surface
!!                                 |runoff in pond at end of day
!!    pnd_no3g(:)   |kg N          |amount of nitrate originating from
!!                                 |groundwater in pond at end of day
!!    pnd_no3s(:)   |kg N          |amount of nitrate originating from lateral
!!                                 |flow in pond at end of day
!!    pnd_orgn(:)   |kg N          |amount of organic N originating from
!!                                 |surface runoff in pond at end of day
!!    pnd_orgp(:)   |kg P          |amount of organic P originating from
!!                                 |surface runoff in pond at end of day
!!    pnd_psed(:)   |kg P          |amount of mineral P attached to sediment
!!                                 |originating from surface runoff in pond at
!!                                 |end of day
!!    pnd_seci(:)   |m             |secchi-disk depth of pond
!!    pnd_solp(:)   |kg P          |amount of soluble P originating from surface
!!                                 |runoff in pond at end of day
!!    pnd_solpg(:)  |kg P          |amount of soluble P originating from
!!                                 |groundwater in pond at end of day
!!    pnd_vol(:)    |m^3 H2O       |volume of water in pond
!!    pndev         |m^3 H2O       |evaporation from pond on day
!!    pndflwi       |m^3 H2O       |volume of water flowing into pond on day
!!    pndflwo       |m^3 H2O       |volume of water flowing out of pond on day
!!    pndpcp        |m^3 H2O       |precipitation on pond during day
!!    pndsedin      |metric tons   |sediment entering pond during day
!!    pndsedo       |metric tons   |sediment leaving pond during day
!!    pndsep        |m^3 H2O       |seepage from pond on day
!!    pot_vol(:)    |m**3 H2O      |current volume of water stored in the
!!                                 |depression/impounded area
!!    potevmm       |mm H2O        |volume of water evaporated from pothole
!!                                 |expressed as depth over HRU
!!    potflwi(:)    |m^3 H2O       |water entering pothole on day
!!    potflwo       |mm H2O        |discharge from pothole expressed as depth
!!                                 |over HRU
!!    potpcpmm      |mm H2O        |precipitation falling on pothole water body
!!                                 |expressed as depth over HRU
!!    potsa(:)      |ha            |surface area of impounded water body
!!    potsedi(:)    |metric tons   |sediment entering pothole on day
!!    potsedo       |metric tons   |sediment leaving pothole on day
!!    potsepmm      |mm H2O        |seepage from pothole expressed as depth over
!!                                 |HRU
!!    qday          |mm H2O        |surface runoff loading to main channel for
!!                                 |day in HRU
!!    tloss         |mm H2O        |amount of water removed from surface runoff
!!                                 |via transmission losses on day in HRU
!!    wet_chla(:)   |kg chla       |amount of chlorophyll-a in wetland at end
!!                                 |of day
!!    wet_fr(:)     |none          |fraction of HRU/subbasin area that drains
!!                                 |into wetlands
!!    wet_no3(:)    |kg N          |amount of nitrate originating from surface
!!                                 |runoff in wetland at end of day
!!    wet_no3g(:)   |kg N          |amount of nitrate originating from
!!                                 |groundwater in wetland at end of day
!!    wet_no3s(:)   |kg N          |amount of nitrate originating from lateral
!!                                 |flow in wetland at end of day
!!    wet_orgn(:)   |kg N          |amount of organic N originating from
!!                                 |surface runoff in wetland at end of day
!!    wet_orgp(:)   |kg P          |amount of organic P originating from
!!                                 |surface runoff in wetland at end of day
!!    wet_psed(:)   |kg P          |amount of mineral P attached to sediment
!!                                 |originating from surface runoff in wetland at
!!                                 |end of day
!!    wet_seci(:)   |m             |secchi-disk depth in wetland at end of day
!!    wet_solp(:)   |kg P          |amount of soluble P originating from surface
!!                                 |runoff in wetland at end of day
!!    wet_solpg(:)  |kg P          |amount of soluble P originating from
!!                                 |groundwater in wetland at end of day
!!    wet_vol(:)    |m^3 H2O       |volume of water in wetlands
!!    wetev         |m^3 H2O       |evaporation from wetland for day
!!    wetflwi       |m^3 H2O       |volume of water flowing in wetland on day
!!    wetflwo       |m^3 H2O       |volume of water flowing out wetland on day
!!    wetpcp        |m^3 H2O       |precipitation on wetland for day
!!    wetsedi       |metric tons   |sediment loading to wetland for day
!!    wetsedo       |metric tons   |sediment loading from wetland for day
!!    wetsep        |m^3 H2O       |seepage from wetland bottom for day
!!    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

!!    ~ ~ ~ LOCAL DEFINITIONS ~ ~ ~
!!    name        |units         |definition
!!    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!!    ano3_ppm    |mg N/L        |nitrate concentration in pond
!!    ano3_ppw    |mg N/L        |nitrate concentration in wetland
!!    chla_ppm    |mg chla/L     |chlorophyll-a concentration in pond
!!    chla_ppw    |mg chla/L     |chlorophyll-a concentration in wetland
!!    cnv         |none          |convert mm H2O to m^3 H2O
!!    iflag       |none          |flag to denote presence of impoundment in
!!                               |HRU
!!    ii          |none          |counter
!!    j           |none          |HRU number
!!    minp_ppm    |mg P/L        |mineral P concentration in pond
!!    minp_ppw    |mg P/L        |mineral P concentration in wetland
!!    orgn_ppm    |mg N/L        |organic N concentration in pond
!!    orgn_ppw    |mg N/L        |organic N concentration in wetland
!!    orgp_ppm    |mg P/L        |organic P concentration in pond
!!    orgp_ppw    |mg P/L        |organic P concentration in wetland
!!    pdvas(:)    |varies        |array to hold HRU output values
!!    sb          |none          |subbasin number
!!    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

!!    ~ ~ ~ ~ ~ ~ END SPECIFICATIONS ~ ~ ~ ~ ~ ~

      use parm

      integer :: j, sb, ii, iflag
      real :: orgn_ppm, orgp_ppm, ano3_ppm, minp_ppm, chla_ppm
      real :: orgn_ppw, orgp_ppw, ano3_ppw, minp_ppw, chla_ppw, cnv
      real, dimension (40) :: pdvas

      j = 0
      sb = 0
      j = ihru
      sb = inum1

      iflag = 0
      if (pnd_fr(j) >= 0.01) iflag = 1
      if (wet_fr(j) >= 0.01) iflag = 1
      if (ipot(j) == j) iflag = 1

      if (iflag == 1) then
      cnv = 0.
      cnv = 10. * hru_ha(j)

!! calculate nutrient concentrations
      orgn_ppm = 0.
      orgp_ppm = 0.
      ano3_ppm = 0.
      minp_ppm = 0.
      chla_ppm = 0.
      orgn_ppw = 0.
      orgp_ppw = 0.
      ano3_ppw = 0.
      minp_ppw = 0.
      chla_ppw = 0.
      if (pnd_vol(j) > 1.) then
        orgn_ppm = 1000. * pnd_orgn(j) / pnd_vol(j)
        orgp_ppm = 1000. * pnd_orgp(j) / pnd_vol(j)
        ano3_ppm = 1000. * (pnd_no3(j) + pnd_no3s(j) + pnd_no3g(j)) /   &
     &                                                        pnd_vol(j)
        minp_ppm = 1000. * (pnd_solp(j) + pnd_psed(j) + pnd_solpg(j)) / &
     &                                                        pnd_vol(j)
        chla_ppm = 1000. * pnd_chla(j) / pnd_vol(j)
      endif
      if (wet_vol(j) > 1.) then
        orgn_ppw = 1000. * wet_orgn(j) / wet_vol(j)
        orgp_ppw = 1000. * wet_orgp(j) / wet_vol(j)
        ano3_ppw = 1000. * (wet_no3(j) + wet_no3s(j) + wet_no3g(j)) /   &
     &                                                        wet_vol(j)
        solp_ppw = 1000. * (wet_solp(j) + wet_solpg(j) + wet_psed(j)) / &
     &                                                        wet_vol(j)
        chla_ppw = 1000. * wet_chla(j) / wet_vol(j)
      end if

      pdvas = 0.

      pdvas(1) = pndpcp / cnv
      pdvas(2) = pndflwi / cnv
      pdvas(3) = pndsedin / hru_ha(j)
      pdvas(4) = pndev / cnv
      pdvas(5) = pndsep / cnv
      pdvas(6) = pndflwo / cnv
      pdvas(7) = pndsedo / hru_ha(j)
      pdvas(8) = pnd_vol(j)
      pdvas(9) = orgn_ppm
      pdvas(10) = ano3_ppm
      pdvas(11) = orgp_ppm
      pdvas(12) = minp_ppm
      pdvas(13) = chla_ppm
      pdvas(14) = pnd_seci(j)
      pdvas(15) = wetpcp / cnv
      pdvas(16) = wetflwi / cnv
      pdvas(17) = wetsedi / hru_ha(j)
      pdvas(18) = wetev / cnv
      pdvas(19) = wetsep / cnv
      pdvas(20) = wetflwo / cnv
      pdvas(21) = wetsedo / hru_ha(j)
      pdvas(22) = wet_vol(j)
      pdvas(23) = orgn_ppw
      pdvas(24) = ano3_ppw
      pdvas(25) = orgp_ppw
      pdvas(26) = solp_ppw
      pdvas(27) = chla_ppw
      pdvas(28) = wet_seci(j)
      pdvas(29) = potpcpmm
      pdvas(30) = potflwi(j) / cnv
      pdvas(31) = potsedi(j) / hru_ha(j)
      pdvas(32) = potevmm
      pdvas(33) = potsepmm
      pdvas(34) = potflwo
      pdvas(35) = potsedo / hru_ha(j)
      pdvas(36) = pot_vol(j)
      pdvas(37) = potsa(j)
      pdvas(38) = qday + tloss
      pdvas(39) = ep_day
      pdvas(40) = es_day

      write (4,1000) cpnm(idplt(nro(j),icr(j),j)), j, hrugis(j), sb,    &
     &               nmgt(j), iida, hru_km(j), (pdvas(ii), ii = 1, 40)
      end if

      return
 1000 format (a4,i4,1x,i8,1x,i4,1x,i4,1x,i4,8f10.3,1e10.4,13f10.3,1e10.4&
     &       ,13f10.3,1e10.4,5f10.3)
      end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -