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

📄 hydrology_lake.f90

📁 CCSM Research Tools: Community Atmosphere Model (CAM)
💻 F90
字号:
#include <misc.h>#include <preproc.h>subroutine Hydrology_Lake (clm) !-----------------------------------------------------------------------!!  CLMCLMCLMCLMCLMCLMCLMCLMCLMCL  A community developed and sponsored, freely!  L                           M  available land surface process model.!  M --COMMUNITY LAND MODEL--  C!  C                           L!  LMCLMCLMCLMCLMCLMCLMCLMCLMCLM!!-----------------------------------------------------------------------! Purpose:! Calculates lake hydrology variables!! Method:!! Author:! Gordon Bonan! 15 September 1999: Yongjiu Dai; Initial code! 15 December 1999:  Paul Houser and Jon Radakovich; F90 Revision ! April 2002: Vertenstein/Oleson/Levis; Final form!!-----------------------------------------------------------------------! $Id: Hydrology_Lake.F90,v 1.3.6.2 2002/04/27 15:38:38 erik Exp $!-----------------------------------------------------------------------  use precision  use clmtype  use clm_varpar, only : nlevsoi  use clm_varcon, only : hfus, tfrz, spval  implicit none!----Arguments----------------------------------------------------------  type (clm1d), intent(inout) :: clm      ! CLM 1-D Module!----Local Variables----------------------------------------------------  integer j               ! do loop index  real(r8) qflx_evap_grnd ! ground surface evaporation rate [mm/s]  real(r8) qflx_dew_grnd  ! ground surface dew formation [mm/s] [+]  real(r8) qflx_sub_snow  ! sublimation rate from snow pack [mm/s] [+]  real(r8) qflx_dew_snow  ! surface dew added to snow pack [mm/s] [+]!----End Variable List--------------------------------------------------!! [1] Snow on the lake ice !  qflx_evap_grnd = 0.  qflx_sub_snow = 0.  qflx_dew_snow = 0.  qflx_dew_grnd = 0.  if (clm%qflx_evap_soi >= 0.) then!! Sublimation: do not allow for more sublimation than there is snow! after melt.  Remaining surface evaporation used for infiltration.!     qflx_sub_snow = min( clm%qflx_evap_soi, clm%h2osno/clm%dtime-clm%qmelt )     qflx_evap_grnd = clm%qflx_evap_soi - qflx_sub_snow  else     if (clm%t_grnd < tfrz-0.1) then        qflx_dew_snow = abs(clm%qflx_evap_soi)     else        qflx_dew_grnd = abs(clm%qflx_evap_soi)     endif  endif!! Update snow pack!  if (clm%do_capsnow) then      clm%h2osno = clm%h2osno - (clm%qmelt + qflx_sub_snow)*clm%dtime  else     clm%h2osno = clm%h2osno + (clm%forc_snow-clm%qmelt-qflx_sub_snow+qflx_dew_snow)*clm%dtime  endif  clm%h2osno = max( clm%h2osno, 0._r8 )!! No snow if lake unfrozen!  if (clm%t_grnd > tfrz) clm%h2osno = 0.!! Snow depth!  clm%snowdp = clm%h2osno/250.    !Assume a constant snow bulk density = 250.!! Determine ending water balance!    clm%endwb = clm%h2osno!! [2] Set other clm values for lake points!!! The following are needed for global average on history tape. ! Note: time invariant variables set in initialization phase:! z, dz, snl, h2osoi_liq, and h2osoi_ice !  clm%eflx_snomelt    = clm%qmelt*hfus  clm%h2ocan          = 0.    clm%qflx_evap_veg   = 0.  clm%qflx_tran_veg   = 0.  clm%qflx_infl       = 0.   clm%qflx_snomelt    = clm%qmelt  clm%qflx_surf       = 0.  clm%qflx_drain      = 0.  clm%qflx_qrgwl      = clm%forc_rain + clm%forc_snow - clm%qflx_evap_tot - &                        (clm%endwb-clm%begwb)/clm%dtime  clm%qflx_prec_grnd  = clm%forc_rain + clm%forc_snow  clm%qflx_prec_intr  = 0.!! Components that are not displayed over lake on history tape and ! therefore need to be set to spval here!  clm%btran         = spval  clm%rootr(:)      = spval  clm%snowice       = spval  clm%snowliq       = spval  clm%h2osoi_vol(:) = spval  clm%h2osoi_ice(:) = spval  clm%h2osoi_liq(:) = spval   end subroutine Hydrology_Lake

⌨️ 快捷键说明

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