ShengBTE簡(jiǎn)單介紹、安裝與使用
ShengBTE
ShengBTE用迭代法求解聲子的完全線性化玻爾茲曼輸運(yùn)方程。這遠(yuǎn)遠(yuǎn)超出了廣泛使用的弛豫時(shí)間近似(relaxation-time ?approximation);在“正?!?準(zhǔn)動(dòng)量守恒)三聲子過(guò)程起相關(guān)作用的材料中,這種差異可能很重要。
通過(guò)使用來(lái)自從頭計(jì)算的輸入,ShengBTE產(chǎn)生具有預(yù)測(cè)能力的結(jié)果,而不需要擬合實(shí)驗(yàn)。
目前可以研究?jī)煞N體系:塊狀晶體材料及其納米線。前者主要的聲子散射機(jī)制是三聲子過(guò)程和同位素?zé)o序。而這些都可以在ShengBTE實(shí)現(xiàn):
同位素散射:使用田村公式(Tamura's formula)實(shí)現(xiàn)。公式中出現(xiàn)的狀態(tài)的投影振動(dòng)密度是用局部自適應(yīng)展寬算法計(jì)算的。
三聲子過(guò)程:從能量的一組三階導(dǎo)數(shù)計(jì)算出三聲子散射振幅。關(guān)鍵的一點(diǎn)是加強(qiáng)能量守恒,以便只考慮允許的過(guò)程。與解決問(wèn)題的其他方法相反,在ShengBTE中,這個(gè)問(wèn)題是使用局部自適應(yīng)的無(wú)參數(shù)方法來(lái)解決的。
作為輸入,ShengBTE需要一組二階和三階原子間力常數(shù),可能還需要固體的介電參數(shù)值。
這組變量通常是計(jì)算出來(lái)的從頭算DFT軟件包,例如VASP或者Quantum Espresso。在某些情況下,這些程序可以直接計(jì)算二階常數(shù);在其他情況下,需要Phonopy等輔助軟件來(lái)促進(jìn)這個(gè)過(guò)程。而ShengBTE的作者同時(shí)開(kāi)發(fā)了軟件thirdorder,在三階計(jì)算中扮演類(lèi)似的角色。
除了熱導(dǎo)率張量,ShengBTE還輸出以下量:
取樣q點(diǎn)的聲子頻率。
聲子群速度。
晶格比熱。
單位平均自由程的納米顆粒熱導(dǎo)率。
能量守恒允許處理的三聲子部分,有時(shí)稱(chēng)為三聲子相空間。
模式對(duì)三聲子相空間的貢獻(xiàn)。
態(tài)的振動(dòng)密度:總量和投影。
每模式對(duì)熱導(dǎo)率的貢獻(xiàn)。
累積熱導(dǎo)率:平均自由程小于閾值的聲子對(duì)此量的貢獻(xiàn)。
散射率:總量、區(qū)域貿(mào)易協(xié)定值、同位素和非諧波貢獻(xiàn)。
沿塊體任意晶向切割的納米線的熱導(dǎo)率。
總計(jì)和模式Grüneisen參數(shù)。
精確描述三聲子散射所需的能量的三階導(dǎo)數(shù)的數(shù)量很容易達(dá)到幾十萬(wàn)。因此,使用真實(shí)空間超級(jí)細(xì)胞方法進(jìn)行的直接計(jì)算會(huì)消耗大量計(jì)算資源。通過(guò)利用系統(tǒng)的對(duì)稱(chēng)性,thirdorder.py通??梢詫?wèn)題減少到幾百次DFT運(yùn)行。這意味著三階計(jì)算仍將是該過(guò)程中計(jì)算成本最高的部分,但對(duì)于單一化合物甚至中等大小的庫(kù)來(lái)說(shuō),這已經(jīng)是可以接受的計(jì)算量了。
在安裝前要檢測(cè)軟件安裝所需安裝環(huán)境,這里我采用自己在虛擬機(jī)上搭建的CentOS7系統(tǒng),在root賬戶(hù)下安裝好了Intel_parallel_studio和Anaconda3,并在此基礎(chǔ)上準(zhǔn)備安裝ShengBTE和thirdorder所需要的基本庫(kù)spglib。
安裝環(huán)境:
VMware Workstation Pro -16.0.0-16894299
CentOS Linux release 7.9.2009 (Core)
Linux version 3.10.0-957.el7.x86_64?
gcc version :10.2.0
icc ifort icpc mpiifort : Intel_parallel_studio_xe_2019
python3:Anaconda3-2021.11-Linux-x86_64
安裝軟件

spglib-1.9.7
ShengBTE-1.1.1
thirdorder-1.1.1
所需軟件安裝包下載地址:
spglib-1.9.7:
https://sourceforge.net/projects/spglib/
ShengBTE-1.1.1:
https://bitbucket.org/sousaw/shengbte/downloads/
thirdorder-1.1.1:
https://bitbucket.org/sousaw/thirdorder/downloads/

一
spglib安裝
首先解壓下載的spglib安裝包,并在解壓后的目錄中新建一個(gè)build目錄用做spglib的安裝目錄。
隨后執(zhí)行主目錄的configure文件,生成Makefile文件,然后對(duì)spglib進(jìn)行編譯安裝。
tar vzxf spglib-1.9.7.tar.gz
cd spglib-1.9.7/
mkdir build && cd build && pwd && cd ../
#建立安裝文件夾,并輸出安裝目錄路徑
./configure –prefix=/opt/ShengBTE/spglib-1.9.7/build
#在安裝目錄中生成Makefile文件,并make編譯
#注:/opt/ShengBTE/spglib-1.9.7/build是我此次安裝時(shí)的目錄,大家在具體安裝時(shí)請(qǐng)適當(dāng)調(diào)整。
make && make install
如果沒(méi)有報(bào)錯(cuò)的話(huà),spglib就編譯完成了,spgib的安裝主要是給ShengBTE準(zhǔn)備一個(gè)libsymspg.a文件,當(dāng)然在thirdorder安裝的時(shí)候還需要?jiǎng)e的文件,這些都可以在build目錄里找到,具體路徑要牢記,我們?cè)诤竺娴陌惭b中會(huì)經(jīng)常用到。
二
ShengBTE安裝
由于最新下載的ShengBTE安裝包是zip格式的壓縮包,則不再需要tar命令解壓,直接手動(dòng)解壓后拷貝到安裝目錄即可,在安裝前需要先準(zhǔn)備一個(gè)arch.make文件,而ShengBTE自帶一個(gè)arch.make.examp文件,可以在此基礎(chǔ)上修改并另存成arch.make文件再移動(dòng)到Src文件夾下。
在arch.make.example的基礎(chǔ)上,在前面編輯好libsymspg.a文件的路徑,由于當(dāng)前系統(tǒng)里安裝的編譯器為Intel_parallel_studio_xe_2019的mpiifort,所以在文件中也需要將mpif90改為mpiifort。
未修改的arch.make.example文件:

修改后另存為arch.make文件:
export FFLAGS=-traceback -debug -O2 -static_intel
export LDFLAGS=/opt/ShengBTE/spglib-1.9.7/build/lib/libsymspg.a?
#注:這里的/opt/ShengBTE/spglib-1.9.7/build是我自己安裝時(shí)的文件夾,具體安裝的時(shí)候請(qǐng)調(diào)整。
export MPIFC=mpiifort
#注:我所使用的編譯器為Intel_parallel_studio_xe_2019的mpiifort,具體安裝的時(shí)候如果報(bào)錯(cuò)不能識(shí)別mpiifort請(qǐng)根據(jù)安裝環(huán)境適當(dāng)調(diào)整
MKL=$(MKLROOT)/lib/intel64/libmkl_lapack95_lp64.a -Wl,--start-group \
$(MKLROOT)/lib/intel64/libmkl_intel_lp64.a? ? ? ? ? ?\
$(MKLROOT)/lib/intel64/libmkl_sequential.a? ? ? ? ? ?\
$(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm
export LAPACK=$(MKL)
export LIBS=$(LAPACK)
這里主要是補(bǔ)充了我們make編譯出的libsymspg.a文件的路徑,以及更改了編譯器為mpiifort,在下方也調(diào)整了MKL的配置,大家在安裝的時(shí)候可以復(fù)制上方的內(nèi)容,手動(dòng)更改libsymspg.a文件的路徑,然后可以嘗試進(jìn)行安裝。
接下來(lái)直接在Src文件夾內(nèi)執(zhí)行命令make就可以了
make
等待編譯完成后會(huì)在上級(jí)目錄中生成ShengBTE的執(zhí)行文件。

這里進(jìn)入Test-QE文件夾,按照軟件自帶的測(cè)試文件對(duì)已安裝的ShengBTE軟件進(jìn)行測(cè)試。
cd Test-QE
#which mpirun
mpirun -np 2 ../ShengBTE
這里我檢查了一下mpirun的位置,是因?yàn)樘摂M機(jī)里有著Intel_parallel_studio_xe_2019和openMPI等多版本的mpirun,大家自行測(cè)試的時(shí)候可以跳過(guò)這一段。

可以看到ShengBTE已經(jīng)可以正常運(yùn)行,并輸出計(jì)算結(jié)果。

之后我們便可以手動(dòng)修改環(huán)境變量,將編譯好的ShengBTE執(zhí)行文件添加到環(huán)境變量中,在~/.bashrc文件最后添加如下一行,其中$ShengBTE是代表的你安裝ShengBTE的文件路徑也就是ShengBTE執(zhí)行文件所在的目錄
export PATH=/opt/ShengBTE/ShengBTE:$PATH
#注:/opt/ShengBTE/ShengBTE是我此次安裝ShengBTE的路徑,具體安裝時(shí)請(qǐng)適當(dāng)調(diào)整
這樣就可以在提交任務(wù)運(yùn)行ShengBTE的時(shí)候不用再去找執(zhí)行文件的路徑或者把它拷貝到你計(jì)算的文件夾里去啦。當(dāng)你需要執(zhí)行計(jì)算的時(shí)候只需要輸入下面的命令就可以了,其中N代表你所使用的核數(shù)。
mpirun -np N ShengBTE |tee ?BTE.out
三
thirdorder安裝
我們將解壓后的thirdorder文件夾拷貝到安裝目錄,進(jìn)入目錄首并檢查setup.py文件

在文件中間提示我們要添加spglib.h文件和spglib的shared library 文件夾路徑到這個(gè)setup.py文件中,這時(shí)我們便根據(jù)之前已經(jīng)安裝好的spglib的安裝路徑補(bǔ)充進(jìn)去。
其中spglib.h文件在/opt/ShengBTE/spglib-1.9.7/build/include/spglib文件夾內(nèi),而shared library文件夾則為上層目錄中的lib文件夾,路徑為/opt/ShengBTE/spglib-1.9.7/build/lib,完善后的setup.py文件如下。

保存后我們?cè)诎惭b文件夾中執(zhí)行命令運(yùn)行?compile.sh進(jìn)行安裝
sh compile.sh
如果在安裝過(guò)程中出現(xiàn)例如gcc報(bào)錯(cuò)或lapacke.h或python.h等問(wèn)題,需要適安裝環(huán)境處理。這次安裝前已經(jīng)安裝好了Anaconda3包并配置好環(huán)境變量,安裝過(guò)程相對(duì)簡(jiǎn)單,具體安裝請(qǐng)參加其他教程。
安裝完成后文件夾內(nèi)會(huì)出現(xiàn)文件thirdorder_core.cpython-38-x86_64-linux-gnu.so,這個(gè)有和其他安裝教程做對(duì)比,可能會(huì)有一定不同,但接下來(lái)對(duì)所安裝的thirdorder進(jìn)行測(cè)試即可證明安裝是否成功。
首先我們配置一下thirdorder的環(huán)境變量,與ShengBTE類(lèi)似
export PATH=/opt/ShengBTE/thirdorder:$PATH
#注:/opt/ShengBTE/thirdorder是我此次安裝thirdorder的路徑,具體安裝時(shí)請(qǐng)適當(dāng)調(diào)整
我們找一個(gè)測(cè)試文件夾,在文件夾中準(zhǔn)備好一個(gè)VASP計(jì)算所需要的POSCAR文件,例如一個(gè)含有兩個(gè)Si原子的晶胞
cubic diamond
? ?5.5
?0.0? ? 0.5? ? ?0.5
?0.5? ? 0.0? ? ?0.5
?0.5? ? 0.5? ? ?0.0
?Si
? 2
Direct
?-0.125 -0.125 -0.125
? 0.125? 0.125? 0.130?
然后我們?cè)谖募A中執(zhí)行如下命令
thirdorder_vasp.py sow 4 4 4 -3
得到輸出界面如下

在測(cè)試文件夾內(nèi)同時(shí)也得到了24個(gè)3RD.POSCAR和一個(gè)SPOSCAR。代表我們thirdorder安裝成功并可以直接運(yùn)行。

4
ShengBTE和thirdorder的使用
在ShengBTE和thirdorder安裝文件中均帶有其“使用說(shuō)明書(shū)”,且都命名為README.md,里面有一些基本的安裝、使用介紹,尤其是一些參數(shù)的介紹,初學(xué)者在使用之前要認(rèn)真閱讀并理解,對(duì)以后遇到問(wèn)題有很大幫助,這也是對(duì)于軟件的最基礎(chǔ)的了解。