检查在 FORTRAN 中生成的巨大未格式化文件

Checking the gigantic unformatted file generated in FORTRAN

我的 Fortran 程序的输出是一个巨大的 (300GB) 未格式化文件。 (事实上​​,这个文件包含了很多粒子的xyz坐标的时间演化。所以,数据类型是real*8,如果有关系的话)

问题是我不确定是否所有这些数据都已正确写入,因为计算服务器中存在暂时性问题。现在,我留下了这个巨大的文件,正在寻找一种方法来检查它的所有内容是否健康!

有没有办法检查所有 xyz 是否都正确写入且没有损坏(比如 NaN)?

除了 dwwork 检查 NaN 的方法外,您还可以检查无穷大。之后,读取文件并循环遍历每个值就是一件简单的事情。既然你写了这个文件,我想你可以阅读它。

  program testinfnan

  implicit none

  real*8 :: x, y, z

  logical :: xnan, ynan, znan, xinf, yinf, zinf

  z = 1.
  x = z / 0.
  y = x / x 

  print *, ''
  print *, 'x = ', x
  print *, 'y = ', y
  print *, 'z = ', z

  xnan = x /= x
  ynan = y /= y
  znan = z /= z

  print *, ''
  print *, 'xnan = ', xnan
  print *, 'ynan = ', ynan
  print *, 'znan = ', znan

  xinf = x == 1./0
  yinf = y == 1./0
  zinf = z == 1./0

  print *, ''
  print *, 'xinf = ', xinf
  print *, 'yinf = ', yinf
  print *, 'zinf = ', zinf

  end program testinfnan

输出:

x =                 Infinity
y =                      NaN 
z =    1.00000000000000    

xnan =  F
ynan =  T
znan =  F

xinf =  T
yinf =  F
zinf =  F