KinematicModel

Overview

A kinematics model provides the interfaces:

\dot{\bm{\sigma}}, \frac{\partial \dot{\bm{\sigma}}}{\partial \bm{\sigma}}, \frac{\partial \dot{\bm{\sigma}}}{\partial \mathbf{h}}, \frac{\partial \dot{\bm{\sigma}}}{\partial \mathbf{D}}, \frac{\partial \dot{\bm{\sigma}}}{\partial \mathbf{W}} \leftarrow \mathcal{S}\left(\bm{\sigma}, \mathbf{h}, \mathbf{D}, \mathbf{W}, \bm{\alpha}, T \right)

\dot{\mathbf{h}}, \frac{\partial \dot{\mathbf{h}}}{\partial \bm{\sigma}}, \frac{\partial \dot{\mathbf{h}}}{\partial \mathbf{h}}, \frac{\partial \dot{\mathbf{h}}}{\partial \mathbf{D}}, \frac{\partial \dot{\mathbf{h}}}{\partial \mathbf{W}} \leftarrow \mathcal{H}\left(\bm{\sigma}, \mathbf{h}, \mathbf{D}, \mathbf{W}, \bm{\alpha}, T \right)

\bm{\Omega}^e, \frac{\partial \bm{\Omega}^e}{\partial \bm{\sigma}}, \frac{\partial \bm{\Omega}^e}{\partial \mathbf{h}}, \frac{\partial \bm{\Omega}^e}{\partial \mathbf{D}}, \frac{\partial \bm{\Omega}^e}{\partial \mathbf{W}} \leftarrow \mathcal{W}\left(\bm{\sigma}, \mathbf{h}, \mathbf{D}, \mathbf{W}, \bm{\alpha}, T \right)

This general interface defines the stress, history, and orientation rates used in integrating the single crystal model. The interface also allows the user to select which parts of the update are done in a coupled, implicit integration and which parts are left separate for an explicit, uncoupled integration.

Implementations

Currently there is only one implementation of this class, implementing the kinematic assumptions described in the overview of the crystal plasticity model. Other kinematics could be implemented in the future by deriving additional subclasses from this abstract base class.

Class description

class KinematicModel : public neml::HistoryNEMLObject

Describes the stress, history, and rotation rates.

Subclassed by neml::StandardKinematicModel

Public Functions

KinematicModel(ParameterSet &params)
virtual double strength(const History &history, Lattice &L, double T, const History &fixed) const = 0

Helper for external models that want a strength.

virtual History decouple(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) = 0

Hook to allow user to decouple parts of the update Any items added to the History object will be treated explicitly

virtual Symmetric stress_rate(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) const = 0

Stress rate.

virtual SymSymR4 d_stress_rate_d_stress(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) const = 0

Derivative of stress rate with respect to stress.

virtual SymSymR4 d_stress_rate_d_d(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) const = 0

Derivative of the stress rate with respect to the deformation rate.

virtual SymSkewR4 d_stress_rate_d_w(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) const = 0

Derivative of the stress rate with respect to the vorticity.

virtual History d_stress_rate_d_history(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) const = 0

Derivative of the stress rate with respect to the history.

virtual History history_rate(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) const = 0

History rate.

virtual History d_history_rate_d_stress(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) const = 0

Derivative of the history rate with respect to the stress.

virtual History d_history_rate_d_d(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) const = 0

Derivative of the history rate with respect to the deformation rate.

virtual History d_history_rate_d_w(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) const = 0

Derivative of the history rate with respect to the vorticity.

virtual History d_history_rate_d_history(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) const = 0

Derivative of the history rate with respect to the history.

virtual SymSymR4 d_stress_rate_d_d_decouple(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed)

Derivative of the stress rate with respect to the deformation keeping fixed variables fixed.

virtual SymSkewR4 d_stress_rate_d_w_decouple(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed)

Derivative of the stress rate with respect to the vorticity keeping fixed variables fixed

virtual History d_history_rate_d_d_decouple(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed)

Derivative of the history rate with respect to the deformation rate keeping fixed variables in fixed constant

virtual History d_history_rate_d_w_decouple(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed)

Derivative of the history rate with respect to the vorticity keeping fixed variables in fixed constant

virtual Skew spin(const Symmetric &stress, const Symmetric &d, const Skew &w, const Orientation &Q, const History &history, Lattice &lattice, double T, const History &fixed) const = 0

The spin rate.

virtual Symmetric elastic_strains(const Symmetric &stress, Lattice &lattice, const Orientation &Q, const History &history, double T) = 0

Helper to calculate elastic strains.

virtual Symmetric stress_increment(const Symmetric &stress, const Symmetric &D, const Skew &W, double dt, Lattice &lattice, const Orientation &Q, const History &history, double T) = 0

Helper to predict an elastic stress increment.

virtual bool use_nye() const

Whether this model uses the Nye tensor.