1 Introduction

Plastic deformation in single crystals can generally be construed as a process in which slip on a set of well-defined crystallographic planes results in irreversible shape changes in a material [1, 2]. Through its various forms, the crystal plasticity method (CP) has proven extremely successful in predicting crystalline materials deformation thanks to (i) the existence of a robust mathematical theory [1, 3,4,5], (ii) a strong connection between the physics of slip and the geometry of deformation [6], and (iii) the development of accurate and efficient integration algorithms [7,8,9,10]. While some challenges still remain, such as the indetermination of the active slip systems under a prescribed set of conditions [11], or the distinction between stored and geometrically-necessary dislocation density evolutions [12, 13], suitable approximations exist that are generally valid and give accurate results in most applications.

However, the standard implementation in CP models of crystallographic slip as a linear combination of plastic shear on a finite set of slip systems assumes that these slip systems are independent of each other [14,15,16]. Such notion is generally grounded on an adiabatic interpretation of dislocation-mediated shearFootnote 1, which is often questionable and leads to an homogeneous plastic response even in cases where valid localized deformation pathways exist [12, 17]. Such homogenization is mathematically not problematic, as the underlying constitutive models intrinsically ensure stability in the solutions. However, it is often at odds physically with the observed material response [18,19,20] in which symmetry in the evolution of plastic slip can naturally break and lead to a non-homogeneous distribution of plastic shear. Accounting for symmetry-breaking modalities in the slip response has typically been done by adding external probabilistic descriptors of certain internal variables [21,22,23,24,25]. Alternatively, stochasticity can be introduced intrinsically, via the integration algorithm itself, a practice widely used for integrating differential equation systems [26,27,28,29]. As such, stochastic fluctuations are an intrinsic part of the solution, not just an externally added variable. When suitably adapted for CP models, such solvers could lead to fluctuations in plastic shear that can numerically break the symmetry in slip systems with identical Schmid factors. These fluctuations can also be regarded as reflecting the natural intrinsic variability of certain internal variables, i.e., they can be justified as ‘physical’ in many cases.

The main objective of this paper is to develop a stochastic solver based on the residence time algorithm [30, 31] for standard single crystal plasticity problems. Under our approach, the mathematical formulation of the CP problem remains unchanged, which makes the algorithm completely general and independent of the constitutive framework and material model chosen. For proof of principle, here we focus on single-point material cases with no associated boundary-value problem. The paper is organized as follows. First, in Sect. 2 we provide an essential review of the theory and methods used here, including brief descriptions of the residence time algorithm and crystal plasticity approach. In Sect. 3, we present results of CP simulations of uniaxial deformation in single crystal tungsten using the proposed stochastic algorithm under a variety of different scenarios. Section 4 contains a detailed discussion of the main results as well as of the potential uses of the method. We finalize with the conclusions and acknowledgements.

2 Theory and methods

2.1 The residence time algorithm

The starting point is a (continuous) transition function \(P_{ij}(t)\) representing the probability that a random variable \(\xi _1(t)\) describing the state of a continuous-time Markov chain is \(X_j\) at time t having originated from an initial state \(X_i\) at time \(t=0\), i.e.Footnote 2:

$$\begin{aligned} P_{ij}(t)=\mathrm {Pr}\left( \xi _1(t) = X_j|~\xi (0) = X_i\right) \end{aligned}$$

As such, all the \(p_i(t)=\sum _{j\ne i}P_{ij}(t)\) conform a vector \(\mathbf {p}\) of probabilities of dimension N equal to the total number of states accessible to the system. A square positive-definite \(N\times N\) matrix \({\varvec{Q}}=\{q_{ij}\}\) satisfying \(\sum _{j\ne i}q_{ij}=r_i\) (where \(r_i\) is the exit rate from state \(X_i\)) gives the transition rates connecting all states \(X_i\) with all states \(X_j\) (\(q_{ij}=0\) when \(i=j\)). To preserve the Markovian structure of the process, all the coefficients \(q_{ij}\) are considered to be time-invariant.

The continuous-time master equation associated with \(\mathbf {p}\) and \({\varvec{Q}}\) is [32,33,34]:

$$\begin{aligned} \frac{dp_i(t)}{dt}=\sum _{j\ne i}\left[ q_{ji}p_j(t)-q_{ij}p_i(t) \right] \end{aligned}$$

The Markov chain representing this process generates a sequence of state transitions \(X_i\rightarrow X_j\) with probabilities \(P_{ij}=0\) (if \(i=j\)) or \(P_{ij}=q_{ij}/r_i\) (if \(i\ne j\)). Time reversibility of Eq. (1) results in the detailed balance condition: \(q_{ij}p_j=q_{ji}p_i\) (in matrix form, \({\varvec{Q}}\mathbf {p}^T={\varvec{Q}}^T\mathbf {p}\)), which allow us to express the above equation in matrix form as:

$$\begin{aligned} \dot{\mathbf {p}}=\left( {\varvec{Q}}-{\varvec{R}}\right) \mathbf {p} \end{aligned}$$

where \(R_{ij}=r_i\delta _{ij}\) is a diagonal matrix (as a matter of notation, here summation is explicitly indicated by the symbol ‘\(\sum \)’ and the corresponding indices).

The residence time in state \(X_i\), \(\delta t_i\) can be shown to follow an exponential distribution with mean \(1/r_i\) [26, 35], which allows us to define a probability \(\mathrm {Pr}\left( \delta t_i>t|\xi _1(0)=X_i\right) =r_i\exp \{-r_i\delta t_i\}\) from which to sample the residence time using a uniform random variable \(\xi _2\): \(\delta t_i=r_i^{-1}\log (1-\xi _2)\).

Solving the master equation (1) (or 2) fully characterizes the evolution of the system in time. However, in most applications of interest the total number N of states accessible to the system (dimension of the Markov space) is not known, resulting in undetermined \({\varvec{Q}}\) matrices and thus precluding the use of analytical or deterministic methods to solve the master equation. In such cases, the problem is characterized by a discrete Markov chain with infinite dimension, and approximate methods must be used. When the following two conditions are met, discrete event methods can be used to solve the master equation: (i) the probability of each event depends only on the state reached in the previous event (i.e., the system is defined by a 1st order Markov process), and (ii) the system remains unchanged during a transition between two states (i.e., the time spent during a transition is negligible compared to the residence time).

This is where the utility of the residence-time algorithm (also known as the kinetic Monte Carlo (kMC) method) resides. In particular, in rejection-free kMC (also known as ‘BKL’ after its original proponents [30]), once a transition between two states \(n\rightarrow m\) is selected with the corresponding probability \(q_{nm}/\sum _m q_{nm}\), it is executed and time is advanced by an amount equal to either \(1/\sum _m q_{nm}\) or obtained by sampling a uniform random number \(\chi \in (0,1]\) as \(\delta t_n=-\log (1-\chi )/\sum _m q_{nm}\). In this fashion, the system evolves in discrete time increments as the state space \(\{X\}\) is sampled, leading to a significant computational gain over standard Monte Carlo methods. The reader is referred to recent reviews for more information on the topic [34, 36].

2.2 Crystal plasticity model

2.2.1 Kinematics

For a deformable body occupying a volume \(\varOmega _0\) bounded by a surface \(\partial \varOmega _0\), a one-to-one mapping \(\mathbf {x}\left( \mathbf {X}, t\right) \) is assumed to exist between the position of material points in their reference position \(\mathbf {X}\) and their current position \(\mathbf {x}\). The deformation gradient of this mapping, \({\varvec{F}}=\partial \mathbf {x}/\partial \mathbf {X}\) is typically decomposed multiplicatively into plastic and elastic contributions, \({\varvec{F}}^{\mathrm{P}}\) and \({\varvec{F}}^{\mathrm{E}}\) as [37]:

$$\begin{aligned} {\varvec{F}} = {\varvec{F}}^{\mathrm{E}} {\varvec{F}}^{\mathrm{P}}={\varvec{I}}+\nabla \otimes \mathbf {u} \end{aligned}$$

where \(\mathbf {u}\) is the displacement vector. The rate of change of \({\varvec{F}}\) can be written as:

$$\begin{aligned} \dot{{\varvec{F}}}=\frac{\partial \dot{\mathbf {x}}}{\partial \mathbf {X}}=\frac{\partial \dot{\mathbf {x}}}{\partial \mathbf {x}}\frac{\partial \mathbf {x}}{\partial \mathbf {X}}={\varvec{L}}{\varvec{F}} \end{aligned}$$

where \({\varvec{L}}\) is the velocity gradient. \({\varvec{L}}\) additively decomposes into:

$$\begin{aligned} {\varvec{L}}=\dot{{\varvec{F}}}^{\mathrm{E}}{{\varvec{F}}^{\mathrm{E}}}^{-1}+{\varvec{F}}^{\mathrm{E}}\left( \dot{{\varvec{F}}}^{\mathrm{P}}{{\varvec{F}}^{\mathrm{P}}}^{-1}\right) {{\varvec{F}}^{\mathrm{E}}}^{-1}={\varvec{L}}^{\mathrm{E}}+{\varvec{L}}^{\mathrm{P}} \end{aligned}$$

where \({\varvec{L}}^{\mathrm{E}}\) and \({\varvec{L}}^{\mathrm{P}}\) are the elastic and plastic velocity gradients, respectively. In the small deformation limit (linearized kinematics),

$$\begin{aligned} \nabla \otimes \mathbf {u}={\varvec{H}}^{\mathrm{E}} + {\varvec{H}}^{\mathrm{P}} \end{aligned}$$

where \({\varvec{H}}^{\mathrm{E}}\) and \({\varvec{H}}^{\mathrm{P}}\) are the elastic and plastic distortions, i.e., \({\varvec{L}}^{\mathrm{E}}=\dot{{\varvec{H}}}^{\mathrm{E}}\) and \({\varvec{L}}^{\mathrm{P}}=\dot{{\varvec{H}}}^{\mathrm{P}}\). If the only mechanism of plastic deformation at the crystal level is dislocation slip along specific crystallographic directions, then we can write [38]:

$$\begin{aligned} \dot{{\varvec{H}}}^{\mathrm{P}}=\sum _{\alpha }{\dot{\gamma }}^{\alpha }\mathbf {s}^{\alpha }\otimes \mathbf {n}^{\alpha } \end{aligned}$$

where \({\dot{\gamma }}^{\alpha }\) denotes the plastic slip rate of slip system \(\alpha \), and \(\mathbf {s}^{\alpha }\) and \(\mathbf {n}^{\alpha }\) represent the corresponding slip and plane normal directions (expressed in the original frame of reference). The tensor \(\left( \mathbf {s}^{\alpha }\otimes \mathbf {n}^{\alpha }\right) \) is known as the Schmid tensor.

Under linear elasticity, the Cauchy stress can be obtained as a function of the elastic strain as,

$$\begin{aligned} {\varvec{\sigma }}={\mathbb {C}}:{\varvec{H}}^{\mathrm{E}}={\mathbb {C}}:{\varvec{\varepsilon }}^{\mathrm{E}} \end{aligned}$$

where \({\mathbb {C}}\) is the stiffness tensor of the crystal. For isotropic elastic systems, this second-order tensor can be written as a symmetric matrix \({\mathbb {C}}:=\left( \kappa -\nicefrac {2\mu }{3}\right) {\varvec{I}}\otimes {\varvec{I}}+2\mu {\varvec{1}}\), where \(\kappa \) and \(\mu \) are the bulk and shear modulus, and \({\varvec{I}}\) and \({\varvec{1}}\) are the second and fourth order identity matrices. The symmetricity of \({\varvec{\sigma }}\) and \({\mathbb {C}}\) renders \({\varvec{H}}^{\mathrm{E}}\) symmetric as well, which going forward we represent as \({\varvec{\varepsilon }}^{\mathrm{E}}\). Assuming an instantaneous elastic response, the rate form of Eq. (8) is:

$$\begin{aligned} \dot{{\varvec{\sigma }}}={\mathbb {C}}:\dot{{\varvec{\varepsilon }}}^{\mathrm{E}} \end{aligned}$$

The system evolves in time subjected to the kinematic boundary condition:

$$\begin{aligned} {\varvec{L}}=\dot{{\varvec{\varepsilon }}}_0,~\mathrm{in}~\varOmega _0 \end{aligned}$$

which combined with Eq.  (9) results in the following relation,

$$\begin{aligned} \dot{{\varvec{\varepsilon }}}^{\mathrm{E}}=\dot{{\varvec{\varepsilon }}}_0-\dot{{\varvec{H}}}^{\mathrm{P}} \end{aligned}$$

where \(\dot{{\varvec{\varepsilon }}}_0\) is a prescribed strain rate tensor.

2.2.2 Flow rule

The present CP model is rate dependent through the definition of \(\dot{{\varvec{\varepsilon }}}^{\mathrm{P}}\) in Eq. (7). The shear rates \({\dot{\gamma }}^{\alpha }\) are computed according to Orowan’s equation:

$$\begin{aligned} {\dot{\gamma }}^{\alpha } = \rho ^{\alpha }b^{\alpha }v^{\alpha } \end{aligned}$$

where \(\rho ^{\alpha }\), \(b^{\alpha }\) and \(v^{\alpha }\) are the dislocation density, Burger’s vector modulus, and velocity in slip system \(\alpha \). Here, we consider bcc metals with only \(\nicefrac {1}{2}\langle 111\rangle \) screw dislocations, i.e., b is unique and equal to \(a_0\sqrt{3}/2\), with \(a_0\) the lattice parameter. In this work we are interested in low and intermediate homologous temperatures (\(<0.3T_m\), where \(T_m\) is the melting point), where thermally activated screw dislocation motion is represented by the following expression [39, 40]:

$$\begin{aligned} v^{\alpha } = \left\{ \begin{aligned}&\frac{\nu _0 h \left( \lambda ^\alpha - w\right) }{b}\exp \left( -\frac{\varDelta H_0 }{kT}\left[ 1 - \left( \frac{\varDelta \tau ^\alpha }{\sigma _{\mathrm{P}}}\right) ^p\right] ^q\right) ,~~\lambda ^\alpha >w\\&0,~~\lambda ^\alpha \le w \end{aligned} \right. \end{aligned}$$

where \(\nu _0\), h, \(\lambda ^\alpha \), w, and \(\varDelta H_0\) are, respectively, the attempt frequency, the distance between Peierls valleys in the bcc lattice, the mean dislocation segment length for slip system \(\alpha \), the kink-pair width, and the kink-pair formation energy. \(\varDelta \tau ^\alpha \) is the excess stress, obtained as the difference between the resolved shear stress (RSS) and the slip resistance, \(g^\alpha \). The RSS is obtained from the Cauchy stress as:

$$\begin{aligned} \tau _{\mathrm{RSS}}^\alpha = {\varvec{\sigma }} : \left( \mathbf {s}^{\alpha } \otimes \mathbf {n}^{\alpha }\right) \end{aligned}$$

which is also known as the Schmid stressFootnote 3, while \(g^\alpha \) includes all athermal sources of stress opposing dislocation motion. \(\sigma _{\mathrm{P}}\) is the Peierls stress.

The time evolution of the dislocation density is modeled using a rate equation of the type:

$$\begin{aligned} {{\dot{\rho }}}^\alpha = {{\dot{\rho }}}^\alpha _{\mathrm{mult}} - {{\dot{\rho }}}^\alpha _{\mathrm{ann}} \end{aligned}$$

where \(\rho ^\alpha _{\mathrm{mult}}\) and \(\rho ^\alpha _{\mathrm{ann}}\) represent the net sources and sinks of dislocation line length. Each of these terms can be defined using a standard Kocks-Mecking model [39, 42]:

$$\begin{aligned} {{\dot{\rho }}}^\alpha _{\mathrm{mult}}&= \frac{|{{\dot{\gamma }}}^\alpha |}{b\lambda ^\alpha } \end{aligned}$$
$$\begin{aligned} {{\dot{\rho }}}^\alpha _{\mathrm{ann}}&= \frac{2d_{\mathrm{edge}}}{b}\rho ^\alpha |{{\dot{\gamma }}}^\alpha | \approx 2\rho ^\alpha |{{\dot{\gamma }}}^\alpha | \end{aligned}$$

where it has been assumed that dislocation annihilation occurs spontaneously when dipoles meet within a critical spacing \(d_{\mathrm{edge}}\approx b\). \(\lambda ^\alpha \) is the available dislocation segment length, which is generally expressed as:

$$\begin{aligned} \frac{1}{\lambda ^\alpha } = \frac{1}{d_g}+\sqrt{\rho _f^\alpha } \end{aligned}$$

where \(d_g\) is the grain size and \(\rho _f^\alpha \) is the forest dislocation density, which is obtained for each slip system \(\alpha \) from contributions of all other systems \(\beta \) [43]:

$$\begin{aligned} \rho _f^\alpha = \sum _{\beta \ne \alpha } \rho ^\beta |\mathbf {s}^\beta \cdot \mathbf {n}^\alpha | \end{aligned}$$

The constitutive nature of \(\rho ^\alpha \) comes via its dependence on \({{\dot{\gamma }}}^\alpha \), which depends on the stress through the dislocation velocity. This is an implicit dependence that will have numerical implications as will be discussed below.

To close the model, an expression for \(g^\alpha \) must be provided. In the present case, we consider self and latent hardening only, both embodied in a term \(\tau _{h}^\alpha \), i.e., \(g^\alpha \equiv \tau _{h}^\alpha \), where:

$$\begin{aligned} \tau _{h}^\alpha = \mu b \sqrt{\sum _{\beta \ne \alpha } \xi _{\alpha \beta } \rho ^\beta _f + \xi _{\alpha \alpha } \rho ^\alpha } \end{aligned}$$

The first term inside the square root on the r.h.s. of the above equation represents the forest hardening, while the second one reflects the amount of self-hardening. \(\xi _{\alpha \beta }\) are the elements of the hardening coefficient matrix, \({\varvec{\xi }}\) [39, 44, 45], whose values, as well as the glide systems considered in the work, are given in Appendices A and B .

2.3 Casting the crystal plasticity model as a stochastic process

The Markov chain representing the process described by the master equation (1), (2) evolves the system forward in time by following a sequence of transitions whose rates depend solely on the initial and final states. As such, Eq. (1) is akin to an explicit time discretization of the crystal plasticity model, in which the properties of the system at time \(t+\delta t\) are obtained solely as a function of those at time t. With this, Eq. (9) can be recast as:

$$\begin{aligned} \dot{{\varvec{\sigma }}}={\mathbb {C}}:\left( \dot{{\varvec{\varepsilon }}}_0-\dot{{\varvec{H}}}^{\mathrm{P}}\right) \end{aligned}$$

The constitutive framework for the explicit form of the model remains unchanged. Additionally, the unknowns of the crystal plasticity problem remain the same. However, instead of solving iteratively for the ensemble of slip rates, the shear rates are determined in a sequential manner. The evaluation at time \(t+\delta t\) is based on the calculation of the available glide stress \(\tau ^\alpha _{\mathrm{RSS}}\) and the dislocation velocities at time t [46,47,48].

By analogy with (2), the above equation can be trivially written as a stochastic equation:

$$\begin{aligned} \dot{{\varvec{\varepsilon }}}^{\mathrm{E}}=\dot{{\varvec{\varepsilon }}}_0-\dot{{\varvec{H}}}^{\mathrm{P}} \end{aligned}$$

In essence, this equation yields the time rate of the probability of finding the system under a given stress state. In the r.h.s. of the equation, \(\dot{{\varvec{\varepsilon }}}_0\) can be regarded as an external source term that is independent of the current stress state, while \(\dot{{\varvec{H}}}^{\mathrm{P}}\) acts as a stress absorber through conversion to plastic deformation. From Eqs. (11) and (20), Eq. (21) can be expanded to:

$$\begin{aligned} \dot{{\varvec{\varepsilon }}}^{\mathrm{E}}=\dot{{\varvec{\varepsilon }}}_0- \sum _{\alpha } \rho ^{\alpha }b^{\alpha }v^{\alpha }\left( \mathbf {s}^{\alpha }\otimes \mathbf {n}^{\alpha }\right) \end{aligned}$$

While this equation is not strictly a master equation, i.e., one of the type \(\dot{\mathbf {p}}={\varvec{Q}}'\mathbf {p}\), as in Eq. (2), a set of event rates can be extracted from Eq. (22) that govern the evolution of the elastic strain in time. The total rate to ‘exit’ a given stress state defined by a total elastic strain \(\varepsilon ^{\mathrm{E}}\) at time \(t^n\) can be written as:

$$\begin{aligned} r^n = \sum _{\alpha =1}^N q^n_\alpha + q_{0} \end{aligned}$$

with \(q_0=\sum _{i}\sum _{j}\left( \dot{{\varvec{\varepsilon }}}_0\right) _{ij}\), \(q_\alpha =\rho ^{\alpha }b^{\alpha }v^{\alpha }\), and N is the number of independent slip systems.

In rejection-free kMC, the next event to be executed is selected as the \(k^{\mathrm{th}}\) process that satisfies:

$$\begin{aligned} q^n_{k-1}<\xi _1 r^n<q^n_k \end{aligned}$$

where \(k=0,\ldots ,N\). If the event selected corresponds to the rate \(q_0\), further sampling is carried out among the different nonzero components of \(\dot{{\varvec{\varepsilon }}}_0\) to determine which deformation to impose. The total time is then advanced as:

$$\begin{aligned} t^{n+1}&=t^n+\delta t^n \end{aligned}$$
$$\begin{aligned} \delta t^n&= -\frac{\log \xi _2}{r^n} \end{aligned}$$

where \(\xi _1\) and \(\xi _2\) are uniform random numbers in (0, 1]. Once an event is executed, the elastic strain is updated and, with it, the stress state. From the new stress state, resolved shear stresses are calculated, from which in turn plastic slip rates and dislocation densities are updated, thus closing the cycle.

A schematic diagram showing the sampling of event rates and the total rate is given in Fig. 1. A complete algorithm suitable for solving Eq. (22) based on the above procedure is provided next.

Fig. 1
figure 1

Sampling array of event rates in the SCP algorithm. The total rate r is partitioned between the prescribed applied strain rate \({\dot{\varepsilon }}_0\) and the total plastic distortion \(H^{\mathrm{P}}\). In turn, \(H^{\mathrm{P}}\) is composed of N independent shear rates \(\gamma ^\alpha \). As such, there are always \(N+1\) different possible event rates to sample from, contained in an array whose index k runs from 0 to N. Note that, in general, the value of each shear rate \(\gamma ^\alpha \) may be different to the rest of the shear rates during each time step. The dashed section refers to the possibility of using null events, discussed in Sect. 4.1

2.4 A residence-time algorithm for elasto-viscoplastic CP problems

The crystal is defined by its dislocation density content, \(\rho ^\alpha \), in each of its N slip systems \(\alpha \) and the grain size \(d_g\). Deformation conditions are given by the applied strain rate (tensor) \(\dot{{\varvec{\varepsilon }}}_0\), the temperature T and the loading orientation \(\mathbf {o}\) (generally aligned with a given crystal axis corresponding to the z direction). Thus our simulations are carried out with only one nonzero component of the imposed strain rate tensor, such that \(q_0\equiv (\varepsilon _0)_{zz}\). The algorithm proceeds as a standard crystal plasticity algorithm until the calculation of the slip rates is completed. The stochastic part of the algorithm that serves as integrator is captured in lines 30 to 32. For comparison, the equivalent deterministic (explicit) algorithm is given in algorithm 2 in “Appendix C”.

figure a
Fig. 2
figure 2

Time step distributions sampled from Eq. (23) for crystal plasticity simulations at 500 K under [100] loading at three different strain rates of \(10^{-4}\), \(10^{-3}\), and \(10^{-2}\) s\(^{-1}\). The averages of the distributions are 4500, 517, and 52 s, respectively. All three histograms are given in arbitrary units

2.5 Physical bounds on problem time scale

Figure 2 shows the raw time step distributions sampled from three independent SCP runs at three different strain rates for [100] loading at 500 K. The averages of the distributions are 4500, 517, and 52 s for \({\dot{\varepsilon }}_0=10^{-4}\), \(10^{-3}\), and \(10^{-2}\) s\(^{-1}\), respectively. These results illustrate the absolute time scales that emanate from the direct sampling of Eq. (22). Strictly speaking, the time increments shown in the figure represent the maximum time steps compatible with the rate equation being solved. However, one may use an arbitrarily smaller set of \(\delta t\) without sacrificing the numerical validity of the method, which may be advantageous when, e.g., there are other constraints on the time scales of the problem besides purely numerical ones. Indeed, such is the case here, where deformation tests performed at quasistatic strain rates (\(10^{-5}\sim 10^{-2}\) s\(^{-1}\)) result in total strains that are almost always \(< 1\), and which are thus reached in much shorter times than those indicated in Fig. 2 .

One way of establishing meaningful boundaries for \(\delta t\) may be by considering the physical validity range of the present algorithm, which is set by the condition \(\left( \frac{\tau _{\mathrm{RSS}}^\alpha -\tau _h^\alpha }{\sigma _{\mathrm{P}}}\right) <1\) (from Eq. (12)), i.e.:

$$\begin{aligned} \tau _{\mathrm{RSS}}^\alpha <\tau _h^\alpha +\sigma _{\mathrm{P}} \end{aligned}$$

Taking time increments, the above expression becomes (\(\sigma _{\mathrm{P}}\) is constant):

$$\begin{aligned} \frac{d\tau _{\mathrm{RSS}}^\alpha }{dt}<\frac{d\tau _h^\alpha }{dt} \end{aligned}$$

Implicit in this relation there is a time step condition that must be satisfied such that the time scale of the problem is reflective of the physical processes that participate in the evolution of the deformation of the material. As shown in Alg. 1, \(\tau _{\mathrm{RSS}}^\alpha \) displays a linear dependence on \(\delta t\), while \(\tau _h\) scales as \(\mathcal{O}(\delta t^{1/2})\) (through its dependence on the term \(\sqrt{\sum _\beta \rho ^\beta },~\beta =1\ldots N\)). As such, one can rewrite the above inequality generically as:

$$\begin{aligned} \frac{d\left( \mathcal{C}_1\delta t\right) }{dt}< \frac{d\left( \mathcal{C}_2\delta t^{1/2}\right) }{dt} \end{aligned}$$

which results in the condition:

$$\begin{aligned} \mathcal{C}_1 < \frac{\mathcal{C}_2}{2\delta t^{1/2}} \end{aligned}$$


$$\begin{aligned} \delta t <\left( \frac{\mathcal{C}_2}{2\mathcal{C}_1}\right) ^2 \end{aligned}$$

where \(\mathcal{C}_1\) and \(\mathcal{C}_2\) are constants representing, respectively, the (elastic) stress rate, \(\mathcal{C}_1\approx E\left( {\dot{\varepsilon }}_0-{\dot{\gamma }}_p\right) \) and the forest hardening rate \(\mathcal{C}_2\approx \mu \sqrt{{\dot{\gamma }}_p}\), where \({\dot{\gamma }}_p\) is again a generic plastic shear rate, i.e.:

$$\begin{aligned} \delta t < \left[ \frac{\mu \sqrt{{\dot{\gamma }}_p}}{E\left( {\dot{\varepsilon }}_0-{\dot{\gamma }}_p\right) } \right] ^2 \end{aligned}$$

where \(E=\frac{9\kappa \mu }{3\kappa +\mu }\) is the Young’s modulus. For simplicity, it is assumed that the shear rates are well captured by the term \(\rho _0bv\), where v is a temperature dependent dislocation velocity, set by Eq. (12). With this, the above expression becomes:

$$\begin{aligned} \delta t < \left[ \frac{\mu \sqrt{\rho _0bv}}{E\left( {\dot{\varepsilon }}_0-\rho _0bv\right) } \right] ^2=\left( \frac{\mu }{E}\right) ^2 \frac{\rho _0bv}{\left( {\dot{\varepsilon }}_0-\rho _0bv\right) ^2}=\delta t^{*} \end{aligned}$$

This expression is fundamentally equivalent to that derived by Van der Giessen et al. [49] using a slightly different constitutive model. In the present model, for the 300-to-1000-K temperature range, v varies between \(10^{-7}\) and \(10^{-3}\) m\(\cdot \)s\(^{-1}\). By way of example, using material constants from Table 1, this results in critical time steps \(\delta t^*\) between 0.05 to 100 s when \({\dot{\varepsilon }}_0=10^{-3}\) s\(^{-1}\).

Table 1 Values for the material parameters employed in this work

As such, the physical time scale symbolized by \(\delta t^*\) and the results from Fig. 2 (defined by the value \(1/r^n\)) must be reconciled. While there are rigorous ways to connect both (discussed in Sect. 4), here we adopt the practical approach of defining a normalization factor \(\varDelta \varepsilon ^*\ll 1\), which is used to scale Eq. (26):

$$\begin{aligned} \delta t^n = -\log \xi _2\left( \frac{\varDelta \varepsilon ^*}{r^n} \right) \end{aligned}$$

The impact of the choice of \(\varDelta \varepsilon ^*\) will be evaluated in the next section.

3 Results

3.1 Verification of algorithm capabilities

In this section, we verify that the stochastic solver in Algorithm 1 is capable of reproducing the results of deterministic CP calculations under generic loading and temperature conditions. We first consider uniaxial loading along the [001] crystal orientation at 500 K and \(10^{-3}\) s\(^{-1}\). [001] loading results in eight active slip systems each with a Schmid factor of 0.409 and four inactive ones. As such, it is representative of multi-slip conditions conducive to latent hardening. In this work we consider single crystal deformation only, i.e., \(1/d_g\approx 0\). Values for the material parameters used in the calculations are given in Table 1.

Fig. 3
figure 3

Stress-strain response at 500 K under [001] axial loading. The shaded area represents the reference deterministic result (forward Euler method with \(dt=0.1\) s). Results for several \(\varDelta \varepsilon ^*\) inside the stability range are given for comparison

Fig. 4
figure 4

Total dislocation density evolution as a function of axial strain at 500 K under [001] loading. The shaded area represents the reference deterministic result (forward Euler method with \(dt=0.1\) s). Results for several \(\varDelta \varepsilon ^*\) inside the stability range are given for comparison

Fig. 5
figure 5

Evolution of the normalized shear slip rate with plastic strain for several values of \(\varDelta \varepsilon ^*\) at 500 K under axial loading along the [001] direction. Results are given as averages and standard deviations for all active systems under these loading conditions (8 out of 12, all with an identical Schmid factor of 0.4091). The shaded area in the background corresponds to the reference deterministic result (forward Euler method with \(dt=0.1\) s)

3.1.1 Stress-strain response

Figure 3 shows stress-strain curves for several \(\varDelta \varepsilon ^*\). The shaded area represents the reference deterministic result (forward Euler method with \(dt=0.1\) s) for comparison. A prescribed strain rate of \(\left( {\dot{\varepsilon }}_0\right) _{zz}\equiv {\dot{\varepsilon }}_0=10^{-3}\) s\(^{-1}\) was used. As the figure shows, the value of \(\varDelta \varepsilon ^*\) determines the magnitude of the stochastic oscillations, but not its steady state value, which is seen to consistently reproduce the deterministic solution. In particular, the hardening modulus –assumed to remain constant during plastic flow– is seen to be virtually identical in all cases, 0.96 GPa, irrespective of the value of \(\varDelta \varepsilon ^*\). The average yield strength, \({\bar{\sigma }}_{\mathrm{Y}}\), obtained from all the different \(\varDelta \varepsilon ^*\) cases is seen to slightly exceed the deterministic value, 1.9 vs. 1.8 GPa, respectively. The standard deviation of \({\bar{\sigma }}_{\mathrm{Y}}\) scales linearly with \(\varDelta \varepsilon ^*\), with a proportionality constant on the order of the Young’s modulus E. This is consistent with having elastic strain increments that may ‘overshoot’ the true (deterministic) yield stress, which is then immediately followed by a plastic event.

Fig. 6
figure 6

Axial stress-strain curves as a function of temperature under \({\dot{\varepsilon }}_0=10^{-2}\) s\(^{-1}\) and [001] loading. All curves are for \(\varDelta \varepsilon ^*=5.0\times 10^{-5}\). The inset gives the temperature dependence of the yield stress (0.2%-strain offset stress)

Fig. 7
figure 7

Axial stress-strain curves as a function of strain rate at 500 K and [001] loading. All curves are for \(\varDelta \varepsilon ^*=5.0\times 10^{-5}\). The inset gives the strain rate sensitivity (SRS) of the yield stress (0.2%-strain offset stress). The SRS exponent is \(m=0.059\)

Fig. 8
figure 8

Axial stress-strain curves as a function of loading direction at 500 K and [001] loading and \(10^{-2}\) s\(^{-1}\). All curves are for \(\varDelta \varepsilon ^*=5.0\times 10^{-5}\). The corresponding deterministic solutions are provided as black dashed lines. The loading directions are marked in the stereographic triangle for reference

3.1.2 Dislocation densities and fluxes

Figure 4 shows the evolution of the total dislocation density with strain corresponding to the cases shown in Fig. 3. The values shown in the curves are normalized to the initial dislocation density value \(\rho _0\) (cf. Table 1). The dislocation density is seen to evolve in bursts of a magnitude commensurate with the value of \(\varDelta \varepsilon ^*\). Although a small drift at high strains can be appreciated for the two cases with the largest scaling factor, the steady state value of \(\rho _{\mathrm{tot}}\) is in excellent agreement with the solution furnished by the deterministic solver.

\(\rho _{\mathrm{tot}}\) is an integrated measure of the overall performance of the algorithm during plastic deformation. However, it is also of interest to look at the evolution at the level of the slip systems. Figure 5 shows results for the average shear rates under [001] axial loading at 500 K, defined as:

$$\begin{aligned} \bar{{\dot{\gamma }}}=\frac{1}{N_{\mathrm{act}}}\sum _\alpha ^{N_{\mathrm{act}}}{\dot{\gamma }}^\alpha \end{aligned}$$

where \(N_{\mathrm{act}}<N\) is the number of slip systems with nonzero Schmid factor (8 out of 12, all with an identical Schmid factor of 0.409 under these conditions). The average shear plastic rates shown in the figure are normalized to \({\dot{\varepsilon }}_0\). The error bars shown represent the standard deviation associated with the stochastic sampling. As in Figs. 3 and 4 , the deterministic solution is shown in the background as a shaded area. Clearly, the values associated with larger \(\varDelta \varepsilon ^*\) show much larger average plastic shear rates and more pronounced deviations from the mean value.

3.1.3 Exploring the parametric space

For generalization purposes, next we apply the method changing the three external variables in the simulations, i.e., temperature, strain rate, and loading orientation. Figure 6 shows a set of stress-strain curves at temperatures ranging from 300 to 800 K at \({\dot{\varepsilon }}_0=10^{-2}\) s\(^{-1}\) under [001] loading. All curves are for \(\varDelta \varepsilon ^*=5.0\times 10^{-5}\). The temperature dependence of the yield strength (obtained as the 0.2%-offset stress) is given in the inset to the figure.

Figure 7 shows the stress-strain response of the system as a function of \({\dot{\varepsilon }}_0\) at 500 K under [001] loading. All curves are for \(\varDelta \varepsilon ^*=5.0\times 10^{-5}\). The inset shows the strain-rate sensitivity (SRS) of the yield strength (obtained as in Fig. 6), including the SRS exponent m from the fit \(\sigma _{\mathrm{Y}}=C{\dot{\varepsilon }}_0^m\). The fit (dashed line in the inset) yields values of \(C=2.83\) GPa and \(m=0.059\).

Finally, we explore several different loading orientations with \(T=500\) K, \({\dot{\varepsilon }}_0=10^{-2}\) s\(^{-1}\), and \(\varDelta \varepsilon ^*=5.0\times 10^{-5}\). Figure 8 shows stress-strain curves for several loading directions in the standard triangle, shown on the right. The deterministic solutions for each case are shown as black dashed lines.

3.2 Natural evolution of slip under heterogeneous conditions

The above subsections unequivocally show that the stochastic crystal plasticity (SCP) algorithm is capable of solving the same mathematical problem as standard crystal plasticity. However, as indicated in the introduction, this is not the main point of SCP. Stochasticity represents an intrinsic numerical element that can promote plastic shear heterogeneously across different slip systems, i.e., SCP can capture natural fluctuations in the underlying plastic rates without the need for ad-hoc probabilistic treatments.

To showcase this feature of the model, here we study again uniaxial tests at 500 K, \(10^{-2}\) s\(^{-1}\), and several orientations using the SCP method sampling one single slip event per time step. Our curves are compared to results obtained using the CP explicit solver by Kuchnicki et al. [46], which is also designed to induce asymmetric plastic flow by using a sequential cycle that prioritizes slip in systems with the highest excess stress (i.e., what the quantity \(\varDelta \tau ^\alpha \) used in Eq. (12) represents here).

To demonstrate slip anisotropy, we take the [101] direction as representative of multislip conditions (four slip systems with a Schmid factor of 0.408 and eight inactive slip systems) to compare the deterministic approach by Kuchnicki et al. and the SCP method. In Fig. 10 we plot the plastic shear rates in all 12 slip systems for the [101] loading case shown in Fig. 9. As shown, the plastic slip that leads to the stress-strain curves for the [101] loading orientation in Fig. 9 is carried by a single slip system (\(\alpha =7\) in Table 2) in the SCP case, and by two of them (\(\alpha =6,~9\)) in the deterministic case. We have confirmed that in each SCP simulation the probability that any one of the four active slip systems is activated is indeed the same (25%).

Fig. 9
figure 9

Axial stress-strain curves as a function of loading orientation at 500 K and \(10^{-2}\) s\(^{-1}\) using two methods that break the symmetry of slip: the stochastic algorithm evolving shear one event at each time (solid lines) and the explicit method by Kuchnicki et al. [46] (discontinuous lines with like colors). The SCP curves are for \(\varDelta \varepsilon ^*=5.0\times 10^{-5}\)

Fig. 10
figure 10

Normalized plastic shear rates as a function of plastic strain for symmetry-breaking slip evolution modes of the SCP algorithm and an explicit deterministic model [46]

Fig. 11
figure 11

Computational cost of SCP simulations at 500 K under [101] loading. (a) CPU time per 1% strain for at \(10^{-3}\) s\(^{-1}\) as a function of \(\varDelta \varepsilon ^*\). A power law fit to the data is shown as a dashed line, represented by the expression \(t_{\mathrm{CPU}}=3.43\times 10^{-5}x^{-0.97}\). (b) CPU time per 1% strain for \(\varDelta \varepsilon ^*=10^{-4}\) as a function of strain rate. In both cases, the error bars correspond to the variability of the results from 10 independent runs

3.3 Computational performance

In general terms, the efficiency of the residence time algorithm is tied to the event search encoded in Eq. (24). When the dimension, n, of the sampling array is large, binary searches with a \(\mathcal{O}(\log (n))\) nominal overhead are more efficient than simple \(\mathcal{O}(n)\) linear searches. However, this is not a factor in the present calculations, where, at most, \(n=N+2\) with \(N=12\). Instead, the computational overhead may be defined as the CPU time invested in advancing a CP simulation by some amount of strain. Figure 11a shows the CPU cost per 1% strainFootnote 4 for the implementation of Alg. 1 on a 1.4GHz Intel Core i5 processor tested as a function of \(\varDelta \varepsilon ^*\) for a number of SCP simulations at 500 K under [101] loading at \(10^{-3}\) s\(^{-1}\). As the figure clearly shows, an inverse correlation between the CPU time and \(\varDelta \varepsilon ^*\) is found. For the results shown in the figure, \(t_{\mathrm{CPU}}=3.43\times 10^{-5}x^{-0.97}\) [s per 1% strain]. This is not unexpected, since, as we showed above, there is a direct equivalence between \(\varDelta \varepsilon ^*\) and the effective time step used in the simulations. Using such correlations can be helpful in estimating the a priori CPU overhead of a SCP simulation.

For its part, Fig. 11b gives the same metric as a function of applied strain rate for a fixed value of \(\varDelta \varepsilon ^*=10^{-4}\). A sharp drop is observed between \({\dot{\varepsilon }}_0=10^{-3}\) and \(10^{-2}\) s\(^{-1}\), although this is likely to be somewhat dependent on the value of \(\varDelta \varepsilon ^*\) chosen in each case.

4 Discussion

In essence, the present method provides a new approach for time integration of crystal plasticity models. The solver itself is the well-known residence time algorithm, which relies on stochastic sampling of a set of transition rates that determine the evolution of the system through a sequence of states with the correct probability. KMC methods require concurrent sampling of all event rates, and thus the method is suited for explicit time discretizations of the crystal plasticity equations (when \({\dot{\varepsilon }}_0\) and the different \({\dot{\gamma }}_\alpha \) are strictly independent of one another). However, this is more a technicality in the definition than a limitation in the computational sense, as the SCP approach is not constrained by the same stability considerations of standard (deterministic) methods.

The discrete nature of the method naturally leads to oscillations in the plastic response of the system. It is worth emphasizing that, while numerical in origin, these oscillations are physical and can be ultimately linked to the discreteness of dislocation slip at the lattice level, by way of integer Burgers vector amounts. The magnitude of the oscillations is encoded in a parameter \(\varDelta \varepsilon ^*\), which here is user-defined under certain physical restrictions (Sect. 2.5). A way to quantitatively interpret these oscillations may be by considering \(\varDelta \varepsilon ^*\) to scale with the ratio b/L, where b and L are the Burgers vector’s modulus and a generic specimen’s dimension, respectively. In bulk materials, this ratio becomes extremely small, leading to smooth stress-strain responses as shown in Figs. 3 and 7 , while for higher values of \(\varDelta \varepsilon ^*\), a highly oscillatory behavior is seen, in accordance with what is seen in small-scale specimens such as free-standing nano-pillars or cantilever nano-beams [50,51,52,53].

This, and other features of the model, including several potential advantages over standard explicit CP approaches, are further elaborated on below.

4.1 Physical time scale defined through \(\varDelta \varepsilon ^*\)

In Sect. 2.5, a parameter \(\varDelta \varepsilon ^*\) is introduced to restrict the time steps that would naturally emanate from Eq. (23), graphically represented in Fig. 2. However, a formal connection between \(\varDelta \varepsilon ^*\) and \(\delta t^*\), in Eq. (31), was not established at the time.

A rigorous way to demonstrate this connection can be by adding an extra rate to \(r^n\) in Eq. (23) to extend the exit rate of the system with an event that does not alter its state at a given time. This ‘null’ event process, which has been applied successfully in the context of parallel kMC algorithms [28, 54], is characterized by a rate \(r_{\mathrm{null}}\) that can be used at will to ‘slow’ down the evolution of the system while preserving the correct kinetics. Mathematically:

$$\begin{aligned} \frac{1}{r^n+r_{\mathrm{null}}}<\delta t^*\end{aligned}$$

which leads to the condition: \(r_{\mathrm{null}}>\frac{1}{\delta t^*}-r^n\). The pictorial representation of \(r_{\mathrm{null}}\) is shown in Fig. 1 as an extra entry (dashed gray line) in the array. It is trivial to show that the relationship among \(\varDelta \varepsilon ^*\), \(r^n\), and \(r_{\mathrm{null}}\) is:

$$\begin{aligned} \varDelta \varepsilon ^*=\frac{r^n}{r^n+r_{\mathrm{null}}} \end{aligned}$$

or, alternatively, \(\varDelta \epsilon ^*/r^n<\delta t^*\), i.e., \(\varDelta \varepsilon ^*\), \(r_{\mathrm{null}}\), and \(\delta t^*\) can be thought of as being interchangeable parameters. In any case, these relationships show that one can rigorously connect the mathematical representation of the system’s kinetics to the physical time evolution under deformation.

4.2 Potential advantages of the present method over deterministic integrators

4.2.1 Asymmetry in slip rates with identical orientation

It is well known that from a purely geometric point view, there is a redundancy in establishing the number of active slip systems that contribute to deformation under highly-symmetric loading conditions. Mathematically, this problem of slip indeterminacy is intrinsically found in rate-independent CP formulations, and can be partially addressed by, e.g., imposing additional constraints on the internal variables or the stress space of the system [13, 55, 56]. While the non-uniqueness of the solution is no longer an issue in viscoplastic (rate-dependent) crystal plasticity models, the plastic response still displays symmetries in slip that are not observed in real materials’ deformation [57,58,59].

Fig. 12
figure 12

Computational overhead of a reference crystal plasticity simulation ([101] loading direction at \({\dot{\varepsilon }}_0=10^{-3}\) s\(^{-1}\)) as a function of temperature for both the SCP model and a standard CP model using an explicit forward Euler integrator (deterministic). The numbers associated with each data point of the deterministic calculations (in blue) indicate the maximum dt attainable to maintain numerical stability

The SCP model presented here offers the potential to introduce variability in the solution in a natural way, thus intrinsically enabling the possibility for non-symmetric activation of slip systems according to just the Schmid criterion. This symmetry-breaking capability emanates directly from the solver, i.e., without the need to add it externally, which means that it can lead to inhomogeneous plastic deformation naturally. This inhomogeneity emerges from the inherent stochastic treatment of the plastic shear rates, and thus may be seen as having a direct correlation to real deformation situations.

From a thermodynamic standpoint, several works have established a link between the heterogeneity of plastic deformation and the system’s entropy production based on maximum-dissipation criteria [60, 61]. Indeed, stochastic approaches have the potential to access an increased number of states. While beyond the scope of the present work, it would be of interest to augment the current model by introducing quantitative metrics of entropy production directly connected to the stochastic variability and the symmetry-breaking features of the SCP model.

4.2.2 Numerical stability and computational cost

While the computational overhead of the SCP method has been assessed in Sect. 2.2 and Fig. 11, any meaningful discussion of the CPU cost of the SCP method must necessarily involve a comparison with a standard explicit (forward Euler) integrator for CP problems in equivalent conditions. Figure 12 shows the computational cost (in seconds per 1% strain) of a reference crystal plasticity problem ([101] loading direction at \({\dot{\varepsilon }}_0=10^{-3}\) s\(^{-1}\)) as a function of temperature simulated both with the SCP model using several values of \(\varDelta \varepsilon ^*\) and a standard deterministic CP model based on a forward Euler integrator. The numbers associated with each data point of the deterministic calculations (in blue) indicate the maximum dt attainable to maintain numerical stabilityFootnote 5.

Table 2 Slip systems considered in this simulation [39]

There are several remarkable features that emerge from the analysis presented in the figure. We start by noting that the SCP method is intrinsically stable under all conditions, a virtue of the residence-time algorithm, while the numerical stability of the deterministic solver is highly dependent on temperature and strain rate. Second, the CPU cost of the stochastic algorithm is practically independent of temperature. Third, and most important for the purposes of this discussion, the deterministic solver’s numerical stability requires increasingly smaller time steps (labeled as \(`\delta t_{\mathrm{max}}\)’ in the figure) as the temperature increases. For this reason, at 600 K we see a sharp upturn in the CPU cost, which drives its computational overhead far above that of the SCP model. The fact that the algorithm samples one event per time step helps stabilize the numerical solution and allows for longer time steps at high temperature compared to a standard forward Euler approach. While it is common practice to add modifications to the Euler method to improve its stability [9, 49], we consider this a very attractive potential advantage of SCP over standard explicit solvers.

We close Sect. 4.2 reiterating the potential advantages of SCP over deterministic (both explicit and implicit) approaches. One obvious advantage of using our method at all temperatures (including room temperature and below) is the added benefit of capturing plastic fluctuations naturally. Thus, in cases where those are of interest (cf. Sect. 4.2.1), our approach is useful from a physical point of view. Numerically, at low temperatures our method is consistent with the behavior of kinetic Monte Carlo models versus deterministic solvers in other fields of physics [62,63,64]. Rather than being attributable to stochastic solvers being slow, the advantages of deterministic solvers have to do more with their ability to be stable using large time steps. In general, the consensus is that for simple models (with low physical complexity) deterministic models will always outperform stochastic ones. However, as the physical model (so-called ‘material model’ in crystal plasticity) grows in complexity, stochastic solvers become relatively more efficient. Note that such complexity may be introduced also via the external conditions, as is the case in this work, when thermally activated mechanisms become dominant at higher temperatures.

Table 3 Interaction coefficients \(\xi _{\alpha \beta }\) for the 12 slip systems listed in Table 2

5 Conclusions

We conclude this paper with a list of our most important findings:

  • We have developed a stochastic solver for crystal plasticity models based on the residence-time algorithm. The method strictly works for explicit problems, when the total strain rate and the individual plastic shear rates can be considered independent from one another.

  • The SCP model is intrinsically numerically stable without the need of any extra procedures. Changes in the values of the external variables manifest themselves in terms of the magnitude of the oscillations of the solution, not on its stability.

  • The SCP model naturally breaks the symmetry of plastic slip by sampling among the active plastic shear rates with the correct probability. This can lead to phenomena such as plastic localization without needing to add any ad hoc treatments to the model.

  • All variables kept the same, the computational overhead of the SCP method scales inversely with \(\varDelta \varepsilon ^*\) (as \(\sim 1/\varDelta \varepsilon ^*\)) and \({\dot{\varepsilon }}_0\). The CPU cost is insensitive to temperature for the crystal plasticity model employed here.

  • For a fixed prescribed total strain rate and loading direction, the SCP model becomes more efficient than a standard forward Euler approach at \(T>600\) K. It is expected that similar transitions exist for other crystal orientations and strain rates.