Fortran Coder

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

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

[复制链接]

16

帖子

1

主题

0

精华

入门

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

16

帖子

1

主题

0

精华

入门

F 币
73 元
贡献
36 点
板凳
发表于 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-5-8 03:23

Powered by Tencent X3.4

© 2013-2024 Tencent

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