相关疑难解决方法(0)

在Fortran中打开二进制文件:状态,表单,访问

我多年来一直在使用Fortran,但文件I/O对我来说仍然很模糊.我的理解status,form,access,recl是有限的,因为我只需要一定的使用情况在读研究生.
我知道Fortran二进制文件在文件顶部有额外的信息来描述文件的大小.但这对我来说从来就不是一个问题,因为我只需要处理Fortran代码中的Fortran文件,其中额外的信息是必要的,但是不可见.

但是如何在Fortran中打开一个平面的二进制文件?

在过去,我可以通过这样的方式使用Fortran打开Fortran二进制文件:

open(id,file=file_name,status='old',
     +     form='unformatted',access='direct',recl=4,iostat=ok)
      if (ok .ne. 0) then
        write(1,20) id,ok,file_name
                else
        write(1,21) id,file_name
Run Code Online (Sandbox Code Playgroud)

但是,对于没有Fortran标头信息的平面二进制文件,这会如何变化?更重要的是,这里是一个很好的链接更详细地描述这些条款:status,form,access,recl

binary file-io fortran fortran77

7
推荐指数
2
解决办法
3万
查看次数

读取由Python代码创建的Fortran中的二进制文件

我有一个使用Python代码创建的二进制文件.此代码主要编写一系列任务来预处理一组数据文件.我现在想在Fortran中读取这个二进制文件.二进制文件的内容是简单格式的点坐标,例如:点数,x0,y0,z0,x1,y1,z1,....

这些二进制文件是使用numpy中的'tofile'函数创建的.到目前为止,我在Fortran中有以下代码:

integer:: intValue
double precision:: dblValue
integer:: counter
integer:: check
open(unit=10, file='file.bin', form='unformatted', status='old', access='stream')

counter = 1

do 

  if ( counter == 1 ) then
    read(unit=10, iostat=check) intValue
    if ( check < 0 ) then
      print*,"End Of File"
      stop
    else if ( check > 0 ) then
      print*, "Error Detected"
      stop
    else if ( check == 0 ) then
      counter = counter + 1
      print*, intValue
    end if
  else if ( counter > 1 ) then
    read(unit=10, iostat=check) …
Run Code Online (Sandbox Code Playgroud)

python fortran binaryfiles

7
推荐指数
1
解决办法
1031
查看次数

在gnuplot上查看来自fortran的二进制输出

所以,我用fortran创建了一个二进制文件,使用类似的东西:

open (3,file=filename,form="unformatted",access="sequential")
write(3) matrix(i,:)
Run Code Online (Sandbox Code Playgroud)

我理解它的方式,fortran在文件的两端填充4个字节的文件,其余的只是我想要的数据(在这种情况下,1000个双打的列表).

我想用gnuplot读取这个,但是,我不知道如何让gnuplot跳过第一个和最后4个字节,并将其余部分读作双打.在这方面,文档不是很有用.

谢谢

fortran binaryfiles gnuplot binary-data

6
推荐指数
3
解决办法
5084
查看次数

Fortran 中的 Open 语句

我对 fortran 的 open 命令有疑问。

OPEN (UNIT = , FILE=file-name, ACCESS=access, FORM=form, RECL=recl)`
Access = sequential, direct
FORM=formatted, unformatted 
Run Code Online (Sandbox Code Playgroud)

reclis 是文件的记录长度(以字节为单位)

我尝试搜索很多,但无法理解顺序或直接访问、格式化或未格式化文件、文件记录长度的含义。有人可以解释一下这些术语的含义吗?

fortran gfortran

3
推荐指数
1
解决办法
3677
查看次数

在python中读取二进制数据文件进行分析

我使用 Fortran 按以下格式将数据写入二进制文件

open(unit=99,form='unformatted',status='unknown')
do i=1,N
write(99) (i),(A(i)),(B(i))
enddo
close(99)
Run Code Online (Sandbox Code Playgroud)

这里,AB是双精度数组。如何在python中读取这个二进制数据文件?

PS:到目前为止,我尝试了以下步骤来读取数据。

with open('fort.99', 'rb') as binfile:
    data=binfile.read()
Run Code Online (Sandbox Code Playgroud)

虽然文件读取成功,但我无法使用numpy这些数据的功能,这是我大多数分析的首选。

python fortran numpy binary-data

3
推荐指数
1
解决办法
2143
查看次数

如何在C中读取fortran二进制文件?

我有一个由fortran代码生成的二进制文件.该文件包含一系列双精度数.我需要在我的C程序中打开它,然后像通常的数组一样使用它.

我该怎么做?

二进制文件中如何表示double类型?

c fortran binaryfiles

2
推荐指数
1
解决办法
2959
查看次数

使用MPI-IO编写Fortran格式的文件

我正在尝试使用OVERFLOW-PLOT3D q文件格式(在此定义:http ://overflow.larc.nasa.gov/files/2014/06/Appendix_A.pdf)保存一个解决方案。对于单个网格,基本上是

READ(1) NGRID
READ(1) JD,KD,LD,NQ,NQC
READ(1) REFMACH,ALPHA,REY,TIME,GAMINF,BETA,TINF, &
        IGAM,HTINF,HT1,HT2,RGAS1,RGAS2, &
        FSMACH,TVREF,DTVREF
READ(1) ((((Q(J,K,L,N),J=1,JD),K=1,KD),L=1,LD),N=1,NQ)    
Run Code Online (Sandbox Code Playgroud)

所有变量都是双精度数字,但NGRID,JD,KD,LD,NQ,NQC和IGAM是整数。我需要使用MPI-IO导出解决方案。如果我仅用一个处理器做一个非常简单的示例,以下代码将不起作用,但是我不明白为什么。

call mpi_file_open( mpi_comm_world, fileOut, mpi_mode_wronly + mpi_mode_create, &
                  mpi_info_null, mpi_fh, ierr )
offset = 0
call mpi_file_seek( mpi_fh, offset, mpi_seek_set, ierr )
call mpi_file_write( mpi_fh, (/NGRID,JD,KD,LD,NQ,NQC/), 6, mpi_integer, mstat, ierr )
call mpi_file_write( mpi_fh, (/REFMACH,ALPHA,REY,TIME,GAMINF,BETA,TINF/), 7, mpi_double_precision, mstat, ierr )
call mpi_file_write( mpi_fh, IGAM, 1, mpi_integer, mstat, ierr )
call mpi_file_write( mpi_fh, (/HTINF,HT1,HT2,RGAS1,RGAS2,FSMACH,TVREF,DTVREF/), 8, mpi_double_precision, mstat, ierr )

call mpi_file_write( mpi_fh, Q, NQ*JD*KD*LD, …
Run Code Online (Sandbox Code Playgroud)

io fortran mpi mpi-io

2
推荐指数
1
解决办法
1521
查看次数

标签 统计

fortran ×7

binaryfiles ×3

binary-data ×2

python ×2

binary ×1

c ×1

file-io ×1

fortran77 ×1

gfortran ×1

gnuplot ×1

io ×1

mpi ×1

mpi-io ×1

numpy ×1