Как создать несколько слоев материала по осям x и z в коде подпрограммы abaqus? - PullRequest
0 голосов
/ 24 апреля 2020

это код 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

enter image description here

1 Ответ

0 голосов
/ 24 апреля 2020

Здесь нужно учесть несколько вещей:

  • Кажется, что в координатных переменных есть ошибка: все 3 компонента приписываются X (вместо X=COORDS(1), Y=COORDS(2) ...). Эти координаты должны совпадать с точкой интеграции, где вызывается подпрограмма: если у вас несколько слоев, они должны быть разными.
  • Если (x, y, z) недостаточно, переменная NPT содержит информацию о точке интегрирования.

В качестве дополнительного примечания, я буду осторожен с необъявленные переменные.

...