公正明 发表于 2018-11-12 17:52:18

多道dflux移动热源顺序加载,构成一个矩形

大家看我的编写哪里出现问题了,只有第一道正常移动,第二道就跑到了区域外,有看帖子说把time(2)改成time(1),具体是怎么改呢

公正明 发表于 2018-11-12 17:52:45

下面是我的子程序编写
      SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
   1               TEMP,PRESS,SNAME)
c   
      INCLUDE 'ABA_PARAM.INC'
      DIMENSION COORDS(3),FLUX(2),TIME(2)
      CHARACTER*80 SNAME
      IF(TIME(2) .GT. 0 .AND. TIME(2) .LE. 1.75)THEN
      CALL DFLUX1(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
   1                  TEMP,PRESS,SNAME )
      ELSE IF(TIME(2) .GT. 1.75 .AND. TIME(2) .LE. 3.4)THEN
      CALL DFLUX2(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
   2                  TEMP,PRESS,SNAME )
      ELSE IF(TIME(2) .GT. 3.4 .AND. TIME(2) .LE. 5.1)THEN
      CALL DFLUX3(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
   3                  TEMP,PRESS,SNAME )
          ELSE IF(TIME(2) .GT. 5.1 .AND. TIME(2) .LE. 6.8)THEN
      CALL DFLUX4(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
   4                  TEMP,PRESS,SNAME )
      END IF
      RETURN
      END
      


      SUBROUTINE DFLUX1(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
   1               TEMP,PRESS,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'

      DIMENSION COORDS(3),FLUX(2),TIME(2)
      CHARACTER*80 SNAME
      q=1000
      v=0.04
      d=v*TIME(2)
      x=COORDS(1)
      y=COORDS(2)
      z=COORDS(3)
      x0=0.034
      y0=0.002
      z0=0.015
      a=0.0028
      b=0.0034
      c=0.0032
      PI=3.1415
      heat=6*sqrt(3.0)*q/(a*b*c*PI*sqrt(PI))
      shape1=exp(-3*(x-x0)**2/c**2-3*(y-y0)**2/a**2-3*(z-z0-d)**2/b**2)
C   JLTYP=1,表示为体热源
      JLTYP=1
      FLUX(1)=heat*shape1
      RETURN
      END


      SUBROUTINE DFLUX2(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
   1                TEMP,PRESS,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'

      DIMENSION COORDS(3),FLUX(2),TIME(2)
      CHARACTER*80 SNAME
      q=1000
      v=0.04
      d=v*TIME(2)
      x=COORDS(1)
      y=COORDS(2)
      z=COORDS(3)
      x0=0.033
      y0=0.002
      z0=0.084
      a=0.0028
      b=0.0034
      c=0.0032
      PI=3.1415
      heat=6*sqrt(3.0)*q/(a*b*c*PI*sqrt(PI))
      shape2=exp(-3*(x-x0+d)**2/c**2-3*(y-y0)**2/a**2-3*(z-z0)**2/b**2)
C   JLTYP=1,表示为体热源
      JLTYP=1
      FLUX(1)=heat*shape2
      RETURN
      END
      
      
      SUBROUTINE DFLUX3(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
   1                TEMP,PRESS,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'

      DIMENSION COORDS(3),FLUX(2),TIME(2)
      CHARACTER*80 SNAME
      q=1000
      v=0.04
      d=v*TIME(2)
      x=COORDS(1)
      y=COORDS(2)
      z=COORDS(3)
      x0=-0.034
      y0=0.002
      z0=0.085
      a=0.0028
      b=0.0034
      c=0.0032
      PI=3.1415
      heat=6*sqrt(3.0)*q/(a*b*c*PI*sqrt(PI))
      shape3=exp(-3*(x-x0)**2/c**2-3*(y-y0)**2/a**2-3*(z-z0+d)**2/b**2)
C   JLTYP=1,表示为体热源
      JLTYP=1
      FLUX(1)=heat*shape3
      RETURN
      END
      
      
      SUBROUTINE DFLUX4(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
   1                TEMP,PRESS,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'

      DIMENSION COORDS(3),FLUX(2),TIME(2)
      CHARACTER*80 SNAME
      q=1000
      v=0.04
      d=v*TIME(2)
      x=COORDS(1)
      y=COORDS(2)
      z=COORDS(3)
      x0=-0.035
      y0=0.002
      z0=0.016
      a=0.0028
      b=0.0034
      c=0.0032
      PI=3.1415
      heat=6*sqrt(3.0)*q/(a*b*c*PI*sqrt(PI))
      shape4=exp(-3*(x-x0-d)**2/c**2-3*(y-y0)**2/a**2-3*(z-z0)**2/b**2)
C   JLTYP=1,表示为体热源
      JLTYP=1
      FLUX(1)=heat*shape4
      RETURN
      END

凤麒 发表于 2018-11-12 17:52:51

你这何必函数套两层。。。一层就能完成吧

公正明 发表于 2018-11-12 17:54:49

凤麒 发表于 2018-11-12 17:52
你这何必函数套两层。。。一层就能完成吧

嗯嗯,当时不太懂,这些都是copy别人的
页: [1]
查看完整版本: 多道dflux移动热源顺序加载,构成一个矩形