Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
1581d4b
add opt_run=6 for VIC surface runoff
cenlinhe Apr 5, 2021
e834660
add opt_run=7 for Xiananjiang surface runoff
cenlinhe Apr 5, 2021
6e1c0d5
add opt_run=8 for dynamic VIC surface runoff
cenlinhe Apr 5, 2021
01730ad
update namelist readme file for opt_run=6,7,8
cenlinhe Apr 5, 2021
3c82727
update submodule noahmp
cenlinhe Apr 5, 2021
c5d5f0f
add tile drainage scheme
cenlinhe Apr 7, 2021
44efb9f
update noahmp submodule to latest
cenlinhe Apr 28, 2021
c59d476
Update user_build_options.gfortran.serial
cenlinhe May 7, 2021
4c3198c
Merge pull request #12 from cenlinhe/develop_runoff_tiledrg
cenlinhe May 19, 2021
9058945
sync with updated Noah-MP repo
cenlinhe May 19, 2021
3a72188
Update RELEASE_NOTES
cenlinhe May 27, 2021
5ccd2bd
Update README.md
cenlinhe May 27, 2021
9aca6d1
change submodule link from noahmp/master branch to noahmp/develop bra…
cenlinhe Jul 5, 2021
8fc271c
bug fix for vegfra input as fraction in forcing files
cenlinhe Jul 5, 2021
1f04fc2
remove dveg=10 and add dveg=1,3,4 in update_lai flag false condition,…
CharlesZheZhang Jul 16, 2021
fa68173
Sync with updated NoahMP repo
cenlinhe Jul 21, 2021
e3ddb4b
Merge pull request #13 from CharlesZheZhang/develop
cenlinhe Sep 11, 2021
74d1283
Data assimilation input data upload.
xutr-bnu Sep 13, 2021
63ce4b9
Data assimilation code upload.
xutr-bnu Sep 13, 2021
5ded309
Merge pull request #19 from xutr-bnu/develop
cenlinhe Sep 13, 2021
6458162
Update README.md
cenlinhe Sep 15, 2021
c366041
remove description of DVEG=10, which has been replaced by crop_option=1
cenlinhe Oct 4, 2021
098a2d3
fix the submodule link to latest noahmp develop commit
cenlinhe Oct 4, 2021
fbc33f0
sync with the latest NoahMP develop branch
cenlinhe Oct 25, 2021
fd0a51d
Merge branch 'master' into develop
cenlinhe Nov 30, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[submodule "noahmp"]
path = noahmp
url = https://github.com/NCAR/noahmp
branch = develop
14 changes: 14 additions & 0 deletions hrldas/HRLDAS_forcing/run/examples/single_point_MLDAS/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

include ../../../../user_build_options

all:
$(COMPILERF90) $(NETCDFMOD) -o create_point_data.exe $(F90FLAGS) create_point_data.f90 $(NETCDFLIB)

clean:
$(RM) *.exe*
#





17,574 changes: 17,574 additions & 0 deletions hrldas/HRLDAS_forcing/run/examples/single_point_MLDAS/bondville.dat

Large diffs are not rendered by default.

Large diffs are not rendered by default.

131 changes: 101 additions & 30 deletions hrldas/IO_code/module_NoahMP_hrldas_driver.F

Large diffs are not rendered by default.

216 changes: 214 additions & 2 deletions hrldas/IO_code/module_hrldas_netcdf_io.F
Original file line number Diff line number Diff line change
Expand Up @@ -751,13 +751,69 @@ subroutine read_crop_input(wrfinput_flnm, &

end subroutine read_crop_input

!---------------------------------------------------------------------------------------------------------

subroutine read_tile_drain_map(tdinput_flnm, &
xstart, xend, &
ystart, yend, &
td_fraction)

implicit none
character(len=*), intent(in) :: tdinput_flnm
integer, intent(in) :: xstart, xend, ystart, yend
real, dimension(xstart:xend,ystart:yend), intent(out) :: td_fraction
character(len=24) :: name
integer :: ierr,iret
integer :: ncid, varid
integer :: rank

#ifdef _PARALLEL_
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
if (ierr /= MPI_SUCCESS) stop "MPI_COMM_RANK"
#else
rank = 0
#endif


! Open the NetCDF file.
if (rank == 0) write(*,'("tdinput_flnm: ''", A, "''")') trim(tdinput_flnm)
#ifdef _PARALLEL_
ierr = nf90_open_par(tdinput_flnm, NF90_NOWRITE, MPI_COMM_WORLD, MPI_INFO_NULL, ncid)
#else
ierr = nf90_open(tdinput_flnm, NF90_NOWRITE, ncid)
#endif
if (ierr /= 0) then
write(*,'("read_tile_drain_map: Problem opening tdinput file: ''", A, "''")') trim(tdinput_flnm)
#ifdef _PARALLEL_
call mpi_finalize(ierr)
if (ierr /= 0) write(*, '("Problem with MPI_finalize.")')
#endif
stop
endif

! Get Tile Drain Fraction
name = "TD_FRACTION"
iret = nf90_inq_varid(ncid, name, varid)
if (iret == 0) then
ierr = nf90_get_var(ncid, varid, td_fraction, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
else
write(*,*) "MODULE_HRLDAS_NETCDF_IO: Problem finding variable '"//trim(name)//"' in NetCDF file. Using default values."
endif

! Close the NetCDF file
ierr = nf90_close(ncid)
if (ierr /= 0) stop "MODULE_NOAHLSM_HRLDAS_INPUT: read_tile_drain_map: NF90_CLOSE"

end subroutine read_tile_drain_map

!---------------------------------------------------------------------------------------------------------

subroutine read_3d_soil(spatial_filename,xstart, xend,ystart, yend, &
nsoil,bexp_3d,smcdry_3d,smcwlt_3d,smcref_3d,smcmax_3d, &
dksat_3d,dwsat_3d,psisat_3d,quartz_3d,refdk_2d,refkdt_2d,&
irr_frac_2d,irr_har_2d,irr_lai_2d,irr_mad_2d,filoss_2d,sprir_rate_2d,&
micir_rate_2d,firtfac_2d,ir_rain_2d)
micir_rate_2d,firtfac_2d,ir_rain_2d,bvic_2d,axaj_2d,bxaj_2d,xxaj_2d,&
bdvic_2d,gdvic_2d,bbvic_2d,klatfac,tdsmcfac,tddc,tddcoef,tdddrain,tdradi,tdspac)

implicit none
character(len=*), intent(in) :: spatial_filename
Expand All @@ -783,7 +839,21 @@ subroutine read_3d_soil(spatial_filename,xstart, xend,ystart, yend, &
real, dimension(xstart:xend,ystart:yend), intent(out) :: micir_rate_2d
real, dimension(xstart:xend,ystart:yend), intent(out) :: firtfac_2d
real, dimension(xstart:xend,ystart:yend), intent(out) :: ir_rain_2d

real, dimension(xstart:xend,ystart:yend), intent(out) :: bvic_2d
real, dimension(xstart:xend,ystart:yend), intent(out) :: axaj_2d
real, dimension(xstart:xend,ystart:yend), intent(out) :: bxaj_2d
real, dimension(xstart:xend,ystart:yend), intent(out) :: xxaj_2d
real, dimension(xstart:xend,ystart:yend), intent(out) :: bdvic_2d
real, dimension(xstart:xend,ystart:yend), intent(out) :: gdvic_2d
real, dimension(xstart:xend,ystart:yend), intent(out) :: bbvic_2d
real, dimension(xstart:xend,ystart:yend), intent(out) :: klatfac
real, dimension(xstart:xend,ystart:yend), intent(out) :: tdsmcfac
real, dimension(xstart:xend,ystart:yend), intent(out) :: tddc
real, dimension(xstart:xend,ystart:yend), intent(out) :: tddcoef
real, dimension(xstart:xend,ystart:yend), intent(out) :: tdddrain
real, dimension(xstart:xend,ystart:yend), intent(out) :: tdradi
real, dimension(xstart:xend,ystart:yend), intent(out) :: tdspac

character(len=24) :: name
character(len=256) :: units
integer :: ierr,iret, varid,isoil
Expand Down Expand Up @@ -1033,6 +1103,148 @@ subroutine read_3d_soil(spatial_filename,xstart, xend,ystart, yend, &

iret = nf90_get_var(ncid, varid, ir_rain_2d, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))

! additional runoff opt_run=6~8
name = "BVIC"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, bvic_2d, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "AXAJ"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, axaj_2d, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "BXAJ"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, bxaj_2d, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "XXAJ"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, xxaj_2d, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "BDVIC"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, bdvic_2d, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "GDVIC"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, gdvic_2d, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "BBVIC"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, bbvic_2d, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))

! tile drainage
name = "KLAT_FAC"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, klatfac, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "TDSMC_FAC"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, tdsmcfac, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "TD_DC"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, tddc, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "TD_DCOEF"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, tddcoef, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "TD_DDRAIN"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, tdddrain, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "TD_RADI"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, tdradi, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))
!
name = "TD_SPAC"
iret = nf90_inq_varid(ncid, trim(name), varid)
if (iret /= 0) then
print*, 'ncid = ', ncid
write(*,*) "FATAL ERROR: In read_3d_soil(): Problem finding variable '"//trim(name)//"' in NetCDF file: " // trim(spatial_filename)
stop
endif

iret = nf90_get_var(ncid, varid, tdspac, start=(/xstart,ystart/), count=(/xend-xstart+1,yend-ystart+1/))


! Close the NetCDF file
ierr = nf90_close(ncid)
Expand Down
14 changes: 13 additions & 1 deletion hrldas/run/README.namelist
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,6 @@
! 7 -> off (use input LAI; use FVEG = SHDFAC from input)
! 8 -> off (use input LAI; calculate FVEG)
! 9 -> off (use input LAI; use maximum vegetation fraction)
! 10 -> crop model on (use maximum vegetation fraction)

CANOPY_STOMATAL_RESISTANCE_OPTION = 1 ! options for canopy stomatal resistance [default = none]

Expand All @@ -131,6 +130,14 @@
! **3 -> original surface and subsurface runoff (free drainage)
! 4 -> BATS surface and subsurface runoff (free drainage)
! 5 -> Miguez-Macho&Fan groundwater scheme (Miguez-Macho et al. 2007 JGR; Fan et al. 2007 JGR)
! 6 -> Variable Infiltration Capacity Model surface runoff scheme (Wood et al., 1992, JGR)
! 7 -> Xiananjiang Infiltration and surface runoff scheme ((Jayawardena and Zhou, 2000)
! 8 -> Dynamic VIC surface runoff scheme (Liang and Xie, 2001)

DVIC_INFILTRATION_OPTION = 1 ! options for infiltration in dynamic VIC runoff scheme (only works when RUNOFF_OPTION=8, default=1)
! **1 -> Philip scheme
! 2 -> Green-Ampt scheme
! 3 -> Smith-Parlange scheme

SURFACE_DRAG_OPTION = 1 ! options for surface layer drag coeff [default = none]

Expand Down Expand Up @@ -225,5 +232,10 @@
2 -> micro/drip irrigation
3 -> surface flooding

TILE_DRAINAGE_OPTION = 0, ! options for tile drainage [default = 0] (currently only tested & works with opt_run=3)
geogrid must have been run with GEOGRID.TBL.ARW.noahmp, use with caution
0 -> No tile drainage
1 -> Simple drainage
2 -> Hooghoudt's equation based tile drainage

/
Loading