Thermomechanical Models

Coupled thermal-mechanical constitutive models with temperature-dependent properties and thermal expansion.

void umat_elasticity_iso_T(const arma::vec&, const arma::vec&, arma::vec&, double&, arma::mat&, arma::vec&, arma::vec&, double&, const arma::mat&, const int&, const arma::vec&, const int&, arma::vec&, const double&, const double&, const double&, const double&, double&, double&, double&, double&, double&, double&, double&, const int&, const int&, const bool&, double&, const int& = 0)

Thermomechanical isotropic linear elasticity (ELISO, thermomechanical).

The stress is \( \boldsymbol{\sigma} = \mathbf{L} : \left( \boldsymbol{\varepsilon} - \boldsymbol{\alpha}\,(T - T_{init}) \right) \), the tangents \( \partial\boldsymbol{\sigma}/\partial\boldsymbol{\varepsilon} = \mathbf{L} \) and \( \partial\boldsymbol{\sigma}/\partial T = -\mathbf{L} : \boldsymbol{\alpha} \); the reversible entropy is \( \eta_r = \rho c_p \ln(T/T_{init}) + \boldsymbol{\alpha} : \boldsymbol{\sigma} \) (no dissipation), with \( \mathbf{L} = \mathbf{L}_{iso}(E, \nu) \) and \( \boldsymbol{\alpha} = \alpha\,\mathbf{I} \).

Voigt order [11, 22, 33, 12, 13, 23], engineering shear strains; MPa, K.

Material properties (5):

Index

Symbol

Description

props[0]

\( \rho \)

density

props[1]

\( c_p \)

specific heat capacity

props[2]

\( E \)

Young modulus

props[3]

\( \nu \)

Poisson ratio

props[4]

\( \alpha \)

coefficient of thermal expansion

State variables (1):

Index

Symbol

Description

statev[0]

\( T_{init} \)

initial (reference) temperature

void umat_elasticity_ortho_T(const arma::vec&, const arma::vec&, arma::vec&, double&, arma::mat&, arma::vec&, arma::vec&, double&, const arma::mat&, const int&, const arma::vec&, const int&, arma::vec&, const double&, const double&, const double&, const double&, double&, double&, double&, double&, double&, double&, double&, const int&, const int&, const bool&, double&, const int& = 0)

Thermomechanical orthotropic linear elasticity in the material axes (ELORT, thermomechanical).

The stress is \( \boldsymbol{\sigma} = \mathbf{L} : \left( \boldsymbol{\varepsilon} - \boldsymbol{\alpha}\,(T - T_{init}) \right) \), the tangents \( \partial\boldsymbol{\sigma}/\partial\boldsymbol{\varepsilon} = \mathbf{L} \) and \( \partial\boldsymbol{\sigma}/\partial T = -\mathbf{L} : \boldsymbol{\alpha} \); the reversible entropy is \( \eta_r = \rho c_p \ln(T/T_{init}) + \boldsymbol{\alpha} : \boldsymbol{\sigma} \) (no dissipation), with \( \mathbf{L} \) = L_ortho(E1, E2, E3, nu12, nu13, nu23, G12, G13, G23, “EnuG”) and \( \boldsymbol{\alpha} = (\alpha_1, \alpha_2, \alpha_3, 0, 0, 0) \).

Voigt order [11, 22, 33, 12, 13, 23], engineering shear strains; MPa, K.

Material properties (14):

Index

Symbol

Description

props[0]

\( \rho \)

density

props[1]

\( c_p \)

specific heat capacity

props[2..4]

\( E_1, E_2, E_3 \)

Young moduli

props[5..7]

\( \nu_{12}, \nu_{13}, \nu_{23} \)

Poisson ratios

props[8..10]

\( G_{12}, G_{13}, G_{23} \)

shear moduli

props[11..13]

\( \alpha_1, \alpha_2, \alpha_3 \)

coefficients of thermal expansion

State variables (1):

Index

Symbol

Description

statev[0]

\( T_{init} \)

initial (reference) temperature

void umat_elasticity_trans_iso_T(const arma::vec&, const arma::vec&, arma::vec&, double&, arma::mat&, arma::vec&, arma::vec&, double&, const arma::mat&, const int&, const arma::vec&, const int&, arma::vec&, const double&, const double&, const double&, const double&, double&, double&, double&, double&, double&, double&, double&, const int&, const int&, const bool&, double&, const int& = 0)

Thermomechanical transversely isotropic linear elasticity (ELIST, thermomechanical).

The stress is \( \boldsymbol{\sigma} = \mathbf{L} : \left( \boldsymbol{\varepsilon} - \boldsymbol{\alpha}\,(T - T_{init}) \right) \), the tangents \( \partial\boldsymbol{\sigma}/\partial\boldsymbol{\varepsilon} = \mathbf{L} \) and \( \partial\boldsymbol{\sigma}/\partial T = -\mathbf{L} : \boldsymbol{\alpha} \); the reversible entropy is \( \eta_r = \rho c_p \ln(T/T_{init}) + \boldsymbol{\alpha} : \boldsymbol{\sigma} \) (no dissipation), with \( \mathbf{L} \) = L_isotrans(EL, ET, nuTL, nuTT, GLT, axis) and \( \boldsymbol{\alpha} = \alpha_T\,\mathbf{I} + (\alpha_L - \alpha_T)\,\mathbf{e}_{axis} \otimes \mathbf{e}_{axis} \).

Voigt order [11, 22, 33, 12, 13, 23], engineering shear strains; MPa, K.

Material properties (10):

Index

Symbol

Description

props[0]

\( \rho \)

density

props[1]

\( c_p \)

specific heat capacity

props[2]

axis

longitudinal direction: 1, 2 or 3

props[3]

\( E_L \)

longitudinal Young modulus

props[4]

\( E_T \)

transverse Young modulus

props[5]

\( \nu_{TL} \)

Poisson ratio, loading along the longitudinal axis

props[6]

\( \nu_{TT} \)

Poisson ratio in the transverse plane

props[7]

\( G_{LT} \)

longitudinal shear modulus

props[8]

\( \alpha_L \)

longitudinal coefficient of thermal expansion

props[9]

\( \alpha_T \)

transverse coefficient of thermal expansion

State variables (1):

Index

Symbol

Description

statev[0]

\( T_{init} \)

initial (reference) temperature

void umat_plasticity_iso_T(const arma::vec&, const arma::vec&, arma::vec&, double&, arma::mat&, arma::vec&, arma::vec&, double&, const arma::mat&, const int&, const arma::vec&, const int&, arma::vec&, const double&, const double&, const double&, const double&, double&, double&, double&, double&, double&, double&, double&, const int&, const int&, const bool&, double&, const int& = 0)

Thermomechanical elastic-plastic model with isotropic hardening (J2, power-law hardening).

Yield function \( \Phi = \sigma_{eq} - k\,p^m - \sigma_Y \leq 0 \) with associated J2 flow. The Gibbs free energy of the lead mechanism (internal variables \( p \) and \( \boldsymbol{\varepsilon}^p \)) reads

\[G = -\frac{1}{2}\,\boldsymbol{\sigma} : \mathbf{S} : \boldsymbol{\sigma} - \boldsymbol{\sigma} : \boldsymbol{\varepsilon}^p - \boldsymbol{\sigma} : \boldsymbol{\alpha}\,(\theta - \theta_0) + c_0\left[(\theta - \theta_0) - \theta \ln\frac{\theta}{\theta_0}\right] - \eta_0\,\theta + E_0 + F(\theta, p), \qquad c_0 = \rho\, c_p . \]
Under tangent_none the kernel still assembles the continuum operator: the sensitivities \( P_{\varepsilon} \) and \( P_\theta \) feed the physical heat source \( r \) and its linearization, not only the Newton operator. Under tangent_algorithmic only dSdE carries the consistent correction; dSdT, drdE and drdT keep the continuum form. drdE and drdT differentiate the dissipation through \( \mathbf{P}_\varepsilon \), \( P_\theta \) and the turning of the flow direction over the increment ( \( \tfrac12\Delta p\,\partial\boldsymbol{\Lambda}/\partial\boldsymbol{\sigma}:\boldsymbol{\sigma}^n \)): exact to round-off against finite differences.

Material Parameters (props, 8):

Index

Symbol

Description

Units

props[0]

\( \rho \)

Density

Mass/Volume

props[1]

\( c_p \)

Specific heat capacity

Energy/(Mass.Temperature)

props[2]

\( E \)

Young’s modulus

Stress (MPa)

props[3]

\( \nu \)

Poisson’s ratio

-

props[4]

\( \alpha \)

Isotropic thermal expansion coefficient

1/Temperature

props[5]

\( \sigma_Y \)

J2 equivalent yield stress

Stress (MPa)

props[6]

\( k \)

Hardening parameter

Stress (MPa)

props[7]

\( m \)

Hardening exponent

-

State Variables (statev, 8):

Index

Symbol

Description

statev[0]

\( T_{init} \)

Initial temperature

statev[1]

\( p \)

Accumulated plastic strain

statev[2..7]

\( \boldsymbol{\varepsilon}^p \)

Plastic strain, Voigt [11,22,33,12,13,23], engineering shear ( \(\times 2\))

void umat_plasticity_johnson_cook_CCP_T(const arma::vec &Etot, const arma::vec &DEtot, arma::vec &sigma, double &r, arma::mat &dSdE, arma::vec &dSdT, arma::vec &drdE, double &drdT, const arma::mat &DR, const int &nprops, const arma::vec &props, const int &nstatev, arma::vec &statev, const double &T, const double &DT, const double &Time, const double &DTime, double &Wm, double &Wm_r, double &Wm_ir, double &Wm_d, double &Wt, double &Wt_r, double &Wt_ir, const int &ndi, const int &nshr, const bool &start, double &tnew_dt, const int &tangent_mode = 0)

Johnson-Cook elastic-viscoplastic constitutive law (EPJCK), thermomechanical version.

Same constitutive model and CCP integration as the mechanical kernel umat_plasticity_johnson_cook_CCP() (see that header for the yield stress, the regularization and the discrete rate treatment), extended with the coupled thermal outputs of the thermomechanical framework: the heat source \( r \) and the four linearizations \( \partial\boldsymbol{\sigma}/\partial\boldsymbol{\varepsilon} \), \( \partial\boldsymbol{\sigma}/\partial\theta \), \( \partial r/\partial\boldsymbol{\varepsilon} \), \( \partial r/\partial\theta \) consumed by the coupled Newton-Raphson solver.

Thermal coupling. Unlike EPICP, the yield function depends explicitly on the temperature through the thermal-softening factor \( f_\theta = 1 - \theta^{*m} \):

\[ \frac{\partial\Phi}{\partial\theta} = \left(A + B p^{n}\right) f_{\dot\varepsilon}\, \frac{m\,\theta^{*\,m-1}}{\theta_{\mathrm{melt}} - \theta_{\mathrm{ref}}} > 0 , \]
so a temperature rise lowers the yield stress and feeds back on the plastic flow through \( \mathbf{P}_\theta = \hat{B}^{-1}\left(\partial\Phi/\partial\theta - \partial\Phi/\partial\boldsymbol{\sigma} : \mathbf{L} : \boldsymbol{\alpha}\right) \) and \( \partial\boldsymbol{\sigma}/\partial\theta = -\mathbf{L}:\boldsymbol{\alpha} - \boldsymbol{\kappa}\,P_\theta \).

Entropy and heat source. The stored hardening energy \( G^{ir} = f_\theta(\theta)\,B p^{n+1}/(n+1) \) depends on the temperature, so besides the thermoelastic entropy \( \eta_r = c_0 \ln(\theta/\theta_0) + \boldsymbol{\alpha}:\boldsymbol{\sigma} \) the kernel carries \( \eta_{ir} = -\partial G^{ir}/\partial\theta = -f'_\theta\, B p^{n+1}/(n+1) \geq 0 \) ( \( W_t^{ir} \) accumulates \( \theta_{n+1}\,\Delta\eta_{ir} \), the \( \theta_{n+1} \) of \( r \)). No Taylor-Quinney coefficient is introduced: \( r \) is the heat of the increment \( r = \Delta\gamma_{loc} - \theta_{n+1}\,\Delta\eta \) (heat_source_increment()), with \( \eta = \eta_r + \eta_{ir} \) and the dissipation the kernel adds to \( W_m^d \), \( \Delta\gamma_{loc} = \tfrac12 (\boldsymbol{\sigma}^n + \boldsymbol{\sigma}^{n+1}):\Delta\boldsymbol{\varepsilon}^{p} + \tfrac12 (A_p^n + A_p^{n+1})\,\Delta p \), \( A_p = -f_\theta B p^{n} \) (same energy split as the mechanical kernel), both evaluated on the converged increment: at fixed \( \Delta t \) the rate-dependent \( \Delta p \) is a logarithmic function of the strain increment, which a linearization would miss. \( \partial r/\partial\boldsymbol{\varepsilon} \) and \( \partial r/\partial\theta \) differentiate it through \( \mathbf{P}_\varepsilon \), \( P_\theta \), the turning of the flow direction over the increment included ( \( \tfrac12\,\Delta p\;\partial\boldsymbol{\Lambda}/\partial\boldsymbol{\sigma}:\boldsymbol{\sigma}^n \), the end stress dropping out by homogeneity), and \( \partial\eta_{ir}/\partial\theta = -f''_\theta B p^{n+1}/(n+1) \), \( \partial\eta_{ir}/\partial p = -f'_\theta B p^n \). Under adiabatic loading ( \( r = 0 \)) every increment satisfies \( \theta_{n+1}\Delta\eta = \Delta W_m^d \).

Tangent modes. The mechanical block \( \partial\boldsymbol{\sigma}/\partial\boldsymbol{\varepsilon} \) follows tangent_mode (continuum or algorithmic). As in the other thermomechanical kernels, tangent_none is promoted to the continuum operator: the sensitivities \( \mathbf{P}_\varepsilon \) and \( \hat{B}^{-1} \) feed the physical heat source and its linearization, not only the Newton operator.

Material properties (props, 13):

Index

Symbol

Description

0

\( \rho \)

Density

1

\( c_p \)

Specific heat capacity

2

\( E \)

Young’s modulus

3

\( \nu \)

Poisson’s ratio

4

\( \alpha \)

Coefficient of thermal expansion (isotropic)

5

\( A \)

Initial yield stress

6

\( B \)

Hardening coefficient

7

\( n \)

Hardening exponent

8

\( C \)

Strain-rate sensitivity

9

\( \dot\varepsilon_0 \)

Reference strain rate (1/s)

10

\( m \)

Thermal-softening exponent

11

\( \theta_{\mathrm{ref}} \)

Reference temperature (K)

12

\( \theta_{\mathrm{melt}} \)

Melting temperature (K)

State variables (statev, 9): \( \theta_0 \), \( p \), \( \boldsymbol{\varepsilon}^{p} \) (6, Voigt), \( \dot p \) (output), the layout of the mechanical kernel.

Parameters:
  • Etot – Total strain at \( t_n \) (6x1 Voigt)

  • DEtot – Strain increment (6x1 Voigt)

  • sigma – Stress [input/output] (6x1 Voigt)

  • r – Heat of the increment per reference volume, storage included (heat_source_increment()) [output]

  • dSdE – Mechanical tangent \( \partial\boldsymbol{\sigma}/\partial\boldsymbol{\varepsilon} \) [output] (6x6)

  • dSdT – Thermal stress sensitivity \( \partial\boldsymbol{\sigma}/\partial\theta \) [output] (6)

  • drdE – Strain derivative of the heat of the increment \( \partial r/\partial\boldsymbol{\varepsilon} \) [output] (6)

  • drdT – Temperature derivative of the heat of the increment \( \partial r/\partial\theta \) [output] (scalar)

  • DR – Rotation increment (3x3)

  • nprops – Number of material properties (13)

  • props – Material properties vector

  • nstatev – Number of state variables (9)

  • statev – State variables vector [input/output]

  • T – Temperature at \( t_n \)

  • DT – Temperature increment

  • Time – Time at \( t_n \)

  • DTime – Time increment (drives the plastic strain rate \( \dot p = \Delta p/\Delta t \))

  • Wm – Total mechanical work [input/output]

  • Wm_r – Recoverable mechanical work [input/output]

  • Wm_ir – Irrecoverable (stored) mechanical work [input/output]

  • Wm_d – Dissipated mechanical work [input/output]

  • Wt – Total thermal work [input/output]

  • Wt_r – Reversible thermal work [input/output]

  • Wt_ir – Irreversible thermal work [input/output]

  • ndi – Number of direct stress components

  • nshr – Number of shear stress components

  • start – Flag for the first increment

  • tnew_dt – Suggested time step ratio [output]

  • tangent_mode – Tangent assembly mode (parameter.hpp); tangent_none is promoted to tangent_continuum, see above

void umat_plasticity_kin_iso_T(const arma::vec&, const arma::vec&, arma::vec&, double&, arma::mat&, arma::vec&, arma::vec&, double&, const arma::mat&, const int&, const arma::vec&, const int&, arma::vec&, const double&, const double&, const double&, const double&, double&, double&, double&, double&, double&, double&, double&, const int&, const int&, const bool&, double&, const int& = 0)

Thermomechanical elastic-plastic UMAT with isotropic (power-law) and linear kinematic (Prager) hardening, von Mises criterion (EPKCP).

The backstress is not stored: it follows from the back-strain \( \mathbf{a} \) (engineering shear components, rotated as a strain) as \( \mathbf{X} = k_X\,(\mathbf{a} \circ \mathbf{I}_{r05}) \), i.e. Prager hardening with \( C = 3 k_X / 2 \). \( W_m^{ir} \) books the hardening energy \( \tfrac12(R_n+R_{n+1})\Delta p + \tfrac12(\mathbf{X}_n+\mathbf{X}_{n+1}):\Delta\mathbf{a} \), \( W_m^d \) the rest of the plastic work; drdE / drdT carry the turning of the flow direction on \( \boldsymbol{\sigma}-\mathbf{X} \) and hold the back-stress direction fixed (1e-6 on a non-proportional probe).

Material properties (9; MPa, K):

Index

Symbol

Description

props[0]

\( \rho \)

density

props[1]

\( c_p \)

specific heat capacity

props[2]

\( E \)

Young modulus

props[3]

\( \nu \)

Poisson ratio

props[4]

\( \alpha \)

coefficient of thermal expansion

props[5]

\( \sigma_Y \)

J2 equivalent yield stress

props[6]

\( k \)

isotropic hardening modulus, \( H_p = k\,p^m \)

props[7]

\( m \)

isotropic hardening exponent

props[8]

\( k_X \)

linear kinematic hardening modulus

State variables (14; Voigt order [11, 22, 33, 12, 13, 23], engineering shear strains):

Index

Symbol

Description

statev[0]

\( T_{init} \)

initial temperature

statev[1]

\( p \)

accumulated plastic strain

statev[2..7]

\( \boldsymbol{\varepsilon}^p \)

plastic strain

statev[8..13]

\( \mathbf{a} \)

kinematic back-strain (the backstress is \( \mathbf{X} = k_X\,(\mathbf{a} \circ \mathbf{I}_{r05}) \))

void umat_sma_unified_T_T(const std::string &umat_name, const arma::vec &Etot, const arma::vec &DEtot, arma::vec &sigma, double &r, arma::mat &dSdE, arma::vec &dSdT, arma::vec &drdE, double &drdT, const arma::mat &DR, const int &nprops, const arma::vec &props, const int &nstatev, arma::vec &statev, const double &T, const double &DT, const double &Time, const double &DTime, double &Wm, double &Wm_r, double &Wm_ir, double &Wm_d, double &Wt, double &Wt_r, double &Wt_ir, const int &ndi, const int &nshr, const bool &start, double &tnew_dt, const int &tangent_mode = tangent_default)

Unified thermomechanical SMA model with coupled phase transformation and heat equation.

This function implements the fully coupled thermomechanical version of the unified phenomenological SMA model. Compared to the mechanical-only version (umat_sma_unified_T), this adds thermal coupling through the heat equation, requiring density and specific heat capacity as additional material parameters, and producing thermal tangent operators as output.

Elastic Symmetry and Criteria Selection:

The elastic behavior and transformation criteria are determined by the umat_name parameter:

umat_name

Elasticity

Criteria

Number of props

SMADI

Isotropic

Drucker

31

SMADC

Cubic

Drucker

33

SMAAI

Isotropic

Anisotropic Drucker (DFA)

38

SMAAC

Cubic

Anisotropic Drucker (DFA)

40

Material Parameters (props):

SMADI (Isotropic elasticity, Drucker criteria) — 31 props:

Index

Symbol

Description

Units

0

\( \rho \)

Density

kg/m^3

1

\( c_{pA} \)

Specific heat capacity of Austenite

J/(kg.K)

2

\( c_{pM} \)

Specific heat capacity of Martensite

J/(kg.K)

3

flagT

0: the given transformation temperatures are those of the measured curve, converted to the model’s with n1..n4; 1: used as given

-

4

\( E_A \)

Young’s modulus of Austenite

MPa

5

\( E_M \)

Young’s modulus of Martensite

MPa

6

\( \nu_A \)

Poisson’s ratio of Austenite

-

7

\( \nu_M \)

Poisson’s ratio of Martensite

-

8

\( \alpha_A \)

CTE of Austenite

1/K

9

\( \alpha_M \)

CTE of Martensite

1/K

10

\( H_{min} \)

Minimal transformation strain magnitude

-

11

\( H_{max} \)

Maximal transformation strain magnitude

-

12

\( k_1 \)

Exponential evolution parameter for \( H^{cur} \)

1/MPa

13

\( \sigma_{crit} \)

Von Mises stress below which \( H^{cur} = H_{min} \)

MPa

14

\( C_A \)

Clausius-Clapeyron slope (M \( \rightarrow \) A)

MPa/K

15

\( C_M \)

Clausius-Clapeyron slope (A \( \rightarrow \) M)

MPa/K

16

\( M_{s0} \)

Martensite start temperature at zero stress

K

17

\( M_{f0} \)

Martensite finish temperature at zero stress

K

18

\( A_{s0} \)

Austenite start temperature at zero stress

K

19

\( A_{f0} \)

Austenite finish temperature at zero stress

K

20

\( n_1 \)

Martensite start smooth exponent

-

21

\( n_2 \)

Martensite finish smooth exponent

-

22

\( n_3 \)

Austenite start smooth exponent

-

23

\( n_4 \)

Austenite finish smooth exponent

-

24

\( \sigma_{caliber} \)

Calibration stress for \( C_A \) / \( C_M \)

MPa

25

\( b \)

Tension-compression asymmetry parameter (Prager)

-

26

\( n \)

Tension-compression asymmetry exponent (Prager)

-

27

\( c_\lambda \)

Penalty function exponent start point

-

28

\( p_{0\lambda} \)

Penalty function limit value

-

29

\( n_\lambda \)

Penalty function power law exponent

-

30

\( \alpha_\lambda \)

Penalty function power law parameter

-

SMADC (Cubic elasticity, Drucker criteria) — 33 props:

Index

Symbol

Description

Units

0

\( \rho \)

Density

kg/m^3

1

\( c_{pA} \)

Specific heat capacity of Austenite

J/(kg.K)

2

\( c_{pM} \)

Specific heat capacity of Martensite

J/(kg.K)

3

flagT

0: the given transformation temperatures are those of the measured curve, converted to the model’s with n1..n4; 1: used as given

-

4

\( E_A \)

Young’s modulus of Austenite ([100] direction)

MPa

5

\( E_M \)

Young’s modulus of Martensite ([100] direction)

MPa

6

\( \nu_A \)

Poisson’s ratio of Austenite

-

7

\( \nu_M \)

Poisson’s ratio of Martensite

-

8

\( G_A \)

Shear modulus of Austenite

MPa

9

\( G_M \)

Shear modulus of Martensite

MPa

10–32

Same as SMADI props[8–30] (common SMA parameters)

SMAAI (Isotropic elasticity, anisotropic Drucker criteria) — 38 props:

Same as SMADI (props[0–30]) followed by 7 DFA parameters:

Index

Symbol

Description

31

\( F_{dfa} \)

F parameter of DFA criteria

32

\( G_{dfa} \)

G parameter of DFA criteria

33

\( H_{dfa} \)

H parameter of DFA criteria

34

\( L_{dfa} \)

L parameter of DFA criteria

35

\( M_{dfa} \)

M parameter of DFA criteria

36

\( N_{dfa} \)

N parameter of DFA criteria

37

\( K_{dfa} \)

K parameter of DFA criteria

SMAAC (Cubic elasticity, anisotropic Drucker criteria) — 40 props:

Same as SMADC (props[0–32]) followed by 7 DFA parameters (props[33–39]).

State Variables (statev) — 17 variables:

Index

Symbol

Description

Units

0

\( T_{init} \)

Initial/reference temperature

K

1

\( \xi \)

Martensitic volume fraction

-

2

\( \varepsilon^{tr}_{11} \)

Transformation strain component 11

-

3

\( \varepsilon^{tr}_{22} \)

Transformation strain component 22

-

4

\( \varepsilon^{tr}_{33} \)

Transformation strain component 33

-

5

\( \gamma^{tr}_{12} \)

Transformation strain component 12 (engineering)

-

6

\( \gamma^{tr}_{13} \)

Transformation strain component 13 (engineering)

-

7

\( \gamma^{tr}_{23} \)

Transformation strain component 23 (engineering)

-

8

\( \xi_F \)

Cumulated forward transformation, non-decreasing ( \( \xi = \xi_F - \xi_R \))

-

9

\( \xi_R \)

Cumulated reverse transformation, non-decreasing

-

10

\( \rho \Delta s_0 \)

Entropy difference between phases (M - A)

MPa/K

11

\( \rho \Delta E_0 \)

Internal energy difference between phases (M - A)

MPa

12

\( D \)

Stress dependence parameter for transformation limits

-

13

\( a_1 \)

Forward hardening parameter

MPa

14

\( a_2 \)

Reverse hardening parameter

MPa

15

\( a_3 \)

Equilibrium hardening parameter

MPa

16

\( Y_{0t} \)

Initial transformation critical value

MPa

References:

  • Chatziathanasiou, D. (2016). Ph.D. Thesis — Phenomenological constitutive modeling of shape memory alloys.

  • Chemisky, Y., Chatziathanasiou, D., Kumar, P., & Lagoudas, D. C. (2014). “A constitutive model for cyclic actuation of high-temperature shape memory alloys.” Mechanics of Materials, 68, 120-136.

See also

umat_sma_unified_T() for the mechanical-only version (no thermal coupling)

See also

L_iso() for isotropic stiffness tensor (SMADI, SMAAI)

See also

L_cubic() for cubic stiffness tensor (SMADC, SMAAC)

Note

Elastic convention: isotropic uses “Enu”, cubic uses “EnuG” for L_iso / L_cubic

Note

flagT = 0 converts the given Ms, Mf, As, Af (read on the measured curve) into the model’s temperatures through the smoothing exponents n1..n4; flagT = 1 uses them as given

Note

The pre-2.0 aliases SMAUT and SMANI were removed in 2.0: use SMADI and SMAAI.

Note

Convergence measure: same magnitude scales \( Y^{crit}_j \) as the mechanical umat_sma_unified_T (see its note).

Note

The reverse row of the local Jacobian uses the ETMean chain rule of umat_sma_unified_T (see its note).

Note

Tangent modes. tangent_none, tangent_algorithmic and tangent_closest_point are all clamped to the continuum tangent: the sensitivities \( \mathbf{P}_\varepsilon \) and \( \hat{\mathbf{B}}^{-1} \) also feed the physical heat source \( r \) and its linearisation, the finite-difference flow Hessian of the algorithmic mode is near-singular on the plateau, and this kernel has no closest-point branch. The thermal cross-tangents are

\[\mathbf{P}_\theta = \hat{\mathbf{B}}^{-1}\left(\frac{\partial \Phi_l}{\partial \theta} - \frac{\partial \Phi_l}{\partial \boldsymbol{\sigma}} : \mathbf{L}\,\boldsymbol{\alpha}\right)_l, \qquad \frac{\partial \boldsymbol{\sigma}}{\partial T} = -\mathbf{L}\,\boldsymbol{\alpha} - \sum_j \boldsymbol{\kappa}_j\,P_{\theta,j}, \]
with \( \hat{B}_{lj} \) row = criterion \( l \), column = mechanism \( j \). The dissipation derivatives hold the transformation directions fixed over the increment ( \( \mathrm{d}\Delta\boldsymbol{\varepsilon}^{T} = \boldsymbol{\Lambda}^F P_F + \boldsymbol{\Lambda}^R P_R \)), and the entropy is \( \eta = c_0(\xi)\ln(T/T_{init}) + \boldsymbol{\alpha}(\xi):\boldsymbol{\sigma} + \rho\Delta s_0\,\xi \).

Parameters:
  • umat_name – Model variant (SMADI, SMADC, SMAAI, SMAAC)

  • Etot – Total strain tensor at beginning of increment (Voigt notation: 6x1)

  • DEtot – Strain increment tensor (Voigt notation: 6x1)

  • sigma – Cauchy stress tensor (Voigt notation: 6x1) [output]

  • r – Heat of the increment per reference volume, storage included (heat_source_increment()) [output]

  • dSdE – Mechanical tangent modulus \( \partial \sigma / \partial \varepsilon \) (6x6) [output]

  • dSdT – Thermal stress tangent \( \partial \sigma / \partial T \) (6) [output]

  • drdE – Thermal-mechanical tangent \( \partial r / \partial \varepsilon \) (6) [output]

  • drdT – Thermal tangent \( \partial r / \partial T \) (scalar) [output]

  • DR – Rotation increment matrix (3x3) for objective integration

  • nprops – Number of material properties

  • props – Material properties vector (layout depends on umat_name)

  • nstatev – Number of state variables (17)

  • statev – State variables vector [input/output]

  • T – Temperature at beginning of increment

  • DT – Temperature increment

  • Time – Time at beginning of increment

  • DTime – Time increment

  • Wm – Total mechanical work [output]

  • Wm_r – Recoverable (elastic) mechanical work [output]

  • Wm_ir – Irrecoverable mechanical work stored in transformation [output]

  • Wm_d – Dissipated mechanical work (hysteresis) [output]

  • Wt – Total thermal work [output]

  • Wt_r – Recoverable thermal work [output]

  • Wt_ir – Irrecoverable thermal work [output]

  • ndi – Number of direct stress components (typically 3)

  • nshr – Number of shear stress components (typically 3)

  • start – Flag indicating first increment (true) or continuation (false)

  • tnew_dt – Suggested new time step ratio for adaptive time stepping [output]

void umat_prony_Nfast_T(const arma::vec &Etot, const arma::vec &DEtot, arma::vec &sigma, double &r, arma::mat &dSdE, arma::vec &dSdT, arma::vec &drdE, double &drdT, const arma::mat &DR, const int &nprops, const arma::vec &props, const int &nstatev, arma::vec &statev, const double &T, const double &DT, const double &Time, const double &DTime, double &Wm, double &Wm_r, double &Wm_ir, double &Wm_d, double &Wt, double &Wt_r, double &Wt_ir, const int &ndi, const int &nshr, const bool &start, double &tnew_dt, const int &tangent_mode = 0)

Thermomechanical generalized Maxwell (Prony series) viscoelastic model with N branches (PRONK, thermomechanical).

Fully coupled thermomechanical version of umat_prony_Nfast(): the same rheology, stress update and state variables (see that kernel for the constitutive equations and the instantaneous-stiffness convention), plus the heat equation terms. The volumetric heat capacity is \( c_0 = \rho\, c_p \) and the heat source \( r \) collects the thermoelastic coupling \( -T\, \boldsymbol{\alpha} : \dot{\boldsymbol{\sigma}} \) and the viscous dissipation of the dashpots; its sensitivities drdE and drdT and the stress sensitivity dSdT are returned for the monolithic thermomechanical solver. At constant temperature this kernel reproduces umat_prony_Nfast() exactly.

**Material parameters (props), \( n_{props} = 6 + 4N \):**

Index

Symbol

Description

Units

props[0]

\( \rho \)

Density

Mass/Volume

props[1]

\( c_p \)

Specific heat capacity

Energy/(Mass x Temperature)

props[2]

\( E_0 \)

Instantaneous Young’s modulus

Stress

props[3]

\( \nu_0 \)

Instantaneous Poisson’s ratio

-

props[4]

\( \alpha \)

Isotropic thermal expansion coefficient

1/Temperature

props[5]

\( N \)

Number of Maxwell branches

-

props[6+4(i-1)]

\( E_i \)

Young’s modulus of branch i

Stress

props[7+4(i-1)]

\( \nu_i \)

Poisson’s ratio of branch i

-

props[8+4(i-1)]

\( \eta_{B,i} \)

Bulk viscosity of branch i

Stress x Time

props[9+4(i-1)]

\( \eta_{S,i} \)

Shear viscosity of branch i

Stress x Time

**State variables (statev), \( n_{statev} = 7 + 7N \):**

Index

Symbol

Description

Units

statev[0]

\( T_{init} \)

Initial temperature

Temperature

statev[1:6]

\( \tilde{\boldsymbol{\varepsilon}}^{v} \)

Total viscous strain \( \sum_i \mathbf{M}_0 : \mathbf{L}_i : \boldsymbol{\varepsilon}^{v}_i \) (Voigt)

-

statev[7+7(i-1)]

\( v_i \)

Accumulated flow length of branch i

-

statev[8+7(i-1):13+7(i-1)]

\( \boldsymbol{\varepsilon}^{v}_i \)

Viscous strain of branch i (Voigt)

-

See also

umat_prony_Nfast() the mechanical twin

Note

The mechanical props of umat_prony_Nfast() are shifted by two slots ( \( \rho, c_p \) first)

Parameters:
  • Etot – Total strain at the beginning of the increment (Voigt notation: \(6 \times 1\) vector)

  • DEtot – Strain increment (Voigt notation: \(6 \times 1\) vector)

  • sigma – Stress (Voigt notation: \(6 \times 1\) vector) [input/output]

  • r – Heat of the increment per reference volume, storage included (heat_source_increment()) [output]

  • dSdE – Consistent mechanical tangent \( \partial \boldsymbol{\sigma} / \partial \boldsymbol{\varepsilon} \) ( \(6 \times 6\)) [output]

  • dSdT – Stress sensitivity to temperature \( \partial \boldsymbol{\sigma} / \partial T \) (6) [output]

  • drdE – Strain derivative of the heat of the increment \( \partial r / \partial \boldsymbol{\varepsilon} \) (6) [output]

  • drdT – Temperature derivative of the heat of the increment \( \partial r / \partial T \) (scalar) [output]

  • DR – Rotation increment matrix ( \(3 \times 3\)) for objective integration

  • nprops – Number of material properties

  • props – Material properties vector (see table above)

  • nstatev – Number of state variables

  • statev – State variables vector (see table above) [input/output]

  • T – Temperature at the beginning of the increment

  • DT – Temperature increment

  • Time – Time at the beginning of the increment

  • DTime – Time increment

  • Wm – Total mechanical work [input/output, cumulative]

  • Wm_r – Recoverable (stored) work [input/output, cumulative]

  • Wm_ir – Irrecoverable stored work, always 0 for this model [input/output]

  • Wm_d – Dissipated (viscous) work [input/output, cumulative]

  • Wt – Total thermal work \( \int T\, d\eta \) [input/output, cumulative]

  • Wt_r – Reversible thermal work [input/output, cumulative]

  • Wt_ir – Irreversible thermal work [output]

  • ndi – Number of direct stress components (typically 3)

  • nshr – Number of shear stress components (typically 3)

  • start – Flag indicating the first increment (true) or a continuation (false)

  • tnew_dt – Suggested new time step size for adaptive time stepping [output]

  • tangent_mode – Tangent operator selection (see parameter.hpp)

void umat_zener_fast_T(const arma::vec&, const arma::vec&, arma::vec&, double&, arma::mat&, arma::vec&, arma::vec&, double&, const arma::mat&, const int&, const arma::vec&, const int&, arma::vec&, const double&, const double&, const double&, const double&, double&, double&, double&, double&, double&, double&, double&, const int&, const int&, const bool&, double&, const int& = 0)

Thermomechanical Zener (Poynting–Thomson) viscoelastic model with one Kelvin unit (ZENER, thermomechanical).

Single-unit case of umat_zener_Nfast_T(): an instantaneous isotropic spring \( \mathbf{L}_0 = \mathbf{L}_{iso}(E_0, \nu_0) \) in series with one Kelvin–Voigt unit, spring \( \mathbf{L}_1 = \mathbf{L}_{iso}(E_1, \nu_1) \) in parallel with the dashpot \( \mathbf{H}_1 = 3\,\eta_{B,1}\,\mathbf{I}_{vol} + 2\,\eta_{S,1}\,\mathbf{I}_{dev} \):

\[\boldsymbol{\sigma} = \mathbf{L}_0 : \left( \boldsymbol{\varepsilon} - \boldsymbol{\alpha}\,(T - T_{init}) - \boldsymbol{\varepsilon}^{v}_1 \right), \qquad \dot{\boldsymbol{\varepsilon}}^{v}_1 = \mathbf{H}_1^{-1} : \left( \boldsymbol{\sigma} - \mathbf{L}_1 : \boldsymbol{\varepsilon}^{v}_1 \right), \]
with \( \boldsymbol{\alpha} = \alpha\,\mathbf{I} \). Backward Euler in closed form (kelvin_series_step, linear_viscoelastic.hpp), exact consistent tangents dSdE and dSdT (tangent_none returns \( \mathbf{L}_0 \) and \( -\mathbf{L}_0\,\boldsymbol{\alpha} \)). The volumetric heat capacity is \( c_0 = \rho\, c_p \), the entropy \( \eta = c_0 \ln(T/T_{init}) + \boldsymbol{\alpha}:\boldsymbol{\sigma} \), and the dissipation is the trapezoidal work of the viscous stress \( \boldsymbol{\sigma} - \mathbf{L}_1 : \boldsymbol{\varepsilon}^{v}_1 \) on \( \Delta\boldsymbol{\varepsilon}^{v}_1 \); the heat of the increment \( r \) and its derivatives come from heat_source_increment(). The arguments are those of umat_zener_Nfast_T().

**Material parameters (props), \( n_{props} = 9 \):**

Index

Symbol

Description

Units

props[0]

\( \rho \)

Density

Mass/Volume

props[1]

\( c_p \)

Specific heat capacity

Energy/(Mass x Temperature)

props[2]

\( E_0 \)

Instantaneous Young’s modulus

Stress

props[3]

\( \nu_0 \)

Instantaneous Poisson’s ratio

-

props[4]

\( \alpha \)

Isotropic thermal expansion coefficient

1/Temperature

props[5]

\( E_1 \)

Young’s modulus of the Kelvin unit

Stress

props[6]

\( \nu_1 \)

Poisson’s ratio of the Kelvin unit

-

props[7]

\( \eta_{B,1} \)

Bulk viscosity of the Kelvin unit

Stress x Time

props[8]

\( \eta_{S,1} \)

Shear viscosity of the Kelvin unit

Stress x Time

**State variables (statev), \( n_{statev} = 8 \):**

Index

Symbol

Description

Units

statev[0]

\( T_{init} \)

Initial temperature

Temperature

statev[1]

\( v \)

Accumulated flow length \( \sum \| \Delta\boldsymbol{\varepsilon}^{v}_1 \| \)

-

statev[2:7]

\( \boldsymbol{\varepsilon}^{v}_1 \)

Viscous strain of the Kelvin unit (Voigt [11,22,33,12,13,23], engineering shears)

-

See also

umat_zener_Nfast_T() the N-unit version (props shifted by the N slot, statev 7 + 7N)

void umat_zener_Nfast_T(const arma::vec &Etot, const arma::vec &DEtot, arma::vec &sigma, double &r, arma::mat &dSdE, arma::vec &dSdT, arma::vec &drdE, double &drdT, const arma::mat &DR, const int &nprops, const arma::vec &props, const int &nstatev, arma::vec &statev, const double &T, const double &DT, const double &Time, const double &DTime, double &Wm, double &Wm_r, double &Wm_ir, double &Wm_d, double &Wt, double &Wt_r, double &Wt_ir, const int &ndi, const int &nshr, const bool &start, double &tnew_dt, const int &tangent_mode = 0)

Thermomechanical generalized Kelvin chain (Zener) viscoelastic model with N units (ZENNK, thermomechanical).

Fully coupled thermomechanical version of umat_zener_Nfast(): the same rheology, stress update and state variables (see that kernel for the constitutive equations and the instantaneous-stiffness convention), plus the heat equation terms. The volumetric heat capacity is \( c_0 = \rho\, c_p \) and the heat source \( r \) collects the thermoelastic coupling \( -T\, \boldsymbol{\alpha} : \dot{\boldsymbol{\sigma}} \) and the viscous dissipation of the dashpots; its sensitivities drdE and drdT and the stress sensitivity dSdT are returned for the monolithic thermomechanical solver. At constant temperature this kernel reproduces umat_zener_Nfast() exactly.

**Material parameters (props), \( n_{props} = 6 + 4N \):**

Index

Symbol

Description

Units

props[0]

\( \rho \)

Density

Mass/Volume

props[1]

\( c_p \)

Specific heat capacity

Energy/(Mass x Temperature)

props[2]

\( E_0 \)

Instantaneous Young’s modulus

Stress

props[3]

\( \nu_0 \)

Instantaneous Poisson’s ratio

-

props[4]

\( \alpha \)

Isotropic thermal expansion coefficient

1/Temperature

props[5]

\( N \)

Number of Kelvin units

-

props[6+4(i-1)]

\( E_i \)

Young’s modulus of branch i

Stress

props[7+4(i-1)]

\( \nu_i \)

Poisson’s ratio of branch i

-

props[8+4(i-1)]

\( \eta_{B,i} \)

Bulk viscosity of branch i

Stress x Time

props[9+4(i-1)]

\( \eta_{S,i} \)

Shear viscosity of branch i

Stress x Time

**State variables (statev), \( n_{statev} = 7 + 7N \):**

Index

Symbol

Description

Units

statev[0]

\( T_{init} \)

Initial temperature

Temperature

statev[1:6]

\( \boldsymbol{\varepsilon}^{v} \)

Total viscous strain \( \sum_i \boldsymbol{\varepsilon}^{v}_i \) (Voigt)

-

statev[7+7(i-1)]

\( v_i \)

Accumulated flow length of branch i

-

statev[8+7(i-1):13+7(i-1)]

\( \boldsymbol{\varepsilon}^{v}_i \)

Viscous strain of branch i (Voigt)

-

See also

umat_zener_Nfast() the mechanical twin

Note

The mechanical props of umat_zener_Nfast() are shifted by two slots ( \( \rho, c_p \) first)

Parameters:
  • Etot – Total strain at the beginning of the increment (Voigt notation: \(6 \times 1\) vector)

  • DEtot – Strain increment (Voigt notation: \(6 \times 1\) vector)

  • sigma – Stress (Voigt notation: \(6 \times 1\) vector) [input/output]

  • r – Heat of the increment per reference volume, storage included (heat_source_increment()) [output]

  • dSdE – Consistent mechanical tangent \( \partial \boldsymbol{\sigma} / \partial \boldsymbol{\varepsilon} \) ( \(6 \times 6\)) [output]

  • dSdT – Stress sensitivity to temperature \( \partial \boldsymbol{\sigma} / \partial T \) (6) [output]

  • drdE – Strain derivative of the heat of the increment \( \partial r / \partial \boldsymbol{\varepsilon} \) (6) [output]

  • drdT – Temperature derivative of the heat of the increment \( \partial r / \partial T \) (scalar) [output]

  • DR – Rotation increment matrix ( \(3 \times 3\)) for objective integration

  • nprops – Number of material properties

  • props – Material properties vector (see table above)

  • nstatev – Number of state variables

  • statev – State variables vector (see table above) [input/output]

  • T – Temperature at the beginning of the increment

  • DT – Temperature increment

  • Time – Time at the beginning of the increment

  • DTime – Time increment

  • Wm – Total mechanical work [input/output, cumulative]

  • Wm_r – Recoverable (stored) work [input/output, cumulative]

  • Wm_ir – Irrecoverable stored work, always 0 for this model [input/output]

  • Wm_d – Dissipated (viscous) work [input/output, cumulative]

  • Wt – Total thermal work \( \int T\, d\eta \) [input/output, cumulative]

  • Wt_r – Reversible thermal work [input/output, cumulative]

  • Wt_ir – Irreversible thermal work [output]

  • ndi – Number of direct stress components (typically 3)

  • nshr – Number of shear stress components (typically 3)

  • start – Flag indicating the first increment (true) or a continuation (false)

  • tnew_dt – Suggested new time step size for adaptive time stepping [output]

  • tangent_mode – Tangent operator selection (see parameter.hpp)