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

change composite vep to log iteration #5337

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

bobmyhill
Copy link
Member

This PR changes the iterative scheme for the composite viscoplastic rheology to use the log stress and strain rate.
This should be a more linear system and therefore be more efficient.

@bobmyhill
Copy link
Member Author

/rebuild

Copy link
Contributor

@naliboff naliboff left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bobmyhill - Nice, the way you designed the composite model made this a really straightforward optimization!

Question - would there be further performance improvements by implementing the same changes as in #5227 when calculating the derivatives for additional rheology mechanisms, or is just a modification to the iteration over all the mechanisms (as done here) that will likely provide the significant improvement?

This PR looks largely good to after the testers finish and we see what changes. Thanks!

@bobmyhill
Copy link
Member Author

Hi @naliboff, after I fix the bug, this will do the same thing as @lhy11009's change to Peierls. It will be marginally more expensive, but not sufficient to need a further change

@lhy11009
Copy link
Contributor

@bobmyhill, I agree with @bobmyhill , this is really neat solution.

@bobmyhill
Copy link
Member Author

Ok, the problem here is with the (damped) Drucker-Prager, where
dln(strain_rate) / dln(stress) = stress / (stress - yield_stress).
At the yield stress, this value is undefined.
For the undamped scheme, the strain rate is also non-unique above the yield stress, making the problem worse.

With a damped plastic element there is always a unique stress for any given strain rate, but a naive Newton scheme without line search is going to struggle to find it.
With an undamped plastic element an iterative scheme is not required; if the plastic element is active then it accommodates all the strain - so this would be easy enough to implement.

Not sure what the best solution is to this problem. Line search (e.g. using SUNDIALS) would certainly help. Maybe there's another option.

FYI: @lhy11009, @naliboff

@bobmyhill bobmyhill force-pushed the iterate_vp branch 3 times, most recently from 20bb776 to 9064c53 Compare July 28, 2023 15:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants