15 integer,
parameter ::
dp = kind(1.0d0)
34 type(bml_matrix_t),
intent(inout) :: h_bml
36 real(
dp) :: alpha, beta, maxminusmin
37 real(
dp),
allocatable :: gbnd(:)
41 call bml_gershgorin(h_bml, gbnd)
42 call bml_normalize(h_bml, gbnd(1), gbnd(2))
61 type(bml_matrix_t),
intent(inout) :: h_bml
62 real(
dp),
intent(in) :: h1, hn, mu
64 real(
dp) :: alpha, beta, maxminusmininverse
66 maxminusmininverse = 1.0_dp/(hn - h1)
69 call bml_scale_add_identity(h_bml, alpha, beta, 0.00_dp)
70 call bml_scale(maxminusmininverse, h_bml)
85 type(bml_matrix_t),
intent(inout) :: h_bml
86 real(
dp),
intent(in) :: cnst, mu
88 real(
dp) :: alpha, beta
91 beta = 0.5_dp + cnst * mu
92 call bml_scale_add_identity(h_bml, alpha, beta, 0.00_dp)
109 localval = gp%mineval
111 gp%mineval = localval
113 localval = gp%maxeval
115 gp%maxeval = localval
129 type(bml_matrix_t),
intent(inout) :: h_bml
131 real(
dp) :: beta, maxminusmin
132 real(
dp),
intent(in) :: mu, emin, emax
133 real(
dp),
intent(inout) :: scaledmu, alpha
135 maxminusmin = emax - emin
136 alpha = 2.00_dp / maxminusmin
137 beta = -1.00_dp*(2.00_dp*emin/maxminusmin + 1.00_dp)
138 call bml_scale_add_identity(h_bml, alpha, beta, 0.00_dp)
139 scaledmu = alpha*mu + beta
The prg_normalize module.
subroutine, public prg_gershgorinreduction(gp)
Determine gershgorin bounds across all parts, local and distributed.
subroutine, public prg_normalize_fermi(h_bml, h1, hN, mu)
Normalize a Hamiltonian matrix prior to running the truncated SP2 algorithm.
subroutine, public prg_normalize(h_bml)
Normalize a Hamiltonian matrix prior to running the SP2 algorithm.
subroutine, public prg_normalize_cheb(h_bml, mu, emin, emax, alpha, scaledmu)
Normalize a Hamiltonian matrix prior to running the Chebyshev algorithm.
subroutine, public prg_normalize_implicit_fermi(h_bml, cnst, mu)
Normalize a Hamiltonian matrix prior to running the implicit fermi dirac algorithm.
subroutine, public prg_maxrealreduce(rvalue)
integer function, public getnranks()
subroutine, public prg_minrealreduce(rvalue)