lammps声子谱配置与计算

如果对lammps源码编译安装完全不懂,先看这个 Linux系统源码编译安装LAMMPS

其实也就是安装依赖下载源码散步编译就ok,下面简单写一下

lammps依赖

为了能输出视频,对于ubuntu20.04需要安装依赖,顺带配置一下python支持,GPU就不配置了

1
sudo -E apt-get install git python3-pip build-essential cmake automake libtool -y;

lammps对python的支持

1
sudo apt install python3-pip -y

lammps视频输出

1
sudo apt install ffmpeg gzip -y

lammps并行支持

1
sudo apt install libopenmpi-dev openmpi-bin openmpi-common openmpi-doc

lammps声子依赖

1
sudo apt install fftw3 libfftw3-dev libfftw3-bin -y

其中岂不是还缺一些东西,我也记不清了,安装时出现报错了直接百度,基本能找到

编译安装lammps

下载源码

1
git clone https://github.com/lammps/lammps.git

编译

1
cmake -D PKG_PHONON=on -D PKG_KSPACE=on -D PKG_MANYBODY=yes -D -D BUILD_SHARED_LIBS=on -D LAMMPS_EXCEPTIONS=on -D PKG_PYTHON=on ../cmake

其中 PKG_MANYBODY 为我用的势能所需

声子色谱

我这里用的方法是上海交大的老师开源程序

lammps相关命令的接口为 fix_phonon,也就是这个页面:PHONON,可以看到其中的说明,示例文件在这里 phonon,相关的开源主页在 lingtikong-phanaclone 下来

1
git clone https://github.com/lingtikong/phana

其实直接使用编译好的文件 precompiled/phana 也行,可以跳过安装,直接进入测试步骤:重复示例。(但是我喜欢自己编译)

安装

这个库,编译时依赖四个库 clapack/3.2.1tricubic/1.0spglib/1.9.7fftw/3.3.7,其中 clapacktricubic是必须的

如果是mac,先自己百度把 brew 配置好,然后终端输入如下命令,安装 gcclibtoolautomake

1
brew install gcc libtool automake

phana依赖

lib 文件夹里,直接按照 README编译 clapack 和 tricubic

如果要修改依赖的安装路径,比如 MAC电脑,建议安装到 /usr/local/opt 而不要安装到 /opt:每个./configure 后面的安装路径修改一下,并且 Makefile 里面的 /opt/ 也对应修改一下

编译phana

如果是linux,这一步不建议,直接跳过自己编译,MAC电脑必须自己编译。

编译phana退项目根目录,只要两个必须库,需要注释掉几行代码,打开Makefile

注释掉spglib/1.9.7fftw/3.3.7相关的

1
2
3
4
5
6
7
8
9
10
11
# # spglib, used to get the irreducible q-points
# # if SFLAG is not set, spglib won't be used.
# SFLAG = -DUseSPG
# SPGINC = -I/opt/spglib/1.9.7/include/spglib
# SPGLIB = -L/opt/spglib/1.9.7/lib -lsymspg

# # FFTW 3, used to deduce the force constants in real space
# # if FFLAG is not set, fftw won't be used.
# FFLAG = -DFFTW3
# FFTINC = -I/opt/fftw/3.3.7/include
# FFTLIB = -L/opt/fftw/3.3.7/lib -lfftw3

然后直接输入sudo make等待生成phono即可

高级

另外两个库spglib/1.9.7fftw/3.3.7也可以编译进去

依赖

这个项目不支持最新版的spglib,建议都按照对应的版本吧,版本信息都是在 Makefile 里查看到的

spglib

点我去这下载1.9.7,别问我怎么知道的,多学习git与github

1
2
3
4
5
6
7
8
9
10
11
12
13
# 下载解压
wget https://github.com/spglib/spglib/archive/refs/tags/v1.9.7.zip

unzip v1.9.7.zip && cd spglib-1.9.7

# 查看怎么编译
cat ./README.md

# 预编译,这些步骤需要automake libtool,前面已经安装了
mkdir m4 && aclocal && autoheader && libtoolize && touch INSTALL NEWS README AUTHORS && automake -acf && autoconf

# 编译安装
./configure --prefix=/opt/spglib/1.9.7 && make && sudo make install
fftw

去官网下载3.3.7版本

1
2
3
4
5
wget https://fftw.org/pub/fftw/fftw-3.3.7.tar.gz

tar xzvf fftw-3.3.7.tar.gz && cd fftw-3.3.7

./configure --prefix=/opt/fftw/3.3.7 && make -j && sudo make install

完全编译

回到刚才项目的根目录,不要注释 之前的那几行了

然后 make 编译,直至结束并出现 phana 这个文件,此时安装的那些依赖已经不需要了,只要这个可执行文件就可以了

重复示例

lammps 文件夹里的 examples/PACKAGES/phonon 复制到一个新的地方,然后打开

  • in.graphene: lammps脚本文件

  • SiC.tersoff:势能

  • data.pos:lammps模型(一个10*10菱形的石墨烯)

  • map.in:石墨烯模型的晶格划分,每一列的含义分别是:

    这个晶胞位于x轴第几个y轴第几个z轴第几个这个原子是这个晶胞的第几个原子原子编号
    00001
    00012
    10003
    10014
    20005
  • in.disp: 刚才编译的phana用这个文件以及lmp模拟生成的文件可以生成disp.dat和pdisp.gnuplot,声子这一块我还没弄明白,后面学习一下再补充

就只有这5个文件需要,其他的都是生成的

你可以运行一下模拟,也可以只是测试一下方才编译的phana

模拟·

1
2
3
lmp -in in.graphene
# 也可以并行,6指的是你的cpu核心数,而不是线程数,不要超线程
mpirun -np 6 lmp -in in.graphene

这一步只是为了生成

测试

1
phana Graphene.bin.6000000 < in.disp

生成

1
disp.dat和pdisp.gnuplot

自动画图需要这个

1
sudo apt install gnuplot

然后

1
gnuplot pdisp.gnuplot

结束,生成图片 pdisp.eps 电脑一般都能打开,是个矢量图


本文作者:yuhldr
本文地址https://yuhldr.github.io/posts/db8c1b0a.html
版权声明:转载请注明出处!