需要将abaqus与vs和fortran进行关联,使用的是abaqus2022版本,vs2019和intel ONEAPI 2022版本。参考关联链接保姆级Abaqus2022+VS2019+Fortran关联配置 - 知乎 (zhihu.com)
创建线弹性模型简单的几何模型
问题: 悬臂梁(长10,宽1,高1)一端四个点固定约束,另外一个端两个点载荷-1000。各项同性材料,E=1e9,v=0.3。
使用UMAT进行分析
与abaqus常规模型分析步骤一样,下面不一样的分析。
- 定义材料
General
->User Material
使用默认的参数添加弹性模量1e9和泊松比0.3.
- 将单元默认的减缩积分
C3D8R
改成C3D8
单元 (如果使用C3D8R
进行计算的时候会出现报错。)
- 创建job,指定UMAT的fortran子程序
- 查看输出和结果
对比常规输入的材料计算结果,与UMAT
定义的材料一样。
UMAT
子程序代码
*USER SUBROUTINES
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
1 RPL,DDSDDT,DRPLDE,DRPLDT,
2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,
3 NDI,NSHR,NTENS,NSTATEV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*8 CMNAME
DIMENSION STRESS(NTENS),STATEV(NSTATEV),
1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)
C
PARAMETER (ONE=1.0D0, TWO=2.0D0)
write(6,*) PROPS(1) , PROPS(2)
E=PROPS(1)
ANU=PROPS(2)
ALAMDA=ANU*E/ (ONE+ANU)/(ONE-TWO*ANU)
AMU=E/TWO/(ONE+ANU)
DO I=1,NTENS
DO J=1,NTENS
DDSDDE(I,J)=0.0D0
ENDDO
ENDDO
DDSDDE(1,1)=ALAMDA+TWO*AMU
DDSDDE(2,2)=DDSDDE(1,1)
DDSDDE(3,3)=DDSDDE(1,1)
DDSDDE(4,4)=AMU
DDSDDE(5,5)=AMU
DDSDDE(6,6)=AMU
DDSDDE(1,2)=ALAMDA
DDSDDE(1,3)=ALAMDA
DDSDDE(2,3)=ALAMDA
DDSDDE(2,1)=DDSDDE(1,2)
DDSDDE(3,1)=DDSDDE(1,3)
DDSDDE(3,2)=DDSDDE(2,3)
C
DO I=1,NTENS
DO J=1,NTENS
STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J)
ENDDO
ENDDO
RETURN
END
参考线性材料应力应变关系
解释代码中的含义:
PROPS() 数组是User Material
中定义的数据,因此第一个数据是PROPS(1)
是弹性模量,PROPS(2)
是泊松比。DDSDDE
数组则是上述公式的[D]
矩阵。
UMAT
详细介绍参考abaqus 中UMAT接口 Abaqus User Subroutines Reference Guide (2016)
UMAT
详细介绍参考abaqus 中UMAT接口 Abaqus User Subroutines Reference Guide (2016)
参考链接
- 保姆级Abaqus2022+VS2019+Fortran关联配置 - 知乎 (zhihu.com)
- Abaqus User Subroutines Reference Guide (2016)