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
Add ln(strain rate) and d ln(strain rate) / d ln(stress) functions in potentially composite rheologies #5322
Comments
Follow-up: To avoid writing a lot of new functions, we could as a stopgap use the identity: |
@bobmyhill I just looked at the composite visco plastic material model and It seems to me the issue it has is different. It computes the composite viscosity directly by harmonic average among components so there is no internal iteration from strain rate to stress. However, the compute_viscosity_derivatives function computes the derivatives of viscosity to strain rate and pressure, this seems to be what the Newton solver needs to assemble. I guess here are two questions:
FYI @mibillen |
@haoyuan, thanks for for looping me on this. From our discussion on this, I do think it is worth trying this out to see the effect on the Newton Solver. The performance of the newton Solver with our subduction models has always been very disappointing, and it was not clear why it should be. @bobmyhill - your input and guidance on this is for Haoyuan is very much appreciated. |
@lhy11009 thanks for looking at this.
|
@MFraters you may also be interested in what we are doing here. |
After some testing, @lhy11009 has found that iterating
ln(stress norm)
to minimize the residual ofln(strain rate norm)
is more efficient than iteratingstress norm
to minimize the residual ofstrain rate norm
. This makes sense, as ln(strain rate) is close to linear in ln(stress). This mirrors the iterative scheme in the grain size model (ln(grain size)) and possible future temperature iterations in the multicomponent entropy model (entropy at high temperature is linear in ln(T)).So that we don't have to duplicate / replace all the functions in the individual rheology modules, we should simply use the following identity in the iterative loops:
d ln(strain rate) / d ln(stress) = (stress / strain rate) * (d (strain rate) / d (stress))
Here's a list of places we should implement the change. @lhy11009 has kindly offered to do the diffusion-dislocation model.
The text was updated successfully, but these errors were encountered: