Dear Paolo Giannozzi,
Your comment is correct.
Recapitulating, one should change the subroutines symmatrix3 and
symtensor3 (both written in
the file PW/src/symme.f90)
1) The first instruction in both routines is
IF (nsym == 1) RETURN
This should be changed (in both routines) with
IF (nsym > 1) THEN
2) then, one should add the line
END IF
before the comment "Bring to cartesian axis"
To uncover the bug you might run the following example: Silicon bulk
in the hexagonal cell with six atoms slightly displaced to kill the
symmetries.
The pseudopotential is taken from the quantum-espresso database.
I report the input files I used for the pwscf and the phonon
calculation:
cat > input_pw <<EOF
&control
calculation='scf'
restart_mode='from_scratch',
pseudo_dir = '$PSEUDO_DIR/',
outdir='$TMP_DIR/',
prefix='si'
/
&system
ibrav= 4, celldm(1) =7.2, celldm(3)=2.44948974278317810d0,
nat= 6, ntyp= 1, ecutwfc =55
/
&electrons
diagonalization='david', mixing_beta = 0.7, conv_thr=1.d-12,
/
/
ATOMIC_SPECIES
Si 28.085 Si.pw-mt_fhi.UPF
ATOMIC_POSITIONS {crystal}
Si 0.000100000000 0.000100000000 0.000100000000
Si 0.000100000000 0.000000000000 0.250000000000
Si 0.333333333333 0.666666666667 0.333333333333
Si 0.333333333333 0.666666666667 0.583333333333
Si 0.666666666667 0.333333333333 0.666666666667
Si 0.666666666667 0.333333333333 0.916666666667
K_POINTS {automatic}
2 2 1 0 0 1
EOF
cat > input_ph <<EOF
phonons of si at Gamma
&inputph
prefix='si',
epsil=.true.,
trans=.false.,
lraman=.true.,
amass(1)=28.0855,
outdir='$TMP_DIR/',
fildyn='si.dynG',
/
0.0 0.0 0.0
EOF
With the old version of the code (in which the bug is present) the
Raman tensor
associated to the first atom is:
Raman tensor (au^-1) in cartesian axis
atom 1
( 0.013699086 -3.920153995 5.788324065 )
( -3.920153995 3.923226229 -2.896625782 )
( 5.788324065 -2.896625782 -0.003485967 )
( -3.911816105 3.914537535 -2.896540201 )
( 3.914537535 0.014410663 5.790162015 )
( -2.896540201 5.790162015 0.023554646 )
( 8.842144308 -4.420575437 -0.000769476 )
( -4.420575437 8.847405130 0.011191688 )
( -0.000769476 0.011191688 -31.777282604 )
After correcting the bug it becomes:
Raman tensor (au^-1) in cartesian axis
atom 1
( 0.013699086 -4.518694758 2.363073404 )
( -4.518694758 0.008662674 -0.001161423 )
( 2.363073404 -0.001161423 -0.000580994 )
( -4.509066992 0.002636341 -0.001121079 )
( 0.002636341 4.548354141 2.362756055 )
( -0.001121079 2.362756055 0.004197656 )
( 3.609790298 0.000234155 -0.000128246 )
( 0.000234155 3.612924305 0.002079798 )
( -0.000128246 0.002079798 -2.162170216 )
In order to verify that the second run is correct you can do
a third run in which the atomic positions are:
Si 0.000000000000 0.000000000000 0.000000000000
Si 0.000000000000 0.000000000000 0.250000000000
Si 0.333333333333 0.666666666667 0.333333333333
Si 0.333333333333 0.666666666667 0.583333333333
Si 0.666666666667 0.333333333333 0.666666666667
Si 0.666666666667 0.333333333333 0.916666666667
By doing this, the system has now several symmetries and the bug does
not appear.
The Raman tensor in this case is:
Raman tensor (au^-1) in cartesian axis
atom 1
( 0.000000000 -4.524263555 2.358129910 )
( -4.524263555 0.000000000 -0.000000000 )
( 2.358129910 -0.000000000 0.000000000 )
( -4.524263555 0.000000000 0.000000000 )
( 0.000000000 4.524263555 2.358129910 )
( 0.000000000 2.358129910 -0.000000000 )
( 3.592025004 0.000000000 0.000000000 )
( 0.000000000 3.592025004 0.000000000 )
( 0.000000000 0.000000000 -2.186618341 )
Sincerely
Marc Blanchard & Michele Lazzeri
___________________________
Dr Marc Blanchard
Equipe de Minéralogie Environnementale
Institut de Minéralogie, de Physique des Matériaux et de Cosmochimie
(IMPMC)
UPMC - Sorbonne Universités
Tour 23 - Couloir 23/24 - 4e étage - Bureau 23
Case courrier 115
4 place Jussieu
75252 Paris Cedex 05
Tel: +33 (0)1 44 27 98 22
Fax: +33 (0)1 44 27 37 85
http://www.impmc.upmc.fr/~blanchard/
Le 22 Apr 2016 à 11:45, Paolo Giannozzi a écrit :
On Fri, Apr 22, 2016 at 11:02 AM, Marc Blanchard <marc.blanch...@impmc.upmc.fr
> wrote:
To correct the bug:
1) The first instruction in both routines is
IF (nsym == 1) RETURN
This should be changed (in both routines) with
IF (nsym >= 1) THEN
"If (nsym > 1 THEN", I guess, or else the IF is completely useless.
Could you please point to a (simple!) example showing the bug? thank
you
Paolo
2) then, you should add the line
END IF
before the comment "Bring to cartesian axis"
Best regards
Marc Blanchard & Michele Lazzeri
___________________________
Dr Marc Blanchard
Equipe de Minéralogie Environnementale
Institut de Minéralogie, de Physique des Matériaux et de Cosmochimie
(IMPMC)
UPMC - Sorbonne Universités
Tour 23 - Couloir 23/24 - 4e étage - Bureau 23
Case courrier 115
4 place Jussieu
75252 Paris Cedex 05
Tel: +33 (0)1 44 27 98 22
Fax: +33 (0)1 44 27 37 85
http://www.impmc.upmc.fr/~blanchard/
_______________________________________________
Pw_forum mailing list
Pw_forum@pwscf.org
http://pwscf.org/mailman/listinfo/pw_forum
--
Paolo Giannozzi, Dip. Scienze Matematiche Informatiche e Fisiche,
Univ. Udine, via delle Scienze 208, 33100 Udine, Italy
Phone +39-0432-558216, fax +39-0432-558222
_______________________________________________
Pw_forum mailing list
Pw_forum@pwscf.org
http://pwscf.org/mailman/listinfo/pw_forum