Implementation

Methods for calculating the curvature effective mass

Three methods are used to calculate the curvature effective mass (Eqn.1 in the main text).

  • Finite difference

    We use a three point forward finite difference equation to calculate the curvature at point i:

    \[\frac{\partial^2E}{\partial k^2} = \frac{E_{i+2} - 2E_{i+1} + E_{i}}{\left|k_{i+1} - k_i\right|},\]

    where \(E_i\) is the energy eigenvalue at position \(k_i\) in reciprocal space.

  • Unweighted least-squares fit

    To obtain estimates for the coefficient of a parabolic dispersion

    \[E = ck^2,\]

    we use the least-squares method as implemented in the NumPy Python library to minimise the summed square of residuals

    \[\sum^{5}_{i=1}(ck_i^2 - E_i)^2.\]

    We fit to five points; three points from the DFT-calculated dispersion plus two from the symmetry of the dispersion (\(E(k)=E(-k)\)).

  • Weighted least-squares fit

    To obtain estimates for the coefficients of the dispersion

    \[E = {c}k^2,\]

    we use the least-squares method as implemented in the NumPy Python library to minimise the summed square of residuals

    \[\sum^{n}_{i=1}W_i(ck_i^2 - E_i)^2.\]

    The summation is over all points up to an energy of \(0.25\,eV\), including points generated from the symmetry of the dispersion, \(E(k)=E(-k)\). \(W_i\) is given by

    \[W_i(E_i,T) = \frac{1}{\exp\left(\frac{E_i-E_f}{k_BT}\right)+1}.\]