3. Digital integration#

With regard to the integration of the law of behavior, i.e. the calculation of internal variables and stresses with a given (mechanical) deformation history, there is no longer any need to distinguish whether it is a local formulation or a gradient formulation. In fact, the impact of this last one is limited to modifying the work hardening function according to (). Here we will continue to rate it \(R(\kappa )\) without distinction.

On the other hand, we will distinguish the plastic and viscoplastic cases, even if it can be shown that the latter is also limited to a correction of the threshold function in the discretized equations.

3.1. Discretized equations in the case without viscosity#

The time discretization of behavioral equations is based on a staged diagram: for fixed damage, an implicit Euler scheme is applied (even in viscoplasticity) to calculate the plastic variables (plastic deformation, work-hardening variable) as well as the stress, i.e. the different variables of the problem are expressed at the final moment of the time step in question. Then the evolution of the various contributions to damage is evaluated by knowing the evolution of the plastic variables. Refer to [Zhang et al., 2018] for more information on time discretization and the resolution of the corresponding algebraic system.

We note \({Q}_{n}\) the value of a quantity \(Q\) at the start of the time step, \(\mathrm{\Delta }Q\) its increment during the time step and (simply) \(Q\) its value at the end of the time step. The mechanical state at the start of time step \(({E}_{n},{{E}^{p}}_{n},{\kappa }_{n},{f}_{n}^{\mathit{nu}},{f}_{n}^{\mathit{gr}},{d}_{n}^{\mathit{co}},{d}_{n})\) is assumed to be known as well as the deformation increment \(\mathrm{\Delta }E\) (and therefore also the deformation \(E\)). It is then a question of calculating the increments of internal variables as well as the constraint at the end of time step \(T\).

Regarding the damage value chosen to integrate plasticity, [Zhang et al., 2018] proposed adopting the one at the beginning of the time step, i.e. \({d}_{\mathit{ex}}={d}_{n}\). For reasons of precision of integration (and therefore of the size of the time step), we enrich this diagram by extrapolating the damage during a time step by relying on its speed of evolution at the previous step. More precisely, we define:

(3.1)#\[ \ dot {{d} _ {n}} =\ frac {{d}} _ {n} - {d} _ {n-1}} {{t} _ {n} _ {n-1}}\ text {;} {n-1}}}\ text {;} {;} {d}} _ {d} _ {n} _ {n}} = {d} _ {n} +\ mathrm {\ theta} (t- {t} _ {n}}}}\ text {;};} {d}} _ {n}} = {d} _ {n}}})\ dot {{d} _ {n}}\]

where the value of \(\theta\) is set by the user under the COMPORTEMENT/PARM_THETA keyword; the value \(\theta =1/2\) is recommended.

Now knowing the extrapolated damage value, we can proceed with the implicit integration of plasticity. If \({d}_{\mathit{ex}}\ge {d}_{f}\), we simply switch to the broken point regime and \(T=0\). Otherwise, the discretization of the stress-strain relationship () is written as follows:

\[\]

: label: eq-30

T=Kmathrm {tr} (E- {{E} ^ {e} ^ {p}}} _ {n} -mathrm {Delta} {E} ^ {p})mathit {Id} +2mathrm {mu}mathrm {mu}}mathrm {mu}}mathrm {mu}mathrm {mu}}mathrm {dev} (E- {{E}} ^ {n})mathit {Id} +2mathrm {mu}}mathrm {mu}}mathrm {mu}mathrm {mu}mathrm {mu}mathrm {dev} (E- {{E}} ^ {n}) -mathrm {Delta} {p})

We choose to show an elastic stress (or elastic test stress), noted \({T}^{e}\) and which is known:

\[\]

: label: eq-31

T= {T} ^ {e} -Kmathrm {tr} (mathrm {Delta} {E} ^ {p}) -2mathrm {mu}mathrm {dev} (mathrm {Delta} {tr} (mathrm {Delta} {tr}) (mathrm {Delta} {tr} (mathrm {Delta} {tr} (mathrm {Delta} {tr} {E}) (mathrm {Delta} {tr} (mathrm {Delta} {tr} {E}) (mathrm {Delta} {tr} (mathrm {Delta} {tr}} (mathrm {Delta} {tr}) (mathrm {Delta}} ^ {p}} _ {n})mathit {Id} +2mathrm {mu}mathrm {dev} (E- {{E} ^ {p}}} _ {n})

The discretization of the threshold function is simply written:

(3.2)#\[ F (T,\ mathrm {\ kappa}) =\ frac {{T} _ {\ text {*}}} {J} -R (\ mathrm {\ kappa})\]

And the consistency condition is equal to:

(3.3)#\[ \ mathrm {\ Delta}\ mathrm {\ kappa}\ ge 0\ text {;} F (T,\ mathrm {\ kappa})\ le 0\ text {;}\ mathrm {\ Delta}\ mathrm {\ Delta}\ mathrm {\ delta}\ mathrm {\ kappa}\ ge 0\ text {;}\ ge 0\ text {\ kappa}) =0\]

In particular, in plastic load, \(F=0\), so that it is possible to derive/to establish the equivalent stress of GTN as a function of the level of work hardening:

(3.4)#\[ {T} _ {\ text {*}}}\ text {=}\ text {=}\ widehat {T} (\ mathrm {\ kappa})\ equiv JR (\ mathrm {\ kappa})\]

In the case of a regular flow, the temporal discretization of () is written as:

(3.5)#\[ \ mathrm {tr} (\ mathrm {\ Delta} {E} {E}} ^ {p}) =3\ frac {\ mathrm {\ lambda}} {J}\ mathrm {\ Theta}\ left (\ frac {\ Delta}} {\ delta}} {E}} {E}}) =3\ frac {\ Theta}\ left (\ frac {{T}}\ left (\ frac {{T}}\ left (\ frac {{T}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}\ left (\ frac {eq}}} {{T} _ {\ text {*}}}}}\ right)\ mathrm {\ Lambda}\ left (\ frac {{T} _ {H}}} {{T}}} {{T}} _ {{T} _ {\ text {*}}}\ right)\]
(3.6)#\[ \ mathrm {dev} (\ mathrm {\ Delta} {E} {E}} ^ {p}) =\ frac {3} {2}\ frac {\ mathrm {\ lambda}} {J}\ mathrm {\ Theta}}\ left (\ frac {\ Theta}}\ left (\ frac {{T}}}} {{T}}} {\ text {*}}} {J}}\ mathrm {\ Theta}}\ mathrm {\ Theta}}\ mathrm {\ Theta}}\ left (\ frac {\ Theta}}\ left (\ frac {{T}}}} {{T}} _ {\ text {*}}}} {J}}\ mathrm {\ Theta} T} _ {\ mathit {eq}}} {{T}}} {{T} _ {\ text {*}}}\ right)\ frac {\ mathrm {dev} (T)}} {{T}}} {{T} _ {\ text {*}}}\]

The following functions have been introduced:

(3.7)#\[ \ mathrm {\ Lambda} (x) =\ frac {1} {2} {2} {2} {d} _ {\ mathit {ex}}\ phantom {\ rule {0.5em} {0ex}} {0ex}}}\ mathrm {sinh}}}\ mathrm {sinh}\ left (\ frac {3} {2} {q}} _ {2} x\ right)\ text {;}\ mathrm {\ Theta} (x, y) = {\ left [{y} ^ {2} +3x\ mathrm {\ Lambda} (x)\ right]} ^ {-1}\]

By substituting () and () in (), we deduce:

(3.8)#\[ \ frac {{T} _ {H} ^ {e} - {T} - {T} _ {H}} {H}} {3K} =\ frac {\ mathrm {\ Theta}}\ left (\ frac {\ Theta}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}\ left (\ frac {{T}}}}\ left (\ frac {{T}}}\ left (\ frac {mathit {eq}}} {{T} _ {\ text {*}}}}\ right)\ mathrm {\ Lambda}\ left (\ frac {{T} _ {H}} {H}}} {{T}} _ {{T}} _ {\ text {*}}}\ right)\]
(3.9)#\[ \ mathrm {dev} (T) = {\ left [1+3\ mathrm {\ mu}\ frac {\ mathrm {\ lambda}} {J}\ mathrm {\ Theta}\ left (\ frac {{T}}\ left (\ frac {{T}} _ {T}}}},\ frac {{T}}\ left (\ frac {{T}}\ left (\ frac {{T}}\ left (\ frac {{T}}\ left (\ frac {T}}\ left (\ frac {{T}}\ left (\ frac {T}}\ left (\ frac {T}}\ left (\ frac {{T}}\ left (\ frac {T}}\ left (\ frac {q}}} {{T} _ {\ text {*}}}}\ right)\ frac {1} {{T} _ {\ text {*}}}\ right]}} ^ {-1}\ mathrm {-1}\ mathrm {dev} ({T} ^ {e})\]

This last expression indicates that \(T\) has the same direction and meaning as \({T}^{e}\). In addition, by substituting \(\mathrm{\Theta }\) with its expression from (), we get the value of \({T}_{\mathit{eq}}\) according to \({T}_{H}\) and \({T}_{\text{*}}\):

(3.10)#\[ {T} _ {\ mathit {eq}} = {T}} = {T} _ {\ mathit {eq}}} ^ {e} {\ left [1+\ frac {\ mathrm {\ mu}} {K}} {K}}\ frac {{T}}} {K}} {K}}\ frac {{T}}} {K}\ frac {{T}}} {K}\ frac {{T}}\ frac {{T}}} {K}\ frac {{T}}}\ frac {{T}}} {K}\ frac {{T}}} {K}\ frac {{T}}} {K}\ frac {{T}}} {K}\ frac {{T}}}\ Lambda} (\ frac {{T} _ {H}}} {{H}}} {{T}} _ {\ text {*}}})}\ right]} ^ {-1}\ equiv {\ widehat {T}}}} _ {\ widehat {T}}}} _ {\ widehat {T}}}} _ {\ widehat {T}}}} _ {\ widehat {T}}}} _ {\ widehat {T}}}} _ {\ widehat {T}}}} _ {\ widehat {T}}}} _ {\ widehat {T}}}} _ {\ widehat {T}}}}\]

Given the definition of the equivalent constraint of GTN (), we can express an implicit link between \({T}_{H}\) and \({T}_{\text{*}}\) by substituting () for it:

(3.11)#\[ \ widehat {G} ({T} _ {H}, {T}}, {T} _ {\ text {*}})\ equiv {\ left [\ frac {{\ widehat {T}}} _ {\ mathit {eq}}}} ({\ mathit {eq}}}} ({\ mathit {eq}}}} ({T}}}) {\ mathit {eq}}} ({T}}}) {\ mathit {eq}}} ({T}}} ({T}}}) {\ mathit {eq}}} ({T}}} ({T}}}) {\ mathit {eq}}} ({T}}}) {\ mathit {eq}}} ({T}}\ right]} ^ {2} +2 {d} _ {\ mathit {ex} _ {\ mathit {ex}}}\ mathrm {cosh}\ left [\ frac {3} {q} _ {2}\ frac {{T}} _ {{T}}}\ right] -1- {d} _ {\ mathit {ex}} _ {\ mathit {ex}} _ {\ mathit {ex}} _ {\ mathit {ex}} _ {{T}}} {\ mathit {ex}}} ^ {2}}\ text {=} 0\]

The plastic multiplier, equal to \(\mathrm{\Delta }\kappa\), is deduced from ():

(3.12)#\[ \ mathrm {\ Delta}\ mathrm {\ kappa}\ text {\ kappa}\ text {=}\ widehat {\ mathrm {\ lambda}}} ({T}}, {T} _ {\ text {*}}})\ equiv J\ text {*}}})\ equiv J\ frac {{T} _ {*}}})\ equiv J\ frac {{T} _ {H}} {3K\ mathrm}} {3K\ mathrm\ Lambda}\ left (\ frac {{T} _ {H}} {{H}}} {{T} _ {\ text {*}}}\ right)}\ frac {1} {\ mathrm {\ Theta}\ left\ left (\ frac {{T}}}\ left (\ frac {{T}} _ {\ text {*}}}}},\ frac {\ Theta}\ left (\ frac {{\ Theta}}\ left (\ frac {{T}} _ {H}}} _ {\ text {*}}}},\ frac {{\ Theta}}\ left (\ frac {{\ Theta}}\ left (\ frac {{T}} _ {H}}}}} _ {\ mathit {eq}} ({T} _ {H}, {H}}, {T} _ {\ text {*}})} {{T} _ {\ text {*}}}}\ right)}\]

When the flow is singular, \({T}_{\text{*}}=0\) so \(T=0\), which makes it possible to calculate \(\mathrm{\Delta }{E}^{p}\) via (). It then remains to verify that the flow does indeed belong to the cone prescribed by () i.e., after discretization:

(3.13)#\[ {\ mathrm {\ Pi}} _ {N} (\ mathrm {\ Delta} {E} ^ {p}, {d} _ {\ mathit {ex}})\ le\ frac {\ frac {\ mathrm {\ mathrm {\ Delta}\ kappa} {J}\]

Knowing the evolution of plasticity \(\mathrm{\Delta }{E}^{p}\) and \(\mathrm{\Delta }\kappa\), we can now proceed with the integration of porosity. Germination porosity \({f}^{\mathit{nu}}\) is simply calculated using the functions () and (); the cumulative plastic deformation is evaluated as follows:

(3.14)#\[ \ mathrm {\ Delta} {E} _ {\ mathit {eq}}} ^ {p}} =\ sqrt {\ frac {2} {3}\ mathrm {\ Delta} {E} {E} {E} ^ {p}} ^ {p}}\ mathrm {:}\ mathrm {\ Delta} {E} {p}}\]

Concerning the growth porosity, a theta-scheme is applied, with the same value of \(\theta\) as during the prediction phase. The corresponding discretization is written as:

(3.15)#\[ \ mathrm {\ Delta} f-\ mathrm {\ delta} {\ delta} {f}} ^ {\ mathit {nu}} = (1-\ mathrm {\ theta} f- (1-\ mathrm {\ theta}) {f}\ theta}) {f} _ {n})\ text {}\ mathit {nu}}} = (1-\ mathrm {\ theta} f- (1-\ mathrm {\ theta})\]

From this we deduce:

(3.16)#\[ \ left [1+\ mathrm {tr}\ mathrm {\ Delta} {E} {E} ^ {p}\ right] {f} ^ {\ mathit {gr}} = {f} _ {n} ^ {\ mathit {gr}} ^ {\ mathit {gr}} ^ {\ mathit {gr}} ^ {\ mathit {nu}}} = {f}} = {f} _ {n} ^ {n} ^ {n} ^ {n} ^ {n} ^ {n} ^ {n} ^ {n} ^ {n} ^ {n} ^ {\ n} ^ {\ n} ^ {\ n} ^ {\ n} ^ {\ n} ^ {\ n} ^ {\ n} ^ {\ n} ^ {\ n} ^ {\ n} ^ {eta}) {f} _ {n})\ mathrm {tr}\ mathrm {\ Delta} {E} ^ {p})\]

Finally, coalescence damage is simply defined via:

(3.17)#\[ {d} ^ {\ mathit {co}}} =\ mathrm {max}}\ left ({d} _ {n} ^ {\ mathit {co}}}, {q} _ {1} ({f}} {1}} ({f}} ^ {f} ^ {\ text {*}} -f)\ right)\]

3.2. Solving the discretized problem without viscosity#

Preliminary note: the equations are solved to a certain degree of precision. If we write \(ϵ\) the precision provided by the user via the RESI_INTE_RELA keyword, we can enter the following details, respectively in terms of stress, deformation and without units for equation ():

(3.18)#\[ {} _ {\ sigma} =R (0)\ text {;} {}} _ {\ kappa} =\ frac {1} {10}\ frac {R (0)} {E} {E}\ text {;}\ text {;} {; text {;;} {; text {;;} {; text {;;} {; text {;;;;;} {; text {;;;;;} {;} {;}} _ {G} = (1- {d}} _ {\ mathit {ex}})\]

If \(1-{d}_{\mathit{ex}}<{ϵ}^{1/2}\), we consider that the point is broken: \(T=0\), \(\mathrm{\Delta }\kappa =0\), \(f={f}_{F}\) (even if \({d}_{\mathit{ex}}<{d}_{f}\), because at the numerical precision requested, the « broken point » solution is actually acceptable) .Otherwise, the discretized problem must be solved.

The latter admits a unique solution. We start by determining which regime it falls under: elastic response, plastic response to singular flow or plastic response to regular flow. The solution is elastic if:

(3.19)#\[ {T} _ {\ text {*}}} ^ {e} <\ widehat {T} ({\ kappa} _ {n})\]

In this case, \(\mathrm{\Delta }\kappa =0\), \(\mathrm{\Delta }{E}^{p}=0\), and \(T={T}^{e}\).

If the solution is not elastic, the case of a singular plastic flow is examined. In this case, \({T}_{\text{*}}=0\), \(T=0\), \(\mathrm{\Delta }{E}^{p}\) is obtained via () and the corresponding value of \({\mathrm{\Pi }}_{N}\) is denoted by \({\mathrm{\Pi }}_{N}^{s}\) according to (). We also calculate \({\kappa }^{z}\) such that (resolution by a Newton method):

\[\]

: label: eq-50

widehat {T} ({kappa} ^ {z}) =0

The flow is singular if \({\kappa }^{z}\ge {\kappa }_{n}\) and \(J\phantom{\rule{0.5em}{0ex}}{\mathrm{\Pi }}_{N}^{s}\le \mathrm{\Delta }{\kappa }^{z}\) according to (); we then have \(\kappa ={\kappa }^{z}\).

Finally, in the opposite case, the plastic flow is regular and in particular we have \(0<{T}_{\text{*}}<{T}_{\text{*}}^{e}\). It can be noted that at \({T}_{\text{*}}\) given, equation () makes it possible to go back to the value of \({T}_{H}\). By noting \({T}_{H}=p\phantom{\rule{0.5em}{0ex}}{T}_{H}^{e}\), the \(\widehat{g}\mathrm{:}p\to \widehat{G}({T}_{H},{T}_{\text{*}})\) function is increasing and the solution checks the \(0\le p\le 1\) framework. To facilitate the resolution, we can calculate a minimum bound \({p}_{\mathit{min}}>0\) by increasing the function \(\widehat{g}\). Noting \(r\equiv {T}_{H}/{T}_{\text{*}}\) and \(\alpha \equiv \mu /K\), we have:

(3.20)#\[ \ widehat {g} (p) = {\ left (\ frac {{T}} _ {\ mathit {eq}} ^ {e}} {{T} _ {\ text {*}}}}\ right)}\ right)}}\ right)}} {\ right)}} ^ {2} {\ right)}} ^ {2} {\ left} {\ left (\ frac {\ mathrm {\ Lambda} (r)} {\ alpha\ frac {{T}}}}\ right)}}\ right)} ^ {2} {\ right)} ^ {2} {\ left)} ^ {2} {\ left (\ frac {\ mathrm {\ Lambda} (r)} {\ alpha\ frac {{T}}}} {e}} {{T} _ {\ text {*}}}} +\ mathrm {\ Lambda} (r) -\ alpha\ phantom {\ rule {0.5em} {0ex}} r}\ right)}}\ right)}} ^ {2}}}} ^ {2} + {d}} + {d}} _ {\ mathrm {ex}} _ {\ mathit {ex}}\ phantom {\ rule {0.5em} {0ex}}} 2\ mathrm {chm}} 2\ mathrm {chm}} (\ frac {3} {2} {q} _ {2} r) - {(1- {d} _ {\ mathit {ex}})})}} ^ {2}\]

We can analytically reduce the denominator of the second factor and we denote it \({D}_{\mathit{min}}\). As in addition :math:``, it comes:

\[\]

: label: eq-52

widehat {g} (p)le {left (frac {{T}} _ {mathit {eq}}} ^ {e}} {{T} _ {text {*}}}}right)}right)}right)}}right)}} ^ {2} {2} {left} {frac {{T}}}right)} ^ {2} + {d} _ {mathit {ex}}}phantom {rule {0.5em} {0ex}} 2mathrm {sh} (frac {3} {2} {2} {q} {q} {q}} {q}} _ {2} r) - {(1- {d}} _ {mathit {ex}})} ^ {2}})} ^ {2} {2}

The root of the right-hand side can be obtained analytically and allows us to go back to the line: math: {p} _ {mathit {min}}}. A resolution of the equation:math: widehat {g} (p) =0 by a Newton method in the range:math:` {p} _ {mathit {min}}le ple 1` makes it possible to find the solution:math: p ({T} _ {text {*}}}) `. The precision is checked via the convergence condition:math: `left|widehat {g}right|le {} _ {G}.

We can thus reduce the incremental problem to the only unknown \(\mathrm{\Delta }\kappa\). Indeed, at a given \(\kappa\), we can calculate \({T}_{\text{*}}=\widehat{T}(\kappa )\). From there, we deduce \(p({T}_{\text{*}})\) by solving the previous equation. Knowing \(p\) therefore \({T}_{H}\), we can calculate \(\lambda =\widehat{\lambda }({T}_{H},{T}_{\text{*}})\) via (), which brings the problem back to solving the scalar equation \(\mathrm{\Delta }\kappa =\lambda\).

Thanks to the convexity properties of the equivalent stress \({T}_{\text{*}}\) compared to \(T\), the analysis of the « return mapping » scheme used shows that at \(\lambda\) increasing from 0 to \(J\phantom{\rule{0.5em}{0ex}}{\mathrm{\Pi }}_{N}^{s}\), \({T}_{\text{*}}\) is decreasing from \({T}_{\text{*}}^{e}\) to 0. Solving the problem therefore comes down to finding the intersection of the increasing curve \(\mathrm{\Delta }\kappa \to {T}_{\text{*}}\) with the decreasing curve \({T}_{\text{*}}\to \lambda\). A minimum bound on \(\mathrm{\Delta }\kappa\) is provided by the maximum of 0 and \(\mathrm{\Delta }{\kappa }_{z}\), because \({T}_{\text{*}}\) solution must be positive and \(\mathrm{\Delta }\kappa\) as well. A maximum bound is provided by the minimum of \(J\phantom{\rule{0.5em}{0ex}}{\mathrm{\Pi }}_{N}^{s}\) and \(\mathrm{\Delta }{\kappa }^{e}\) such as \(\widehat{T}({\kappa }^{e})={T}_{\text{*}}^{e}\) (if it exists), because \({T}_{\text{*}}\) solution must be positive and less than \({T}_{\text{*}}^{e}\).

The equation is solved by a Newton method between these two terminals. We check the precision of the solution by considering that the algorithm has converged as soon as one of the conditions:math: left|mathrm {Delta}kappa -lambdaright|le {} _ {kappa} _ {kappa} or:math: {kappa} or:math:left|left|widehat {T} (mathrm {Delta}right|le {}} _ {kappa} _ {kappa} or:math:left|left|widehat {T} (mathrm {Delta}right|le {} (lambda)right|the {}} _ {sigma} has been reached. We choose to initialize Newton’s method with the solution:math: `mathrm {Delta} {Delta} {kappa} _ {mathit {VM}} of the equivalent von Mises problem (i.e. by fixing:math: {T} _ {H} =0) when it respects the limits or otherwise by a string method with respect to the values at the terminals (i.e. by fixing: math:` {T} _ {H} =0`) when it respects the limits or otherwise by a string method with respect to the values at the terminals.

Finally, we go back to the constraint via the following relationship:

(3.21)#\[ T= {T} _ {H}\ mathrm {Id} + {T} + {T} _ {\ mathit {eq}}\ frac {\ mathrm {dev}\ phantom {\ rule {0.5em} {0ex}} {0ex}}} {T}} {\ mathit {eq}}\ phantom {\ rule {0.5em} {0ex}}} {0ex}}} {T}}\]

3.3. Solving the discretized problem in the viscoplastic case#

In the presence of viscosity, the consistency condition () is replaced by Norton’s law of evolution (). Once discretized, it is written:

(3.22)#\[ \ frac {\ mathrm {\ Delta}\ mathrm {\ kappa}}} {\ mathrm {\ Delta} t} = {\ left (\ frac {01:F (T,\ mathrm {\ kappa})) ⟩} {\ mathrm {\ kappa}) ⟩} {\ kappa}) ⟩}} {\ stackrel {~} {K}}\ right)} ^ {n}\]

And by reversing this relationship:

(3.23)#\[ {C} _ {\ mathrm {\ Delta} t} {\ mathrm {\ Delta} {\ Delta}\ mathrm {\ kappa}} ^ {q} =⟨F (T,\ mathrm {\ kappa}) ⟩\ text {\ delta} t}) ⟩\ text {\ delta} t} {\ mathrm {\ delta} t} =\ frac {\ stackrel {~} {K}} {K}} {{K}} {{\ mathrm} {\ mathrm {\ delta} t} =\ frac {\ stackrel {~} {\ kappa}) thrm {\ Delta} t} ^ {1/n}}}\ text {;} q=\ frac {1} {n} {n}\]

Like \(n>1\), \(0<q<1\).

It can still be expressed equivalently in the form of a Kuhn and Tucker relationship:

(3.24)#\[ \ mathrm {\ Delta}\ mathrm {\ kappa}\ ge 0\ text {;} {F} _ {v} (T,\ mathrm {\ kappa})\ le 0\ text {;} {;} {F} {F} _ {f} _ {v} (T,\ mathrm {\ kappa})\ mathrm {\ kappa})\ mathrm {\ delta}\ mathrm {\ kappa})\ mathrm {\ kappa} =0\]
(3.25)#\[ \ text {where} {F} _ {v} (T,\ mathrm {\ kappa}) =F (T,\ mathrm {\ kappa}) - {C} _ {\ mathrm {\ Delta} t} {\ mathrm {\ Delta} (T,\ mathrm {\ Delta}}\ mathrm {\ Delta}}\ mathrm {\ Delta}}) =F (T,\ mathrm {\ kappa}) - {C} _ {\ mathrm {\ Delta} t} {\ mathrm {\ Delta} t} {\ mathrm {\ Delta} t} {\ mathrm {\ Delta} t} {\ mathrm {\ Delta} t} {\ mathrm {\ Delta} t} {\ mathrm {\ Delta}}} {J} - {R} _ {v} (\ mathrm {\ kappa})\ text {;} {R} _ {v} (\ mathrm {\ kappa}) =R (\ mathrm {\ kappa}) = R (\ mathrm {\ kappa}) + {\ mathrm {\ kappa}) = R (\ mathrm {\ kappa}) =R (\ mathrm {\ kappa}) =R (\ mathrm {\ kappa}) =R (\ mathrm {\ kappa}) =R (\ mathrm {\ kappa}) =R (\ mathrm {\ kappa}) =R (\ mathrm {\ kappa}) =R (\ mathrm {\ kappa}) =R kappa}} _ {n})}} ^ {q}\]

After discretization, the consideration of viscosity is reduced to the addition of a term (positive and increasing) in the work hardening function.

One might be tempted to apply the same resolution method as before but, unfortunately, this new term is not differentiable in \(\mathrm{\Delta }\kappa =0\) (infinite slope). This is why it is proposed to distinguish between two regimes, one with a steep slope, the other with a slight slope. The « border » slope is provided by \(R\text{'}(0)\) .More precisely, \(V(\mathrm{\Delta }\kappa )={C}_{\mathrm{\Delta }t}{\mathrm{\Delta }\kappa }^{q}\) is the term viscous. The border value \(\mathrm{\Delta }{\kappa }_{v}\) corresponds to:

(3.26)#\[ V\ text {'} (\ mathrm {\ Delta} {\ mathrm {\ kappa}} _ {v}) =R\ text {'} (0)\]

If \(\mathrm{\Delta }\kappa <\mathrm{\Delta }{\kappa }_{v}\), we are in the regime with a steep slope, i.e. dominated by viscosity. Conversely, if \(\mathrm{\Delta }\kappa >\mathrm{\Delta }{\kappa }_{v}\), we are in the low-slope regime, dominated by plasticity. Given the monotony of the scalar equation \(\mathrm{\Delta }\kappa -\widehat{\lambda }=0\) to be solved with respect to \(\mathrm{\Delta }\kappa\), we can determine from the start the regime of the solution and reduce the search interval if necessary.

In the regime dominated by plasticity, the equation is solved in \(\mathrm{\Delta }\kappa\) as in the previous paragraph; the term viscous does not present any particular numerical difficulties.

On the contrary, in the regime dominated by viscosity, a Newton method involving \(\mathrm{\Delta }\kappa\) is not effective (too steep slopes therefore very slow convergence). We then change the variable \(v=V(\mathrm{\Delta }\kappa )\) (which eliminates the steep slopes in the vicinity of 0) and we apply the Newton method with respect to \(v\). The convergence criteria remain unchanged.

3.4. Tangent matrix#

In the local case, it is a question of determining the tensor of order 4 \({H}_{\mathit{TE}}=\delta T/\delta E\). In the non-local case, it is also necessary to build the 2nd order tensors \({H}_{T\varphi }=\delta T/\delta \varphi\) and \({H}_{\kappa E}=\delta \kappa /\delta E\) as well as the scalar \({H}_{\kappa \varphi }=\delta \kappa /\delta \varphi\).

The tangent operator depends on the flow regime. In the elastic case, it is reduced to:

(3.27)#\[ \ mathrm {\ delta} T=K\ mathrm {tr} (\ mathrm {\ delta} E)\ mathit {Id} +2\ mathrm {\ mu}\ mathit {dev} (\ mathrm {\ delta}} (\ mathrm {\ delta} E)\ mathrm {\ delta} E)\ mathrm {\ delta} E)\ mathrm {\ delta} E)\ text {;}\ mathrm {\ delta} =0\]

In the case of the singular regime, the expression is also very simple:

(3.28)#\[ \ mathrm {\ delta} T=0\ text {;}\ mathrm {\ delta}}\ mathrm {\ delta} =- {\ left (\ frac {\ partial\ widehat {T}}} {\ partial\ widehat {T}}}} {\ partial}} {\ partial\ widehat {T}} {\ partial}} {\ partial\ widehat {T}} {\ partial}} {\ partial\ widehat {T}} {\ partial}} mathrm {\ varphi}}\ mathrm {\ delta}\ mathrm {\ varphi} +\ frac {\ partial\ widehat {T}} {\ partial J}\ frac {\ partial J}\ frac {\ partial J}\ frac {\ partial J}} {\ partial J}} {\ partial J}\ frac {\ partial J}\ frac {\ partial J}\ frac {\ partial J}\ frac {\ partial J}\ frac {\ partial J}}\ frac {\ partial J}\ frac {\ partial J}\ frac {\]

where the function \(\widehat{T}\) contains the terms related to the non local and to the viscosity where appropriate.

The regular flow regime leads to a more complex tangent operator. Here, we simply describe the main lines of the method for calculating it. This regime is characterized by solving the equation system \(\widehat{G}({T}_{H},{T}_{\text{*}};{T}_{H}^{e},{T}_{\mathit{eq}}^{e},J)=0\) and \(\mathrm{\Delta }\kappa -\widehat{\lambda }({T}_{H},{T}_{\text{*}};{T}_{H}^{e},{T}_{\mathit{eq}}^{e},J)=0\) with the relationship \({T}_{\text{*}}=\widehat{T}(\mathrm{\Delta }\kappa ;J,\varphi )\). The derivative of the implicit functions makes it possible to express the variations of the unknowns \(\delta {T}_{H}\) and \(\delta \kappa\) as a function of the variations of the system’s input data (2x2 linear system to be solved). From there, we can go back to the variation in stress by differentiating ().

Finally, it remains to link the variations in the input data to those of deformation \(E\) and \(\varphi\). The only difficulty (minimal) comes from the von Mises constraint. To do this, we recall the following relationship:

(3.29)#\[ \begin{align}\begin{aligned} \ mathrm {\ delta} {T} _ {\ mathit {eq}}} ^ {e}} =\ frac {3} {2}\ frac {\ mathrm {dev} {T} {T} {e}} {{e}}} {{e}}} {{e}} {{e}} {{e}}\\ \ mathrm {\ delta} {T} _ {\ mathit {eq}}} ^ {e}} =\ frac {3} {2}\ frac {\ mathrm {dev} {T} {T} {e}} {{e}}} {{e}}} {{e}} {{e}} {{e}}\end{aligned}\end{align} \]

3.5. Variables calculated during post-processing#

Four of the internal variables calculated during post-processing still need to be defined at this stage:

  • The part of the constraints linked to work hardening:

\[\]

: label: eq-62

text {SIEQ_ ECR =} J (1- {d} _ {mathit {ex}}) R (mathrm {kappa})

  • The part of the constraints linked to viscosity:

(3.30)#\[ \ text {SIEQ\ _ VSC =} J (1- {d} _ {\ mathit {ex}}) {\ mathit {ex}}) {C} _ {\ mathrm {\ Delta}}\ mathrm {\ Delta} {\ Delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta} {\ delta}\]
  • The part of the constraints linked to the non local:

(3.31)#\[ \ text {SIEQ\ _ NLC =} J (1- {d} _ {\ mathit {ex}}) (r\ mathrm {\ kappa} -\ mathrm {\ varphi})\]
  • The extrapolation error expressed in constraints:

(3.32)#\[ \ text {SIEQ\ _ ERX =}\ left (1-\ frac {{T} ^ {\ text {*}}} (T, {d} _ {\ mathit {ex}})} {{T}})} {{T} ^ {\ text {*}} {\ text {*}}} (T, d)}\ right)\ Green T\ Green\]