Skip to content

CrystKit is a GAP package designed for the manipulation and analysis of crystallographic groups.

License

Notifications You must be signed in to change notification settings

hongyi-zhao/CrystKit

Repository files navigation

The GAP package CrystKit

Description

CrystKit is a GAP package designed to manipulate and analyze crystallographic groups. It offers a variety of functionalities, including space group simplification on any basis, minimal generating set computation for solvable space groups, isomorphism detection between space groups, enantiomorphic pair existence checking, efficient orbit computation of the system of a space group's nonprimitive translation vector (SNoT), see the definition 37 on page 23 here for more details and rapid identification of space groups (up to six-dimension) based on CARAT. It also encompasses the calculation of allowed orders of point groups in any dimensional space groups, aka, the crystallographic restriction theorem in a given dimension, and conjugacy determination between two finite matrix groups based on RepnDecomp.

Main Features

Simplification of space groups represented on any basis: simplification to more simple generator forms.

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 ] ] ];
S:=AffineCrystGroupOnLeft(SGGenSet227me);
conj1:=ConjugatorSpaceGroupSimplification(S);
S1:=S^(conj1^-1);
GeneratorsOfGroup(S1);

Minimal generating set calculation for solvable space groups: e.g., identifying the minimal number of generators for 3D space group 227 as follows.

S2:=SpaceGroupOnLeftIT(3,227);
Length(GeneratorsOfGroup(S2));
minSgen:=MinimalGeneratingSetAffineCrystGroup(S2);
Length(minSgen.mgs);

Isomorphism determination between space groups represented on any basis: checking isomorphism between two space groups.

AffineIsomorphismSpaceGroups(S,S2);
S^(last^-1)=S2;

Existence check for enantiomorphic pairs in any basis represented space groups: finding the conjugator connecting its enantiomorphic partner for a given space group.

S4:=SpaceGroupOnLeftIT(3,212);
conj2:=ConjugatorSpaceGroupEnantiomorphicPartner(S4);
S5:=S4^(conj2^-1);

Efficient calculation of orbits of the space group vector system (SNoT): orbit calculation using the normalizer of the point group.

P4:=PointGroup(S4);
d:= DimensionOfMatrixGroup(S4) - 1;
norm := GeneratorsOfGroup(Normalizer(GL(d,Integers), P4)); 
orbnpg := OrbitSpaceGroupStdByNormalizerPointGroup(S4, GeneratorsOfGroup(P4), norm);

Rapid identification of space groups (up to six dimensions) based on any basis (using CARAT): quick identification method for space groups.

IdentifySpaceGroup(S4);
IdentifySpaceGroup(S5);

Allowed orders calculation for point groups in any dimensional space groups: the crystallographic restriction theorem in higher dimensions by calculating new finite orders of GLNZ.

NewFiniteOrdersOfGLNZ(2);
NewFiniteOrdersOfGLNZ(4);

Conjugacy determination between two finite matrix Groups (using RepnDecomp): e.g., determines if two point groups are conjugate.

P:=PointGroup(S);;
S6:=SpaceGroupOnLeftIT(3,222);;
P6:=PointGroup(S6);;
ConjugatorMatrixGroups(P, P6); 

Install

Clone this repository and load with the GAP command:

gap> LoadPackage( "CrystKit" ); 

Citing

If you use this tool, I kindly ask citing as follows to properly acknowledge the developer's contribution: Zhao, H. (2024). Crystkit. Zenodo. https://doi.org/10.5281/zenodo.10584582.

Contact

For bug reports, suggestions and other comments please use the issue tracker on the GitHub page of the package:

https://github.com/hongyi-zhao/CrystKit/issues

For further information, contact us at: hongshengzhao@xpc.edu.cn or hongyi.zhao@gmail.com.

About

CrystKit is a GAP package designed for the manipulation and analysis of crystallographic groups.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages