Package org.jmol.symmetry
Class SpaceGroup
java.lang.Object
org.jmol.symmetry.SpaceGroup
- All Implemented Interfaces:
Cloneable
,HallInfo.HallReceiver
- Direct Known Subclasses:
SpecialGroup
A general class to deal with Hermann-Mauguin or Hall names
Bob Hanson 9/2006
references: International Tables for Crystallography Vol. A. (2002)
http://www.iucr.org/iucr-top/cif/cifdic_html/1/cif_core.dic/Ispace_group_symop_operation_xyz.html
http://www.iucr.org/iucr-top/cif/cifdic_html/1/cif_core.dic/Isymmetry_equiv_pos_as_xyz.html
Hall symbols:
https://cci.lbl.gov/sginfo/hall_symbols.html
and
https://cci.lbl.gov/cctbx/explore_symmetry.html
(-)L [N_A^T_1] [N_A^T_2] ... [N_A^T_P] V(Nx Ny Nz)
lattice types S and T are not supported here
data table is from Syd Hall, private email, 9/4/2006,
amended using * to indicate nonstandard H-M symbols or full names
amended 2024.03.24 to add several ITA settings; full set of ITA settings are now encoded.
NEVER ACCESS THESE METHODS DIRECTLY! ONLY THROUGH CLASS Symmetry
-
Field Summary
FieldsModifier and TypeFieldDescriptionint
boolean
protected String
index in cleg_settings.tab; "-" if in Jmol's list but not at ITA -- 152:_2 and 154:_2protected String
protected int
number of dimesions -- 2 (plane, frieze) or 3 (layer, rod, space)protected static final String
protected int
static final String
static final String
static final String
static final String
static final String
protected String
static final int
static final int
static final int
static final int
static final int
static final int
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
addHallOperationCheckDuplicates
(M4 operation) Add a (possibly) new operation, checking for duplicates.boolean
addLatticeVectors
(Lst<float[]> lattvecs) protected int
addOperation
(String xyz0, int opId, boolean allowScaling) int
addSymmetry
(String xyz, int opId, boolean allowScaling) asString()
static String
adds :a,b,c;0,0,0 or ;0,0,0; does NOT change :h or :rboolean
createCompatibleUnitCell
(float[] params, float[] newParams, boolean allowSame) Create a unit cell compatible withstatic SpaceGroup
createSpaceGroup
(int desiredSpaceGroupIndex, String name, Object data, int modDim) dumpInfo()
static SpaceGroup
findSpaceGroupFromXYZ
(String xyzList) static int
static String
getGroupTypePrefix
(int itno) static int
getImplicitSpecialGroupType
(int itno) int
getIndex()
static int
getMatrixOperation
(int i) Get the 4x4 matrix for the kth operation.int
Get the receiver's current operation count.static int
getMax
(int groupType) static String
getSpecialGroupName
(int type) static boolean
Matches Hermann-Mauguin names for special types by ignoring spaces and some special treatment for plane groups.boolean
isHexagonalSG
(int n, float[] params) static boolean
isInRange
(float itno, int groupType, boolean allowSetIndex, boolean allow300) void
toString()
-
Field Details
-
specialPrefix
-
NEW_NO_HALL_GROUP
- See Also:
-
groupType
public int groupType -
matrixOperations
-
itaNumber
-
itaIndex
index in cleg_settings.tab; "-" if in Jmol's list but not at ITA -- 152:_2 and 154:_2 -
nDim
protected int nDimnumber of dimesions -- 2 (plane, frieze) or 3 (layer, rod, space) -
periodicity
protected int periodicity -
isSSG
public boolean isSSG -
displayName
-
PREFIX_FRIEZE
- See Also:
-
PREFIX_ROD
- See Also:
-
PREFIX_LAYER
- See Also:
-
PREFIX_PLANE
- See Also:
-
PREFIX_SPACE
- See Also:
-
TYPE_FRIEZE
public static final int TYPE_FRIEZE- See Also:
-
TYPE_ROD
public static final int TYPE_ROD- See Also:
-
TYPE_LAYER
public static final int TYPE_LAYER- See Also:
-
TYPE_PLANE
public static final int TYPE_PLANE- See Also:
-
TYPE_SPACE
public static final int TYPE_SPACE- See Also:
-
TYPE_INVALID
public static final int TYPE_INVALID- See Also:
-
-
Constructor Details
-
SpaceGroup
-
-
Method Details
-
createSpaceGroup
public static SpaceGroup createSpaceGroup(int desiredSpaceGroupIndex, String name, Object data, int modDim) -
getItaIndex
-
getIndex
public int getIndex() -
setClegId
-
getClegId
-
addSymmetry
- Parameters:
xyz
-opId
- generally 0; -1 for subsystemsallowScaling
- generally false; true for subsystems- Returns:
- index
-
findSpaceGroupFromXYZ
-
dumpInfo
- Returns:
- detailed information
-
addOperation
-
toString
-
asString
-
getDisplayName
-
addLatticeVectors
- Parameters:
lattvecs
- could be magnetic centering, in which case there is an additional lattice parameter that is time reversal- Returns:
- true if successful
-
getMatrixOperation
Description copied from interface:HallInfo.HallReceiver
Get the 4x4 matrix for the kth operation. Translations must be in 12ths.- Specified by:
getMatrixOperation
in interfaceHallInfo.HallReceiver
- Parameters:
i
-- Returns:
- 4x4 matrix, translations in integer 12ths
-
getMatrixOperationCount
public int getMatrixOperationCount()Description copied from interface:HallInfo.HallReceiver
Get the receiver's current operation count.- Specified by:
getMatrixOperationCount
in interfaceHallInfo.HallReceiver
- Returns:
- number of operations
-
addHallOperationCheckDuplicates
Description copied from interface:HallInfo.HallReceiver
Add a (possibly) new operation, checking for duplicates.- Specified by:
addHallOperationCheckDuplicates
in interfaceHallInfo.HallReceiver
- Parameters:
operation
-- Returns:
- true if added, false if duplicate
-
canonicalizeCleg
adds :a,b,c;0,0,0 or ;0,0,0; does NOT change :h or :r- Parameters:
t
-- Returns:
- full CLEG
-
getHMName
-
getITNo
-
isInRange
public static boolean isInRange(float itno, int groupType, boolean allowSetIndex, boolean allow300) -
getMax
public static int getMax(int groupType) -
getGroupTypePrefix
-
getExplicitSpecialGroupType
-
getSpecialGroupName
-
getImplicitSpecialGroupType
public static int getImplicitSpecialGroupType(int itno) -
hmEquals
Matches Hermann-Mauguin names for special types by ignoring spaces and some special treatment for plane groups.- Parameters:
hm
-name
-type
-- Returns:
- true if equivalent
-
createCompatibleUnitCell
public boolean createCompatibleUnitCell(float[] params, float[] newParams, boolean allowSame) Create a unit cell compatible with- Parameters:
params
-newParams
-allowSame
- true to allow same-distance a,b,c for lower-symmetry sg- Returns:
- true if changes have occurred
-
isHexagonalSG
public boolean isHexagonalSG(int n, float[] params)
-