PAOFLOW.elphon.displacements#

Symmetry-reduced displacement bookkeeping for the finite-difference e-phonon.

dV_{kappa,alpha} = dH/du_{kappa,alpha} is obtained by finite-differencing the PAO Hamiltonian. The displacement set is reduced by the crystal symmetry, exactly as in the harmonic-phonon workflow: we delegate to phonopy’s generate_displacements so only the symmetry-inequivalent displacements are computed (e.g. a single displacement for fcc metals such as Al), and the full derivative tensor is reconstructed from them by symmetry.

Attributes#

Functions#

reference_supercell_atoms(phonon)

Supercell atom indices of the reference primitive-cell atoms (p2s_map).

generate_eph_displacements(phonon, distance[, ...])

Finite displacements for the electron-phonon derivative.

Module Contents#

PAOFLOW.elphon.displacements.CARTESIAN = ('x', 'y', 'z')[source]#
PAOFLOW.elphon.displacements.reference_supercell_atoms(phonon)[source]#

Supercell atom indices of the reference primitive-cell atoms (p2s_map).

PAOFLOW.elphon.displacements.generate_eph_displacements(phonon, distance, is_plusminus='auto', displacement_mode='symmetry')[source]#

Finite displacements for the electron-phonon derivative.

Two modes are available:

  • displacement_mode='symmetry' (default): delegate to phonopy.Phonopy.generate_displacements(), so the crystal symmetry reduces the set to the inequivalent displacements (a single one for fcc Al). The full Cartesian tensor is then reconstructed by the symmetry expansion. is_plusminus='auto' adds the minus displacement only when it is not symmetry-related to the plus; True always adds it.

  • displacement_mode='cartesian': displace every reference primitive-cell atom explicitly along x, y and z (is_plusminus=True -> central +/- pairs, otherwise a single + per axis with a forward difference against the reference). This yields the full Cartesian derivative directly, with no symmetry expansion, at the cost of more DFT runs.

Parameters:
  • phonon (phonopy.Phonopy) – Initialised object (phonon.supercell / phonon.primitive set).

  • distance (float) – Displacement amplitude in Bohr.

  • is_plusminus ({'auto', True, False}) – Central-difference control (see above).

  • displacement_mode ({'symmetry', 'cartesian'}) – Displacement generation strategy.

Returns:

  • cells (list[phonopy.structure.atoms.PhonopyAtoms]) – The displaced supercells.

  • meta (list[dict]) – One entry per cell: {index, sc_atom, displacement:[dx, dy, dz], distance} with the Cartesian displacement vector (Bohr).