FourPhonon
: An extension module to ShengBTE
for computing four-phonon scattering rates and thermal conductivity
- Zherui Han [email protected]
- Xiaolong Yang [email protected]
- Wu Li [email protected]
- Tianli Feng [email protected]
- Xiulin Ruan [email protected]
References: please refer to our GitHub homepage
- Feng, T. & Ruan, X. Quantum mechanical prediction of four-phonon scattering rates and reduced thermal conductivity of solids. Phys Rev B 93, 045202 (2016).
- Feng, T., Lindsay, L. & Ruan, X. Four-phonon scattering significantly reduces intrinsic thermal conductivity of solids. Phys Rev B 96, 161201 (2017).
- Han, Z., Yang, X., Li, W., Feng, T. & Ruan, X. FourPhonon: An extension module to ShengBTE for computing four-phonon scattering rates and thermal conductivity. Comput Phys Commun 270 (2022) 108179, https://doi.org/10.1016/j.cpc.2021.108179.
- Wu Li [email protected]
- Jesús Carrete Montaña [email protected]
- Nebil A. Katcho [email protected]
- Natalio Mingo [email protected]
References: please refer to the ShengBTE link.
FourPhonon
is built within ShengBTE
and updates ShengBTE
to a new version. The codes are hosted at GitHub, and you can download the latest distribution from this repository: https://github.com/FourPhonon (you can also find this link from ShengBTE
website). The compilation of this new version is the same as the previous ShengBTE
: after setting proper paths in arch.make
, one can then run make
in the Src
subdirectory. An executable ShengBTE
will appear in the root directory of this distribution.
Besides the routine inputs and CONTROL
file of ShengBTE
, FourPhonon
requires a fourth-order force constants and some new flags in CONTROL
file.
This file contains the fourth-order interatomic force constant matrix, and uses a sparse description to save space. To construct 4th-IFCs, one can refer to the Fourthorder
python scripts. The format of this force constants is a direct extension of third-order force constants, and contains nb
blocks of such matrix:
- A blank line
- A 1-based sequential index (from 1 to
nb
) - A line with the Cartesian coordinates of the second unit cell in Å
- A line with the Cartesian coordinates of the third unit cell in Å
- A line with the Cartesian coordinates of the fourth unit cell in Å
- A line with the 1-based indices of the four atoms involved, each from 1 to
natoms
- 81 lines of force constant matrix in
$\frac{\textrm{eV}}{\textrm{Å}^4}$ . The indexes at the beginning label the Cartesian axes.
An example block of this file:
1
0.0000000000e+00 0.0000000000e+00 0.0000000000e+00
0.0000000000e+00 0.0000000000e+00 0.0000000000e+00
0.0000000000e+00 0.0000000000e+00 0.0000000000e+00
1 1 1 1
1 1 1 1 -42.0002584218
1 1 1 2 0.0000000000
1 1 1 3 0.0000000000
1 1 2 1 0.0000000000
1 1 2 2 40.3875689003
1 1 2 3 0.0000000000
1 1 3 1 0.0000000000
1 1 3 2 0.0000000000
1 1 3 3 40.3875689003
1 2 1 1 0.0000000000
1 2 1 2 40.3875689003
1 2 1 3 0.0000000000
1 2 2 1 40.3875689003
1 2 2 2 0.0000000000
1 2 2 3 0.0000000000
1 2 3 1 0.0000000000
1 2 3 2 0.0000000000
1 2 3 3 0.0000000000
1 3 1 1 0.0000000000
1 3 1 2 0.0000000000
1 3 1 3 40.3875689003
1 3 2 1 0.0000000000
1 3 2 2 0.0000000000
1 3 2 3 0.0000000000
1 3 3 1 40.3875689003
1 3 3 2 0.0000000000
1 3 3 3 0.0000000000
2 1 1 1 0.0000000000
2 1 1 2 40.3875689003
2 1 1 3 0.0000000000
2 1 2 1 40.3875689003
2 1 2 2 0.0000000000
2 1 2 3 0.0000000000
2 1 3 1 0.0000000000
2 1 3 2 0.0000000000
2 1 3 3 0.0000000000
2 2 1 1 40.3875689003
2 2 1 2 0.0000000000
2 2 1 3 0.0000000000
2 2 2 1 0.0000000000
2 2 2 2 -42.0002584218
2 2 2 3 0.0000000000
2 2 3 1 0.0000000000
2 2 3 2 0.0000000000
2 2 3 3 40.3875689003
2 3 1 1 0.0000000000
2 3 1 2 0.0000000000
2 3 1 3 0.0000000000
2 3 2 1 0.0000000000
2 3 2 2 0.0000000000
2 3 2 3 40.3875689003
2 3 3 1 0.0000000000
2 3 3 2 40.3875689003
2 3 3 3 0.0000000000
3 1 1 1 0.0000000000
3 1 1 2 0.0000000000
3 1 1 3 40.3875689003
3 1 2 1 0.0000000000
3 1 2 2 0.0000000000
3 1 2 3 0.0000000000
3 1 3 1 40.3875689003
3 1 3 2 0.0000000000
3 1 3 3 0.0000000000
3 2 1 1 0.0000000000
3 2 1 2 0.0000000000
3 2 1 3 0.0000000000
3 2 2 1 0.0000000000
3 2 2 2 0.0000000000
3 2 2 3 40.3875689003
3 2 3 1 0.0000000000
3 2 3 2 40.3875689003
3 2 3 3 0.0000000000
3 3 1 1 40.3875689003
3 3 1 2 0.0000000000
3 3 1 3 0.0000000000
3 3 2 1 0.0000000000
3 3 2 2 40.3875689003
3 3 2 3 0.0000000000
3 3 3 1 0.0000000000
3 3 3 2 0.0000000000
3 3 3 3 -42.0002584218
This file contains all the user-specified settings and parameters, including crystal structural information, broadening factor, q-mesh, temperature, etc. To call FourPhonon capabilities, one should add a new &flags
namelist:
four_phonon
(logical, default=.false.): compute four-phonon phase space and four-phonon scattering rates.
Here, we show some practical usage of this flag in combination with other existing flags.
onlyharmonic=.true.
andfour_phonon=.true.
: only compute four-phonon phase spaceconvergence=.false.
andfour_phonon=.true.
: compute thermal conductivity at RTA level for both three- and four-phonon scatteringsfour_phonon=.true.
(convergence
is default to be .true.): compute thermal conductivity with three-phonon iterative scheme but treat four-phonon scatterings at RTA level
*Note that: all other parameters in CONTROL
file, like temperature or q-mesh, apply to both three- and four-phonon processes. nanowires
function is not supported in FourPhonon
package.
Besides the routine output files from previous ShengBTE
program, FourPhonon
generates these output files:
BTE.Numprocess_4ph
: number of allowed four-phonon scattering processes, for each irreducible q point and phonon bandBTE.P4
: phase space available for four-phonon processes, for each irreducible q point and phonon bandBTE.P4_total
: total volume in phase space available for four-phonon processesBTE.P4_plusplus*
,BTE.P4_plusminus*
,BTE.P4_minusminus*
: similar to BTE.P4 but only includes contributions from ++/+-/- - processes
*Note for four-phonon scatterings, there are three different channels: recombination (++), redistribution (+-) and splitting (- -) processes.
Under temperature-dependent directories: (the unit of scattering rates is ps$^{-1}$ if not specified)
-
BTE.WP4
: weighted phase space available for four-phonon processes ([rad/ps]$^{-5}$, 2nd column) vs angular frequency (rad/ps, 1st column) for each irreducible q point and phonon band -
BTE.WP4_plusplus*
,BTE.WP4_plusminus*
,BTE.WP4_minusminus*
: similar to BTE.WP4 but only includes contributions from ++/+-/- - processes -
BTE.w_3ph
: three-phonon scattering rates for each irreducible q point and phonon band, this file replaces the original outputBTE.w_anharmonic
. Absorption and emission processes are written out intoBTE.w_3ph_plus
andBTE.w_3ph_minus
-
BTE.w_4ph
: four-phonon scattering rates for each irreducible q point and phonon band. Similarly, we provide the contributions from different channels:BTE.w_4ph_plusplus
,BTE.w_4ph_plusminus
andBTE.w_4ph_minusminus
-
BTE.w_4ph_normal
: four-phonon scattering rates of normal processes, for each irreducible q point and phonon band. This file has 5 columns and each one represents: angular frequency in rad/ps, recombination channel, redistribution channel, splitting channel, overall scattering rates from normal processes -
BTE.w_4ph_Umklapp
: four-phonon scattering rates of Umklapp processes, for each irreducible q point and phonon band. The format is the same asBTE.w_4ph_normal
-
BTE.kappa*
: thermal conductivity results are written out as usual