24小时热门版块排行榜    

查看: 806  |  回复: 21
当前主题已经存档。

journalemu

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
波不动(金币+1,VIP+0):欢迎新虫参与交流! 11-25 19:39
引用回帖:
Originally posted by tpp001 at 2009-11-25 17:28:
我自己感觉可能是定义数组integer atomindex(500),这里出了问题,因为我不知道这个数组的大小,我就自己定义了一个大小为500的数组,这个数组是用来存储每一个构想中 符合条件的原子的序号的,大小肯定够用.我不知道这 ...

太长了,执行的时候报什么错呀?可否截图看看?
11楼2009-11-25 19:21:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

引用回帖:
Originally posted by journalemu at 2009-11-25 19:21:

太长了,执行的时候报什么错呀?可否截图看看?

附件就是出错截图
迷茫在知识的海洋里,需要你的指导。thankyou
12楼2009-11-25 19:44:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主


余泽成(金币+1,VIP+0):辛苦了! 11-25 21:25
读到文件尾了,ms不是数组的问题。你可以设个断点看一下读数据的情况是否与你设想的一致。
13楼2009-11-25 19:59:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

通过设个断点,发现就是在最后这块出现问题了,不知道,应该怎么解决呢?
do q=1,p
r=atomindex(q)
write(20,*)'Oc',x(r-1),y(r-1),z(r-1)
write(20,*)'Oc',x(r),y(r),z(r)
write(20,*)'Oc',x(r+1),y(r+1),z(r+1)!输出这个Cb原子的坐标和Cb编号的前面的一个原子的坐标
enddo
迷茫在知识的海洋里,需要你的指导。thankyou
14楼2009-11-25 21:50:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

可能是红的那一行的read问题

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
波不动(金币+2,VIP+0):辛苦了! 11-25 22:35
do q=1,p
r=atomindex(p)
write(20,*)'Oa',x(r-1),y(r-1),z(r-1) !输出这个Cb原子的坐标和Cb编号的前面的一个原子的坐标。
write(20,*)'Cb',x(r),y(r),z(r)
write(20,*)'Oc',x(r+1),y(r+1),z(r+1)
read(1,*) xbox,ybox,zbox !读入盒子的大小
enddo
enddo
close(1)
end
15楼2009-11-25 22:23:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

输入文件中的数据少了、或者read的过多了。
16楼2009-11-25 22:25:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

引用回帖:
Originally posted by nono2009 at 2009-11-25 22:25:
输入文件中的数据少了、或者read的过多了。

我贴一个小一点的输入文件的格式
Generated by trjconv : Pure Mix - Yummie! (and some water) t= 1500.00000 !!这是体系的名字sysname
   14 !!这是体系的原子个数
    1BEN     C1    1   3.265   3.036   3.125
    1BEN     C2    2   3.170   2.942   3.118
    1BEN     C3    3   3.038   2.983   3.131
    1BEN     C4    4   3.006   3.118   3.139
    1BEN     C5    5   3.106   3.216   3.143
    1BEN     C6    6   3.238   3.173   3.129
    1BEN     H7    7   3.368   3.000   3.126
    1BEN     H8    8   3.197   2.836   3.111
    1BEN     H9    9   2.957   2.912   3.141
    1BEN    H10   10   2.902   3.146   3.143
    1BEN    H11   11   3.317   3.247   3.126
    1BEN    C12   12   3.083   3.361   3.139
    1BEN    O13   13   2.979   3.418   3.111
    1BEN    H14   14   3.171   3.424   3.162
   6.25808   6.25808   6.25808 !!这是盒子的大小
Generated by trjconv : Pure Mix - Yummie! (and some water) t= 1500.19995
   14
    1BEN     C1    1   3.267   3.036   3.135
    1BEN     C2    2   3.173   2.940   3.131
    1BEN     C3    3   3.041   2.983   3.130
    1BEN     C4    4   3.004   3.117   3.124
    1BEN     C5    5   3.105   3.213   3.125
    1BEN     C6    6   3.237   3.172   3.135
    1BEN     H7    7   3.371   3.009   3.124
    1BEN     H8    8   3.196   2.836   3.109
    1BEN     H9    9   2.957   2.914   3.123
    1BEN    H10   10   2.904   3.152   3.101
    1BEN    H11   11   3.324   3.237   3.147
    1BEN    C12   12   3.074   3.358   3.109
    1BEN    O13   13   2.983   3.427   3.147
    1BEN    H14   14   3.161   3.406   3.059
   6.25808   6.25808   6.25808
迷茫在知识的海洋里,需要你的指导。thankyou
17楼2009-11-25 22:40:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

是不是该这样?

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+2,VIP+0):辛苦! 11-25 23:30
Before
do q=1,p
r=atomindex(p)
write(20,*)'Oa',x(r-1),y(r-1),z(r-1) !输出这个Cb原子的坐标和Cb编号的前面的一个原子的坐标。
write(20,*)'Cb',x(r),y(r),z(r)
write(20,*)'Oc',x(r+1),y(r+1),z(r+1)
read(1,*) xbox,ybox,zbox !读入盒子的大小
enddo
enddo
close(1)

After
do q=1,p
r=atomindex(p)
write(20,*)'Oa',x(r-1),y(r-1),z(r-1) !输出这个Cb原子的坐标和Cb编号的前面的一个原子的坐标。
write(20,*)'Cb',x(r),y(r),z(r)
write(20,*)'Oc',x(r+1),y(r+1),z(r+1)
enddo
read(1,*) xbox,ybox,zbox !读入盒子的大小
enddo
close(1)
18楼2009-11-25 22:51:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

哈哈,的确是"read(1,*) xbox,ybox,zbox !读入盒子的大小" 这个的位置问题..
但是我还是很奇怪,为什么这个位置要放在下面程序的红色这个位置才行,而放在兰色这个位置就不行呢???
全程序如下...

program getdistance
implicit none
integer istep,nstep !构象的个数
integer natom !每个构象中原子的总数
character*80 sysname,molname,atomname !体系的名字,分子的名字,原子的名字
integer i,p,q,r,atomindex(500) !定义了一个存编号的数组
integer index !原子序号
real x(4514),y(4514),z(4514) !原子坐标
real xbox,ybox,zbox !盒子的大小
real j,k,m,n,sum
nstep=2500 !共有2500个构象
open(20,file='co2ben.txt',status='unknown') !打开一个输出文件
open(1,file='benz-7.gro',status='unknown') !打开co2.gro文件,并读取
do istep=1, nstep
p=0
read(1,*) sysname
read(1,*) natom

do i=1,natom
read(1,*) molname,atomname,index,x(i),y(i),z(i)
if (atomname .eq.'Cb') then !原子的名字atomname 为Cb的原子的坐标满足与空间中一点(2.615,2.572,2.601)的距离小于4
j=abs(x(i)-3.019)**2
k=abs(y(i)-3.426)**2
m=abs(z(i)-3.129)**2
n=j+k+m
sum=sqrt(n)
if (sum < 0.56) then
p=p+1
atomindex(p)=i
end if
end if
enddo
read(1,*) xbox,ybox,zbox !读入盒子的大小do q=1,p
r=atomindex(p)
write(20,*)'Oa',x(r-1),y(r-1),z(r-1) !输出这个Cb原子的坐标和Cb编号的前面的一个原子的坐标。
write(20,*)'Cb',x(r),y(r),z(r)
write(20,*)'Oc',x(r+1),y(r+1),z(r+1)
read(1,*) xbox,ybox,zbox !读入盒子的大小
enddo
enddo
close(1)
end
迷茫在知识的海洋里,需要你的指导。thankyou
19楼2009-11-25 22:53:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

因为如果p>1,你的兰色的一行会被读p遍,而文件中的每一个block中对应的数据只有一行可读。

[ Last edited by nono2009 on 2009-11-25 at 22:57 ]
20楼2009-11-25 22:53:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tpp001 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见