это код ABAQUS SUBROUTINE, написанный на фортране, который я использую для генерации движения источника тепла по оси x, я хочу, чтобы код понял, что у меня есть несколько слоев материала по оси z, где для каждого z- слой нуждается в источнике тепла для перемещения по оси X. Я использую этот код для имитации тепловой модели материала в программном обеспечении ABAQUS, код работал нормально, когда у меня был только один слой по оси Z, теперь у меня есть несколько слоев вверх в обоих направлениях x и z, и я попробовал следующий код, но он не работает, пожалуйста, если вы можете предложить какие-либо изменения :) ps: следующий pi c был симуляцией только для одного слоя по оси 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