Fix aEVP rheology: restore compressive resistance for stationary ice (delta_min floor in stress_tensor_a)#946
Draft
patrickscholz wants to merge 2 commits into
Draft
Fix aEVP rheology: restore compressive resistance for stationary ice (delta_min floor in stress_tensor_a)#946patrickscholz wants to merge 2 commits into
patrickscholz wants to merge 2 commits into
Conversation
In stress_tensor_a, r1 = pressure*(eps1 - delta) collapses to zero when ice is stationary (eps1=0, delta=0), removing all compressive resistance. stress_tensor_m already guards against this with max(delta, delta_min). Apply the same fix to keep the aEVP variant consistent.
Collaborator
|
This sounds like it needs a test as well. Would be good to quantify. I have no feeling for how of vel goes through zero. I convert to draft to make the shiny green merge button go away for now. Esp. cause aevp is widely used, e.g. in our CMIP7 and all sorts of high resolution projects. |
JanStreffing
marked this pull request as draft
June 26, 2026 12:08
Contributor
Author
|
@JanStreffing: Did you not use mEVP in CMPI7 ? Than i will also do some bias runs for that one! |
Collaborator
|
We used it for much of the spinup, but then switched to aEVP. mEVP had proved to be the reason for max ice thickness unphysically high in some Greenland fjords. |
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.








Summary
A one-word fix to
stress_tensor_ain the adaptive EVP (aEVP) ice rheology: the isotropic stress termr1was missing thedelta_minregularisation floor that the mEVP variant (stress_tensor_m) already applies correctly. As a result, stationary sea ice in the aEVP scheme has zero compressive resistance — it goes mechanically limp the moment it stops deforming.Background: the role of
deltaanddelta_minIn EVP rheology,
deltais the total deformation rate invariant:It measures how fast the ice is deforming (divergence + shear). When ice is stationary, all strain rates are zero and
delta = 0.deltaappears in the denominator of the ice pressure term:delta_min(typically ~2×10⁻⁹ s⁻¹) is a small regularisation floor with two purposes:delta = 0The bug: isotropic stress collapses to zero at rest
The stress tensor update for the isotropic (compressive/divergent) component is:
where
eps1 = div(u)is the divergence. This term drives the isotropic part of the internal ice stress. For converging ice (eps1 < 0),r1 < 0— the ice resists compression. For diverging ice,r1 > 0.When ice is stationary:
eps1 = 0anddelta = 0, so:The isotropic stress contribution vanishes entirely. Over the aEVP sub-cycling iterations, the stress relaxation term
det1 * sigmathen damps the existing stress state toward zero with no restoring force — the ice loses all memory of its compressive stress state without any physical forcing causing the relaxation.In practice this means:
Why mEVP does not have this problem
stress_tensor_m(line 171) already applies thedelta_minfloor:When ice is stationary:
max(0, delta_min) = delta_min, so:This is a small but nonzero compressive stress that is maintained even at rest. It ensures the ice "remembers" it should resist compression, consistent with the plastic yield curve. The aEVP variant was missing this guard — likely an oversight when
stress_tensor_awas implemented separately fromstress_tensor_m.The fix
One-word change in
stress_tensor_a(src/ice_maEVP.F90, line 1095):This makes
stress_tensor_aconsistent withstress_tensor_mand restores physically correct compressive resistance for stationary ice in the aEVP scheme.Scope
stress_tensor_a)stress_tensor_mwas already correct)