TransformationFunction

These models are part of the PlanarDamageModel system. They map the stress normal to a slip plane \sigma_{\bot}^{\left(i\right)} and an internal damage variable, defined with a SlipPlaneDamage object, to a suitable damage metric ranging from 0 (no damage) to 1 (no stiffness in the direction).

Superclass description

class TransformationFunction : public neml::NEMLObject

Transformation functions: map the damage variable + ancillary info into the range [0,1]

Subclassed by neml::SigmoidTransformation, neml::SwitchTransformation

Public Functions

TransformationFunction(ParameterSet &params)
virtual double map(double damage, double normal_stress) = 0

Map from damage and the normal stress to [0,1].

virtual double d_map_d_damage(double damage, double normal_stress) = 0

Derivative of the map with respect to the damage.

virtual double d_map_d_normal(double damage, double normal_stress) = 0

Derivative of the map with respect to the normal stress.

Individual models

SigmoidTransformation

Overview

This transformation function is independent of the normal stress. It is a sigmoid function that maps the damage variable to the interval [0,1]:

T\left(d^{\left(i\right)},\sigma_{\bot}^{\left(i\right)}\right)=\begin{cases}
\frac{1}{1+\left(\frac{d^{\left(i\right)}}{c-d^{\left(i\right)}}\right)^{-\beta}} & d^{\left(i\right)}<c\\
1 & d^{\left(i\right)}\ge c
\end{cases}

The parameter c^{(i)} is some critical value of the damage variable d^{(i)} on plane i and the exponent \beta^{(i)} is a smoothness parameter where \beta = 1 represents a linear transition from 0 to 1 and higher values of \beta represent a more abrupt onset of the effects of damage.

Parameters

Parameter

Object type

Description

Default

c

double

Critical damage value

No

beta

:c:type`double`

Abruptness of damage onset

No

Class description

class SigmoidTransformation : public neml::TransformationFunction

Sigmoid function. x=0 -> y=0, x=c -> y=1, beta controls smoothing.

Public Functions

SigmoidTransformation(ParameterSet &params)
virtual double map(double damage, double normal_stress)

Map from damage and the normal stress to [0,1].

virtual double d_map_d_damage(double damage, double normal_stress)

Derivative of the map with respect to damage.

virtual double d_map_d_normal(double damage, double normal_stress)

Derivative of the map with respect to the normal stress.

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.

SwitchTransformation

Overview

This is a “meta-transformation” that takes another TransformationFunction as a parameter and modifies it to return a different result. Specifically, this function returns 0 (no damage) if the loading on the plane is compressive and returns the base TransformationFunction value if the stress on the plane is tensile. Mathematically:

T\left(d^{\left(i\right)},\sigma_{\bot}^{\left(i\right)}\right)=\begin{cases}
\tilde{T}\left(d^{\left(i\right)},\sigma_{\bot}^{\left(i\right)}\right) & \sigma_{\bot}^{\left(i\right)}\ge0\\
0 & \sigma_{\bot}^{\left(i\right)}<0
\end{cases}

where \tilde{T}\left(d^{\left(i\right)},\sigma_{\bot}^{\left(i\right)}\right) is the base TransformationFunction.

Parameters

Parameter

Object type

Description

Default

base

neml::TransformationFunction

Base function

No

Class Description

class SwitchTransformation : public neml::TransformationFunction

Normal stress switch: don’t damage compression.

Public Functions

SwitchTransformation(ParameterSet &params)
virtual double map(double damage, double normal_stress)

Map from damage and the normal stress to [0,1].

virtual double d_map_d_damage(double damage, double normal_stress)

Derivative of the map with respect to damage.

virtual double d_map_d_normal(double damage, double normal_stress)

Derivative of the map with respect to the normal stress.

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.