将文件从big endian Fortran转换为未格式化为64位浮点数据到数据文件

时间:2013-07-10 21:25:01

标签: endianness

您好我是新手,所以请原谅我对大多数事情缺乏了解:]

我正在尝试将网格文件中的CFD代码读入由我工作的实验室中很久以后学生写的CFD代码。这些文件是大端的Fortran,未使用64位浮点格式化。我需要一些我可以在屏幕上阅读的文本或数据文件,以便我可以适当地修改文件中读取的代码部分。经过一些谷歌搜索后,我感到茫然(我绝不是一个计算机科学家)虽然我认为我一般都了解大端是什么以及未格式化的文件是什么。如何将这些文件转换为可读的内容?感谢您提供的任何帮助!!此外,如果它有助于链接到我需要转换的网格文件是

ftp://cmb24.larc.nasa.gov/outgoing/DPW5/unstructured_grids.REV01/

再次感谢!!

- 中号

2 个答案:

答案 0 :(得分:1)

你可以玩python和numpy:

from __future__ import print_function, division
import numpy as np

file = "L1.T.rev01.p3d.hex.r8.ugrid"
n=8
dt = np.dtype([('field0','>f8'), ('field1', '>f8'), ('field2', '>f8')])
ndt = len(dt)
data = np.fromfile(file, dt, count=n) #omit count= to read all records

for row in data:
    print(row)
    #print(row['field0'])

将以下内容打印到屏幕上:

(5.9416208318e-313, 2.0743e-319, 0.0)
(3.15696e-318, 5.94342273776e-313, 260.16056)
(0.0, 118.46084, 272.1421)
(0.0, 115.94573, 284.80264)
(0.0, 113.49254, 298.1431)
(0.0, 111.13511, 312.15776)
(0.0, 108.90879, 326.83354)
(0.0, 106.84945, 342.14944)

我不确定如何处理标题,但efficient-way-to-create-numpy-arrays-from-binary-files可能有所帮助。 对于numpy中的big-endian,small-endian和其他数据类型,请参阅Data type objects

答案 1 :(得分:0)

看起来可能是这种格式:

http://www.simcenter.msstate.edu/docs/ug_io/file_formats.html

...你可以从这里用一些软件打开它吗?:

http://www.laerdal.com/us/SimCenter

这是沿着正确的方向吗?你的文件是关于模拟的,并且这些文件是否包含3D场景数据(这只是基于初看的猜测)?

......如果是的话,我会尝试通过技术支持渠道,如果可能的话 - 也许会有人知道更多关于它的信息:

http://www.laerdal.com/us/doc/417/Technical-Support