[lammps第十四講]lammps輸出RDF(徑向分布函數)詳解及示例教程

2021-12-23 LAMMPS交流站

收錄於話題 #lammps案例 18個

大家好,小編最近的課題需要輸出RDF(徑向分布函數),小編就去lammps官網及網絡查找了如何用lammps輸出RDF,小編就把自己學到的用法在這裡跟大家分享,也算是小編學習過程中的一個筆記。

   本教程也是小編現學現賣,不足之處請各位指出,希望能給讀者提供一定的幫助,讀者可結合實際需求,同時希望專業前輩提出不足,小編會和大家共同學習。

  

1.徑向分布函數概念     

      在統計力學中,多粒子系統(原子、分子、膠體……中, 徑向分布函數(又稱對關聯函數)描述粒子密度作為距參考原子的距離的函數如何變化。

如果給定粒子當做原點,體系平均粒子數密度為 ρ=N/V,則距原點為r處的局部時間平均的密度為 ρ*g(r) 。這是對均勻的各向同性系統的簡化定義。

     簡言之,這是對於距參考粒子距離為r處找到粒子的相對概率的測量,參考態是理想氣體。一般的算法是計算在距參考原子 r 到 r+dr 這樣的殼層裡有多少粒子。

RDF的定義的定義式如下:

式中,V為系統的個數,N為系統中的粒子數,n(r)為納米粒子半徑dr處厚度下的原子數。

2.徑向分布函數意義

     徑向分布函數通常用g(r,r')來表示。對於 |r-r'| 比較小的情況,g(r,r') 主要表徵的是原子的堆積狀況及各個鍵之間的距離。對於長程的性質,由於對於給定的距離找到原子的機率基本上相同,所以g(r,r')隨著|r-r'|的增大而變得平緩,最後趨向於恆值。通常定義 g(r,r')時,歸一化的條件為 |r-r'| 趨向於無窮大時,g(r,r') 趨向於一。通常,對於晶體,由於其有序的結構,徑向分布函數有長程的峰,而對於非晶物質(amorphous matter),則徑向分布函數一般只有短程的峰。

    徑向分布函數通常被用來描述原子有序性及描述電子的相關性(指的就是給定一個電子,其他電子在此電子周圍出現的機率),也就是在RDF圖中,峰所在位置就是電子出現概率大的位置。

我們在lammps官網可以看到輸出RDF的具體語法

compute ID group-ID rdf Nbin itype1 jtype1 itype2 jtype2 ... keyword/value ...fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ...

舉例:
compute 1 all rdf 100compute 1 all rdf 100 1 1compute 1 all rdf 100 * 3 cutoff 5.0compute 1 fluid rdf 500 1 1 1 2 2 1 2 2compute 1 fluid rdf 500 1*3 2 5 *10 cutoff 3.

     在compute rdf命令中,Nbin為統計量(樣本量),數越多可能曲線會越光滑(一般200-500);itype1是徑向分布函數的中心原子, jtype1是被統計的原子。
     在fix ave/time命令中,Nfreq必須是Nevery的整數倍,必須是非零。用compute rdf命令時,value1、value2 ... 為c_ID[1],c_ID[2],c_ID[3],輸出結果按列依次為序號,c_ID[1]group到原點的距離,即x軸,c_ID[2]g( r )c_ID[3]coor( r ),即 g( r )的積分,也就是輸出的數據以c_ID[1]為橫軸,以c_ID[2]c_ID[3]為縱軸,就可以得到某一時刻的RDF曲線。     例如以下命令可用於輸出每1000步的rdf值,在截斷半徑範圍內,距離被分成200段:
compute rdf all rdf 200 2 6  #rdf       fix rdf all ave/time 1000 1 1000 c_rd1[1] c_rd1[2] c_rd1[3] file data.rdf mode vector

  本文將之前做的一個案例CuNi合金熔化模擬過程的1550K-2500K升溫過程的RDF輸出,添加的代碼為:

compute rdf all rdf 200fix saverdf all ave/time 100 100 10000 c_rdf[1] c_rdf[2] file data.rdf mode vector

完整in文件如下:

units           metalboundary        p p p
atom_style atomic
read_data melting.in.dat
lattice fcc 3.65 region box block -30 30 -5 5 -5 5
mass 1 64.55mass 2 58.69
pair_style eam/alloypair_coeff * * CuNi.lammps.eam Cu Ni
region 1 block INF -0.01 -6 6 -6 6group left region 1region 2 block -0.01 INF -6 6 -6 6group right region 2
timestep 0.002velocity all create 1550.0 4928459 dist gaussianfix 1 all npt temp 1550 1550 0.1 iso 0 0 0.2
dump melt all atom 10000 dump.datrestart 50000 restart.*
thermo 100run 4000

unfix 1fix 1 right npt temp 1550 2500 0.1 x 0 0 0.2compute rdf all rdf 200fix saverdf all ave/time 100 100 10000 c_rdf[1] c_rdf[2] file data.rdf mode vectorrun 2000
unfix 1fix 1 right npt temp 2500 1550 0.1 x 0 0 0.2
run 44000
unfix 1fix 1 all nph iso 0.0 0.0 0.2 run             9500000

    最後,用記事本打開生成的data.rdf文件,用裡面的數c_rdf[1] c_rdf[2]繪圖,就可以得到如下的RDF曲線。

1.文中所需的data文件及勢文件已上傳至QQ群-lammps交流站。

相關焦點

  • 系統學習LAMMPS系列三
    這骨架中的前兩個部分我們已經在前面的文章中介紹過了,今天就剩下的幾個部分都講了吧。不過一般你發現了適合你的eam勢函數,你可以直接與其作者聯繫,對方會很樂意提供給你使用的。不過在這個操作之前我們一般要賦予每個原子速度(高斯分布),具體操作:velocity  all create 300 123 mom yes rot yes # 這個命令就表示每個原子在300K條件下的速度滿足高斯分布 其中123是個隨機數,只要這個數是正數就行了,mom yes 和rot yes一般設置為yes,具體原因這裡不做解釋,感興趣的可以查看手冊
  • 《跟隨霄,LAMMPS源碼學習03》LAMMPS::create()
    上一期推文講了LAMMPS類的構造函數LAMMPS()實例化了14個基本類中的4個: Memory,Error,Universe,Input,這4個類和MD算法關係較小。那麼剩下的10個類就由create()函數實例化。
  • LAMMPS學習系列
    本人強烈建議將LAMMPS安裝在LINUX系統上(不要問為什麼),本教程也只教如何在LINUX系統上安裝並行LAMMPS。 現在進入正題——安裝步驟:一.           先準備一臺還可以的電腦(以Ubuntu系統為例)二.           熟悉一些簡單的LINUX系統命令操作(ls, vi, mkdir, cp,mv…..)
  • LAMMPS分子動力學核心技術實戰培訓班
    ):如何針對不同系統選用不同的勢函數,此部分為分子動力學的核心。、時間步長的設置、構型的輸出4,通過ovito、VMD可視化軟體來看動畫做圖片以及結構分析等。5,模擬中出現錯誤後的調試思路;6,分階段模擬複雜物理問題的技術方法;五、用Lammps輸出研究所需要的數據信息1,利用LAMMPS完成melt, crack問題的研究,並分析模擬所得結果。
  • 開源軟體-分子動力學-LAMMPS
    Lammps的建模13   LAMMPS建模——掌握基本操作流程3.1  LAMMPS各種參數計算3.1.1 顆粒模擬3.1.2 可視化快照3.1.3 彈性常數模擬3.1.4 計算熱導率3.1.5 計算粘度3.1.6 計算均方位移3.1.7 計算徑向分布函數
  • lammps的restart重啟動相關命令
    restart作用restart命令是lammps提供的重啟動命令,用於重啟lammps計算。這樣可以省去一些共有的計算,從而節省計算時間,特別是對於比較大的體系。還有一個相關的腳本在lammps的tools目錄下restart2data,可以用來將二進位的restart文件轉換成可識別的文文文件,即data file文件,可以由read_data讀入。
  • 為什麼要學LAMMPS分子動力學?零基礎入門 需要多久?
    材料人特邀科技顧問餘老師開展本培訓班,旨在幫助學員在較短的時間內對分子動力學理論以及LAMMPS使用進行有效的掌握。Lammps計算軟體從入門到應用進行培訓,精心設計多個材料模擬體系和場景,覆蓋當前多個材料理論研究熱點,有助於大家快速掌握並切入自己的研究主題,迅速提高理論研究水平。
  • LAMMPS入門介紹及學習方法
    自己寫完然後運行,能更快的熟悉這軟體包.第二個文件就是相互作用勢文件(由相應的勢函數生成),這是整個分子動力學流程的核心,因為它決定了你構建的體系中原子如何運動.相互作用勢在這裡如果認真的介紹起來,那我估計還要寫半天.在此,先簡單點說,就是用它來描述單個原子在一堆原子中的力場中的運動情況(基於牛頓定律多體情況嘛),LAMMPS軟體包中的potential包裡面全是勢文件,但是不全,往後的文章我會細講,
  • LAMMPS的NPT/NVT系綜命令詳解
    dipole/dlm dipole = update dipole orientation (only for sphere variants) dipole/dlm = use DLM integrator to update dipole orientation (only for sphere variants)自帶示例
  • Python腳本計算RDF
    註:該教程來源於Jonyafei的博客(連結見文末或者閱讀原文)。
  • lammps 計算實例——Cu 熱膨脹係數和熔化溫度的計算
    0.01 thermo 1000 pair_style eam pair_coeff 1 1 Cu_u3.eam neighbor 0.6 bin neigh_modify every 5 delay 0 check yes velocity all create $x 825577 dist gaussian #初始化速度,按高斯分布
  • 68講Python自動化辦公基礎 | 第4講:Excel+int函數
    基於索引位置先選中第一個sheet表格sheet = wb.worksheets[0]# 4.獲取第一列數據後轉換為十進位,然後更新到第一列中for old_row in sheet.rows: old_data = old_row[0].value old_data = int(old_data, base=2) # 5.
  • 分子動力學LAMMPS材料計算課程
    LAMMPS官網:https://lammps.sandia.gov/MedeA軟體簡介:MedeA平臺軟體由Materials Design®公司開發,致力於多尺度材料設計模擬及性質預測。
  • 字符輸出putchar函數與字符輸入getchar函數
    ,還可以使用專門的字符輸入與輸出函數getchar、putchar。將括號中的「字符」顯示輸出到屏幕函數參數無參函數字符常量或字符變量或整型常量或整型變量函數值輸入字符的ASCII代碼輸出字符的ASCII代碼示例char a;a=getchar();//等價於scanf("%c",&a);putchar(a);//等價於
  • RDF 和 SPARQL 初探:以維基數據為例
    比如,顏色關係是給定的,那麼就可以向資料庫進行下面的查詢。查詢一:天空 + 顏色 = ?查詢二:?+ 顏色 = 藍色任何組織和個人,都可以定義自己的謂語。RDF 要求每套謂語必須有一個明確的 URL,通過 URL 區分不同的謂語。RDF 官方定義了一套常用的謂語,URL 如下。
  • php如何使用array_merge()函數?(代碼示例)
    示例1:使用整數鍵傳遞參數如果將參數傳遞給array_merge()函數,並且此數組參數的鍵為整數,則輸出數組中的鍵將從0開始重新編號,並將下一個元素的值遞增1。<?>輸出:示例2:合併兩個使用整數鍵的數組<?
  • 68講Python自動化辦公基礎 | 第3講:Excel+help函數
    嗨,你們好,我是九尾。
  • PHP7 新增intdiv()函數的使用詳解(代碼示例)
    源 / php中文網      源 / www.php.cnPHP 7 新增加了 intdiv() 函數,intdiv代表整數除法即對除法結果取整。這個函數返回給定被除數和除數除法的整數商。該函數從內部刪除被除數的餘數,使其能被除數整除並在除法後返回商。
  • Python編程:案例詳解輸出函數print
    flush -- 輸出是否被緩存通常決定於 file,但如果 flush 關鍵字參數為 True,流會被強制刷新。以上所有參數如果選擇默認值,可以不用輸入。那接下來我們結合實例,一個個參數來理解,為了方便快捷看到效果,在沒有特別聲明的情況下,下文中所有示例均是在Python IDLE的Shell中運行,如右圖所示(左圖是代碼編輯器Editor)。
  • WPS表COUNTIF函數用法示例教程
    WPS表的COUNTIF函數用於計算滿足給定條件的單元格區域中的單元格數量。COUNTIF函數也是一個條件。函數語法是COUNTIF(範圍、條件)第一個參數:範圍:統計計算的非空單元格範圍;第二個參數:條件:根據需要設置的條件,如> 100;「閱覽室OOFFICE網」軟體說明版本:WPS2019COUNTIF函數示例1-簡單應用程式書店的銷售編號