ShengBTE简单介绍、安装与使用
ShengBTE
ShengBTE用迭代法求解声子的完全线性化玻尔兹曼输运方程。这远远超出了广泛使用的弛豫时间近似(relaxation-time approximation);在“正常”(准动量守恒)三声子过程起相关作用的材料中,这种差异可能很重要。
通过使用来自从头计算的输入,ShengBTE产生具有预测能力的结果,而不需要拟合实验。
目前可以研究两种体系:块状晶体材料及其纳米线。前者主要的声子散射机制是三声子过程和同位素无序。而这些都可以在ShengBTE实现:
同位素散射:使用田村公式(Tamura's formula)实现。公式中出现的状态的投影振动密度是用局部自适应展宽算法计算的。
三声子过程:从能量的一组三阶导数计算出三声子散射振幅。关键的一点是加强能量守恒,以便只考虑允许的过程。与解决问题的其他方法相反,在ShengBTE中,这个问题是使用局部自适应的无参数方法来解决的。
作为输入,ShengBTE需要一组二阶和三阶原子间力常数,可能还需要固体的介电参数值。
这组变量通常是计算出来的从头算DFT软件包,例如VASP或者Quantum Espresso。在某些情况下,这些程序可以直接计算二阶常数;在其他情况下,需要Phonopy等辅助软件来促进这个过程。而ShengBTE的作者同时开发了软件thirdorder,在三阶计算中扮演类似的角色。
除了热导率张量,ShengBTE还输出以下量:
取样q点的声子频率。
声子群速度。
晶格比热。
单位平均自由程的纳米颗粒热导率。
能量守恒允许处理的三声子部分,有时称为三声子相空间。
模式对三声子相空间的贡献。
态的振动密度:总量和投影。
每模式对热导率的贡献。
累积热导率:平均自由程小于阈值的声子对此量的贡献。
散射率:总量、区域贸易协定值、同位素和非谐波贡献。
沿块体任意晶向切割的纳米线的热导率。
总计和模式Grüneisen参数。
精确描述三声子散射所需的能量的三阶导数的数量很容易达到几十万。因此,使用真实空间超级细胞方法进行的直接计算会消耗大量计算资源。通过利用系统的对称性,thirdorder.py通常可以将问题减少到几百次DFT运行。这意味着三阶计算仍将是该过程中计算成本最高的部分,但对于单一化合物甚至中等大小的库来说,这已经是可以接受的计算量了。
在安装前要检测软件安装所需安装环境,这里我采用自己在虚拟机上搭建的CentOS7系统,在root账户下安装好了Intel_parallel_studio和Anaconda3,并在此基础上准备安装ShengBTE和thirdorder所需要的基本库spglib。
安装环境:
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安装包,并在解压后的目录中新建一个build目录用做spglib的安装目录。
随后执行主目录的configure文件,生成Makefile文件,然后对spglib进行编译安装。
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是我此次安装时的目录,大家在具体安装时请适当调整。
make && make install
如果没有报错的话,spglib就编译完成了,spgib的安装主要是给ShengBTE准备一个libsymspg.a文件,当然在thirdorder安装的时候还需要别的文件,这些都可以在build目录里找到,具体路径要牢记,我们在后面的安装中会经常用到。
二
ShengBTE安装
由于最新下载的ShengBTE安装包是zip格式的压缩包,则不再需要tar命令解压,直接手动解压后拷贝到安装目录即可,在安装前需要先准备一个arch.make文件,而ShengBTE自带一个arch.make.examp文件,可以在此基础上修改并另存成arch.make文件再移动到Src文件夹下。
在arch.make.example的基础上,在前面编辑好libsymspg.a文件的路径,由于当前系统里安装的编译器为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是我自己安装时的文件夹,具体安装的时候请调整。
export MPIFC=mpiifort
#注:我所使用的编译器为Intel_parallel_studio_xe_2019的mpiifort,具体安装的时候如果报错不能识别mpiifort请根据安装环境适当调整
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)
这里主要是补充了我们make编译出的libsymspg.a文件的路径,以及更改了编译器为mpiifort,在下方也调整了MKL的配置,大家在安装的时候可以复制上方的内容,手动更改libsymspg.a文件的路径,然后可以尝试进行安装。
接下来直接在Src文件夹内执行命令make就可以了
make
等待编译完成后会在上级目录中生成ShengBTE的执行文件。

这里进入Test-QE文件夹,按照软件自带的测试文件对已安装的ShengBTE软件进行测试。
cd Test-QE
#which mpirun
mpirun -np 2 ../ShengBTE
这里我检查了一下mpirun的位置,是因为虚拟机里有着Intel_parallel_studio_xe_2019和openMPI等多版本的mpirun,大家自行测试的时候可以跳过这一段。

可以看到ShengBTE已经可以正常运行,并输出计算结果。

之后我们便可以手动修改环境变量,将编译好的ShengBTE执行文件添加到环境变量中,在~/.bashrc文件最后添加如下一行,其中$ShengBTE是代表的你安装ShengBTE的文件路径也就是ShengBTE执行文件所在的目录
export PATH=/opt/ShengBTE/ShengBTE:$PATH
#注:/opt/ShengBTE/ShengBTE是我此次安装ShengBTE的路径,具体安装时请适当调整
这样就可以在提交任务运行ShengBTE的时候不用再去找执行文件的路径或者把它拷贝到你计算的文件夹里去啦。当你需要执行计算的时候只需要输入下面的命令就可以了,其中N代表你所使用的核数。
mpirun -np N ShengBTE |tee BTE.out
三
thirdorder安装
我们将解压后的thirdorder文件夹拷贝到安装目录,进入目录首并检查setup.py文件

在文件中间提示我们要添加spglib.h文件和spglib的shared library 文件夹路径到这个setup.py文件中,这时我们便根据之前已经安装好的spglib的安装路径补充进去。
其中spglib.h文件在/opt/ShengBTE/spglib-1.9.7/build/include/spglib文件夹内,而shared library文件夹则为上层目录中的lib文件夹,路径为/opt/ShengBTE/spglib-1.9.7/build/lib,完善后的setup.py文件如下。

保存后我们在安装文件夹中执行命令运行 compile.sh进行安装
sh compile.sh
如果在安装过程中出现例如gcc报错或lapacke.h或python.h等问题,需要适安装环境处理。这次安装前已经安装好了Anaconda3包并配置好环境变量,安装过程相对简单,具体安装请参加其他教程。
安装完成后文件夹内会出现文件thirdorder_core.cpython-38-x86_64-linux-gnu.so,这个有和其他安装教程做对比,可能会有一定不同,但接下来对所安装的thirdorder进行测试即可证明安装是否成功。
首先我们配置一下thirdorder的环境变量,与ShengBTE类似
export PATH=/opt/ShengBTE/thirdorder:$PATH
#注:/opt/ShengBTE/thirdorder是我此次安装thirdorder的路径,具体安装时请适当调整
我们找一个测试文件夹,在文件夹中准备好一个VASP计算所需要的POSCAR文件,例如一个含有两个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
然后我们在文件夹中执行如下命令
thirdorder_vasp.py sow 4 4 4 -3
得到输出界面如下

在测试文件夹内同时也得到了24个3RD.POSCAR和一个SPOSCAR。代表我们thirdorder安装成功并可以直接运行。

4
ShengBTE和thirdorder的使用
在ShengBTE和thirdorder安装文件中均带有其“使用说明书”,且都命名为README.md,里面有一些基本的安装、使用介绍,尤其是一些参数的介绍,初学者在使用之前要认真阅读并理解,对以后遇到问题有很大帮助,这也是对于软件的最基础的了解。