Giter Site home page Giter Site logo

spglib / spgrep Goto Github PK

View Code? Open in Web Editor NEW
44.0 3.0 4.0 11.82 MB

On-the-fly generator of space-group irreducible representations

Home Page: https://spglib.github.io/spgrep/

License: BSD 3-Clause "New" or "Revised" License

Python 100.00%
crystallography group-theory irreducible-representations materials-science python representation-theory

spgrep's People

Contributors

danielskatz avatar dependabot[bot] avatar lan496 avatar pre-commit-ci[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

spgrep's Issues

Interface with DFT codes to calculate/analyze the irreducible representations of electronic states.

It's well known that one of the most important applications of group representation theory in quantum mechanics is the analysis of irreducible representation of wave function of the system under study. Indisputably, it's a very meaningful thing to interface this package with other DFT codes or their auxiliary analysis tools, say, py4vasp, so that we can calculate and analysis the irreducible representations of electronic states based on the result of DFT calculation.

See here for some related discussion.

Regards,
Zhao

Some confusion on the description in the joss paper of this project.

In the joss paper of this project, I noticed the following description:

image

  1. You said "Although these packages do not rely on tabulations of irreps"

According to my understanding, the irvsp program also relies on table lookups. More specifically, it depends on the necessary information from the appropriate BCS database to execute its tasks, and its calculations are restricted to trace information exclusively.

  1. You said "spgrep provides unique irreps for given space groups"

If the basis/wave function is specified first, then the representation matrix is completely determined; however, if the representation matrix is given first, the basis/wave function is naturally not unique.

So, I'm still unclear about what you're trying to express by saying "spgrep provides unique irreps for given space groups". It's unclear what you're referring to.

The representation matrix you provided naturally corresponds to a specific basis, and after changing the basis, it simply changes to an equivalent representation too.

  1. What's "a deterministic symmetry-adapted basis" and why must it be unique?

Regards,
Zhao

Current implementation may return wrong number of symmetrized tensors for higher rank...

I noticed the following note in the source code:

Note
----
Current implementation may return wrong number of symmetrized tensors for higher rank...
"""

Can you give an example to illustrate this situation? How large a rank will trigger this problem, and is there a way to deal with it, such as performing some sort of decomposition to lower the rank?

Regards,
Zhao

Identify a possible isomorphism between two space groups.

Based on the generators of space group 141 listed here, the following GAP checking can be performed:

gap> gensSGITA141O1:=[
>  [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0,0,0,1]],
>  [[-1, 0, 0, 1/2], [0, -1, 0, 1/2], [0, 0, 1, 1/2], [0,0,0, 1]],
>  [[0, -1, 0, 0], [1, 0, 0, 1/2], [0, 0, 1, 1/4], [0,0,0, 1]],
>  [[-1, 0, 0, 1/2], [0,  1, 0,  0], [0,  0,  -1, 3/4], [0,0,0, 1]],
>  [[-1, 0, 0, 0], [0, -1, 0, 1/2], [0, 0, -1, 1/4], [0,0,0, 1]],
>  [[1, 0, 0, 1/2], [0, 1, 0, 1/2], [0, 0, 1, 1/2], [0,0,0, 1]]
> ];;
gap> gensSGITA141O2:=[
>  [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0,0,0, 1]],
>  [[-1, 0, 0, 1/2], [0, -1, 0, 0], [0, 0, 1, 1/2], [0,0,0, 1]],
>  [[0, -1, 0, 1/4], [1, 0, 0, 3/4], [0, 0, 1, 1/4], [0,0,0, 1]],
>  [[-1, 0, 0, 1/2], [0, 1, 0, 0], [0, 0, -1, 1/2], [0,0,0, 1]],
>  [[-1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0,0,0, 1]],
>  [[1, 0, 0, 1/2], [0, 1, 0, 1/2], [0, 0, 1, 1/2], [0,0,0, 1]]
> ];;
gap> SGITA141O1:=AffineCrystGroupOnLeft(gensSGITA141O1);
<matrix group with 6 generators>
gap> SGITA141O2:=AffineCrystGroupOnLeft(gensSGITA141O2);
<matrix group with 6 generators>
gap> ConjugatorSpaceGroups(SGITA141O1, SGITA141O2);
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 1/4 ], [ 0, 0, 1, 7/8 ], [ 0, 0, 0, 1 ] ]

Can the package perform the above or similar work to identify a possible isomorphism between two space groups?

Regards,
Zhao

Get the irreducible representations for a space-group represented on non-standard basis.

See my following example:

gap> SGGenSet227me;
[ [ [ 0, -1, 0, 1/2 ], [ 0, 0, -1, 1/2 ], [ -1, 0, 0, 1/2 ], [ 0, 0, 0, 1 ] ], [ [ -15/4, 29/4, -15/4, -15/16 ], [ -33/8, 55/8, -25/8, -25/32 ], 
      [ -25/8, 55/8, -33/8, -41/32 ], [ 0, 0, 0, 1 ] ] ]
gap> S1:=SpaceGroupOnLeftIT(3,227);
SpaceGroupOnLeftIT(3,227,'2')
gap> S2:=AffineCrystGroupOnLeft(SGGenSet227me);
<matrix group with 2 generators>
gap> conj:=AffineIsomorphismSpaceGroups(S2, S1);
[ [ 5/2, 3, 5/2, -5 ], [ 5/2, 5/2, 3, -21/4 ], [ 3, 5/2, 5/2, -5 ], [ 0, 0, 0, 1 ] ]
gap> S2^(conj^-1)=S1;
true

Here, S1 is the 3d space group 227 given in ITA, then how can I use your package to compute the irreducible representations of S2?

Regards,
Zhao

About the k-point used in the document example.

Here gives the following example:

from spgrep import get_spacegroup_irreps
from spgrep.representation import get_character

# Rutile structure (https://materialsproject.org/materials/mp-2657/)
# P4_2/mnm (No. 136)
a = 4.603
c = 2.969
x_4f = 0.3046
lattice = [
    [a, 0, 0],
    [0, a, 0],
    [0, 0, c],
]
positions = [
    [0, 0, 0],  # Ti(2a)
    [0.5, 0.5, 0.5],  # Ti(2a)
    [x_4f, x_4f, 0],  # O(4f)
    [-x_4f, -x_4f, 0],  # O(4f)
    [-x_4f + 0.5, x_4f + 0.5, 0.5],  # O(4f)
    [x_4f + 0.5, -x_4f + 0.5, 0.5],  # O(4f)
]
numbers = [0, 0, 1, 1, 1, 1]

kpoint = [0.5, 0, 0]  # X point
irreps, rotations, translations, mapping_little_group = get_spacegroup_irreps(
    lattice, positions, numbers, kpoint
)

# Symmetry operations by spglib
assert len(rotations) == 16
assert len(translations) == 16

# At X point, the little co-group is isomorphic to mmm (order=8)
assert len(mapping_little_group) == 8
print(mapping_little_group)  # [ 0,  1,  4,  5,  8,  9, 12, 13]

# Two two-dimensional irreps
for irrep in irreps:
    print(get_character(irrep))
# [2.+0.j 0.+0.j 0.+0.j 2.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]
# [2.+0.j 0.+0.j 0.+0.j -2.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]

In this example, the space group is P4_2/mnm (No. 136), and the selected k point is [0.5, 0, 0] (X point). I checked this information from BCS KVEC's convention represented here, as shown below:

image

image

As you can see, the two coordinates given above are not consistent. Any hints for this problem?

Regards,
Zhao

Construct the little group based on Wyckoff positions.

According to my understanding, the little group in nature is the site symmetry group in reciprocal space. On the other hand, the site symmetry group and the Wyckoff position has the following relationship:

In crystallography, a Wyckoff position is a point belonging to a set of points for which site symmetry groups are conjugate subgroups of the space group.

So, I think it should be possible to build/construct the little group based on Wyckoff positions.

Any hints/comments/corrections on this idea will be appreciated.

N.B.: I also noticed the related - to some extent, if not all - application here.

Regards,
Zhao

Calculate topological invariants to facilitate topological material analysis.

In recent years, topological materials science is a great revolutionary progress in the field of materials science, which is closely related to group theory, in which, a typical representative emerging discipline is Topological Quantum Chemistry. So, add some related features are also intriguing.

Related literature and studies:

https://doi.org/10.1038/nature23268
https://doi.org/10.1103/PhysRevB.102.115117
https://github.com/oashour/AbInitioTopo.jl

Regards,
Zhao

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.