Coverage for gpaw/elph/__init__.py: 100%

6 statements  

« prev     ^ index     » next       coverage.py v7.7.1, created at 2025-07-14 00:18 +0000

1r"""Module for calculating electron-phonon couplings. 

2 

3Electron-phonon interaction:: 

4 

5 __ 

6 \ l + + 

7 H = ) g c c ( a + a ), 

8 el-ph /_ ij i j l l 

9 l,ij 

10 

11where the electron phonon coupling is given by:: 

12 

13 ______ 

14 l / hbar ___ 

15 g = /------- < i | \ / V * e | j > . 

16 ij \/ 2 M w 'u eff l 

17 l 

18 

19Here, l denotes the vibrational mode, w_l and e_l is the frequency and 

20mass-scaled polarization vector, respectively, M is an effective mass, i, j are 

21electronic state indices and nabla_u denotes the gradient wrt atomic 

22displacements. The implementation supports calculations of the el-ph coupling 

23in both finite and periodic systems, i.e. expressed in a basis of molecular 

24orbitals or Bloch states. 

25 

26The implementation is based on finite-difference calculations of the the atomic 

27gradients of the effective potential expressed on a real-space grid. The el-ph 

28couplings are obtained from LCAO representations of the atomic gradients of the 

29effective potential and the electronic states. 

30 

31In PAW the matrix elements of the derivative of the effective potential is 

32given by the sum of the following contributions:: 

33 

34 d d 

35 < i | -- V | j > = < i | -- V | j> 

36 du eff du 

37 

38 _ 

39 \ ~a d . ~a 

40 + ) < i | p > -- /_\H < p | j > 

41 /_ i du ij j 

42 a,ij 

43 

44 _ 

45 \ d ~a . ~a 

46 + ) < i | -- p > /_\H < p | j > 

47 /_ du i ij j 

48 a,ij 

49 

50 _ 

51 \ ~a . d ~a 

52 + ) < i | p > /_\H < -- p | j > 

53 /_ i ij du j 

54 a,ij 

55 

56where the first term is the derivative of the potential (Hartree + XC) and the 

57last three terms originate from the PAW (pseudopotential) part of the effective 

58DFT Hamiltonian. 

59 

60""" 

61from .displacements import DisplacementRunner 

62from .supercell import Supercell 

63from .gmatrix import ElectronPhononMatrix 

64from .raman_calculator import ResonantRamanCalculator 

65from .raman_data import RamanData 

66 

67__all__ = [ 

68 "DisplacementRunner", 

69 "Supercell", 

70 "ElectronPhononMatrix", 

71 "ResonantRamanCalculator", 

72 "RamanData", 

73]