Skip to content

Commit

Permalink
Merge pull request NASA-LIS#966 from sujayvkumar/feature/h2offline
Browse files Browse the repository at this point in the history
Adds the H2 offline capability
  • Loading branch information
bmcandr committed Jan 13, 2022
2 parents a2a8e27 + b578b70 commit 80dfe35
Show file tree
Hide file tree
Showing 9 changed files with 137 additions and 200 deletions.
7 changes: 7 additions & 0 deletions docs/LIS_users_guide/intro.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,13 @@ This document consists of 12 sections, described as follows:
//* PILDAS
//* NOAA OHD RDHM 3.5.6 forcing data (RDHM 3.5.6)
//* Rhone AGG
//. Disables the following external runoff data sources
//* GLDAS1 runoff data
//* GLDAS2 runoff data
//* NLDAS2 runoff data
//* MERRA2 runoff data
//* ERA interim land runoff data
//* GWB MIP runoff data

==== LIS 7.3

Expand Down
2 changes: 1 addition & 1 deletion docs/LIS_users_guide/user_cfg_table.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@
| Component name | Default state

| NLDAS router | On
| HYMAP router | On
| HYMAP router | Off
| HYMAP2 router | On
|====

Expand Down
18 changes: 9 additions & 9 deletions lis/configs/lis.config.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -973,17 +973,17 @@ offline routing.
Acceptable values are:

|====
|Value | Description
|Value | Description

|"`LIS runoff output`" | Use LIS outputs
|"`GLDAS1 runoff data`" | Use the GLDAS1 outputs
|"`GLDAS2 runoff data`" | Use the GLDAS2 outputs
|"`NLDAS2 runoff data`" | Use the NLDAS2 outputs
|"`MERRA2 runoff data`" | Use the MERR2 outputs
|"`ERA interim land runoff data`" | Use ERA-Interim-Land outputs
|"`GWB MIP runoff data`" | Use the Global Water Budget (GWB) model intercomparison project outputs
|"`LIS runoff output`" | Use LIS outputs
|[.line-through]#"`GLDAS1 runoff data`"# [red]#Disabled# | [.line-through]#Use the GLDAS1 outputs#
|[.line-through]#"`GLDAS2 runoff data`"# [red]#Disabled# | [.line-through]#Use the GLDAS2 outputs#
|[.line-through]#"`NLDAS2 runoff data`"# [red]#Disabled# | [.line-through]#Use the NLDAS2 outputs#
|[.line-through]#"`MERRA2 runoff data`"# [red]#Disabled# | [.line-through]#Use the MERR2 outputs#
|[.line-through]#"`ERA interim land runoff data`"# [red]#Disabled# | [.line-through]#Use ERA-Interim-Land outputs#
|[.line-through]#"`GWB MIP runoff data`"# [red]#Disabled# | [.line-through]#Use the Global Water Budget (GWB) model intercomparison project outputs#
|====

// See pull request #966 for context about the disabled external runoff data sources listed above.

`Number of application models:` specifies the number
of application models to run.
Expand Down
14 changes: 9 additions & 5 deletions lis/core/LIS_routingMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -290,17 +290,21 @@ subroutine LIS_routing_run(n)
!EOP
integer, intent(in) :: n

if(LIS_rc%routingmodel.ne."none") then
call lsmroutinggetrunoff(trim(LIS_rc%lsm)//"+"//&
trim(LIS_rc%routingmodel)//char(0),n)
if(LIS_rc%routingmodel.ne."none") then
if(LIS_rc%lsm.ne."none") then
call lsmroutinggetrunoff(trim(LIS_rc%lsm)//"+"//&
trim(LIS_rc%routingmodel)//char(0),n)
endif
if(LIS_rc%glaciermodel.ne."none") then
call glacierroutinggetrunoff(trim(LIS_rc%glaciermodel)//"+"//&
trim(LIS_rc%routingmodel)//char(0),n)
endif

call routingrun(trim(LIS_rc%routingmodel)//char(0),n)
call lsmroutinggetsws(trim(LIS_rc%lsm)//"+"//&
trim(LIS_rc%routingmodel)//char(0),n)
if(LIS_rc%lsm.ne."none") then
call lsmroutinggetsws(trim(LIS_rc%lsm)//"+"//&
trim(LIS_rc%routingmodel)//char(0),n)
endif
endif

end subroutine LIS_routing_run
Expand Down
5 changes: 3 additions & 2 deletions lis/make/default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,7 @@ macro: ROUTE_NLDAS_ROUTER
path: routing/NLDAS_router

[HYMAP router]
enabled: True
enabled: False
macro: ROUTE_HYMAP_ROUTER
path: routing/HYMAP_router,
routing/HYMAP_router/runoffdata/LISoutput,
Expand All @@ -587,7 +587,8 @@ path: routing/HYMAP_router,
[HYMAP2 router]
enabled: True
macro: ROUTE_HYMAP2_ROUTER
path: routing/HYMAP2_router
path: routing/HYMAP2_router,
routing/HYMAP2_router/runoffdata/LISoutput
dependent_comps: virtual_da
virtual_da path: routing/HYMAP2_router/da_WL

Expand Down
74 changes: 37 additions & 37 deletions lis/plugins/LIS_runoffdata_pluginMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -39,58 +39,58 @@ module LIS_runoffdata_pluginMod
subroutine LIS_runoffdata_plugin
!EOP

#if ( defined ROUTE_HYMAP_ROUTER )
#if ( defined ROUTE_HYMAP2_ROUTER )
use LIS_pluginIndices
use LISrunoffdataMod
use GLDAS1runoffdataMod
use GLDAS2runoffdataMod
use NLDAS2runoffdataMod
use MERRA2runoffdataMod
use ERAILandrunoffdataMod
use GWBMIPrunoffdataMod
! use GLDAS1runoffdataMod
! use GLDAS2runoffdataMod
! use NLDAS2runoffdataMod
! use MERRA2runoffdataMod
! use ERAILandrunoffdataMod
! use GWBMIPrunoffdataMod

external readLISrunoffdata
external readGLDAS1runoffdata
external readGLDAS2runoffdata
external readNLDAS2runoffdata
external readMERRA2runoffdata
external readERAILandrunoffdata
external readGWBMIPrunoffdata
! external readGLDAS1runoffdata
! external readGLDAS2runoffdata
! external readNLDAS2runoffdata
! external readMERRA2runoffdata
! external readERAILandrunoffdata
! external readGWBMIPrunoffdata

call registerinitrunoffdata(trim(LIS_LISrunoffdataId)//char(0), &
LISrunoffdata_init)
call registerreadrunoffdata(trim(LIS_LISrunoffdataId)//char(0), &
readLISrunoffdata)

call registerinitrunoffdata(trim(LIS_GLDAS1runoffdataId)//char(0), &
GLDAS1runoffdata_init)
call registerreadrunoffdata(trim(LIS_GLDAS1runoffdataId)//char(0), &
readGLDAS1runoffdata)
! call registerinitrunoffdata(trim(LIS_GLDAS1runoffdataId)//char(0), &
! GLDAS1runoffdata_init)
! call registerreadrunoffdata(trim(LIS_GLDAS1runoffdataId)//char(0), &
! readGLDAS1runoffdata)

call registerinitrunoffdata(trim(LIS_GLDAS2runoffdataId)//char(0), &
GLDAS2runoffdata_init)
call registerreadrunoffdata(trim(LIS_GLDAS2runoffdataId)//char(0), &
readGLDAS2runoffdata)
! call registerinitrunoffdata(trim(LIS_GLDAS2runoffdataId)//char(0), &
! GLDAS2runoffdata_init)
! call registerreadrunoffdata(trim(LIS_GLDAS2runoffdataId)//char(0), &
! readGLDAS2runoffdata)

call registerinitrunoffdata(trim(LIS_NLDAS2runoffdataId)//char(0), &
NLDAS2runoffdata_init)
call registerreadrunoffdata(trim(LIS_NLDAS2runoffdataId)//char(0), &
readNLDAS2runoffdata)
! call registerinitrunoffdata(trim(LIS_NLDAS2runoffdataId)//char(0), &
! NLDAS2runoffdata_init)
! call registerreadrunoffdata(trim(LIS_NLDAS2runoffdataId)//char(0), &
! readNLDAS2runoffdata)

call registerinitrunoffdata(trim(LIS_MERRA2runoffdataId)//char(0), &
MERRA2runoffdata_init)
call registerreadrunoffdata(trim(LIS_MERRA2runoffdataId)//char(0), &
readMERRA2runoffdata)
! call registerinitrunoffdata(trim(LIS_MERRA2runoffdataId)//char(0), &
! MERRA2runoffdata_init)
! call registerreadrunoffdata(trim(LIS_MERRA2runoffdataId)//char(0), &
! readMERRA2runoffdata)

call registerinitrunoffdata(trim(LIS_ERAIlandrunoffdataId)//char(0), &
ERAILandrunoffdata_init)
call registerreadrunoffdata(trim(LIS_ERAIlandrunoffdataId)//char(0), &
readERAILandrunoffdata)
! call registerinitrunoffdata(trim(LIS_ERAIlandrunoffdataId)//char(0), &
! ERAILandrunoffdata_init)
! call registerreadrunoffdata(trim(LIS_ERAIlandrunoffdataId)//char(0), &
! readERAILandrunoffdata)

call registerinitrunoffdata(trim(LIS_GWBMIPrunoffdataId)//char(0), &
GWBMIPrunoffdata_init)
call registerreadrunoffdata(trim(LIS_GWBMIPrunoffdataId)//char(0), &
readGWBMIPrunoffdata)
! call registerinitrunoffdata(trim(LIS_GWBMIPrunoffdataId)//char(0), &
! GWBMIPrunoffdata_init)
! call registerreadrunoffdata(trim(LIS_GWBMIPrunoffdataId)//char(0), &
! readGWBMIPrunoffdata)
#endif
end subroutine LIS_runoffdata_plugin

Expand Down
143 changes: 51 additions & 92 deletions lis/routing/HYMAP2_router/HYMAP2_routing_run.F90
Original file line number Diff line number Diff line change
Expand Up @@ -136,65 +136,6 @@ subroutine HYMAP2_routing_run(n)
alarmCheck = LIS_isAlarmRinging(LIS_rc, "HYMAP2 router model alarm")
if(alarmCheck) then

#if 0
if(HYMAP2_routing_struc(n)%useens.eq.0) then
do i=1,HYMAP2_routing_struc(n)%nseqall
HYMAP2_routing_struc(n)%rivstomax(i,1) = HYMAP2_routing_struc(n)%rivlen(i)* &
HYMAP2_routing_struc(n)%rivwth(i,1) * HYMAP2_routing_struc(n)%rivhgt(i,1)

HYMAP2_routing_struc(n)%rivelv(i) = HYMAP2_routing_struc(n)%elevtn(i) -&
HYMAP2_routing_struc(n)%rivhgt(i,1)

if(HYMAP2_routing_struc(n)%rivwth(i,1)>0) then
HYMAP2_routing_struc(n)%rivare(i,1) =&
min(HYMAP2_routing_struc(n)%grarea(i), &
HYMAP2_routing_struc(n)%rivlen(i) *&
HYMAP2_routing_struc(n)%rivwth(i,1))

endif
enddo
call HYMAP2_set_fldstg(HYMAP2_routing_struc(n)%nz,&
HYMAP2_routing_struc(n)%nseqall,&
HYMAP2_routing_struc(n)%fldhgt,&
HYMAP2_routing_struc(n)%grarea,&
HYMAP2_routing_struc(n)%rivlen,&
HYMAP2_routing_struc(n)%rivwth(:,1),&
HYMAP2_routing_struc(n)%rivstomax(:,1),&
HYMAP2_routing_struc(n)%fldstomax(:,:,1),&
HYMAP2_routing_struc(n)%fldgrd(:,:,1),&
HYMAP2_routing_struc(n)%rivare(:,1))
else
do i=1,HYMAP2_routing_struc(n)%nseqall
do m=1,LIS_rc%nensem(n)
HYMAP2_routing_struc(n)%rivstomax(i,m) = HYMAP2_routing_struc(n)%rivlen(i)* &
HYMAP2_routing_struc(n)%rivwth(i,m) * HYMAP2_routing_struc(n)%rivhgt(i,m)

HYMAP2_routing_struc(n)%rivelv(i) = HYMAP2_routing_struc(n)%elevtn(i) -&
HYMAP2_routing_struc(n)%rivhgt(i,m)
if(HYMAP2_routing_struc(n)%rivwth(i,m)>0) then
HYMAP2_routing_struc(n)%rivare(i,m) =&
min(HYMAP2_routing_struc(n)%grarea(i), &
HYMAP2_routing_struc(n)%rivlen(i) *&
HYMAP2_routing_struc(n)%rivwth(i,m))
endif
enddo
enddo

do m=1,LIS_rc%nensem(n)
call HYMAP2_set_fldstg(HYMAP2_routing_struc(n)%nz,&
HYMAP2_routing_struc(n)%nseqall,&
HYMAP2_routing_struc(n)%fldhgt,&
HYMAP2_routing_struc(n)%grarea,&
HYMAP2_routing_struc(n)%rivlen,&
HYMAP2_routing_struc(n)%rivwth(:,m),&
HYMAP2_routing_struc(n)%rivstomax(:,m),&
HYMAP2_routing_struc(n)%fldstomax(:,:,m),&
HYMAP2_routing_struc(n)%fldgrd(:,:,m),&
HYMAP2_routing_struc(n)%rivare(:,m))
enddo
endif
#endif

allocate(rivsto_lvec(LIS_rc%nroutinggrid(n)*LIS_rc%nensem(n)))
allocate(rivdph_lvec(LIS_rc%nroutinggrid(n)*LIS_rc%nensem(n)))
allocate(rivvel_lvec(LIS_rc%nroutinggrid(n)*LIS_rc%nensem(n)))
Expand Down Expand Up @@ -566,41 +507,59 @@ subroutine HYMAP2_routing_run(n)

else !single member run

tmpr=0.
tmpb=0.

!import surface runoff and baseflow
call ESMF_StateGet(LIS_runoff_state(n),"Surface Runoff",sf_runoff_field,&
rc=status)
call LIS_verify(status, "ESMF_StateGet failed for Surface Runoff")

call ESMF_StateGet(LIS_runoff_state(n),"Subsurface Runoff",&
baseflow_field, rc=status)
call LIS_verify(status, "ESMF_StateGet failed for Subsurface Runoff")

call ESMF_FieldGet(sf_runoff_field,localDE=0,farrayPtr=surface_runoff_t,&
rc=status)
call LIS_verify(status, "ESMF_FieldGet failed for Surface Runoff")

call ESMF_FieldGet(baseflow_field,localDE=0,farrayPtr=baseflow_t,&
rc=status)
call LIS_verify(status, "ESMF_FieldGet failed for Subsurface Runoff")
if(LIS_rc%lsm.ne."none") then
tmpr=0.
tmpb=0.

!import surface runoff and baseflow
call ESMF_StateGet(LIS_runoff_state(n),"Surface Runoff",sf_runoff_field,&
rc=status)
call LIS_verify(status, "ESMF_StateGet failed for Surface Runoff")

call ESMF_StateGet(LIS_runoff_state(n),"Subsurface Runoff",&
baseflow_field, rc=status)
call LIS_verify(status, "ESMF_StateGet failed for Subsurface Runoff")

call ESMF_FieldGet(sf_runoff_field,localDE=0,farrayPtr=surface_runoff_t,&
rc=status)
call LIS_verify(status, "ESMF_FieldGet failed for Surface Runoff")

call ESMF_FieldGet(baseflow_field,localDE=0,farrayPtr=baseflow_t,&
rc=status)
call LIS_verify(status, "ESMF_FieldGet failed for Subsurface Runoff")

!temporary solution
call LIS_tile2grid(n,tmpr,surface_runoff_t)
call LIS_tile2grid(n,tmpb,baseflow_t)
!temporary solution
call LIS_tile2grid(n,tmpr,surface_runoff_t)
call LIS_tile2grid(n,tmpb,baseflow_t)

call HYMAP2_grid2vector(LIS_rc%lnc(n),LIS_rc%lnr(n),1,&
HYMAP2_routing_struc(n)%nseqall,&
HYMAP2_routing_struc(n)%imis,&
HYMAP2_routing_struc(n)%seqx,&
HYMAP2_routing_struc(n)%seqy,tmpr,surface_runoff)
call HYMAP2_grid2vector(LIS_rc%lnc(n),LIS_rc%lnr(n),1,&
HYMAP2_routing_struc(n)%nseqall,&
HYMAP2_routing_struc(n)%imis,&
HYMAP2_routing_struc(n)%seqx,&
HYMAP2_routing_struc(n)%seqy,tmpb,baseflow)
else

call readrunoffdata(trim(LIS_rc%runoffdatasource)//char(0),&
n,tmpr,tmpb)

call HYMAP2_grid2vector(LIS_rc%lnc(n),LIS_rc%lnr(n),1,&
HYMAP2_routing_struc(n)%nseqall,&
HYMAP2_routing_struc(n)%imis,&
HYMAP2_routing_struc(n)%seqx,&
HYMAP2_routing_struc(n)%seqy,tmpr,surface_runoff)
call HYMAP2_grid2vector(LIS_rc%lnc(n),LIS_rc%lnr(n),1,&
HYMAP2_routing_struc(n)%nseqall,&
HYMAP2_routing_struc(n)%imis,&
HYMAP2_routing_struc(n)%seqx,&
HYMAP2_routing_struc(n)%seqy,tmpb,baseflow)

endif

call HYMAP2_grid2vector(LIS_rc%lnc(n),LIS_rc%lnr(n),1,&
HYMAP2_routing_struc(n)%nseqall,&
HYMAP2_routing_struc(n)%imis,&
HYMAP2_routing_struc(n)%seqx,&
HYMAP2_routing_struc(n)%seqy,tmpr,surface_runoff)
call HYMAP2_grid2vector(LIS_rc%lnc(n),LIS_rc%lnr(n),1,&
HYMAP2_routing_struc(n)%nseqall,&
HYMAP2_routing_struc(n)%imis,&
HYMAP2_routing_struc(n)%seqx,&
HYMAP2_routing_struc(n)%seqy,tmpb,baseflow)

call HYMAP2_model(n,real(HYMAP2_routing_struc(n)%imis),&
LIS_rc%lnc(n),&
LIS_rc%lnr(n),&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@ subroutine LISrunoffdata_init
!ag - 17Mar2016
do n=1, LIS_rc%nnest
LISrunoffdata_struc(n)%previous_filename='none'
allocate(LISrunoffdata_struc(n)%qs(LIS_rc%gnc(n),LIS_rc%gnr(n)))
allocate(LISrunoffdata_struc(n)%qsb(LIS_rc%gnc(n),LIS_rc%gnr(n)))
allocate(LISrunoffdata_struc(n)%evap(LIS_rc%gnc(n),LIS_rc%gnr(n)))
allocate(LISrunoffdata_struc(n)%qs(LIS_rc%lnc(n),LIS_rc%lnr(n)))
allocate(LISrunoffdata_struc(n)%qsb(LIS_rc%lnc(n),LIS_rc%lnr(n)))
allocate(LISrunoffdata_struc(n)%evap(LIS_rc%lnc(n),LIS_rc%lnr(n)))
LISrunoffdata_struc(n)%qs=LIS_rc%udef
LISrunoffdata_struc(n)%qsb=LIS_rc%udef
LISrunoffdata_struc(n)%evap=LIS_rc%udef
Expand Down
Loading

0 comments on commit 80dfe35

Please sign in to comment.