SlipMultiStrengthSlipRule

Overview

These objects provide a relation between the stress, history, and temperature and the slip rate on each individual slip system where the slip rate is related to the resolved shear stress on the system

\tau_{g,i} = \bm{\sigma} : \left(\mathbf{d}_{g,i}\otimes\mathbf{n}_{g,i}\right)

where \mathbf{d}_{g,i} is the slip direction for group g, system i in the current coordinates and \mathbf{n}_{g,i} is similarly the slip system normal. The interface used is:

\dot{\gamma}_{g,i}, \frac{\partial \dot{\gamma}_{g,i}}{\partial \tau_{g,i}}, \frac{\partial \dot{\gamma}_{g,i}}{\partial \bar{\tau}_{g,i}^{j}} \leftarrow \mathcal{G}\left( \tau_{g,i}, \bar{\tau}_{g,i}, \bm{\alpha}, T \right)

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

where g indicates the slip group, i indicates the system within the group, and \bar{\tau}_{g,i}^j is a collection of slip system strengths, defined by SlipHardening models:

The definition of the history evolution is left to the SlipHardening models.

The difference between this class and SlipStrengthSlipRule is that the slip system flow is proportional to multiple slip strength models, for example an isotropic and a kinematic strength, instead of a single flow strength model.

Implementations

Parameters

Parameter

Object type

Description

Default

strength

std::vector<neml::SlipHardening>

List of slip hardening rules

No

Class description

class SlipMultiStrengthSlipRule : public neml::SlipRule

Class relying on multiple strength models (each of which is a function of some history variables with corresponding evolution laws)

Subclassed by neml::KinematicPowerLawSlipRule, neml::SlipStrengthSlipRule

Public Functions

SlipMultiStrengthSlipRule(ParameterSet &params, std::vector<std::shared_ptr<SlipHardening>> strengths)

Initialize with the strength models.

size_t nstrength() const

Number of strengths.

virtual void populate_hist(History &history) const

Populate the history.

virtual void init_hist(History &history) const

Actually initialize the history.

virtual double strength(const History &history, Lattice &L, double T, const History &fixed) const

Helper for models that want an average strength.

virtual double slip(size_t g, size_t i, const Symmetric &stress, const Orientation &Q, const History &history, Lattice &L, double T, const History &fixed) const

Slip rate on group g, system i.

virtual Symmetric d_slip_d_s(size_t g, size_t i, const Symmetric &stress, const Orientation &Q, const History &history, Lattice &L, double T, const History &fixed) const

Derivative of slip rate with respect to stress.

virtual History d_slip_d_h(size_t g, size_t i, const Symmetric &stress, const Orientation &Q, const History &history, Lattice &L, double T, const History &fixed) const

Derivative of slip rate with respect to history.

virtual History hist_rate(const Symmetric &stress, const Orientation &Q, const History &history, Lattice &L, double T, const History &fixed) const

History evolution equations.

virtual History d_hist_rate_d_stress(const Symmetric &stress, const Orientation &Q, const History &history, Lattice &L, double T, const History &fixed) const

Derivative of the history rate with respect to stress.

virtual History d_hist_rate_d_hist(const Symmetric &stress, const Orientation &Q, const History &history, Lattice &L, double T, const History &fixed) const

Derivative of the history rate with respect to the history.

virtual bool use_nye() const

Whether this model uses the Nye tensor.

virtual double sslip(size_t g, size_t i, double tau, std::vector<double> strengths, double T) const = 0

The slip rate on group g, system i given the resolved shear, the strength, and temperature

virtual double d_sslip_dtau(size_t g, size_t i, double tau, std::vector<double> strengths, double T) const = 0

Derivative of slip rate with respect to the resolved shear.

virtual std::vector<double> d_sslip_dstrength(size_t g, size_t i, double tau, std::vector<double> strengths, double T) const = 0

Derivative of the slip rate with respect to the strengths.