模型已建好,下面是计算程序的主体部分:crack-J-cycle
!******************************
!单元生死,分层计算受力,J积分法计算KI
! 读入crack-J-path,定义路径
! 读入crack-J-cacul,完成KI计算
!*******************************
N=2 !层数
M=15 !层单元数
E=30e6 !弹性常数
v=0.3
/solu
esel,all
*do,j,1,N,1
TIME,j
nsubst,50,200,1
esel,s,elem,,ceng1(1,j)
*do,i,1,M,1
esel,a,elem,,ceng1(i,j)
*enddo
CM,C1, ELEM
esel,all
esel,s,elem,,ceng2(1,j)
*do,i,1,M,1
esel,a,elem,,ceng2(i,j)
*enddo
CM,C2, ELEM !层选择
/solu
cmsel,,c1
SFE,c1,3,PRES, ,-0.5641895, , ,
cmsel,,c2
SFE,c2,3,PRES, ,-0.5641895, , , !!层加载
esel,,live
/PSF,PRES,NORM,2,0,1 !
/PBF,DEFA, ,1 !
/PIC,DEFA, ,1 !显示载荷标量
!*!Shows boundarycondition (BC) symbols and values
/PBC,ALL, ,1
/REP
esel,all
/STATUS,SOLU
SOLVE
/INPUT,';crack-J-path';,';log';,';G:\ANSYS work file\crack\';,, 0 !
/INPUT,';crack-J-cacul';,';log';,';G:\ANSYS work file\crack\';,, 0 !读入文件
value(1,j)=KI
value(2,j)=(KI-1.0249)/1.0249 !保存KI值于数组中
/solu
SFEDELE,c1,all,PRES !层卸载
SFEDELE,c2,all,PRES
ekill,c1 !杀死层单元
ekill,c2
*enddo
下面是读入的两个程序。
定义积分路径crack-J-path:
!********************
!路径节点,1179,1515,1212,1614,1211,1612,1210,1610,1209,1608,1208,1606,1207,1604,1206,1602,1205,1600,1204,1581,86 ,489 ,158 ,550,157 ,548 ,156 ,546 ,155 ,544 ,154 ,542 ,153 ,540 ,152 ,538 ,151 ,536 ,150 ,477 ,78
!定义路径jint
/post1
PATH,JINT,41,60,48 !路径节点已存入patharray数组中
*do,i,1,41,1
PPATH,i,patharray(1,i) !循环依次定义路径点
*enddo
!*************************
计算路径的J 积分crack-J-cacul:
!***********************
!路径在程序外事先定义好
!将该程序嵌入单元生死程序,完成与之同步的J 积分计算
!***********************************************
! J积分法,计算KI
!**************************************************
!E=30e6 !常数,外部定义
!v=0.3 !
!*CREATE,JIN1 !输出变量名
!STINFC !函数名,用于内嵌函数
/post1
ETABLE,SENE,SENE !提取单元应变能
ETABLE,VOLU,VOLU !提取单元体积
SEXP,W,SENE,VOLU,1,-1 !计算应变能密度W=sene/volu
PDEF,W,ETAB,W !应变能密度映射到路径上
PCALC,INTG,J1,W,YG !积分,计算J1
*GET,JA,PATH,,LAST,J1 !提取Ja
PDEF,CLEAR !清楚原有路径参量
PVECT,NORM,NX,NY,NZ !定义路径法向向量
PDEF,INTR,SX,SX !
PDEF,INTR,SY,SY !
PDEF,INTR,SXY,SXY !三维应力映射到路径上
PCALC,MULT,TX,SX,NX ! CALCULATE TRACTION TX
PCALC,MULT,C1,SXY,NY ! TX = SX*NX + SXY*NY
PCALC,ADD,TX,TX,C1
PCALC,MULT,TY,SXY,NX ! CALCULATE TRACTION TY
PCALC,MULT,C1,SY,NY ! TY = SXY*NX + SY*NY
PCALC,ADD,TY,TY,C1
*GET,DX,PATH,,LAST,S
DX=DX/100
PCALC,ADD,XG,XG,,,,-DX/2
PDEF,INTR,UX1,UX
PDEF,INTR,UY1,UY
PCALC,ADD,XG,XG,,,,DX
PDEF,INTR,UX2,UX
PDEF,INTR,UY2,UY
PCALC,ADD,XG,XG,,,,-DX/2
C=(1/DX) !差分法求一阶导数
PCALC,ADD,C1,UX2,UX1,C,-C
PCALC,ADD,C2,UY2,UY1,C,-C
PCALC,MULT,C1,TX,C1
PCALC,MULT,C2,TY,C2
PCALC,ADD,C1,C1,C2
PCALC,INTG,J,C1,S
*GET,JB,PATH,,LAST,J
JINT=(JA-JB)
PDEF,CLEAR
CON1=E/(1-(v*v)) ! J-TO-KI CONVERSION FACTOR
KI=SQRT(CON1*JINT) ! CALCULATE KI FROM J
!*STATUS,KI
!*******************************************
麻烦了!!!!!!
|