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
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionintbooleanprotected Stringindex in cleg_settings.tab; "-" if in Jmol's list but not at ITA -- 152:_2 and 154:_2intX in X.n or X:a...protected Stringprotected intnumber of dimesions -- 2 (plane, frieze) or 3 (layer, rod, space)protected static final Stringprotected intstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringintn in X.n or 9 for X:a...intjust while SpaceGroupFinder is sortingprotected Stringstatic final intstatic final intstatic final intstatic final intstatic final intstatic final int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanaddHallOperationCheckDuplicates(M4 operation) Add a (possibly) new operation, checking for duplicates.booleanaddMagLatticeVectors(Lst<float[]> lattvecs) protected intaddOp(SymmetryOperation op, String xyz0, boolean isSpecial) protected intaddOperation(String xyz0, int opId, boolean allowScaling) voidspin space groups onlyintaddSymmetry(String xyz, int opId, boolean allowScaling) asString()static Stringadds :a,b,c;0,0,0 or ;0,0,0; does NOT change :h or :rbooleancreateCompatibleUnitCell(float[] params, float[] newParams, boolean allowSame) Create a unit cell compatible withstatic SpaceGroupcreateSpaceGroup(int desiredSpaceGroupIndex, String name, Object data, int modDim) static SpaceGroupdetermineSpaceGroupNA(String name, float[] unitCellParams) static SpaceGroupdetermineSpaceGroupNS(String name, SpaceGroup sg) dumpInfo()static SpaceGroupfindSpaceGroupFromXYZ(String xyzList) static intstatic StringgetGroupTypePrefix(int itno) static intgetImplicitSpecialGroupType(int itno) intgetIndex()static intgetMatrixOperation(int i) Get the 4x4 matrix for the kth operation.intGet the receiver's current operation count.static intgetMax(int groupType) static SpaceGroupgetNull(boolean doInit, boolean doNormalize, boolean doFinalize) static StringgetSpecialGroupName(int type) static booleanMatches Hermann-Mauguin names for special types by ignoring spaces and some special treatment for plane groups.booleanisHexagonalSG(int n, float[] params) static booleanisInRange(float itno, int groupType, boolean allowSetIndex, boolean allow300) voidvoidprotected voidvoidvoidsetMatrixOperationCount(int nOps) setSpinList(String configuration) toString()
-
Field Details
-
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:
-
specialPrefix
-
displayName
-
NEW_NO_HALL_GROUP
- See Also:
-
groupType
public int groupType -
symmetryOperations
-
itaNumber
-
itaNo
public int itaNoX in X.n or X:a... for SpaceGroupFinder sorting -
setNo
public int setNon in X.n or 9 for X:a... (152_2 and 154_2 only) -
sfIndex
public transient int sfIndexjust while SpaceGroupFinder is sorting -
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
-
-
Constructor Details
-
SpaceGroup
-
-
Method Details
-
getSpecialPrefix
- Returns:
- [p/ | f/ | l/ | r/ | ""]
-
getNull
-
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
-
setFinalOperationsSafely
public void setFinalOperationsSafely() -
setFinalOperations
protected void setFinalOperations() -
findSpaceGroupFromXYZ
-
dumpInfo
- Returns:
- detailed information
-
addOperation
-
addOp
-
determineSpaceGroupNS
-
determineSpaceGroupNA
-
toString
-
asString
-
getDisplayName
-
addMagLatticeVectors
- Parameters:
lattvecs- could be magnetic centering, in which case there is an additional lattice parameter that is time reversal- Returns:
- true if successful
-
addSpinLattice
spin space groups only- Parameters:
lstSpinFrames-mapSpinIdToUVW-
-
getMatrixOperation
Description copied from interface:HallInfo.HallReceiverGet the 4x4 matrix for the kth operation. Translations must be in 12ths.- Specified by:
getMatrixOperationin interfaceHallInfo.HallReceiver- Parameters:
i-- Returns:
- 4x4 matrix, translations in integer 12ths
-
getMatrixOperationCount
public int getMatrixOperationCount()Description copied from interface:HallInfo.HallReceiverGet the receiver's current operation count.- Specified by:
getMatrixOperationCountin interfaceHallInfo.HallReceiver- Returns:
- number of operations
-
addHallOperationCheckDuplicates
Description copied from interface:HallInfo.HallReceiverAdd a (possibly) new operation, checking for duplicates.- Specified by:
addHallOperationCheckDuplicatesin 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
-
getHMNameShort
-
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) -
hmMatches
Matches Hermann-Mauguin names for special types by ignoring spaces and some special treatment for plane groups.- Parameters:
hm- the standard name, generally with x/ if specialname- the name to check, maybe abbreviated, no spaces, no x/specialType-- Returns:
- true if matching
-
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) -
mapSpins
-
setMatrixOperationCount
public void setMatrixOperationCount(int nOps) -
setSpinList
-