PAOFLOW.transport.calculators.transfer#
Attributes#
Functions#
|
Iteratively compute surface transfer matrices using the Sancho-Rubio method. |
Module Contents#
- PAOFLOW.transport.calculators.transfer.compute_surface_transfer_matrices(h_eff, s_eff, t_coupling, delta=1e-05, niterx=200, transfer_thr=1e-07, fail_counter=None, fail_limit=5, verbose=False)[source]#
Iteratively compute surface transfer matrices using the Sancho-Rubio method.
- Parameters:
h_eff (np.ndarray) – Effective Hamiltonian block H_00 (ndim x ndim).
s_eff (np.ndarray) – Overlap matrix S_00 (ndim x ndim).
t_coupling (np.ndarray) – Coupling matrix H_01 (ndim x ndim).
delta (float) – Small imaginary part added to stabilize inversion.
niterx (int) – Maximum number of iterations.
transfer_thr (float) – Convergence threshold.
fail_counter (dict) – Mutable dict to count number of convergence failures.
fail_limit (int) – Maximum number of failures before raising an exception.
verbose (bool) – If True, enables logging output.
- Returns:
`tot` (np.ndarray) – Transfer matrix T (ndim x ndim).
`tott` (np.ndarray) – Conjugate transfer matrix T† (ndim x ndim).
`niter` (int) – Number of iterations used.
Notes
This function implements the iterative Sancho-Rubio scheme for computing the surface Green’s function via continued fraction expansion of the transfer matrix.
The method solves for the surface self-energy Σ by iteratively building the transfer matrix using the recurrence relations:
T₀ = (E S₀₀ - H₀₀)⁻¹ H₀₁† T₀† = (E S₀₀ - H₀₀)⁻¹ H₀₁
For iteration m ≥ 1:
M₁ = Tₘ Tₘ† M₂ = Tₘ† Tₘ S₁ = I - (M₁ + M₂) S₂ = S₁⁻¹
Tₘ₊₁ = S₂ @ (Tₘ @ Tₘ) Tₘ₊₁† = S₂ @ (Tₘ† @ Tₘ†)
The cumulative transfer matrix is:
T_total += T_prev† @ Tₘ₊₁ T_total† += T_prev @ Tₘ₊₁†
where T_prev and T_prev† are recursively updated as:
T_prev = T_prev @ Tₘ† T_prev† = T_prev† @ Tₘ
Convergence is checked using the Frobenius norms of Tₘ₊₁ and Tₘ₊₁†.