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

发布于 2020-04-25 02:00:48
这里有几件事需要考虑:
X=COORDS(1),Y=COORDS(2),...)。这些坐标应该是调用子例程的集成点的坐标:如果你有多个层,它们应该是不同的。NPT包含有关集成点的信息。另外需要注意的是,我要小心处理未声明的变量。
https://stackoverflow.com/questions/61397244
复制相似问题