# [CP2K-user] berry phase method for transition dipole moment

Xiaoming Wang wxia... at gmail.com
Wed Apr 3 03:58:10 UTC 2019

HI,

In a previous
suggested to use the berry phase formula to calculate the transition dipole
moment (mu) in periodic

systems. So mu = IMAG LOG <phi_a | exp(i*k*r) |phi_b>, where phi_a and
phi_b are the 3D grid data in MO_CUBE files.

Now I'm trying to test this for a water molecule in a cubic box with length
of 10 Ang. I first calculated the MO_CUBE files for HOMO (phi_a) and LUMO
(phi_b), then evaluated the dipole moment

integrals for < phi_a | r | phi_a >,   < phi_b | r | phi_b >, and < phi_a |
r | phi_b > in the length form. The results are (9.44853,9.44853,9.50373), (
9.44198,9.43416,7.97643), and

(0.37276,0.00003,-0.00006), respectively. The three numbers in a.u. for
each moment  are for x,y,z directions. Then, with the same CUBE files, I
evaluated the dipole moment integrals using the

berry phase formula, the results are (9.44861,9.44861,9.50564) (9.44906,
9.44318,7.80957), and (14.17324,15.90214,4.07160). As can be seen, the two
formula don't give same numbers,

especially for the transition dipole moment integral which I guess my
implementation is completely wrong. So my question is how much of
difference should the results from the two formula be?

Besides, I'll appreciate if anyone could help me point out my mistakes in
my implementation.

My implementation is as follows:

n is the number of grid points of CUBE file in each direction. b is the
step length. So the lattice constant L is n*b. r is the coordinate. phi_a
and phi_b are the volumetric data which are changed to 1D arrays.

---------------------
ii = 0
DO i = 0, n-1
DO j = 0, n-1
DO k = 0, n-1
ii = ii+1
r(1) = i*b
r(2) = j*b
r(3) = k*b
r = r*2Pi/L
dd(ii,1) = CMPLX( COS( r(1) ), SIN( r(1) ) )
dd(ii,2) = CMPLX( COS( r(2) ), SIN( r(2) ) )
dd(ii,3) = CMPLX( COS( r(3) ), SIN( r(3) ) )
ENDDO
ENDDO
ENDDO

mu(1) = IMAG( LOG (SUM(phi_a*phi_b*dd(:,1))*b**3) )
mu(2) = IMAG( LOG (SUM(phi_a*phi_b*dd(:,2))*b**3) )
mu(3) = IMAG( LOG (SUM(phi_a*phi_b*dd(:,3))*b**3) )

mu = MODULO(mu, 2Pi)*L/2Pi

-----------------

Best,
Xiaoming
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cp2k.org/archives/cp2k-user/attachments/20190402/0869eefd/attachment.htm>