<div dir="ltr"><div>I've tested Andrea's suggestion now, and it fixes the bug in the classes of D_3h. The modification was</div><div><br></div><div>(quoting Andrea's email)</div><div><br></div><div>In PW/src/divide_class_so.f90 at line 653 there is now:<br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">IF (nelem(iclass)>1) THEN<br>   which_irr(iclass)=9<br>ELSE<br>   which_irr(iclass)=6<br>END IF</blockquote><br>This test should be <br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">IF (nelem(iclass)>2) THEN<br>   which_irr(iclass)=9<br>ELSE<br>   which_irr(iclass)=6<br>END IF</blockquote></div><div><br></div>Best,<br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div style="font-family:arial"><div>--<br>Gerson J. Ferreira</div><div>Prof. Dr. @ InFis - UFU </div><div>----------------------------------------------</div><div style="font-family:Arial,Helvetica,sans-serif"><font face="arial"><a href="http://gjferreira.wordpress.com/" target="_blank">gjferreira.wordpress.com</a></font><br></div><div><font size="2" face="arial">Institute of Physics</font></div><div>Federal University of Uberlândia, Brazil</div><div style="font-family:Arial,Helvetica,sans-serif"><span style="font-family:arial">----------------------------------------------</span></div></div></div></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 7, 2022 at 9:57 AM Gerson J. Ferreira <<a href="mailto:gersonjferreira@ufu.br">gersonjferreira@ufu.br</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 dir="ltr"><div>Easy answer first: I'm sorry for the formatted code. I've copy/pasted directly from the VSCode and it went like this. It was not on purpose, just a lack of attention to detail.</div><div><br></div><div>Now regarding the irreps, notice that you are describing the characters of the representations, and not the matrices. I agree that if all we want is to identify the irreps that describe each band, it is sufficient to look at the characters / trace, and that's what the sym_band.f90 routine already does. </div><div><br></div><div>These traces are invariant under unitary transformations (change of basis), but the full matrix representation <span><span>D<sup><span style="font-size:92%">Γ</span></sup>(S)</span></span> for S in G is not. In other words, let's call A a 2x2 matrix representation of the <span><span>C<sub><span style="font-size:92%">3</span></sub>(z)</span></span> operator under a certain basis set {<span><span>ψ<sub><span style="font-size:92%">0</span></sub></span></span>, <span><span>ψ<sub><span style="font-size:92%">1</span></sub></span></span>}, which transforms as some irrep <span><span>Γ</span></span>. If U is an unitary transformation that gives a new basis (within the same subspace) denoted <span><span>{ϕ<sub><span style="font-size:92%">1</span></sub>, ϕ<sub><span style="font-size:92%">2</span></sub>} = U ⋅ {ψ<sub><span style="font-size:92%">0</span></sub>, ψ<sub><span style="font-size:92%">1</span></sub>}</span></span>, then under this new basis the matrix representation of <span><span>C<sub><span style="font-size:92%">3</span></sub>(z)</span></span> becomes <span><span>B = U.A.U<sup><span style="font-size:92%">†</span></sup></span></span>, which is also a rep of the same irrep <span><span>Γ</span></span>, same traces. </div><div><br></div><div>I need the full matrices <span><span>D<sup><span style="font-size:92%">Γ</span></sup>(S)</span></span>, and not just the characters / trace, because I need to make sure that numerical wave-functions from QE match the representations I'll use later in a separate python code. Is it clear now? So I'm editing this routine to get what I need.</div><div><br></div><div>Regarding the bug, don't worry. One of the QE devs has already replied to me. It is indeed a bug in the D_3h classes that was unnoticed because both s_v and s_h classes have characters  equal to zero in the double group, so it does not affect the identification of the irreps. I'll try some suggestions he sent me to fix this.</div><div><br></div><div>But if you want to reproduce this, simply run bands.x for graphene (full relativistic) or any other D_3h material and use the sym_band.f90 file attached here. But notice that in this code I'm printing a bunch of stuff to stdout for testing purposes. The relevant section for this bug is between lines 870--876.</div><div><br></div>Best,<br clear="all"><div><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div style="font-family:arial"><div>--<br>Gerson J. Ferreira</div><div>Prof. Dr. @ InFis - UFU </div><div>----------------------------------------------</div><div style="font-family:Arial,Helvetica,sans-serif"><font face="arial"><a href="http://gjferreira.wordpress.com/" target="_blank">gjferreira.wordpress.com</a></font><br></div><div><font size="2" face="arial">Institute of Physics</font></div><div>Federal University of Uberlândia, Brazil</div><div style="font-family:Arial,Helvetica,sans-serif"><span style="font-family:arial">----------------------------------------------</span></div></div></div></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 7, 2022 at 12:14 AM Hongyi Zhao <<a href="mailto:hongyi.zhao@gmail.com" target="_blank">hongyi.zhao@gmail.com</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">On Mon, Mar 7, 2022 at 10:00 AM Gerson J. Ferreira<br>
<<a href="mailto:gersonjferreira@ufu.br" target="_blank">gersonjferreira@ufu.br</a>> wrote:<br>
><br>
> Thanks for the answer and the links. But if I understand correctly, these codes only give us the irreps, and I need the specific representation matrices calculated from the QE wave-functions. The best way to get these seem to be editing this routine.<br>
<br>
Let us discuss this in more detail. An irreps is short for irreducible<br>
representation [1], which is a component of a character table [2]: a<br>
two-dimensional table whose rows correspond to irreducible<br>
representations. The specific representation matrices calculated from<br>
the QE wave-functions should also can be derived from the character<br>
table.<br>
<br>
So, I still don't quite understand what you mean above. Any more<br>
hints/explanations/comments will be greatly appreciated.<br>
<br>
[1] <a href="https://en.wikipedia.org/wiki/Irreducible_representation" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Irreducible_representation</a><br>
[2] <a href="https://en.wikipedia.org/wiki/Character_table" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Character_table</a><br>
<br>
> I've found my mistake, and a bug (I'll report for the developers as well). My mistake was that I was not using the "which_irr_so(iclass)" to identify the class. I was assuming that "iclass" would already list the classes in the correct order.<br>
><br>
> Now, the bug is that "which_ir_so" is returning the class 9 two times here, but one of these should be 6 instead. This can be checked with the following code<br>
><br>
> PRINT *, "======================================================"<br>
> PRINT *, "which_ir_so:", (which_irr_so(iclass), iclass=1, nclass)<br>
> PRINT *, "classes:", (name_class_so(iclass), iclass=1, nclass)<br>
> DO irap=1,nrap<br>
> PRINT *, ">>", (char_mat_so(irap, which_irr_so(iclass)), iclass=1, nclass)<br>
> ENDDO<br>
> PRINT *, "======================================================"<br>
<br>
I want to know how you can make the above code display black<br>
background color in this email.<br>
<br>
> Which prints<br>
><br>
> which_ir_so(iclass):           1           5           3           9           9           7           2           4           8<br>
> classes: E    -E   2C3  -2C3  3C2' s_h 2S3  -2S3  3s_v<br>
><br>
> So, the classes are ordered as {E, 3C2', 2C3, 3s_v, 3s_v, 2S3, -E, -2C3, -2S3}<br>
><br>
> Notice that 3s_v appears twice, and s_h does not appear in the list.<br>
<br>
What's your patched code? Could you please show the detailed steps to<br>
reproduce the above example?<br>
<br>
Best,<br>
Hongyi<br>
<br>
</blockquote></div>
</blockquote></div>