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实践详解