学习笔记-QE

Quantum Espresso是一款第一性原理计算软件,主要用于计算固体相关性质。本文主要记录QE软件的学习经历!

安装

参考链接:Quantum ESPRESSO在Linux中的安装方法
CentOS 7系统中编译失败(尴尬),只得安装预编译版本,版本为6.5 (截至2021.10)。安装命令如下:

1
2
yum install epel-release
yum install quantum-espresso-openmpi

软件安装默认路径为/usr/lib64/openmpi/bin/,可执行文件相比自行编译安装多了_openmpi后缀。非root用户在~/.bashrc环境变量文件里加入以下内容:

1
export PATH=$PATH:/usr/lib64/openmpi/bin/

root用户添加以下内容:

1
2
3
export PATH=$PATH:/usr/lib64/openmpi/bin/
export OMPI_ALLOW_RUN_AS_ROOT=1
export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1

计算执行命令如:

1
mpirun -n 48 pw.x_openmpi < pt.scf.in  > pt.scf.out

图形化界面

burai支持Windows、Mac和Ubuntu系统,可通过官网下载。可通过burai直接打开cif文件,生成QE计算输入文件,作用类似于GaussView。

赝势文件下载

参考链接:QE的赝势不能打包下载了?
QE官网赝势下载链接:PS LIBRARY
通过python脚本爬虫批量下载。
赝势详细介绍:赝势的选择和使用

输入文件介绍

参考链接:QE的那点B事儿1
文件后缀为.in,例如Si_SCF.in。
常用计算模块(详见Quantum Espresso的功能清单):

1
2
3
4
5
6
pw.x  自洽模块
ph.x 声子计算模块
pp.x 后处理模块 数据处理
dos.x
bands.x
xspepctra.x K-EDGE L-EDGE X射线吸收

输入文件分为基本设置、体系、电子步、原子信息(赝势文件和原子坐标)和K点设置,计算类型可通过官网查询,计算结果能量单位为里德堡单位Ry

1
2
1 bohr = 1 a.u. (atomic unit) = 0.52917720859 angstroms.
1 Rydberg (Ry) = 13.60569193 eV
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
&control //基本设置
calculation='scf' scf自洽计算,计算类型
restart_mode='from_scratch' 尝试读取重算
prefix='pt' 计算得到的波函数文件位置
pseudo_dir='../pseudo/' 赝势文件存放位置
outdir='../tmp/' 临时文件夹
/

&system //体系
ibrav=8, celldm(1)=9.28990, celldm(2)=1.73206, celldm(3)=1.09955, 晶体参数,长度单位为玻尔,ibrav对应布拉维格子
nat=2, 晶体里面有2个原子
ntyp=1, 原子类型数量,或只用一种赝势
ecutwfc=60.0, 波函数截断能 Norm-conserving模守恒赝势要求截断能高
ecutrho=720.0, 电荷密度截断能 12倍ecutwfc 越大有助收敛;与ecutwfc大小相关, Norm-conserving模守恒赝势数值为ecutwfc*4 Ultrosoft超软赝势数值为ecutwfc*(8 ~ 12) PAW ecutwfc*4
/

&electrons //电子步
mixing_beta=0.7,
conv_thr=1d-8, 电子步收敛标准,默认为1d-6
/

ATOMIC_SPECIES //原子信息
Si 28.00 Si.pz-vbc.UPF 原子信息及所用赝势名称
ATOMIC_POSITIONS (alat) 原文位置 (分子坐标)
Si 0.00 0.00 0.00
Si 0.25 0.25 0.25
K_POINTS automatic K点设置 (自动)
4 4 4 1 1 1

截断能测试脚本,其余测试脚本类似:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
name="si.ecut"
n=9; s=1;
for ecut in 20 30 40 50 55 60 65 70 75 80 85 90; do
cat > $name.$ecut.in << EOF
&control
calculation='scf'
restart_mode='from_scratch'
prefix='si'
pseudo_dir='../pseudo/'
outdir='../tmp/'
/

&system
ibrav=2
celldm(1)=10.2625
nat=2
ntyp=1
ecutwfc=${ecut}
ecutrho=720.0
/

&electrons
mixing_beta=0.7
conv_thr=1d-8
/

ATOMIC_SPECIES
Si 28.00 Si.pz-vbc.UPF
ATOMIC_POSITIONS (alat)
Si 0.00 0.00 0.00
Si 0.25 0.25 0.25
K_POINTS automatic
${n} ${n} ${n} ${s} ${s} ${s}

EOF
mpirun -n 8 pw.x_openmpi <$name.$ecut.in> $name.$ecut.out

awk '/\!/ {E=$5} $1=="PWSCF" {printf"%4d %s %s\n", '$ecut', E,$3}' $name.$ecut.out >> calc-ecut.out

done

案例

参考链接:QE实践详解