簡體   English   中英

從fortran的數據文件中讀取列

[英]Reading columns from data file in fortran

我編寫了以下塊以讀取外部數據文件:

     open(unit=338,file='bounnodes.dat',form='formatted') 
      DO I=1,NQBOUN
         DO J=1,NUMBOUNNODES(I)
            read(338,2001) NODEBOUN(i,j)
            write(6,*) 'BOUNDARY NODES',  NODEBOUN(i,j)
         ENDDO
       ENDDO
     2001
     FORMAT(32I5)

據我了解,這應該從bounnodes.dat讀取2 x 32數組。 但是,在讀取過程中出現錯誤end-of-file並且它打印第一列。

我試圖使用相同的代碼讀取32 x 2的數組,它讀取第一列的32個元素,但為下一列輸出0s

您能解釋一下發生了什么嗎? 我的格式有誤嗎?

Fortran中的每個已讀語句都會前進到下一條記錄。 這意味着普通文本文件中將換行。 嘗試這個:

   DO I=1,NQBOUN
     DO J=1,NUMBOUNNODES(I)
        read(338,2001,advance='no') NODEBOUN(i,j)
        write(*,*) 'BOUNDARY NODES',  NODEBOUN(i,j)
     ENDDO
     read(338,*)
   ENDDO

其中NQBOUN是行數,NUMBOUNNODES(I)是一行中的列數。 (我總是遇到問題,什么是32x2與2x32)

您可以使用隱含的方法使其更短

   DO I=1,NQBOUN
        read(338,2001) ( NODEBOUN(i,j) , j=1,NUMBOUNNODES(I) )
        write(*,*) ( 'BOUNDARY NODES', NODEBOUN(i,j) , j=1,NUMBOUNNODES(I) )
   ENDDO

甚至

   DO I=1,NQBOUN
        read(338,2001) NODEBOUN(i,:)
        write(*,*) 'BOUNDARY NODES',  NODEBOUN(i,1:NUMBOUNNODES(I))
   ENDDO

所有這些都使用Fortran 90功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM