time_conc_init.f90 Source File


This file depends on

sourcefile~~time_conc_init.f90~~EfferentGraph sourcefile~time_conc_init.f90 time_conc_init.f90 sourcefile~basin_module.f90 basin_module.f90 sourcefile~time_conc_init.f90->sourcefile~basin_module.f90 sourcefile~hru_module.f90 hru_module.f90 sourcefile~time_conc_init.f90->sourcefile~hru_module.f90 sourcefile~hydrograph_module.f90 hydrograph_module.f90 sourcefile~time_conc_init.f90->sourcefile~hydrograph_module.f90 sourcefile~ru_module.f90 ru_module.f90 sourcefile~time_conc_init.f90->sourcefile~ru_module.f90 sourcefile~time_module.f90 time_module.f90 sourcefile~time_conc_init.f90->sourcefile~time_module.f90 sourcefile~topography_data_module.f90 topography_data_module.f90 sourcefile~time_conc_init.f90->sourcefile~topography_data_module.f90 sourcefile~hydrograph_module.f90->sourcefile~basin_module.f90 sourcefile~hydrograph_module.f90->sourcefile~time_module.f90

Source Code

      subroutine time_conc_init 
    
      use ru_module
      use hru_module, only : brt, hru, ihru, t_ov, tconc
      use hydrograph_module, only : sp_ob, ru_def, ru_elem, sp_ob1, ob
      use topography_data_module
      use time_module
      use basin_module
      
      implicit none 
      
      integer :: ii = 0            !none         |counter
      integer :: ielem = 0         !none         |counter
      integer :: iob = 0           !             | 
      integer :: ith = 0           !             | 
      integer :: ifld = 0          !             |
      real :: tov = 0.             !             |
      real :: ch_slope = 0.        !             |
      real :: ch_n = 0.            !             |
      real :: ch_l = 0.            !             | 
      real :: t_ch = 0.            !hr           |time for flow entering the farthest upstream 
                                   !             |channel to reach the subbasin outlet

     ! compute weighted Mannings n for each subbasin
      do iru = 1, sp_ob%ru
        ru_n(iru) = 0.
        do ii = 1, ru_def(iru)%num_tot
          ielem = ru_def(iru)%num(ii)
          if (ru_elem(ielem)%obtyp == "hru") then
            ihru = ru_elem(ielem)%obtypno 
            ru_n(iru) = ru_n(iru) + hru(ihru)%luse%ovn * hru(ihru)%km
          else
            ru_n(iru) = 0.1
          end if
        end do
      end do
            
      do iru = 1, sp_ob%ru
        iob = sp_ob1%ru + iru - 1
        ru(iru)%da_km2 = ob(iob)%area_ha / 100.
        ru_n(iru) = ru_n(iru) / ru(iru)%da_km2
        ith = ru(iru)%dbs%toposub_db
        !if (ith > 0 .and. ichan > 0) then                  
        ! compute tc for the subbasin
          tov = .0556 * (topo_db(ith)%slope_len * ru_n(iru)) ** .6 /     &
                                              (topo_db(ith)%slope + .001) ** .3
          ch_slope = .5 * (topo_db(ith)%slope + .001)
          ch_n = ru_n(iru)
          ch_l = ru(iru)%field%length / 1000.
          t_ch = .62 * ch_l * ch_n**.75 / (ru(iru)%da_km2**.125 * ch_slope**.375)
          ru_tc(iru) = tov + t_ch
        !end if                                             
      end do
      
      !!compute time of concentration (sum of overland and channel times)
      do ihru = 1, sp_ob%hru
        ith = hru(ihru)%dbs%topo
        ifld = hru(ihru)%dbs%field
        t_ov(ihru) = .0556 * (hru(ihru)%topo%slope_len *                    &
           hru(ihru)%luse%ovn) ** .6 / (hru(ihru)%topo%slope + .0001) ** .3
        ch_slope = .5 * topo_db(ith)%slope
        ch_n = hru(ihru)%luse%ovn
        !! assume length to width (l/w) ratio of 2 --> A=l*w - A=l*l/2 - l=sqrt(A/2)
        !! assume channel begins at 1/2 of distance
        ch_l = 0.5 * sqrt(hru(ihru)%area_ha / 2.)
        !ch_l = hru(ihru)%field%length / 1000.
        t_ch = .31 * ch_l * ch_n**.75 / (hru(ihru)%km**.125 * (ch_slope + .001)**.375)
        tconc(ihru) = t_ov(ihru) + t_ch
        !! compute fraction of surface runoff that is reaching the main channel
        if (time%step > 1) then
          brt(ihru) = 1.-Exp(-bsn_prm%surlag / (tconc(ihru) /               &
              (time%dtm / 60.)))    !! urban modeling by J.Jeong
        else
          brt(ihru) = 1. - Exp(-bsn_prm%surlag / tconc(ihru))
        endif
      end do
      
     return
     end subroutine time_conc_init