-
Notifications
You must be signed in to change notification settings - Fork 3
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
Couple damage to viscosity without modifying stiffness #91
base: develop
Are you sure you want to change the base?
Couple damage to viscosity without modifying stiffness #91
Conversation
c8739af
to
b024905
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@trhille , I realize you hadn't requested review on this yet, but I gave it a look because it is short. The changes are as I expected. I made one small comment regarding some code cleanup. I'm otherwise happy to review and/or test more thoroughly when you'd like to see this finalized.
b024905
to
9b382bd
Compare
9b382bd
to
17b7bf2
Compare
4a4b994
to
e6689f6
Compare
components/mpas-albany-landice/src/mode_forward/mpas_li_velocity_external.F
Show resolved
Hide resolved
@matthewhoffman @mperego, I am currently using Do either of you have an opinion as to which approach is preferable? |
I see pros and cons in both approaches but I think what you are doing now is better. I see the stiffenssFactor as a fix for errors in the rehology,which is separate form the damage factor (1-damage). Also, if you use the second approach it would complicate the optimization approach that we are pursuing, because I would have to put a lower bound to the effective stiffness factor, which is not the variable we are inverting for. |
I agree that the second option seems more intuitive, but the first option seems more practical, so I'm also leaning towards the first option. Having a minimum limit on the extent to which damage can modify stiffness (as opposed to a minimum value of effective stiffness) is also the way Sam is handling things with the logistic function he showed us recently based on his comparison of simulated damage and inverted stiffness. |
Pass max(1.0_RKIND - damage, config_damage_stiffness_min) * stiffnessFactor to velocity solver instead of just stiffnessFactor.
Fix inadvertent coupling when config_damage_rheology_coupling is false
Remove damage factor from calculation for uncoupled effectiveViscosity
Remove config_damage_stiffness_min as a variable in li_calculate_damage, where it is no longer used.
Do not zero out damage for grounded ice. Damage should remain small anyway, but forcing damage to be zero on grounded ice can cause unrealistically large gradients in damage at the grounding line.
Disable damage threshold calving for grounded ice now that damage is no longer set to zero for grounded ice.
…sity Write effective stiffness (defined as max(1.0_RKIND - damage, config_damage_stiffness_min) * stiffnessFactor) to ascii mesh when coupling damage to viscosity.
c9051a7
to
305eb6a
Compare
This merge allows for a method for coupling damage to ice viscosity without modifying the stiffness field. This replaces the existing method of coupling damage to viscosity (i.e., setting
stiffnessFactor = 1 - damage
at each time step), which does not work when stiffness is included in the optimization because it results in a completely different stiffness field from the optimization within one time step. The new method assumes that the user has performed a spin up to obtain a steady-state damage field usingconfig_restore_thickness_after_advection = .true.
, and then recalculated the stiffness field to be consistent with the steady-state damage field. For example:ncap2 -s "stiffnessFactorOpt = stiffnessFactor; stiffnessFactor = stiffnessFactorOpt / (1.0 - damage)"
Ice damage is then included directly in the ice viscosity calculation, instead of using it to modify stiffness:
This method acknowledges that
stiffnessFactor
calculated by the optimization applies to undamaged ice, which the current implementation usingstiffnessFactor = 1 - damage
does not. The inclusion of the1-damage
factor in the effective viscosity calculation is similar to the treatment in eqs. 5 and 6 of Albrecht & Levermann (2014): https://tc.copernicus.org/articles/8/587/2014/tc-8-587-2014.pdf