The dielectric tensor of silicon by finite difference  [SOLVED]

Phonons, DFPT, electron-phonon, electric-field response, mechanical response…

Moderators: mverstra, joaocarloscabreu

Locked
tsukagoshi
Posts: 9
Joined: Fri Jun 15, 2012 2:19 am

The dielectric tensor of silicon by finite difference

Post by tsukagoshi » Thu Mar 02, 2017 7:24 am

Dear users/developers,

I have a problem in calculating the dielectric tensor of silicon by finite difference of polarization since I get the dielectric tensor depending on the symmetry of k points. I use abinit-8.0.8b.

Firstly, I use the following input file.

si2_ef.in:

Code: Select all

ndtset   7

# nsym2 1  nsym3 1  nsym4 1  nsym5 1  nsym6 1  nsym7 1
# kptopt 4  kptopt1 1

#Electric field
#********************************
#DATASET1 : zero electric field for finite electric field calculation
getwfk1    0
berryopt1 -1  rfdir11    1 1 1

#DATASET2 : Finite electric field > 0
getwfk     1
berryopt   4 

efield2    0.001  0.000  0.000 
efield3   -0.001  0.000  0.000 
efield4    0.000  0.001  0.000 
efield5    0.000 -0.001  0.000 
efield6    0.000  0.000  0.001 
efield7    0.000  0.000 -0.001 

#######################################################################
#Common input variables

#Unit cell and Atomic positions
#********************************
acell  5.43 5.43 5.43  angstrom
rprim 0.0 0.5 0.5
      0.5 0.0 0.5
      0.5 0.5 0.0
xred
 0.00  0.00  0.00
 0.25  0.25  0.25

#Atomic types
#*************************************
natom  2   
ntypat 1
znucl 14
typat 2*1

#Plane wave basis and k-point grid
#*********************************
ecut        10.0
ngkpt       12 12 12
nshiftk     4
shiftk      0.5 0.5 0.5
             0.5 0.0 0.0
             0.0 0.5 0.0
             0.0 0.0 0.5

#Parameters of the SCF cycles
#****************************
iscf 7
ixc  7
toldfe 1.0d-12
nstep  100
diemac 12.0
nband  4
nbdbuf 0


si2_ef.files:

Code: Select all

si2_ef.in
si2_ef.out
si2_efi
si2_efo
si2_ef
/home/home1/tukagosi/code/abinit-8.0.8/tests/Psps_for_tests/14si.pspnc


I get the dielectric tensor as follows (fdpol.sh is written at the end):

Code: Select all

$ ./fdpol.sh
 Electronic dielectric tensor
9.262076 -0.000000 -0.000000
0.000000 8.087971 0.000000
0.000000 -0.000000 11.995058


I expect that the dielectric tensor of silicon is isotropic, however the result is different.

Secondly, in order not to use symmetry, I add the following keywords to the input file .

Code: Select all

nsym2 1  nsym3 1  nsym4 1  nsym5 1  nsym6 1  nsym7 1


Then, I get the dielectric tensor as follows:

Code: Select all

$ ./fdpol.sh
 Electronic dielectric tensor
12.488844 0.013751 0.013751
0.013751 12.488844 0.013751
0.013751 0.013751 12.488844


It is nearly isotropic although finite off diagonal components exist.

Thirdly, in order not to use time-reversal symmetry, I add the following keywords to the input file.

Code: Select all

kptopt 4  kptopt1 1


Then, I get the dielectric tensor as follows:

Code: Select all

$ ./fdpol.sh
 Electronic dielectric tensor
12.500652 0.000000 -0.000000
-0.000000 12.500652 -0.000000
-0.000000 0.000000 12.477118


It is nearly isotropic although first and third diagonal components are different.

In terms of calculation cost, it is preferable to use full symmetry to generate the k points. However, dielectric tensor is not isotropic as shown at the first method. How can I get the isotropic dielectric tensor of silicon?

Takayuki Tsukagoshi

fdpol.sh:

Code: Select all

#!/bin/bash

ab_out='si2_ef.out'
#ab_out='si2_ef_fullsym.out'
#ab_out='si2_ef_nosym.out'
#ab_out='si2_ef_kptopt4.out'

dE=0.001
pi=3.14159265358979

# jdtset for +Ex,-Ex,+Ey,-Ey,+Ez,-Ez
dataset=( 2 3 4 5 6 7 )

# loop for x,y,z components of applied field
for((i=0;i<3;i++)); do
    jdir=`expr $i + 1`
    jdir0=$i

    i1=`expr 2 \* $i`
    i2=`expr $i1 + 1`
    ip=${dataset[$i1]}
    im=${dataset[$i2]}
#    echo "ip,im=$ip,$im"

    for ((j=0;$j<3;j++)); do
   k=`expr 2 - $j`
   pol_ep[$j]=`grep  -A4 "Polarization in cartesian coordinates (a.u.):" ${ab_out} | grep 'Electronic' | head -n $ip | tail -n 1 | awk '{print $(NF-'$k')}'`
   pol_em[$j]=`grep  -A4 "Polarization in cartesian coordinates (a.u.):" ${ab_out} | grep 'Electronic' | head -n $im | tail -n 1 | awk '{print $(NF-'$k')}'`
#   echo "pol_ep-$j = ${pol_ep[$j]}  pol_em-$j = ${pol_em[$j]}"
    done


    for ((j=0;$j<3;j++)); do
   idir=`expr $j + 1`
   idir0=$j
#   echo "${pol_ep[$j]}  ${pol_em[$j]}"
   chi[$j]=`perl -le "{ print( (${pol_ep[$j]} - ${pol_em[$j]})/(2*$dE) ) }"`
#   echo ${chi[$j]}
   i1=`expr $jdir0 \* 3 + $idir0`
   epsi[$i1]=`perl -le "{ print( 4*$pi*${chi[$j]} )}"`
   if [ $idir -eq $jdir ]; then
       epsi[$i1]=`perl -le "{print( ${epsi[$i1]} + 1 )}"`
   fi
#   echo ${epsi[$i1]}
#   exit
    done

done

echo
echo " Electronic dielectric tensor"
for((idir=0;idir<3;idir++)); do
    for((jdir=0;jdir<3;jdir++)); do
   i1=`expr $jdir \* 3 + $idir`
   printf "%f " ${epsi[$i1]}
    done # jdir
    echo ''
done # idir
Attachments
si2_ef_fullsym.out
(172.51 KiB) Downloaded 298 times
si2_ef_kptopt4.out
(168.52 KiB) Downloaded 285 times
si2_ef_nosym.out
(160.65 KiB) Downloaded 289 times

mverstra
Posts: 655
Joined: Wed Aug 19, 2009 12:01 pm

Re: The dielectric tensor of silicon by finite difference

Post by mverstra » Mon May 22, 2017 5:29 pm

Interesting, thanks for the bug post. It may be simply that you have to set kptopt 3 in the finite field case and a test clause is missing.

I have asked more expert people and they should get back to you.

Seems it's just the time reversal symmetry which is blowing things up, but even in your kptopt 4 and nsym 1 cases the matrix should be purely diagonal...
Matthieu Verstraete
University of Liege, Belgium

User avatar
torrent
Posts: 127
Joined: Fri Aug 14, 2009 7:40 pm

Re: The dielectric tensor of silicon by finite difference  [SOLVED]

Post by torrent » Tue May 30, 2017 6:19 pm

Hello,

I made a few tests and found that the problem is not coming from the k-points but from the "non-symmoprhic symetries" (symetries with a translation vector).
This is mentionned in the berryopt documentation (see http://www.abinit.org/doc/helpfiles/for ... l#berryopt), but only for PAW calculations.
It seems that it is also an issue for norm-conserving psedupotentials.
If you put "symmorphi 0" in the input file, you get:

Code: Select all

12.488844 0.013751 0.013751
0.013751 12.488844 0.013751
0.013751 0.013751 12.488844

The tensor is isotropic... with small off-diagonal contributions. I suppose that these contributions could vanish by better converging the parameters (kpts, ecut, ...).

OK, this solution is not optimal. But, at least it allows for using some symetries for the kpoints.

This should be corrected.

Marc
Marc Torrent
CEA - Bruyères-le-Chatel
France

Locked