![]() |
(git:b77b4be)
|
Subroutines to compute Green functions. More...
Data Types | |
type | sancho_work_matrices_type |
Functions/Subroutines | |
subroutine, public | sancho_work_matrices_create (work, fm_struct) |
Create work matrices required for the Lopez-Sancho algorithm. | |
subroutine, public | sancho_work_matrices_release (work) |
Release work matrices. | |
subroutine, public | do_sancho (g_surf, omega, h0, s0, h1, s1, conv, transp, work) |
Iterative method to compute a retarded surface Green's function at the point omega. | |
subroutine, public | negf_contact_self_energy (self_energy_c, omega, g_surf_c, h_sc0, s_sc0, zwork1, zwork2, transp) |
Compute the contact self energy at point 'omega' as self_energy_C = [omega * S_SC0 - KS_SC0] * g_surf_c(omega - v_C) * [omega * S_SC0 - KS_SC0]^T, where C stands for the left (L) / right (R) contact. | |
subroutine, public | negf_contact_broadening_matrix (gamma_c, self_energy_c) |
Compute contact broadening matrix as gamma_C = i (self_energy_c^{ret.} - (self_energy_c^{ret.})^C) | |
subroutine, public | negf_retarded_green_function (g_ret_s, omega, self_energy_ret_sum, h_s, s_s, v_hartree_s) |
Compute the retarded Green's function at point 'omega' as G_S^{ret.} = [ omega * S_S - KS_S - \sum_{contact} self_energy_{contact}^{ret.}]^{-1}. | |
Subroutines to compute Green functions.
subroutine, public negf_green_methods::sancho_work_matrices_create | ( | type(sancho_work_matrices_type), intent(inout) | work, |
type(cp_fm_struct_type), pointer | fm_struct | ||
) |
Create work matrices required for the Lopez-Sancho algorithm.
work | work matrices to create (allocated and initialised on exit) |
fm_struct | dense matrix structure |
Definition at line 72 of file negf_green_methods.F.
subroutine, public negf_green_methods::sancho_work_matrices_release | ( | type(sancho_work_matrices_type), intent(inout) | work | ) |
Release work matrices.
work | work matrices to release |
Definition at line 105 of file negf_green_methods.F.
subroutine, public negf_green_methods::do_sancho | ( | type(cp_cfm_type), intent(in) | g_surf, |
complex(kind=dp), intent(in) | omega, | ||
type(cp_fm_type), intent(in) | h0, | ||
type(cp_fm_type), intent(in) | s0, | ||
type(cp_fm_type), intent(in) | h1, | ||
type(cp_fm_type), intent(in) | s1, | ||
real(kind=dp), intent(in) | conv, | ||
logical, intent(in) | transp, | ||
type(sancho_work_matrices_type), intent(in) | work | ||
) |
Iterative method to compute a retarded surface Green's function at the point omega.
g_surf | computed retarded surface Green's function (initialised on exit) |
omega | argument of the Green's function |
h0 | diagonal block of the Kohn-Sham matrix (must be Hermitian) |
s0 | diagonal block of the overlap matrix (must be Hermitian) |
h1 | off-fiagonal block of the Kohn-Sham matrix |
s1 | off-fiagonal block of the overlap matrix |
conv | convergence threshold |
transp | flag which indicates that the matrices h1 and s1 matrices should be transposed |
work | a set of work matrices needed to compute the surface Green's function |
Definition at line 171 of file negf_green_methods.F.
subroutine, public negf_green_methods::negf_contact_self_energy | ( | type(cp_cfm_type), intent(in) | self_energy_c, |
complex(kind=dp), intent(in) | omega, | ||
type(cp_cfm_type), intent(in) | g_surf_c, | ||
type(cp_fm_type), intent(in) | h_sc0, | ||
type(cp_fm_type), intent(in) | s_sc0, | ||
type(cp_cfm_type), intent(in) | zwork1, | ||
type(cp_cfm_type), intent(in) | zwork2, | ||
logical, intent(in) | transp | ||
) |
Compute the contact self energy at point 'omega' as self_energy_C = [omega * S_SC0 - KS_SC0] * g_surf_c(omega - v_C) * [omega * S_SC0 - KS_SC0]^T, where C stands for the left (L) / right (R) contact.
self_energy_c | contact self energy (initialised on exit) |
omega | energy point where the contact self energy needs to be computed |
g_surf_c | contact surface Green's function |
h_sc0 | scattering region – contact off-diagonal block of the Kohn-Sham matrix |
s_sc0 | scattering region – contact off-diagonal block of the overlap matrix |
zwork1 | complex work matrix of the same shape as s_sc0 |
zwork2 | another complex work matrix of the same shape as s_sc0 |
transp | flag which indicates that transposed matrices (KS_C0S and S_C0S) were actually passed |
Definition at line 269 of file negf_green_methods.F.
subroutine, public negf_green_methods::negf_contact_broadening_matrix | ( | type(cp_cfm_type), intent(in) | gamma_c, |
type(cp_cfm_type), intent(in) | self_energy_c | ||
) |
Compute contact broadening matrix as gamma_C = i (self_energy_c^{ret.} - (self_energy_c^{ret.})^C)
gamma_c | broadening matrix (initialised on exit) |
self_energy_c | retarded contact self-energy |
Definition at line 314 of file negf_green_methods.F.
subroutine, public negf_green_methods::negf_retarded_green_function | ( | type(cp_cfm_type), intent(in) | g_ret_s, |
complex(kind=dp), intent(in) | omega, | ||
type(cp_cfm_type), intent(in) | self_energy_ret_sum, | ||
type(cp_fm_type), intent(in) | h_s, | ||
type(cp_fm_type), intent(in) | s_s, | ||
type(cp_fm_type), intent(in), optional | v_hartree_s | ||
) |
Compute the retarded Green's function at point 'omega' as G_S^{ret.} = [ omega * S_S - KS_S - \sum_{contact} self_energy_{contact}^{ret.}]^{-1}.
g_ret_s | complex matrix to store the computed retarded Green's function |
omega | energy point where the retarded Green's function needs to be computed |
self_energy_ret_sum | sum of contact self-energies |
h_s | Kohn-Sham matrix block of the scattering region |
s_s | overlap matrix block of the scattering region |
v_hartree_s | contribution to the Kohn-Sham matrix from the external potential |
Definition at line 348 of file negf_green_methods.F.