24小时热门版块排行榜    

查看: 451  |  回复: 8
当前主题已经存档。

zyj8119

木虫 (著名写手)

[交流] 【求助】大家帮我看一下这个程序的错误 已有1人参与

program main
        parameter (natom0=18331,nN=5000)
        character atomname*2,nname(3)*3
        integer i,j
        real coor(natom0,3),xn,yn,zn,n(natom0,3)
        real dl
        open(10,file='1.pdb',status='old')
        if((i.le.natom0).and.(i.ge.1))then
        read(10,*)i,atomname,coor(i,1),coor(i,2),coor(i,3)
      end if
      close (10)
        do 25 i=1,nN
         do 26 j=1,3
         n(i,j)=0
26    continue
25    continue

   

      do 30 i=1,nN
50          xn=64.185*RAN2(INUM)
          yn=149.764*RAN2(INUM)
          zn=42.79*RAN2(INUM)
         do 40 j=1,natom0
         dl=sqrt((xn-coor(j,1))**2+(yn-coor(j,2))**2+(zn-coor(j,3))**2)
      if (dl.lt.0.15) goto 50
40        continue
            
        if(i.ge.1)then
         do 60 k=1,i
         dl=sqrt((xn-n(k,1))**2+(yn-n(k,2))**2+(zn-n(k,3))**2)
      if(dl.lt.0.15) goto 50
60    continue
      end if
      
             n(i,1)=xn
        n(i,2)=yn
        n(i,3)=zn

30        continue

        do 110 i=1,nN
         do 120 j=1,3
        nname(1)='N'
        nname(2)='N'
        nname(3)='N'
120   continue
110   continue
     
      open(60,file='2.pdb',access='append')
        do 100 j=1,3
      write(60,600)i,nname(j),n(i,j)
        write(60,600)i,atomname,coor(i,j)
100        continue
600   format(1X,I3,A2,3F8.3)

      close(60)
        end


        FUNCTION RAN2(INUM)
        INTEGER idum,IM1,IM2,IMM1,IA1,IA2,IQ1,IQ2,IR1,IR2,NTAB,NDIV
        REAL ran2,AM,eps,RNMX
        PARAMETER(IM1=214783563,IM2=214783399,AM=1./IM1,IMM1=IM1-1,
     *IA1=40014,IA2=40692,IQ1=53668,IQ2=52774,IR1=12211,IR2=3791,
     *NTAB=32,NDIV=1+IMM1/NTAB,EPS=1.2E-7,RNMX=1.-EPS)
        INTEGER idum2,j,k,iv(NTAB),iy
         SAVE iv,iy,idum2
         DATA idum2/123456789/,iv/NTAB*0/,iy/0/
        if(idum.le.0)then
        idum=max(-idum,1)
        idum2=idum
        do 11 j=NTAB+8,1,-1
         k=idum/iq1
        idum=IA1*(idum-k*IQ1)-k*IR1
        if(idum.lt.0)idum=idum+IM1
        if(j.le.NTAB)iv(j)=idum
11     continue
       iy=iv(1)
        end if
        k=idum/IQ1
        idum=IA1*(idum-k*IQ1)-k*IR1
        if(idum.lt.0)idum=idum+IM1
        k=idum2/IQ2
        idum2=IA2*(idum2-k*IQ2)-k*IR2
        if(idum2.lt.0)idum2=idum2+IM2
        j=1+iy/NDIV
        iy=iv(j)-idum2
        iv(j)=idum
        if(iy.lt.1)iy=iy+IMM1
        ran2=min(AM*iy,RNMX)
        return
        END
说的是数组越界,在iy=iv(j)-idum2这里,使用的是COMPAQ VISUAL FORTRAN的DEBUGGING 调试的,输入文件的格式是
1        SI        38.349        21.095        16.446
2        O        30.974        20.423        14.478
3        O        34.674        13.2        5.204
4        SI        33.557        9.684        4.419
5        O        32.251        18.364        8.928
6        O        33.171        11.24        4.572
7        O        32.016        12.941        0.731
8        SI        36.701        18.416        16.43
9        O        27.251        20.294        2.714
10        O        30.31        15.536        13.347
11        O        32.387        5.65        15.653
12        SI        37.202        20.618        21.333
13        O        28.179        16.802        6.719
14        O        30.904        19.77        10.618
15        O        30.236        13.134        20.145
回复此楼
好好学习,天天向上。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

能编译通过,但是运行不出来
好好学习,天天向上。
2楼2010-03-27 21:21:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
请把错误一并贴上来,帮助分析。
3楼2010-03-29 14:32:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wanjj

木虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
请问RAN2(INUM)中参数INUM是干什么的?
在下才疏学浅,请多多指教了。
4楼2010-04-01 22:25:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

引用回帖:
Originally posted by wanjj at 2010-04-01 22:25:46:
请问RAN2(INUM)中参数INUM是干什么的?

调用子程序的参数。。
好好学习,天天向上。
5楼2010-04-02 00:36:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

figgers

铜虫 (初入文坛)

★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1):谢谢参与应助! 2010-04-03 15:19
wangen994(金币+2):感谢参与应助 2010-04-03 15:20
wangen994(金币+2):活动期间内额外奖励 2010-04-03 15:21
这么几行程序,就单步一步步看就是了,肯定是j超过32了或者小于1了
btw: 这个程序的风格太糟糕了. 三十年前的风格啊...
如果整个工程就这么些程序,完全可以用90格式写的清清楚楚,跟C一样的
6楼2010-04-03 14:44:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

引用回帖:
Originally posted by figgers at 2010-04-03 14:44:10:
这么几行程序,就单步一步步看就是了,肯定是j超过32了或者小于1了
btw: 这个程序的风格太糟糕了. 三十年前的风格啊...
如果整个工程就这么些程序,完全可以用90格式写的清清楚楚,跟C一样的

兄弟,我是新手,以后还请多多指教,我的QQ是675096471.
好好学习,天天向上。
7楼2010-04-03 23:29:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

jjdg:引用帖子或直接PM可以更快获得答复! 2010-04-03 23:47
j超过32了或者小于1了
是什么意思???
好好学习,天天向上。
8楼2010-04-03 23:29:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

引用回帖:
Originally posted by figgers at 2010-04-03 14:44:10:
这么几行程序,就单步一步步看就是了,肯定是j超过32了或者小于1了
btw: 这个程序的风格太糟糕了. 三十年前的风格啊...
如果整个工程就这么些程序,完全可以用90格式写的清清楚楚,跟C一样的

肯定是j超过32了或者小于1了
?什么意思?
好好学习,天天向上。
9楼2010-04-04 09:18:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyj8119 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见