24小时热门版块排行榜    

查看: 783  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zhaoxyah

铁杆木虫 (著名写手)

[求助] fortran 主程序调用文件的问题 已有1人参与

fortran程序(龙贝格求积法)中主程序如下,现在问题是我想调用文件u0.dat中的数据来带入方程计算,程序运行总是出现问题(问题应该出在对u0.dat的调用上),请各位帮忙指导 修正,谢谢
               DOUBLE PRECISION F,A,B,S,faiw,u0(36)
        open(1,file='u0.dat',status='old')
               open(3,file='s.dat')
        do 20 i=1,36
        read(1,10)u0(i)
        u0=u0(i)
        faiw=-0.252038D+01
        A=faiw
        B=0
        EPS=0.000001
        CALL FROMB(A,B,F,EPS,S,u0)
        WRITE(3,10) S
20    continue
10        FORMAT(1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6)
        END
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoxyah

铁杆木虫 (著名写手)

引用回帖:
2楼: Originally posted by qchem at 2015-05-25 15:02:16
到底出什么错误你也不说,就不好判断了

或许问题是出在格式输入上

很抱歉,我以为别人能看懂,现在我把相关信息附下,如有时间麻烦帮看,谢谢,不管怎样,都非常感谢你
运行结果显示为        forrtl: severe <157>: program exception - access violation, 具体程序如下
{若主程序中不调用文件u0.dat,程序可以运行,现在是我想调用文件u0.dat, 我想应该出在u0.dat 这个文件的调用上, u0.dat 是36行1列}

SUBROUTINE FROMB(A,B,F,EPS,T,u0)
        DIMENSION Y(10)
        DOUBLE PRECISION A,B,F,T,Y,H,P,S,Q,u0
        H=B-A
        Y(1)=H*(F(A)+F(B))/2.0
        M=1
        N=1
10        P=0.0
        DO 20 I=0,N-1
20        P=P+F(A+(I+0.5)*H)
        P=(Y(1)+H*P)/2.0
        S=1.0
        DO 30 K=1,M
          S=4*S
          Q=(S*P-Y(K))/(S-1)
          Y(K)=P
          P=Q
30        CONTINUE
        IF ((ABS(Q-Y(M)).GE.EPS).AND.(M.LE.9)) THEN
          M=M+1
          Y(M)=Q
          N=N+N
          H=H/2.0
          GOTO 10
        END IF
        T=Q
        RETURN
        END


        EXTERNAL F
       
      DOUBLE PRECISION F,A,B,S,faiw,u0(36)
        open(1,file='u0.dat',status='old')
               open(3,file='s.dat')
        do 20 i=1,36
        read(1,10)u0(i)
        u0=u0(i)
        faiw= -0.221612D+01  
        A=faiw
        B=0
        EPS=0.000001
        CALL FROMB(A,B,F,EPS,S,u0)
        WRITE(3,10) S
20    continue
10        FORMAT(1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6)
        END

      
        FUNCTION F(X,u0)
        DOUBLE PRECISION F,X,miu,gama,n10,n20,faiw,u0,z2,e0,m21,nn
       
        nn=10.0
        m21=1.0
        miu=1836.0
         n20=   0.200000D+00

          faiw=  -0.221612D+01
          n10=   0.404108D+00
          

        gama=0.2
        z2=3.0
        e0=0.01
        F=1.0/sqrt(2.0*(exp(x)-1.0+
     * gama/(1.0-gama)*(n10*u0+z2*n20*u0)*sqrt(2.0/miu)*(sqrt(x
     * -faiw+0.5*nn*nn/miu)-sqrt(-faiw+0.5*nn*nn/miu))
     * +n10*u0*u0*(sqrt(1.0-2.0*x/(u0*u0))-1.0)+
     * n20*u0*u0*m21*(sqrt(1.0
     * -2.0*z2*x*m21/(u0*u0))-1.0))+e0*e0)

        RETURN
        END
3楼2015-05-26 08:37:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

qchem

铁杆木虫 (著名写手)


【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
zhaoxyah: 金币+50 2015-05-26 08:37:14
到底出什么错误你也不说,就不好判断了

或许问题是出在格式输入上

[ 发自小木虫客户端 ]
2楼2015-05-25 15:02:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

flyoversea

铁虫 (初入文坛)

10        FORMAT(1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6) 是调用格式为X行6列的数据与u0.dat 是36行1列的数据格式不对应。
4楼2015-09-22 11:14:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoxyah

铁杆木虫 (著名写手)

引用回帖:
4楼: Originally posted by flyoversea at 2015-09-22 11:14:40
10        FORMAT(1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6,1X,D15.6) 是调用格式为X行6列的数据与u0.dat 是36行1列的数据格式不对应。

谢谢
5楼2015-09-22 14:29:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见