| 查看: 787 | 回复: 21 | |||
| 当前主题已经存档。 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[交流]
【求助】新手请教一段程序的疑问....【已完结】
|
|||
|
我的疑问是,在do i=1,natom, read (1,*) molname,atomname,index,x(i),y(i),z(i),这里do 做 一个循环,我后面的输出要求是输出,x(i-1),y(i-1),z(i-1), x(i),y(i),z(i),x(i+1),y(i+1),z(i+1)这3个坐标,这样输出可以吗?? open(1,file='benz-22.gro',status='unknown') !打开benz-co2.gro文件,并读取 do istep=1, nstep 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 r2=(x(i)-2.623)**2+(y(i)-2.554)**2 if (r2 .LT. 0.01932) then h2=(z(i)-2.608)**2 if (h2 .LT. 0.5776 .AND. z(i) .NE. 2.608) then open(20,file='aromaticco2.txt') write(20,*)'Oa',x(i-1),y(i-1),z(i-1) !输出这个Cb原子的坐标和Cb编号的前面和后面的一个原子的坐标。 write(20,*)'Cb',x(i),y(i),z(i) write(20,*)'Oc',x(i+1),y(i+1),z(i+1) [ Last edited by 波不动 on 2009-11-25 at 23:52 ] |
» 猜你喜欢
博士申请都是内定的吗?
已经有7人回复
读博
已经有5人回复
之前让一硕士生水了7个发明专利,现在这7个获批发明专利的维护费可从哪儿支出哈?
已经有5人回复
博士读完未来一定会好吗
已经有29人回复
投稿精细化工
已经有4人回复
高职单位投计算机相关的北核或SCI四区期刊推荐,求支招!
已经有4人回复
导师想让我从独立一作变成了共一第一
已经有9人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
小论文投稿
已经有3人回复

|
首先,要谢谢你的回复,可是我是新手,真是么有看懂你写的,能不能给说说的你的思路好吗?很着急!!! open(1,file='benz-22.gro',status='unknown') !打开benz-co2.gro文件,并读取 do istep=1, nstep read(1,*) sysname read(1,*) natom I_emuch=1 do i=1, natom read(1,*) molname,atomname,index,x(i),y(i),z(i) if (atomname .eq.'Cb') then r2=(x(i)-2.623)**2+(y(i)-2.554)**2 if (r2 .LT. 0.01932) then h2=(z(i)-2.608)**2 if (h2 .LT. 0.5776 .AND. z(i) .NE. 2.608) then Index_emuch(I_emuch)=i !这里是什么意思??index_emuch是一个数组吗? endif endif endif I_emuch=I_emuch+1 Enddo Do J_emuch=1,I_emuch open(20,file='aromaticco2.txt') if(ii.gt.1)write(20,*)'Oa',x(ii-1),y(ii-1),z(ii-1) !输出这个Cb原子的坐标和Cb编号的前面和后面的一个原子的坐标。 write(20,*)'Cb',x(ii),y(ii),z(ii) write(20,*)'Oc',x(ii+1),y(ii+1),z(ii+1) !这里的ii 是怎么得到的??? Enddo Enddo |

6楼2009-11-24 21:03:11
我的输入文件的部分内容是这样的
|
我的输入文件中共有2500个构象,每一个构象由一个溶质分子(包含18个原子)和1500个CO2分子组成,我想让构象中只要CO2分子中的C原子满足某一个条件,就输出这个CO2分子中的3个原子的坐标..... cinna-co2mix 4518 1CIN C1 1 3.374 3.315 3.175 1CIN C2 2 3.468 3.213 3.177 1CIN C3 3 3.422 3.082 3.177 1CIN C4 4 3.285 3.054 3.176 1CIN C5 5 3.187 3.155 3.177 1CIN C6 6 3.237 3.288 3.177 1CIN H7 7 3.410 3.418 3.174 1CIN H8 8 3.574 3.236 3.178 1CIN H9 9 3.495 3.002 3.177 1CIN H10 10 3.257 2.949 3.176 1CIN H11 11 3.171 3.373 3.180 2CIN C12 12 3.042 3.118 3.176 2CIN H13 13 3.024 3.011 3.176 2CIN C14 14 2.929 3.193 3.176 2CIN H15 15 2.928 3.339 3.177 3CIN C16 16 2.826 3.152 3.176 3CIN H17 17 2.809 3.042 3.176 3CIN O18 18 2.726 3.221 3.176 4DRG Oa 19 1.388 0.106 0.427 4DRG Cb 20 1.274 0.106 0.427 4DRG Oc 21 1.159 0.105 0.426 5DRG Oa 22 1.388 0.106 0.856 5DRG Cb 23 1.274 0.106 0.855 5DRG Oc 24 1.159 0.105 0.854 6DRG Oa 25 1.388 0.106 1.284 6DRG Cb 26 1.274 0.106 1.283 6DRG Oc 27 1.159 0.105 1.283 |

7楼2009-11-24 21:16:21
你好,谢谢你的帮忙,可是我又出问题了.
|
谢谢你帮忙,根据你的提示,我把我的程序给改了一下,compile没有错误,但是execute program时,就不能运行,望帮我看看哪里有问题 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 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 |

9楼2009-11-25 11:08:08

10楼2009-11-25 17:28:54

12楼2009-11-25 19:44:03

14楼2009-11-25 21:50:17
|
我贴一个小一点的输入文件的格式 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 |

17楼2009-11-25 22:40:21
|
哈哈,的确是"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 |

19楼2009-11-25 22:53:06

22楼2009-11-25 22:59:38













回复此楼