UniMainzGeo / LaMEM

LaMEM (Lithosphere and Mantle Evolution Model) - a 3D parallel code to simulate geodynamic and geomechanical processes
MIT License
50 stars 16 forks source link

Plasticity regularisation #17

Closed boriskaus closed 7 months ago

boriskaus commented 8 months ago

This PR adds viscoplastic regularisation to the rheology model of LaMEM (red item):

Screenshot 2024-02-12 at 23 05 42

Previous, we could do plasticity regularisation already by specifying the eta_st viscosity per phase, which changes the minimum viscosity from its global value (eta_min), to a phase-wise value. Another possibility is by amending the plasticity yield stress directly:

\tau_y = \tau_y + 2 \eta_{\textrm{vp}} \dot{\varepsilon}_{II}^{\textrm{pl}}

where $\tauy$ is a yield stress, $\eta{\textrm{vp}}$ a regularisation viscosity, and $\dot{\varepsilon}_{II}^{\textrm{pl}}$ the plastic strainrate. This regularisation was used by Duretz et al. 2018 , among others.

This PR adds a new, phase-wise, material parameter to specify this (set to zero by default):

eta_vp = 1e19

Comparison of regularisation methods The newly added test /tests/t4_Loc/localization_eta_vp_reg.dat was used to compare the different formulations, with $\eta{vp}=10^{21}$ Pas, or $\eta{st}=10^{21}$ Pas. Looking at the number of SNES iterations shows that both regularisations reduce the number of iterations, but that the viscoplastic method is slightly more efficient:
iter

A table with timings (on an M2 MacBook Pro): method total time [s]
no regularisation 392
eta_st 82
eta_vp 57

A comparison of the 2nd invariant of the strain rate at the end of the simulation for different resolutions for a case that uses the new method using eta_vp=1e21. vp_reg_comparison