Module to obtain the density matrix by applying a Chebyshev polynomial expansion.
More...
|
| subroutine, public | prg_parse_cheb (chebdata, filename) |
| | Chebyshev parser. This module is used to parse all the input variables for the cheb electronic structure solver. Adding a new input keyword to the parser: More...
|
| |
| subroutine, public | prg_build_density_cheb (ham_bml, rho_bml, athr, threshold, ncoeffs, kbt, ef, bndfil, jon, verbose) |
| | Builds the density matrix from \( H_0 \) for a Fermi function approximated with a Chebyshev polynomial expansion. More...
|
| |
| subroutine, public | prg_build_density_cheb_fermi (ham_bml, rho_bml, athr, threshold, ncoeffs, kbt, ef, bndfil, getef, fermitol, jon, npts, trkfunc, verbose) |
| | Builds the density matrix from \( H_0 \) for a Fermi function approximated with a Chebyshev polynomial expansion. In this case the self-consistent recursion is applied to converge to the correct number of electrons and obtain the Fermi level. More...
|
| |
| real(dp) function | jackson (ncoeffs, i, jon) |
| | Evaluates the Jackson Kernel Coefficients. More...
|
| |
| subroutine | prg_get_chebcoeffs (npts, kbt, ef, ncoeffs, coeffs, emin, emax) |
| | Gets the coefficients of the Chebyshev expansion. More...
|
| |
| subroutine | prg_get_chebcoeffs_fermi_bs (npts, kbt, ef, tracesT, ncoeffs, coeffs, emin, emax, bndfil, norb, tol, jon, verbose) |
| | Gets the coefficients of the Chebyshev expansion with Ef computation. More...
|
| |
| subroutine | prg_get_chebcoeffs_fermi_nt (npts, kbt, ef, tracesT, ncoeffs, coeffs, emin, emax, bndfil, norb, tol, jon, verbose) |
| | Gets the coefficients of the Chebyshev expansion with Ef computation. More...
|
| |
| real(dp) function | tr (r, x) |
| | Chebyshev polynomial obtained by recursion. More...
|
| |
| real(dp) function | fermi (e, ef, kbt) |
| | Gives the Fermi distribution value for energy e. More...
|
| |
| real(dp) function | absmaxderivative (func, de) |
| | Gets the absolute maximum of the derivative of a function. More...
|
| |
Module to obtain the density matrix by applying a Chebyshev polynomial expansion.
See Amparo Gil 2007 [Amparo2007] , See Silver et al [Silver1996] , See Weisse et al [Weisse2006]
| subroutine, public prg_chebyshev_mod::prg_build_density_cheb |
( |
type(bml_matrix_t), intent(in) |
ham_bml, |
|
|
type(bml_matrix_t), intent(inout) |
rho_bml, |
|
|
real(dp), intent(in) |
athr, |
|
|
real(dp), intent(in) |
threshold, |
|
|
integer, intent(in) |
ncoeffs, |
|
|
real(dp), intent(in) |
kbt, |
|
|
real(dp), intent(in) |
ef, |
|
|
real(dp), intent(in) |
bndfil, |
|
|
logical, intent(in) |
jon, |
|
|
integer, intent(in) |
verbose |
|
) |
| |
Builds the density matrix from \( H_0 \) for a Fermi function approximated with a Chebyshev polynomial expansion.
\( \rho_{n+1} = b_{n+1}T_{n+1} + \rho_{n} \) Where, \( T_n \) is the nth Chebyshev polynomial and \( b_{n} \) is the nth coefficient of the expansion for the Fermi function. In the sparse version (when ellpack is used) the threshold can be varied linearly with the polynomial degree. The function is the following: \( Thresh(n) = Thresh_0 [a_{thr} (n-1) + (1-a_{thr})] \)
- Parameters
-
| ham_bml | Input Orthogonalized Hamiltonian matrix. |
| rho_bml | Output density matrix. |
| athr | Threshold linear increasing constant. |
| threshold | Threshold for sparse matrix algebra. |
| ncoeffs | Number of Chebyshev coefficients. |
| kbt | Electronic temperature in the energy units of the Hamiltonian. |
| ef | Fermi level in the energy units of the Hamiltonian. |
| bndfil | Band filing factor. |
| verbose | Verbosity level. |
Definition at line 141 of file prg_chebyshev_mod.F90.
| subroutine, public prg_chebyshev_mod::prg_build_density_cheb_fermi |
( |
type(bml_matrix_t), intent(in) |
ham_bml, |
|
|
type(bml_matrix_t), intent(inout) |
rho_bml, |
|
|
real(dp), intent(in) |
athr, |
|
|
real(dp), intent(in) |
threshold, |
|
|
integer, intent(in) |
ncoeffs, |
|
|
real(dp), intent(in) |
kbt, |
|
|
real(dp), intent(out) |
ef, |
|
|
real(dp), intent(in) |
bndfil, |
|
|
logical, intent(in) |
getef, |
|
|
real(dp) |
fermitol, |
|
|
logical, intent(in) |
jon, |
|
|
integer |
npts, |
|
|
logical, intent(in) |
trkfunc, |
|
|
integer, intent(in) |
verbose |
|
) |
| |
Builds the density matrix from \( H_0 \) for a Fermi function approximated with a Chebyshev polynomial expansion. In this case the self-consistent recursion is applied to converge to the correct number of electrons and obtain the Fermi level.
\( \rho_{n+1} = b_{n+1}T_{n+1} + \rho_{n} \) Where, \( T_n \) is the nth Chebyshev polynomial and \( b_{n} \) is the nth coefficient of the expansion for the Fermi function. In the sparse version (when ellpack is used) the threshold can be varied linearly with the polynomial degree. The function is the following: \( Thresh(n) = Thresh_0 [a_{thr} (n-1) + (1-a_{thr})] \)
- Parameters
-
| ham_bml | Input Orthogonalized Hamiltonian matrix. |
| rho_bml | Output density matrix. |
| athr | Threshold linear increasing constant. |
| threshold | Threshold for sparse matrix algebra. |
| ncoeffs | Number of Chebyshev coefficients. |
| kbt | Electronic temperature in the energy units of the Hamiltonian. |
| ef | Fermi level in the energy units of the Hamiltonian. |
| bndfil | Band filing factor. |
| npts | Number of energy points to compute the coefficients |
| verbose | Verbosity level. |
Definition at line 307 of file prg_chebyshev_mod.F90.