| 查看: 799 | 回复: 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 ] |
» 猜你喜欢
实验室接单子
已经有3人回复
要不要辞职读博?
已经有5人回复
不自信的我
已经有10人回复
磺酰氟产物,毕不了业了!
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有10人回复
26申博(荧光探针方向,有机合成)
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有26人回复
2026年机械制造与材料应用国际会议 (ICMMMA 2026)
已经有4人回复
Cas 72-43-5需要30g,定制合成,能接单的留言
已经有8人回复
北京211副教授,35岁,想重新出发,去国外做博后,怎么样?
已经有8人回复

jjdg
版主 (知名作家)
- 程序强帖: 9
- 应助: 223 (大学生)
- 贵宾: 3.926
- 金币: 51003.4
- 红花: 238
- 帖子: 7227
- 在线: 474.2小时
- 虫号: 27000
- 注册: 2003-10-21
- 专业: 药物代谢与药物动力学
- 管辖: 程序语言
★
小木虫(金币+0.5):给个红包,谢谢回帖交流
小木虫(金币+0.5):给个红包,谢谢回帖交流

2楼2009-11-24 12:43:59
maomao1210
金虫 (正式写手)
- 程序强帖: 5
- 应助: 2 (幼儿园)
- 金币: 1431.3
- 散金: 242
- 红花: 16
- 沙发: 1
- 帖子: 991
- 在线: 441.5小时
- 虫号: 253215
- 注册: 2006-05-20
- 性别: MM
- 专业: 考古理论
3楼2009-11-24 16:49:36
maomao1210
金虫 (正式写手)
- 程序强帖: 5
- 应助: 2 (幼儿园)
- 金币: 1431.3
- 散金: 242
- 红花: 16
- 沙发: 1
- 帖子: 991
- 在线: 441.5小时
- 虫号: 253215
- 注册: 2006-05-20
- 性别: MM
- 专业: 考古理论
★
小木虫(金币+0.5):给个红包,谢谢回帖交流
小木虫(金币+0.5):给个红包,谢谢回帖交流
|
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 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) Enddo Enddo |
4楼2009-11-24 17:04:49
maomao1210
金虫 (正式写手)
- 程序强帖: 5
- 应助: 2 (幼儿园)
- 金币: 1431.3
- 散金: 242
- 红花: 16
- 沙发: 1
- 帖子: 991
- 在线: 441.5小时
- 虫号: 253215
- 注册: 2006-05-20
- 性别: MM
- 专业: 考古理论
5楼2009-11-24 17:06:02
|
首先,要谢谢你的回复,可是我是新手,真是么有看懂你写的,能不能给说说的你的思路好吗?很着急!!! 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
maomao1210
金虫 (正式写手)
- 程序强帖: 5
- 应助: 2 (幼儿园)
- 金币: 1431.3
- 散金: 242
- 红花: 16
- 沙发: 1
- 帖子: 991
- 在线: 441.5小时
- 虫号: 253215
- 注册: 2006-05-20
- 性别: MM
- 专业: 考古理论
★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1,VIP+0):辛苦了! 11-25 09:12
nono2009(金币+1,VIP+0):Thanks for adding "emuch". :cool: 11-25 10:13
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1,VIP+0):辛苦了! 11-25 09:12
nono2009(金币+1,VIP+0):Thanks for adding "emuch". :cool: 11-25 10:13
|
Implicit Real*8(A-H,O-Z) Character(Len=7) A_emuch Character(Len=2) B_emuch Dimension Index_emuch(1500),X(1500), +Y(1500),Z(1500),Inemuch(800) open(1,file='benz-22.gro',status='unknown') open(2,file='emuch.out',status='unknown') Do I=1,20 Read(1,*) EndDo I_emuch=1 J_emuch=0 Do While (.Not.Eof(1)) Read(1,*) A_emuch,Bemuch,Index_emuch(I_emuch),X(I_emuch) +,Y(I_emuch),Z(I_emuch) If(Mod(I_emuch,2).Eq.0) 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 J_emuch=J_emuch+1 Inemuch(J_emuch)=I_emuch endif endif EndIf I_emuch=I_emuch+1 EndDo Do Ij=1,J_emuch I=Inemuch(Ij) Write(2,*)Index_emuch(I-1),X(I-1) +,Y(I-1),Z(I-1) Write(2,*)Index_emuch(I),X(I) +,Y(I),Z(I) Write(2,*)Index_emuch(I+1),X(I+1) +,Y(I+1),Z(I+1) Enddo End |
8楼2009-11-25 09:10:59
你好,谢谢你的帮忙,可是我又出问题了.
|
谢谢你帮忙,根据你的提示,我把我的程序给改了一下,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












回复此楼