Fortran Coder

标题: 数组赋值问题 [打印本页]

作者: 916115735    时间: 2021-6-15 21:19
标题: 数组赋值问题
[Fortran] 纯文本查看 复制代码
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   写出二维数组        
           
         
      do  i=1,7745,1
         
      WRITE(*,*) SJ(i,1),SJ(i,2),SJ(i,3),SJ(i,4)end do

上述程序中建立的二维数组输出出来是乱的 而且只记录了一个坐标  为什么后续坐标不进行记录  

微信图片_20210615211811.png (53.4 KB, 下载次数: 280)

微信图片_20210615211811.png

作者: 风平老涡    时间: 2021-6-15 22:05
查一下变量NOEL和NPT
作者: 916115735    时间: 2021-6-16 09:10
风平老涡 发表于 2021-6-15 22:05
查一下变量NOEL和NPT

NOEL是单元编号 NPT是节点编号 这两个数都没有问题的
作者: 916115735    时间: 2021-6-16 09:13
图中依次是NOEL、NPT、COORDS(1)、COORDS(2)、COORDS(3)的输出量 这些值单独正常输出是没有问题的  

微信截图_20210616090924.png (32.52 KB, 下载次数: 267)

微信截图_20210616090924.png

作者: 风平老涡    时间: 2021-6-16 20:53
本帖最后由 风平老涡 于 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换行。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2