PlanarDamageModel

Overview

This model forms the total damage projection operator by degrading the elasticity tensor along individual slip planes. For each slip plane the framework can degrade the elastic stiffness in the normal direction of the plane and in the shear (parallel) directions independently. The stiffness degradation in each of these directions is defined by a TransformationFunction which converts a damage internal variable, defined by a SlipPlaneDamage object, and the stress in the normal direction to the plane to a suitable damage index ranging from 0 (no damage) to 1 (complete loss of stiffness in that direction). The mathematical definition of the projection operator is then

P_{ijkl}=\prod_{i=1}^{n_{planes}}\delta_{ij}\delta_{kl}-N\left(d^{\left(i\right)},\sigma_{\bot}^{\left(i\right)}\right)N_{ijkl}^{\left(i\right)}-S\left(d^{\left(i\right)},\sigma_{\bot}^{\left(i\right)}\right)S_{ijkl}^{\left(i\right)}

where the product proceeds over each individual slip plane i defined by some normal vector in the current coordinates n_{i}^{(i)}. The projection for each plane then consists of the identity, a TransformationFunction for the normal direction N, the normal projection operator

N_{ijkl}^{\left(i\right)}=n_{i}^{\left(i\right)}n_{j}^{\left(i\right)}n_{k}^{\left(i\right)}n_{l}^{\left(i\right)}

a TransformationFunction for the shear direction S, and the shear projection operator

S_{ijkl}^{\left(i\right)}=\left(\delta_{ik}-n_{i}^{\left(i\right)}n_{k}^{\left(i\right)}\right)n_{j}^{\left(i\right)}n_{l}^{\left(i\right)}.

The stress normal to the plane can be calculated as

\sigma_{\bot}^{\left(i\right)}=\sigma_{ij}n_{i}^{\left(i\right)}n_{j}^{\left(i\right)}.

The available TransformationFunction options are described here:

The available SlipPlaneDamage functions are described here:

Parameters

Parameter

Object type

Description

Default

damage

neml::SlipPlaneDamage

The damage model

No

shear_transformation

neml::TransformationFunction

The shear transformation function

No

normal_transformation

neml::TransformationFunction

The normal transformation function

No

lattice

neml::Lattice

The lattice object describing the slip geometry

No

Class description

class PlanarDamageModel : public neml::CrystalDamageModel

Project damage on each plane proportional to some damage measure on the plane

Public Functions

PlanarDamageModel(ParameterSet &params)
virtual void init_hist(History &history) const

Initialize history.

virtual SymSymR4 projection(const Symmetric &stress, const History &damage, const Orientation &Q, Lattice &lattice, const SlipRule &slip, double T)

Returns the current projection operator.

virtual SymSymSymR6 d_projection_d_stress(const Symmetric &stress, const History &damage, const Orientation &Q, Lattice &lattice, const SlipRule &slip, double T)

Return the derivative of the projection operator wrt to the stress.

virtual History d_projection_d_history(const Symmetric &stress, const History &damage, const Orientation &Q, Lattice &lattice, const SlipRule &slip, double T)

Return the derivative of the projection operator wrt to the damage vars.

virtual History damage_rate(const Symmetric &stress, const History &history, const Orientation &Q, Lattice &lattice, const SlipRule &slip, double T, const History &fixed) const

Damage along each slip plane.

virtual History d_damage_d_stress(const Symmetric &stress, const History &history, const Orientation &Q, Lattice &lattice, const SlipRule &slip, double T, const History &fixed) const

Derivative of each damage with respect to stress.

virtual History d_damage_d_history(const Symmetric &stress, const History &history, const Orientation &Q, Lattice &lattice, const SlipRule &slip, double T, const History &fixed) const

Derivative of damage with respect to history.

Public Static Functions

static std::string type()

String type for the object system.

static std::unique_ptr<NEMLObject> initialize(ParameterSet &params)

Initialize from a parameter set.

static ParameterSet parameters()

Default parameters.