whynot007 发表于 2008-3-11 16:27:58

能判断滑移、粘着的一个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

dhh_1981 发表于 2008-3-12 15:47:50

虽然我看不太懂 但是感谢搂住分享

yjwluoyang 发表于 2009-4-27 11:25:49

xie xie fen xiang !!

tjuzlm 发表于 2010-1-7 15:51:16

abaqus 中的库伦摩擦是扩展的,有一定的粘结刚度,也就是说在一定的滑移范围内还认为是粘结的

只是秋天 发表于 2010-5-21 13:57:09

你这个子程序只适合二维情况吧?是吗

zhangyifu 发表于 2010-5-21 14:45:20

谢谢,好人啊

liujuan_616 发表于 2011-11-14 16:38:17

看到楼主这个帖子太有同感了,我现在分析一个三维问题,也遇到和你类似的问题,不知道你最后解决没,是怎么解决的?可否指教或讨论?

wall-e0528 发表于 2014-10-21 15:02:11

不错,这种设置我还没尝试过呢

macky1983 发表于 2014-12-12 13:57:26

值得看看

SMH 发表于 2015-7-4 20:19:55

不行啊,为什么不能用啊。Problem during compilation

mistake88 发表于 2015-7-5 15:44:26

谢谢,好人啊

yqy364364 发表于 2015-9-28 16:14:33

谢谢楼主

echoolivier 发表于 2018-6-25 20:58:14

这个太棒了,十分需要

wyyhfut 发表于 2020-6-18 10:41:12

粘结滑移的我还没试过,参考一下,谢谢楼主

ZXY140910abc 发表于 2021-1-7 10:35:37

SMH 发表于 2015-7-4 20:19
不行啊,为什么不能用啊。Problem during compilation

兄弟,解决了吗

KHX 发表于 2021-11-1 13:03:43

谢谢分享

KHX 发表于 2021-11-1 13:05:09

我想请教一下,Fric与Fric_coef有什么区别吗
页: [1]
查看完整版本: 能判断滑移、粘着的一个fric子程序