Reproduce thermal expansion result with UEXPAN

Hello,

I am currently developing a model to manipulate thermal strain during solidification.
I simulated a simple 3D coupled temperature-displacement procedure with the following input for temperature dependent expansion coefficeint:


*EXPANSION, ZERO=0

2.4E-05, 20

2.003E-05, 733


Now, I want to replicate the thermal strain (THE) result I obtained from the above analysis using UEXPAN subroutine. I tried using same values as above in UEXPAN as follows:

SUBROUTINE UEXPAN(EXPAN,DEXPANDT,TEMP,TIME,DTIME,PREDEF,DPRED,STATEV,CMNAME,NSTATV,NOEL)

INCLUDE 'ABA_PARAM.INC'

CHARACTER*80 CMNAME

DIMENSION EXPAN(*),DEXPANDT(*),TEMP(2),TIME(2),PREDEF(*),DPRED(*),STATEV(NSTATV)

real (kind = 8) :: dE, alpha_1, alpha_0, T1, T0, E0, E1
integer :: allocateError

real (kind = 8), dimension(:,:), allocatable, save :: T_Alpha ! contains density (temperature) table
allocate (T_Alpha(2,2), stat=allocateError)

T_Alpha(1,1) = 20
T_Alpha(2,1) = 733
T_Alpha(1,2) = 2.4E-05
T_Alpha(2,2) = 2.003E-05

T0 = TEMP(1)
T1 = TEMP(1)+TEMP(2)

alpha_1 = linearInterpolData(T1, T_Alpha)
alpha_0 = linearInterpolData(T0, T_Alpha)

E0 = alpha_0 * T0
E1 = alpha_1 * T1

dE = E1 - E0

EXPAN(1) = dE
DEXPANDT(1) = dE/TEMP(2)

RETURN

As you can see I tried to use the same values for expansion coefficient from before. linearInterpolData function will return a linearly interpolated value of expansion coefficient corresponding to the provided temperature. For out of bound input, it will return the nearest boundry value. I have checked this function thoroughly and it functions correctly.

The result (thermal strain) after using UEXPAN is not the same as using the same values without subroutine. Although the difference in the result is not huge, I am wondering if I am missing something in the implementation of the subroutine.