I modified the Autodyn user subroutine mdeos_user_1.f90, wrote a custom ideal state equation, and injected energy through a custom energy deposition subroutineSUBROUTINE EXSIE3 (DSIE).
Compared with the simulation results without using subroutines, it can be judged whether the simulation results are correct.
The result is that the internal energy and the pressure change are consistent, but the temperature when use subroutine didn't change.So How to write a user equation of state subroutine to get the correct temperature results?
result
The results are shown in the file.
temperature
pressure
internal energy
code
SUBROUTINE SOLVE_EOS_USER_1 & (P0 ,E0 ,ALPHA ,DEN ,DVV ,DSIE , & Q ,PP ,EE ,SOUND ,IFAIL ,IFSPHQ , & IF_SIMULTANEOUS ,IFGAS ,ARHO ,BRHO ,DADETA ,DBDETA ) USE material USE eos_user_1 USE wrapup USE MATDEF IMPLICIT NONE INTEGER(INT1) :: IFAIL INTEGER (INT4) :: IFSPHQ, IFLAG, IFGAS, IF_SIMULTANEOUS REAL (REAL8) :: ALPHA, DEN, DSIE, DVV, EE, E0 REAL (REAL8) :: PP, P0, Q, SOUND, ARHO, BRHO REAL (REAL8) :: DADETA, DBDETA, EMU, BULK ,DDD ! ************************************************************************ IF_SIMULTANEOUS = 1 EE=E0+DSIE-PP*DVV/DEN PP=EE*(2.0/5.0)*DEN SOUND=sqrt(1.4*PP/DEN) DDD=SHCV SHCV=717.599976 RETURN END SUBROUTINE SOLVE_EOS_USER_1
SUBROUTINE EXSIE3 (DSIE) USE kindef USE ijknow USE locelm USE material USE matdef USE cycvar IMPLICIT NONE REAL (REAL8) :: DSIE DSIE=10000 RETURN END SUBROUTINE EXSIE3