magnon.magnons¶
Classes¶
A class to build and diagonalize the Linear Spin Wave Hamiltonian from exchange interactions. |
Functions¶
|
Compute and return sorted real magnon energies at a k-point. |
Module Contents¶
- class magnon.magnons.MagnonSpectrum(atoms, interactions, calc=None, supercell=(1, 1, 1), name=None, num_threads=1, **kwargs)¶
A class to build and diagonalize the Linear Spin Wave Hamiltonian from exchange interactions.
- Parameters:
atoms (ase.Atoms object) – The Atoms object of the system to which the magnon spectrum pertains.
interactions (magnon.interactions.InteractionList object) – The InteractionList object of the exchange interactions to use for the spectrum calculation.
num_threads (int) – The number of threads to use for parallel calculations.
mag_order_vect (numpy.ndarray, dtype: float) – Wavevector for Q-commensurate spin vector ordering.
mag_order_axis (numpy.ndarray, dtype: float) – The rotation axis around which the Q-commensurate spin vector ordering rotations are to occur
ham_prefactor (float) – Choice of Hamiltonian prefactor convention.
spins_are_unit (bool) – Whether to use the unit spin model, or dimensionful spins.
supercell (array-like) – Size of the calculation cell with respect to the primitive cell
name (str) – The name of the calculation
- u¶
The u vectors for each site. See
magnon.magnons.MagnonSpectrum._generate_uv_vectors().- Type:
numpy.ndarray, dtype: float
- v¶
The v vectors for each site. See
magnon.magnons.MagnonSpectrum._generate_uv_vectors().- Type:
numpy.ndarray, dtype: float
- S¶
Spin quantum numbers.
- Type:
numpy.ndarray, dtype: float
- usm_factors¶
Unit spin model conversion factors.
- Type:
numpy.ndarray, dtype: float
See also
This- _num_threads = 1¶
- interactions¶
- atoms¶
- cell_vectors = None¶
- interaction_matrix = None¶
- calc = None¶
- name = None¶
- supercell = (1, 1, 1)¶
- spin¶
- _build_interaction_matrix()¶
- static _generate_uv_vectors(spin_vectors)¶
Compute u and v vectors from spin orientation vectors for LSWT calculation
- Parameters:
spin_vectors (numpy.ndarray) –
- Return type:
(numpy.ndarray, numpy.ndarray)
- calculate_eigen_energy(k)¶
Compute the eigenvalues of the Hamiltonian at wavevector k. The Hamiltonian in the rotated frame approach [1] is built and diagonalized using the treatment for generalized quadratic bosonic Hamiltonians [2].
- Parameters:
k (ndarray, shape (3,)) – Wavevector in reciprocal space.
- Returns:
hamiltonian_eigs – Eigenvalues of the Bogoliubov-transformed Hamiltonian.
- Return type:
ndarray
References
- get_band_structure(path)¶
Gets the magnon bandstructure along a path given by an ASE BandPath object. This is a wrapper for band_structure() which enables handling of k-space paths and bandstructures using ASE objects.
- Parameters:
path (ASE.dft.kpoints.BandPath object) – The path along which to compute the bandstructure.
- Returns:
An ASE BandStructure object containing the magnon bandstructure.
- Return type:
ase.spectrum.band_structure.BandStructure
- band_structure(path_kc)¶
Computes the bands energies for a set of reciprocal space points.
- Parameters:
path_kc (array-like) – The reciprocal space path along which to compute the bandstructure, given in Cartesian coordinates.
- Returns:
The band energies along the specified path.
- Return type:
numpy.ndarray
- get_dos(kpts=(10, 10, 10))¶
Computes the magnon density of states.
- Parameters:
kpts (array-like, dtype=int) – The dimensions of the Monkhorst-Pack grid to sample.
- Return type:
ase.spectrum.dosdata.RawDOSData object
- magnon.magnons._single_q_energy_worker(args)¶
Compute and return sorted real magnon energies at a k-point.
This is a multiprocessing-friendly worker function for use with MagnonSpectrum. It must be defined at module level to be pickleable.
- Parameters:
args (tuple) –
- Tuple of (instance, q_c) where:
- instanceMagnonSpectrum
Instance of the MagnonSpectrum class.
- q_carray_like
k-point in scaled Cartesian coordinates.
- Returns:
energies – Sorted real eigenvalues of the magnon Hamiltonian at the given k-point.
- Return type:
ndarray
Notes
The k-point is converted to cartesian space (multiplied by 2*pi). Only the real parts of the eigenvalues are returned.