- 积分
- 0
- 注册时间
- 2011-1-1
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2013-7-2 23:33:04
|
显示全部楼层
来自 英国
直接删除就是个简单的fortran小程序
subroutine vusdfld(
c Read only variables -
1 nblock, nstatev, nfieldv, nprops, ndir, nshr,
2 jElem, kIntPt, kLayer, kSecPt,
3 stepTime, totalTime, dt, cmname,
4 coordMp, direct, T, charLength, props,
5 stateOld,
c Write only variables -
6 stateNew, field )
include 'vaba_param.inc'
C
dimension jElem(nblock), coordMp(nblock,*),
* direct(nblock,3,3), T(nblock,3,3),
* charLength(nblock), props(nprops),
* stateOld(nblock,nstatev),
* stateNew(nblock,nstatev),
* field(nblock,nfieldv),
* StatusOld(NBLOCK,1),
* StatusNew(NBLOCK,1)
character*80 cmname
C
C Local arrays from vgetvrm are dimensioned to
C maximum block size (maxblk)
C
parameter( nrData=6 )
character*3 cData(maxblk*nrData)
dimension rData(maxblk*nrData), jData(maxblk*nrData),
* strain(nblock,nrData),stress(nblock,nrData)
DO k = 1, nblock
!获取应力
CALL VGETVRM('S',RDATA,JDATA,CDATA,JSTATUS)
SS11=rData(k*1)
SS22=rData(k*2)
SS33=rData(k*3)
SS12=rData(k*4)
SS23=rData(k*5)
SS13=rData(k*6)
!判断是否删除
IF (SS11.LT.100)THEN ! 1方向应力大于小于100时不删除单元, 第一个sdev=1
stateNew(k,1)=1
ELSEIF(SS11.GT.100)THEN ! 1方向应力大于大于100时不删除单元, 第一个sdev=0
stateNew(k,1)=0
END IF
END DO
c
RETURN
END
具体什么条件删除自己编
在inp的material中加几行:
*Depvar, delete=1 (第1个sdev 即sdev(k,1)负责控制删除单元)
2, (总共需要的state dependent variable数量)
*User Defined Field (usdfld子程序)
要用explicit
简单来说就这样啦 |
|