24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2026级博士研究生招生报考通知(长期有效)
查看: 560  |  回复: 7
当前主题已经存档。

tpp001

金虫 (著名写手)

[交流] 【求助】新手求助,写了一段关于空间中的2点的距离满足一点条件的程序老是出错

program get-atom-coordinate
implicit none
integer istep,nstep !构象的个数
integer natom !每个构象中原子的总数
character sysname,molname,atomname !体系的名字,分子的名字,原子的名字
integer i
integer index !原子序号
dimension x(4500),y(4500),z(4500)
real xbox,ybox,zbox !盒子的大小
real j,k,m,n,sum
nstep=250 !共有250个构象
open(1,file='co2.gro',status='unknown') !打开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)
enddo
read(1,*) xbox,ybox,zbox
if (atomname.eq.'Cb') then !原子的名字atomname 为Cb的原子的坐标满足与空间中一点(2.615,2.572,2.601)的距离小于4
j=abs(x(i)**2-2.615**2)
k=abs(y(i)**2-2.572**2)
m=abs(z(i)**2-2.601**2)
n=j+k+m
sum=sqrt(n)
if (sum < 4.0) then
open(2,file='co2ben.txt')
write(2,*)x(i-1),y(i-1),z(i-1),x(i),y(i),z(i) !输出这个Cb原子的坐标和Cb编号的前面的一个原子的坐标。
end if
end if
enddo
close(1)
end

上面的程序老是出错4个errors,请大家对应上面的注释和下面的输入文件帮 帮忙谢谢......下面是输入文件中的其中一个构象









Generated by trjconv : cinna-co2mix t= 1000.00000
4500
    4DRG     Oa    1   0.775   1.784   0.721
    4DRG     Cb    2   0.667   1.750   0.699
    4DRG     Oc    3   0.560   1.714   0.676
    5DRG     Oa    4   4.774   0.611   0.616
    5DRG     Cb    5   4.674   0.667   0.603
    5DRG     Oc    6   4.575   0.723   0.591
    6DRG     Oa    7   1.307   2.386   1.515
    6DRG     Cb    8   1.208   2.405   1.460
    6DRG     Oc    9   1.109   2.428   1.406
    7DRG     Oa   10   0.716   1.682   0.398
    7DRG     Cb   11   0.665   1.603   0.332
    7DRG     Oc   12   0.611   1.525   0.268
    8DRG     Oa   13   0.346   3.926   3.246
    8DRG     Cb   14   0.400   4.023   3.218
    8DRG     Oc   15   0.456   4.120   3.190
    9DRG     Oa   16   4.243   2.495   3.733
    9DRG     Cb   17   4.325   2.444   3.670
    9DRG     Oc   18   4.404   2.392   3.605
   10DRG     Oa   19   1.790   1.759   2.631
   10DRG     Cb   20   1.867   1.742   2.547
   10DRG     Oc   21   1.941   1.729   2.460
   11DRG     Oa   22   1.073   4.489   1.693
   11DRG     Cb   23   1.167   4.549   1.721
   11DRG     Oc   24   1.259   4.612   1.747
   12DRG     Oa   25   0.407   4.290   3.671
   12DRG     Cb   26   0.318   4.339   3.727
   12DRG     Oc   27   0.230   4.388   3.782
..................
回复此楼
迷茫在知识的海洋里,需要你的指导。thankyou
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

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

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1,VIP+0):谢谢应助! 11-4 17:53
是编译没通过吗?请把4个error信息也给出来看看。
引用回帖:
j=abs(x(i)**2-2.615**2)
k=abs(y(i)**2-2.572**2)
m=abs(z(i)**2-2.601**2)

这里是istep还是i?
2楼2009-11-04 17:03:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

nono2009(金币+0,VIP+0):但是你的这些i都不在循环内,其实都等于natom+1. 11-4 19:17
是i ,这里的 i 其实就是原子的编号,因为我一个构象里面有4500个原子。
istep是步数。。分子动力学每跑一步,就出来一个构象。。。。。
迷茫在知识的海洋里,需要你的指导。thankyou
3楼2009-11-04 17:44:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

出现的错误信息是:
D:\fortran\compile\getdistance.f90(20) : Error: This name does not have a type, and must have an explicit type.   [Z]
read(1,*) molname,atomname,index,x(i),y(i),z(i)
我觉得好象是没有定义x(i),y(i),z(i)把,不知道应该怎么定义他们,请大家指教
迷茫在知识的海洋里,需要你的指导。thankyou
4楼2009-11-04 21:35:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

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

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1,VIP+0):辛苦了! 11-4 23:09
你使用了implicit none,只定义了x,y,z的维数,并没有给出其类型(real)。可以将
dimension x(4500),y(4500),z(4500)
改为
real x(4500),y(4500),z(4500)
5楼2009-11-04 21:55:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

引用回帖:
Originally posted by nono2009 at 2009-11-4 21:55:
你使用了implicit none,只定义了x,y,z的维数,并没有给出其类型(real)。可以将
dimension x(4500),y(4500),z(4500)
改为
real x(4500),y(4500),z(4500)

谢谢,你的回复,我改了以后......没有错误信息出现,可是我运行以后没有得到输出文件呀..

这是我修改以后的....
program getdistance
implicit none
integer istep,nstep !构象的个数
integer natom !每个构象中原子的总数
character*80 sysname,molname,atomname !体系的名字,分子的名字,原子的名字
integer i
integer index !原子序号
real x(4500),y(4500),z(4500) !原子坐标
real xbox,ybox,zbox !盒子的大小
real j,k,m,n,sum

nstep=250 !共有250个构象

open(1,file='co2.gro',status='unknown') !打开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)
enddo

read(1,*) xbox,ybox,zbox

do i=1,natom
if (atomname .eq.'Cb') then !原子的名字atomname 为Cb的原子的坐标满足与空间中一点(2.615,2.572,2.601)的距离小于4
j=abs(x(i)-2.615)**2
k=abs(y(i)-2.572)**2
m=abs(z(i)-2.601)**2
n=j+k+m
sum=sqrt(n)
if (sum < 4.0) then
open(20,file='co2ben.txt')
write(20,*)x(i),y(i),z(i) !输出这个Cb原子的坐标和Cb编号的前面的一个原子的坐标。

end if
end if
enddo
enddo
close(1)
end
迷茫在知识的海洋里,需要你的指导。thankyou
6楼2009-11-04 23:04:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

haixiang

金虫 (小有名气)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
jjdg(金币+2,VIP+0):感谢应助! 12-17 18:57
将sum值打印出来看看是否满足条件
另外 sum=sqrt(n)
if (sum < 4.0) then
这行写错了
7楼2009-12-17 16:57:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jylisace

新虫 (初入文坛)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
jjdg(金币+1,VIP+0):感谢参与! 1-4 09:52
如果不满足(sum < 4.0),肯定无法输出文件。没有你的输入文件,没法帮你验证。
8楼2010-01-04 09:33:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tpp001 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见