Fortran Coder

查看: 34923|回复: 10
打印 上一主题 下一主题

[文件读写] 老哥救救弟弟,程序报错forrtl: severe (24): end-of-file during read,

[复制链接]

7

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
28 点
跳转到指定楼层
楼主
发表于 2020-3-30 23:45:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 JackMa 于 2020-3-31 13:01 编辑

各位老哥,小弟我用FORTRAN读取一个txt文件,结果报错forrtl: severe (24): end-of-file during read,了,查了百度也没解决,我自己也看了我的代码,应该没问题啊,老哥们帮帮忙!



分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2020-3-31 09:21:01 | 只看该作者
如果你要持续等待文件是否可读可写。那么 Inquire 是无法实现的。
它只能判断是否存在,但存在可能无法读写(此时Abaqus还没有释放文件)
所以读取就可能失败。

比如好的办法是这样:
[Fortran] 纯文本查看 复制代码
Do
  open(222,file ='D:\ABAQUS job\FP2.txt',ioStat=k,action="readwrite",status="old")
  if(k==0) then
    read(222,*),a2,g2,n2
    close(222)
  end if  
End Do

7

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
28 点
板凳
 楼主| 发表于 2020-3-31 09:31:24 | 只看该作者
fcode 发表于 2020-3-31 09:21
如果你要持续等待文件是否可读可写。那么 Inquire 是无法实现的。
它只能判断是否存在,但存在可能无法读写 ...

谢谢老哥,我试试看

7

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
28 点
地板
 楼主| 发表于 2020-3-31 10:11:35 | 只看该作者
本帖最后由 JackMa 于 2020-3-31 13:03 编辑
fcode 发表于 2020-3-31 09:21
如果你要持续等待文件是否可读可写。那么 Inquire 是无法实现的。
它只能判断是否存在,但存在可能无法读写 ...

老哥,我按着你说的改了之后,之前的报错确实没有了,但ABAQUS一直不计算,是不是要在里面再加一个控制读取次数的限制?


7

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
28 点
5#
 楼主| 发表于 2020-3-31 10:54:23 | 只看该作者
fcode 发表于 2020-3-31 09:21
如果你要持续等待文件是否可读可写。那么 Inquire 是无法实现的。
它只能判断是否存在,但存在可能无法读写 ...

老哥,我又加了控制读取次数就解决了,感谢老哥帮忙,谢谢老哥,抱拳了

16

帖子

1

主题

0

精华

入门

F 币
73 元
贡献
36 点
6#
发表于 2020-8-19 17:57:40 | 只看该作者
fcode 发表于 2020-3-31 09:21
如果你要持续等待文件是否可读可写。那么 Inquire 是无法实现的。
它只能判断是否存在,但存在可能无法读写 ...

按照您指导的,我改了我的代码:
[Fortran] 纯文本查看 复制代码
      !只读入一次
      if (stepTime.eq.0) then
          
          !读入轴承力Fx数据
          do ix=1,10001
              open(11,file='D:\temp\xdata.txt',ioStat=krl,
     &        action="readwrite",status="old")
              if(krl==0) then
                  read(11,*)Fxm(ix,1),Fxm(ix,2)    !循环写入
                  close(11)
              end if
          end do
      
          !读入轴承力Fy数据
          do iy=1,10001
              open(11,file='D:\temp\ydata.txt',ioStat=krl,
     &        action="readwrite",status="old")
              if(krl==0) then
                  read(11,*)Fym(iy,1),Fym(iy,2)    !循环写入
                  close(11)
              end if
          end do
          
      end if


出现了新的报错信息:forrtl: severe (29): file not found, unit 11, file C:\Users\WANGZI~1\AppData\Local\Temp\WangZijia_Housing_21424\fort.11

想请教一下您什么问题

16

帖子

1

主题

0

精华

入门

F 币
73 元
贡献
36 点
7#
发表于 2020-8-19 18:09:04 | 只看该作者
我的思路其实很简答,仿真最开始,读入一个已经存在的txt,之后就不读了(之前方法比较笨,想着是每次abaqus调用子程序时都要读一遍这个txt,但是发现会报错forrtl: severe (24): end-of-file during read,所以正好优化一下只读一次)。麻烦大神帮我看看我上楼贴的代码正不正确。(我的txt里是10001行,2列的数据,代码前面也已经声明数组了)

213

帖子

2

主题

0

精华

宗师

F 币
2126 元
贡献
875 点

规矩勋章

8#
发表于 2020-8-20 02:01:54 | 只看该作者
1,你肯定在D:\temp\下有xdata.txt文件?根据你的出错,你的运行程序是在\Temp\WangZijia_Housing_21424\.
2,在你这段程序中,文件会被开关10001次,并且只有第一行数据会被读入。

213

帖子

2

主题

0

精华

宗师

F 币
2126 元
贡献
875 点

规矩勋章

9#
发表于 2020-8-20 02:08:48 | 只看该作者
另,在open行后加 & 作为续行标志。

16

帖子

1

主题

0

精华

入门

F 币
73 元
贡献
36 点
10#
发表于 2020-8-20 08:30:45 | 只看该作者
风平老涡 发表于 2020-8-20 02:01
1,你肯定在D:\temp\下有xdata.txt文件?根据你的出错,你的运行程序是在\Temp\WangZijia_Housing_21424\.
...

额,确实D:\temp\下又文件,这个反复检查过了。楼上这段代码是根据二楼的回答改的一版,不知道改的对不对。我原来的程序是:
[Fortran] 纯文本查看 复制代码
      !只读入一次
      if (stepTime.eq.0) then
          
          !读入轴承力Fx数据
          open(55,file='D:\temp\xdata.txt',status='old')
          do ix=1,10001
              read(55,*)Fxm(ix,1),Fxm(ix,2)    !循环写入
          end do
          close(55)
      
          !读入轴承力Fy数据
          open(22,file='D:\temp\ydata.txt',status='old')
          do iy=1,10001
              read(22,*)Fym(iy,1),Fym(iy,2)    !循环写入
          end do
          close(22)
          
      end if


这种情况,会报错:forrtl: severe (24): end-of-file during read, unit 55, file D:\temp\xdata.txt。网友说这是对同一个TXT多次读取导致的,但是我感觉设计的程序是只读了一次,就是在仿真刚开始的时候。不太懂abaqus是怎么调用.for的。我看到的说法是每个积分步起始时刻,他会释放steptime等参数给.for,然后子程序计算返回节点力(我的是vdload程序)
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-27 01:01

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表