[Pw_forum] Different adsorbate dipole moments from 4.3.1 and 4.0.1

Guido Fratesi fratesi at mater.unimib.it
Tue Jul 5 16:02:16 CEST 2011


Dear all,

I'm experiencing some differences when computing dipole moments for
adsorbates on surfaces with pw.x from newer versions (>4.2) with
respect to previous calculations I did with QE-4.0.1. They amount to
few percent in the computed dipole in my cases. I expect they follow
the restructuring of the associated routines, PW/compute_dip.f90 and
PW/add_efield.f90, performed in 2009.

The systems are generally quite large (alkali adatoms on top of a
metal slab with about 80 atoms) so I extracted a smaller case which
already highlights some discrepancies: a neutral OH molecule in a cell
10x10x40au^3, which I submit here to your consideration if you are
interested and/or can give me some advice.

Let us focus on the dipole moment computed as a function of the
variables emaxpos/eopreg defining the saw-like potential. The cell is
very large along z (40au) so the position of emaxpos can be varied
considerably without affecting the results (the molecule is around the
origin). I now compare versions 4.0.1 and 4.3.1. They give the same
dipole moment P=0.6223au and energy Etot when emaxpos is far from the
atoms (distance d in the tables below). However, when emaxpos
approaches the atoms, the new version 4.3.1 deviates much more rapidly
from this value than the former 4.0.1 one.

Although the the percentual error in P is relatively small also for
QE-4.3.1, amounting to 1% only for d smaller than about 2.8au (quite
small indeed) the very different P-vs-d behavior deserves in my
opinion some attention, and it may have more dramatic effects in other
cases.

Thank you for your kind consideration,
Guido Fratesi

Tables and test-script follow. I will send you detailed input/output
files if you wish.

This with 4.0.1:
eopreg	emaxpos	d(au)	Etot(Ry)	P(au)	dE(meV)	dP(%)
0.05	0.475	18.10	-32.74822138	-0.6223	0.00	0.00
0.10	0.450	17.10	-32.74822138	-0.6223	0.00	0.00
0.15	0.425	16.10	-32.74822138	-0.6223	0.00	0.00
0.20	0.400	15.10	-32.74822138	-0.6223	0.00	0.00
0.25	0.375	14.10	-32.74822138	-0.6223	0.00	0.00
0.30	0.350	13.10	-32.74822138	-0.6223	0.00	0.00
0.35	0.325	12.10	-32.74822138	-0.6223	0.00	0.00
0.40	0.300	11.10	-32.74822138	-0.6223	0.00	0.00
0.45	0.275	10.10	-32.74822138	-0.6223	0.00	0.00
0.50	0.250	9.10	-32.74822138	-0.6223	0.00	0.00
0.55	0.225	8.10	-32.74822138	-0.6223	0.00	0.00
0.60	0.200	7.10	-32.74822138	-0.6223	0.00	0.00
0.65	0.175	6.10	-32.74822138	-0.6223	0.00	0.00
0.70	0.150	5.10	-32.74822137	-0.6223	0.00	0.00
0.75	0.125	4.10	-32.74822136	-0.6223	0.00	0.01
0.76	0.120	3.90	-32.74822136	-0.6223	0.00	0.01
0.77	0.115	3.70	-32.74822135	-0.6224	0.00	0.02
0.78	0.110	3.50	-32.74822134	-0.6224	0.00	0.02
0.79	0.105	3.30	-32.74822132	-0.6225	0.00	0.03
0.80	0.100	3.10	-32.74822130	-0.6225	0.00	0.03
0.81	0.095	2.90	-32.74822126	-0.6226	0.00	0.05
0.82	0.090	2.70	-32.74822121	-0.6227	0.00	0.07
0.83	0.085	2.50	-32.74822112	-0.6229	0.00	0.10
0.84	0.080	2.30	-32.74822100	-0.6231	0.01	0.12
0.85	0.075	2.10	-32.74822083	-0.6233	0.01	0.17
0.86	0.070	1.90	-32.74822057	-0.6237	0.01	0.22
0.87	0.065	1.70	-32.74822020	-0.6241	0.02	0.29
0.88	0.060	1.50	-32.74821975	-0.6246	0.02	0.36
0.89	0.055	1.30	-32.74821905	-0.6252	0.03	0.47
0.90	0.050	1.10	-32.74821809	-0.6260	0.04	0.60
0.91	0.045	0.90	-32.74821684	-0.6269	0.06	0.75
0.92	0.040	0.70	-32.74821523	-0.6281	0.08	0.93
0.93	0.035	0.50	-32.74821325	-0.6293	0.11	1.13
0.94	0.030	0.30	-32.74821090	-0.6307	0.14	1.35
0.95	0.025	0.10	-32.74820813	-0.6321	0.18	1.57

This with 4.3.1:
eopreg	emaxpos	d(au)	Etot(Ry)	P(au)	dE(meV)	dP(%)
0.05	0.475	18.10	-32.74822138	-0.6223	0.00	0.00
0.10	0.450	17.10	-32.74822138	-0.6223	0.00	0.00
0.15	0.425	16.10	-32.74822138	-0.6223	0.00	0.00
0.20	0.400	15.10	-32.74822138	-0.6223	0.00	0.00
0.25	0.375	14.10	-32.74822138	-0.6223	0.00	0.00
0.30	0.350	13.10	-32.74822138	-0.6223	0.00	0.00
0.35	0.325	12.10	-32.74822138	-0.6223	0.00	0.00
0.40	0.300	11.10	-32.74822139	-0.6223	0.00	0.00
0.45	0.275	10.10	-32.74822139	-0.6223	0.00	0.00
0.50	0.250	9.10	-32.74822139	-0.6223	0.00	0.00
0.55	0.225	8.10	-32.74822139	-0.6223	0.00	0.00
0.60	0.200	7.10	-32.74822140	-0.6223	0.00	0.00
0.65	0.175	6.10	-32.74822143	-0.6223	0.00	0.00
0.70	0.150	5.10	-32.74822163	-0.6222	0.00	-0.02
0.75	0.125	4.10	-32.74822308	-0.6219	-0.02	-0.06
0.76	0.120	3.90	-32.74822393	-0.6217	-0.03	-0.10
0.77	0.115	3.70	-32.74822521	-0.6214	-0.05	-0.14
0.78	0.110	3.50	-32.74822713	-0.6209	-0.08	-0.22
0.79	0.105	3.30	-32.74823004	-0.6203	-0.12	-0.32
0.80	0.100	3.10	-32.74823448	-0.6192	-0.18	-0.50
0.81	0.095	2.90	-32.74824122	-0.6176	-0.27	-0.76
0.82	0.090	2.70	-32.74825141	-0.6151	-0.41	-1.16
0.83	0.085	2.50	-32.74826676	-0.6114	-0.62	-1.75
0.84	0.080	2.30	-32.74828988	-0.6056	-0.93	-2.68
0.85	0.075	2.10	-32.74832476	-0.5968	-1.41	-4.10
0.86	0.070	1.90	-32.74837714	-0.5832	-2.12	-6.28
0.87	0.065	1.70	-32.74845479	-0.5624	-3.18	-9.63
0.88	0.060	1.50	-32.74856764	-0.5306	-4.71	-14.74
0.89	0.055	1.30	-32.74872674	-0.4820	-6.88	-22.55
0.90	0.050	1.10	-32.74893929	-0.4078	-9.77	-34.47
0.91	0.045	0.90	-32.74919357	-0.2949	-13.23	-52.61
0.92	0.040	0.70	-32.74942151	-0.1249	-16.33	-79.93
0.93	0.035	0.50	-32.74942170	0.1248	-16.33	-120.05
0.94	0.030	0.30	-32.74875527	0.4751	-7.26	-176.35
0.95	0.025	0.10	-32.74669998	0.9359	20.70	-250.39


################################################################################


#!/bin/bash

PSEUDO_DIR=../pseudo/
TMP_DIR=../tmp/

pw[0]=/opt/Q-E.d/espresso-4.0.1/bin/pw.x
pw[1]=/opt/Q-E.d/espresso-4.3.1/bin/pw.x
pp[0]=/opt/Q-E.d/espresso-4.0.1/bin/pp.x
pp[1]=/opt/Q-E.d/espresso-4.3.1/bin/pp.x

for code in 0 1 ; do

cat > oh.scf.$code.in << EOF
&CONTROL
   calculation   = 'scf'
   prefix        = 'OH$code'
   restart_mode  = 'from_scratch'
   outdir        = '$TMP_DIR'
   PSEUDO_DIR    = '$PSEUDO_DIR'
/
&SYSTEM
     ibrav     = 6
     celldm(1) = 10.d0
     celldm(3) = 4.d0
     nat       = 2
     ntyp      = 2
     ecutwfc   = 27.0d0
     ecutrho   = 216.0d0
     occupations = 'smearing'
     degauss     = 0.01D0
     smearing    = 'mp'
     nspin = 2
     starting_magnetization = 0.7
/
&ELECTRONS
     conv_thr    = 1.0d-9
     mixing_mode = 'plain'
     mixing_beta = 0.3d0
/
ATOMIC_SPECIES
H     1.00   H.vbc.UPF
O    16.00   O.pz-rrkjus.UPF
ATOMIC_POSITIONS (bohr)
H        0 0 -0.9
O        0 0  0.9
K_POINTS gamma
EOF

${pw[$code]} < oh.scf.$code.in > oh.scf.$code.out

#dummy is eopreg*100
for dummy in 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 ; do
eopreg=`echo $dummy  | awk '{printf "%4.2f",$1/100}'`
tst=${eopreg:2:2}
emaxpos=`dc -e "6k 1 $eopreg - 2/p"`

cat > oh.dip.scf.$code.$tst.in << EOF
&CONTROL
   calculation   = 'scf'
   prefix        = 'OH$code'
   restart_mode  = 'from_scratch'
   outdir        = '$TMP_DIR'
   PSEUDO_DIR    = '$PSEUDO_DIR'
   dipfield = .true. , tefield = .true.
/
&SYSTEM
     ibrav     = 6
     celldm(1) = 10.d0
     celldm(3) = 4.d0
     nat       = 2
     ntyp      = 2
     ecutwfc   = 27.0d0
     ecutrho   = 216.0d0
     occupations = 'smearing'
     degauss     = 0.01D0
     smearing    = 'mp'
     nspin = 2
     starting_magnetization = 0.7
     edir=3,    eamp=0,    emaxpos=$emaxpos,   eopreg=$eopreg
/
&ELECTRONS
     startingpot = 'file'
     startingwfc = 'file'
     conv_thr    = 1.0d-9
     mixing_mode = 'plain'
     mixing_beta = 0.3d0
/
ATOMIC_SPECIES
H     1.00   H.vbc.UPF
O    16.00   O.pz-rrkjus.UPF
ATOMIC_POSITIONS (bohr)
H        0 0 -0.9
O        0 0  0.9
K_POINTS gamma
EOF

${pw[$code]} < oh.dip.scf.$code.$tst.in > oh.dip.scf.$code.$tst.out

done
done

-- 
Guido Fratesi

Dipartimento di Scienza dei Materiali
Universita` degli Studi di Milano-Bicocca
Milano, Italy



More information about the users mailing list