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

DUL higher than SAT when adjusted for SOM #153

Open
palderman opened this issue Sep 28, 2021 · 6 comments
Open

DUL higher than SAT when adjusted for SOM #153

palderman opened this issue Sep 28, 2021 · 6 comments
Assignees

Comments

@palderman
Copy link
Contributor

The existing code allows DUL to increase above SAT when DUL is adjusted for SOM. Although DUL and LL are adjusted, there is no concomitant adjustment for SAT:

! Equation to modify DUL depends on soil texture (Gupta & Larson, 1979)
IF (COARSE(L)) THEN
! Coarse soils -- use DUL10
dDUL_SOM = 0.004966 * dOC - 0.2423 * dBD_SOM
ELSE
! Other soils -- use DUL33
dDUL_SOM = 0.002208 * dOC - 0.1434 * dBD_SOM
ENDIF
DUL_SOM(L) = DUL_INIT(L) + dDUL_SOM
! Lower limit
dLL_SOM = 0.002228 * dOC + 0.02671 * dBD_SOM
LL_SOM(L) = LL_INIT(L) + dLL_SOM

As a result, DUL_SOM can be higher than SAT under some conditions. I think we have a couple of options:

  • Place a limit on DUL so that it must be less than SAT
  • Change SAT in an equivalent way that DUL is changed (possibly deriving it from BD_SOM?)

As it is, if DUL does become higher than SAT and SW happens to be equal to SAT then we can get floating point exceptions in OXLAYER (and possibly other places?):

IF (SW(1) .LT. DUL(1)) THEN
SWI = (SAT(1)-DUL(1))/(SAT(1)-SW(1))
ENDIF

@chporter
Copy link
Contributor

chporter commented Oct 1, 2021

Nice use of embedded code in markdown! I need to learn this trick.

The regressions equations from Gupta and Larson 1979 did not include SAT, but I agree this is a problem. How about we limit DUL to (SAT-0.10). We should then similarly limit LL to no more than (DUL-0.10) since it can continue to be modified.

chporter added a commit to chporter/dssat-csm-os that referenced this issue Oct 1, 2021
- needs to be tested
@chporter
Copy link
Contributor

chporter commented Oct 1, 2021

@palderman
I have a simple check for DUL > SAT-0.10 and for LL > DUL-0.10 here. Do you have a specific set of data that failed previously that you can test? Or send to me and I can test. I'll also do our standard tests. Thanks.

@chporter
Copy link
Contributor

chporter commented Oct 1, 2021

Here are the lines of code:

https://github.com/chporter/dssat-csm-os/blob/228995cc9401fd1f5c2592e044c479ac6c68f7a5/Soil/SoilUtilities/SOILDYN.for#L1203-L1225

(why don't they show up as embedded code?)

@palderman
Copy link
Contributor Author

palderman commented Oct 1, 2021

@chporter, I think it doesn't show up embedded because it's not from this repo (it's from your fork).

I'd prefer a solution that is more conceptually coherent. It seems to me that the reason we are adjusting DUL, LL, etc is that these actually do change with increasing SOM. If that's true then why should we assume that SAT stays the same? Does it make sense to say that BD changes (and probably porosity?), but SAT doesn't change?

Before I get into my ideas for SAT, though, I think we have some things to resolve for DUL and LL. Do you know the journal and/or title for Gupta and Larson (1979)? There are a couple I have found:

Gupta, S., & Larson, W. E. (1979). Estimating soil water retention characteristics from particle size distribution, organic matter percent, and bulk density. Water Resources Research, 15(6), 1633-1635.

Gupta, S. C., & Larson, W. E. (1979). A model for predicting packing density of soils using particle‐size distribution. Soil Science Society of America Journal, 43(4), 758-764.

I can get the first one (Water Resources) and I think the coefficients match. Assuming that's the right reference, I'm a bit bothered by our implementation. There is only one equation given in that article:

θp = a × sand (%) + b × silt (%) + c × clay (%) + d × organic matter (%) + e × bulk density (g/cm 3)

This does not match what we have in the code. For example, using the coefficients provided in Table 1 of that article, the equation for -0.10 bars would be:

θp = (0.005018) × sand (%) + (0.008548) × silt (%) + (0.008833) × clay (%) + (0.004966) × organic matter (%) + (-0.24230) × bulk density (g/cm 3)

What we have now is:

! Coarse soils -- use DUL10
dDUL_SOM = 0.004966 * dOC - 0.2423 * dBD_SOM

First, I'm not sure about the validity of applying regression coefficients to the marginal change in the predictors. It seems to me that the logic is that we first assume:

Δθp = (0.005018) × Δ sand (%) + (0.008548) × Δ silt (%) + (0.008833) × Δ clay (%) + (0.004966) × Δ organic matter (%) + (-0.24230) × Δ bulk density (g/cm 3)

Then we assume

Δ sand (%) = Δ silt (%) = Δ clay (%) = 0

which leaves us with:

Δθp = (0.004966) × Δ organic matter (%) + (-0.24230) × Δ bulk density (g/cm 3)

I'm uneasy about that reasoning, but maybe it's okay. Assuming for the moment that the logic is sound, shouldn't our implementation be:

dDUL_SOM = 0.004966 * dSOM - 0.2423 * dBD_SOM

If so, that leaves us with correcting code for DUL and LL in addition to figuring out SAT.

Edit: I question the nomenclature, but dOC is the correct variable as it is calculated as:

dOC = SOM_PCT(L) - SOM_PCT_init(L)

I have some thoughts about how to handle SAT, but I need to check a couple of things first. I will post those ideas later.

@palderman
Copy link
Contributor Author

palderman commented Oct 6, 2021

@chporter, what do you think of adjusting SSAT using the same equation from Gupta and Larson (1979) with the coefficients they have for -0.04 bars?

I realize that -0.04 is not the same as 0, but it's probably better than assuming that SAT doesn't change (which is what we do now). Here is a plot that shows how Δθp would look for different values of SOM change (ΔSOM):
image

Note that I also adjusted bulk density according to the equations in SOILDYN.for:
image

The inflection point in both plots at just below ΔSOM = 3 is due to the fact that we limit the ΔBD:

BD_SOM(L) = MIN(BD_SOM(L), BD_INIT(L)*1.2, 1.80) !Upper limit for BD_SOM
BD_SOM(L) = MAX(BD_SOM(L), BD_INIT(L)*0.8, 0.95) !Lower limit for BD_SOM

but ΔSOM continues to increase.

@chporter
Copy link
Contributor

@palderman Yes, I agree now that we should probably be adjusting SAT with the other soil water capacity variables. I think your method makes sense and is better than our current method of leaving SAT unmodified.

The inflection point is bothersome and the limits that cause it are arbitrary. I'm open to suggestions for improving these.

The reference I used is the first one you listed: "Estimating soil water retention..." by Gupta and Larson, 1979.

Thanks for digging into this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants