This PR does a few small things that facilitate efficient calculation of CompositeViscoPlastic viscosities:
The approximate Peierls creep rheology has a new function compute_approximate_log_strain_rate_and_derivative, mirroring compute_exact_log_strain_rate_and_derivative already in the code.
A new power law Drucker-Prager rheology is introduced, that replaces a strain-rate invariant yield stress with a yield stress that varies as a function of strain rate.
CompositeViscoPlastic is modified to use the approximate Peierls creep rheology and the power law Drucker-Prager rheology.
The internal Newton iteration scheme inside CompositeViscoPlastic is modified to iterate over the log stress to get the correct total log strain rate. The change from iterating on stress and strain to log stress and strain, and the use of pure power law rheologies (at fixed state) leads to much improved performance, typically requiring 1--6 relatively inexpensive iterations rather than 1--20+ more expensive iterations with the old code.
Further improvements in efficiency can be made in future PRs, particularly in the approximate Peierls creep rheology (see #5945).
I'm happy to split this PR up if necessary. All brought together here because I developed the features in tandem, and to demonstrate the eventual goal.
This PR does a few small things that facilitate efficient calculation of
CompositeViscoPlastic
viscosities:compute_approximate_log_strain_rate_and_derivative
, mirroringcompute_exact_log_strain_rate_and_derivative
already in the code.CompositeViscoPlastic
is modified to use the approximate Peierls creep rheology and the power law Drucker-Prager rheology.CompositeViscoPlastic
is modified to iterate over the log stress to get the correct total log strain rate. The change from iterating on stress and strain to log stress and strain, and the use of pure power law rheologies (at fixed state) leads to much improved performance, typically requiring 1--6 relatively inexpensive iterations rather than 1--20+ more expensive iterations with the old code.Further improvements in efficiency can be made in future PRs, particularly in the approximate Peierls creep rheology (see #5945).
I'm happy to split this PR up if necessary. All brought together here because I developed the features in tandem, and to demonstrate the eventual goal.