<div dir="ltr"><div>Thank you for noticing this hard-to-notice problem. Does the attached patch fix the problem? Paolo</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Aug 1, 2020 at 8:54 AM Phil Wang <<a href="mailto:ywang393@jhu.edu">ywang393@jhu.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US">
<div class="gmail-m_8483340603527010298WordSection1">
<p class="MsoNormal">Dear developers of QE,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Hope you are all doing well in this hard time!<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">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:<u></u><u></u></p>
<p class="MsoNormal">                 nsymq = copy_sym ( nsym, sym )<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">  !<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">  CALL inverse_s ( )<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">  !<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">  ! check if inversion (I) is a symmetry. If so, there should be nsymq/2<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">  ! symmetries without inversion, followed by nsymq/2 with inversion<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">  ! Since identity is always s(:,:,1), inversion should be s(:,:,1+nsymq/2)<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">  !<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">  invsymq = ALL ( s(:,:,nsymq/2+1) == -s(:,:,1) )<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in"><u></u> <u></u></p>
<p class="MsoNormal">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).
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">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:<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">identity                                    
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">inv. 180 deg rotation - cart. axis [-1,0,1] 
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">120 deg rotation - cart. axis [-1,1,-1]     
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">inv. 180 deg rotation - cart. axis [1,1,0]  
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">120 deg rotation - cart. axis [1,-1,1]      
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">inv. 180 deg rotation - cart. axis [0,1,1]  
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">180 deg rotation - cart. axis [0,1,1]       
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">inversion                                   
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">180 deg rotation - cart. axis [-1,0,1]      
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">180 deg rotation - cart. axis [1,1,0]       
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">inv. 120 deg rotation - cart. axis [1,-1,1] 
<u></u><u></u></p>
<p class="MsoNormal" style="margin-left:0.5in">inv. 120 deg rotation - cart. axis [-1,1,-1]
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">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.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The confliction of git branch “k-point” is almost fixed, and a detailed description can be found at:
<a href="https://arxiv.org/abs/1907.13610" target="_blank">https://arxiv.org/abs/1907.13610</a>. Any opinion and suggestion on its integration with QE are welcomed and appreciated!<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Best wishes,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Yunzhe (Phil) Wang<u></u><u></u></p>
<p class="MsoNormal">Mueller Research Group<u></u><u></u></p>
<p class="MsoNormal">Department of Materials Science and Engineering<u></u><u></u></p>
<p class="MsoNormal">Johns Hopkins University<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>

_______________________________________________<br>
developers mailing list<br>
<a href="mailto:developers@lists.quantum-espresso.org" target="_blank">developers@lists.quantum-espresso.org</a><br>
<a href="https://lists.quantum-espresso.org/mailman/listinfo/developers" rel="noreferrer" target="_blank">https://lists.quantum-espresso.org/mailman/listinfo/developers</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Paolo Giannozzi, Dip. Scienze Matematiche Informatiche e Fisiche,<br>Univ. Udine, via delle Scienze 208, 33100 Udine, Italy<br>Phone +39-0432-558216, fax +39-0432-558222<br><br></div></div></div></div></div>