24小时热门版块排行榜    

查看: 457  |  回复: 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的回帖

holmescn

金虫 (正式写手)


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

zyj8119

木虫 (著名写手)

能编译通过,但是运行不出来
好好学习,天天向上。
2楼2010-03-27 21:21:34
已阅   回复此楼   关注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的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见