[QE-developers] Potential Issue with Inversion Symmetry Detection in ph.x

Paolo Giannozzi p.giannozzi at gmail.com
Mon Aug 3 13:26:47 CEST 2020


Thank you for noticing this hard-to-notice problem. Does the attached patch
fix the problem? Paolo

On Sat, Aug 1, 2020 at 8:54 AM Phil Wang <ywang393 at jhu.edu> wrote:

> Dear developers of QE,
>
>
>
> Hope you are all doing well in this hard time!
>
>
>
> I’m trying to fix conflictions between the k-point branch and the phonon
> code (Merge Request !292). As I was debugging the search of small group of
> q points, I found the inversion detection of ph.x could get wrong result.
> The part of the code is in LR_Modules/set_small_group_of_q.f90, Line 54 –
> Line 62:
>
>                  nsymq = copy_sym ( nsym, sym )
>
>   !
>
>   CALL inverse_s ( )
>
>   !
>
>   ! check if inversion (I) is a symmetry. If so, there should be nsymq/2
>
>   ! symmetries without inversion, followed by nsymq/2 with inversion
>
>   ! Since identity is always s(:,:,1), inversion should be s(:,:,1+nsymq/2)
>
>   !
>
>   invsymq = ALL ( s(:,:,nsymq/2+1) == -s(:,:,1) )
>
>
>
> Since the list of sym ops in s(:,:,48) has been rotated by copy_sym() once
> for each distinct q point, there is no guarantee that inversion symmetry
> must sit at “nsymq/2 + 1”. It’s true only if copy_sym() is called once on
> s(:,:,48).
>
>
>
> As an example, I ran phonon on Si with a 4x4x4 q point grid. The small
> group of (0.5,-0.5,0.5) had inversion, but it’s listed at 9 out of 12
> operations. Invsymq was subsequently set to .False.. The list of sym. ops.
> for small group of this q, in the order after calling copy_sym(), is:
>
> identity
>
> inv. 180 deg rotation - cart. axis [-1,0,1]
>
> 120 deg rotation - cart. axis [-1,1,-1]
>
> inv. 180 deg rotation - cart. axis [1,1,0]
>
> 120 deg rotation - cart. axis [1,-1,1]
>
> inv. 180 deg rotation - cart. axis [0,1,1]
>
> 180 deg rotation - cart. axis [0,1,1]
>
> inversion
>
> 180 deg rotation - cart. axis [-1,0,1]
>
> 180 deg rotation - cart. axis [1,1,0]
>
> inv. 120 deg rotation - cart. axis [1,-1,1]
>
> inv. 120 deg rotation - cart. axis [-1,1,-1]
>
>
>
> A simple fix would be to replace the line “invsymq = ALL (
> s(:,:,nsymq/2+1) == -s(:,:,1) )” by an iteration over the first nsymq
> operations of s(:,:,48). Although this invsymq is not propagated to other
> routines, it might be worth checking similar places of searching inversion
> in other parts of phonon code / LR code.
>
>
>
> The confliction of git branch “k-point” is almost fixed, and a detailed
> description can be found at: https://arxiv.org/abs/1907.13610. Any
> opinion and suggestion on its integration with QE are welcomed and
> appreciated!
>
>
>
> Best wishes,
>
>
>
> Yunzhe (Phil) Wang
>
> Mueller Research Group
>
> Department of Materials Science and Engineering
>
> Johns Hopkins University
>
>
>
>
> _______________________________________________
> developers mailing list
> 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/20200803/e6b3072d/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: invsymq.diff
Type: application/octet-stream
Size: 1999 bytes
Desc: not available
URL: <http://lists.quantum-espresso.org/pipermail/developers/attachments/20200803/e6b3072d/attachment-0001.obj>


More information about the developers mailing list