[QE-users] symmetry traces in sym_band.f90

Gerson J. Ferreira gersonjferreira at ufu.br
Mon Mar 7 18:15:33 CET 2022


Thanks Hongyi, this SpaceGroupIrep seems quite interesting. But still, it
does not do what I need. At least, reading their documentation, I don't see
the feature I need there.

Please notice that these matrix representations in your print screen are
not unique. It depends on the basis. Let me give you an example with
graphene's Dirac bands. Let's focus on the spinless single group
description and look only at the operation C3(z) for simplicity. We know
that the wave-functions that compose the Dirac bands transform as the E''
of D3h. The quadratic functions that form a basis for this irreps are (xz,
yz) [1]. But it can be any orthogonal set of linear combinations of xz and
yz. For instance:

a) If we choose the basis set as (xz, yz), the C3(z) operation will be
defined by the matrix (θ = 2pi/3)

| cos(θ) -sin(θ)|
| sin(θ)  cos(θ)|

b) If we choose the basis set as ((x+iy)z, (x-iy)z) the same C3(z)
operation becomes represented by a diagonal matrix

|exp(iθ)  0|
|0 exp(-iθ)|

These are equivalent representations (up to an unitary transformation) of
C3(z) under the E'' irrep of D3h. Both have the same trace.

Now, the wave-functions from QE are represented by which of these? The
answer is none. The wave-functions are numerical iterative solutions, while
they do transform as E'', their particular matrix representation is not set
to a particular choice as above, but it is "randomly" set by the numerical
diagonalization. I have such a matrix for the spinful case here as an
example:

Each term represents the (real,imag) part of the matrix element, the trace
is -1, as expected.

(-0.90669010, 0.04976980) ( 0.01401095,  0.01512965) ( 0.07246659,
0.14059376) (0.33126319, 0.20064275)
(-0.01401095, 0.01512965) (-0.90669008, -0.04976981)
(-0.05308625,-0.38363353) (0.10041187, 0.12221076)
( 0.06736942,-0.11163651) ( 0.33090807,  0.22024838) (
0.40669008,-0.73549409) (0.27342455, 0.20947503)
( 0.33326797, 0.21666087) ( 0.07583922, -0.10606489) (-0.27342455,
0.20947504) (0.40669010, 0.73549410)


This matrix was calculated with the code I've set in the previous email.
So, it's neither (xz, yz) nor ((x+iy)z, (x-iy)z) (times spin), but
nonetheless, it is a representation of E'', as checked by the trace of this
and other symmetry operations of D3h.

So, I need these ugly matrices that characterize the numerical
wave-functions of QE to later rotate them to match my choice, which in this
case will be ((x+iy)z, (x-iy)z) (times spin). Got it? Essentially, I need
to find the unitary transformation that takes the QE numerical
wave-functions to the simple form of ((x+iy)z, (x-iy)z) (times spin).

I don't think that there is a code that does this for me already. But I'll
check again the links you sent me before just to be sure.

Now, regarding the limitation of the zone border for nonsymmorphic
symmetries, indeed this is an issue for me. That's what I'll check now. Is
this limitation related to the part of the code that calculates the matrix
elements? Or does it apply only to the second part that identifies the
irreps? If the routine "rotate_all_psi" works for the non-symmorphic cases,
then it should work fine for my needs. I'll try the code for a
non-symmorphic case to see how it goes.

Do you know where exactly this limitation is for nonsymmorphic symmetries?

[1]
http://symmetry.jacobs-university.de/cgi-bin/group.cgi?group=603&option=4

Best,
--
Gerson J. Ferreira
Prof. Dr. @ InFis - UFU
----------------------------------------------
gjferreira.wordpress.com
Institute of Physics
Federal University of Uberlândia, Brazil
----------------------------------------------


On Mon, Mar 7, 2022 at 12:13 PM Hongyi Zhao <hongyi.zhao at gmail.com> wrote:

> On Mon, Mar 7, 2022 at 8:58 PM Gerson J. Ferreira
> <gersonjferreira at ufu.br> wrote:
> >
> > 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.
> >
> > 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.
> >
> > These traces are invariant under unitary transformations (change of
> basis), but the full matrix representation DΓ(S) for S in G is not. In
> other words, let's call A a 2x2 matrix representation of the C3(z) operator
> under a certain basis set {ψ0, ψ1}, which transforms as some irrep Γ. If U
> is an unitary transformation that gives a new basis (within the same
> subspace) denoted {ϕ1, ϕ2} = U ⋅ {ψ0, ψ1}, then under this new basis the
> matrix representation of C3(z) becomes B = U.A.U†, which is also a rep of
> the same irrep Γ, same traces.
> >
> > I need the full matrices DΓ(S), 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?
>
> It seems that you want to obtain all matrices corresponding to each
> element of the irreducible representation of a small group. As far as
> I know, the SpaceGroupIrep [1] package can do this and has an
> interface with vasp. But unfortunately, there is only an interface to
> vasp so far. You can see the screenshot to get a preliminary
> impression, where I do a simple test with the space group of Graphene
> 191, which belongs to the D_3h point group [2]. And please see here
> [3] for some related discussions.
>
> > So I'm editing this routine to get what I need.
>
> As I've mentioned as the first reply to you in this thread, the
> corresponding processing for the following edge cases has not been
> implemented so far in the "./PP/src/sym_band.f90" routine:
>
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> SUBROUTINE find_band_sym_so (ik,evc,et,nsym,s,ft,d_spin,gk, &
>      invs,rap_et,times,ngroup,istart,accuracy)
>
>   !
>   !   This subroutine finds the irreducible representations of the
>   !   double group which give the transformation properties of the
>   !   spinor wavefunctions evc.
>   !   Presently it does NOT work at zone border if the space group of
>   !   the crystal has fractionary translations (non-symmorphic space
> groups).
>   !
>   !
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>
>
> > 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.
> >
> > 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.
>
> Do you mean: in order to the test described by you, I should use the
> attached sym_band.f90 in combination with the patched version of
> PW/src/divide_class_so.f90 shown by your in another mail of this
> thread, i.e., changing the line 653 into the following?
>
> IF (nelem(iclass)>2) THEN
>
>
> [1] https://github.com/goodluck1982/SpaceGroupIrep
> [2] https://materialsproject.org/materials/mp-568806/
> [3]
> https://github.com/goodluck1982/SpaceGroupIrep/issues/11#issuecomment-1030838258
>
> Best,
> Hongyi
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quantum-espresso.org/pipermail/users/attachments/20220307/5c0bfedc/attachment.html>


More information about the users mailing list