N 7.87110000 17.86280000 44.83600000 .....
271
272 274 1.5 273 1.0 273 274 276 1.5 275 276 278 1.0 277 278 1.0 280 1.0 278 279 1.0 279 281 1.0 280 281
Zn 0 LANL2DZ **** C O H 0 6-31G(d) ****
Zn 0 LANL2DZ
Zn 1.35
具体的各参数解释,请看GAUSSIAN使用手册。
对于如何在分子筛的骨架添加CH2CH2NH2这样的基团,因为分子筛是无定形结构,在MS里面肯定是不能自动全部添加好,只能使用编程语言添加。可以把MCM-41的结构保存为 CAR格式文件(为什么非要保存为CAR文件,因为CAR文件里面有原子的电荷),然后利用随机数发生器,在内部随机生成位置,只要次位置与原来骨架之间的距离小于C-SI键长的话,那么就认为这个位置是可以接受的,并且把此位置命名为C原子,剩下来的C和N照样按照这个添加,可以写一个添加原子的子程序,调用三次就好。然后把得到的CAR文件导入到MS中,自动加氢就好。在MCM-41中添加胺基的源程序是这样的:
integer natom,natom0,nho,namino
************************************************************ * Number of atoms in the original structure is 9992.
* But the parameter natom should include the number of atoms added subsequently. * So here the value of natom is set to 15000
************************************************************ parameter (natom=15000,natom0=9992,nho=2319,namino=435)
* *
****************************************************************** * define global variables
******************************************************************
****************************************************************** * Read the input file
******************************************************************
open(10,file='MCM41-final.car',status='old') do 20 i=1,natom0
read(10,*)a(i),xc(i),yc(i),zc(i),fx(i),occupation(i),fft(i), common charge common xc,yc,zc
real distance,search_step,dis1,dis2,dis3,lbond,charge(natom) character a(natom)*5,fx(natom)*4,fft(natom)*5,atomname(natom)*2 integer occupation(natom),kjishu,ron,nOtemp,kstop,natom_add,Tatom integer Ohydroxy_SN(nho),Temp_SN
double precision xc(natom),yc(natom),zc(natom)
double precision rox,roy,roz,Ohydroxy(nho,4),Otemp(nho,4) double precision OTa(4),OTb(4),temp(3),list3(nho*3,12) integer templist3(nho*3,3),Nra
double precision xtemp,ytemp,ztemp,xfinal,yfinal,zfinal
integer NSiT,NSi_S,NSi_C,NCT,NC_S,NC_C,NNT,NN_S,NN_C character NSi_CC*1,NC_CC*1,NN_CC*1
& atomname(i),charge(i) 20 continue close(10)
******************************************************************* * write the initial file to check whether the initial structure is read correctly. *******************************************************************
open(30,file='output.car',access='append') do 40 i=1,natom0
write(30,888)a(i),xc(i),yc(i),zc(i),fx(i),occupation(i),fft(i),
& atomname(i),charge(i) 40 continue close(30) * * * * * * * * *
do 45 itt=1,namino
********************************************************* * add Si to the chosen Oxygen atom
*********************************************************
call HO_list(Ohydroxy,Ohydroxy_SN,kjishu) Nra=int(RAN2(IDUM)*kjishu)
Temp_SN=Ohydroxy_SN(Nra) xtemp=Ohydroxy(Nra,2) ytemp=Ohydroxy(Nra,3) ztemp=Ohydroxy(Nra,4)
call addatom(xtemp,ytemp,ztemp,lbond,Tatom,Temp_SN,
NNT=0 NN_S=0 NN_C=0 NCT=0 NC_S=0 NC_C=0 NSiT=0 NSi_S=0 NSi_C=0 natom_add=0
Tatom=natom0+natom_add
lbond=1.90
& xfinal,yfinal,zfinal) * * * * * *
if(NSi_C.eq.0)NSi_CC='T' if(NSi_C.eq.1)NSi_CC='U' NSiT=NSiT+1
NSi_C=INT((NSiT+60)/99) NSi_S=NSiT+60-99*NSi_C natom_add=natom_add+1
Tatom=natom0+natom_add
* * * * * *
if(NSi_C.eq.2)NSi_CC='V' if(NSi_C.eq.3)NSi_CC='W' if(NSi_C.eq.4)NSi_CC='X' if(NSi_C.eq.5)NSi_CC='Y' if(NSi_C.eq.6)NSi_CC='Z' a(Tatom)='Si'//'NSi_S'//'NSi_CC' xc(Tatom)=xfinal yc(Tatom)=yfinal zc(Tatom)=zfinal fx(Tatom)='XXXX' occupation(Tatom)=1 fft(Tatom)='Si3' charge(Tatom)=5.000
open(140,file='amino.car',access='append') write(140,888)a(Tatom),xc(Tatom),
a(Tatom)='Si'
atomname(Tatom)='Si'
& yc(Tatom),zc(Tatom), & fx(Tatom),occupation(Tatom), & fft(Tatom),atomname(Tatom), & charge(Tatom)
* do 2060 i=1,nho-2 * * * * * * * * * *
do 2075 ix=-2,kjishu+2
if(Ohydroxy(j,1).gt.templist(ix)-0.1.and. do 2065 ix=-2,kjishu+2
if(Ohydroxy(i,1).gt.templist(ix)-0.1.and.
goto 2060 endif close(140)
* & Ohydroxy(i,1).lt.templist(ix)+0.1)then
*2065 continue
do 2070 j=i+1,nho-1
* & Ohydroxy(j,1).lt.templist(ix)+0.1)then
* * * * * * * * * * *
goto 2070 endif
*2075 continue
do 2080 k=j+1,nho do 2085 ix=-2,kjishu+2
if(Ohydroxy(k,1).gt.templist(ix)-0.1.and.
goto 2080 endif
* & Ohydroxy(k,1).lt.templist(ix)+0.1)then
*2085 continue
dis1=sqrt((Ohydroxy(i,2)-Ohydroxy(j,2))**2+
(Ohydroxy(i,3)-Ohydroxy(j,3))**2+
* & * *
* & (Ohydroxy(i,4)-Ohydroxy(j,4))**2)
dis2=sqrt((Ohydroxy(i,2)-Ohydroxy(k,2))**2+
(Ohydroxy(i,3)-Ohydroxy(k,3))**2+
* & *
* & (Ohydroxy(i,4)-Ohydroxy(k,4))**2)
dis3=sqrt((Ohydroxy(j,2)-Ohydroxy(k,2))**2+
(Ohydroxy(j,3)-Ohydroxy(k,3))**2+
* &
* & (Ohydroxy(j,4)-Ohydroxy(k,4))**2) * if (dis1.gt.1.8.and.dis1.lt.2.6.and. * & dis2.gt.1.8.and.dis1.lt.2.6.and. * & dis3.gt.1.8.and.dis1.lt.2.6)then * *
do 2090 imm=1,4
* list3(kjishu,imm)=Ohydroxy(i,imm) *2090 continue
* templist3(kjishu,1)=int(Ohydroxy(i,1)) * charge(Ohydroxy_SN(i))=2.0 *
do 2100 imm=1,4
* list3(kjishu,imm+4)=Ohydroxy(j,imm) *2100 continue
* templist3(kjishu,2)=int(Ohydroxy(j,1)) * charge(Ohydroxy_SN(j))=2.0 *
do 2110 imm=1,4 kjishu=kjishu+1