Package org.jmol.symmetry
Class SymmetryOperation
java.lang.Object
javajs.util.M34
javajs.util.M4
org.jmol.symmetry.SymmetryOperation
public class SymmetryOperation
extends javajs.util.M4
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static javajs.util.P3private javajs.util.V3(package private) intprivate static final intprivate static final intprivate boolean"normalization" is the process of adjusting symmetry operator definitions such that the center of geometry of a molecule is within the 555 unit cell for each operation.(package private) boolean(package private) boolean(package private) boolean(package private) static final String[](package private) static final String[](package private) static final String[](package private) float[]A linear array for the matrix.private float(package private) intprivate String[](package private) intprivate int(package private) javajs.util.Matrixrsvs is the superspace group rotation-translation matrix.(package private) javajs.util.Matrix(package private) String(package private) intprivate static final String[]private boolean(package private) String(package private) String(package private) StringFields inherited from class javajs.util.M4
m03, m13, m23, m30, m31, m32, m33Fields inherited from class javajs.util.M34
m00, m01, m02, m10, m11, m12, m20, m21, m22 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) static floatapproxF(float f) private static javajs.util.M4div12(javajs.util.M4 op, int divisor) (package private) void(package private) StringdumpInfo()(package private) static final StringdumpSeitz(javajs.util.M4 s, boolean isCanonical) private static Stringfc(float x) private Stringfc2(float f) Get string version of fraction when divisor == 0(package private) static Stringfcoord(javajs.util.T3 p) Get string version of fractionfcoord2(javajs.util.T3 p) private static doublefinalizeD(double m, int divisor) private static floatfinalizeF(float m, int divisor) (package private) StringfixMagneticXYZ(javajs.util.M4 m, String xyz, boolean addMag) (package private) javajs.util.V3assumption here is that these are in order of sets, as in ITAgetInfo()(package private) static Stringstatic javajs.util.Lst<javajs.util.P3>(package private) floatMagnetic spin is a pseudo (or "axial") vector.(package private) static StringgetMatrixFromString(SymmetryOperation op, String xyz, float[] linearRotTrans, boolean allowScaling) Convert the Jones-Faithful notation "x, -z+1/2, y" or "x1, x3-1/2, x2, x5+1/2, -x6+1/2, x7..." to a linear array Also allows a-b,-5a-5b,-c;0,0,0 formatstatic javajs.util.M4getMatrixFromXYZ(String xyz) (package private) StringgetXyz(boolean normalized) static final StringgetXYZFromMatrix(javajs.util.M4 mat, boolean is12ths, boolean allPositive, boolean halfOrLess) (package private) static StringgetXYZFromRsVs(javajs.util.Matrix rs, javajs.util.Matrix vs, boolean is12ths) getxyzTrans(javajs.util.P3 t) static voidnormalizeOperationToCentroid(int dim, javajs.util.M4 m, javajs.util.P3[] atoms, int atomIndex, int count) Adjust the translation for this operator so that it moves the center of mass of the full set of atoms into the cell.private static floatnormalizeTwelfths(float iValue, int divisor, boolean doNormalize) private static String(package private) static String(package private) javajs.util.V3[]rotateAxes(javajs.util.V3[] vectors, UnitCell unitcell, javajs.util.P3 ptTemp, javajs.util.M3 mTemp) private static intsetDivisor(String xyz) Sets the divisor to 0 for n/9 or n/mm(package private) booleansetFromMatrix(float[] offset, boolean isReverse) private voidsetGamma(boolean isReverse) private voidsetMatrix(boolean isReverse) (package private) booleansetMatrixFromXYZ(String xyz, int modDim, boolean allowScaling) private voidsetModDim(int dim) (package private) void(package private) voidsetTimeReversal(int magRev) set the time reversal, and indicate internally in xyz as appended ",m" or ",-m"private static final inttoDivisor(float numer, int denom) toString()Returns a string that contains the values of this Matrix4f.(package private) static final StringtwelfthsOf(float n12ths) private static final StringxyzFraction12(float n12ths, int denom, boolean allPositive, boolean halfOrLess) Methods inherited from class javajs.util.M4
add, determinant4, equals, getColumn, getElement, getRotationScale, getRow, getTranslation, hashCode, invert, mul, mul2, newA16, newM4, newMV, rotTrans, rotTrans2, round, scale, setA, setAsXYRotation, setAsXZRotation, setAsYZRotation, setColumn4, setColumnA, setElement, setIdentity, setM4, setMV, setRotationScale, setRowA, setToAA, setToM3, setTranslation, setZero, sub, transform, transform2, transposeMethods inherited from class javajs.util.M34
add33, clear33, determinant3, err, get33, getColumn33, getRow33, mul33, rotate, rotate2, set33, setAA33, setColumn33, setM33, setRow33, setXRot, setYRot, setZRot, sub33, transpose33
-
Field Details
-
xyzOriginal
String xyzOriginal -
xyzCanonical
String xyzCanonical -
xyz
String xyz -
doNormalize
private boolean doNormalize"normalization" is the process of adjusting symmetry operator definitions such that the center of geometry of a molecule is within the 555 unit cell for each operation. It is carried out when "packed" is NOT issued and the lattice is given as {i j k} or when the lattice is given as {nnn mmm 1} -
isFinalized
boolean isFinalized -
opId
private int opId -
centering
private javajs.util.V3 centering -
myLabels
-
modDim
int modDim -
linearRotTrans
float[] linearRotTransA linear array for the matrix. Note that the last value in this array may indicate 120 to indicate that the integer divisor should be 120, not 12. -
rsvs
javajs.util.Matrix rsvsrsvs is the superspace group rotation-translation matrix. It is a (3 + modDim + 1) x (3 + modDim + 1) matrix from which we can extract all necessary parts; so 4x4 = 16, 5x5 = 25, 6x6 = 36, 7x7 = 49[ [(3+modDim)*x + 1] [(3+modDim)*x + 1] [ Gamma_R [0x0] | Gamma_S [(3+modDim)*x + 1] == [0x0] Gamma_e | Gamma_d ... [0] [0] | 1 ] [0 0 0 0 0... 1] ] -
isBio
boolean isBio -
sigma
javajs.util.Matrix sigma -
number
int number -
subsystemCode
String subsystemCode -
timeReversal
int timeReversal -
unCentered
private boolean unCentered -
isCenteringOp
boolean isCenteringOp -
magOp
private float magOp -
divisor
int divisor -
DIVISOR_MASK
private static final int DIVISOR_MASK- See Also:
-
DIVISOR_OFFSET
private static final int DIVISOR_OFFSET- See Also:
-
twelfths
-
labelsXYZ
-
labelsXn
-
labelsXnSub
-
info
-
atomTest
static javajs.util.P3 atomTest
-
-
Constructor Details
-
SymmetryOperation
SymmetryOperation(SymmetryOperation op, int id, boolean doNormalize) - Parameters:
op- operation to clone or nullid- opId for this operation; ignored if cloningdoNormalize-
-
-
Method Details
-
setSigma
-
setGamma
private void setGamma(boolean isReverse) -
doFinalize
void doFinalize() -
div12
private static javajs.util.M4 div12(javajs.util.M4 op, int divisor) -
finalizeF
private static float finalizeF(float m, int divisor) -
finalizeD
private static double finalizeD(double m, int divisor) -
getXyz
-
getxyzTrans
-
dumpInfo
String dumpInfo() -
dumpSeitz
-
setMatrixFromXYZ
-
setDivisor
Sets the divisor to 0 for n/9 or n/mm- Parameters:
xyz-- Returns:
- 0 or 12
-
setModDim
private void setModDim(int dim) -
setMatrix
private void setMatrix(boolean isReverse) -
setFromMatrix
boolean setFromMatrix(float[] offset, boolean isReverse) -
getMatrixFromXYZ
-
getJmolCanonicalXYZ
-
getMatrixFromString
static String getMatrixFromString(SymmetryOperation op, String xyz, float[] linearRotTrans, boolean allowScaling) Convert the Jones-Faithful notation "x, -z+1/2, y" or "x1, x3-1/2, x2, x5+1/2, -x6+1/2, x7..." to a linear array Also allows a-b,-5a-5b,-c;0,0,0 format- Parameters:
op-xyz-linearRotTrans-allowScaling-- Returns:
- canonized Jones-Faithful string
-
replaceXn
-
toDivisor
private static final int toDivisor(float numer, int denom) -
xyzFraction12
private static final String xyzFraction12(float n12ths, int denom, boolean allPositive, boolean halfOrLess) -
twelfthsOf
-
plusMinus
-
normalizeTwelfths
private static float normalizeTwelfths(float iValue, int divisor, boolean doNormalize) -
getXYZFromMatrix
public static final String getXYZFromMatrix(javajs.util.M4 mat, boolean is12ths, boolean allPositive, boolean halfOrLess) -
rotateAxes
javajs.util.V3[] rotateAxes(javajs.util.V3[] vectors, UnitCell unitcell, javajs.util.P3 ptTemp, javajs.util.M3 mTemp) -
fcoord2
-
fc2
Get string version of fraction when divisor == 0- Parameters:
f-- Returns:
- "1/2" for example
-
fcoord
Get string version of fraction- Parameters:
p-- Returns:
- "1/2" for example
-
fc
-
approxF
static float approxF(float f) -
getXYZFromRsVs
-
toString
Description copied from class:javajs.util.M4Returns a string that contains the values of this Matrix4f.- Overrides:
toStringin classjavajs.util.M4- Returns:
- the String representation
-
getMagneticOp
float getMagneticOp()Magnetic spin is a pseudo (or "axial") vector. This means that it acts as a rotation, not a vector. When a rotation about x is passed through the mirror plane xz, it is reversed; when it is passed through the mirror plane yz, it is not reversed -- exactly opposite what you would imagine from a standard "polar" vector. For example, a vector perpendicular to a plane of symmetry (det=-1) will be flipped (m=1), while a vector parallel to that plane will not be flipped (m=-1) In addition, magnetic spin operations have a flag m=1 or m=-1 (m or -m) that indicates how the vector quantity changes with symmetry. This is called "time reversal" and stored here as timeReversal. To apply, timeReversal must be multiplied by the 3x3 determinant, which is always 1 (standard rotation) or -1 (rotation-inversion). This we store as magOp. See https://en.wikipedia.org/wiki/Pseudovector- Returns:
- +1, -1, or 0
-
setTimeReversal
void setTimeReversal(int magRev) set the time reversal, and indicate internally in xyz as appended ",m" or ",-m"- Parameters:
magRev-
-
getCentering
javajs.util.V3 getCentering()assumption here is that these are in order of sets, as in ITA- Returns:
- centering
-
fixMagneticXYZ
-
getInfo
-
normalizeOperationToCentroid
public static void normalizeOperationToCentroid(int dim, javajs.util.M4 m, javajs.util.P3[] atoms, int atomIndex, int count) Adjust the translation for this operator so that it moves the center of mass of the full set of atoms into the cell.- Parameters:
dim-m-atoms-atomIndex- first indexcount- number of atoms
-
getLatticeCentering
-