underworldcode / underworld2

underworld2: A parallel, particle-in-cell, finite element code for Geodynamics.
http://www.underworldcode.org/
Other
168 stars 58 forks source link

Adding two plasticities to one material #680

Open bush2014 opened 10 months ago

bush2014 commented 10 months ago

I'm wondering if it's possible to incorporate two types of plasticity for slab materials in UWGeodynamics. It is convenient to implement GEO.DruckerPrager plasticity, but in the case of slabs, they might also undergo Peierls creep (low-temperature plasticity). Is there a straightforward approach to incorporate both types of creep behavior for a single material? My idea was to set a maximum yield stress for Peierls creep, but it appears that I cannot assign both of these properties to a single material. Thank you for your consideration of this issue.

bush2014 commented 10 months ago

Just figured out there is a way by setting materials.stressLimiter. But is there a way to give explicit equations of Perierls creep and DruckerPrager to one material at the same time in UWGeodynamics? Thanks!

julesghub commented 10 months ago

Hi @bush2014, unfortunately there is no explicit equation to setup the Peierls mechanism in UWGeodynamics. From Gerya, Introduction to Numerical Geodynamic Modelling, p178 Peierls comes in as an exponential creep term. UWGeodynamics does have the functionality to do a harmonic mean of effective viscosities see here, but an explicit peierls implementation is missing.

If you're keen to implement a mechanism for peierls you would have to implement a new rheology class in UWGeodynamics. Something like https://github.com/underworldcode/underworld2/blob/a0f94bb817f983025318dba32cbc7c597a2bde36/underworld/UWGeodynamics/_rheology.py#L374 You would also have to ensure the correct non-linear behaviour is observed.

Another approach would be to implement the model using only underworld function calls. (i.e. not UWGeodynamics)

bush2014 commented 10 months ago

Hi Julian, thank you so much for your prompt response. Those suggestions are incredibly valuable, and I'm eager to put them into practice. Now I will see if it will work by simply setting a stressLimiter. The function for calculating the harmonic mean is also a valuable addition to my toolkit. Again, thank you for your thorough response.