Skip to content

Commit

Permalink
add liquid fraction as forcing option
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael authored and scrasmussen committed Mar 22, 2024
1 parent ecec5e9 commit 060de6b
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 8 deletions.
12 changes: 8 additions & 4 deletions src/Land_models/NoahMP/IO_code/module_NoahMP_hrldas_driver.F
Original file line number Diff line number Diff line change
Expand Up @@ -1727,8 +1727,10 @@ subroutine land_driver_exe(itime, state)
if(forc_typ .eq. 0) then
CALL READFORC_HRLDAS(INFLNM_TEMPLATE, noah_lsm%FORCING_TIMESTEP, OLDDATE, &
XSTART, XEND, YSTART, YEND, &
forcing_name_T,forcing_name_Q,forcing_name_U,forcing_name_V,forcing_name_P, &
forcing_name_LW,forcing_name_SW,forcing_name_PR,forcing_name_SN, &
noah_lsm%forcing_name_T ,noah_lsm%forcing_name_Q ,noah_lsm%forcing_name_U , &
noah_lsm%forcing_name_V ,noah_lsm%forcing_name_P ,noah_lsm%forcing_name_LW, &
noah_lsm%forcing_name_SW,noah_lsm%forcing_name_PR,noah_lsm%forcing_name_SN, &
noah_lsm%forcing_name_LF, &
T_PHY(:,1,:),QV_CURR(:,1,:),U_PHY(:,1,:),V_PHY(:,1,:), &
P8W(:,1,:), GLW ,SWDOWN ,RAINBL_tmp, SNOWBL, VEGFRA, update_veg, LAI, update_lai)
else
Expand All @@ -1748,8 +1750,10 @@ subroutine land_driver_exe(itime, state)
#else
CALL READFORC_HRLDAS(INFLNM_TEMPLATE, noah_lsm%FORCING_TIMESTEP, OLDDATE, &
XSTART, XEND, YSTART, YEND, &
forcing_name_T,forcing_name_Q,forcing_name_U,forcing_name_V,forcing_name_P, &
forcing_name_LW,forcing_name_SW,forcing_name_PR,forcing_name_SN, &
noah_lsm%forcing_name_T ,noah_lsm%forcing_name_Q ,noah_lsm%forcing_name_U , &
noah_lsm%forcing_name_V ,noah_lsm%forcing_name_P ,noah_lsm%forcing_name_LW, &
noah_lsm%forcing_name_SW,noah_lsm%forcing_name_PR,noah_lsm%forcing_name_SN, &
noah_lsm%forcing_name_LF, &
T_PHY(:,1,:),QV_CURR(:,1,:),U_PHY(:,1,:),V_PHY(:,1,:), &
P8W(:,1,:), GLW ,SWDOWN ,RAINBL_tmp, SNOWBL, VEGFRA, update_veg, LAI, update_lai)
#endif
Expand Down
21 changes: 17 additions & 4 deletions src/Land_models/NoahMP/IO_code/module_hrldas_netcdf_io.F
Original file line number Diff line number Diff line change
Expand Up @@ -1875,7 +1875,7 @@ end subroutine READVEG_HRLDAS
subroutine READFORC_HRLDAS(flnm_template, forcing_timestep, target_date, xstart, xend, ystart, yend, &
forcing_name_T,forcing_name_Q,forcing_name_U,forcing_name_V,forcing_name_P, &
forcing_name_LW,forcing_name_SW,forcing_name_PR,forcing_name_SN, &
forcing_name_LW,forcing_name_SW,forcing_name_PR,forcing_name_SN, forcing_name_LF,&
t,q,u,v,p,lw,sw,pcp,snow,vegfra,update_veg,lai,update_lai)
use kwm_string_utilities
implicit none
Expand All @@ -1894,6 +1894,7 @@ subroutine READFORC_HRLDAS(flnm_template, forcing_timestep, target_date, xstart,
character(len=256), intent(in) :: forcing_name_SW
character(len=256), intent(in) :: forcing_name_PR
character(len=256), intent(in) :: forcing_name_SN
character(len=256), intent(in) :: forcing_name_LF
real, dimension(xstart:xend,ystart:yend), intent(out) :: t
real, dimension(xstart:xend,ystart:yend), intent(out) :: q
Expand All @@ -1908,6 +1909,9 @@ subroutine READFORC_HRLDAS(flnm_template, forcing_timestep, target_date, xstart,
real, dimension(xstart:xend,ystart:yend), intent(inout) :: vegfra
logical, intent(in) :: update_veg, update_lai ! Barlage v3.7: for veg read control
real, dimension(xstart:xend,ystart:yend) :: liqfrac
logical :: snow_read = .false.
character(len=256) :: flnm
character(len=256) :: units
character(len=256) :: nextflnm
Expand All @@ -1916,9 +1920,9 @@ subroutine READFORC_HRLDAS(flnm_template, forcing_timestep, target_date, xstart,
integer :: rank
type(inputstruct) :: lastread = inputstruct("0000-00-00_00:00:00", &
null(), null(), null(), null(), null(), null(), null(), null(), null(), null(), null() )
null(), null(), null(), null(), null(), null(), null(), null(), null(), null(), null())
type(inputstruct) :: nextread= inputstruct("0000-00-00_00:00:00", &
null(), null(), null(), null(), null(), null(), null(), null(), null(), null(), null() )
null(), null(), null(), null(), null(), null(), null(), null(), null(), null(), null())
!KWM print*, 'target_date = ', target_date
!KWM print*, 'lastread%read_date = ', lastread%read_date
Expand Down Expand Up @@ -2009,7 +2013,16 @@ subroutine READFORC_HRLDAS(flnm_template, forcing_timestep, target_date, xstart,
call get_2d_netcdf(trim(forcing_name_PR), ncid, nextread%pcp, units, xstart, xend, ystart, yend, FATAL, ierr)
nextread%snow = 0.0 ! Assume zero in case not present
call get_2d_netcdf(trim(forcing_name_SN), ncid, nextread%snow, units, xstart, xend, ystart, yend, NOT_FATAL, ierr)
if(forcing_name_SN /= "") then
call get_2d_netcdf(trim(forcing_name_SN), ncid, nextread%snow, units, xstart, xend, ystart, yend, NOT_FATAL, ierr)
if(ierr == 0) snow_read = .true.
end if
if(forcing_name_LF /= "" .and. .not. snow_read) then ! snow was not read in
liqfrac = 1.0 ! Assume all liquid in case not present
call get_2d_netcdf(trim(forcing_name_LF), ncid, liqfrac, units, xstart, xend, ystart, yend, NOT_FATAL, ierr)
if (ierr == 0) nextread%snow = (1.0 - liqfrac ) * nextread%pcp
end if
if(update_veg) then ! Barlage v3.7: update only if dveg option is appropriate
Expand Down
34 changes: 34 additions & 0 deletions src/OrchestratorLayer/config.f90
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,17 @@ module config_base
integer :: glacier_option
integer :: surface_resistance_option

character(len=256) :: forcing_name_T
character(len=256) :: forcing_name_Q
character(len=256) :: forcing_name_U
character(len=256) :: forcing_name_V
character(len=256) :: forcing_name_P
character(len=256) :: forcing_name_LW
character(len=256) :: forcing_name_SW
character(len=256) :: forcing_name_PR
character(len=256) :: forcing_name_SN
character(len=256) :: forcing_name_LF

integer :: soil_data_option = 1
integer :: pedotransfer_option = 0
integer :: crop_option = 0
Expand Down Expand Up @@ -889,6 +900,16 @@ subroutine init_noah_lsm_and_wrf_hydro()
character(len=256) :: restart_filename_requested = " "
integer :: restart_frequency_hours
integer :: output_timestep
character(len=256) :: forcing_name_T = "T2D"
character(len=256) :: forcing_name_Q = "Q2D"
character(len=256) :: forcing_name_U = "U2D"
character(len=256) :: forcing_name_V = "V2D"
character(len=256) :: forcing_name_P = "PSFC"
character(len=256) :: forcing_name_LW = "LWDOWN"
character(len=256) :: forcing_name_SW = "SWDOWN"
character(len=256) :: forcing_name_PR = "RAINRATE"
character(len=256) :: forcing_name_SN = ""
character(len=256) :: forcing_name_LF = ""
integer :: dynamic_veg_option
integer :: canopy_stomatal_resistance_option
integer :: btr_option
Expand Down Expand Up @@ -933,6 +954,9 @@ subroutine init_noah_lsm_and_wrf_hydro()
outdir, &
restart_filename_requested, restart_frequency_hours, output_timestep, &

forcing_name_T,forcing_name_Q,forcing_name_U,forcing_name_V,forcing_name_P, &
forcing_name_LW,forcing_name_SW,forcing_name_PR,forcing_name_SN,forcing_name_LF, &

dynamic_veg_option, canopy_stomatal_resistance_option, &
btr_option, runoff_option, surface_drag_option, supercooled_water_option, &
frozen_soil_option, radiative_transfer_option, snow_albedo_option, &
Expand Down Expand Up @@ -1031,6 +1055,16 @@ subroutine init_noah_lsm_and_wrf_hydro()
noah_lsm%restart_filename_requested = restart_filename_requested
noah_lsm%restart_frequency_hours = restart_frequency_hours
noah_lsm%output_timestep = output_timestep
noah_lsm%forcing_name_T = forcing_name_T
noah_lsm%forcing_name_Q = forcing_name_Q
noah_lsm%forcing_name_U = forcing_name_U
noah_lsm%forcing_name_V = forcing_name_V
noah_lsm%forcing_name_P = forcing_name_P
noah_lsm%forcing_name_LW = forcing_name_LW
noah_lsm%forcing_name_SW = forcing_name_SW
noah_lsm%forcing_name_PR = forcing_name_PR
noah_lsm%forcing_name_SN = forcing_name_SN
noah_lsm%forcing_name_LF = forcing_name_LF
noah_lsm%dynamic_veg_option = dynamic_veg_option
noah_lsm%canopy_stomatal_resistance_option = canopy_stomatal_resistance_option
noah_lsm%btr_option = btr_option
Expand Down

0 comments on commit 060de6b

Please sign in to comment.