computer programs
Euphonic: inelastic neutron scattering simulations from and visualization tools for phonon properties
aISIS Neutron and Muon Source, STFC Rutherford Appleton Laboratory, Didcot OX11 0QX, UK, bScientific Computing Department, STFC Rutherford Appleton Laboratory, Didcot OX11 0QX, UK, and cDepartment of Physics, Royal Holloway University of London, Egham TW20 0EX, UK
*Correspondence e-mail: rebecca.fair@stfc.ac.uk, adam.jackson@stfc.ac.uk
Interpretation of vibrational inelastic neutron scattering spectra of complex systems is frequently reliant on accompanying simulations from theoretical models. Ab initio codes can routinely generate but additional steps are required for direct comparison with experimental spectra. On modern spectrometers this is a computationally expensive task due to the large data volumes collected. In addition, workflows are frequently cumbersome as the simulation software and experimental data analysis software often do not easily interface to each other. Here a new package, Euphonic, is presented. Euphonic is a robust, easy to use and computationally efficient tool designed to be integrated into experimental software and able to interface directly with the force constant matrix output of ab initio codes.
Keywords: neutron scattering; phonons; force constants; Euphonic.
1. Introduction
The study of atomic vibrations is of both fundamental and applied interest as they have a significant role in many macroscopic material properties. They can drive phase transitions (Budai et al., 2014), transport heat (Zheng et al., 2021), govern elastic properties (Böer & Pohl, 2018) and even limit the coherence of qubits (Garlatti et al., 2020). For this reason significant effort has been devoted to understanding atomic vibrations both theoretically and experimentally. Inelastic neutron scattering (INS) is a particularly powerful experimental technique, as the momentum and frequency dependence of the atomic vibrations can be straightforwardly and quantitatively related to the experimental intensities, providing a stringent test of theoretical models.
The earliest experiments were performed using a triple-axis spectrometer (Brockhouse, 1955) and this remains a widely applied method. In its conventional form this instrument defines the incident (final) neutron energy with a crystal monochromator (analyser) and a single detector measuring at a single point in Q–ω (momentum–energy) space. Dispersion curves are mapped out by making a series of measurements as a function of at fixed momentum, or as a function of momentum at fixed which collectively raster over a Q–ω region of interest. To improve efficiency, additional analyser–detector groups after the sample can be used (Kempa et al., 2006), increasing data rates but also increasing the volume and complexity of the data to be modelled.
Alternatively, a time-structured beam may be used in conjunction with beamline components that define the incident neutron energy or final neutron energies, so that each detector in an array can map out many different energy transfers ω. These time-of-flight (TOF) instruments have become increasingly popular, especially with the advent of high-power pulsed spallation sources. To maximize their efficiency, these instruments have detector arrays which cover large solid angles broken up into pixels. For example, LET at ISIS (Bewley et al., 2011) has a three-steradian detector array that is split into 98 304 pixels, in each of which the range is resolved into ∼300 bins. For single-crystal experiments the sample must be rotated, commonly in 0.5–1° steps over a 180° range, leading to the generation of a multidimensional data set which consists of 109–1010 individual Q–ω points. Data analysis frameworks to handle and interact with these objects exist and are widely used (Ewings et al., 2016; Reznik & Ahmadova, 2020; Arnold et al., 2014).
The calculation of vibrational properties from first principles or parameterized atomistic lattice dynamics is well established within the computational chemistry and physics communities. As the equations needed are straightforward, many codes have been written to compute INS spectra for comparison between theory and experiment. These include SimPhonies (Bao et al., 2016), OpenPhonon (Mirone & d'Astuto, 2006), Scatter (Roach et al., 2007) for GULP (Gale, 2005), ab2tds (Mirone & Wehinger, 2013), the CLIMAX series (Kearley & Tomkinson, 1990; Ramirez-Cuesta, 2004; Cheng et al., 2019) and PHONON (Parlinski, 2014), in addition to private and unreleased codes. Recent versions of Phonopy (Togo & Tanaka, 2015) also include functions for calculation of the dynamical However, no available software can meet all of the requirements of a tool suitable for experimenters at TOF INS facilities, as each program lacks one or more functionalities such as flexible and customizable modelling of instrumental resolution; scaling of computational performance to very large high-resolution data sets; ease of use; and availability of maintained source code.
The et al., 2013). Computational approaches to strong anharmonicity are not as well established or widespread, but one which merits mention in the context of INS spectra is based on the analysis of dynamical correlation functions computed using simulations. The software packages nMoldyn (Róg et al., 2003), MDANSE (Goret et al., 2017), Dynasor (Fransson et al., 2021) and LiquidLib (Walter et al., 2018) all perform calculation of dynamical structure factors from trajectory data.
approach of the above-mentioned codes is restricted to systems and excitations well described by the harmonic approximation of lattice dynamics. Anharmonic phenomena including frequency shifts of asymmetric bond vibrations and overtones, broadening, dynamically stabilized and high-temperature structural phases, and nuclear quantum dynamics are poorly described or not included at all. In some cases it is feasible to still compute stable harmonic phonons using volume- or temperature-dependent effective potentials (HellmanHere we present Euphonic (Fair et al., 2022a), a software package to calculate INS intensities in the harmonic approximation using obtained from ab initio calculations. It is written in Python, for ease of integration with other software and experimental workflows. This allows it to be used, for example, to simulate any part of a TOF Q–ω data set with instrumental resolution convolution via the data analysis package Horace (Ewings et al., 2016). Given the potential size of the Q–ω TOF data sets described above, Euphonic has a focus on computational performance and uses an extension written in C and OpenMP to handle the most demanding steps. Euphonic is not strongly coupled to any particular atomistic code; currently, can be read from CASTEP (Clark et al., 2005), which internally implements several schemes for phonon calculations, and Phonopy (Togo & Tanaka, 2015), which manages finite-displacement calculations with any of 11 force calculators. In addition to simulating large Q–ω TOF data sets, it is intended as a general-purpose tool for analysis of phonon simulations. Command-line programs are included for quick calculation and plotting of phonon band structure, (DOS) and the neutron dynamical while the Python API allows Euphonic to be used as a more flexible library for optimized phonon frequency and eigenvector calculations and related quantities.
In this paper we describe the basic theory behind Euphonic; the software structure, its main features and how it interacts with other software; we show how its performance and results compare with similar existing software tools; and, finally, we compare Euphonic with experimental data sets for both single crystals and powders.
1.1. Availability
Euphonic has been developed following software development best practice: continuous integration processes test the functionality and validate numerical results as features are added, and the Python API has been explicitly designed to make Euphonic easy to use with other projects. Euphonic is open source under the GNU General Public License v3; the source code is freely available on Github, and packages are distributed by PyPI and Conda-forge for the pip and conda package managers. Links to the source code and online documentation, including instructions on installation and how to use Euphonic, are available at https://doi.org/10.5286/SOFTWARE/EUPHONIC (Fair et al., 2022a).
1.2. Validation data sets
Throughout this paper a variety of simulated and experimental data sets will be used to compare Euphonic outputs with both software tools and experimental data. The chosen materials are Nb, Al, Si, quartz and La2Zr2O7 and will be described and used in each section as appropriate. These data sets have been chosen to give a variety of unit-cell sizes and crystal symmetries, and include both polar (quartz) and non-polar materials. Simulated have been produced with either CASTEP or VASP (Kresse & Furthmüller, 1996) plus Phonopy in order to thoroughly test the features of Euphonic. Details of the force constant calculations for each material and where to obtain the results of the simulations and the neutron experimental data can be found in the supporting information.
2. Theory
2.1. Harmonic lattice dynamics
Vibrational excitations – phonons – in crystalline materials are described within the theory of lattice dynamics (Dove, 1993). Displacement of a single atom in an infinite periodic crystal gives rise to forces on every other atom in the crystal, which in the harmonic approximation are linearly related to the displacement by the force constant matrix
where Φ is the force constant matrix, the containing the displaced atom is labelled 0, l runs over unit cells in the crystal, κ runs over atoms in the α runs over the Cartesian directions, is the displacement of atom κ in cell l in direction α from its equilibrium position, and E is the total lattice energy. These decay rapidly with distance according to a power law |R|−n, where n = 5–7 in non-polar crystals. This allows for a truncation of Φ(0, l) at some radius Rc beyond which the residual may be neglected. Rc ≃ 8–10 Å is sufficient for almost all practical cases.
Substituting a plane-wave solution into the equation of motion yields the eigenvalue equation
where is the dynamical matrix at wavevector q, the eigenvalues are the square of the phonon frequencies of mode ν at q, and the eigenvectors are the phonon polarization vectors at q of mode ν for atom κ. The dynamical matrix can be calculated as the mass-weighted Fourier transform of the force constant matrix:
where Mκ is the mass of atom κ, Rl is the vector from the origin to the lth and l includes unit cells with |Rl| < Rc.
2.1.1. Deconvolution of periodic representation of Φ
Though the force constant matrix Φ(0, l) is a finite matrix, it does not map directly onto a modelling framework with periodic boundary conditions as used in almost all ab initio lattice dynamics implementations. Instead these yield a convolution of Φ(0, l) with the lattice of a suitable Ideally this would be chosen so the magnitude of Φ(0, l) falls to a negligible value in half the linear dimension to avoid overlap error. The may be computed either directly, using the as the ab initio simulation cell (the `direct method') (Ackland et al., 1997), or implicitly, using Fourier interpolation of either density-functional perturbation theory (Baroni et al., 2001) or finite displacements (Ackland et al., 1997). Therefore Euphonic must deconvolve a periodic data set to recover the aperiodic force constant matrix Φ(0, l). For a very large the supercell-periodic images of Φ(0, l) truncated at some radius Rc do not overlap at all and the extraction is a straightforward mapping of the data values. However in practical ab initio calculations the sizes are limited by computational resources, and there is always a small residual overlap between periodic images of Φ(0, l). Euphonic adopts the `cumulant image' approach (Parlinski et al., 1997), combining deconvolution with Fourier transform to compute the dynamical matrix in a formulation which respects point-group symmetry.
2.1.2. Acoustic sum rule
The invariance of the total energy on displacement of the entire crystal in space imposes a condition known as the acoustic sum rule, which guarantees the presence of the usual three acoustic modes with zero frequency at q = 0 and nearby. The sum rule applies to the force constant matrix or the Γ-point dynamical matrix:
where κ runs over N atoms in the and l over the Ncell unit cells in the The zeros depend on an exact cancellation of an entire row of the dynamical or force constant matrices, whose elements are large and of opposite sign. In the presence of numerical convergence errors and symmetry breaking by typical ab initio computational grids, the sum rule is not exactly satisfied, leading to non-zero acoustic modes at q = 0 and nonlinear dispersion of acoustic modes nearby.
Euphonic optionally applies a correction using projection methods onto the pure translation modes to restore near-exact satisfaction of the sum rule. Two alternative adjustments are implemented: either to the dynamical matrices (the reciprocal space method) or to the periodic representation of the force constant matrix (the real space method). If equation (4b) is imperfectly satisfied, the dynamical matrix D (dropping indices for clarity) has three near-zero eigenvalues corresponding to the acoustic modes. A correction is applied,
where Ψ is the matrix of eigenvectors of D(q = 0). Ωacoustic is a matrix whose diagonal entries are the eigenvalues of D(q = 0) for the acoustic modes and zero otherwise. As per Gonze & Lee (1997), the correction at q = 0 is also applied at non-zero q. The alternative real space correction is similarly formulated, but applied to the force constant matrix:
where Φ, Π and Θacoustic are all 3NNcell × 3NNcell matrices. Φ is the matrix of Π is the matrix of eigenvectors of Φ, and Θacoustic is a matrix whose diagonal entries are the eigenvalues of Φ for the acoustic modes and zero otherwise. This method more faithfully restores the linearity of the acoustic branches near q = 0 as well as the Γ-point limit.
2.1.3. Polar crystals
For non-polar crystals, the decay of ab initio density functional theory. [Typically these would be within the local-density approximation or generalized-gradient approximation, but hybrid functionals have become more accessible even for a system such as La2Zr2O7 (Chernyshev, 2019).] However, in the case of ionic or polar crystals the Coulomb interactions add a tail that decays as R−3, which precludes a converged calculation in a computationally practical This long-range tail is responsible for the phenomenon of splitting of the longitudinal optical and transverse optical modes (LO/TO splitting) and unwarranted truncation will lead to unphysical behaviour of LO modes at the origin. Fortunately this term may be computed analytically and subtracted from the force constant matrix leaving the remainder term, which can be represented within a feasibly sized (Gonze et al., 1994). This is the approach adopted by CASTEP and several other codes, which output only the short-ranged part of the force constant matrix. Euphonic computes the dipole–dipole correction term of Gonze et al. (1994) using the Born effective charges and dielectric permittivity to reconstruct the full force constant matrix.
with distance by a high inverse power law of 5–7 means that a cutoff radius of 8–10 Å is usually sufficient to contain the non-negligible elements of the force constant matrix. The resulting of 16–20 Å in each dimension is well within the typical computational capability of2.2. Coherent inelastic neutron scattering
The coherent one-phonon scattering structure factors can be calculated at the momentum transfer Q of scattered neutrons (Dove, 2003; Squires, 1996):
where q is the reduced wavevector in the first (i.e. Q = q + τ, where τ is a vector), bκ is the coherent neutron scattering length of atom κ, rκ is the vector from the origin to atom κ within the Mκ is the mass of atom κ, is the phonon polarization vector at q of mode ν for atom κ and ωqν is the phonon frequency of mode ν at q. The term exp(−Wκ) is the anisotropic Debye–Waller factor for atom κ, where the exponents can be written as
The sum in (9) is over wavevectors and modes in the first (BZ), is the number of q-points in the sum, T is the temperature, α and β run over the Cartesian directions, is the reduced Planck constant, and kB is the The Debye–Waller factor has been written in this form to make it explicit that the expensive computation of the set of 3 × 3 matrices need only be performed once over an appropriately fine grid in the first leaving computation of the Debye–Waller factor for an arbitrary Q as the fast evaluation of a quadratic form for each atom, equation (8).
From the one-phonon structure factors the neutron dynamical S(Q, ω) can be calculated as
where the upper and lower signs refer to phonon creation and annihilation, respectively, and is the Bose population function
Finally, the neutron scattering S(Q, ω) is
per in term ofwhere ki and kf are the incident and scattered neutron wavevectors, respectively.
3. Implementation
Euphonic provides an extensive Python API and a number of convenient command-line tools. Fig. 1 shows how Euphonic connects with existing packages in the neutron software ecosystem. Established software such as Horace (Ewings et al., 2016) and the Mantid (Arnold et al., 2014) plug-in AbINS (Dymkowski et al., 2018) make direct use of Euphonic as a calculator for simulated phonons and scattering intensities. The command-line tools provide convenient plotting of phonon band structures, DOS and the neutron dynamical along specific directions (see Section 6.1). Euphonic can also be used directly from Python environments for customized plots, workflows or functionality development.
3.1. Context and API
In a typical Horace workflow, the scattering intensities at millions of Q-points can be combined to produce multidimensional plots of measured data. Prior to the availability of Euphonic, the workflow for generating such plots was limited by the need to read precomputed phonon frequencies and eigenvectors from files produced by other programs. The bottleneck here becomes the activity of reading and writing to disk. For a system of N atoms per each Q-point has a set of eigenvectors whose storage requirements of 18N2 floating-point numbers can become impractically large. For example, a 22-atom with a modest 25 000 Q-points would equate to a 5 GB text file in CASTEP .phonon format. In a typical cluster environment running the CASTEP phonons tool, more than 85% of run time is spent writing this file to disk (see Table 1 for specific N2 timing examples). Furthermore, on a shared cluster resource this can be exacerbated by local network capacity and the activities of other users.
|
The requirement of efficiency for Euphonic has driven the decision to implement Fourier interpolation of phonon frequencies and eigenvectors directly from This allows for calculation of data for each Q-point on demand, removing any need for file-based data transfer from other codes. Accordingly, the representation of as a class and associated methods forms the core of the Euphonic API, illustrated in Fig. 2 and described for reference below.
ForceConstants objects can be instantiated from Python data objects such as Numpy (Harris et al., 2020) arrays, but would be typically created from the data outputs of an external modelling code; currently CASTEP .castep_bin output and Phonopy phonopy.yaml, FORCE_CONSTANTS and force_constants.hdf5 output are supported. Through Phonopy, Euphonic can be obtained using a wide variety of atomistic codes such as VASP (Kresse & Furthmüller, 1996), Abinit (Gonze et al., 2020) and Quantum Espresso (Giannozzi et al., 2009), making Euphonic accessible to a large portion of the materials modelling community. From the phonon frequencies and eigenvectors may be calculated at arbitrary Q-points using the methods described in Section 2.1.
QpointPhononModes represents phonon mode data: the Q-points, phonon frequencies and eigenvectors. QpointPhononModes can also be instantiated from external datafiles (currently, these are CASTEP .phonon and Phonopy mesh/band/qpoints files). The Pint Python library (Grecco, 2012) is extensively used in Euphonic to represent dimensioned data as a Quantity with both magnitude and units. This makes the units explicit, and facilitates conversion to the preferred units of the end user (usually meV, cm−1 or THz) in the case of phonon frequencies. No particular Q-point sampling is enforced; while, for example, a Monkhorst–Pack mesh is recommended for traditional DOS plotting, phonon modes can also be calculated along a high-symmetry path or sampled at random points depending on the use case. From the phonon modes, Euphonic can compute quantities such as the mode-resolved structure factors, the Debye–Waller exponent, and total, partial and neutron-weighted DOS.
StructureFactor is derived from the phonon modes. This object contains the neutron structure factors resolved by the Q-point and phonon mode index (ν) and also the Q-points and frequencies. This can be binned in energy to produce a 2D S(Q, ω) plot, or averaged over the contained Q-points to produce a 1D S(ω) spectrum.
DebyeWaller represents the temperature-dependent Debye–Waller factor; specifically, it contains the set of 3 × 3 matrices, one per atom, defined in equation (9). A DebyeWaller object is typically precomputed over a uniform Q-point mesh and then applied during a calculation to perform the fast calculation of the atomic Debye–Waller exponent Wκ via equation (8) over whichever (potentially large) set of Q-points are appropriate for the task at hand.
Spectrum2D, Spectrum1D and Spectrum1DCollection are classes representing generic spectrum objects that can be used for various purposes, such as representing the DOS with Spectrum1D, or an S(Q, ω) or S(|Q|, ω) intensity map with Spectrum2D. Band structure and partial DOS data are represented with Spectrum1DCollection, which ensures that consistent bins are used and allows individual lines to be tagged with metadata. The plotting tools in turn work with the generic spectrum objects to produce plots of phonon band structure, DOS and intensity maps.
Crystal is a simple class containing the information: the cell vectors, atom positions, species and masses. The above ForceConstants, QpointPhononModes, StructureFactor and DebyeWaller classes all contain an instance of this as an attribute, to ensure that the data in each class remain complete and unambiguous.
3.2. Use with Horace
A widely used software application for analysis and visualization of multidimensional TOF INS data from single-crystal experiments is Horace (Ewings et al., 2016). In addition to handling and plotting the data, it also allows simulation and fitting of these data sets with user-created models of the scattering function. A MATLAB add-on has been developed, Horace-Euphonic-Interface (Fair & Le, 2022), which provides interface functions that allow Euphonic to be used to simulate data sets directly in Horace. The way this works is illustrated in Fig. 1. First a user sets up a model with Horace-Euphonic-Interface, providing the path to the file or folder, and adding other optional parameters such as the sample temperature or the Debye–Waller grid size. The user then calls a Horace simulation function with the data set to be simulated and the model they have just created. Horace will automatically provide the Q-points to be simulated to Horace-Euphonic-Interface, which then calls Euphonic to calculate the structure factors and phonon frequencies at those Q-points. Horace-Euphonic-Interface then converts the output from Euphonic into the required form for Horace to create the simulated data set.
This is a significant improvement over previous workflows to simulate scattering from phonons, which required users to program their own functions to calculate the structure factors from ab initio calculations. These would not usually include Fourier interpolation of the and hence were restricted to the Q-points output by the ab initio calculations. These bespoke scripts were also not typically optimized for fast computation. Horace-Euphonic-Interface has allowed users to easily simulate on exactly the same axes and in the same software as the experimental data, making fitting of scaling factors and quantitative comparisons much more convenient. The performance of Euphonic has also made application of the Monte Carlo based instrumental resolution convolution method (Perring, 1991) available in Horace tractable with phonons for the first time. Examples of data simulated and fitted with Euphonic and Horace are shown in Section 6.3. Horace-Euphonic-Interface is open source and distributed as a MATLAB Toolbox file on Github and the MATLAB File Exchange. Links to the source code and online documentation are available at https://doi.org/10.5286/SOFTWARE/HORACEEUPHONICINTERFACE (Fair & Le, 2022).
3.3. Use with AbINS
AbINS is a code which simulates powder-averaged INS spectra in an analytic incoherent approximation, and resides in the Mantid framework used for experimental data reduction and analysis (Dymkowski et al., 2018; Arnold et al., 2014; Akeroyd et al., 2013). AbINS has recently been updated to make use of Euphonic; as of Mantid version 6.3, it is possible to select data in CASTEP or Phonopy format as an input file. End users do not need to know anything about Euphonic or change their workflow, except to ensure that data are present in their .castep_bin or phonopy.yaml files. A single-parameter cutoff distance [as defined by Moreno & Soler (1992), and hidden from the user interface] is used to determine a default Monkhorst–Pack mesh for the given eigenvalues and eigenvectors are computed using the Euphonic Python API and passed on to the usual incoherent computation (Dymkowski et al., 2018). AbINS and Horace have different target users: with Euphonic as a common dependency, it becomes possible for these neutron scattering simulation codes to develop overlapping feature sets while sharing implementation work.
4. Performance profiling and optimization
Given the aim of calculating scattering intensities at millions of Q-points, performance optimization of Euphonic has been a priority. Table 1 illustrates the potential cost of writing large eigenvector arrays to disk, which has been avoided in Euphonic by enabling its own interpolation from There are four main steps in computing the neutron dynamical from reading the computing the phonon frequencies and eigenvectors (interpolation), computing the mode-resolved structure factors, and, finally, applying the Bose factor and binning these in energy to obtain S(Q, ω). Reading the only has to be done once, and the binning for large data sets is typically done via another program such as Horace.
Of the two remaining steps, the calculation of phonon frequencies and eigenvectors is by far the most expensive, illustrated in Table 2. Even in the case of La2Zr2O7, which has the most expensive calculation due to the number of atoms in the the interpolation takes approximately 20 times longer. For this reason, this part of the calculation has been the focus of much of the optimization effort, and performance comparisons have been made with another interpolation tool, the CASTEP phonons tool, rather than software that performs the cheaper calculations such as ab2tds (Mirone & Wehinger, 2013) or OClimax (Cheng et al., 2019; Cheng & Ramirez-Cuesta, 2020). The Phonopy software does perform phonon interpolation but has not been chosen for performance comparisons, as it does not (as of version 2.11.0) parallelize its calculation over Q-points.
|
Euphonic makes extensive use of Numpy to improve its performance, but the serial Python performance shown in Table 2 is still not sufficient to simulate the number of Q-points contained in larger multidimensional Q–ω data sets in a reasonable time. Accordingly, an extension has been written in C and OpenMP to perform the interpolation part of the calculation, which both improves performance significantly and enables calculations to be carried out in parallel. The performance improvement can be seen in Fig. 3, which shows the time taken to run the calculate_qpoint_phonon_modes interpolation function in Euphonic for 25 000 Q-points for different materials, for both the serial Python and the parallel C implementations. One metric for comparing performance is the speedup calculated as the ratio of the times to perform the same operation in the two implementations:
For one processor, use of the C extension provides speedups of 2.1, 4.0 and 6.0 over the pure Python implementation for La2Zr2O7, quartz and Nb, respectively. Fig. 3 also shows how the wall time changes with increasing numbers of processors and compares it with the time taken to run the phonon_calculate function from the CASTEP phonons tool. Care has been taken to make a fair comparison, so CASTEP features that are not available in Euphonic which would have decreased the performance of CASTEP have been switched off (group theory analysis, dynamical matrix symmetrization) and features that could not be turned off have been profiled and subtracted from the total time (writing the .phonon file, constructing the force constant matrix). Even with this taken into account, the performance of Euphonic is better than that of the CASTEP phonons tool by an order of magnitude in some cases, with Euphonic giving speedups of 13.1, 2.7 and 20.9 over the CASTEP tool for La2Zr2O7, quartz and Nb, respectively, for 24 processors.
It can be seen in Fig. 3 that interpolation for quartz is slower than for La2Zr2O7, despite the former having fewer atoms per This is due to the expensive Ewald sum correction that must be applied to the dynamical matrix for polar materials, described in Section 2.1. This calculation has been heavily optimized in Euphonic, which explains the performance difference between Euphonic and the CASTEP phonons tool for quartz. In the cases of Nb and La2Zr2O7, the performance discrepancy largely comes from the fact that the CASTEP phonons tool uses distributed memory parallelism via MPI, so needs to communicate the phonon frequencies and eigenvectors back to the main process, which is where most time is spent. Euphonic does not have this issue as it makes use of shared memory parallelism via OpenMP. This was chosen specifically to satisfy the two main-use cases for Euphonic: running smaller calculations on a single computer or node; and running larger calculations on a cluster via a data analysis tool such as Horace, in which case Horace would handle any multi-node parallelism.
The number of Q-points used for comparison of Euphonic with other tools, 25 000 for the benchmarking presented above, was chosen because it pushes the limits of the CASTEP tool, and allows results to be obtained in a reasonable amount of time. However, the run times of just a few seconds for Euphonic for large numbers of processors are not enough to obtain good performance data, as a non-negligible amount of time will be spent in non-computational parts of the code, for example importing libraries or spawning threads. The interpolation in Euphonic has therefore also been profiled for 250 000 Q-points, and has been used to demonstrate the performance scaling; this is shown in Fig. 4. The speedup has been calculated as in equation (13), where T1 is the serial interpolation function time, and T2 is the parallel time. Each interpolated Q-point is independent, so the calculation can easily be parallelized over Q-points using a parallel for loop. Despite this independence of Q-points, the scaling is imperfect, particularly for Nb. This can be explained by looking at Fig. 5, which shows the time spent in different parts of the interpolation calculation in C for different numbers of processors and materials. In particular, the serial Python part of the calculation shown in white imposes a ∼0.1 s overhead, which limits the maximum possible speedup, especially for a small system like Nb where the parallelized part only takes 0.1 s with 24 processors. The serial part includes various setup tasks, such as calculating the list of periodic images as described in Section 2.1.1.
Fig. 5 also explains the longer run times for quartz observed, shown in Fig. 3. Even after being the focus of much optimization work, the Ewald sum still takes around 70% of the total interpolation time for quartz. This optimization has included avoiding redundant calculation of Q-independent values by factorization, and optimizing the balance between the real and sums [Λ in equation (5) of Gonze et al. (1994)]. Changing Λ will not change the result but can drastically improve the performance if Λ is chosen correctly. The optimum value depends on the material and is not immediately obvious. Euphonic provides a command-line tool, euphonic-optimise-dipole-parameter, which profiles the calculation for a few Q-points and suggests the optimum value for that system for use in further calculations. Even with these optimizations, there is still a performance penalty for the calculation of phonons for polar materials, suggesting a target for further optimization work. In non-polar materials, most of the time is spent either calculating or diagonalizing the dynamical matrix. This depends strongly on the number of atoms in the versus the number of cells in the In the case of La2Zr2O7, which has 22 atoms in the over 70% of the interpolation time is spent diagonalizing the dynamical matrices. By contrast Nb has 1 atom per and (ignoring serial overhead) over 80% of the time is spent calculating dynamical matrices.
4.1. Hardware and software libraries
All profiling in this section has been completed on the STFC Scientific Computing Department's SCARF Cluster using the SCARF 18 hardware, which contains 2 Intel Gold 6126 processors per node (24 cores per node). Euphonic 0.6.1 and CASTEP 19.1 were used. Both the Euphonic C extension and the CASTEP phonons tool have been compiled with the Intel 2018.3 compiler, OpenMPI 3.1.1 and linked against Intel MKL 2018.3. The profiling results can be obtained at https://github.com/pace-neutrons/euphonic-performance.
5. Validation
The results of a comparison of Euphonic output with experimental INS data will be given in Section 6.3. In this section, to test the calculation of the dynamical stringently, Euphonic is validated against two other programs: ab2tds (Mirone & Wehinger, 2013) and OClimax (Cheng et al., 2019; Cheng & Ramirez-Cuesta, 2020). This allows validation of the more subtle parts of the calculation (such as the Debye–Waller factor) without the complication of other scattering mechanisms or broadening due to instrumental resolution, or the possibility of the first-principles computation of the force constant matrix failing to fully capture the physics of the lattice dynamics. For validation comparisons, four materials have been chosen: La2Zr2O7, quartz, Nb and Al. La2Zr2O7, quartz and Nb frequencies and eigenvectors have been computed using CASTEP, and the corresponding data for Al have been computed using VASP and Phonopy, to validate both CASTEP and Phonopy readers available in Euphonic.
The data chosen for validation are all 2D (Q, ω) maps as these types of data can be calculated by all three programs. The data maps have a wide variation of magnitudes and directions in Q to ensure the variation of quantities such as structure factors and Debye–Waller factors across Q space are reliably tested. Visualizations of the chosen (Q, ω) maps are shown in Fig. 6. The metric that has been used for comparison is the mean relative percentage difference (MRPD):
where xi is the neutron dynamical [S(Q, ω) as in equation (10)] calculated with Euphonic, and yi is the equivalent calculated with OClimax or ab2tds. Acoustic modes close to the gamma point, which have diverging intensity, and very low intensity data have been excluded to avoid numerical instabilities (more details are given in the supporting information). The OClimax neutron dynamical structure factors have been read directly from OClimax output. In the case of ab2tds, the instrumental resolution applied when creating such maps could not be completely removed from the ab2tds output, so the dynamical has instead been calculated by binning in energy the ab2tds mode-resolved output [which is equivalent to the one-phonon in equation (7) with the (nqν + 1) factor from equation (10) already applied].
The results of the comparisons are summarized in Tables 3 (ab2tds) and 4 (OClimax). The right-hand column of each table shows the MRPD for S(Q, ω) calculated from phonon frequencies and eigenvectors obtained from interpolation via CASTEP (Nb, quartz, La2Zr2O7) or Phonopy (Al). These MRPDs test the computation of S(Q, ω) by Euphonic directly from the frequencies and eigenvectors. The previous column shows the comparison when, in the case of Euphonic, S(Q, ω) is computed from the in order to test the interpolation available in Euphonic in addition to the S(Q, ω) calculation from the phonon frequencies and eigenvectors computed by that interpolation. For ab2tds the agreement is extremely good, with MRPDs of 0.05% or less. In the case of OClimax, the MRPDs are significantly larger, up to 2.62% for the La2Zr2O7 [−5, 7 −l] cut at 300 K. However, the overall comparison is still reasonably good, without particularly systematic variation of the relative percentage difference across the slices. The scripts used for validation and the Euphonic, ab2tds and OClimax inputs and outputs are available at https://github.com/pace-neutrons/euphonic-validation. Further details on the validation calculations are provided in the supporting information.
|
|
6. Examples
6.1. Command-line tools and plotting
This section illustrates some of the main features of Euphonic, using a variety of samples for both single crystals and powders from a range of modelling codes. An overview of each of the command-line tools in Euphonic is shown in Table 5, with example figures for each command shown in Figs. 7, 8, 10 and 11. Many of these tools allow sampling parameters (e.g. energy bins, broadening) and appearance options (e.g. unit conversions, axis labels and styling) to be easily specified via command-line arguments.
For custom plots it may be necessary to write a Python script. For example, Fig. 6 shows the neutron dynamical sampled along arbitrary Q directions. A sample script to achieve this kind of result is shown in Fig. 9.
6.2. Experimental powder data comparison
Here, prior experimental measurements are compared with newly simulated spectra (Fair et al., 2022b). Measurements of powdered elemental samples of Al (at 5 K with 60 meV incident energy and the Gd monochromating chopper running at 200 Hz) and Si (at 300 K with 80 meV incident energy with the `sloppy'1 monochromating chopper at 250 Hz) were recorded on the MARI instrument at ISIS. The data were reduced using Mantid and binned to 2D S(|Q|, ω) maps using MSLICE in Mantid [Figs 10(a) and 11(a)]. For the Al calculations, VASP (version 5.4.4) was used, and the were obtained by finite displacements using Phonopy (Kresse & Furthmüller, 1996; Kresse & Joubert, 1999; Togo & Tanaka, 2015). For Si, CASTEP was used, obtaining by density-functional perturbation theory (Clark et al., 2005; Refson et al., 2006). For more details, see the supporting information.
The resulting castep.bin and phonopy.yaml files were used with the euphonic-powder-map command-line tool to generate numerically sampled maps of Scoh(|Q|, ω). Details of the parameters are given in the supporting information. These results are plotted in Figs. 10(b) and 11(b) and include the main features in the positive region of the experimental measurements. It is easy to see in both the experimental and the simulated data how spherically averaged periodic features collide to create broad regions of higher intensity. In the case of the 300 K Si data, both the experimental and the simulated results have significant intensity in the negative region, whereas for the 5 K Al data the intensity is suppressed in this region. This arises from the Bose population factor suppressing the low-temperature scattering. The high intensities seen around zero in the experimental measurements in Figs. 10(a) and 11(a) are attributed to scattering from Bragg peaks which is not currently modelled by Euphonic, hence they are absent from the corresponding simulations in Figs. 10(b) and 11(b). The high-intensity feature in Fig. 11(a) at 80 meV is an artefact due to a later pulse of neutrons which passes through the chopper system, and is not due to scattering from the sample, so is not reproduced in the simulated data in Fig. 11(b).
6.3. Experimental single-crystal data comparison using Horace
Simulations created from preexisting quartz force constant calculations have been compared with newly collected experimental data (Fair et al., 2022b). Original quartz force constant calculations performed with CASTEP 6.1 have been re-processed for this work with CASTEP 19.1; more details are provided in the supporting information. For the experimental measurements, a large single crystal of natural quartz was aligned with the c axis vertical on an Al plate, secured in place with Al wire. It was cooled to 10 K using a closed-cycle refrigerator. The MERLIN `G' chopper at 350 Hz was phased to select 45 meV incident energy neutrons. The sample was rotated over 180° in 0.5° steps. The data for each individual angle were reduced using Mantid and then combined using Horace.
Several cuts through experimental and simulated data for quartz are shown in Fig. 12. The neutron dynamical has been computed with Euphonic, with the instrumental resolution accounted for by the Monte Carlo resolution convolution method (Perring, 1991) implemented in Horace. In addition, 1D cuts are shown in Fig. 13, with the simulated scattering likewise convolved with the instrumental resolution function. The only adjustable parameter in the comparison is a global scaling factor which has been determined by setting the integrated areas of the experimental and simulated data in Fig. 13(a) between 12 and 37 meV to be equal, which has then been applied to all 1D and 2D cuts. Aside from this (arbitrary) choice of intensity scale, no adjustable parameters have been used in any part of the calculation. There are small disagreements; for example, the phonon frequencies do not match up perfectly. This is to be expected, as the local density approximation tends to overestimate bond strengths (and thus phonon frequencies). In addition there are small differences in particular mode intensities, for example around 27 meV in Fig. 13(b) where the intensity is underestimated, or at 23 meV in Fig. 13(c) where it is overestimated. However, given the lack of adjustable parameters the agreement is remarkably strong. Notwithstanding, disagreements that arise from the ab initio code not fully capturing the physics of the material [Figs. 13(a)–13(d)] show the importance of accounting for instrumental resolution when comparing calculation with experimental data.
7. Conclusions and future development
We have described the Euphonic package, which is designed to efficiently compute phonon eigenvectors, eigenvalues and the INS for a large number of Q-points from force constant matrices. It has a set of command-line tools to plot the phonon band structure, DOS and neutron dynamical along a path in and an extensive Python API so that it can be used directly from Python environments for customized workflows and plotting. Euphonic also works directly from Horace (Ewings et al., 2016) and the Mantid (Arnold et al., 2014) plug-in AbINS (Dymkowski et al., 2018).
Examples of the use of the Euphonic command-line tools were shown in Section 6, together with a comparison of simulated and experimental data from powders and single crystals. The latter also includes convolution with the instrumental resolution function.
Euphonic has been extensively benchmarked and validated against other codes. It is now being used for the interpretation of phonon data at the ISIS Neutron and Muon Source, where it will continue to be maintained and developed as part of the core data analysis software portfolio. Promising avenues for future development include support of other codes, particularly the Atomic Simulation Environment (ASE) (Hjorth Larsen et al., 2017); performance improvements from symmetry-aware interpolation of the dynamical matrices and other interpolation methods; corrections for thermal expansion/softening using a quasi-harmonic force constant matrix; and X-ray structure factors.
Euphonic is open source and the source code is available to download from Github (Fair et al., 2022a), with releases also available via the pip and conda package managers, as a service to the neutron scattering and the computational chemistry and physics communities. The authors welcome bug reports, feedback on usability and documentation, and suggestions for additional functionality. The authors also welcome contributions to the Euphonic package.
8. Related literature
The following additional references are cited in the supporting information: Byrd et al. (1994); Francis & Payne (1990); Frank et al. (1995); Rappe et al. (1990).
Supporting information
Link https://doi.org/10.5281/zenodo.6620084
Experimental and simulated data sets for five materials (aluminium, La2Zr2O7, niobium, quartz and silicon) for use with the Euphonic program.
Link https://doi.org/10.5286/SOFTWARE/EUPHONIC
The Euphonic Python package
Link https://doi.org/10.5286/ISIS.E.RB1930013
Associated data
Example Python script to calculate and plot the neutron dynamical https://doi.org/10.1107/S1600576722009256/in5072sup1.txt
in the [hkl] direction with Euphonic. DOI:Supporting information: Table S1 and commands. DOI: https://doi.org/10.1107/S1600576722009256/in5072sup2.pdf
Footnotes
1The term `sloppy' here means the chopper has relatively wide openings to maximize over a wide range of energies (particularly low energies <100 meV), in contrast to other choppers which are optimized for sharp resolution at specific (high) energies, but at the cost of lower transmission and flux.
Acknowledgements
The computing resources for Section 4 were provided by the STFC Scientific Computing Department's SCARF cluster. We thank Sanghamitra Mukhopadhyay for useful discussions. Experiments at the ISIS Neutron and Muon Source were supported by a beamtime allocation RB1930013 from the Science and Technology Facilities Council. Data are available at https://doi.org/10.5286/ISIS.E.RB1930013.
Funding information
Funding for this research was provided by the Science and Technology Facilities Council, ISIS Neutron and Muon Source.
References
Ackland, G. J., Warren, M. C. & Clark, S. J. (1997). J. Phys. Condens. Matter, 9, 7861–7872. CrossRef Google Scholar
Akeroyd, F., Ansell, S., Antony, S., Arnold, O., Arturs, B., Bilheux, J., Borreguero, J., Brown, K., Buts, A., Campbell, S., Champion, D., Chapon, L., Clarke, M., Cottrell, S., Dalgliesh, R., Dillow, D., Doucet, M., Draper, N., Fowler, R., Gigg, M. A., Granroth, G., Hagen, M., Heller, W., Hillier, A., Howells, S. & Zikovsky, J. (2013). Mantid, https://doi.org/10.5286/SOFTWARE/MANTID. Google Scholar
Arnold, O., Bilheux, J. C., Borreguero, J. M., Buts, A., Campbell, S. I., Chapon, L., Doucet, M., Draper, N., Ferraz Leal, R., Gigg, M. A., Lynch, V. E., Markvardsen, A., Mikkelson, D. J., Mikkelson, R. L., Miller, R., Palmen, K., Parker, P., Passos, G., Perring, T. G., Peterson, P. F., Ren, S., Reuter, M. A., Savici, A. T., Taylor, J. W., Taylor, R. J., Tolchenov, R., Zhou, W. & Zikovsky, J. (2014). Nucl. Instrum. Methods Phys. Res. A, 764, 156–166. Web of Science CrossRef CAS Google Scholar
Bao, F., Archibald, R., Niedziela, J., Bansal, D. & Delaire, O. (2016). Nanotechnology, 27, 484002. CrossRef PubMed Google Scholar
Baroni, S., de Gironcoli, S., Dal Corso, A. & Giannozzi, P. (2001). Rev. Mod. Phys. 73, 515–562. Web of Science CrossRef CAS Google Scholar
Bewley, R., Taylor, J. & Bennington, S. (2011). Nucl. Instrum. Methods Phys. Res. A, 637, 128–134. CrossRef Google Scholar
Böer, K. W. & Pohl, U. W. (2018). Semiconductor Physics, pp. 111–150. Cham: Springer International Publishing. Google Scholar
Brockhouse, B. N. (1955). Phys. Rev. 99, 601–603. CrossRef CAS Web of Science Google Scholar
Budai, J. D., Hong, J., Manley, M. E., Specht, E. D., Li, C. W., Tischler, J. Z., Abernathy, D. L., Said, A. H., Leu, B. M., Boatner, L. A., McQueeney, R. J. & Delaire, O. (2014). Nature, 515, 535–539. CrossRef PubMed Google Scholar
Byrd, R. H., Nocedal, J. & Schnabel, R. B. (1994). Math. Program. 63, 129–156. CrossRef Google Scholar
Cheng, Y. Q., Daemen, L. L., Kolesnikov, A. I. & Ramirez-Cuesta, A. J. (2019). J. Chem. Theory Comput. 15, 1974–1982. CrossRef PubMed Google Scholar
Cheng, Y. Q. & Ramirez-Cuesta, A. J. (2020). J. Chem. Theory Comput. 16, 5212–5217. CrossRef PubMed Google Scholar
Chernyshev, V. A. (2019). Computational Science and Its Applications – ICCSA 2019, Lecture Notes in Computer Science, Vol. 11622, edited by S. Misra, O. Gervasi, B. Murgante, E. Stankova, V. Korkhov, C. Torre, A. M. A. Rocha, D. Taniar, B. O. Apduhan & E. Tarantino, pp. 625–638. Cham: Springer International Publishing. https://link.springer.com/10.1007/978-3-030-24305-0_46. Google Scholar
Clark, S. J., Segall, M. D., Pickard, C. J., Hasnip, P. J., Probert, M. I. J., Refson, K. & Payne, M. C. (2005). Z. Kristallogr. Cryst. Mater. 220, 567–570. Web of Science CrossRef CAS Google Scholar
Dove, M. T. (1993). Introduction to Lattice Dynamics, Cambridge Topics in Mineral Physics and Chemistry, No. 4. Cambridge, New York: Cambridge University Press. Google Scholar
Dove, M. T. (2003). Structure and Dynamics: an Atomic View of Materials, Oxford Master Series in Condensed Matter Physics. Oxford, New York: Oxford University Press. Google Scholar
Dymkowski, K., Parker, S. F., Fernandez-Alonso, F. & Mukhopadhyay, S. (2018). Physica B, 551, 443–448. CrossRef Google Scholar
Ewings, R., Buts, A., Le, M., van Duijn, J., Bustinduy, I. & Perring, T. (2016). Nucl. Instrum. Methods Phys. Res. A, 834, 132–142. Web of Science CrossRef CAS Google Scholar
Fair, R., Farmer, J. L., Jackson, A., King, J., Le, M. D., Perring, T. G., Pettitt, C., Refson, K., Tucker, G. & Voneshen, D. (2022a). Euphonic, https://doi.org/10.5286/SOFTWARE/EUPHONIC. Google Scholar
Fair, R., Jackson, A. J., Le, M. D. & Voneshen, D. J. (2022b). Phonon Calculations and Measurements Dataset For Use With the Euphonic Program, https://doi.org/10.5281/zenodo.6620084. Google Scholar
Fair, R. & Le, M. D. (2022). Horace-Euphonic-Interface, https://doi.org/10.5286/SOFTWARE/HORACEEUPHONICINTERFACE. Google Scholar
Francis, G. P. & Payne, M. C. (1990). J. Phys. Condens. Matter, 2, 4395–4404. CrossRef Google Scholar
Frank, W., Elsässer, C. & Fähnle, M. (1995). Phys. Rev. Lett. 74, 1791–1794. CrossRef PubMed Google Scholar
Fransson, E., Slabanja, M., Erhart, P. & Wahnström, G. (2021). Adv. Theory Simul. 4, 2000240. CrossRef Google Scholar
Gale, J. D. (2005). Z. Kristallogr. Cryst. Mater. 220, 552–554. Web of Science CrossRef CAS Google Scholar
Garlatti, E., Tesi, L., Lunghi, A., Atzori, M., Voneshen, D. J., Santini, P., Sanvito, S., Guidi, T., Sessoli, R. & Carretta, S. (2020). Nat. Commun. 11, 1751. CrossRef PubMed Google Scholar
Giannozzi, P., Baroni, S., Bonini, N., Calandra, M., Car, R., Cavazzoni, C., Ceresoli, D., Chiarotti, G. L., Cococcioni, M., Dabo, I., Dal Corso, A., de Gironcoli, S., Fabris, S., Fratesi, G., Gebauer, R., Gerstmann, U., Gougoussis, C., Kokalj, A., Lazzeri, M., Martin-Samos, L., Marzari, N., Mauri, F., Mazzarello, R., Paolini, S., Pasquarello, A., Paulatto, L., Sbraccia, C., Scandolo, S., Sclauzero, G., Seitsonen, A. P., Smogunov, A., Umari, P. & Wentzcovitch, R. M. (2009). J. Phys. Condens. Matter, 21, 395502. Web of Science CrossRef PubMed Google Scholar
Gonze, X., Amadon, B., Antonius, G., Arnardi, F., Baguet, L., Beuken, J.-M., Bieder, J., Bottin, F., Bouchet, J., Bousquet, E., Brouwer, N., Bruneval, F., Brunin, G., Cavignac, T., Charraud, J.-B., Chen, W., Côté, M., Cottenier, S., Denier, J., Geneste, G., Ghosez, P., Giantomassi, M., Gillet, Y., Gingras, O., Hamann, D. R., Hautier, G., He, X., Helbig, N., Holzwarth, N., Jia, Y., Jollet, F., Lafargue-Dit-Hauret, W., Lejaeghere, K., Marques, M. A., Martin, A., Martins, C., Miranda, H. P., Naccarato, F., Persson, K., Petretto, G., Planes, V., Pouillon, Y., Prokhorenko, S., Ricci, F., Rignanese, G.-M., Romero, A. H., Schmitt, M. M., Torrent, M., van Setten, M. J., Van Troeye, B., Verstraete, M. J., Zérah, G. & Zwanziger, J. W. (2020). Comput. Phys. Commun. 248, 107042. Web of Science CrossRef Google Scholar
Gonze, X., Charlier, J.-C., Allan, D. & Teter, M. P. (1994). Phys. Rev. B, 50, 13035–13038. CrossRef Google Scholar
Gonze, X. & Lee, C. (1997). Phys. Rev. B, 55, 10355–10368. CrossRef CAS Web of Science Google Scholar
Goret, G., Aoun, B. & Pellegrini, E. (2017). J. Chem. Inf. Model. 57, 1–5. CrossRef PubMed Google Scholar
Grecco, H. (2012). Pint, https://github.com/hgrecco/pint. Google Scholar
Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J., Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., van Kerkwijk, M. H., Brett, M., Haldane, A., del Río, J. F., Wiebe, M., Peterson, P., Gérard-Marchant, P., Sheppard, K., Reddy, T., Weckesser, W., Abbasi, H., Gohlke, C. & Oliphant, T. E. (2020). Nature, 585, 357–362. Web of Science CrossRef CAS PubMed Google Scholar
Hellman, O., Steneteg, P., Abrikosov, I. A. & Simak, S. I. (2013). Phys. Rev. B, 87, 104111. CrossRef Google Scholar
Hinuma, Y., Pizzi, G., Kumagai, Y., Oba, F. & Tanaka, I. (2017). Comput. Mater. Sci. 128, 140–184. CrossRef Google Scholar
Hjorth Larsen, A., Jørgen Mortensen, J., Blomqvist, J., Castelli, I. E., Christensen, R., Dułak, M., Friis, J., Groves, M. N., Hammer, B., Hargus, C., Hermes, E. D., Jennings, P. C., Bjerre Jensen, P., Kermode, J., Kitchin, J. R., Leonhard Kolsbjerg, E., Kubal, J., Kaasbjerg, K., Lysgaard, S., Bergmann Maronsson, J., Maxson, T., Olsen, T., Pastewka, L., Peterson, A., Rostgaard, C., Schiøtz, J., Schütt, O., Strange, M., Thygesen, K. S., Vegge, T., Vilhelmsen, L., Walter, M., Zeng, Z. & Jacobsen, K. W. (2017). J. Phys. Condens. Matter, 29, 273002. Web of Science CrossRef PubMed Google Scholar
Kearley, G. J. & Tomkinson, J. (1990). Inst. Phys. Conf. Ser. 107, 245–252. Google Scholar
Kempa, M., Janousova, B., Saroun, J., Flores, P., Boehm, M., Demmel, F. & Kulda, J. (2006). Physica B, 385–386, 1080–1082. CrossRef Google Scholar
Kresse, G. & Furthmüller, J. (1996). Phys. Rev. B, 54, 11169–11186. CrossRef CAS Web of Science Google Scholar
Kresse, G. & Joubert, D. (1999). Phys. Rev. B, 59, 1758–1775. Web of Science CrossRef CAS Google Scholar
Mirone, A. & d'Astuto, M. (2006). OpenPhonon: an Open Source Computer Code For Lattice-Dynamical Calculations, https://www.esrf.fr/computing/scientific/OpenPhonon/manual/index.html. Google Scholar
Mirone, A. & Wehinger, B. (2013). ab2tds, https://ftp.esrf.fr/scisoft/AB2TDS/Introduction.html. Google Scholar
Moreno, J. & Soler, J. M. (1992). Phys. Rev. B, 45, 13891–13898. CrossRef Google Scholar
Parlinski, K. (2014). PHONON, https://www.computingformaterials.com/phoncfm710/2phon610.html. Google Scholar
Parlinski, K., Li, Z. Q. & Kawazoe, Y. (1997). Phys. Rev. Lett. 78, 4063–4066. CrossRef CAS Web of Science Google Scholar
Perring, T. G. (1991). PhD thesis, University of Cambridge, UK. Google Scholar
Ramirez-Cuesta, A. J. (2004). Comput. Phys. Commun. 157, 226–238. CAS Google Scholar
Rappe, A. M., Rabe, K. M., Kaxiras, E. & Joannopoulos, J. D. (1990). Phys. Rev. B, 41, 1227–1230. CrossRef Google Scholar
Refson, K., Tulip, P. R. & Clark, S. J. (2006). Phys. Rev. B, 73, 155114. Web of Science CrossRef Google Scholar
Reznik, D. & Ahmadova, I. (2020). QuBS, 4, 41. CrossRef Google Scholar
Roach, D. L., Gale, J. D. & Ross, D. K. (2007). Neutron News, 18(3), 21–23. CrossRef Google Scholar
Róg, T., Murzyn, K., Hinsen, K. & Kneller, G. R. (2003). J. Comput. Chem. 24, 657–667. PubMed Google Scholar
Squires, G. L. (1996). Introduction to the Theory of Thermal Neutron Scattering. Mineola: Dover Publications. Google Scholar
Togo, A. & Tanaka, I. (2015). Scr. Mater. 108, 1–5. Web of Science CrossRef CAS Google Scholar
Walter, N. P., Jaiswal, A., Cai, Z. & Zhang, Y. (2018). Comput. Phys. Commun. 228, 209–218. CrossRef Google Scholar
Zheng, Q., Hao, M., Miao, R., Schaadt, J. & Dames, C. (2021). Prog. Energy, 3, 012002. CrossRef Google Scholar
This is an open-access article distributed under the terms of the Creative Commons Attribution (CC-BY) Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original authors and source are cited.