<!-- source-page: 71 -->

# 1.1.11 GAPELECTR: User subroutine to define electrical conductance between surfaces in a coupled thermal-electrical or a coupled thermal-electrical-structural analysis.

Product: Abaqus/Standard

# References

• “Electrical contact properties,” Section 37.3.1 of the Abaqus Analysis User’s Guide   
• \*GAP ELECTRICAL CONDUCTANCE

# Overview

User subroutine GAPELECTR:

• assumes that the electrical current flowing between the interface surfaces is modeled as $J = \sigma _ { g } ( \varphi _ { A } - \varphi _ { B } )$ where J is the electrical current density flowing across the interface from point A (the slave surface) to point B (the master surface), $\varphi _ { A }$ and $\varphi _ { B }$ are the electrical potential on opposite points of the surfaces, and $\sigma _ { g }$ is the surface electrical conductance;   
• is used to define $\sigma _ { g }$ , providing much greater flexibility than direct gap electrical conductance definition in specifying the dependencies of $\sigma _ { g }$ (for instance, it is not necessary to define the gap electrical conductance as a function of the average of the two surfaces’ temperatures and/or field variables);   
• will be called at the slave nodes of a contact pair (“Defining contact pairs in Abaqus/Standard,” Section 36.3.1 of the Abaqus Analysis User’s Guide) for which the gap electrical conductance is defined in a user subroutine; and   
• ignores any dependencies or data specified for the gap electrical conductance outside the user subroutine.

# User subroutine interface

```txt
SUBROUTINE GAPELECTR(SIGMA, D, TEMP, PREDEF, TIME, CINAME, 1 SLNAME, MSNAME, COORDS, NODE, NPRED, KSTEP, KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CINAME, SLNAME, MSNAME
C
DIMENSION SIGMA(5), D(2), TEMP(2), PREDEF(2, *), TIME(2), 1 COORDS(2, 3)
user coding to define SIGMA(1) -- SIGMA(5)
RETURN
END 
```

<!-- source-page: 72 -->

# SIGMA(1)

Gap electrical conductance, $\sigma _ { g } .$

# SIGMA(2)

$\partial \sigma _ { g } / \partial \theta _ { A } ,$ , derivative of the gap electrical conductance with respect to the temperature of point A. If the gap electrical conductance is not a function of $\theta _ { A }$ , SIGMA(2) = 0.0.

# SIGMA(3)

$\partial \sigma _ { g } / \partial \theta _ { B }$ , derivative of the gap electrical conductance with respect to the temperature of point B. If the gap electrical conductance is not a function of $\theta _ { B }$ , SIGMA(3) = 0.0.

# SIGMA(4)

$\partial \sigma _ { g } / \partial d ,$ derivative of the gap electrical conductance with respect to the clearance between the bodies. If the gap electrical conductance is not a function of gap clearance, SIGMA(4)= 0.0. This variable needs to be defined only for a fully coupled thermal-electrical-structural analysis.

# SIGMA(5)

$\partial \sigma _ { g } / \partial p ,$ derivative of the gap electrical conductance with respect to the pressure between the bodies. If the gap electrical conductance is not a function of the pressure, SIGMA(5)= 0.0. This variable needs to be defined only for a fully coupled thermal-electrical-structural analysis.

# Variables passed in for information

# D(1)

Separation between the interface surfaces, d.

# D(2)

Pressure transmitted across the surfaces, p.

# TEMP(2)

Current temperature at points A and B.

# PREDEF(2,NPRED)

An array containing pairs of values of all of the user-specified field variables at the end of the current increment at points A and B (initial values at the beginning of the analysis and current values during the analysis).

# TIME(1)

Value of step time at the end of the increment.

# TIME(2)

Value of total time at the end of the increment.

<!-- source-page: 73 -->

# CINAME

User-specified surface interaction name, left justified.

# SLNAME

Slave surface name.

# MSNAME

Master surface name.

# COORDS

An array containing the current coordinates of points A and B. COORDS(1,K1) are the coordinates at point A, and COORDS(2,K1) are the coordinates at point B.

# NODE

Slave node number (point A).

# NPRED

Number of predefined field variables.

# KSTEP

Step number.

# KINC

Increment number.

<!-- source-page: 74 -->

<!-- source-page: 75 -->

# 1.1.12 HARDINI: User subroutine to define initial equivalent plastic strain and initial backstress tensor.

# Product: Abaqus/Standard

# References

• “Initial conditions in Abaqus/Standard and Abaqus/Explicit,” Section 34.2.1 of the Abaqus Analysis User’s Guide   
• “Classical metal plasticity,” Section 23.2.1 of the Abaqus Analysis User’s Guide   
• “Models for metals subjected to cyclic loading,” Section 23.2.2 of the Abaqus Analysis User’s Guide   
• “Extended Drucker-Prager models,” Section 23.3.1 of the Abaqus Analysis User’s Guide   
• \*INITIAL CONDITIONS   
• “HARDINI,” Section 4.1.8 of the Abaqus Verification Guide

# Overview

# User subroutine HARDINI:

• can be used only for material models that use metal plasticity or Drucker-Prager plasticity;   
• can be used to provide initial equivalent plastic strain values as a function of element number, material point number, and/or material point coordinates for isotropic and combined hardening;   
• enables you to specify initial conditions for the backstress tensor as a function of element number, material point number, and/or material point coordinates for kinematic and combined hardening;   
• will be called to define the initial equivalent plastic strain and, if relevant, the initial backstresses at material points for which user-subroutine-defined initial hardening conditions are specified; and   
• is intended for use when the initial equivalent plastic strain and/or backstress distributions are too complicated to specify directly as initial hardening conditions.

# Defining backstress components

The number of backstress components that must be defined depends on the element type for which this routine is being called. Part VI, “Elements,” of the Abaqus Analysis User’s Guide describes the number of stress components for each element type; the number of backstress components is identical to the number of stress components. The order of the backstress components is the same as the order of the stress components. For example, in three-dimensional continuum elements six backstress components must be defined in the order $\alpha _ { 1 1 } , \alpha _ { 2 2 } , \alpha _ { 3 3 } , \alpha _ { 1 2 } , \alpha _ { 1 3 } , \alpha _ { 2 3 }$

<!-- source-page: 76 -->

User subroutine interface   
```txt
SUBROUTINE HARDINI (ALPHA, EQPS, COORDS, NTENS, NCRDS, NOEL, NPT, 1 LAYER, KSPT, LREBAR, REBARN)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION ALPHA (NTENS, *), COORDS (NCRDS)
CHARACTER*80 REBARN
user coding to define EQPS and, if relevant, ALPHA (NTENS)
RETURN
END 
```

Variables to be defined   
```txt
The variables described below are element-type dependent.

EQPS
Equivalent plastic strain.

ALPHA (1,1)
First backstress component of the first backstress.

ALPHA (2,1)
Second backstress component of the first backstress.

ALPHA (3,1)
Third backstress component of the first backstress.

Etc.
NTENS backstress component values should be defined for each backstress. 
```  
Variables passed in for information   
COORDS

An array containing the initial coordinates of this point.

NTENS

Number of backstress values to be defined. This number depends on the element type.

<!-- source-page: 77 -->

# NCRDS

Number of coordinates.

# NOEL

Element number.

# NPT

Integration point number.

# LAYER

Layer number (for composite shells and layered solids).

# KSPT

Section point number within the current layer.

# LREBAR

Rebar flag. If LREBAR=1, the current integration point is associated with element rebar. Otherwise, LREBAR=0.

# REBARN

Name of the rebar to which the current integration point belongs, which is the name given in the rebar or rebar layer definition (“Defining reinforcement,” Section 2.2.3 of the Abaqus Analysis User’s Guide, or “Defining rebar as an element property,” Section 2.2.4 of the Abaqus Analysis User’s Guide). If no name was given in the rebar or rebar layer definition, this variable will be blank. This variable is relevant only when LREBAR=1.

<!-- source-page: 78 -->

<!-- source-page: 79 -->

# 1.1.13 HETVAL: User subroutine to provide internal heat generation in heat transfer analysis.

# Product: Abaqus/Standard

# References

• “Uncoupled heat transfer analysis,” Section 6.5.2 of the Abaqus Analysis User’s Guide   
• “Fully coupled thermal-stress analysis,” Section 6.5.3 of the Abaqus Analysis User’s Guide   
• “Fully coupled thermal-electrical-structural analysis,” Section 6.7.4 of the Abaqus Analysis User’s Guide   
• \*HEAT GENERATION   
• “HETVAL,” Section 4.1.9 of the Abaqus Verification Guide

# Overview

User subroutine HETVAL:

• can be used to define a heat flux due to internal heat generation in a material, for example, as might be associated with phase changes occurring during the solution;   
• allows for the dependence of internal heat generation on state variables (such as the fraction of material transformed) that themselves evolve with the solution and are stored as solution-dependent state variables;   
• will be called at all material calculation points for which the material definition contains volumetric heat generation during heat transfer, coupled temperature-displacement, coupled thermal-electrical, or coupled thermal-electrical-structural analysis procedures;   
• can be useful if it is necessary to include a kinetic theory for a phase change associated with latent heat release (for example, in the prediction of crystallization in a polymer casting process);   
• can be used in conjunction with user subroutine USDFLD if it is desired to redefine any field variables before they are passed in; and   
• cannot be used with user subroutine UMATHT.

# User subroutine interface

```txt
SUBROUTINE HETVAL (CMNAME, TEMP, TIME, DTIME, STATEV, FLUX, 1 PREDEF, DPRED)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
C 
```

<!-- source-page: 80 -->

DIMENSION TEMP(2),STATEV(\*),PREDEF(\*),TIME(2),FLUX(2), 1 DPRED(\*)

user coding to define FLUX and update STATEV

RETURN END

# Variables to be defined

# FLUX(1)

Heat flux, r (thermal energy per time per volume: $\mathrm { J } \mathrm { T } ^ { - 1 } \mathrm { L } ^ { - 3 } )$ , at this material calculation point.

# FLUX(2)

Rate of change of heat flux per temperature, . This variable is nonzero only if the heat flux depends on temperature. It is needed to define a correct Jacobian matrix.

# Variable that can be updated

# STATEV(\*)

An array containing the user-defined solution-dependent state variables at this point.

In an uncoupled heat transfer analysis STATEV is passed into subroutine HETVAL as the values of these variables at the beginning of the increment. However, any updating of STATEV in user subroutine USDFLD will be included in the values passed into subroutine HETVAL since this routine is called before HETVAL. In addition, if HETVAL is being used in a fully coupled temperature-displacement or coupled thermal-electrical-structural analysis and user subroutine UEXPAN, user subroutine CREEP, user subroutine UMAT, or user subroutine UTRS is used to define the mechanical behavior of the material, those routines are called before this routine; therefore, any updating of STATEV done in UEXPAN, CREEP, UMAT, or UTRS will be included in the values passed into this routine.

In all cases STATEV should be passed back from user subroutine HETVAL containing the values of the state variables at the end of the current increment.

# Variables passed in for information

# CMNAME

User-specified material name, left justified.

# TEMP(1)

Current temperature.

# TEMP(2)

Temperature increment.
