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}.\]