### Initial commit of the master branch of LYNX.

parent 746ff954
 ... ... @@ -11,10 +11,26 @@ Content: Renderer: type: MooseDocs.base.MaterializeRenderer name: Lynx name: LYNX repo: https://gitext.gfz-potsdam.de/ajacquey/lynx # home: https://www.mooseframework.org google_analytics: True Translators: type: MooseDocs.base.Translator incremental_build: False Extensions: MooseDocs.extensions.navigation: name: 'LYNX' repo: https://gitext.gfz-potsdam.de/ajacquey/lynx # home: https://www.mooseframework.org menu: Getting Started: getting_started/index.md Documentation: documentation.menu.md Help: help.menu.md # News: newsletter/index.md MooseDocs.extensions.appsyntax: executable: \${ROOT_DIR} includes: - include - include \ No newline at end of file
 # Damage Rheology Development Here we describe the base for the damage rheology implementation in LYNX. ## Stress update We rely of the elastic energy and stress formulation of [cite:lyakhovsky1997]: \begin{equation} \sigma_{ij} = \left(\lambda - \frac{\alpha \gamma}{\xi}\right) \varepsilon_{kk} \delta_{ij} + \left(2G - \alpha \gamma \left(\xi - 2\xi_{0}\right)\right) \varepsilon_{ij}. \end{equation} LYNX uses an incremental formulation for the stress update. Based on a Taylor expansion, the stress at a new time step \$n+1\$ is written: \begin{equation} \sigma_{ij}^{n+1} = \sigma_{ij}^{n} + \frac{\partial \sigma_{ij}}{\partial \varepsilon_{kl}}:\left(\varepsilon_{kl}^{n+1} - \varepsilon_{kl}^{n}\right) + \frac{\partial \sigma_{ij}}{\partial \alpha} \left(\alpha^{n+1} - \alpha^{n}\right). \end{equation} The previous expression can be rearranged as: \begin{equation} \sigma_{ij}^{n+1} = \sigma_{ij}^{n} + \mathbb{C}^{0}_{ijkl} : \left(\varepsilon_{kl}^{n+1} - \varepsilon_{kl}^{n}\right) - \mathbb{C}^{\xi}_{ijkl} : \left(\varepsilon_{kl}^{n+1} - \varepsilon_{kl}^{n}\right) - \sigma_{ij}^{\alpha} \left(\alpha^{n+1} - \alpha^{n}\right), \end{equation} where: \begin{equation} \label{eq:stiffness} \mathbb{C}^{0}_{ijkl} = \lambda \delta_{ij}\delta_{kl} + \left[G - \alpha^{n} \gamma\left(\frac{\xi^{n}}{2} - \xi_{0}\right)\right]\left(\delta_{ik}\delta_{jl} + \delta_{il}\delta_{jk}\right), \end{equation} \begin{equation} \mathbb{C}^{\xi}_{ijkl} = \alpha^{n} \gamma \left(\frac{\varepsilon_{ij}^{n}}{\lVert\varepsilon_{ij}^{n}\rVert}\delta_{kl} + \frac{\varepsilon_{kl}^{n}}{\lVert\varepsilon_{ij}^{n}\rVert}\delta_{ij} - \xi^{n} \frac{\varepsilon_{ij}^{n} \varepsilon_{kl}^{n}}{{\lVert \varepsilon_{ij}^{n}\rVert}^{2}}\right), \end{equation} and \begin{equation} \sigma_{ij}^{\alpha} = \gamma\left[\left(\xi^{n} - 2\xi_{0}\right)\varepsilon_{ij}^{n} + \lVert\varepsilon_{ij}^{n}\rVert \delta_{ij} \right] \end{equation} The parameter \$\xi_{0}\$ represents the modified internal friction of the material. With some algebra, one can express this coefficient based on the friction angle and the elastic moduli (intact) of the material as: \begin{equation} \xi_{0} = -\sqrt{\frac{3}{1 + \frac{3}{2}\frac{K^{2}}{G^{2}}\sin^{2}\left(\varphi\right)}} \end{equation} ## Inelastic model In LYNX, we rely on a different formulation as the one presented in [cite:lyakhovsky1997,lyakhovsky2015] for the inelastic update. The yield function presented in [cite:lyakhovsky2015] reads: \begin{equation} f = D\varepsilon_{v}^{3} + {\lVert \varepsilon_{ij} \rVert}^{2} \left(\xi - \xi_{0}\right) \end{equation} One can express this yield in the stress space in several ways. Here, we chose to use the following formulation because it includes as less as possible undefined regions for the yield. This formulation reads: \begin{equation} \label{eq:critical_strain_ratio} f = \xi - \xi_{cr}, \quad \text{with} \quad \xi_{cr} = \xi_{0} - \left(\sqrt{3} + \xi_{0}\right)\frac{\varepsilon_{v}}{\varepsilon_{vc}} \frac{\xi^{2}}{3}, \quad \text{and} \quad \varepsilon_{vc} = \frac{\left(\sqrt{3} + \xi_{0}\right)}{3D}. \end{equation} where the values of \$\varepsilon_{v}\$ and \$\xi\$ are calculated based on the previous timestep. This expression can therefore be used to express a yield in the form: \begin{equation} f = e_{d} - \frac{\sqrt{2}}{3}\sqrt{\frac{3 - \xi_{cr}^{2}}{\xi_{cr}^{2}}} \varepsilon_{v}, \end{equation} which can be expressed in stress space using non-relevant elastic moduli. Here we choose to use the ones forming the stiffness defined in [eq:stiffness]: \begin{equation} \label{eq:damage_yield} \mathcal{F} = \sigma_{e} - \frac{\sqrt{2}G_{e}}{K_{e}} \sqrt{\frac{3 - \xi_{cr}^{2}}{\xi_{cr}^{2}}} p. \end{equation} The inelastic strain update is conducted following a non-associative viscoplastic model using [eq:damage_yield] as a yield function. The update therefore follows the procedure describe in [Viscoplasticity](application_development/viscoplasticity.md). The general update procedure is therefore conducted in the following order: 1. Trial State: \$p^{tr} = \tilde{p}^{tr} + K_{e} \Delta \varepsilon_{v}^{tr}\$ and \$\sigma_{e}^{tr} = \tilde{\sigma}_{e}^{tr} + G_{e} \Delta e_{d}^{tr}\$ 2. Inelastic strain update: 3. Inelastic correction: 3. Damage and strain correction: \$\sigma_{ij} = \bar{\sigma}_{ij} - \mathbb{C}^{\xi}_{ijkl} : \Delta\varepsilon_{kl} - \sigma_{ij}^{\alpha} \Delta \alpha\$ !alert note prefix=False The friction coefficient in [eq:damage_yield] is not always defined due to the square roots in its expression and in [eq:critical_strain_ratio]. ## Damage evolution After updating the stress following the previously described procedure, we compute the rate of damage accumulation as: \begin{equation} \frac{\partial \alpha}{\partial t} = \frac{\mathcal{F}}{\eta_{\alpha}} \end{equation} The expression of the damage accumulation shows that the damage accumulation is controlled by the amount of overstress after the inelastic update. If the deformation is mainly brittle, the accumulation of inelastic strain is quite small and therefore leading to a significant damage accumulation whereas if the deformation is mainly ductile, the inelastic strain will be significant and therefore reduce the amount of accumulated damage. !bibtex bibliography \ No newline at end of file
 ## Some identities In the following description, we make use of the following identities extended from [cite:dunne2005]. Stress invariants: \begin{equation} \begin{aligned} p &= -\frac{\sigma_{kk}}{3} \\ \sigma_{e} &= \sqrt{\frac{3}{2}\tau_{ij}:\tau_{ij}} \end{aligned} \end{equation} Strain invariant: \begin{equation} \begin{aligned} \Delta \varepsilon_{v}^{in} &= - \Delta \varepsilon_{kk}^{in} \\ \Delta e_{d}^{in} &= \sqrt{\frac{2}{3}\Delta e_{ij}^{in}:e_{ij}^{in}} \end{aligned} \end{equation} These invariants can be used to express relations between stress invariants and their trial states: \begin{equation} \label{eq:identity_stress_strain} \begin{aligned} p &= p^{tr} - K \Delta \varepsilon_{v}^{in} \\ \sigma_{e} &= \sigma_{e}^{tr} - 3 G \Delta e_{d}^{in} \end{aligned} \end{equation} \ No newline at end of file
 # Application Development Here we list some useful infos for developers of LYNX - [Plasticity](application_development/plasticity.md) - [Viscoplasticity](application_development/viscoplasticity.md) - [Damage rheology](application_development/damage_rheology.md) \ No newline at end of file
 # Plasticity Here we describe the update procedure and tangent operator for non-associative plasticity. !include application_development/identities.md !include application_development/yield_function.md ## Flow rules For plastic deformation, the yield function follows the following rule: \begin{equation} \mathcal{F} \leqslant 0 \end{equation} The flow rule for the plastic strain increment is written as follow: \begin{equation} \Delta \varepsilon_{ij}^{p} = \Delta \lambda\frac{\partial \mathcal{G}}{\partial \sigma_{ij}} \end{equation} This expression can be used to express the invariants of the plastic strain increment: \begin{equation} \begin{aligned} &\Delta \varepsilon_{v}^{p} = - \beta \Delta \lambda \\ &\Delta e_{d}^{p} = \Delta \lambda \end{aligned} \end{equation} where \$\Delta \lambda\$ is the plastic increment. It follows the following rule: \begin{equation} \mathcal{F}\Delta \lambda = 0 \end{equation} which can be expressed as: \begin{equation} \begin{aligned} \Delta \lambda &= 0 \quad \text{if} \quad \mathcal{F} < 0 \\ \Delta \lambda &> 0 \quad \text{if} \quad \mathcal{F} = 0 \end{aligned} \end{equation} Using Eq. 3, the plastic increment can be written: \begin{equation} \Delta \lambda = \frac{<\mathcal{F}^{tr}>}{3G + \alpha \beta K} \end{equation} ## Tangent operator modulus Here we extend the tangent operator modulus given in [cite:dunne2005] to account for volumetric deformation and non-associative models. The tangent operator modulus is defined as: \begin{equation} \mathbb{D}_{ijkl} = \frac{\delta \sigma_{ij}}{\delta \varepsilon_{kl}} \end{equation} !bibtex bibliography \ No newline at end of file
 # Viscoplasticity Here we describe the update procedure and tangent operator for non-associative viscoplasticity. !include application_development/identities.md !include application_development/yield_function.md ## Flow rules The flow rules for the viscoplastic strain increment is defined as: \begin{equation} \Delta \varepsilon_{ij}^{vp} = \frac{<\mathcal{F}> \Delta t}{\eta}\frac{\partial \mathcal{G}}{\partial \sigma_{ij}} \end{equation} This expression can be rearranged by considering the magnitude of the viscoplastic strain rate \$\Delta\lambda\$: \begin{equation} \begin{aligned} &\Delta \varepsilon_{v}^{vp} = - \beta \Delta \lambda \\ &\Delta e_{d}^{vp} = \Delta \lambda \\ &\Delta \lambda = \frac{<\mathcal{F}> \Delta t}{\eta} \end{aligned} \end{equation} Using [eq:identity_stress_strain], the increment of viscoplastic strain can be written: \begin{equation} \Delta \lambda = \frac{1}{\left(1 + \frac{\left(3G + \alpha\beta K\right)\Delta t}{\eta}\right)}\frac{<\mathcal{F}^{tr}>\Delta t}{\eta} \end{equation} Furthermore, using the expression of the plastic increment \$\Delta \lambda^{p}\$ described in [Plasticity](application_development/plasticity.md), the previous expression can be expressed as: \begin{equation} \Delta \lambda = \frac{\frac{\left(3G + \alpha\beta K\right)\Delta t}{\eta}}{\left(1 + \frac{\left(3G + \alpha\beta K\right)\Delta t}{\eta}\right)} \Delta \lambda^{p} \end{equation} ## Tangent operator modulus !bibtex bibliography \ No newline at end of file
 ## Yield function and Potential We use a Drucker-Prager like yield function: \begin{equation} \mathcal{F} = \sigma_{e} - \alpha p - k, \end{equation} where \$\alpha = \sqrt{3} \sin \left(\varphi\right)\$ and \$k = \sqrt{3} C \cos \left(\varphi\right)\$. \$\varphi\$ is the friction angle and \$C\$ is the cohesion of the material. The potential (for non-associative models) is defined as: \begin{equation} \mathcal{G} = \sigma_{e} - \beta p - k, \end{equation} where \$\beta = \sqrt{3} \sin \left(\psi\right)\$ with \$\psi\$ as the dilation angle. \ No newline at end of file
 # Application Usage Here will be some infos about the usage of LYNX \ No newline at end of file
 @article{lyakhovsky1997, author = {Lyakhovsky, Vladimir and Reches, Ze'ev and Weinberger, Ram and Scott, Thurman E.}, title = {Non-linear elastic behaviour of damaged rocks}, journal = {Geophysical Journal International}, year = {1997}, volume = {130}, number = {1}, pages = {157-166}, doi = {10.1111/j.1365-246X.1997.tb00995.x}, url = {http://dx.doi.org/10.1111/j.1365-246X.1997.tb00995.x} } @article{lyakhovsky2015, author = {Lyakhovsky, Vladimir and Zhu, Wenlu and Shalev, Eyal}, title = {Visco-poroelastic damage model for brittle-ductile failure of porous rocks}, journal = {Journal of Geophysical Research: Solid Earth}, year = {2015}, volume = {120}, number = {4}, pages = {2179-2199}, doi = {10.1002/2014JB011805}, url = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1002/2014JB011805} } @book{dunne2005, title = {Introduction to Computational Plasticity}, author = {Dunne, F. and Petrinic, N.}, isbn = {9780198568261}, lccn = {2005019639}, series = {Oxford series on materials modelling}, url = {https://global.oup.com/academic/product/introduction-to-computational-plasticity-9780198568261?cc=de&lang=en&}, year = {2005}, publisher = {Oxford University Press, USA} } \ No newline at end of file
 !row! class=row !col! class=s12 m6 l4 ## [Application Usage](application_usage/index.md) - [Examples](examples/index.md) !col-end! !col! class=s12 m6 l4 ## [Application Development](application_development/index.md) !col-end! !col! class=s12 m6 l4 ## Infrastructure - [Python](utilities/python/index.md) !col-end! !row-end! \ No newline at end of file
 # Examples - [Frequently Asked Questions](help/faq.md) - [Troubleshooting](help/troubleshooting.md) - [Developer Tools](help/development/index.md) - [GFZ Linux cluster usage](help/glicconnectivity.md) - [Contact Us](help/contact_us.md)
 # Getting Started Here will be some infos about installing MOOSE and LYNX \ No newline at end of file
 ## [Help](help/index.md) - [Frequently Asked Questions](help/faq.md) - [Troubleshooting](help/troubleshooting.md) - [Developer Tools](help/development/index.md) - [GFZ Linux cluster usage](help/glicconnectivity.md) - [Contact Us](help/contact_us.md)
 # Contact us Here will be listed possibilities to contact the main developers of LYNX \ No newline at end of file
 # Development Here will be some infos and tips for tools to use for developers \ No newline at end of file
 # FAQ Here will be a FAQ \ No newline at end of file
 # GFZ Linux Cluster connectivity Here will be some infos about using LYNX on the GFZ Linux Cluster \ No newline at end of file
 # Help Here will be some examples or benchmarks described \ No newline at end of file
 # Troubleshooting Here will be some infos about troubleshooting \ No newline at end of file
 # Python Here will be some infos and tips about the different python scripts useful for LYNX users and developers \ No newline at end of file