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

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


In a previous 
post https://groups.google.com/forum/#!topic/cp2k/qgxhP1oPRhU, Prof. Hutter 
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) ) )

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


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

More information about the CP2K-user mailing list