swr_depstor.f90 Source File


This file depends on

sourcefile~~swr_depstor.f90~~EfferentGraph sourcefile~swr_depstor.f90 swr_depstor.f90 sourcefile~hru_module.f90 hru_module.f90 sourcefile~swr_depstor.f90->sourcefile~hru_module.f90 sourcefile~organic_mineral_mass_module.f90 organic_mineral_mass_module.f90 sourcefile~swr_depstor.f90->sourcefile~organic_mineral_mass_module.f90 sourcefile~soil_module.f90 soil_module.f90 sourcefile~swr_depstor.f90->sourcefile~soil_module.f90 sourcefile~carbon_module.f90 carbon_module.f90 sourcefile~organic_mineral_mass_module.f90->sourcefile~carbon_module.f90 sourcefile~soil_module.f90->sourcefile~carbon_module.f90

Source Code

    subroutine swr_depstor

!!    ~ ~ ~ PURPOSE ~ ~ ~
!!    this subroutine computes maximum surface depressional storage depth based on   
!!    random and oriented roughness and slope steepness

!!    ~ ~ ~ INCOMING VARIABLES ~ ~ ~
!!    name        |units         |definition
!!    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!!    iop(:,:,:)  |julian date   |date of tillage operation
!!    mgt_op      |none          |operation code number
!!    ranrns_hru(:)|mm           |random roughness for a given HRU
!!  sol_ori(:)  |mm            |oriented roughness (ridges) at time of a given tillage operation
!!    usle_ei     |100(ft-tn in)/(acre-hr)|USLE rainfall erosion index
!!    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

!!    ~ ~ ~ OUTGOING VARIABLES ~ ~ ~
!!    name        |units         |definition
!!    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!!  stmaxd(:)   |mm            |maximum surface depressional storage for day in a given HRU                                
!!    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

!!    ~ ~ ~ LOCAL DEFINITIONS ~ ~ ~
!!    name        |units         |definition
!!    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
!!  cumei(:)    |Mj*mm/ha*hr   |cumulative USLE rainfall erosion index since last 
!!                             |tillage operation
!!  cumrt(:)    |mm H2O        |cumulative rainfall since last tillage operation
!!    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

!!    ~ ~ ~ SUBROUTINES/FUNCTIONS CALLED ~ ~ ~
!!    Intrinsic:exp 
!!    SWAT:eiusle

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

      use hru_module, only : hru, cumeira, cumei, cumrt, cumrai, ranrns_hru, stmaxd, itill, ihru,  &
         itill, precip_eff, usle_ei
      use soil_module
      use organic_mineral_mass_module
      
      implicit none

      integer :: j = 0          !none          |HRU number
      real:: df = 0.            !none          |oriented and random roughness decay factor - based
                                !              |on cumulative EI and cumulative precip_eff
      real:: hru_slpp = 0.      !%             |average percent slope steepness
      real:: sol_orgm = 0.      !%             |percent organic matter content in soil material
      !real:: sol_orr            !cm               |oriented roughness (ridges) after a rain event 
      real:: sol_rrr = 0.       !cm            |random roughness after a rain event
      real:: ei = 0.            !Mj*mm/ha*hr   |USLE rainfall erosion index
      real :: xx = 0.           !              |
      
      j = ihru

!! Calculate current cummulative erosivity and rainfall
    ei = usle_ei*18.7633
    if (itill(j) ==1)then
      cumeira(j) = cumeira(j) + ei
      cumei(j) = cumeira(j) - ei
      cumrai(j) = cumrai(j) + precip_eff
      cumrt(j) = cumrai(j) - precip_eff
      end if
!! Calculate the decay factor df based on %clay and %organic matter or %organic carbon
    sol_orgm = soil1(j)%tot(1)%c / 0.58
    xx = (0.943 - 0.07 * soil(j)%phys(1)%clay + 0.0011 *                 &
         soil(j)%phys(1)%clay**2 - 0.67 * sol_orgm + 0.12 * sol_orgm**2)
      if (xx > 1.) then
        df = 1.
      else
        df = exp (xx)
      end if
      

!! Determine the current random and oriented roughness using cumei and cumrt and initial
!! random and oriented roughness values
      
    sol_rrr = 0.1 * ranrns_hru(j)                                      &                                     
        * exp(df*(-0.0009*cumei(j)-0.0007 * cumrt(j)))
    
!   sol_orr = 0.1*sol_ori(j)*                                                
!     & exp(df*(-0.025*(cumei(j)**0.31)-0.0085*(cumrt(j)**0.567)))

!! Compute the current maximum depressional storage using percent slope steepness 
!! and current random and oriented roughness values determined above
    hru_slpp = hru(j)%topo%slope*100
!   if(irk=0) then !irk=0 for random rough, and irk=1, for oriented roughness
    stmaxd(j)= 0.112*sol_rrr+0.031*sol_rrr**2-0.012*sol_rrr*hru_slpp
!   else 
!   stmaxd(j)= 0.112*sol_orr+0.031*sol_orr**2-0.012*sol_orr*hru_slpp 
!   endif
   
    return
        end subroutine swr_depstor