查询未格式化的文件fortran

时间:2018-08-02 12:31:05

标签: fortran intel-fortran

我有一个Fortran代码,该代码生成未格式化的文件(.checkpoint)。在相同的代码中,如果未格式化的文件存在,我尝试在代码后面创建它之前为变量分配一个值。这是代码的一部分:

    integer :: nt, irec1
    logical OK

    nt = 1
    a = 0
    inquire (file='.checkpoint', exist=OK)
    if (OK) then
    a = 1
    end if

    if(a .eq. 1) then
    inquire (iolength = irec1) nt
    open(unit=255, file='.checkpoint', status='unknown', form='unformatted', access='direct', recl=irec1)
    read(255,rec=1) nt
    go to 315
    end if

!do something here
315 nt = 2

    !Saving checkpoint file
    inquire (iolength = irec1) nt
    open(unit=255, file='.checkpoint', status='unknown', form='unformatted', access='direct', recl=irec1)
    write(255,rec=1) nt

    stop
    end

对于第一次运行,由于没有.checkpoint文件,因此 OK 应该为false,且a = 0。如果使用ifort编译器运行代码,则会收到错误消息:

    forrtl: severe (36): attempt to access non-existent record, unit 255 ~/directory/.checkpoint

我的问题是如何首先查询是否存在未格式化的文件。如果存在,则分配a =1。如果文件已格式化,则上述代码可以正常工作。该代码的主要目的是重新开始分子动力学模拟的计算。

0 个答案:

没有答案