goodluck1982 / SpaceGroupIrep

A mathematica package for irreducible representations of space group
GNU General Public License v3.0
53 stars 20 forks source link

`Thermo_pw` has added the symmetry analysis at zone border point in nonsymmorphic space groups. #6

Closed hongyi-zhao closed 2 years ago

hongyi-zhao commented 2 years ago

Your paper described the following edge case, which hasn't been implemented in most DFT codes:

image

In fact, there is an excellent package, named as thermo_pw created by Prof. Andrea Dal Corso, which has implemented the missing feature mentioned in your paper. See the following information retrieved from the source code of thermo_pw and the discussion here for more details:

$ git clone https://github.com/dalcorso/thermo_pw.git dalcorso/thermo_pw.git 
$ cd dalcorso/thermo_pw.git 
$ rg -i -B2 -A2  'add.* zone border' 
src/sym_band_sub.f90
2-! Copyright (C) 2006-2007 Quantum ESPRESSO group
3-! Copyright (C) 2016-2017 Andrea Dal Corso 
4:!    (added symmetry analysis at zone border point in nonsymmorphic space
5-!     groups)
6-! This file is distributed under the terms of the

src/dynmatrix_tpw.f90
2-! Copyright (C) 2001-2008 Quantum ESPRESSO group
3-! Copyright (C) 2016 Andrea Dal Corso
4:! (added the symmetry analysis of the modes at zone border for space
5-!  groups that contains nonsymmorphic operations)
6-! This file is distributed under the terms of the

Regards, HZ

goodluck1982 commented 2 years ago

I haven't used thermo_pw, but it seems an excellent tool. I don't know if it can output the LGIRs of energy bands. But I guess the answer may be no, or else there is no need to develop the tool qeirreps.

hongyi-zhao commented 2 years ago

As shown by the following flowchart in the qeirreps paper, it depends on another package, named as qe2respack, modified from the original version by the authors of qeirreps to achieve the aim:

image

In addition, it only targets QE, and is implemented with the compiled language FORTRAN. All these facts make it less satisfactory. OTOH, as I've mentioned here, the Python based irrep package, which aims to server a more versatile purpose and not restrict the users to a specific DFT code. So, I think it's a good idea to extend/adopt/modify the method implemented in irrep to generate a trace.txt file so that SpaceGroupIrep can use it.

goodluck1982 commented 2 years ago

It's also possible to extend/adopt/modify the WannSymm code or post-process its result to generate a trace.txt file.

hongyi-zhao commented 2 years ago

IMO, being in C makes WannSymm harder to develop and maintain than if it were in Python. Considering that this type of tool is not computationally intensive, as the DFT codes themselves are, it's best to implement it in object-oriented and interpretative languages such as Python.

goodluck1982 commented 2 years ago

It's maybe not necessary to modify WannSymm. Since WannSymm can calculate characters, if enought information are output, only a post-process is needed.

hongyi-zhao commented 2 years ago

It's maybe not necessary to modify WannSymm. Since WannSymm can calculate characters, if enought information are output, only a post-process is needed.

This requires scrutinizing WannSymm's source code and testing every possible corner case to verify.

I don't know if it can output the LGIRs of energy bands. But I guess the answer may be no, or else there is no need to develop the tool qeirreps.

According to my coarse understanding, the LG, i.e., wave vector group corresponding to the translation symmetry in reciprocal lattice/momentum space, while the wave vector star group corresponding to the point symmetry in reciprocal lattice/momentum space. The latter can break the symmetry of the former, thus relates most to dispersion, thermal, and disorder phenomena. Judging by the name of the package, thermo_pw, it should imply that the author is very concerned about the physical processes and mechanisms related to thermal phenomena, hence, the wave vector star group also should be considered and analyzed.

A quickly digging into the source code of thermo_pw via rg gives me the following information from here:

Different colors correspond to different irreducible representations of 
the point co-group of the {\bf k} or {\bf q} wavevector. To see the
correspondence color-representation see the \texttt{point\_groups.pdf} 
manual. The point group used for each {\bf k} or {\bf q} point is
written in the \thermo\ output and also in the plot if you set
\texttt{enhance\_plot=.TRUE.}. In the output you can also find,
close to each band energy or phonon frequency value, the name of the
irreducible representation. Relevant character tables are given in the
\texttt{point\_groups.pdf} manual, in the \thermo\ output, or by the
\texttt{crystal\_point\_group.x} tool.

and here:

The number of the representation and the point co-group of each 
{\bf k}-point can be found in the output of \texttt{thermo\_pw}.
These representation numbers refer to the point co-group of each 
{\bf k}-point in the slab when you plot the slab band structures and 
to the point co-group of each {\bf k}-point in the bulk when you plot 
a PBS. Some particular values of $k_z$, such as $k_z=0$
might have a point co-group in the bulk different from the 
point co-group of a point with a generic $k_z$ but in this
case the representations are transformed into those of the smaller
group using the group-subgroup relationships and
the symmetry descent of the irreducible representations
(only when \texttt{sym\_divide=.TRUE.}). The representations of the
smaller point co-group have to be used in the PBS input.

In general, the point co-group of a {\bf k}-point 
${\bf k}=({\bf k}_\parallel, 
k_z)$ with component ${\bf k}_\parallel$ parallel to the surface 
and a generic $k_z$ in the bulk is different 
from the point co-group of a {\bf k}-point ${\bf k}=({\bf k}_\parallel, 0)$ 
in the slab. Moreover, experimentally one cannot consider symmetries
of the slab that exchange the two surfaces, and therefore the 
point co-group a {\bf k}-point ${\bf k}=({\bf k}_\parallel, 0)$ on the surface
is a subgroup of the point co-group of ${\bf k}=({\bf k}_\parallel, 0)$
on the slab. The point co-group ${\bf k}=({\bf k}_\parallel, k_z)$ 
in the bulk does not contain operations that exchange $k_z$ 
with $-k_z$
but it might be larger than the point co-group of 
${\bf k}=({\bf k}_\parallel, 0)$ on the surface because
it might contain symmetries of the bulk that require fractional translations
perpendicular to the surface that are not symmetries neither of the slab nor of
the surface.

The point co-group of a given {\bf k}-point ${\bf k}=({\bf k}_\parallel, 0)$
on the surface can be found by removing from the corresponding slab 
point co-group the
operations that exchange the two surfaces. It is also the group formed
from the intersection of the point co-group of 
${\bf k}=({\bf k}_\parallel, 0)$ in the slab and of the point 
${\bf k}=({\bf k}_\parallel, k_z)$ in the bulk.
It is the user responsibility to specify the same number of panels
for the PBS and for the slab calculation and to assure that the
representations plotted in each panel correspond to each other.
Returning to the example of the $(111)$ surface of an fcc, in the direction
$\bar \Gamma-\bar K$ the slab has $C_2$ symmetry about the $x$-axis, a symmetry
that the surface has not. Therefore you can plot with two different colors
the bands that belong to the $A$ or $B$ representations of the slab,
(states even or odd with respect to a $180^\circ$ rotation about
the $x$ axis, an operation that exchanges the two surfaces)
but you cannot separate the PBS into even or odd states with respect to 
the $C_2$ symmetry. You might specify two different panels with the
$A$ or $B$ bands in each, but the PBS in the two panels will be the same. 
On the contrary, for a {\bf k}-point along the $\bar \Gamma-\bar M$ direction, 
the point co-group has the $C_s$ symmetry both for the slab and for
the surface, so you can separate both the PBS 
and the surface states in two different panels.

If I understand correctly, it can obtain the information of wavevector star groups internally, at least to some extent. Please correct me if I'm wrong.

Here gives the quantities that THERMO_PW package can calculate, and here describes the following several tools related to group theory that come with it:

crystal_point_group.x is a crystal point group calculator. It can give several information about the crystallographic point 
groups, such as the list of symmetry operations, the product of two rotations, the product table, the class structure, the 
character tables of the irreducible representations of the point group and of the double point group and the projective 
representations. It gives the list of subgroups and supergroups of a given group and the compatibility tables of a given 
group with its subgroups. It can also decompose the Kronecker product representations. Finally it can list the conjugate 
groups and calculate the intersection of two point groups. For an example of its use see tools_input/crystal_point_group.in. 

kovalev.x writes the correspondence between point group symmetry operations defined in the Kovalev tables and those 
used by QUANTUM ESPRESSO.

mag_point_group.x gives a few information on the magnetic point groups. 

space_groups.x gives several information on space groups. It can give the names of the space group given the number 
reported in the International Tables for Crystallography (ITA), or the number given one of the names, translate the 
names between different editions of the ITA tables or the Shönflies name. It gives the list of coset representatives of 
each space group and the list of symmorphic space groups. For an example of its use see tools_input/space_groups.in. 
hongyi-zhao commented 2 years ago

Subsequent supplementary and explanations:

It turns out that thermo_pw really can output the complete little group irreducible representations. Please refer to the developer's reply below.

Can thermo_pw output the complete little group irreducible representations?

from: | Andrea Dal Corso

The answer is yes. On output you find the irrep of each group of bands along the symmetry lines.
The names of the representations and corresponding character tables, also for projective
representations, are reported in the thermo_pw/Doc/point_group.pdf file that you can obtain
by generating the documentation of thermo pw.
Just write make inside thermo_pw/Doc directory.

Andrea

===================

from: | Andrea Dal Corso
 Dear Prof. Hongyi Zhao,

Thank you very much for your interest in the thermo_pw package. I have seen the new works on the detection of irrep
of bands and phonon, although I have not yet studied them the details so far.

Thermo_pw implements the theory reported in the book:

S. K. Kim, ‘Group Theoretical methods and applications to molecules and
crystal’, Cambridge University Press, Cambridge (1999).

It is currently working for all k points of the Brillouin zone, both inside and at zone
border for all space groups.
It's main limitation is that it is not supporting the use of operations that require
time reversal in magnetic points groups. In that case it classifies the bands using
only the operations that do not require time reversal.

All the existing documentation on the thermo_pw implementation is in the thermo_pw/Doc/point_groups.pdf file.

Please let me know if you find inconsistencies or problems or if you need further help to make the code running.

Best Regards,

Andrea
goodluck1982 commented 2 years ago

If I understand correctly, it can obtain the information of wavevector star groups internally, at least to some extent. Please correct me if I'm wrong.

There is no concept called "wavevector star group". There are only "wavevector group" and "wavevector star".
It should be noted that there are two different concepts: the IR of LG and the IR of SG, and the latter is the induced representation of the former. When talking about one k-point in the bands, only the concept of LG IR is needed. And only when talking about SG IR, wavevector star is needed.

goodluck1982 commented 2 years ago

It turns out that thermo_pw really can output the complete little group irreducible representations. Please refer to the developer's reply below.

I think, one can only say that thermo_pw outputs the necessary information which can be used to construct the LGIR. But it does not give the LGIR directly.

I have glanced over the thermo_pw/Doc/point_group.pdf file. It only gives the character tables of point group, not the LG. For example, if I want to know the LGIR of the W point (BC coordinates are {3/4,-1/4,-1/4}) of the SG 73 (Ibca), I can use the following command to obtain it in SpaceGroupIrep: 图片 And I can also obtain it on the BCS website (note that the BCS coordinates of W is {1/2,1/2,1/2} ): 图片 But, I can not fiind its character table in the thermo_pw/Doc/point_group.pdf file. The little co-group of the LG of W is D2, what I can see in pw/Doc/point_group.pdf file is only the following information about the D2 point group 图片 However, the above character table of D2 can not be directly used for the LG of W. Because one can see from the results of both SpaceGroupIrep and BCS that there are only 1 single-valued LGIR and 4 double-valued LGIRs for the LG of W. However, the point-group character table of D2 in pw/Doc/point_group.pdf gives 4 single-valued IRs and 1 double-valued IR. These are totally different.

Still be that word, if thermo_pw outputs the LGIR directly, there is no need to develop the tool qeirreps.

hongyi-zhao commented 2 years ago

If I understand correctly, it can obtain the information of wavevector star groups internally, at least to some extent. Please correct me if I'm wrong.

There is no concept called "wavevector star group". There are only "wavevector group" and "wavevector star".

Thank you very much for your correction.

It should be noted that there are two different concepts: the IR of LG and the IR of SG, and the latter is the induced representation of the former.

I see. The representation of the IR of SG is constructed using the subgroup of IR of LG. Therefore, the name LG is used because it is a subgroup corresponding to SG.

When talking about one k-point in the bands, only the concept of LG IR is needed. And only when talking about SG IR, wavevector star is needed.

This reminds me the following fact: The trace.txt is required only when obtaining the LG IRs of energy bands, as noted in the section 8 of your paper.

I have glanced over the thermo_pw/Doc/point_group.pdf file. It only gives the character tables of point group, not the LG. For example, if I want to know the LGIR of the W point (BC coordinates are {3/4,-1/4,-1/4}) of the SG 73 (Ibca), I can use the following command to obtain it in SpaceGroupIrep:

And I can also obtain it on the BCS website (note that the BCS coordinates of W is {1/2,1/2,1/2} ):

Thank you for the concrete comparison example. I checked the corresponding data in the supplementary material, as shown below:

image

I want to know if I can let SpaceGroupIrep give the BC and BCS related information within one command.

Still be that word, if thermo_pw outputs the LGIR directly, there is no need to develop the tool qeirreps.

I appreciate your verification and confirmation again.

goodluck1982 commented 2 years ago

I want to know if I can let SpaceGroupIrep give the BC and BCS related information within one command.

Of course you can.

showKptBCStoBC[73]
showKptBCStoBC[73,"b"]
showKptBCStoBC[73,"c"]

showKrepBCStoBC[73]
showKrepBCStoBC[73,"b"]
showKrepBCStoBC[73,"DSG"->True]
showKrepBCStoBC[73,"b","DSG"->True]
...

See sec.9 of the paper.

hongyi-zhao commented 2 years ago

If I understand correctly, it can obtain the information of wavevector star groups internally, at least to some extent. Please correct me if I'm wrong.

There is no concept called "wavevector star group". There are only "wavevector group" and "wavevector star".

BTW, I'm not sure if you have noticed the comment I posted here about the so-called wave vector substar group:

OTOH, I also noticed the paper Wave vector substar group in reciprocal lattice space and its representation, which defined the wave vector substar group as follows:

image

I'm not sure if you've had proper research and consideration in this regard.

goodluck1982 commented 2 years ago

BTW, I'm not sure if you have noticed the comment I posted here about the so-called wave vector substar group:

OTOH, I also noticed the paper Wave vector substar group in reciprocal lattice space and its representation, which defined the wave vector substar group as follows: I'm not sure if you've had proper research and consideration in this regard.

The so-called wave vector substar group is a new concept aiming to study symmetry breaking and phase transition as its authors claim. I have not researched in this field.