[QE-developers] Patch to modify the pw.x behavior at user-provided k-point list
Yunzhe Wang
ywang393 at jhu.edu
Thu Nov 15 19:30:38 CET 2018
Dear Professor Giannozzi,
I agree that additional flags will unnecessarily increase the complexity to maintain. My original thought is to not disturb the original behavior of pw.x.
The easier way to stop the expansion by lattice is to change the line 553 of setup.f90 (github) from
CALL irreducible_BZ(nrot, s, nsym ...)
to
CALL irreducible_BZ(nsym + nsym_na, s, nsym ....)
The original code is to expand by the lattice point group, and the latter is to expand by the crystal point group, with the discarded glide plane / screw axis included. Our server doesn't have the prior knowledge of the FFT grid used in pw.x and therefore returns the k-points in IBZ of the crystal. If pw.x decides to throw away some symmetry, the IBZ should be enlarged to the lower symmetry one, hence with the "+nsym_na" part.
An example would be the one that an actual user reported to us during the beta testing:
The structure is SiC, which she downloaded from ICSD data base. It's hexagonal with 12 atoms in the unit cell, but due to the limited precision that ICSD has (to 10^-4 Angstrom), both pw.x and our server detected it as an orthorhombic structure. Our server returned a mesh with 14 asymmetrical k-points, and QE expanded it, with the point group of a hexagonal lattice, to 84 distinct k-points. The total energies are -394.9476363 Ry and -394.9476383 Ry (a difference of 0.002 mRy) , with the expansion by pw.x shut off and switch on respectively. And the calculation time on 12 processors are 1.55 minutes (14 k-points) and 8.43 minutes (k-points), respectively.
I know in actual serious calculation for publication, the atomic positions would be much precise, and symmetry will be inspected. But a similar case would still be present if a user is working on a slab or a supercell which the crystal symmetry and the unit cell symmetry are very different. An expansion by the lattice point group, will increase the calculation time by a lot. Also, for low symmetry structure, the k-points will increase, averagely, by 1/5 - 1/3, in serveral test cases.
I attached below the input file for the SiC for your reference (the pseudo-potential files are not attached):
&CONTROL
calculation = 'scf' ,
pseudo_dir = './' ,
disk_io = 'none' ,
verbosity = 'high',
/
&SYSTEM
ibrav = 0 ,
ntyp = 2 ,
nat = 12 ,
occupations = 'smearing' ,
smearing = 'marzari-vanderbilt' ,
degauss = 0.02 ,
ecutwfc = 50 ,
/
&ELECTRONS
startingwfc = 'random' ,
/
&IONS
/
&CELL
/
CELL_PARAMETERS bohr
5.82224621542067 0.00000000000000 0.00000000000000
-2.91112310771033 5.04221312964210 0.00000000000000
0.00000000000000 0.00000000000000 28.58172981466878
ATOMIC_SPECIES
Si 28.0855 Si.GGA-PBE-paw.UPF
C 12.0107 C.pbe-rrkjus.UPF
ATOMIC_POSITIONS crystal
Si 1.00000000000000 1.00000000000000 0.50000000000000
Si 0.00000000000000 0.00000000000000 0.00000000000000
Si 0.66670000000000 0.33340000000000 0.66640000000000
Si 0.33330000000000 0.66660000000000 0.16640000000000
Si 0.33330000000000 0.66660000000000 0.83290000000000
Si 0.66670000000000 0.33340000000000 0.33290000000000
C 0.66670000000000 0.33340000000000 0.54120000000000
C 0.33330000000000 0.66660000000000 0.04120000000000
C 0.33330000000000 0.66660000000000 0.70800000000000
C 0.66670000000000 0.33340000000000 0.20800000000000
C 0.00000000000000 0.00000000000000 0.87460000000000
C 0.00000000000000 0.00000000000000 0.37460000000000
# Server version 2018.08.08. ||BETA_MODE|| K-points for C1Si1 with MINDISTANCE=20.0 Angstroms and INCLUDEGAMMA=AUTO FORCEDIAGONAL=false has 112 total points and 14 distinct points. Effective minDistance 21.34579415247883 Angstroms.
K_POINTS crystal
14
0.07142857142857 0.90178571428571 0.25000000000000 8.0
0.21428571428571 0.70535714285714 0.25000000000000 8.0
0.35714285714286 0.50892857142857 0.25000000000000 8.0
0.50000000000000 0.31250000000000 0.25000000000000 8.0
0.64285714285714 0.11607142857143 0.25000000000000 8.0
0.92857142857143 0.72321428571429 0.25000000000000 8.0
0.07142857142857 0.52678571428571 0.25000000000000 8.0
0.21428571428571 0.33035714285714 0.25000000000000 8.0
0.50000000000000 0.93750000000000 0.25000000000000 8.0
0.64285714285714 0.74107142857143 0.25000000000000 8.0
0.07142857142857 0.15178571428571 0.25000000000000 8.0
0.21428571428571 0.95535714285714 0.25000000000000 8.0
0.64285714285714 0.36607142857143 0.25000000000000 8.0
0.21428571428571 0.58035714285714 0.25000000000000 8.0
________________________________
From: Paolo Giannozzi <p.giannozzi at gmail.com>
Sent: Thursday, November 15, 2018 9:04:03 AM
To: General discussion list for Quantum ESPRESSO developers
Cc: Yunzhe Wang
Subject: Re: [QE-developers] Patch to modify the pw.x behavior at user-provided k-point list
Dear Yunzhe
as a rule I am against adding new input variables - there are already hundreds of them - unless there are no alternatives. From what I understand, your procedure produces a list of k-points that are already in the Brillouin Zone reduced using the symmetry of the crystal. If so, the best solution is to ensure that the code does not spoil it when computing the actual k-point grid from the input k-point grid. It would be useful to have a few examples showing what happens.
Paolo
On Wed, Nov 14, 2018 at 8:26 AM Yunzhe Wang <ywang393 at jhu.edu<mailto:ywang393 at jhu.edu>> wrote:
Dear Professors and Developers,
Sorry about the bothering long mail!
Our group has built a server to generate the least-number k-point mesh for a user-given length of the corresponding supercell size. (By "corresponding", I mean a calculation with a dense k-point mesh for a primitive cell, is equivalent to, a calculation with a large supercell with 1 k-point). Currently, the server is able to read the user input file and append the returned K_POINTS card at the end.
However, during the beta testing, we found that QE had the subroutine irreducible_BZ() to force the mesh being expand by the lattice point symmetries first, and then being reduced by the true crystal symmetry. Our server already returns a mesh complying with the crystal symmetry, but will be expanded quite a lot (even more in the low symmetry case) by irreducible_BZ().
So my question is, is there a specific reason to let the mesh being expanded by the lattice symmetry first? Our beta test results show the two cases, expanded and not-expanded (initial K_POINTS card in both cases provided by our server), has nearly the same total energy. And the converged energy by the not-expanded one is also very close to that of the MP generated k-point mesh.
We have wrote a small patch to include an additional flag "kpuser" to switch on and off the expansion, and when it's off, we leave the behavior of QE untouched. Do you think it's ok that we release the patch and let users of our server to patch their local QE distribution? Or we open an issue on QE and let the experts of QE to scrutinize this feature, if you think it's valuable to be incorporated in?
Best Regards,
Yunzhe(Phil) Wang, Graduate Student
Mueller Research Group,
Johns Hopkins University
_______________________________________________
developers mailing list
developers at lists.quantum-espresso.org<mailto:developers at lists.quantum-espresso.org>
https://lists.quantum-espresso.org/mailman/listinfo/developers
--
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quantum-espresso.org/pipermail/developers/attachments/20181115/1b8f456f/attachment-0001.html>
More information about the developers
mailing list