Fortran Coder

查看: 1981|回复: 1
打印 上一主题 下一主题

[文件读写] 求助end of file

[复制链接]

3

帖子

2

主题

0

精华

新人

F 币
16 元
贡献
8 点
跳转到指定楼层
楼主
发表于 2023-2-22 08:27:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
求助各位大佬。本人是学生党,写论文需要出数据,刚开始接触fortran ,程序显示没有错误,但是运行到最后,就出现了问题。

程序本身是这样的
[Fortran] 纯文本查看 复制代码
!变荷载和温度下多元复合地基

implicit none
real rw,re,rs,H,Th1,Ew,Es        !尺寸参数
real a,b,T
real kh,kw,ks              !渗透性参数
real s,n,Y,C1,C2,Th                                     !压缩模量
real F,F1,F2,F3,M
real Fa,Tm1,Tm2,Tm3,Tm
real Pi                       !定义圆周率pai
real U                        !平均固结度
integer mm,mmE                !mm--循环变量,mmE--循环中止数
integer NN                    !为ut累积控制变量
real temp,utemp
!定义数组
real ut
dimension ut(0:100)

!打开数据文件
open(16,file='Input.dat',status='old')   
!读入数据
read(16,*) rw,re,rs,H,Th1
read(16,*) a,b,T
read(16,*) kh,kw,ks
read(16,*) Ew,Es

write(*,*) rw, re, rs,H,Th1
write(*,*) a,b,T
write(*,*) kh,kw,ks
write(*,*) Ew,Es
pause

!参数计算部分
Pi=3.141592654
n=re/rw
s=rs/rw
Y=Ew/Es
F1=(log(n/s)+(kh/ks)*log(s)-0.75)*(n*n/(n*n-1))
F2=(1-kh/ks)*(1-(s*s)/(4*n*n))*(s*s)/(n*n-1)
F3=(kh/ks)*(1/(n*n-1))*(1-1/(4*n*n))
F=F1+F2+F3


Th=0.0001

10 IF (Th.LE.100) THEN
      temp=0.0
          utemp=0.0
          U=0.0
          mmE=100

  IF (Th.LE.Th1) THEN
          DO mm=1,mmE
              ! temp=0.0

                   M=(2.0*mm-1.0)*Pi/2.0
                   C1=1/(a*T+b)
                   C2=(a*T+b)
Tm1=(4*kw*(n*n-1+Y)*C2)/(kh*n*n*(n*n-1))
Tm2=(H*H*C2)/(M*M)
Tm3=(F*re*re*kw)/(2.0*n*n*kh)
Tm=Tm1/(Tm2+Tm3)                !就是tao m

temp=1.0/(Tm*Th1)*2.0/(M*M)*(1-exp(-Tm*Th))
utemp=utemp+temp
          ENDDO
U=Th/Th1-Utemp       !原

         ELSEIF (Th.GE.Th1)        THEN
            DO mm=1,mmE
                   M=(2.0*mm-1.0)*Pi/2.0
Tm1=(4*kw*(n*n-1+Y)*C2)/(kh*n*n*(n*n-1))
Tm2=(H*H*C2)/(M*M)
Tm3=(F*re*re*kw)/(2.0*n*n*kh)
Tm=Tm1/(Tm2+Tm3)                !就是tao m
         temp=1.0/(Tm*Th1)*(2.0/(M*M))*(exp(Tm*(Th1-Th))-exp(-Tm*Th))
                 Utemp=Utemp+temp
ENDDO
               U=1.0-Utemp
ENDIF      
          !打开输出文件
          open(16,file='Output.dat',status='Old')
          write(16,*) Th,U

          IF (Th.LT.0.001) THEN                                       
                        Th=Th+0.0001
                        goto 10                                 
          ELSEIF(Th.LT.0.01) THEN
             Th=Th+0.001
                        goto 10         
          ELSEIF(Th.LT.0.1) THEN
                        Th=Th+0.01
                        goto 10         
          ELSEIF(Th.LT.1.0) THEN
                        Th=Th+0.1
                        goto 10       

          ELSEIF(Th.LT.10) THEN
                        Th=Th+1
                        goto 10          
          ELSE
                    Th=Th+10
          ENDIF
          GOTO 10
   ENDIF

END     ! 程序结束符号

B069AAA6-7673-4476-8AF1-E7F5BE5D6A63.png (7.08 KB, 下载次数: 141)

出现的问题

出现的问题
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

159

帖子

2

主题

1

精华

大师

Vim

F 币
961 元
贡献
469 点

规矩勋章

沙发
发表于 2023-2-22 09:15:59 | 只看该作者
http://fcode.cn/guide-36-2.html

Q2003: End-of-file during read
原因:这是读取文件时遇到了文件的结束。例如,代码要求数据有3行数据,而实际输入文件只有2行。在某些时候,甚至输入文件根本不存在或是空白文件。此外,数据文件缺失某些行某些列也是较大的可能。当然,也可能是循环读取文件时没控制住。比如想读100行,结果写错了,读了1000行。有时候,可能是文件路径错误,导致实际读取了另一个空白的文件。或者文件扩展名被隐藏了,比如读取 a.txt,但实际的文件名却是 a.txt.txt
解决:补足数据文件,或者修改代码使得读取的数据与实际数据文件一致。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-4-25 06:00

Powered by Tencent X3.4

© 2013-2024 Tencent

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