forum@abinit.org
Subject: The ABINIT Users Mailing List ( CLOSED )
List archive
- From: "Eric J. Walter" <ewalter@particle.physics.wm.edu>
- To: forum@abinit.org
- Subject: ASR when occopt>2 in anaddb?
- Date: Thu, 23 Jun 2005 10:35:09 -0400
Dear Abinit forum,
It seems to me that it is not possible to enforce the acoustic sum
rule in anaddb when doing a metal and skipping the DDK step (since it
shouldn't be necessary, right?). After some investigation, I have
found that in anaddb.F90 the electric field perturbation variable is
always set to 2 before the read of the gamma q-point DDB info:
------------------------------------------------------------
! **********************************************************************
!Dielectric Tensor and Effective Charges
!Look after the Gamma Blok in the DDB
qphon(:,1)=0.0d0
qphnrm(1)=0.0d0
rfphon(1:2)=1
rfelfd(1:2)=2
rfstrs(1:2)=0
rftyp=anaddb_dtset%rfmeth
call gtblk9(blkflg,blknrm,blkqpt,blktyp,iblok,mpert,msize,natom,nblok,&
& qphon,qphnrm,qtol,rfphon,rfelfd,rfstrs,rftyp)
------------------------------------------------------------
As far as I can see, there is no way to tell anaddb not to expect a
d/dk part of the DDB when dealing with gamma. This ends up causing
many of the following COMMENTS in STDOUT:
------------------------------------------------------------
gtblk9 : COMMENT -
The blok 1 does not match the requirement
because it lacks the element with
idir1,ipert1,idir2,ipert2,index= 1 1 1 3 127
gtblk9 : COMMENT -
The blok 1 does not match the requirement
because it lacks the element with
idir1,ipert1,idir2,ipert2,index= 1 1 2 3 148
gtblk9 : COMMENT -
The blok 1 does not match the requirement
because it lacks the element with
idir1,ipert1,idir2,ipert2,index= 1 1 3 3 169
------------------------------------------------------------
Here, ipert2 means the electric field perturbation since this is a 1
atom unit cell (natom+2 = electric field pert).
Finally, this leads to the ASR never being applied and anaddb claiming
that it exited successfully (!).
To temporarily remedy this situation, I have added some code to
anaddb.F90 (here is a diff):
------------------------------------------------------------
--- anaddb.F90_orig Sat Mar 19 13:01:36 2005
+++ anaddb.F90_ejw Tue Jun 14 10:11:11 2005
@@ -218,9 +218,22 @@
qphnrm(1)=0.0d0
rfphon(1:2)=1
rfelfd(1:2)=2
+
rfstrs(1:2)=0
rftyp=anaddb_dtset%rfmeth
+ if (occopt>=3.and.occopt<=7) then
+ rfelfd(1:2)=0
+ write(message, '(a)') "COMMENT: rfelfd set to 0 since due to metal
occupations"
+ call wrtout(6,message,'COLL')
+ call wrtout(iout,message,'COLL')
+
+ write(message, '(a)') "COMMENT: this change made by EJW, NOT PART OF THE
STANDARD ABINIT RELEASE!!!"
+ call wrtout(6,message,'COLL')
+ call wrtout(iout,message,'COLL')
+
+ endif
+
------------------------------------------------------------
This results in rfelfd set to 0 if metallic occupations are present.
This allows the d/dk part of the DDB to be absent and yet still apply
the ASR to metallic calculations.
I have tested this approach by comparing the results of phonon
frequencies calculated at q=0,0,0 and q=0.05, 0.05, 0 with the ASR
applied in two different ways:
1) With an unmodified 4.4.4 release, I actually included the d/dk step
as if the calculation were an insulator:
Phonon wavevector (reduced coordinates) : 0.00000 0.00000 0.00000
Phonon energies in Hartree :
0.000000E+00 0.000000E+00 0.000000E+00
Phonon energies in meV :
- 0.000000E+00 0.000000E+00 0.000000E+00
Phonon frequencies in cm-1 :
- 0.000000E+00 0.000000E+00 0.000000E+00
Phonon frequencies in Thz :
- 0.000000E+00 0.000000E+00 0.000000E+00
Phonon energies in Kelvin :
- 0.000000E+00 0.000000E+00 0.000000E+00
.
.
.
Phonon wavevector (reduced coordinates) : 0.05000 0.05000 0.00000
Phonon energies in Hartree :
5.816119E-04 7.040367E-04 3.426734E-03
Phonon energies in meV :
- 1.582647E+01 1.915781E+01 9.324618E+01
Phonon frequencies in cm-1 :
- 1.276491E+02 1.545182E+02 7.520812E+02
Phonon frequencies in Thz :
- 3.826822E+00 4.632339E+00 2.254683E+01
Phonon energies in Kelvin :
- 1.836583E+02 2.223169E+02 1.082076E+03
2) With the d/dk step skipped using my modified anaddb code:
Phonon wavevector (reduced coordinates) : 0.00000 0.00000 0.00000
Phonon energies in Hartree :
0.000000E+00 0.000000E+00 0.000000E+00
Phonon energies in meV :
- 0.000000E+00 0.000000E+00 0.000000E+00
Phonon frequencies in cm-1 :
- 0.000000E+00 0.000000E+00 0.000000E+00
Phonon frequencies in Thz :
- 0.000000E+00 0.000000E+00 0.000000E+00
Phonon energies in Kelvin :
- 0.000000E+00 0.000000E+00 0.000000E+00
Phonon wavevector (reduced coordinates) : 0.05000 0.05000 0.00000
Phonon energies in Hartree :
5.816119E-04 7.040367E-04 3.426734E-03
Phonon energies in meV :
- 1.582647E+01 1.915781E+01 9.324618E+01
Phonon frequencies in cm-1 :
- 1.276491E+02 1.545182E+02 7.520812E+02
Phonon frequencies in Thz :
- 3.826822E+00 4.632339E+00 2.254683E+01
Phonon energies in Kelvin :
- 1.836583E+02 2.223169E+02 1.082076E+03
I have posted the input and output files on http://www.cpd.wm.edu/ejw_abinit
Is this a bug or am I missing something? Shouldn't it be ok to skip
the d/dk step in a metal?
I would be happy to supply more information if necessary.
Thanks,
Eric J. Walter
- ASR when occopt>2 in anaddb?, Eric J. Walter, 06/23/2005
- Message not available
- Re: [abinit-forum] ASR when occopt>2 in anaddb?, Eric J. Walter, 06/23/2005
- Message not available
Archive powered by MHonArc 2.6.16.