[工作范文]模拟心得MATERIAL STUDIO 中SORPTION_第1页
[工作范文]模拟心得MATERIAL STUDIO 中SORPTION_第2页
[工作范文]模拟心得MATERIAL STUDIO 中SORPTION_第3页
[工作范文]模拟心得MATERIAL STUDIO 中SORPTION_第4页
[工作范文]模拟心得MATERIAL STUDIO 中SORPTION_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 模拟心得 material studio 中sorption第一个课题是模拟金属有机框架和共价有机框架吸附co2以及分离co2/ch4,使用的软件是material studio,使用的是sorption模块,输入的是逸度。单组份求逸度的matlab程序,只需要在主程序窗 口输入function rho,f =pengrobinson(p1,t,n)(p1,t,n是具体的数值)就可以得到不同的压力和温度下的逸度。function rho,f =pengrobinson(p1,t,n)%+%pengrobinson is used to calculate the density and fu

2、gacity of single%component gas at given pressure with peng-robinson equation.%pengrobinson v1.00 beta include the parameter of n-alkanes(1-5), co2(6)%and co(7).%where p1 means input pressure(kpa), t is temperature(k), n means the serial number of gas. rho%is density, f is fugacity.%e.g. if you wanna

3、 calculate density and fugacity of methane at 300kpa, 298k,you%need input rho,f =pengrobinson(300,298,1). %+%set physical parameters%+p=p1./100;t_m=16.043 30.070 44.097 58.123 72.150 44.01 28.01;t_omiga=0.012 0.100 0.152 0.2 0.252 0.224 0.048;t_tc=190.6 305.3 369.8 425.1 469.7 304.2 132.9 ;t_pc=45.9

4、9 48.72 42.48 37.96 33.70 73.83 34.99;%+tc=t_tc(n);pc=t_pc(n);omiga=t_omiga(n);m=t_m(n);%+r=83.14;epsilon=1-2.(0.5);sigma=1+2.(0.5);%+%calculate the z of pr equation%+alpha=(1+(0.37464+1.54226*omiga-0.26992*omiga.2)*(1-(t/tc)(0.5).2;a=(0.45724*r2*tc2)/pc)*alpha;b=0.07779.*r.*tc./pc;beta=b.*p./(r.*t)

5、;q=a./(b.*r.*t);z0=zeros(length(p),1);z1=ones(length(p),1);for k=1:length(p) while abs(z1(k)-z0(k)1e-6 z0(k)=z1(k); z1(k)=1+beta(k)-q.*beta(k).*(z0(k)-beta(k)./(z0(k)+epsilon.*beta(k).*(z0(k)+sigma.*beta(k); endendi=(1./(sigma-epsilon).*log(z1+sigma.*beta)./(z1+epsilon.*beta);%+%gain the density of

6、gas%+rho=(p./(z1.*r.*t).*m.*1e6;rho=vpa(rho,6);phi=exp(z1-1-log(z1-beta)-q.*i);f=phi.*p1;f=vpa(f,5);双组份的求逸度的程序:求逸度的过程和单组份的一样。双组份的逸度求解程序:function rho1,rho2,f1,f2 =pengrobinson_binary(p1,t,n,y)%+%pengrobinson is used to calculate the density and fugacity of binary%component gas at given pressure with

7、peng-robinson equation.%pengrobinson v1.00 beta include the parameter of n-alkanes(1-5),%isobutane(6) isopentane(7), neopentane(8) hydrogen(9) carbon dioxide(10)%where p1 means input pressure(kpa), t is temperature(k), n means the serial number of gas. rho%is density(g/m3), f is fugacity.%e.g. if yo

8、u wanna calculate density and fugacity of mixture of methane and ethane at 300kpa,298k, you%need input rho,f =pengrobinson(300,298,1,2,0.5,0.5). %+%set physical parameters%+p=p1./100;t_m=16.043 30.070 44.097 58.123 72.150 58.123 72.150 72.150 2.016 44.01;t_omiga=0.012 0.100 0.152 0.2 0.252 0.181 0.2

9、29 0.197 -0.216 0.224;t_tc=190.6 305.3 369.8 425.1 469.7 408.1 460.39 433.75 33.19 304.2;t_pc=45.99 48.72 42.48 37.96 33.70 36.48 33.81 31.99 13.13 73.83;%+tc=t_tc(n(1);t_tc(n(2);pc=t_pc(n(1);t_pc(n(2);omiga=t_omiga(n(1);t_omiga(n(2);m=t_m(n(1);t_m(n(2);%+r=83.14;epsilon=1-2.(0.5);sigma=1+2.(0.5);%+

10、%calculate the z of pr equation%+alpha=(1+(0.37464+1.54226.*omiga-0.26992.*omiga.2).*(1-(t./tc).(0.5).2;a=(0.45724.*r.2.*tc.2)./pc).*alpha;b=0.07779.*r.*tc./pc;a12=(a(1).*a(2).0.5;am=(y(1).2).*a(1)+2.*y(1).*y(2).*a12+(y(2).2)*a(2);bm=y(1).*b(1)+y(2).*b(2);beta=bm.*p./(r.*t);q=am./(bm.*r.*t);z0=zeros

11、(length(p),1);z1=ones(length(p),1);for k=1:length(p) while abs(z1(k)-z0(k)1e-6 z0(k)=z1(k); z1(k)=1+beta(k)-q.*beta(k).*(z0(k)-beta(k)./(z0(k)+epsilon.*beta(k).*(z0(k)+sigma.*beta(k); endendi=(1./(sigma-epsilon).*log(z1+sigma.*beta)./(z1+epsilon.*beta);%+%gain the density of gas%+%rho=(p./(z1.*r.*t)

12、.*m.*1e6;%rho=vpa(rho,6);rho=(p./(z1.*r.*t).*1e6;rho1=vpa(y(1).*rho.*m(1),6);rho2=vpa(y(2).*rho.*m(2),6);phi1=zeros(length(p),1);phi2=zeros(length(p),1);f1=zeros(length(p),1);f2=zeros(length(p),1);phi1=exp(b(1)./bm).*(z1-1)-log(z1-beta)-q.*i.*(2.*(y(1).*a(1)+y(2).*a12)./am-b(1)./bm);phi2=exp(b(2)./b

13、m).*(z1-1)-log(z1-beta)-q.*i.*(2.*(y(2).*a(2)+y(1).*a12)./am-b(2)./bm);f1=phi1.*p1.*y(1);f2=phi2.*p1.*y(2);f1=vpa(f1,5);f2=vpa(f2,5);对于mof结构,我们需要找到具体的实验文献和作者,然后去ccdc下载,如图1所示。下载中需要输入文献名和作者的姓。等一会,看看输入的那个邮箱,就会看见cif文件了,不过得到的是txt文件,需要改掉扩展名,输入ms,在ms里面手动改成文献上那样,因为有时候得到的结构会很不规则。电荷是使用dmol3计算得到的,但是对于某些mof,由于含

14、有太多的过渡金属,用dmol3优化得到电荷效果不好,需要使用gaussian计算电荷,在使用gaussview生成gjf文件的时候,需要在最终结果里面加入pop=chelpg这一行,具体请看gaussian使用手册,分析结果里面就可以看到chelpg电荷了。得到的结构首先需要使用分子动力学进行优化,使用forcite模块,选择geometrical optimization这个任务,电荷加和方式最好用ewald方法,vanderwaals选择atom based.得到的结构就可以进行sorption模拟了,选择fixed pressure任务,在低压下,可以认同压力与逸度差别不大,在高压下,就

15、要选择逸度了,如果认为低压下取样数很少,就要build-symmetry-supercell,建立合适的超晶胞,进行低压下的模拟。mof中一般来说,uff力场与实验对比比较好,选择uff的比较多。 计算mof和沸石的connolly surface需要用到ms中的atom volume & surfaces这个任务,co2的connoly radius是0.165nm,可以再变化vdw scale factor的时候,得到一些不同的自由体积。文献中 specific area 和 free volume的单位与ms得到的不同,在写文章的时候,需要转化一下。沸石的电荷一般用dmol3计算得到就可

16、以了,esp电荷比其他两种电荷更加合适,因为计算方法比较适应真实体系。对于怎么换配体,需要点击晶体的框架,然后扩大晶体的边长,这样,就在删除配体后,有空间画新配体了,然后用forcite优化,优化的过程中勾选上,优化晶胞的选项。金属掺杂,是先在mof或者分子筛中切取簇模型,然后赋予这个簇模型不同的电荷,这样再把这个得到的电荷赋予到整体的骨架中,由于此时整体的骨架电荷不为0,就需要一定数目的金属原子去平衡它,这些金属原子可以作为吸附质预先吸附进这个骨架。对于怎么构造mcm-41的骨架,可以使用ms自带的strucuture中的glass下面的无定形sio2,也是通过构造超晶胞,超晶胞的具体重复倍

17、数可以视情况而定。然后使用edit下面的atom selection中raidial distance,确定中心,这个就需要几何知识了,可以确定x和y,变动z,也可以确定y和z,变动x,变动的那个数值时从0到超晶胞边长。对于挖孔,可以只挖一个孔,也可以挖2个以上的孔,其实可以知道这些不同的中心就是不同的线段而已。经过尝试每隔2,可以把孔道打通的很干净,不过此时得在edit下面的子菜单find patterns 里面寻找到一个si与三个o连接的基团,删除此类基团。然后就是加h了,加完h,还得赋予上使用量化模块计算得到的esp或者chelpg电荷,使用forcite模块进行md优化得到希望得到的m

18、cm-41构型。图1 ccdc要求cif文件的界面附录:用gaussview写的mof簇的gaussian输入文件:% chk=1.chk%mem=100mw# b3lyp geom=connectivity gen pseudo=read sp scf=tight pop=(mk,chelpg)maxdisk=25gb iop(6/33=2)pipi0 1 o 19.14690000 19.30120000 45.38230000 zn 18.10790000 18.22300000 44.34000000 zn 20.18800000 18.26520000 46.47520000 zn

19、18.08020000 20.39100000 46.39280000 zn 20.21140000 20.32720000 44.31250000 zn 6.68970000 19.24060000 44.93580000 zn 19.26360000 6.83520000 45.02830000 zn 19.18610000 19.14570000 32.92150000 zn 31.60320000 19.10710000 45.02760000 zn 19.18580000 31.75920000 44.84940000 c 9.94100000 19.27140000 45.1417

20、0000 c 19.23230000 10.08690000 45.26670000 c 19.16500000 28.50940000 45.03930000 c 19.20710000 19.14190000 36.17600000 c 28.35370000 19.17540000 45.25230000 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 2

21、81zn 0lanl2dz*c o h 06-31g(d)*zn 0lanl2dzzn 1.35具体的各参数解释,请看gaussian使用手册。 对于如何在分子筛的骨架添加ch2ch2nh2这样的基团,因为分子筛是无定形结构,在ms里面肯定是不能自动全部添加好,只能使用编程语言添加。可以把mcm-41的结构保存为 car格式文件(为什么非要保存为car文件,因为car文件里面有原子的电荷),然后利用随机数发生器,在内部随机生成位置,只要次位置与原来骨架之间的距离小于c-si键长的话,那么就认为这个位置是可以接受的,并且把此位置命名为c原子,剩下来的c和n照样按照这个添加,可以写一个添加原子的子

22、程序,调用三次就好。然后把得到的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

23、,nho=2319,namino=435)character a(natom)*5,fx(natom)*4,fft(natom)*5,atomname(natom)*2integer occupation(natom),kjishu,ron,notemp,kstop,natom_add,tatominteger ohydroxy_sn(nho),temp_sndouble precision xc(natom),yc(natom),zc(natom)double precision rox,roy,roz,ohydroxy(nho,4),otemp(nho,4)double precision

24、 ota(4),otb(4),temp(3),list3(nho*3,12)integer templist3(nho*3,3),nradouble 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*1real distance,search_step,dis1,dis2,dis3,lbond,charge(natom)* define global variables*com

25、mon charge common xc,yc,zc * read the input file*open(10,file=mcm41-final.car,status=old)do 20 i=1,natom0read(10,*)a(i),xc(i),yc(i),zc(i),fx(i),occupation(i),fft(i), & atomname(i),charge(i)20 continue close(10)* write the initial file to check whether the initial structure is read correctly.* open(3

26、0,file=output.car,access=append)do 40 i=1,natom0write(30,888)a(i),xc(i),yc(i),zc(i),fx(i),occupation(i),fft(i), & atomname(i),charge(i)40 continue close(30)natom_add=0tatom=natom0+natom_add*nsit=0*nsi_s=0*nsi_c=0*nct=0*nc_s=0*nc_c=0*nnt=0*nn_s=0*nn_c=0do 45 itt=1,namino* add si to the chosen oxygen

27、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) lbond=1.90call addatom(xtemp,ytemp,ztemp,lbond,tatom,temp_sn, & xfinal,yfinal,zfinal) natom_add=natom_add+1tatom=natom0+natom_add*nsit=nsi

28、t+1*nsi_c=int(nsit+60)/99)*nsi_s=nsit+60-99*nsi_c*if(nsi_c.eq.0)nsi_cc=t*if(nsi_c.eq.1)nsi_cc=u*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 a(tatom)=sixc(tatom)=xfinalyc(tatom)=yfinalzc(tatom)=zfinalfx(ta

29、tom)=xxxxoccupation(tatom)=1fft(tatom)=si3 atomname(tatom)=sicharge(tatom)=5.000open(140,file=amino.car,access=append)write(140,888)a(tatom),xc(tatom), & yc(tatom),zc(tatom), & fx(tatom),occupation(tatom), & fft(tatom),atomname(tatom), & charge(tatom)close(140)* do 2060 i=1,nho-2* do 2065 ix=-2,kjis

30、hu+2* if(ohydroxy(i,1).gt.templist(ix)-0.1.and.* & ohydroxy(i,1).lt.templist(ix)+0.1)then*goto 2060*endif*2065 continue * * do 2070 j=i+1,nho-1* do 2075 ix=-2,kjishu+2* if(ohydroxy(j,1).gt.templist(ix)-0.1.and.* & ohydroxy(j,1).lt.templist(ix)+0.1)then* goto 2070* endif*2075 continue * do 2080 k=j+1

31、,nho* do 2085 ix=-2,kjishu+2* if(ohydroxy(k,1).gt.templist(ix)-0.1.and.* & ohydroxy(k,1).lt.templist(ix)+0.1)then* goto 2080* endif*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+

32、* & (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* kjishu

33、=kjishu+1* 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* list3(

34、kjishu,imm+8)=ohydroxy(k,imm)*2110 continue* templist3(kjishu,3)=int(ohydroxy(k,1)* charge(ohydroxy_sn(k)=2.0* goto 2061* endif*2080 continue*2070 continue*2060 continue * open(2120,file=list3.car,access=append)*do 2130 i=1,kjishu* write(2120,777)int(list3(i,1),list3(i,2),list3(i,3),list3(i,4),* & t

35、emplist3(i,1)* write(2120,777)int(list3(i,5),list3(i,6),list3(i,7),list3(i,8),* & templist3(i,2)* write(2120,777)int(list3(i,9),list3(i,10),list3(i,11),list3(i,12)* & ,templist3(i,3)*write(2120,*)*2130 continue*777 format(i4,3x,f12.9,2x,f13.9,3x,f12.9,3x,i4)* close(2120)* renew hydroxy oxygen list*

36、do 2135 i=1,nho*ohydroxy_sn(i)=0* do 2136 j=1,4* ohydroxy(i,j)=0*2136 continue*2135 continue* kjishu=0* do 2140 i=1,natom0* if (charge(i).eq.1.0) then* kjishu=kjishu+1* ohydroxy_sn(kjishu)=i* ohydroxy(kjishu,1)=kjishu* ohydroxy(kjishu,2)=xc(i)* ohydroxy(kjishu,3)=yc(i)* ohydroxy(kjishu,4)=zc(i)* end

37、if*2140 continue* open(2150,file=hydrogen oxygen-1.car,access=append)* do 2160 i=1,nho*write(2150,*)(ohydroxy(i,j),j=1,4),ohydroxy_sn(i)*2160 continue* close(2150)* stop* choose a initial oxygen atom randomly* ron=int(ran2(idum)*nho)* rox=ohydroxy(nho,2)* roy=ohydroxy(nho,3)* roz=ohydroxy(nho,4)* no

38、temp=0* do 60 i=1,nho* distance=sqrt(rox-ohydroxy(i,2)*2+(roy-ohydroxy(i,3)*2+* & (roz-ohydroxy(i,4)*2)* if(distance.gt.1.0.and.distance.lt.2.6)then* notemp=notemp+1* otemp(notemp,1)=notemp* otemp(notemp,2)=ohydroxy(i,2)* otemp(notemp,3)=ohydroxy(i,3)* otemp(notemp,4)=ohydroxy(i,4)* endif*60 continu

39、e* kstop=0* do 70 i=1,notemp-1* do 80 j=i+1,notemp* distance=sqrt(ohydroxy(i,2)-ohydroxy(j,2)*2+* & (ohydroxy(i,3)-ohydroxy(j,3)*2+* & (ohydroxy(i,4)-ohydroxy(j,4)*2)* if(distance.gt.1.0.and.distance.lt.2.6)then* mark of interrupt service routine 2* kstop=1 * ota(1)=i* ota(2)=otemp(i,2)* ota(3)=otem

40、p(i,3)* ota(4)=otemp(i,4)* otb(1)=j* otb(2)=otemp(j,2)* otb(3)=otemp(j,3)* otb(4)=otemp(j,4)* goto 90* endif*80 continue*70 continue* warning 1* if(kstop.eq.0)then*write(*,*)warning,kstop,: no tri-grafting any more*stop*endif * warning 1* kstop=0*90 search_step=0.01* do 100 i=-300,300* do 110 j=-300

41、,300* do 120 k=-300,300* temp(1)=rox+search_step*i* temp(2)=roy+search_step*j* temp(3)=roz+search_step*k* dis1=sqrt(temp(1)-rox)*2+* & (temp(2)-roy)*2+* & (temp(3)-roz)*2)* dis2=sqrt(temp(1)-ota(2)*2+* & (temp(2)-ota(3)*2+* & (temp(3)-ota(4)*2) * dis3=sqrt(temp(1)-otb(2)*2+* & (temp(2)-otb(3)*2+* & (temp(3)-otb(4)*2) * if (dis1.gt.1.8.and.dis1.lt.2.0.and.* & dis2.gt.1.8.and.dis1.lt.2.0.and.* & dis3.gt.1.8.and.dis1.lt.2.0)then* do 130 im=1,natom+natom_add* distance=sqrt(temp(1)-xc(im)*2+* & (temp(2)-yc(im)*2+* & (temp(3)-zc(im)*2)* if(distance.le.3.0)then*goto 120*endif*130 continue*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论