Elasticity Matrix and Stress Calculation in UMAT for FGM Materials

Introduction 

This report discusses the setup of the elasticity matrix and its relation to the material properties used in the UMAT subroutine. The analysis focuses on the components of the elasticity matrix, which includes the stress-strain relationship in the material, and the calculations for stress increments and their updates in the material model. 

Elasticity Matrix Setup 

The general form of the stress-strain relationship is given by: 

where: 

  1. σxx, σyy, σzz are the normal stresses.
  2. σyz, σzx, σxy are the shear stresses.
  3. εxx, εyy, εzz are the normal strains.
  4. εyz, εzx, εxy are the shear strains.
  5. E is Young’s Modulus, and ν is Poisson’s ratio 

The above equation represents the generalized form of the material’s stress-strain relationship in the linear elasticity regime for isotropic materials. 
 

Stress-Strain Matrix DDSDDE 

The matrix DDSDDE represents the derivative of the stress with respect to strain, and it is used for calculating the stress increment. The matrix elements are defined as follows: 

This matrix is essential for calculating the relationship between the stress and strain increments. The term:

is a scaling factor that incorporates both the Young’s Modulus E and Poisson’s ratio ν.

Material with Variable Properties: 

In some cases, the material properties vary with position or over time. For such cases, the elasticity matrix is modified as follows:  
 

In this case, E(z) and ν(z) represent the position-dependent (or time-dependent) Young’s Modulus and Poisson’s ratio, respectively. 
 

Fortran Code for Elasticity Matrix Update.

In the subroutine, the matrix DDSDDE is initialized and updated based on the material properties. The code section below outlines the setup of the matrix: 

DO K1 = 1 , 6

      DO K2 = 1,6

           DDSDDE(K2,K1) = 0

      END DO END DO

DO K1 = 1, 6 

       IF (K1.LT.4) THEN

                DDSDDE(K1,K1) = Term1

       ELSE

                DDSDDE(K1,K1) = Term3

       END IF

END DO 

In this code, the matrix DDSDDE is initialized with zeros. Then, depending on the index K1, the diagonal elements are updated with Term1 for the first three components (corresponding to the normal stresses) and Term3 for the last three components (corresponding to the shear stresses). The off-diagonal elements are updated as follows:

 

DDSDDE(1,2) = Term2

DDSDDE(1,3) = Term2

DDSDDE(2,1) = Term2

DDSDDE(3,1) = Term2

 

The value of Term2 is related to the shear modulus of the material, which can be calculated as: 

where E is the Young’s Modulus and ν is the Poisson’s ratio. This term is crucial for calculating the shear stress components in the material. 


Stress Update in the Material Model 

Once the elasticity matrix is established, the next step is to update the stresses based on the strain increments. The stress increment is calculated as follows:

DSTRESS(1) = DSTRAN(1)×T erm1+T erm2×(DSTRAN(2)+DSTRAN(3))

DSTRESS(2) = DSTRAN(2)×T erm1+T erm2×(DSTRAN(1)+DSTRAN(3)) 

DSTRESS(3) = DSTRAN(3)×T erm1+T erm2×(DSTRAN(2)+DSTRAN(1))

DSTRESS(4) = DSTRAN(4) × T erm3 

DSTRESS(5) = DSTRAN(5) × T erm3 

DSTRESS(6) = DSTRAN(6) × T erm3

In these equations, DSTRAN represents the increments in strain, and DSTRESS represents the resulting increments in stress. 

=========================================

Visualization of State-Dependent Variables (SDVs) for Young's Modulus in FGM

C      Initialize the elasticity matrix DDSDDE to zero
     DO K1 = 1, 6
        DO K2 = 1, 6
           DDSDDE(K2, K1) = 0.0
        END DO
     END DO

C      Populate the elasticity matrix based on the material properties
     DO K1 = 1, 6
        IF (K1 .LT. 4) THEN
           DDSDDE(K1, K1) = Term1
        ELSE
           DDSDDE(K1, K1) = Term3
        END IF
     END DO

     DDSDDE(1, 2) = Term2
     DDSDDE(1, 3) = Term2
     DDSDDE(2, 1) = Term2
     DDSDDE(3, 1) = Term2

C      Calculate stress increments (DSTRESS) based on strain increments (DSTRAN)
     DSTRESS(1) = DSTRAN(1) * Term1 + Term2 * (DSTRAN(2) + DSTRAN(3))
     DSTRESS(2) = DSTRAN(2) * Term1 + Term2 * (DSTRAN(1) + DSTRAN(3))
     DSTRESS(3) = DSTRAN(3) * Term1 + Term2 * (DSTRAN(2) + DSTRAN(1))
     DSTRESS(4) = DSTRAN(4) * Term3
     DSTRESS(5) = DSTRAN(5) * Term3
     DSTRESS(6) = DSTRAN(6) * Term3

C      Update the stress tensor with the calculated stress increments
     DO K = 1, NTENS
        STRESS(K) = STRESS(K) + DSTRESS(K)
     END DO

=========================================