能判断滑移、粘着的一个fric子程序
以下为自己做的fric子程序,其功能就是实现库仑摩擦,在不同的外力作用下,可以区分滑移和粘着状态。能计算循环载荷下的界面应力。计算结果同aba自带功能的计算结果完全一致。
但是现在有一个问题:自己写的fric子程序与aba自带的库仑摩擦模型相比,具有收敛速度慢的缺点,有时候甚至不收敛。我就不明白是我自身程序的问题呢,还是说aba自身作了优化,所以计算收敛速度快,比较稳定。
望大侠能给指点一二。
以下为子程序,各个部分都做了注释
subroutine fric(lm,tau,ddtddg,ddtddp,dslip,sed,spd,
1 ddtddt,pnewdt,statev,dgam,taulm,press,dpress,ddpddh,
2 slip,kstep,kinc,time,dtime,noel,ciname,slname,
3 msname,npt,node,npatch,coords,rcoord,drot,temp,
4 predef,nfdir,mcrd,npred,nstatv,chrlngth,props,nprops)
c
include 'aba_param.inc'
c
character*80 ciname,slname,msname
dimension tau(nfdir),ddtddg(nfdir,nfdir),ddtddp(nfdir),
1 dslip(nfdir),ddtddt(nfdir,2),statev(*),
2 dgam(nfdir),taulm(nfdir),slip(nfdir),time(2),
3 coords(mcrd),rcoord(mcrd),drot(2,2),temp(2),
4 predef(2,*),props(nprops)
c 摩擦系数
F = 0.7
C 由相对滑移量判断滑移与粘着的临界值
CRI = 1E-7
c 没有用到以下量,直接清零
DDTDDG( 1 , 1 ) = 0.0
DDTDDG( 1 , 2 ) = 0.0
DDTDDG( 2 , 1 ) = 0.0
DDTDDG( 2 , 2 ) = 0.0
c 如果上一迭代为分离,直接返回
IF( LM == 2 ) THEN
return
END IF
c 如果接触压力为负,则下次迭代的接触状态应更新为分离
IF( PRESS <= 0 ) THEN
LM = 2
RETURN
END IF
IF( LM == 1 ) THEN
c 判断计算结果是否和假设接触状态一致
IF( DABS( TAULM( 1 ) ) >= DABS( F * PRESS ) ) THEN
c 不一致,重新确定接触状态
LM = 0
IF( TAULM( 1 ) <0 ) THEN
TAU( 1 ) = -F * PRESS
DDTDDP( 1 ) = -F
ELSE
TAU( 1 ) = F * PRESS
DDTDDP( 1 ) = F
END IF
RETURN
END IF
c 一致,且为粘着,直接返回
RETURN
END IF
IF( LM == 0 ) THEN
TT = DGAM( 1 )
c 判断计算结果是否和假设接触状态一致
IF( DABS( TT ) < CRI ) THEN
c 不一致,改变接触状态,设定接触状态为粘着,直接返回
LM = 1
RETURN
END IF
c 一致,界面状态为滑移,根据库仑摩擦改变界面切向应力
IF( DGAM( 1 ) < 0 ) THEN
TAU( 1 ) = -F * PRESS
DDTDDP( 1 ) = -F
ELSE
TAU( 1 ) = F * PRESS
DDTDDP( 1 ) = F
END IF
RETURN
END IF
return
end 虽然我看不太懂 但是感谢搂住分享 xie xie fen xiang !! abaqus 中的库伦摩擦是扩展的,有一定的粘结刚度,也就是说在一定的滑移范围内还认为是粘结的 你这个子程序只适合二维情况吧?是吗 谢谢,好人啊 看到楼主这个帖子太有同感了,我现在分析一个三维问题,也遇到和你类似的问题,不知道你最后解决没,是怎么解决的?可否指教或讨论? 不错,这种设置我还没尝试过呢 值得看看
不行啊,为什么不能用啊。Problem during compilation 谢谢,好人啊 谢谢楼主
这个太棒了,十分需要 粘结滑移的我还没试过,参考一下,谢谢楼主 SMH 发表于 2015-7-4 20:19
不行啊,为什么不能用啊。Problem during compilation
兄弟,解决了吗 谢谢分享 我想请教一下,Fric与Fric_coef有什么区别吗
页:
[1]