首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ABAQUS子程序代码中生成x轴和z轴上的多层材料?

如何在ABAQUS子程序代码中生成x轴和z轴上的多层材料?
EN

Stack Overflow用户
提问于 2020-04-24 05:24:33
回答 1查看 104关注 0票数 0

这是用fortran编写的ABAQUS子程序代码,我用它来生成热源在x轴上的运动,我想让代码意识到我在z轴上有几个材料层,对于每个z层,我需要热源在x方向上移动,我正在使用这个代码在ABAQUS软件上模拟材料的热模型,当我在z轴上只有一层时,代码工作得很好,现在我在x和z方向上都有多个层,我尝试了以下代码,但它不起作用。ps:下图是z轴上只有一层的模拟,我想重复相同的过程和热源移动,但在z方向上有多层

代码语言:javascript
复制
      SUBROUTINE DFLUX(FLUX,SOL,KSTEP,KINC,TIME,NOEL,NPT,COORDS,
     1 JLTYP,TEMP,PRESS,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION FLUX(2), TIME(2), COORDS(3)
      CHARACTER*80 SNAME


      X=COORDS(1)
      Y=COORDS(2)
      Z=COORDS(3)
      T=TIME(2)
      X0=0.0
      Y0=0.0
      Z0=0.0
      Q=2000
      R0=0.0075
      R0=R0**2
      PI=3.141593
      V=0.01

      XC=X0+V*T
      YC=Y0
      ZC=Z0
      ETTA=0.7

      FLUX(1)=0

      Q0=((3*Q*ETTA)/(PI*R0))*EXP((-3*((X-XC)**2+(Y-YC)**2))/R0)

      IF(((X-XC)**2+(Y-YC)**2)<R0)  THEN
      FLUX(1)=Q0

      END IF
      FLUX(2)=0.0


          XC=X0+V*T
      YC=Y0
      ZC=Z0+0.05
      ETTA=0.7

      FLUX(1)=0

      Q0=((3*Q*ETTA)/(PI*R0))*EXP((-3*((X-XC)**2+(Y-YC)**2))/R0)

      IF(((X-XC)**2+(Y-YC)**2)<R0)  THEN
      FLUX(1)=Q0

      END IF
      FLUX(2)=0.0


      RETURN
      END

EN

回答 1

Stack Overflow用户

发布于 2020-04-25 02:00:48

这里有几件事需要考虑:

  • 坐标变量中似乎有一个错误:3个分量都归于X(而不是X=COORDS(1)Y=COORDS(2),...)。这些坐标应该是调用子例程的集成点的坐标:如果你有多个层,它们应该是不同的。
  • 如果(x,y,z)还不够,则变量NPT包含有关集成点的信息。

另外需要注意的是,我要小心处理未声明的变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61397244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档