簡體   English   中英

在Fortran 77中創建表

[英]Creating a Table in Fortran 77

首先,我要說我完全沒有資格在Fortran 77中工作,但是我在這里,我正在學習我能做的。

我正在從事一個涉及在不同條件下對火焰特性建模的項目。 在這里,我有一個片段,用於輸出表中的第一行,並在其適當的列下方為行提供標簽。 (KSYM是一個字符串數組,用於標記存在的不同化合物)

   WRITE(LOUT,1) "Standoff(cm)", "Density(g/cm3)", 
 +  "HeatReleaseRate(erg/cm3/s)","Temperature(K)",
 +  KSYM(1),KSYM(2),KSYM(3),KSYM(4),KSYM(5),KSYM(6),KSYM(7),
 +  KSYM(8),KSYM(9),KSYM(10),KSYM(11),KSYM(12),KSYM(13),KSYM(14),
 +  KSYM(15),KSYM(16),KSYM(17),KSYM(18),KSYM(19),KSYM(20),
 +  KSYM(21),KSYM(22),KSYM(23),KSYM(24),KSYM(25),KSYM(26),
 +  KSYM(27),KSYM(28),KSYM(29),KSYM(30),KSYM(31),KSYM(32),
 +  KSYM(33)

然后稍后在每個僵持間隔的循環中

    WRITE(LOUT,6) X(J),F(J),HR(J),(SN(N,J), N=1,NATJ-1)

格式如下:

 1     FORMAT(A16,3X,A16,3X,A30,3X,A16,3X,80(A16,3X))
 2     FORMAT(I10)
 3     FORMAT(3(I10,3X))
 4     FORMAT(3(E17.7,3X))
 5     FORMAT(80(E17.7,3X))
 6     FORMAT(F17.7,3X,F17.7,3X,F20.7,3X,80(E15.5,3X))

我的問題是,數據消失了,因為第一行中的標簽及其相應的列在前幾列之后沒有保持對齊,從而難以讀取和操作。

我可以想到的兩種可能的解決方案:1.將使用“ T”格式描述符來創建絕對列2.忽略即時可讀性的問題,在每個條目后插入逗號或半逗號,然后以excel形式在excel中打開。 CSV文件

由於最終要對數據進行圖形化處理,因此我不妨做選項2。我嘗試在第一個代碼段的每個條目之間添加“,”,但是我一直在獲取語法錯誤,所以我我以為我做錯了什么。

編輯:

為了測試想法2,我在每個條目之間添加了“,”。

       WRITE(LOUT,*) 'Name',KSYM(1),';',KSYM(2),';',KSYM(3),';',
 +  KSYM(4),';',KSYM(5),';',KSYM(6),';',KSYM(7),';',KSYM(8),';',
 +  KSYM(9),';',KSYM(10),';',KSYM(11),';',KSYM(12),';',
 +  KSYM(13),';',KSYM(14),';',KSYM(15),';',KSYM(16),';',
 +  KSYM(17),';',KSYM(18),';',KSYM(19),';',KSYM(20),';',
 +  KSYM(21),';',KSYM(22),';',KSYM(23),';',KSYM(24),';',
 +  KSYM(25),';',KSYM(26),';',KSYM(27),';',KSYM(28),';',
 +  KSYM(29),';',KSYM(30),';',KSYM(31),';',KSYM(32),';',
 +  KSYM(33)

但是語法錯誤與以前相同。 我正在使用一個特殊的編譯器pgf77,如果有任何區別。

基本問題是格式1和6的字段寬度不同。 在格式1中,您的間距為3X,字符串(標簽)的長度為16。除了A30是一個。 在用於值的格式6中,您有3個空格,數字項目的字段具有不同的長度,例如17、20或15。如果使每個數字格式項目的長度都變長,除了第3個項目,則為16。應該排隊。

通過用隱含的do-loop替換數組的33個單獨索引的值,將更容易讀取第一次寫入:(ksym(i),i = 1,33)。 最好使用數組功能,而不是全部寫出來!

格式語句與可變寬度輸出(例如CSV)在很大程度上不兼容。 相反,只需使用列表控制的輸出:

    write (LOUT,*) 'Standoff(cm), Density(g/cm3), HeatReleaseRate(erg/cm3/s), Temperature(K)'

    do 101 i=1,n
    write (LOUT,*) X(J), ',', F(J), ',', HR(J), ',', (SN(N,J), ',', N=1,NATJ-1)
101 continue

(另)

暫無
暫無

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

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