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 · required

Current matrix solute concentration

Outputs#

solute_concentration_rate — output · Scalar · default solute_concentration_rate

Optional 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 · required

Depletion coefficient

initial_concentration — parameter · Scalar · required

Initial concentration

equilibrium_concentration — parameter · Scalar · required

Equilibrium concentration, generally a function of temperature