![]() |
(git:b2e41f9)
|
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.