This function calculates -dn(E)/dE, where n(E) is the Fermi distribution function.
\param E Energy at which we want to calculate -dn(E)/dE, in 1/eV \param mu Chemical potential in eV \param KT k_Boltzmann * Temperature, in eV
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | E | |||
real(kind=dp), | intent(in) | :: | mu | |||
real(kind=dp), | intent(in) | :: | KT |
function MinusFermiDerivative(E, mu, KT)
real(kind=dp), intent(in) :: E
real(kind=dp), intent(in) :: mu
real(kind=dp), intent(in) :: KT
real(kind=dp) :: MinusFermiDerivative
! I do not put stopwatches here because it would slow down the calculation by orders of magnitude
! MaxExp is the maximum value to be used for the exp function.
! The function is taken to be zero for x>MaxExp. This value is chosen so that
! the function is truncated when its value is smaller than about 1.e-16
real(kind=dp), parameter :: MaxExp = 36._dp
real(kind=dp) :: MyExp
MyExp = (E - mu)/KT
if (abs(MyExp) > MaxExp) then
MinusFermiDerivative = 0._dp
else
MinusFermiDerivative = 1._dp/KT*exp(MyExp)/((exp(MyExp) + 1._dp)**2)
end if
end function MinusFermiDerivative