URDFIL子程序问题
浏览:9664 回答:1
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),SP(3),LEP(3),HEADER(1),NODE(8),ELE(1),NT(1)
EQUIVALENCE(ARRAY(1),JRRAY(1,1))
C
C
C OPEN(UNIT=104,position='Append',FILE='C:\temp\8\element.DAT') !打开文件
C WRITE(104,*) ! 把当前的STEP和INCREMENT输出到文件
C DO 300 K1=1,99999
C CALL DBFILE(0,ARRAY,JRCD) !读入一条记录
C IF(JRCD.NE.0)GOTO 200 !判断结果文件是否结束
C KEY=JRRAY(1,2) !把RECORD KEY赋值于KEY
C IF(KEY.EQ.1900) THEN !判断此条记录是否为ELE
C ELE(1)=ARRAY(3)
C NODE(1)=JRRAY(1,5)
C NODE(2)=JRRAY(1,6)
C NODE(3)=JRRAY(1,7)
C NODE(4)=JRRAY(1,8)
C NODE(5)=JRRAY(1,9)
C NODE(6)=JRRAY(1,10)
C NODE(7)=JRRAY(1,11)
C NODE(8)=JRRAY(1,12)
C WRITE(104,170) ELE(1),NODE(1),NODE(2),NODE(3),NODE(4),
C 1 NODE(5),NODE(6),NODE(7),NODE(8) !输出节点编号
C 170 FORMAT(I5,5X,I5,5X,I5,5X,I5,5X,I5,5X,I5,5X,I5,5X,I5,5X,I5,5X)
C END IF
C300 CONTINUE
C200 CONTINUE
C CLOSE(104) !关闭文件
C
C
CALL POSFIL(KSTEP,KINC,ARRAY,JRCD) !定位到当前的STEP和INCREMENT
OPEN(UNIT=17,position='Append',FILE='C:\temp\8\coord.DAT') !打开文件
OPEN(UNIT=101,position='Append',FILE='C:\temp\8\sp.DAT') !打开文件
OPEN(UNIT=102,position='Append',FILE='C:\temp\8\lep.DAT') !打开文件
OPEN(UNIT=105,position='Append',FILE='C:\temp\8\temp.DAT') !打开文件
C OPEN(UNIT=103,position='Append',FILE='C:\temp\8\header.DAT') !打开文件
C OPEN(UNIT=104,position='Append',FILE='C:\temp\8\element.DAT') !打开文件
WRITE(17,*)KSTEP,KINC ! 把当前的STEP和INCREMENT输出到文件 坐标
WRITE(101,*)KSTEP,KINC ! 把当前的STEP和INCREMENT输出到文件 SP
WRITE(102,*)KSTEP,KINC ! 把当前的STEP和INCREMENT输出到文件 LEP
WRITE(105,*)KSTEP,KINC ! 把当前的STEP和INCREMENT输出到文件 TEMP
C WRITE(103,*) ! 把当前的STEP和INCREMENT输出到文件
C WRITE(104,*) ! 把当前的STEP和INCREMENT输出到文件
LOVRWRT=1
DO 1000 K2=1,10
DO 100 K1=1,99999
C
CALL DBFILE(0,ARRAY,JRCD) !读入一条记录
IF(JRCD.NE.0)GOTO 110 !判断结果文件是否结束
KEY=JRRAY(1,2) !把RECORD KEY赋值于KEY
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('NODE',I6,5X,'COORD',5X,E20.14,5X,E20.14,5X,E20.14)
C
ELSE IF(KEY.EQ.401)THEN !判断此条记录是否为sp 正常输出
!KEL=JRRAY(1,3)
SP(1)=ARRAY(3)
SP(2)=ARRAY(4)
SP(3)=ARRAY(5)
WRITE(101,140) SP(1),SP(2),SP(3)!输出,SP
140 FORMAT(E20.14,5X,E20.14,5X,E20.14)
C
C
ELSE IF(KEY.EQ.201)THEN !判断此条记录是否为temp 不正常输出,全为0,实际应该为20
KEL=JRRAY(1,3)
NT(1)=ARRAY(4)
WRITE(105,170) KEL, NT(1)!输出,NT
170 FORMAT(I6,5X,I20.10)
C
C
C ELSE IF(KEY.EQ.1)THEN !判断此条记录是否为HEADER,只输出一次 输出全为****
C HEADER(1)=ARRAY(3)
C WRITE(103,160) HEADER(1)!输出HEADER
C 160 FORMAT('HEADER',5X,I6)
C
ELSE IF(KEY.EQ.405)THEN !判断此条记录是否为LEP 输出全为0,实际不为0,但是值很小,在E-14级,是不是因为单精度的缘故
!KEL=JRRAY(1,3)
LEP(1)=ARRAY(3)
LEP(2)=ARRAY(4)
LEP(3)=ARRAY(5)
WRITE(102,150) LEP(1),LEP(2),LEP(3)!输出,LEP
150 FORMAT(E20.14,5X,E20.14,5X,E20.14)
END IF
C
100 CONTINUE
1000 CONTINUE
110 CONTINUE
CLOSE(17) !关闭文件
CLOSE(101) !关闭文件
CLOSE(102) !关闭文件
CLOSE(105) !关闭文件
C CLOSE(103) !关闭文件
C CLOSE(104) !关闭文件
RETURN
END
请各位看看这段程序问题在,在有问题的地方都用红字标注了
你好!关于urdfil读取结果文件数据,有个问题请教一下。
我在keyword里面添加了如下代码:
*EL FILE
*NODE FILE
COORD
最终,只读出来了坐标,读不出来单元信息对应的RECORD KEY:1900的内容,不知哪里出了问题。
帮助文档里面讲的,添加*EL FILE之后就可以读出1900对应的信息了。
谢谢