ph.x
是 Quantum Espresso 软件套件中的一个重要模块,用于计算材料的声子谱和相关的物理性质,如热导率、热膨胀系数等。声子是晶格振动的量子化模式,对理解材料的热力学性质、电输运性质以及光学性质至关重要。ph.x
模块基于密度泛函微扰理论(Density Functional Perturbation Theory, DFPT)进行计算,能够高效地处理周期性固体系统中的声子问题。
密度泛函微扰理论(DFPT)是密度泛函理论(DFT)的一种扩展,用于计算材料在小扰动下的响应。DFPT 的核心思想是在 DFT 基础上引入一个小的外部扰动,通过计算系统的响应来得到声子谱和其他相关的物理性质。具体步骤如下:
基态计算:使用 pw.x
模块计算材料的基态电子结构,得到自洽场(Self-Consistent Field, SCF)波函数和能量。
微扰计算:在基态波函数的基础上,加入小的微扰,计算系统的响应。
声子谱计算:通过微扰理论计算得到的响应,进一步计算声子频率和模式。
声子模式是晶格振动的模式,可以用波矢 q 和模指数 ν 来描述。每个 q 点对应一个波矢,每个 ν 模指数对应一个特定的振动模式。声子频率 ω 是声子模式的能量,与波矢 q 和模指数 ν 有关。ph.x
模块通过计算这些频率和模式,提供了材料的声子谱。
声子谱在材料科学中有广泛的应用,例如:
热导率:声子是固体中热量传输的主要载体,通过声子谱可以计算材料的热导率。
热膨胀系数:声子谱可以用于计算材料在不同温度下的热膨胀系数。
红外光谱:声子模式的振动频率与红外光谱的峰有关,可以用于材料的光谱学研究。
ph.x
模块的输入文件主要包含两个部分:控制参数和系统参数。这些参数可以分为几大类:全局控制参数、电子结构参数、声子计算参数等。
| 参数名 | 描述 | 默认值 |
| — | — | — |
| outdir
| 输出文件的目录 | ./
|
| prefix
| 前缀,用于标识输出文件 | pwscf
|
| tprnfor
| 是否输出力的打印 | false
|
| tstress
| 是否输出应力的打印 | false
|
| lfildvscf
| 是否读取微扰势文件 | true
|
| 参数名 | 描述 | 默认值 |
| — | — | — |
| nbnd
| 电子带数 | 自动确定 |
| ecutwfc
| 波函数截断能 | 从 scf
计算中读取 |
| ecutrho
| 电荷密度截断能 | 从 scf
计算中读取 |
| nband
| 计算的带数 | 从 scf
计算中读取 |
| 参数名 | 描述 | 默认值 |
| — | — | — |
| tr2_ph
| 声子计算的收敛阈值 | 1.0d-12
|
| fildvscf
| 微扰势文件名 | prefix.dvscf
|
| fildyn
| 动力学矩阵文件名 | prefix.dyn
|
| fildvscf_threshold
| 微扰势文件的阈值 | 1.0d-5
|
| qplot
| 是否绘制 q 点路径 | false
|
| lqdir
| 是否使用 q 点方向 | false
|
| q_thr
| q 点筛选阈值 | 1.0d-4
|
以下是一个典型的 ph.x
输入文件示例,用于计算 Si 的声子谱:
&INPUTPH
prefix = 'Si',
outdir = './tmp/',
tr2_ph = 1.0d-12,
fildvscf = 'Si.dvscf',
fildyn = 'Si.dyn',
qplot = .true.,
lqdir = .false.,
q_thr = 1.0d-4,
/
ATOMIC_POSITIONS (alat)
Si 0.0 0.0 0.0
Si 0.25 0.25 0.25
/
K_POINTS (automatic)
4 4 4 0 0 0
/
Q_POINTS (crystal)
2 1
0.0 0.0 0.0
0.5 0.5 0.5
/
prefix
:指定前缀,用于标识输出文件。通常与 scf
计算中的前缀相同。
outdir
:指定输出文件的目录。确保该目录存在,否则计算会失败。
tr2_ph
:声子计算的收敛阈值,通常设置为 1.0d-12
。
fildvscf
:微扰势文件名,通常与 scf
计算中的前缀相同。
fildyn
:动力学矩阵文件名,通常与 scf
计算中的前缀相同。
qplot
:是否绘制 q 点路径,设置为 true
可以生成路径文件。
lqdir
:是否使用 q 点方向,通常设置为 false
。
q_thr
:q 点筛选阈值,用于排除低频的 q 点。
ph.x
模块的输出文件主要包括以下内容:
ph.log
:计算过程的详细日志。
prefix.dyn
:动力学矩阵文件,包含 q 点和对应的声子频率。
prefix.dvscf
:微扰势文件,用于后续的声子谱计算。
prefix.phdos
:声子态密度文件。
prefix.phdisp
:声子色散关系文件。
动力学矩阵文件 prefix.dyn
包含每个 q 点的动力学矩阵和对应的声子频率。文件格式如下:
# q-point 1
q(1) = 0.0000000 0.0000000 0.0000000
# phonon frequencies
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
# q-point 2
q(2) = 0.5000000 0.5000000 0.5000000
# phonon frequencies
12.3456789012
12.3456789012
12.3456789012
12.3456789012
12.3456789012
12.3456789012
声子态密度文件 prefix.phdos
包含声子态密度(Phonon Density of States, PDOS)的数据。文件格式如下:
# Phonon density of states
# Energy (THz) PDOS
0.0000000000 0.0000000000
1.0000000000 0.0123456789
2.0000000000 0.0234567890
3.0000000000 0.0345678901
4.0000000000 0.0456789012
5.0000000000 0.0567890123
声子色散关系文件 prefix.phdisp
包含 q 点和对应的声子频率数据。文件格式如下:
# Phonon dispersion relation
# q-point Energy (THz)
0.0000000000 0.0000000000 0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.0000000000
0.5000000000 0.5000000000 0.5000000000
12.3456789012
12.3456789012
12.3456789012
12.3456789012
12.3456789012
12.3456789012
在使用 ph.x
模块之前,需要先进行基态计算。基态计算通常使用 pw.x
模块,生成自洽场波函数和能量。以下是一个简单的基态计算输入文件示例:
&control
prefix = 'Si',
outdir = './tmp/',
pseudo_dir = './pseudo/',
calculation = 'scf',
restart_mode = 'from_scratch',
verbosity = 'high',
/
&system
ibrav = 2,
celldm(1) = 10.260,
nat = 2,
ntyp = 1,
ecutwfc = 50.0,
ecutrho = 200.0,
/
&electrons
mixing_mode = 'plain',
mixing_beta = 0.7,
conv_thr = 1.0d-8,
/
ATOMIC_SPECIES
Si 28.0855 Si.pbe-n-rrkjus_psl.1.0.0.UPF
ATOMIC_POSITIONS (alat)
Si 0.0 0.0 0.0
Si 0.25 0.25 0.25
/
K_POINTS (automatic)
4 4 4 0 0 0
/
基态计算完成后,使用 ph.x
模块进行微扰计算。微扰计算的输入文件如前所述,包含全局控制参数、电子结构参数和声子计算参数。
微扰计算完成后,ph.x
模块会生成动力学矩阵文件 prefix.dyn
和微扰势文件 prefix.dvscf
。这些文件可以用于进一步的声子谱计算,例如使用 matdyn.x
模块生成声子色散关系图。
基态计算:使用 pw.x
模块进行基态计算,生成自洽场波函数和能量。
微扰计算:使用 ph.x
模块进行微扰计算,生成动力学矩阵文件和微扰势文件。
声子谱计算:使用 matdyn.x
模块生成声子色散关系图和声子态密度图。
以下是一个完整的计算流程示例,包括基态计算、微扰计算和声子谱计算。
创建一个 scf.in
文件,包含基态计算的参数:
&control
prefix = 'Si',
outdir = './tmp/',
pseudo_dir = './pseudo/',
calculation = 'scf',
restart_mode = 'from_scratch',
verbosity = 'high',
/
&system
ibrav = 2,
celldm(1) = 10.260,
nat = 2,
ntyp = 1,
ecutwfc = 50.0,
ecutrho = 200.0,
/
&electrons
mixing_mode = 'plain',
mixing_beta = 0.7,
conv_thr = 1.0d-8,
/
ATOMIC_SPECIES
Si 28.0855 Si.pbe-n-rrkjus_psl.1.0.0.UPF
ATOMIC_POSITIONS (alat)
Si 0.0 0.0 0.0
Si 0.25 0.25 0.25
/
K_POINTS (automatic)
4 4 4 0 0 0
/
运行基态计算:
mpirun -np 4 pw.x < scf.in > scf.out
创建一个 ph.in
文件,包含微扰计算的参数:
&INPUTPH
prefix = 'Si',
outdir = './tmp/',
tr2_ph = 1.0d-12,
fildvscf = 'Si.dvscf',
fildyn = 'Si.dyn',
qplot = .true.,
lqdir = .false.,
q_thr = 1.0d-4,
/
ATOMIC_POSITIONS (alat)
Si 0.0 0.0 0.0
Si 0.25 0.25 0.25
/
K_POINTS (automatic)
4 4 4 0 0 0
/
Q_POINTS (crystal)
2 1
0.0 0.0 0.0
0.5 0.5 0.5
/
运行微扰计算:
mpirun -np 4 ph.x < ph.in > ph.out
创建一个 matdyn.in
文件,包含声子谱计算的参数:
&input
asr = 'simple',
amass(1) = 28.0855,
filqin = 'Si.dyn',
filoq = 'Si.phdisp',
filxsf = 'Si.phdisp.xsf',
flfrc = 'Si.force_constants',
flfrq = 'Si.freq',
/
0.0 0.0 0.0
0.5 0.5 0.5
运行声子谱计算:
mpirun -np 4 matdyn.x < matdyn.in > matdyn.out