abinslib.isotropic_incoherent

Incoherent phonon mode intensities in the fully-isotropic approximation.

Functions

calculate_isotropic_incoherent_fundamentals(...)

Calculate mode intensities in fully-isotropic approximation.

calculate_isotropic_dw_factor(→ numpy.ndarray)

Calculate fully-isotropic Debye-Waller factor.

calculate_isotropic_incoherent_spectra(...)

Calculate INS intensities in fully-isotropic incoherent approximation.

q_scaling_isotropic_incoherent_spectra(...)

Calculate INS intensities in fully-isotropic incoherent approximation.

Module Contents

abinslib.isotropic_incoherent.calculate_isotropic_incoherent_fundamentals(modes: euphonic.QpointPhononModes, mode_displacements: euphonic.Quantity, atomic_displacements: euphonic.Quantity, nominal_q2: euphonic.Quantity, include_dw: bool = True) numpy.ndarray[source]

Calculate mode intensities in fully-isotropic approximation.

S = exp(-(Q^2 tr(A)/3)) Q^2 tr(B) / 3

  • Fundamentals only

  • Atomic cross sections not applied

  • Ignore actual q-points and use nominal Q^2 instead

Return array indices (qpt, mode, atom)

abinslib.isotropic_incoherent.calculate_isotropic_dw_factor(atomic_displacements: euphonic.Quantity, q2: euphonic.Quantity) numpy.ndarray[source]

Calculate fully-isotropic Debye-Waller factor.

The dot product between atomic displacements and Q vector is replaced with a scalar product between Q and tr(A)/3.

Parameters:
Returns:

Debye-Waller factor array with shape (natoms, *q2.shape)

abinslib.isotropic_incoherent.calculate_isotropic_incoherent_spectra(modes: euphonic.QpointPhononModes, mode_displacements: abinslib.Displacements, atomic_displacements: euphonic.Quantity, nominal_q2: euphonic.Quantity, bins: euphonic.Quantity, apply_cross_section: bool = True, include_dw: bool = True) euphonic.spectra.Spectrum1DCollection[source]

Calculate INS intensities in fully-isotropic incoherent approximation.

Actual q-points of phonon modes will be disregarded; instead each mode intensity will be based on a separate array of nominal Q^2 values corresponding to modes. This is intended to approximate powder-averaging with kinematic constraints: for indirect geometry the energy-Q^2 relationship can be determined using abinslib.utils.calculate_indirect_q2.

Parameters:
  • modes – phonon frequency and eigenvector dataset

  • mode_displacements – phonon mode displacement dataset (This can be obtained using Displacements.from_modes(modes)().)

  • atomic_displacements – thermal average atomic displacements indexed (atom, direction, direction)

  • nominal_q2 – Scalar Q^2 values corresponding to modes; note that all q-points are used and this is typically related to the mode frequency by neutron instrument parameters.

  • bins – Energy or frequency bins used as x_data in resulting spectra

  • apply_cross_section – Multiply each atom/isotope spectrum by a corresponding total neutron scattering cross-section (σ_tot).

  • include_dw – Multiply each spectrum by Debye-Waller factor; this is calculated from atomic_displacements and follows nominal_q2.

Returns:

binned spectra of contribution from each nucleus

abinslib.isotropic_incoherent.q_scaling_isotropic_incoherent_spectra(modes: euphonic.QpointPhononModes, mode_displacements: abinslib.Displacements, atomic_displacements: euphonic.Quantity, nominal_q2: euphonic.Quantity, bins: euphonic.Quantity) euphonic.spectra.Spectrum1DCollection[source]

Calculate INS intensities in fully-isotropic incoherent approximation.

Note that to give expected results, mode_displacements should have N+1 Bose occupation and atomic_displacements should have 2N+1 occupation.

Actual q-points of phonon modes will be disregarded; instead each mode intensity will be calculated at Q=1/Å then rescaled to nominal Q^2 values corresponding to energy bins. This is intended to approximate powder-averaging with kinematic constraints: for indirect geometry the energy-Q^2 relationship can be determined using abinslib.utils.calculate_indirect_q2.

Parameters:
  • modes – phonon frequency and eigenvector dataset

  • mode_displacements – phonon mode displacement dataset (This can be obtained using Displacements.from_modes(modes)().)

  • atomic_displacements – thermal average atomic displacements indexed (atom, direction, direction)

  • nominal_q2 – Scalar Q^2 values corresponding to output bin centers.

  • bins – Energy or frequency bins used as x_data in resulting spectra

  • apply_cross_section – Multiply each atom/isotope spectrum by a corresponding total neutron scattering cross-section (σ_tot).

Returns:

binned spectra of contribution from each nucleus