Quantum theory of light-matter interaction
Let us consider an atom in the presence of an external classical electromagnetic fields, the gauge invariant Schrödinger equation writes 1
where the gauge invariant Hamiltonian
The form of Eq.
i.e.
Electric Dipole Approximation
Generally, the wavelength of the electromagnetic field is much larger than the
typical size of an atom/molecule, i.e.
The approximation is referred to as the electric dipole approximation (EDA). 3
More specifically, for a monochromatic field of plane wave
Under the EDA, we can thus take
Coulomb Gauge
The Coulomb gauge (also known as the transverse gauge) is defined by the gauge condition
where “C” in the subscript is used to indicate the gauge. Moreover, if there is no current in the space, then we also have
Generally, the operator
Note the difference between
Apparently, under the Coulomb gauge, the two operators commute, i.e.
Subsituting the Coulomb gauge condition into Eq.
i.e. the field propagation direction
Length Gauge
Starting with the Coulomb gauge and electric dipole approximation (vector
potential is position independent and only depends on time), and by choosing
One has the two potentials in length gauge (LG)
where
Substituting Eq.
where
Velocity Gauge
Again, we start with the Coulomb gauge and EDA. However, this time we choose
This leads to the two potentials in velocity gauge (VG)
Substituting Eq.
with
Dipole and Momentum Transition Matrix
According to Fermi’s golden rule 4, the transition rate between two states, in the length gauge, is given by
where the matrix element of
Or in the velocity gauge
If the molecular orbitals are eigenfunctions of some Hamiltonian
Then one can utilize the commutator relation
which lead to
We will shorten the above relation between the momentum matrix element and the transition dipole moment as the “p-r” relation.
Transition between Molecular Orbitals
The transition dipole moment between two molecular orbitals
where
Both real and complex spherical harmonics can be used in the expansion, however, since the molecular orbitals can be real functions, real spherical harmonics are usually used in calculations to save memory and improve the speed. For simplicity, we will just focus on the case where there is only one term in the expansion, i.e.
Recall that the real spherical harmonics
or equivalently
Substituting Eq.
where
and can be evaluated analytically. 7 Note that
TDM from p-r relation
The matrix element of the momentum operator can be easily evaluated in the momentum space, i.e.
where the wavefunction in momentum space can be written as
with
Combining Eq.
Again, the TDM from momentum space evaluation can be written as a radial
integration over
Selection Rules
-
If real molecular orbitals are used, the TDM should also be real vectors. To ensure this, one require that
, where in Eq. . -
The properties of the real Gaunt coefficients require that
, where . 8 -
The spherical harmonics have definite parity, i.e. they are either even or odd with respect to inversion about the origin 9
Moreover,
is an odd function. To make sure that TDM is non-zero, one require that the is ODD so that the integration is not zero.If complex spherical harmonics are used, then in this case
The Gaunt coefficients defined by complex spherical harmonics are only non-zero for
. 10 Therefore, the TDM is only non-zero for
TDM between hydrogen orbitals
Below, we use hydrogen orbital, which can be obtained analytically, as a simple example calculate the TDM and verify the equivalence of the two method. We choose the initial orbital as hydrogen 1s and the final state being hydrogen 2px orbitals.
The script follows, where atomics units are used
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/env python
import numpy as np
from sympy import lambdify
from sympy.abc import r
from sympy.physics.hydrogen import R_nl, E_nl
from pysbt import sbt, GauntTable
# All the quantities are in atomic units, i.e.
# Hartree for energy and Bohr for length.
# hbar = 1; m = 1
N = 512
rmin = 2.0 / 1024 / 32
rmax = 30
# Logarithmic radial grid
rr = np.logspace(np.log10(rmin), np.log10(rmax), N, endpoint=True)
# init spherical Bessel transform
ss = sbt(rr)
n1 = 1; l1 = 0; m1 = 0 # 1s
n2 = 2; l2 = 1; m2 = 1 # 2px
R1 = lambdify((r), R_nl(n1, l1, r), 'numpy')(rr)
R2 = lambdify((r), R_nl(n2, l2, r), 'numpy')(rr)
G1 = ss.run(R1, l=l1, norm=True)
G2 = ss.run(R2, l=l2, norm=True)
# energy difference between the two states
dE = E_nl(n2) - E_nl(n1)
# Radial integration over r and k
Tr = np.sum(R1 * R2 * ss.rr**3 * ss.simp_wht_rr)
Tp = np.sum(G1 * G2 * ss.kk**3 * ss.simp_wht_kk)
print(f'R-space radial integration: Tr = {Tr:8.6f}')
print(f'K-space radial integration: Tp = {Tp:8.6f}')
print(f'Tp / dE = {Tp / dE:8.6f}')
Ta = np.sqrt(4*np.pi / 3) * np.array([
GauntTable(l1, l2, 1, m1, m2, m) for m in [1, -1, 0]
])
Tij = Tr * Ta
print(f'Angular term: Ta = ({Ta[0]:8.6f}, {Ta[1]:8.6f}, {Ta[2]:8.6f})')
print(f' Tij = Ta * Tr = ({Tij[0]:8.6f}, {Tij[1]:8.6f}, {Tij[2]:8.6f})')
From the outputs, one can see that transition dipole moment from the two methods are indeed identical.
1
2
3
4
5
R-space radial integration: Tr = 1.290266
K-space radial integration: Tp = 0.483850
Tp / dE = 1.290266
Angular term: Ta = (0.577350, 0.000000, 0.000000)
Tij = Ta * Tr = (0.744936, 0.000000, 0.000000)
TDM between Bloch states
For crystals, the wavefunctions take the form of a Bloch wave
For finite crystals with periodic boundary condition (PBC), the matrix elements of the momentum operator is related to the gradient-k operator by 11
Moreover, there’s no simple p-r relation between momentum and position operator matrix elements.
We will focus on the matrix elements of the momentum opeartor in the Bloch waves. Within the PAW formalism, the momentum opeartor matrix element is given by
where
Note that the imaginary part of the dielectric function in the longitudinal expression is given by 12
and in the transversal expression by 12
In principle, both longitudinal and transversal expression yield almost exactly indetical results in the limit of a complete PAW one-center basis. However, this limit is in practice not always reached, and hence the longitudinal expression should be preferred over the simpler transversal expression.
Matrix element of nabla operator — pseudo-wavefunction
The matrix elements of the nabla operator can be readily evaluated in reciprocal space
where
Matrix element of nabla operator — one-center contribution
Recall that AE/PS partial waves consist of a radial part and an angular part, 13
and their Fourier transform
where
The matrix element of the nabla operator can be evaluated by either real-space or momentum-space integration.
Real-space integration
-
For the first term in the last line of Eq.
, remember thatwhich can be written as real spherical harmonics with
, i.e.As a result, the first term reduces to
-
For the second term in Eq.
, one can show that 6Therefore, the second term reduces to
The integration with respect to the angle can be performed using
GPAW
. 15
Note that in VASP
, POTCAR
. By taking this into account and combine
Eq.
All the terms with spherical harmonics in Eq.
The subroutine
NABLA_RADIAL
inVASP
source fileoptics.F
calculatesby real space integration. The results are stored in NABLA
of apotcar
type.VASP
version 5.x caluclate the matrix element up to lmax = 2 while version 6.x increases lmax to 3.
Since the AE/PS partial waves are not necessarily zero at
, the matrix element of nabla operator is asymmetric with respect to AE and PS partial waves. However, the difference of the two is symmetric.
One can add the following code to
main.F
ofVASP
source and perform a recompile. Afterwards,VASP
can outputsto file “nabla_X”, where X is the name of the elements.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
IF (IO%LOPTICS) CALL SET_NABIJ_AUG(P,T_INFO%NTYP)
! Add the code after the previous line
io_begin
do nt = 1, T_INFO%NTYP
open(unit=124, file='nabla_' // trim(P(NT)%ELEMENT), status='unknown', action='write')
do i = 1, 3
do j = 1, P(NT)%LMMAX
write(124, fmt=*) (P(NT)%NABLA(i,j,n), n=1, P(NT)%LMMAX)
end do
write(124,*)
end do
close(unit=124)
end do
io_end
Momentum-space integration
Similar to the evaluaton of Eq.
Therefore
The matrix element of the nabla operator from real/momentum space integration is implemented in the VaspBandUnfolding package.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python
from paw import pawpotcar
pp = pawpotcar(potfile='pot.C')
# evaluate tau_nm in real-space, False for momentum-space evaluation
nij = pp.get_nablaij(lreal=True)
xyz = 'xyz'
for ii in range(3):
head = ' '.join(
[f'({n}, {l},{m:2d})'.rjust(10) for n, l, m in pp.ilm]
)
print(f'tau_nm({xyz[ii]})'.center(10) + head)
for jj in range(pp.lmmax):
n, l, m = pp.ilm[jj]
c1 = f'({n}, {l},{m:2d})'.center(10)
line = ' '.join([
f'{x:10.6f}' for x in nij[ii,jj,:]
])
print(c1 + line)
print()
The outputs of the script are shown below, where the numbers in the patentheses of the first column and first line of each section correspond to (n, l, m) for AE/PS partial waves.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
tau_nm(x) (0, 0, 0) (1, 0, 0) (2, 1,-1) (2, 1, 0) (2, 1, 1) (3, 1,-1) (3, 1, 0) (3, 1, 1)
(0, 0, 0) 0.000000 0.000000 -0.000000 -0.000000 -0.417279 -0.000000 -0.000000 0.941495
(1, 0, 0) 0.000000 0.000000 -0.000000 -0.000000 -0.557957 -0.000000 -0.000000 1.261615
(2, 1,-1) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(2, 1, 0) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(2, 1, 1) 0.417279 0.557957 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(3, 1,-1) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(3, 1, 0) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(3, 1, 1) -0.941495 -1.261615 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
tau_nm(y) (0, 0, 0) (1, 0, 0) (2, 1,-1) (2, 1, 0) (2, 1, 1) (3, 1,-1) (3, 1, 0) (3, 1, 1)
(0, 0, 0) 0.000000 0.000000 -0.417279 -0.000000 -0.000000 0.941495 -0.000000 -0.000000
(1, 0, 0) 0.000000 0.000000 -0.557957 -0.000000 -0.000000 1.261615 -0.000000 -0.000000
(2, 1,-1) 0.417279 0.557957 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(2, 1, 0) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(2, 1, 1) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(3, 1,-1) -0.941495 -1.261615 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(3, 1, 0) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(3, 1, 1) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
tau_nm(z) (0, 0, 0) (1, 0, 0) (2, 1,-1) (2, 1, 0) (2, 1, 1) (3, 1,-1) (3, 1, 0) (3, 1, 1)
(0, 0, 0) 0.000000 0.000000 -0.000000 -0.417279 -0.000000 -0.000000 0.941495 -0.000000
(1, 0, 0) 0.000000 0.000000 -0.000000 -0.557957 -0.000000 -0.000000 1.261615 -0.000000
(2, 1,-1) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(2, 1, 0) 0.417279 0.557957 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(2, 1, 1) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(3, 1,-1) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(3, 1, 0) -0.941495 -1.261615 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
(3, 1, 1) 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
Reference
-
Interaction of quantum electron with eclassical electromagnetic radiation ↩
-
Relation between the interband dipole and momentum matrix elements in semiconductors ↩
-
Linear optical properties in the projector-augmented wave methodology ↩ ↩2
-
pySBT: A python implementation of spherical Bessel transform (SBT) in O(Nlog(N)) time. ↩