* *
if(dis2.lt.3.0)then goto 1022 endif endif
if(dis1.gt.minlbond.and.dis1.lt.maxlbond)then dis2=sqrt((targetx-xc(im))**2+
* do 1032 im=1,Tatom
* & (targety-yc(im))**2+ * & (targetz-zc(im))**2) * * *
1032 continue goto 1042 endif 1022 continue 1012 continue 1002 continue
1042 xfinal=targetx yfinal=targety
endsubroutine
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
endif zfinal=targetz
if(im.ne.Temp_SN.and.dis2.lt.3.0)then goto 1022 endif
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
* Random Number Generator
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
INTEGER idum,IM1,IM2,IMM1,IA1,IA2,IQ1,IQ2,IR1,IR2,NTAB,NDIV REAL ran2,AM,EPS,RNMX
PARAMETER (IM1=2147483563,IM2=2147483399,AM=1./IM1,IMM1=IM1-1, *IA1=40014,IA2=40692,IQ1=53668,IQ2=52774,IR1=12211,IR2=3791, *NTAB=32,NDIV=1+IMM1/NTAB,EPS=1.2e-7,RNMX=1.-EPS)
INTEGER idum2,j,k,iv(NTAB),iy SAVE iv,iy,idum2
DATA idum2/123456789/, iv/NTAB*0/, iy/0/ if (idum.le.0) then idum=max(-idum,1) idum2=idum do 11 j=NTAB+8,1,-1 k=idum/IQ1
idum=IA1*(idum-k*IQ1)-k*IR1 if (idum.lt.0) idum=idum+IM1 if (j.le.NTAB) iv(j)=idum 11 continue iy=iv(1) endif k=idum/IQ1
idum=IA1*(idum-k*IQ1)-k*IR1 if (idum.lt.0) idum=idum+IM1 k=idum2/IQ2
idum2=IA2*(idum2-k*IQ2)-k*IR2 if (idum2.lt.0) idum2=idum2+IM2 j=1+iy/NDIV
FUNCTION RAN2(IDUM)
iy=iv(j)-idum2 iv(j)=idum
if(iy.lt.1)iy=iy+IMM1 ran2=min(AM*iy,RNMX) return END
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
各段程序大概信息已经在程序内部给出,调用添加原子的子程序3次,得到的CAR文件输入MS就可以自动加氢了。这个程序中使用的MCM-41模型还是单个晶胞4孔模型(由3*7*2超晶胞挖出来的),对于单孔模型的MCM-41需要自己改写,在CENTER.TXT那里修改,后面的搜索步骤也要相应的修改。其他种类的沸石例如MFI,LTA等等加胺基也是按照这样做的。对于怎么计算孔径分布,需要到处CAR文件中所有的H原子,其源程序是这样的:
integer hno
open(10,file='H.car',status='old')
do 20 i=1,hno
read(10,*)a(i),xc(i),yc(i),zc(i),fx(i),occupation(i),fft(i), character a(hno)*5,fx(hno)*4,fft(hno)*5,natom(hno)*1 double precision xc(hno),yc(hno),zc(hno) integer occupation(hno) real charge(hno) parameter(hno=2356)
& natom(i),charge(i) 20 continue close(10)
jmm=0
open(30,file='output.car',access='append') *40 amm=RAN2(IDUM) 40 imm=int(RAN2(IDUM)*hno)
if(charge(imm).lt.1.0)then jmm=jmm+1
write(30,888)a(imm),xc(imm),yc(imm),zc(imm),fx(imm), charge(imm)=2.0 endif
& occupation(imm),fft(imm),natom(imm),charge(imm)
888 format(A5,3X,F12.9,2X,F13.9,3X,F12.9,1X,A4,1X,I1,6X,A5,3X,A1,F8.3)
end
if(jmm.lt.415)then else goto 50 endif goto 40
if(jmm.eq.50.or.jmm.eq.100.or.jmm.eq.150.or.jmm.eq.200.or.
jmm.eq.250.or.jmm.eq.300.or.jmm.eq.350.or.jmm.eq.400)then
write(30,*)'********************',jmm,'**************************' write(30,*)'********************',jmm,'**************************' endif &
50 close(30)
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
* Random Number Generator
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
INTEGER idum,IM1,IM2,IMM1,IA1,IA2,IQ1,IQ2,IR1,IR2,NTAB,NDIV REAL ran2,AM,EPS,RNMX
PARAMETER (IM1=2147483563,IM2=2147483399,AM=1./IM1,IMM1=IM1-1, *IA1=40014,IA2=40692,IQ1=53668,IQ2=52774,IR1=12211,IR2=3791, *NTAB=32,NDIV=1+IMM1/NTAB,EPS=1.2e-7,RNMX=1.-EPS)
INTEGER idum2,j,k,iv(NTAB),iy SAVE iv,iy,idum2
DATA idum2/123456789/, iv/NTAB*0/, iy/0/ if (idum.le.0) then idum=max(-idum,1) idum2=idum do 11 j=NTAB+8,1,-1 k=idum/IQ1
idum=IA1*(idum-k*IQ1)-k*IR1 if (idum.lt.0) idum=idum+IM1 if (j.le.NTAB) iv(j)=idum 11 continue
FUNCTION RAN2(IDUM)
iy=iv(1) endif k=idum/IQ1
idum=IA1*(idum-k*IQ1)-k*IR1 if (idum.lt.0) idum=idum+IM1 k=idum2/IQ2
idum2=IA2*(idum2-k*IQ2)-k*IR2 if (idum2.lt.0) idum2=idum2+IM2 j=1+iy/NDIV iy=iv(j)-idum2 iv(j)=idum
if(iy.lt.1)iy=iy+IMM1 ran2=min(AM*iy,RNMX) return END
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
导出的氢原子的坐标需要按照孔径分布的函数关系式,输入孔径分布的自编程序,自编程序是这样的:
Towhee的安装:
首先要保证机器中有gfortran编译器,没有的话,我用的是FEDORA12,可以使用yum install gcc-gfortran下载一个,安装好了后,下载towhee的源代码,就可以开始编译了。 ln -s /home/zyj/zhuomian/towhee-6.2.7 /towheebase(这个必须得cd到最上层才行) cd /home/zyj/zhuomian/towhee-6.2.7 ./configure --enable-fix-GNU cd Source
make towhee
然后把里面do_test拷贝到任何一个例子里面,然后就运行./do_test,例子就可以开始跑了。Towhee能够做GBMC,并且input文件里面,主要是分子的构型信息。
GCMC程序MUSIC的编译以及使用过程
要使用Music,首先就得安装,不过安装过程肯定不想Windows操作系统下面那么方便,点点鼠标就OK了,在这里需要使用命令行。由于music使用了Fortran 90编写,因而不能和towhee一样,采用Linux自带的gcc就能编译,也许有人会问了,我把gcc更新或者采用最新的gcc也不行吗,答曰不行,因为据我了解,gcc强大在于对C语言的编译,而对于Fortran,只能支持F77,对于F90只能爱莫能助。因此我们在编译music之前,需要安装一个F90编译器。Music网页上推荐了几款,这里我们推荐使用intel Fortran compiler(以下简称ifort),因为它有非商业版本下载免费使用,只要你不是用于商业用途,就可以,但是你也不会得到