ch_temp.f90 Source File


This file depends on

sourcefile~~ch_temp.f90~~EfferentGraph sourcefile~ch_temp.f90 ch_temp.f90 sourcefile~basin_module.f90 basin_module.f90 sourcefile~ch_temp.f90->sourcefile~basin_module.f90 sourcefile~channel_data_module.f90 channel_data_module.f90 sourcefile~ch_temp.f90->sourcefile~channel_data_module.f90 sourcefile~climate_module.f90 climate_module.f90 sourcefile~ch_temp.f90->sourcefile~climate_module.f90 sourcefile~hydrograph_module.f90 hydrograph_module.f90 sourcefile~ch_temp.f90->sourcefile~hydrograph_module.f90 sourcefile~input_file_module.f90 input_file_module.f90 sourcefile~ch_temp.f90->sourcefile~input_file_module.f90 sourcefile~maximum_data_module.f90 maximum_data_module.f90 sourcefile~ch_temp.f90->sourcefile~maximum_data_module.f90 sourcefile~sd_channel_module.f90 sd_channel_module.f90 sourcefile~ch_temp.f90->sourcefile~sd_channel_module.f90 sourcefile~hydrograph_module.f90->sourcefile~basin_module.f90 sourcefile~time_module.f90 time_module.f90 sourcefile~hydrograph_module.f90->sourcefile~time_module.f90

Source Code

      subroutine ch_temp1
      
      use basin_module
      use input_file_module
      use maximum_data_module
      use channel_data_module
      use sd_channel_module
      use hydrograph_module
      use climate_module

      implicit none
      
      integer :: iob = 0            !none       |channel object number
      !integer :: iwst               !none       |weather station number
      real :: tdx = 0.              !           |
      real :: t_md = 0.
      real :: ke_beta = 0.
      real :: f_wind = 0.
      real :: k_e = 0.
      real :: ssff = 0.
      real :: h_sr = 0.
      real :: e_s = 0.
      real :: e_a = 0.
      real :: cloud = 0.
      real :: e_atm = 0.
      real :: h_atm = 0.
      real :: numerator = 0.
      real :: t_equil = 0.
      real :: k_factor = 0.
      real :: t_heat_exch = 0.
      
      !! Stream Temperature from heat exchange
      
      !! set weather station
      iob = sp_ob1%chandeg + ich - 1
      iwst = ob(iob)%wst
      w = wst(iwst)%weat

      tdx = w_temp%hex_coef1 * w%tave + w_temp%hex_coef2
      tdx = amin1 (tdx, w%tave)                         !! It should be contratined to tdx < t_air
      t_md = (ht1%temp + tdx) / 2.
      ke_beta = 0.35 + 0.015 * t_md + 0.0012 * (t_md**2)
      f_wind = 9.2 + 0.46 * (w%windsp**2)              !! These coefficients might vary. See Figure 2.4.1 in Edinger et al. 1974
      k_e = 4.48 + 0.05 * ht1%temp + (ke_beta + 0.47) * f_wind

      !! Solar radiation (Short wave radiation). The shade-factor is included in the Solar radiation calculation
      ssff = 0.5                                        !! Add code for shade factor ***jga***
      h_sr = 0.97 * w%solrad * (1. - ssff)              !! Get the Solar radiation (Short wave radiation)
    
      !! Atmospheric radiation (Long wave radiation)
      e_s = 6.1275 * Exp(17.62 * w%tave / (237.3 + w%tave))                 !! Get the Saturated vapor pressure 
      e_a = e_s * w%rhum                                                    !! Get the vapor pressure
      cloud = 1.                                                            !! need to set ***jga***
      e_atm = 0.74 + 0.0065 * e_a * (1. + 0.17 * cloud**2)                  !! Get the emissivity of the atmosphere 
      h_atm = 0.96 * e_atm * 5.67e-8 * (w%tave + 273.15)**4                 !! Atmospheric radiation (Long wave radiation)

      !! Equilibrium temperature 
      numerator = h_atm - 305.5 - 4.48 * tdx
      t_equil = tdx + h_sr / k_e + numerator / k_e                          !!E: Reduced T-equilibrium approach

      !! The temperature gain/loss to/from the stream due to heat transfer
      !! "rttime" is the travel time given by the SWAT model
      !! "ch_l2" is the stream length given by SWAT that can be used as a surrogate for travel time
      k_factor = 1000. * 4186. * rcurv%dep        !!E: Density*Spec_heat_water*water_depth / time_convers
      t_heat_exch = k_e * (t_equil - ht1%temp) / k_factor * rcurv%ttime

      !! Final stream temperature
      ob(iob)%hd(1)%temp = ht1%temp + t_heat_exch
    
      return    
      end subroutine ch_temp1