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