关于子程序中数据的输入输出
现在想请教:在DLOAD如何读取指定节点编号、位移、速度SUBROUTINE URDFIL(LSTOP,LOVRWRT,KSTEP,KINC,DTIME,TIME)
C
INCLUDE'ABA_PARAM.INC'
C
DIMENSION ARRAY(513),JRRAY(NPRECD,513),TIME(2),LRUNIT(2,1)
1,COORD(3)
EQUIVALENCE(ARRAY(1),JRRAY(1,1))
CALL POSFIL(KSTEP,KINC,ARRAY,JRCD)519771355
OPEN(UNIT=17,FILE='E:\tempabaqus\2.DAT')
WRITE(17,*)KINC,KSTEP
DO 1000 K2=1,10
DO 100 K1=1,9999999
C
CALL DBFILE(0,ARRAY,JRCD)
IF(JRCD.NE.0)GO TO 110
KEY=JRRAY(1,2)
C
IF(KEY.EQ.107)THEN
KEL=JRRAY(1,3)
COORD(1)=ARRAY(4)
COORD(2)=ARRAY(5)
COORD(3)=ARRAY(6)
WRITE(17,120)KEL,COORD(1),COORD(2),COORD(3)
120 FORMAT(5X,'NODE',I5,5X,'X',F20.14,5X,'Y',F20.14,5X,'Z'
1,F20.14,5X)
ELSE IF(KEY.EQ.101)THEN
KEL=JRRAY(1,3)
COORD(1)=ARRAY(4)
COORD(2)=ARRAY(5)
COORD(3)=ARRAY(6)
WRITE(17,140)KEL,COORD(1),COORD(2),COORD(3)
140 FORMAT(5X,'NODE',I5,5X,'UX',F20.14,5X,'UY',F20.14,5X
1,'UZ',F20.14,5X)
ELSE IF(KEY.EQ.102)THEN
WRITE(17,130)ARRAY(3),ARRAY(4),ARRAY(5),ARRAY(6)
130 FORMAT(5X,'NODE',I5,5X,'VX',F20.14,5X,'VY',F20.14,5X,'VZ'
1,F20.14,5X)
END IF
C
100 CONTINUE
1000CONTINUE
110 CONTINUE
CLOSE(17)
RETURN
END
以上的代码是我在书上看到然后自己抄了一遍,用来输出坐标、位移和速度的代码。
接下来的是DLOAD程序,我想要读取.DAT文件中的数据,然后写入另一个.DAT文件中。
但此时,不知道该如何读取。
SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS
1,JLTYP,SNAME)
C
INCLUDE'ABA_PARAM.INC'
C
DIMENSION TIME(2),COORDS(3)
CHARACTER*80 SNAME
C
REAL C
OPEN(UNIT=17,FILE='E:\tempabaqus\2.DAT')
READ(17,*)NODE,X
OPEN(UNIT=18,FILE='E:\tempabaqus\10.DAT')
WRITE(18,150)NODE,X
图片是生成的2.DAT文件中的内容。
file:///C:/Users/DELL/AppData/Roaming/Tencent/Users/519771355/QQ/WinTemp/RichOle/Y3%7DH9(%7BWW%60CKTLW0KSAVMVR.png
希望得到大家的帮助:-victory: 这是文本文件,只能依次读取每一行,判断节点编号是否是你需要的。如果你存为二进制文件,每个点的信息放一起,是可以按位置查找的。 li913 发表于 2019-9-12 16:09
这是文本文件,只能依次读取每一行,判断节点编号是否是你需要的。如果你存为二进制文件,每个点的信息放一 ...
非常非常感谢您的回答,我语言基础比较薄弱。。不太明白该怎样判断节点编号,可以帮忙解答一下吗?
页:
[1]