There is a drawback in the description of user subroutine HETVAL in Abaqus documentation which can lead to programming errors.
According to the documentation, TEMP(1) is current temperature and TEMP(2) is temperature increment. In fact, TEMP(1) is temperature at the end of the increment. The word «current» is very unclear in this case. Most users can decide that «current» means state at the beginning of the increment, just like the case of STATEV where the description says that these variables are «at this point» (i.e. current) and they are «passed into subroutine HETVAL … at the beginning of the increment».
I had this type of bug in code for four years until I decided to print the values of TEMP(1).
I think it’s a good idea to make a correction to documentation.