24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2231  |  回复: 13
本帖产生 1 个 模拟EPI ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zyj8119

木虫 (著名写手)

[交流] 【原创】MCM-41的孔径分布的计算已有4人参与

接上一个帖子,MCM-41建好的模型会有孔径分布,这个在定义中是很复杂的,应该怎么计算呢,可以导出MCM-41中所有的H原子,然后自己写程序去计算孔径分布,我使用的是FORTRAN语言,导出的car结构中,可以使用EXCEL找到所有的H原子,这些H原子的 car文件可以保存为一个名叫H.car的文件,这个文件就可以进行孔径分布的计算,car文件的优点是带有电荷。读入这个car文件,可以输出一个名叫output.car的文件。
CODE:
        integer hno
        parameter(hno=2356)

        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)


      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),
     &          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),
     &             occupation(imm),fft(imm),natom(imm),charge(imm)
        charge(imm)=2.0
        endif



        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

        if(jmm.lt.415)then
      goto 40
        else
        goto 50
        endif
50    close(30)

888   format(A5,3X,F12.9,2X,F13.9,3X,F12.9,1X,A4,1X,I1,6X,A5,3X,A1,F8.3)   
        end
       
      
      
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
*     Random Number Generator               
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                          FUNCTION RAN2(IDUM)
  
      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
      iy=iv(j)-idum2
      iv(j)=idum
      if(iy.lt.1)iy=iy+IMM1
      ran2=min(AM*iy,RNMX)
      return
      END

其中的nho是你的H.car中H原子的个数,可以按照你的文件的不同随意更改成你所需要的值,得到的output.car可以做下一步的计算。

[ Last edited by zyj8119 on 2010-12-2 at 14:14 ]
回复此楼
好好学习,天天向上。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

引用回帖:
Originally posted by zyj8119 at 2010-12-02 10:01:19:
统计完成以后,接下来就是计算孔径分布了,源程序是这样的:

[code]
*               main program
                real cx,cy
               integer HNO,lattice
               open(1000,file='para ...

版主请评阅下。。。
好好学习,天天向上。
9楼2010-12-02 11:17:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 14 个回答

qphll

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
赞一下.

自己动手, 其乐无穷.
Life, Love, Laugh.
2楼2010-12-02 00:27:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

引用回帖:
Originally posted by qphll at 2010-12-02 00:27:09:
赞一下.

自己动手, 其乐无穷.

多谢,这个输出的output.car文件在下一步还有用,程序明天给出。
好好学习,天天向上。
3楼2010-12-02 00:28:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qphll

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by zyj8119 at 2010-12-02 00:28:52:

多谢,这个输出的output.car文件在下一步还有用,程序明天给出。

嗯, 期待!

我也可以喘口气, 更新一下前面的几个帖子. 连着看了三天的lammps manual.....
Life, Love, Laugh.
4楼2010-12-02 01:12:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见