abaqus有關(guān)裂紋擴(kuò)展的問題?
瀏覽:2612 回答:1
模擬xfem裂紋擴(kuò)展,在deepseek里面編輯了有關(guān)裂紋損傷準(zhǔn)則的子程序,然后結(jié)合黃永剛老師的umat進(jìn)行運(yùn)行。上面的圖是我預(yù)設(shè)裂紋一開始的圖,下面的圖是我運(yùn)行之后產(chǎn)生的裂紋擴(kuò)展的圖。請問為什么我的裂紋每次擴(kuò)展碰到我的網(wǎng)格邊界就會出現(xiàn)這種報錯?請問這種應(yīng)該怎么解決,是不是編譯的子程序(子程序在下面)出現(xiàn)了問題?感謝
以下是我結(jié)合deepseekb編寫的用戶損傷子程序
SUBROUTINE UDMGINI(FINDEX, NFINDEX, FNORMAL, NDI, NSHR, NTENS,
1 PROPS, NPROPS, STATEV, NSTATEV, STRESS, STRAIN,
2 STRAINEE, LXFEM, TIME, DTIME, TEMP, DTEMP,
3 PREDEF, DPRED, NFIELD, COORDS, NOEL, NPT,
4 LAYER, KSPT, KSTEP, KINC, KDIRCYC, KCYCLELCF,
5 TIMECYC, SSE, SPD, SCD, SVD, SMD, JMAC, JMATYP,
6 MATLAYO, LACCFLA, CELENT, DROT, ORI)
INCLUDE 'ABA_PARAM.INC'
DIMENSION FINDEX(NFINDEX), FNORMAL(NDI, NFINDEX), COORDS(*),
1 STRESS(NTENS), STRAIN(NTENS), STRAINEE(NTENS),
2 PROPS(NPROPS), STATEV(NSTATEV), PREDEF(NFIELD),
3 DPRED(NFIELD), TIME(2), JMAC(*), JMATYP(*),
4 DROT(3, 3), ORI(3, 3)
! 參數(shù)定義
INTEGER, PARAMETER :: NSLPTL = 12 ! 滑移系統(tǒng)總數(shù)(根據(jù)UMAT注釋)
REAL*8, PARAMETER :: CRITICAL_ICSS = 0.0001D0 ! 臨界累積剪切應(yīng)變
! 變量聲明
REAL*8 :: ICSS(NSLPTL), MAX_ICSS
INTEGER :: I, ACTIVE_SLIP
! 初始化輸出參數(shù)
FINDEX(1:NFINDEX) = 0.0D0
FNORMAL(1:NDI, 1:NFINDEX) = 0.0D0
! 從STATEV中讀取滑移系的累積剪切應(yīng)變(SDV109-SDV120)
DO I = 1, NSLPTL
ICSS(I) = STATEV(108 + I)
END DO
! 找到最大ICSS及其對應(yīng)的滑移系
MAX_ICSS = MAXVAL(ICSS)
ACTIVE_SLIP = MAXLOC(ICSS, DIM=1)
! 判斷是否觸發(fā)裂紋擴(kuò)展
IF (MAX_ICSS >= CRITICAL_ICSS) THEN
FINDEX(1) = 1.0D0 ! 觸發(fā)損傷
! 獲取對應(yīng)滑移面的法線方向(根據(jù)UMAT注釋,法線存儲在STATEV的6*NSLPTL+1之后)
! 每個滑移系法線占3個變量,例如:
! STATEV(6*NSLPTL + 3*(ACTIVE_SLIP-1) + 1 : 6*NSLPTL + 3*ACTIVE_SLIP)
! 例如:NSLPTL=12時,滑移系1的法線為STATEV(73-75),滑移系2為STATEV(76-78),以此類推
! 請根據(jù)實際UMAT代碼確認(rèn)索引位置
IDX_NOR = 3*NSLPTL + 3*(ACTIVE_SLIP-1) + 1
FNORMAL(1:3, 1) = STATEV(IDX_NOR : IDX_NOR+2)
! 投影到全局坐標(biāo)系(假設(shè)法線已存儲在全局坐標(biāo)系中)
! 若法線存儲為晶體坐標(biāo)系,需用ROTATE矩陣轉(zhuǎn)換:
! CALL MATMUL(ORI, FNORMAL(1:3,1), TEMP_NOR)
! FNORMAL(1:3,1) = TEMP_NOR
END IF
RETURN
END

SnowWave02 


















