neutrons / multiphonon

multiphonon (getDOS)
MIT License
2 stars 5 forks source link

DOI

multiphonon

This is a rewrite of multiphonon (getDOS) code that was originally authored by Max Kresch during the DANSE project and was then revised by several authors including Brandon, Chen, Jennifer, and Dipanshu (their work were recorded as branches in this repo). It fixes some problems in the earlier versions of getDOS code and implemented new features. The original requirements of this project is captured at this ticket. And details of the features of this code can be found below.

Main functionality: Compute phonon Density of States (DOS) from powder Inelastic Neutron Scattering (INS) spectrum

Inelastic neutron scattering (INS) are important probes of dynamics in materials [2]. Powder spectra measured by inelastic neutron spectrometers provide information such as phonon density of states (DOS), a fundamental property of a solid. The measured spectra, however, are two-dimensional in axes of Q (momentum transfer) and E (energy transfer). This code converts a S(Q,E) INS spectrum to DOS.

Features

Installation

Installation is handled with conda. Please see Installation instructions for details.

Usage

Please see usage for details.

Community guidelines

How to contribute

Please clone the repository, make changes and make a pull request.

How to report issues

Please use the github issues to report issues or bug reports.

Support

Please either use the github issues to ask for support, or contact the authors directly using email.

Algorithm

The core algorithm is an iterative procedure:

For more details of the basic principles of SQE->DOS conversion, please refer to Appendix of [1] and Section 6.5 "Calculation of Multiphonon Scattering" of [2].

API doc

See https://multiphonon.readthedocs.io/en/latest/api.html

(previous http://neutrons.github.io/multiphonon/api.html)

Run tests

Tests are run automatically at CI

To manually run the minimal test suite, install multiphonon, clone this repository, and run

$ cd multiphonon/tests && py.test -m "not needs_mantid and not needs_ipywe"

If mantid and ipywe were installed, you can run all tests by

$ py.test

References

[1] Max Kresch et al., https://journals.aps.org/prb/abstract/10.1103/PhysRevB.75.104301

[2] Brent Fultz et al., http://www.cacr.caltech.edu/projects/danse/doc/Inelastic_Book.pdf

History

Releases