[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
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) ) )
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>
More information about the CP2K-user
mailing list