-
Notifications
You must be signed in to change notification settings - Fork 18
eCLM-ParFlow: Couple effective porosity for frozen soil #146
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
base: master
Are you sure you want to change the base?
Changes from all commits
22f6de1
a08c9a7
fa01ebb
8a56bf0
f0775a2
b3b4884
31bab87
b52dcac
bd4829b
024a9b5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1503,20 +1503,26 @@ subroutine soilwater_parflow(bounds, num_hydrologyc, & | |
| h2osoi_ice => waterstate_inst%h2osoi_ice_col , & ! Output: [real(r8) (:,:) ] ice lens (kg/m2) | ||
| smpmin => soilstate_inst%smpmin_col , & ! Input: [real(r8) (:) ] restriction for min of soil potential (mm) | ||
| pfl_h2osoi_liq => waterstate_inst%pfl_h2osoi_liq_col , & ! Input: [real(r8) (:,:) ] ParFlow soil water (mm) | ||
| pfl_psi => waterstate_inst%pfl_psi_col & ! Input: [real(r8) (:,:) ] ParFlow pressure head (mm) | ||
| pfl_psi => waterstate_inst%pfl_psi_col , & ! Input: [real(r8) (:,:) ] ParFlow pressure head (mm) | ||
| h2osoi_ice_prev => waterstate_inst%h2osoi_ice_prev_col, & ! Input: [real(r8) (:,:) ] ice lens before PhaseChange (kg/m2) | ||
| pfl_eff_porosity => soilhydrology_inst%pfl_eff_porosity_col & ! Output: [real(r8) (:,:) ] effective porosity sent to ParFlow (m3/m3) | ||
| ) ! end associate statement | ||
|
|
||
|
|
||
| ! Exchange of soil water and pressure head between ParFlow and eCLM | ||
| ! ParFlow has no ice phase, so that the received water it the total water content. | ||
| ! Keep the ice what PhaseChanged diagnosed earlier in the time step and | ||
| ! attribute the remainder to liquid, so that liq and ice matches the received total. | ||
| ! ParFlow carries the liquid phase only, so the received water is the liquid | ||
| ! water content and h2osoi_ice stays as PhaseChange left it. ParFlow applies the | ||
| ! freeze one coupling interval later, so subtract it here to keep eCLM in sync. | ||
| do fc = 1, num_hydrologyc | ||
| c = filter_hydrologyc(fc) | ||
|
|
||
| do j = 1, nlevgrnd | ||
| h2osoi_ice(c,j) = min(h2osoi_ice(c,j), pfl_h2osoi_liq(c,j)) | ||
| h2osoi_liq(c,j) = max(0._r8, pfl_h2osoi_liq(c,j) - h2osoi_ice(c,j)) | ||
| ! PhaseChange bounds the ice by the available water. Capping the state | ||
| ! keeps the frozen mass ParFlow derives from it exact. | ||
| h2osoi_ice(c,j) = min(h2osoi_ice(c,j), watsat(c,j)*dz(c,j)*denice) | ||
| h2osoi_liq(c,j) = max(0._r8, pfl_h2osoi_liq(c,j) & | ||
| - (h2osoi_ice(c,j) - h2osoi_ice_prev(c,j))) | ||
| pfl_eff_porosity(c,j) = watsat(c,j) - h2osoi_ice(c,j)/(dz(c,j)*denice) | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why is the effective porosity based on eCLM's porosity/watsat? Shouldn't this be computed in Parflow instead? Parflow is the one solving groundwater flow, thus it makes more sense to me to favor its porosity definition than eCLM. The deeper question is, how to define porosity in the context of eCLM-Parflow? Should each model define their own porosities, or should both models share exactly the same? If porosity has to be the same, do we base it from eCLM or from Parflow? Answers to these would influence how effective porosity should be implemented.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ParFlow can not compute the effective porosity by itself as it has no ice phase and no soil temperature, so θ_ice only lives in eCLM (PhaseChange). The open question is whether it's φ_eff or θ_ice that crosses the coupler. With regard to 'watsat' specifically, this PR does not introduce eCLM's porosity into ParFlow; it simply makes an existing dependency explicit. In the up-to-date setup, ParFlow's input porosity is already eCLM's watsat. My original design involved passing θ_ice and letting ParFlow subtract it from its own porosity, which has real advantages: no guard value is needed, potential remap error acts on a quantity that is zero most of the year and ice-free runs are bit-identical. So, in answer to the deeper question, I would say that there should be one porosity, with eCLM owns over the coupled depth / grid points. This is not because eCLM has a stronger claim, but because it is the porosity that the rest of the coupled system is already interpreted against.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Makes sense. I also initially thought that θ_ice should be coupled, but this is a good argument in favor of φ_eff
Wouldn't favoring eCLM porosity compromise how Parflow computes relative saturation? I thought Parflow already assumes a Van-Genuchten parameterization for its porosity.
|
||
| if (pfl_psi(c,j) <= 0) then | ||
| smp_l(c,j) = max(smpmin(c), pfl_psi(c,j)) | ||
| end if | ||
|
|
||

Uh oh!
There was an error while loading. Please reload this page.