SoluteDepletion#
Source: models/solid_mechanics/crystal_plasticity/SoluteDepletion.py
Depletion of a solid-solution strengthening species as it is taken out of the matrix by precipitation, defined by \(\dot{c} = K \left\langle c_0 - c \right\rangle^{1/3} \left( c - c_{eq} \right)\) where \(c\) is the matrix concentration, \(c_0\) is the initial concentration, \(c_{eq}\) is the equilibrium concentration and \(K\) is the depletion coefficient.
\(K\) and \(c_{eq}\) are promotable parameters, so either may be supplied
as a constant or driven by another model – an ArrheniusParameter or an
interpolation for the usual temperature dependence of \(c_{eq}\).
The Macaulay bracket on \(c_0 - c\) is a deliberate departure from the bare \(\left( c_0 - c \right)^{1/3}\) of the specification: it keeps the cube root on its real branch if the state overshoots \(c_0\), which is reachable mid-Newton even when the converged solution satisfies \(c \le c_0\). The two agree wherever \(c \le c_0\).
On that inactive branch, and at the endpoint \(c = c_0\), both the rate
and its derivative are taken to be zero. The true derivative is unbounded
at the endpoint; the right-hand limit is used instead so that neither the
forward pushforward nor reverse-mode differentiation of this model emits
a nan into the Newton solve, and so that the two agree.
Inputs#
solute_concentration—input·Scalar· requiredCurrent matrix solute concentration
Outputs#
solute_concentration_rate—output·Scalar· defaultsolute_concentration_rateOptional name for the derived output (defaults to ‘solute_concentration_rate’, i.e. the ‘solute_concentration’ variable name with the ‘_rate’ suffix).
Parameters#
depletion_coefficient—parameter·Scalar· requiredDepletion coefficient
initial_concentration—parameter·Scalar· requiredInitial concentration
equilibrium_concentration—parameter·Scalar· requiredEquilibrium concentration, generally a function of temperature