Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add subgrid hillslope hydrology (NGEE Arctic IM2) #6718

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

thorntonpe
Copy link
Contributor

This new capability builds on the existing topographic unit (topounit) subgrid scheme by implementing transport of water within a gridcell from higher to lower elevation topounits. Assuming that the topounit information on an existing surface dataset includes mean elevation for each topounit on a gridcell, the code will calculate topounit connectivity (topology) at run time during model initialization. On each time step a user-specified fraction of the surface runoff, ponded water runoff, and perched water table drainage terms are shifted to the next-lower topounit, where that water is distributed to the columns on the topounit with a user-defined decay term.
[BFB]
[FCC]
[NML]

Add namelist variable use_IM2_hillslope_hydrology, which
implements a transfer from higher elevation topounits to
lower elevation topunits within the same gridcell. Based on
design document from NGEE Arctic Phase 3 project (IM2)
[NML]
Should be BFB when use_IM2_hillslope_hydrology namelist flag is off
@thorntonpe thorntonpe added Land Stealth PR has feature which, if turned on, could change climate. fka FCC labels Oct 29, 2024
@rljacob
Copy link
Member

rljacob commented Oct 30, 2024

Have there been any long-ish runs with this feature on?

@thorntonpe
Copy link
Contributor Author

The development was done on site-level simulations. Once the site-level evaluation was complete, I added a test that implemented this new development at the global scale, on top of the existing test SMS.r05_r05.IELM.pm-cpu_gnu.elm-topounit. That is a very strong test since it exercises this new capability on the full range of actual topounit, landunit, and column arrangements. That is only a five day test, so the answer to @rljacob question is "no".

@thorntonpe
Copy link
Contributor Author

@rljacob I can start a longer test - how long do you suggest?

@rljacob
Copy link
Member

rljacob commented Oct 31, 2024

I'd suggest a 1-year smoke test. Is this going to be used by E3SM in some future version?

@thorntonpe
Copy link
Contributor Author

Thanks, I'll set that up. Next phase for this work is to evaluate multiple Arctic code changes operating together at the pan-Arctic scale (under ecosystem project NGEE Arctic). The plan would be to have this as a candidate capability in whatever version is current about three years from now.

@thorntonpe
Copy link
Contributor Author

@rljacob I ran a one-year test of this new capability on the global r05 land domain, based on the existing r05 topounit-enabled surface dataset. That run completed successfully.
@tktesfa2014 and @bishtgautam I'm hoping you can provide your reviews. Let me know if you want to get together to discuss details.

Copy link
Contributor

@bishtgautam bishtgautam left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@thorntonpe I have left a few minor comments.

Comment on lines 263 to 275
do fc = 1, num_hydrologyc
c = filter_hydrologyc(fc)
t = col_pp%topounit(c)
! add flood water flux to qflx_top_soil
qflx_top_soil(c) = qflx_top_soil(c) + qflx_snow_h2osfc(c) + qflx_floodc(c)

! flow from uphill topounit goes to top of soil for soil, crop, and pervious road columns
if (use_IM2_hillslope_hydrology) then
qflx_from_uphill(c) = (col_pp%wttopounit(c)/top_pp%uphill_wt(t)) * (frac_from_uphill * top_ws%from_uphill(t)) / dtime
qflx_top_soil(c) = qflx_top_soil(c) + qflx_from_uphill(c)
endif

end do
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about avoiding the if (use_IM2_hillslope_hydrology) within the do-loop by leaving the original code as is and then adding a separate if-loop like

do fc = 1, num_hydrologyc
   ... original code
enddo

if (use_IM2_hillslope_hydrology) then
   .... new code
   do fc = 1, ...
   enddo
endif

Comment on lines +5850 to +5857
call hist_addfld1d (fname='QFROM_UPHILL', units='mm/s', &
avgflag='A', long_name='input to top layer soil from uphill topounit(s)', &
ptr_col=this%qflx_from_uphill, c2l_scale_type='urbanf')

call hist_addfld1d (fname='QTO_DOWNHILL', units='mm/s', &
avgflag='A', long_name='output from column to downhill topounit', &
ptr_col=this%qflx_to_downhill, c2l_scale_type='urbanf')

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If these fields are added by default, let's only add them if the new physics is turned on.

!-----------------------------------------------------------------------
! initialize history fields for members of top_ws
!-----------------------------------------------------------------------
call hist_addfld1d (fname='FROM_UPHILL', units='mm', &
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about renaming FROM_UPHILL to WATER_FROM_UPHILL?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These fields should be only read/written out if the new physics is turned on.

Comment on lines +109 to +111
! Close file
! call ncd_pio_closefile(ncid)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please delete these lines.

Comment on lines +250 to +260
do fc = 1, num_hydrologyc
c = filter_hydrologyc(fc)
t = col_pp%topounit(c)
top_pp%uphill_wt(t) = 0._r8
end do
! Next sum the weights
do fc = 1, num_hydrologyc
c = filter_hydrologyc(fc)
t = col_pp%topounit(c)
top_pp%uphill_wt(t) = top_pp%uphill_wt(t) + col_pp%wttopounit(c)
end do
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couldn't these weights be computed during initialization?

@rljacob
Copy link
Member

rljacob commented Nov 21, 2024

@thorntonpe please respond to comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Land Stealth PR has feature which, if turned on, could change climate. fka FCC
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants