![]() |
(git:d18deda)
|
deal with the Fermi distribution, compute it, fix mu, get derivs More...
Functions/Subroutines | |
subroutine, public | fermi (f, n, kts, e, mu, t, maxocc, estate, festate) |
returns occupations according to Fermi-Dirac statistics for a given set of energies and fermi level. Note that singly occupied orbitals are assumed | |
subroutine, public | fermifixed (f, mu, kts, e, n, t, maxocc, estate, festate) |
returns occupations according to Fermi-Dirac statistics for a given set of energies and number of electrons. Note that singly occupied orbitals are assumed. could fail if the fermi level lies out of the range of eigenvalues (to be fixed) | |
subroutine, public | fermikp (f, mu, kts, e, nel, wk, t, maxocc) |
Bisection search to find mu for a given nel (kpoint case) | |
subroutine, public | fermikp2 (f, mu, kts, e, nel, wk, t) |
Bisection search to find mu for a given nel (kpoint case) | |
subroutine, public | fermifixedderiv (dfde, f, mu, kts, e, n, t, maxocc, l, estate, festate) |
returns f and dfde for a given set of energies and number of electrons it is a numerical derivative, trying to use a reasonable step length it ought to yield an accuracy of approximately EPSILON()^(2/3) (~10^-11) l ~ 10*T yields best accuracy Note that singly occupied orbitals are assumed. To be fixed: this could be parallellized for better efficiency | |
deal with the Fermi distribution, compute it, fix mu, get derivs
subroutine, public fermi_utils::fermi | ( | real(kind=dp), dimension(:), intent(out) | f, |
real(kind=dp), intent(out) | n, | ||
real(kind=dp), intent(out) | kts, | ||
real(kind=dp), dimension(:), intent(in) | e, | ||
real(kind=dp), intent(in) | mu, | ||
real(kind=dp), intent(in) | t, | ||
real(kind=dp), intent(in) | maxocc, | ||
integer, intent(in), optional | estate, | ||
real(kind=dp), intent(in), optional | festate | ||
) |
returns occupations according to Fermi-Dirac statistics for a given set of energies and fermi level. Note that singly occupied orbitals are assumed
f | occupations |
N | total number of electrons (output) |
kTS | ... |
e | eigenvalues |
mu | Fermi level (input) |
T | electronic temperature |
maxocc | maximum occupation of an orbital |
estate | excited state in core level spectroscopy |
festate | occupation of the excited state in core level spectroscopy |
Definition at line 47 of file fermi_utils.F.
subroutine, public fermi_utils::fermifixed | ( | real(kind=dp), dimension(:), intent(out) | f, |
real(kind=dp), intent(out) | mu, | ||
real(kind=dp), intent(out) | kts, | ||
real(kind=dp), dimension(:), intent(in) | e, | ||
real(kind=dp), intent(in) | n, | ||
real(kind=dp), intent(in) | t, | ||
real(kind=dp), intent(in) | maxocc, | ||
integer, intent(in), optional | estate, | ||
real(kind=dp), intent(in), optional | festate | ||
) |
returns occupations according to Fermi-Dirac statistics for a given set of energies and number of electrons. Note that singly occupied orbitals are assumed. could fail if the fermi level lies out of the range of eigenvalues (to be fixed)
f | occupations |
mu | Fermi level (output) |
kTS | ... |
e | eigenvalues |
N | total number of electrons (input) |
T | electronic temperature |
maxocc | maximum occupation of an orbital |
estate | excited state in core level spectroscopy |
festate | occupation of the excited state in core level spectroscopy |
Definition at line 201 of file fermi_utils.F.
subroutine, public fermi_utils::fermikp | ( | real(kind=dp), dimension(:, :), intent(out) | f, |
real(kind=dp), intent(out) | mu, | ||
real(kind=dp), intent(out) | kts, | ||
real(kind=dp), dimension(:, :), intent(in) | e, | ||
real(kind=dp), intent(in) | nel, | ||
real(kind=dp), dimension(:), intent(in) | wk, | ||
real(kind=dp), intent(in) | t, | ||
real(kind=dp), intent(in) | maxocc | ||
) |
Bisection search to find mu for a given nel (kpoint case)
f | Occupation numbers |
mu | chemical potential |
kTS | Entropic energy contribution |
e | orbital (band) energies |
nel | Number of electrons (total) |
wk | kpoint weights |
t | Temperature |
maxocc | Maximum occupation |
Definition at line 282 of file fermi_utils.F.
subroutine, public fermi_utils::fermikp2 | ( | real(kind=dp), dimension(:, :, :), intent(out) | f, |
real(kind=dp), intent(out) | mu, | ||
real(kind=dp), intent(out) | kts, | ||
real(kind=dp), dimension(:, :, :), intent(in) | e, | ||
real(kind=dp), intent(in) | nel, | ||
real(kind=dp), dimension(:), intent(in) | wk, | ||
real(kind=dp), intent(in) | t | ||
) |
Bisection search to find mu for a given nel (kpoint case)
f | Occupation numbers |
mu | chemical potential |
kTS | Entropic energy contribution |
e | orbital (band) energies |
nel | Number of electrons (total) |
wk | kpoint weights |
t | Temperature |
Definition at line 335 of file fermi_utils.F.
subroutine, public fermi_utils::fermifixedderiv | ( | real(kind=dp), dimension(:, :), intent(out) | dfde, |
real(kind=dp), dimension(:), intent(out) | f, | ||
real(kind=dp), intent(out) | mu, | ||
real(kind=dp), intent(out) | kts, | ||
real(kind=dp), dimension(:), intent(in) | e, | ||
real(kind=dp), intent(in) | n, | ||
real(kind=dp), intent(in) | t, | ||
real(kind=dp), intent(in) | maxocc, | ||
real(kind=dp), intent(in) | l, | ||
integer, intent(in), optional | estate, | ||
real(kind=dp), intent(in), optional | festate | ||
) |
returns f and dfde for a given set of energies and number of electrons it is a numerical derivative, trying to use a reasonable step length it ought to yield an accuracy of approximately EPSILON()^(2/3) (~10^-11) l ~ 10*T yields best accuracy Note that singly occupied orbitals are assumed. To be fixed: this could be parallellized for better efficiency
dfde | derivatives of the occupation numbers with respect to the eigenvalues the ith column is the derivative of f wrt to e_i |
f | occupations |
mu | Fermi level (input) |
kTS | ... |
e | eigenvalues |
N | total number of electrons (output) |
T | electronic temperature |
maxocc | ... |
l | typical length scale (~ 10 * T) |
estate | ... |
festate | ... |
Definition at line 412 of file fermi_utils.F.