SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,
1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,
2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,LACCFLG)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME,ORNAME
CHARACTER*8 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
1 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),COORD(*),JMAC(*),JMATYP(*)
C
DIMENSION EIGVAL(3)
C
C MATERIAL AND STRENGTH PARAMETERS
PARAMETER(XT=1.415D3,XC=0.993D3,YT=4.3D1,YC=0.184D3,
* ZT=4.3D1,ZC=0.184D3,SXY=88.3D0,SXZ=88.3D0,SYZ=88.3D0)
PARAMETER(XT1=0.556D3,XC1=0.673D3,YT1=0.601D3,YC1=0.651D3,
* ZT1=4.3D1,ZC1=0.184D3,SXY1=83.2D0,SXZ1=83.2D0,SYZ1=83.2D0)
PARAMETER(FT=80,FC=199,FS=20)
PARAMETER(ZERO=0.D0,ONE=1.D0,TWO=2.D0,PI23=2.094395102393195,
* THREE=3.D0,HALF=ONE/TWO,THIRD=ONE/THREE,
* FUZZ=1.D-8,
* PRECIZ=FUZZ*1.D4)
C
C INITIALIZE FAILURE FLAGS FROM STATEV
C
C GET STRESSES FROM PREVIOUS INCREMENT
CALL GETVRM('S',ARRAY,JARRAY,FLGRAY,JRCD,
$ JMAC,JMTYP,MATLAYO,LACCFLG)
S11=ARRAY(1)
S22=ARRAY(2)
S33=ARRAY(3)
S12=ARRAY(4)
S13=ARRAY(5)
S23=ARRAY(6)
IF(CMNAME(1:5).EQ.'CF303')THEN
*******************************************************************************
************************************CF303**************************************
*******************************************************************************
CF1=STATEV(1)
CM1=STATEV(2)
CD1=STATEV(3)
C CALCULATING HASHIN CRITEARIA
QS12=(S12/SXY1)**2
QS13=(S13/SXZ1)**2
QS23=(S23/SYZ1)**2
IF(CF1 .LT. 1.D0) THEN
IF(S11 .GE. 0.D0)THEN
CF1=(S11/XT1)**2+QS12+QS13
ELSE
CF1=ABS(S11/XC1)
ENDIF
STATEV(1)=CF1
ENDIF
IF(CM1 .LT. 1.D0) THEN
IF((S22+S33) .GE. 0.D0)THEN
CM1=((S22+S33)/YT1)**2+QS23-S22*S33/SYZ1**2+QS12+(S13/SXY1)**2
ELSE
CM1=((YC1/2.D0/SYZ1)**2-1.D0)*(S22+S33)/YC1
& +((S22+S33)/2.D0/SYZ1)**2+QS12
& +QS23-S22*S33/SYZ1**2+(S13/SXY1)**2
ENDIF
STATEV(2)=CM1
ENDIF
C IF(CD1 .LT. 1.D0) THEN
C IF(S33 .GE. 0.D0)THEN
C CD1=(S33/ZT1)**2
C ELSE
C CD1=(S33/ZC1)**2
C ENDIF
C STATEV(3)=CD1
C ENDIF
C UPDATE FIELD VARIABLES
FIELD(1)=0.D0
FIELD(2)=0.D0
FIELD(3)=0.D0
IF(CF1 .GE. 1.D0) FIELD(1)=1.D0
IF(CM1 .GE. 1.D0) FIELD(2)=1.D0
IF(CD1 .GE. 1.D0) FIELD(3)=1.D0
C
ELSE IF(CMNAME(1:5).EQ.'U3160')THEN
*******************************************************************************
************************************U3160**************************************
*******************************************************************************
CF=STATEV(1)
CM=STATEV(2)
CD=STATEV(3)
C CALCULATING HASHIN CRITEARIA
QS12=(S12/SXY)**2
QS13=(S13/SXZ)**2
QS23=(S23/SYZ)**2
IF(CF .LT. 1.D0) THEN
IF(S11 .GE. 0.D0)THEN
CF=(S11/XT)**2+QS12+QS13
ELSE
CF=ABS(S11/XC)
ENDIF
STATEV(1)=CF
ENDIF
IF(CM .LT. 1.D0) THEN
IF((S22+S33) .GE. 0.D0)THEN
CM=((S22+S33)/YT)**2+QS23-S22*S33/SYZ**2+QS12+(S13/SXY)**2
ELSE
CM=((YC/2.D0/SYZ)**2-1.D0)*(S22+S33)/YC
& +((S22+S33)/2.D0/SYZ)**2+QS12
& +QS23-S22*S33/SYZ**2+(S13/SXY)**2
ENDIF
STATEV(2)=CM
ENDIF
C IF(CD .LT. 1.D0) THEN
C IF(S33 .GE. 0.D0)THEN
C CD=(S33/ZT)**2+QS13+QS23
C ELSE
C CD=QS13+QS23
C ENDIF
C STATEV(3)=CD
C ENDIF
C
C UPDATE FIELD VARIABLES
FIELD(1)=0.D0
FIELD(2)=0.D0
FIELD(3)=0.D0
IF(CF .GE. 1.D0) FIELD(1)=1.D0
IF(CM .GE. 1.D0) FIELD(2)=1.D0
IF(CD .GE. 1.D0) FIELD(3)=1.D0
C
ELSE IF(CMNAME(1:5).EQ.'EPOXY')THEN
*******************************************************************************
************************************EPOXY**************************************
*******************************************************************************
LTC=STATEV(1)
LS=STATEV(2)
C
C CALCULATING PRINCIPLE STRESS
C
SH=THIRD*(S11+S22+S33)
MS11=S11-SH
MS22=S22-SH
MS33=S33-SH
C
FAC=MAX(ABS(MS11),ABS(MS22),ABS(MS33))
FACS=MAX(ABS(MS12),ABS(MS13),ABS(MS23))
IF(FACS.LT.(PRECIZ*FAC)) THEN
EIGVAL(1)=S11
EIGVAL(2)=S22
EIGVAL(3)=S33
ELSE
Q=THIRD*((MS12**2+MS13**2+MS23**2)+
* HALF*(MS11**2+MS22**2+MS33**2))
FAC=TWO*SQRT(Q)
IF(FAC.GT.FUZZ) THEN
OFAC=TWO/FAC
ELSE
OFAC=ZERO
ENDIF
MS11=OFAC*MS11
MS22=OFAC*MS22
MS33=OFAC*MS33
MS12=OFAC*MS12
MS13=OFAC*MS13
MS23=OFAC*MS23
R=MS12*MS13*MS23
* +HALF*(MS11*MS22*MS33-MS11*MS23**2-MS22*MS13**2-MS33*MS12**2)
IF(R.GE.ONE-FUZZ) THEN
COS1=-HALF
COS2=-HALF
COS3=ONE
ELSEIF(R.LE.FUZZ-ONE) THEN
COS1=-ONE
COS2=HALF
COS3=HALF
ELSE
ANG=THIRD*ACOS(R)
COS1=COS(ANG)
COS2=COS(ANG+PI23)
COS3=-COS1-COS2
ENDIF
EIGVAL(1)=SH+FAC*COS1
EIGVAL(2)=SH+FAC*COS2
EIGVAL(3)=SH+FAC*COS3
ENDIF
PMAX=MAX(EIGVAL(1),EIGVAL(2),EIGVAL(3))
PMIN=MIN(EIGVAL(1),EIGVAL(2),EIGVAL(3))
SMAX=HALF*(PMAX-PMIN)
C
C MAXMUM PRINCIPLE STRESS FAILURE CRITERON
IF(LTC.LT.ONE) THEN
IF(PMAX.GE.ZERO) THEN
LTC=(PMAX/FT)**2
ELSE
LTC=(PMIN/FC)**2
ENDIF
STATEV(1)=LTC
ENDIF
IF(LS.LT.ONE) THEN
LS=(SMAX/FS)**2
STATEV(2)=LS
ENDIF
C
C UPDATE FIELD VARIABLES
FIELD(1)=ZERO
FIELD(2)=ZERO
IF(LTC.GE.ONE) FIELD(1)=ONE
IF(LS.GE.ONE) FIELD(2)=ONE
ENDIF
C
RETURN
END
复合材料层合板用户子程序USDFLD,内置损伤萌生准则HASHIN准则
版权申诉
10 浏览量
2023-12-05
15:41:57
上传
评论 1
收藏 2KB ZIP 举报
处处清欢
- 粉丝: 158
- 资源: 2511
最新资源
- mysql语句大全及用法
- Online Maps v3 3.7.15版本
- OpenGL渲染引擎-设计与实践
- meta-llama-3-8b-instruct 的 model-00001-of-00004.safetensors 的1/3
- C# yolov8 TensorRT +ByteTrack Demo.rar
- WX小程序源码无后台同城拼车(完整带PHP后台)
- 基于Swift的空气质量监测应用设计源码 - BadAir
- java开发的基于kafka、xlog的web日志实时分析storm topology
- k8s1.20.4-高可用集群部署-新增项目-kubernetes安装包和详细文档笔记整理
- 基于UC3842-S开关电源PDF原理图+反激开关电源全套学习教程资料.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈