spglib / spgrep Goto Github PK
View Code? Open in Web Editor NEWOn-the-fly generator of space-group irreducible representations
Home Page: https://spglib.github.io/spgrep/
License: BSD 3-Clause "New" or "Revised" License
On-the-fly generator of space-group irreducible representations
Home Page: https://spglib.github.io/spgrep/
License: BSD 3-Clause "New" or "Revised" License
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
In the joss paper of this project, I noticed the following description:
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.
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.
Regards,
Zhao
I noticed the following note in the source code:
Lines 88 to 91 in 0ecee48
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
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
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
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:
As you can see, the two coordinates given above are not consistent. Any hints for this problem?
Regards,
Zhao
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
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
Hi there, I'm reviewing this repository for JOSS. Everything else looks great to me, but I am unable to run examples/lattice_vibration.py
as the file phonopy_mp-2998.yaml.xz
is missing, and I couldn't find it in the raw data from http://phonondb.mtl.kyoto-u.ac.jp/ph20180417/d002/mp-2998.html. Is this an oversight, or am I missing something?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.