pyprocar.core.ElectronicBandStructure#

class pyprocar.core.ElectronicBandStructure(kpoints: ndarray, bands: ndarray, efermi: float, n_kx: int | None = None, n_ky: int | None = None, n_kz: int | None = None, projected: ndarray | None = None, projected_phase: ndarray | None = None, weights: ndarray | None = None, kpath: KPath | None = None, labels: List | None = None, reciprocal_lattice: ndarray | None = None)[source]#

This object stores electronic band structure informomration.

Parameters:
  • kpoints (np.ndarray) – The kpoints array. Will have the shape (n_kpoints, 3)

  • bands (np.ndarray) – The bands array. Will have the shape (n_kpoints, n_bands)

  • efermi (float) – The fermi energy

  • projected (np.ndarray, optional) – The projections array. Will have the shape (n_kpoints, n_bands, n_spins, norbitals,n_atoms), defaults to None

  • projected_phase (np.ndarray, optional) – The full projections array that incudes the complex part. Will have the shape (n_kpoints, n_bands, n_spins, norbitals,n_atoms), defaults to None

  • kpath (KPath, optional) – The kpath for band structure claculation, defaults to None

  • weights (np.ndarray, optional) – The weights of the kpoints. Will have the shape (n_kpoints, 1), defaults to None

  • labels (List, optional)

  • reciprocal_lattice (np.ndarray, optional) – The reciprocal lattice vector matrix. Will have the shape (3, 3), defaults to None

  • shifted_to_efermi (bool, optional) – Boolean to determine if the fermi energy is shifted, defaults to False

Methods

ElectronicBandStructure.__init__(kpoints, ...)

ElectronicBandStructure.array_to_mesh(array, ...)

Converts a list to a mesh that corresponds to ebs.kpoints [n_kx*n_ky*n_kz,...]->[n_kx,n_ky,n_kz,...].

ElectronicBandStructure.calculate_harmonic_average_effective_mass(hessian)

ElectronicBandStructure.calculate_nd_scalar_derivatives(...)

Transforms the derivatives to cartesian coordinates

ElectronicBandStructure.calculate_nd_scalar_integral(...)

Calculate the scalar integral

ElectronicBandStructure.cartesian_to_reduced(...)

Converts cartesian coordinates to fractional coordinates

ElectronicBandStructure.ebs_ipr()

_summary_

ElectronicBandStructure.ebs_ipr_atom()

It returns the atom-resolved , pIPR:

ElectronicBandStructure.ebs_sum([atoms, ...])

_summary_

ElectronicBandStructure.expand_kpoints_to_supercell()

ElectronicBandStructure.expand_kpoints_to_supercell_by_axes([...])

ElectronicBandStructure.fix_collinear_spin()

Converts data from two spin channels to a single channel, adjusting the spin down values to negatives.

ElectronicBandStructure.general_rotation(...)

Apply a rotation defined by an angle and an axis.

ElectronicBandStructure.ibz2fbz(rotations[, ...])

Applys symmetry operations to the kpoints, bands, and projections

ElectronicBandStructure.interpolate_mesh_grid(...)

This function will interpolate an Nd, 3d mesh grid [...,nx,ny,nz]

ElectronicBandStructure.mesh_to_array(mesh)

Converts a mesh to a list that corresponds to ebs.kpoints [n_kx,n_ky,n_kz,...]->[n_kx*n_ky*n_kz,...] :Parameters: mesh (np.ndarray) -- The mesh to convert to a list

ElectronicBandStructure.mirror_x(kpoints, ...)

Applies the given rotational crystal symmetry to the current system.

ElectronicBandStructure.plot_kpoints([...])

This needs to be moved to core.KPath and updated new implementation of pyvista PolyData

ElectronicBandStructure.ravel_array(mesh_grid)

ElectronicBandStructure.reduce_bands_near_fermi([...])

Reduces the bands to those near the fermi energy

ElectronicBandStructure.reduce_kpoints_to_plane(...)

Reduces the kpoints to a plane

ElectronicBandStructure.reduced_to_cartesian(...)

ElectronicBandStructure.rot_symmetry_z(...)

Applies the given rotational crystal symmetry to the current system.

ElectronicBandStructure.translate(newOrigin, ...)

Centers the Kpoints at newOrigin, newOrigin is either and index (of some Kpoint) or the cartesian coordinates of one point in the reciprocal space.

ElectronicBandStructure.unfold([...])

The method helps unfold the bands.

ElectronicBandStructure.update_weights(weights)

Attributes

ElectronicBandStructure.bands

ElectronicBandStructure.bands_gradient

Bands gradient is a numpy array that stores each band gradient a list that corresponds to the self.kpoints Shape = [n_kpoints,3,n_bands], where the second dimension represents d/dx,d/dy,d/dz

ElectronicBandStructure.bands_gradient_mesh

Bands gradient mesh is a numpy array that stores each band gradient in a mesh grid.

ElectronicBandStructure.bands_hessian

Bands hessian is a numpy array that stores each band hessian in a list that corresponds to the self.kpoints Shape = [n_kpoints,3,3,n_bands], where the second and third dimension represent d/dx,d/dy,d/dz

ElectronicBandStructure.bands_hessian_mesh

Bands hessian mesh is a numpy array that stores each band hessian in a mesh grid.

ElectronicBandStructure.bands_integral

ElectronicBandStructure.bands_mesh

Bands mesh is a numpy array that stores each band in a mesh grid.

ElectronicBandStructure.efermi

ElectronicBandStructure.fermi_speed

fermi speed is a numpy array that stores each fermi speed a list that corresponds to the self.kpoints Shape = [n_kpoints,n_bands]

ElectronicBandStructure.fermi_speed_mesh

Fermi speed mesh is a numpy array that stores each Fermi Velocity in a mesh grid.

ElectronicBandStructure.fermi_velocity

fermi_velocity is a numpy array that stores each fermi_velocity a list that corresponds to the self.kpoints Shape = [n_kpoints,3,n_bands], where the second dimension represents d/dx,d/dy,d/dz

ElectronicBandStructure.fermi_velocity_mesh

Fermi Velocity mesh is a numpy array that stores each Fermi Velocity in a mesh grid.

ElectronicBandStructure.harmonic_average_effective_mass

harmonic average effective mass is a numpy array that stores each harmonic average effective mass in a list that corresponds to the self.kpoints Shape = [n_kpoints,n_bands],

ElectronicBandStructure.harmonic_average_effective_mass_mesh

harmonic average effective mass mesh is a numpy array that stores each harmonic average effective mass mesh in a mesh grid.

ElectronicBandStructure.inv_reciprocal_lattice

Returns the inverse of the reciprocal lattice

ElectronicBandStructure.is_non_collinear

Boolean to determine if this is a non-colinear calculation

ElectronicBandStructure.kpath

ElectronicBandStructure.kpoints

Returns the kpoints in fractional basis

ElectronicBandStructure.kpoints_cartesian

ElectronicBandStructure.kpoints_cartesian_mesh

Kpoint cartesian mesh representation of the kpoints grid.

ElectronicBandStructure.kpoints_mesh

Kpoint mesh representation of the kpoints grid.

ElectronicBandStructure.kx_map

ElectronicBandStructure.ky_map

ElectronicBandStructure.kz_map

ElectronicBandStructure.n_kx

The number of unique kpoints in kx direction in the reduced basis

ElectronicBandStructure.n_ky

The number of unique kpoints in kx direction in the reduced basis

ElectronicBandStructure.n_kz

The number of unique kpoints in ky direction in the reduced basis

ElectronicBandStructure.natoms

The number of atoms

ElectronicBandStructure.nbands

The number of bands

ElectronicBandStructure.nkpoints

The number of k points

ElectronicBandStructure.norbitals

The number of orbitals

ElectronicBandStructure.nprincipals

The number of principal quantum numbers

ElectronicBandStructure.nspins

The number of spin channels

ElectronicBandStructure.projected

ElectronicBandStructure.projected_mesh

projected mesh is a numpy array that stores each projection in a mesh grid.

ElectronicBandStructure.projected_phase

ElectronicBandStructure.projected_phase_mesh

projected phase mesh is a numpy array that stores each projection phases in a mesh grid.

ElectronicBandStructure.reciprocal_lattice

ElectronicBandStructure.weights

ElectronicBandStructure.weights_mesh

weights mesh is a numpy array that stores each weights in a mesh grid.