lammps——fix phonon

lammps——fix phonon

來自專欄計算物理/材料入坑筆記10 人贊了文章

fix phonon 命令

Syntax

fix ID group-ID phonon N Noutput Nwait map_file prefix keyword values ...

  • ID, group-ID are documented in fix command
  • phonon = style name of this fix command
  • N = 多少時間步長測量一次格林函數
  • Noutput = 多少次測量輸出一次動力學矩陣
  • Nwait = 測量前要等待多少時間步長
  • map_file = file or GAMMA

文件是包含原子ID和格點索引之間映射信息的文件。

GAMMA flags to treate the whole simulation box as a unit cell, so that the mappinginfo can be generated internally. In this case, dynamical matrix at only the gamma-point

will/can be evaluated.

  • prefix = prefix for output files
  • one or none keyword/value pairs may be appended
  • keyword = sysdim or nasr

sysdim value = d d = dimension of the system, usually the same as the MD model dimensionnasr value = n n = number of iterations to enforce the acoustic sum rule

Examples

fix 1 all phonon 20 5000 200000 map.in LJ1D sysdim 1fix 1 all phonon 20 5000 200000 map.in EAM3Dfix 1 all phonon 10 5000 500000 GAMMA EAM0D nasr 100

Description

根據一組原子的漲落 - 耗散理論,從分子動力學模擬計算動力學矩陣。

考慮一個三維標記為l =(l1,l2,l3)的N個晶胞,其中li是整數。 每個晶胞由三個線性無關的矢量a1,a2,a3定義,形成一個平行六面體,原子編號為k。

基於漲落 - 耗散理論,系統在倒空間中的力常係數由下式給出 (Campana , Kong)

Φ_{kα,k′β}(q)=k_BTG^{?1}_{kα,k′β}(q)

其中G是格林函數係數,由下式給出

G_{kα,k′β}(q)=?u_{kα}(q)?u^?_{k′β}(q)?

其中 ?…? 表示系綜平均, 以及

u_{kα}(q)=∑_lu_{lkα}exp(iqr_l)

u_{kα}(q) 是晶胞中第k個原子位移的α分量。 實際上,格林函數係數也可以按照下面的公式進行測量,

G_{kα,k′β}(q)=?R_{kα}(q)?R^?_{k′β}(q)???R?_{kα}(q)??R?^?_{k′β}(q)

其中R是原子的瞬時位置,?R?是原子平均位置。 它提供了與位移方法基本相同的結果,並且更容易在MD代碼中實現。

一旦力常數矩陣已知,動力學矩陣D就可以通過

D_{kα,k′β}(q)=frac{1}{sqrt{m_km_k′}}Φ_{kα,k′β}(q)

其特徵值恰好是q處的聲子頻率。

此fix 程序使用指定組中的原子位置並計算兩點相關性。 為了達成這個目的, 每個Neverysteps 檢查原子的位置,並將其傅里葉變換為倒空間,然後完成平均過程和相關計算。 在每次 Noutput measurements 之後,矩陣G(q)被計算並倒置以獲得彈性剛度係數。 然後構造動力學矩陣並將其寫入二進位格式的 prefix.bin.timestep 文件和每個 wavevector q 的文件 prefix.log 中。

這個方法的詳細描述可以在這裡找到 (Computer Physics Communications [182](2):540-541 (2011).).

sysdim 關鍵字是可選的。如果指定的值小於LAMMPS模擬的維數,則其值用於動力學矩陣計算。例如,使用LAMMPS模擬2D或3D系統,可以使用sysdim = 1來計算一維原子鏈的聲子色散。

nasr 關鍵字是可選的。採用迭代過程在Γ處強制關於Φ的聲子求和規則,並且由關鍵詞 nasr 提供的數給出迭代的總數。對於單胞只有一個原子的系統,nasr = 1 就足夠了;對於其他系統,nasr = 10通常就足夠了。

map_file 包含晶格索引和原子ID之間的映射信息,它告訴代碼哪個原子坐落在哪個格點上;晶格索引從0開始。可以使用輔助代碼 latgen 來為各種晶體生成兼容映射文件。

在模擬非周期性系統的情況下(整個模擬框被視為單胞),可以將 map_file 設置為GAMMA,以便映射信息將在內部生成並且不需要文件。在這種情況下,只有伽馬點處的動力學矩陣可以被計算。請記住,fix phonon是為 cyrstals 設計的,如果晶胞太大,效率會很低,甚至會降低 lammps 的性能。

計算的動力學矩陣元寫為能量/距離^ 2 /質量單位。日誌文件中 q 點的坐標是相應倒易格的基向量的單位。

Restart, fix_modify, output, run start/stop, minimize info:

沒有關於此fix程序的信息被寫入二進位重啟文件。

fix 程序支持 fix_modify temp 選項。 您可以使用它將溫度計算從thermo_temp更改為反映組中原子真實溫度的溫度計算。

此fix 不存儲全局標量或矢量或每原子量,以供各種輸出命令訪問。

相反,此fix 程序使用指定的前綴將其初始化信息(包括映射信息)和計算的動力學矩陣輸出到文件 prefix.log。 動力學矩陣也以二進位格式寫入文件prefix.bin.timestep。 這些可以通過工具/聲子中的後處理工具讀取,以計算聲子色散曲線/和聲子態密度。

此 fix 程序的參數不能與 run command的開始/停止關鍵字一起使用。

在能量最小化期間不會調用此fix程序。

限制

此 fix 假定具有周期性晶格的晶體系統。 系統的溫度不應超過熔化溫度以保持系統處於固態。

此 fix 程序是USER-PHONON軟體包的一部分。 只有在LAMMPS使用該軟體包構建時才能啟用。 請參閱 make LAMMPS 部分了解更多信息。

此 fix 需要使用FFT庫構建LAMMPS。 有關更多信息,請參閱 make LAMMPS section。

相關命令

compute msd

默認

該選項默認為sysdim =與維度命令所指定的維度相同,且nasr = 20。


(Campana) C. Campana and M. H. Muser, Practical Green』s function approach to the simulation of elastic semi-infinite solids, Phys. Rev. B [74], 075420 (2006)

(Kong) L.T. Kong, G. Bartels, C. Campana, C. Denniston, and Martin H. Muser, Implementation of Green』s function molecular dynamics: An extension to LAMMPS, Computer Physics Communications [180](6):1004-1010 (2009).

L.T. Kong, C. Denniston, and Martin H. Muser, An improved version of the Green』s function molecular dynamics method, Computer Physics Communications [182](2):540-541 (2011).

(Kong2011) L.T. Kong, Phonon dispersion measured directly from molecular dynamics simulations, Computer Physics Communications [182](10):2201-2207, (2011).


Cu聲子譜計算實例

# 3D copper block simulationboundary p p punits metalatom_style atomic# geometryread_data data.pos# EAM potentialpair_style eampair_coeff * * cuu3.eamneighbor 0.5 nsqneigh_modify every 1 delay 0 check yes#Langevin random seedvariable r equal 57085variable t equal 300variable d equal 1# initializevelocity all create $t 28459 rot yes dist gaussian mom yesreset_timestep 0# fixes fix 1 all npt temp $t $t $d iso 1. 1. 1. pchain 8 drag 1.0fix 2 all phonon 10 50000 500000 map.in CuPhonon#timestep 2e-3# output# 1 2 3 4 5 6 7 8 9 10 11 12thermo_style custom step temp pe ke press vol lx ly lz xy xz yzthermo 100restart 2000000 restart.one restart.two# executionrun 6500000write_restart Restart.final

phonon dispersion

phonon density of states

該目錄說明了fix聲子用於計算動力學矩陣以及基於EAM potentail 的FCC Cu 的聲子色散曲線。

該目錄下的文件:

1)CuPhonon.bin.6500000:通過fix phonon 最後輸出二進位文件

2)CuPhonon.log:fix-phonon 的日誌文件

3)cuu3.eam:Cu的EAM勢文件

4)data.pos:LAMMPS輸入文件

5)disp.dat:來自Cu Phonon.bin.6500000的聲子色散數據

6)disp-expr.dat:Cu的實驗聲子色散數據

7)disp-ld.dat:基於EAM的晶格動力學的聲子色散數據

8)dos.dat:來自CuPhonon.bin.6500000的phonon DOS數據

9)dos-expr.dat:Cu的實驗性PDOS

10)dos-ld.dat:基於EAM的LD的PDOS

11)in.disp / in.disp2:輸入文件以獲得 phana 的disp.dat

12)in.dos:輸入文件以獲得phana的dos.dat

13)in.EAM3D:LAMMPS輸入文件

14)log.lammps:LAMMPS日誌文件

15)map.in:fix phonon 的LAMMPS輸入文件

16)pdisp.eps:聲子色散曲線圖

17)pdos.eps:聲子態密度圖

18)plot.disp:用於生成pdisp.eps的gnuplot腳本

19)plot.dos:gnuplot腳本來生成pdos.eps

20)pdisp.gnuplot:gnuplot腳本生成pdisp.eps(自動生成)

21)自述文件

要運行這個例子,只需調用:

- > lmp -in in.EAM3D -screen none

一旦完成,可以使用輔助分析代碼「phana」來獲得「disp.dat」和「dos.dat」...

- > phana CuPhonon.bin.6500000 <in.disp

- > phana CuPhonon.bin.6500000 <in.dos

然後使用 gnuplot 腳本文件「plot.disp」/「plot.dos」生成pdisp.eps / pdos.eps:

- > gnuplot plot.pdisp

- > gnuplot plot.pdos

由此產生的「pdisp.eps / pdos.eps」將測得的聲子色散與實驗數據以及傳統晶格動力學的數據進行比較。

或者,也可以使用:

- > phana CuPhonon.bin.6500000 <in.disp2

- > gnuplot pdisp.gnuplot

自動產生聲子色散。

註:這裡提供的二進位文件在某些??計算機上可能無法讀取,因為不同架構之間的不兼容。


任務腳本

source /etc/profile.d/00-modules.sh#BSUB -W 1000:00#BSUB -n 12#BSUB -R span[ptile=12]#BSUB -q normal#BSUB -e %J.err#BSUB -o %J.out#BSUB -J lammpssource /etc/profile.d/00-modules.shINPUT=in.EAM3D# The program we want to execute (modify to suit your setup)EXEC=/opt/lammps/bin/lmp_31Mar17.mvapich2module load mvapich2/2.2-intel-2015echo $LSB_HOSTS > lsb_hostsfor h in `echo $LSB_HOSTS`do echo ${h} >> machinefile.$LSB_JOBIDdone# count how many processors are allocatedNP=0for TOKEN in $LSB_HOSTSdo ((NP++))donempiexec -n ${NP} -machinefile machinefile.$LSB_JOBID ${EXEC} < ${INPUT}rm -f machinefile.$LSB_JOBID

推薦閱讀:

TAG:分子動力學 | LAMMPS | 計算物理學 |