916115735 发表于 2021-6-15 21:19:10

数组赋值问题

SUBROUTINE UMATHT_MAT2(U,DUDT,DUDG,FLUX,DFDT,DFDG,
   1 STATEV,TEMP,DTEMP,DTEMDX,TIME,DTIME,PREDEF,DPRED,
   2 CMNAME,NTGRD,NSTATV,PROPS,NPROPS,COORDS,PNEWDT,
   3 NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
      INCLUDE 'ABA_PARAM.INC'
C
      CHARACTER*80 CMNAME
      DIMENSION DUDG(NTGRD),FLUX(NTGRD),DFDT(NTGRD),
   1 DFDG(NTGRD,NTGRD),STATEV(NSTATV),DTEMDX(NTGRD),
   2 TIME(2),PREDEF(1),DPRED(1),PROPS(NPROPS),COORDS(3)
C
      REAL rho_v, rho_f, phi_v, phi_f, A, E, n, R, m_g,
   1 rho, M, delta_rho, f, Cv, Cf, Cp, Cpg, phi, delta_mg,
   2 delta_U, V, kv, kf, rho_g, rho_pro, kv1, kf1,
   3 miu,delta_rhog,L,K,S,NN,D3,i2
      REAL GAMA(3),SJ(10325,93)
中间程序无问题 不进行展示 将数据存储到二维数组有问题
C   根据节点标号写出坐标
       IF((TIME(1)).EQ.0)THEN
      DO i=7745,15488,1
            IF(i==NOEL)THEN
            DO j=1,8,1
                  IF(j==NPT)THEN
                   SJ((i-7745)*8+j,1) = COORDS(1)
                   SJ((i-7745)*8+j,2) = COORDS(2)
                   SJ((i-7745)*8+j,3) = COORDS(3)
               END IF
            END DO
          END IF
      ENDDO
       ENDIF
C    记录TEMP   
         DO j=4,93,1
                     IF (((j-3)*10)==TIME(1))THEN
                           DO i=1,10125,1
                              SJ(i,j)=STATEV(10)
                         enddo
               ENDIF
         ENDDO
         
C   写出二维数组      
         
         
      doi=1,7745,1
         
      WRITE(*,*) SJ(i,1),SJ(i,2),SJ(i,3),SJ(i,4)end do
上述程序中建立的二维数组输出出来是乱的 而且只记录了一个坐标为什么后续坐标不进行记录

风平老涡 发表于 2021-6-15 22:05:53

查一下变量NOEL和NPT

916115735 发表于 2021-6-16 09:10:34

风平老涡 发表于 2021-6-15 22:05
查一下变量NOEL和NPT

NOEL是单元编号 NPT是节点编号 这两个数都没有问题的

916115735 发表于 2021-6-16 09:13:02

图中依次是NOEL、NPT、COORDS(1)、COORDS(2)、COORDS(3)的输出量 这些值单独正常输出是没有问题的

风平老涡 发表于 2021-6-16 20:53:49

本帖最后由 风平老涡 于 2021-6-17 00:38 编辑

916115735 发表于 2021-6-16 09:13
图中依次是NOEL、NPT、COORDS(1)、COORDS(2)、COORDS(3)的输出量 这些值单独正常输出是没有问题的
...
在第28行插入print *, i, j, sj((i-7745)*8+j, 1:3)。另最后一行enddo换行。
页: [1]
查看完整版本: 数组赋值问题