38 return 1.0 / (std::exp(x) + 1.0);
51 Real one_minus_f = 1.0 - f;
58 constexpr Real probability_floor = 1e-16;
59 Real term_occupied = (f > probability_floor) ? f * std::log(f) : 0.0;
61 (one_minus_f > probability_floor) ? one_minus_f * std::log(one_minus_f) : 0.0;
62 return term_occupied + term_empty;
65 [[nodiscard]] std::string
name()
const override {
Fermi-Dirac (physical finite-T) smearing.
std::string name() const override
Real occupation(Real x) const override
Compute the occupation f(x) where x = (E - E_F) / σ.
Real entropy_weight(Real x) const override
FermiDiracSmearing(Real smearing_width=0.0)
Abstract interface for electronic smearing schemes.
Real smearing_width() const
Smearing width σ (degauss) in Ry.