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

improve hydro stability #851

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

xuchongang
Copy link
Contributor

@xuchongang xuchongang commented Apr 7, 2022

This pull request improves the numerical stability in the situation of extreme dry conditions

Description:

Hydro uses the transpiration flux from last time step. For numerical stability, this pull request make sure that transpiration flux is less than 80% of total water availability. If it is larger than that, it will adjust the transpiration flux and record the excessive demand to the plant water storage pool, which will be dumped later in HLM.This should not affect the science of hydrodynamics as this basically delays the water limitation by a few steps with a benefit of numerical stability.

Collaborators:

@bchristo @rgknox

Expectation of Answer Changes:

This will not affect most of simulation and should only affect simulations with very dry soil.

Checklist:

  • My change requires a change to the documentation.
  • I have updated the in-code documentation .AND. (the technical note .OR. the wiki) accordingly.
  • I have read the CONTRIBUTING document.
  • FATES PASS/FAIL regression tests were run
  • If answers were expected to change, evaluation was performed and provided

Test Results:

CTSM (or) E3SM (specify which) test hash-tag:

CTSM (or) E3SM (specify which) baseline hash-tag:

FATES baseline hash-tag:

Test Output:

@rgknox
Copy link
Contributor

rgknox commented Apr 7, 2022

@xuchongang , I think we might need to subtract the trans_err term to the plant stored water output boundary condition, here:

bc_out%plant_stored_h2o_si = csite_hydr%h2oveg + csite_hydr%h2oveg_dead - &
csite_hydr%h2oveg_growturn_err - &
csite_hydr%h2oveg_hydro_err

That way when E3SM and CTSM do their calculations on mass conservation, it will include this water we needed to create.

Thoughts?

@xuchongang
Copy link
Contributor Author

xuchongang commented Apr 7, 2022

@xuchongang , I think we might need to subtract the trans_err term to the plant stored water output boundary condition, here:

bc_out%plant_stored_h2o_si = csite_hydr%h2oveg + csite_hydr%h2oveg_dead - &
csite_hydr%h2oveg_growturn_err - &
csite_hydr%h2oveg_hydro_err

That way when E3SM and CTSM do their calculations on mass conservation, it will include this water we needed to create.

Thoughts?

@rgknox , you are correct. I forget to copy that over as I am testing on the ELM, which is not the most recent compared to master. I just added the line of the code.

@xuchongang xuchongang changed the title Xuchongang/master hydro stability improve hydro stability Apr 7, 2022
@glemieux glemieux added the PR status: Not Ready The author is signaling that this PR is a work in progress and not ready for integration. label Jun 21, 2022
Fix a few typos in FatesPlantHydraulicsMod (no change in the code functionality).
Revised the transpiration error quantification. The previous version seemed to have the wrong units, and BalanceCheckMod.F90 was often failing because errh2o was several orders of magnitude larger than the tolerance. With these edits, all my test simulations seem to be going through, although I have not made extensive tests.

@xuchongang, could you please check and see if these changes make sense? Thanks!
Fix minor typos to my previous commit. 

site_hydr was renamed to csite_hydr at some point, and my previous commit was using the old notation. I fixed that and also edited CalculateTotalAvailW to use csite and ccohort to be consistent with the other subroutines.
Additional update of site_hydr name to csite_hydr.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement PR status: Not Ready The author is signaling that this PR is a work in progress and not ready for integration.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants