Class SymmetryOperation


  • public class SymmetryOperation
    extends javajs.util.M4
    • Constructor Summary

      Constructors 
      Constructor Description
      SymmetryOperation​(SymmetryOperation op, javajs.util.P3[] atoms, int atomIndex, int countOrId, boolean doNormalize)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) static float approxF​(float f)  
      private static javajs.util.M4 div12​(javajs.util.M4 op)  
      (package private) void doFinalize()  
      (package private) String dumpInfo()  
      (package private) static String dumpSeitz​(javajs.util.M4 s, boolean isCanonical)  
      private static String fc​(float x)  
      (package private) static String fcoord​(javajs.util.T3 p)  
      (package private) String fixMagneticXYZ​(javajs.util.M4 m, String xyz, boolean addMag)  
      (package private) static String fortyEighthsOf​(float n48ths)  
      (package private) javajs.util.V3 getCentering()
      assumption here is that these are in order of sets, as in ITA
      Map<String,​Object> getInfo()  
      (package private) float getMagneticOp()
      Magnetic spin is a pseudo (or "axial") vector.
      (package private) 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
      static javajs.util.M4 getMatrixFromXYZ​(String xyz)  
      (package private) String getXyz​(boolean normalized)  
      static String getXYZFromMatrix​(javajs.util.M4 mat, boolean is12ths, boolean allPositive, boolean halfOrLess)  
      (package private) static String getXYZFromRsVs​(javajs.util.Matrix rs, javajs.util.Matrix vs, boolean is12ths)  
      (package private) static void newPoint​(javajs.util.M4 m, javajs.util.P3 atom1, javajs.util.P3 atom2, int x, int y, int z)  
      private static float normalize48ths​(float iValue, boolean doNormalize)  
      private static float normalizeTwelfths​(float iValue, boolean doNormalize)  
      private static String plusMinus​(String strT, float x, String sx)  
      (package private) static String replaceXn​(String xyz, int n)  
      (package private) javajs.util.V3[] rotateAxes​(javajs.util.V3[] vectors, UnitCell unitcell, javajs.util.P3 ptTemp, javajs.util.M3 mTemp)  
      (package private) boolean setFromMatrix​(float[] offset, boolean isReverse)  
      private void setGamma​(boolean isReverse)
      rsvs is the superspace group rotation-translation matrix.
      private void setMatrix​(boolean isReverse)  
      (package private) boolean setMatrixFromXYZ​(String xyz, int modDim, boolean allowScaling)  
      private void setModDim​(int dim)  
      static void setOffset​(javajs.util.M4 m, javajs.util.P3[] atoms, int atomIndex, int count)  
      (package private) void setSigma​(String subsystemCode, javajs.util.Matrix sigma)  
      (package private) void setTimeReversal​(int magRev)
      set the time reversal, and indicate internally in xyz as appended ",m" or ",-m"
      String toString()
      Returns a string that contains the values of this Matrix4f.
      (package private) static String twelfthsOf​(float n12ths)  
      private static String xyzFraction12​(float n12ths, boolean allPositive, boolean halfOrLess)  
      private static String xyzFraction48ths​(float n48ths, boolean allPositive, boolean halfOrLess)  
      • Methods inherited from class javajs.util.M4

        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, transpose
      • Methods 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 Detail

      • xyzOriginal

        String xyzOriginal
      • 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
      • atomTest

        private static javajs.util.P3 atomTest
      • myLabels

        private String[] myLabels
      • modDim

        int modDim
      • linearRotTrans

        float[] linearRotTrans
      • rsvs

        javajs.util.Matrix rsvs
      • isBio

        boolean isBio
      • sigma

        private javajs.util.Matrix sigma
      • index

        int index
      • subsystemCode

        String subsystemCode
      • timeReversal

        int timeReversal
      • twelfths

        private static final String[] twelfths
      • fortyeigths

        private static final String[] fortyeigths
      • labelsXYZ

        static final String[] labelsXYZ
      • labelsXn

        static final String[] labelsXn
      • labelsXnSub

        static final String[] labelsXnSub
      • unCentered

        private boolean unCentered
      • isCenteringOp

        boolean isCenteringOp
      • magOp

        private float magOp
    • Constructor Detail

      • SymmetryOperation

        SymmetryOperation​(SymmetryOperation op,
                          javajs.util.P3[] atoms,
                          int atomIndex,
                          int countOrId,
                          boolean doNormalize)
        Parameters:
        op -
        atoms -
        atomIndex -
        countOrId -
        doNormalize -
    • Method Detail

      • setSigma

        void setSigma​(String subsystemCode,
                      javajs.util.Matrix sigma)
      • setGamma

        private void setGamma​(boolean isReverse)
        rsvs 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;
        Parameters:
        isReverse -
      • doFinalize

        void doFinalize()
      • div12

        private static javajs.util.M4 div12​(javajs.util.M4 op)
      • getXyz

        String getXyz​(boolean normalized)
      • newPoint

        static void newPoint​(javajs.util.M4 m,
                             javajs.util.P3 atom1,
                             javajs.util.P3 atom2,
                             int x,
                             int y,
                             int z)
      • dumpSeitz

        static final String dumpSeitz​(javajs.util.M4 s,
                                      boolean isCanonical)
      • setMatrixFromXYZ

        boolean setMatrixFromXYZ​(String xyz,
                                 int modDim,
                                 boolean allowScaling)
      • setModDim

        private void setModDim​(int dim)
      • setMatrix

        private void setMatrix​(boolean isReverse)
      • setFromMatrix

        boolean setFromMatrix​(float[] offset,
                              boolean isReverse)
      • getMatrixFromXYZ

        public static javajs.util.M4 getMatrixFromXYZ​(String xyz)
      • 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

        static String replaceXn​(String xyz,
                                int n)
      • xyzFraction12

        private static final String xyzFraction12​(float n12ths,
                                                  boolean allPositive,
                                                  boolean halfOrLess)
      • xyzFraction48ths

        private static final String xyzFraction48ths​(float n48ths,
                                                     boolean allPositive,
                                                     boolean halfOrLess)
      • twelfthsOf

        static final String twelfthsOf​(float n12ths)
      • fortyEighthsOf

        static final String fortyEighthsOf​(float n48ths)
      • normalizeTwelfths

        private static float normalizeTwelfths​(float iValue,
                                               boolean doNormalize)
      • normalize48ths

        private static float normalize48ths​(float iValue,
                                            boolean doNormalize)
      • getXYZFromMatrix

        public static final String getXYZFromMatrix​(javajs.util.M4 mat,
                                                    boolean is12ths,
                                                    boolean allPositive,
                                                    boolean halfOrLess)
      • setOffset

        public static void setOffset​(javajs.util.M4 m,
                                     javajs.util.P3[] atoms,
                                     int atomIndex,
                                     int count)
      • rotateAxes

        javajs.util.V3[] rotateAxes​(javajs.util.V3[] vectors,
                                    UnitCell unitcell,
                                    javajs.util.P3 ptTemp,
                                    javajs.util.M3 mTemp)
      • fcoord

        static String fcoord​(javajs.util.T3 p)
      • fc

        private static String fc​(float x)
      • approxF

        static float approxF​(float f)
      • getXYZFromRsVs

        static String getXYZFromRsVs​(javajs.util.Matrix rs,
                                     javajs.util.Matrix vs,
                                     boolean is12ths)
      • toString

        public String toString()
        Description copied from class: javajs.util.M4
        Returns a string that contains the values of this Matrix4f.
        Overrides:
        toString in class javajs.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

        String fixMagneticXYZ​(javajs.util.M4 m,
                              String xyz,
                              boolean addMag)