回 帖 发 新 帖 刷新版面

主题:Fortran 读取文件的问题

初次发帖,请多指教。

需要用fortran读取一个abaqus input文件中的数字信息,文件中包含文字和数字。
想通过判断某些字符(Node,Element)的出现来作为开始读入数字和结束读入的信号(数字紧接着文字)。
目的是能够将其中的数字按照input文件中的格式输入到新的文本文件当中(空格无所谓,就是要能换行)。有个问题是,这些input文件中的数字内容列数和行数不一定,并且数字与数字之间存在空格和逗号,我刚接触fortran,只能运用基本的read命令来读取一些纯数据的文件,对于这种文件束手无策,麻烦大家帮帮忙。


文件的基本格式如下:

*Heading
** Job name: Job-1 Model name: Model-1
** Generated by: Abaqus/CAE 6.9-1
*Preprint, echo=NO, model=NO, history=NO, contact=NO
**
** PARTS
**
*Part, name=unitcell
*Node
      1,          0.5,           0.
      2,           0.,           0.
      3,           0.,         -0.5
                  ...
*Element, type=CPS3
1, 13,  1, 10
2, 46, 13, 10
3, 46, 12, 13
                  ...

回复列表 (共2个回复)

沙发

C   HOW TO READ NODES
.............

     CHARACTER TEXT*80
     LOGICAL TOPFIL, NODFIL
     NODES = 0
     WRITE(6,20)
     READ(5,'(A20)') NODEF
20   FORMAT('KEY IN THE NODE FILE NAME :' $)
     OPEN(57, FILE = NODEF, STATUS = 'OLD')
     NODFIL = .TRUE.
     DO WHILE (NODFIL)
     READ (57,'A80', ERR=100) TEST
     IF (TEXT(1:5) .EQ. '.node') THEN
     TOPFIL = .FALSE.
     ENDIF
     ENDDO
     NODFIL=.TRUE.
     DO WHILE (NODFIL)READ(57,'(A80)',ERR=100) TEXT
     IF (TEXT(1:8).NE.'*ENDDATA') THEN
     BACKSPACE(57)
     READ(57,31)NN,XCT(NN),YCT(NN)
31   FORMAT(2X,I5,2(10X,E3.1))
     ELSE
     NODFIL=.FALSE.
     ENDIF
     ENDDO

C THIS PROGRAM IS NOT BEING DEBUGED, THERE MAY SOME ERRORS ,CHECK IT YOURSELF

板凳


比特气候问题热具体还要日

我来回复

您尚未登录,请登录后再回复。点此登录或注册