PAOFLOW.spectrum.do_effective_mass#

Functions#

do_effective_mass(data_controller)

Compute effective mass tensors and write them to a formatted data file.

Module Contents#

PAOFLOW.spectrum.do_effective_mass.do_effective_mass(data_controller)[source]#

Compute effective mass tensors and write them to a formatted data file.

Parameters:

data_controller (DataController) – Object providing data_arrays and data_attributes. Required arrays: d2Ed2k (shape (6, nkpnts, bnd, nspin)), E_k (shape (nkpnts, bnd, nspin)). Required attributes: bnd, nspin, nk1, nk2, nk3, npool, opath.

Returns:

Writes one text file per spin channel to {opath}/effective_masses_{ispin}.dat. Each row contains the crystal k-coordinates, energy relative to the Fermi level, the three principal effective masses, and the DOS effective mass.

Return type:

None

Notes

The six unique components of d2Ed2k (xx, yy, zz, xy, xz, yz) are assembled into the symmetric \(3 \times 3\) inverse-mass tensor \((\hbar^2 M^{-1})_{ij}\) for each k-point and band. The conversion factor SI_conv = 0.036749302892341 converts from PAOFLOW internal units to \(\hbar^2 / (m_e \cdot \text{eV} \cdot \text{Å}^2)\). The effective masses are obtained as the eigenvalues of the inverse of the assembled tensor:

\[m^*_\alpha = \left[ \text{eig}\left( M \right) \right]_\alpha\]

The DOS effective mass is computed as the signed geometric mean of the three principal masses:

\[m^*_{\text{DOS}} = \text{sgn}(m^*_1 m^*_2 m^*_3) \cdot |m^*_1 m^*_2 m^*_3|^{1/3}\]

Only rank 0 performs the file I/O after a full gather of the distributed d2Ed2k and E_k arrays via gather_full().