24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 943  |  回复: 21
当前主题已经存档。

tpp001

金虫 (著名写手)

[交流] 【求助】新手请教一段程序的疑问....【已完结】

我的疑问是,在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 ]
回复此楼

» 猜你喜欢

迷茫在知识的海洋里,需要你的指导。thankyou
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjdg

版主 (知名作家)

优秀版主


小木虫(金币+0.5):给个红包,谢谢回帖交流
努力学习!以正当途径!获得需要的知识!
2楼2009-11-24 12:43:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by tpp001 at 2009-11-24 09:25:
我的疑问是,在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个坐标,这样输出可以 ...

很显然不行,i=1的时候,你仅仅读入了对应第一个原子的信息,何来i=2?。
3楼2009-11-24 16:49:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)


小木虫(金币+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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★ ★ ★ ★ ★
senlia(金币+6,VIP+0):辛苦! 11-24 18:18
引用回帖:
Originally posted by tpp001 at 2009-11-24 09:25:
我的疑问是,在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个坐标,这样输出可以 ...

看你的样子,是要分类空间中的原子,仿照你的思路,给你写了一个,你可以参考一下。。。
5楼2009-11-24 17:06:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

引用回帖:
Originally posted by maomao1210 at 2009-11-24 17:04:
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 ...

首先,要谢谢你的回复,可是我是新手,真是么有看懂你写的,能不能给说说的你的思路好吗?很着急!!!
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
迷茫在知识的海洋里,需要你的指导。thankyou
6楼2009-11-24 21:03:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

我的输入文件的部分内容是这样的

我的输入文件中共有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
迷茫在知识的海洋里,需要你的指导。thankyou
7楼2009-11-24 21:16:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1,VIP+0):辛苦了! 11-25 09:12
nono2009(金币+1,VIP+0):Thanks for adding "emuch". :cool: 11-25 10:13
引用回帖:
Originally posted by tpp001 at 2009-11-24 21:16:
我的输入文件中共有2500个构象,每一个构象由一个溶质分子(包含18个原子)和1500个CO2分子组成,我想让构象中只要CO2分子中的C原子满足某一个条件,就输出这个CO2分子中的3个原子的坐标.....

cinna-co2mix
4518
...

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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

你好,谢谢你的帮忙,可是我又出问题了.

引用回帖:
Originally posted by maomao1210 at 2009-11-25 09:10:

      
       
        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.g ...

谢谢你帮忙,根据你的提示,我把我的程序给改了一下,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
迷茫在知识的海洋里,需要你的指导。thankyou
9楼2009-11-25 11:08:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

我自己感觉可能是定义数组integer atomindex(500),这里出了问题,因为我不知道这个数组的大小,我就自己定义了一个大小为500的数组,这个数组是用来存储每一个构想中 符合条件的原子的序号的,大小肯定够用.我不知道这样行不行.请大家帮忙呀.....................
迷茫在知识的海洋里,需要你的指导。thankyou
10楼2009-11-25 17:28:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tpp001 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 070305高分子化学与物理 304分求调剂 +5 c297914 2026-03-28 5/250 2026-03-28 20:37 by llc239
[考研] 0856材料化工调剂 总分330 +11 zhubinhao 2026-03-27 11/550 2026-03-28 20:22 by 418490947
[考研] 压国家一区线,求导师收留,有恩必谢! +7 迷人的哈哈 2026-03-28 7/350 2026-03-28 16:47 by 催化大白
[考研] 085600,材料与化工321分求调剂 +9 大馋小子 2026-03-28 9/450 2026-03-28 14:56 by 神马都不懂
[考研] 调剂求院校招收 +4 鹤鲸鸽 2026-03-28 4/200 2026-03-28 13:38 by 唐沐儿
[考研] 0856求调剂 +11 zhn03 2026-03-25 12/600 2026-03-28 13:32 by 唐沐儿
[考研] 一志愿哈尔滨工业大学材料与化工方向336分 +8 辰沐5211314 2026-03-26 8/400 2026-03-28 11:25 by xuxiang
[考研] 085405 考的11408求各位老师带走 +3 Qiu学ing 2026-03-28 3/150 2026-03-28 09:19 by 乐呵呵的追梦人
[考研] 291求调剂 +6 HanBeiNingZC 2026-03-24 6/300 2026-03-28 07:55 by baoball
[考研] 0703化学/290求调剂/本科经历丰富/工科也可 +9 丹青奶盖 2026-03-26 10/500 2026-03-28 07:45 by barnett0632
[考研] 一志愿郑大085600,310分求调剂 +5 李潇可 2026-03-26 5/250 2026-03-27 11:14 by 不吃魚的貓
[考研] 材料学硕,求调剂 6+5 糖葫芦888ll 2026-03-22 10/500 2026-03-27 08:18 by hypershenger
[考研] 349求调剂 +4 李木子啊哈哈 2026-03-25 4/200 2026-03-26 22:49 by fmesaito
[考研] 材料考研求调剂 +3 Dendel 2026-03-23 6/300 2026-03-26 17:51 by fmesaito
[考研] 一志愿上海交大生物与医药专硕324分,求调剂 +6 jiajunX 2026-03-22 6/300 2026-03-25 23:05 by licg0208
[考研] 318求调剂 +3 plum李子 2026-03-23 3/150 2026-03-25 09:42 by 雾散后相遇lc
[考研] 材料专硕331求调剂 +4 鲜当牛 2026-03-24 4/200 2026-03-24 15:58 by JourneyLucky
[考研] 材料/农业专业,07/08开头均可,过线就行 +3 呵唔哦豁 2026-03-23 4/200 2026-03-23 22:30 by 汪!?!
[考研] 293求调剂 +3 涛涛Wjt 2026-03-22 5/250 2026-03-22 22:21 by jiangpengfei
[考研] 280分求调剂 一志愿085802 +4 PUMPT 2026-03-22 7/350 2026-03-22 22:13 by 星空星月
信息提示
请填处理意见