A GPU-Accelerated Open-Source Python Package for Calculating Powder Diffraction, Small-Angle-, and Total Scattering with the Debye Scattering Equation

06 October 2023, Version 1
This content is a preprint and has not undergone peer review at the time of posting.


The Debye scattering equation, derived in 1915 by Peter Debye, is used to calculate scattering intensities from atomic structures considering the position of each atom in the structure. The Debye scattering equation can be used to compute the scattering pattern of any atomic structure and is commonly used to study both crystalline and non-crystalline materials with a range of scattering techniques like powder diffraction (PD), total scattering (TS) with pair distribution function (PDF) analysis and small-angle scattering (SAS). Although the Debye scattering equation is extremely versatile, the computation of the double sum, which scales O(N^2), has limited the practical use of the equation. We introduce a GPU-accelerated open-source Python package, named DebyeCalculator, for rapid calculation of the Debye scattering equation from chemical structures represented as xyz-files or CIF-files. The xyz-format is commonly used in materials chemistry for the description of discrete particles and simply consists of a list of atomic identities and their respective Cartesian coordinates (x, y and z). DebyeCalculator can also take a crystallographic information file (CIF) and a user-defined spherical radius as input to generate an xyz-file from which a scattering pattern is calculated. DebyeCalculator is an open-source project (licensed under the Apache License 2.0) that is readily available through GitHub: https://github.com/FrederikLizakJohansen/DebyeCalculator and PyPi (https://pypi.org/project/DebyeCalculator/). It can also be run through an interactive interface, where users can simulate PD, TS, SAS and PDF data from structural models on both CPU and GPU.


Debye scattering equation
Powder diffraction
Small angle scattering
Total scattering
Pair distribution function data


Comments are not moderated before they are posted, but they can be removed by the site moderators if they are found to be in contravention of our Commenting Policy [opens in a new tab] - please read this policy before you post. Comments should be used for scholarly discussion of the content in question. You can find more information about how to use the commenting feature here [opens in a new tab] .
This site is protected by reCAPTCHA and the Google Privacy Policy [opens in a new tab] and Terms of Service [opens in a new tab] apply.