Class XtalSymmetry


  • public class XtalSymmetry
    extends java.lang.Object
    A class used by AtomSetCollection for building the symmetry of a model and generating new atoms based on that symmetry.
    • Field Detail

      • unitCellParams

        private float[] unitCellParams
      • baseUnitCell

        private float[] baseUnitCell
      • symmetryRange

        private float symmetryRange
      • doCentroidUnitCell

        private boolean doCentroidUnitCell
      • centroidPacked

        private boolean centroidPacked
      • packingError

        private float packingError
      • filterSymop

        private java.lang.String filterSymop
      • applySymmetryToBonds

        private boolean applySymmetryToBonds
      • latticeCells

        private int[] latticeCells
      • trajectoryUnitCells

        private javajs.util.Lst<float[]> trajectoryUnitCells
      • doNormalize

        private boolean doNormalize
      • doPackUnitCell

        private boolean doPackUnitCell
      • rminx

        private float rminx
        range minima and maxima -- also usedf for cartesians comparisons
      • rminy

        private float rminy
        range minima and maxima -- also usedf for cartesians comparisons
      • rminz

        private float rminz
        range minima and maxima -- also usedf for cartesians comparisons
      • rmaxx

        private float rmaxx
        range minima and maxima -- also usedf for cartesians comparisons
      • rmaxy

        private float rmaxy
        range minima and maxima -- also usedf for cartesians comparisons
      • rmaxz

        private float rmaxz
        range minima and maxima -- also usedf for cartesians comparisons
      • ptOffset

        private final javajs.util.P3 ptOffset
      • minXYZ

        private javajs.util.P3i minXYZ
      • maxXYZ

        private javajs.util.P3i maxXYZ
      • minXYZ0

        private javajs.util.P3 minXYZ0
      • maxXYZ0

        private javajs.util.P3 maxXYZ0
      • checkAll

        private boolean checkAll
      • bondCount0

        private int bondCount0
      • dtype

        private int dtype
      • unitCellTranslations

        private javajs.util.V3[] unitCellTranslations
      • latticeOp

        private int latticeOp
      • latticeOnly

        private boolean latticeOnly
      • noSymmetryCount

        private int noSymmetryCount
      • firstAtom

        private int firstAtom
      • ptTemp

        private javajs.util.P3 ptTemp
      • mTemp

        private javajs.util.M3 mTemp
      • nVib

        private int nVib
    • Constructor Detail

      • XtalSymmetry

        public XtalSymmetry()
    • Method Detail

      • setSymmetryRange

        private void setSymmetryRange​(float factor)
      • setLatticeCells

        private void setLatticeCells()
      • setUnitCell

        private void setUnitCell​(float[] info,
                                 javajs.util.M3 matUnitCellOrientation,
                                 javajs.util.P3 unitCellOffset)
      • addSpaceGroupOperation

        int addSpaceGroupOperation​(java.lang.String xyz,
                                   boolean andSetLattice)
      • setLatticeParameter

        public void setLatticeParameter​(int latt)
      • setSpaceGroupFrom

        public void setSpaceGroupFrom​(SymmetryInterface readerSymmetry)
      • setAtomSetSpaceGroupName

        private void setAtomSetSpaceGroupName​(java.lang.String spaceGroupName)
      • applySymmetryLattice

        private void applySymmetryLattice()
                                   throws java.lang.Exception
        Throws:
        java.lang.Exception
      • updateBSAtoms

        private javajs.util.BS updateBSAtoms()
        Update asc.bsAtoms to include all atoms, or at least all atoms that are still viable from the reader.
        Returns:
        updated BS
      • adjustRangeMinMax

        private void adjustRangeMinMax​(javajs.util.T3[] oabc)
      • setSymmetryMinMax

        private void setSymmetryMinMax​(javajs.util.P3 c)
      • isWithinCell

        public boolean isWithinCell​(int dtype,
                                    javajs.util.P3 pt,
                                    float minX,
                                    float maxX,
                                    float minY,
                                    float maxY,
                                    float minZ,
                                    float maxZ,
                                    float slop)
      • applyAllSymmetry

        private void applyAllSymmetry​(MSInterface ms,
                                      javajs.util.BS bsAtoms)
                               throws java.lang.Exception
        Parameters:
        ms - modulated structure interface
        bsAtoms - relating to supercells
        Throws:
        java.lang.Exception
      • symmetryAddAtoms

        private int symmetryAddAtoms​(int transX,
                                     int transY,
                                     int transZ,
                                     int baseCount,
                                     int pt,
                                     int iCellOpPt,
                                     javajs.util.P3[] cartesians,
                                     MSInterface ms,
                                     javajs.util.BS excludedOps,
                                     int[] atomMap)
                              throws java.lang.Exception
        Throws:
        java.lang.Exception
      • duplicateAtomProperties

        private void duplicateAtomProperties​(int nTimes)
      • setSymmetryOps

        private void setSymmetryOps()
      • getOverallSpan

        public javajs.util.T3 getOverallSpan()
      • applySymmetryBio

        public void applySymmetryBio​(java.util.Map<java.lang.String,​java.lang.Object> thisBiomolecule,
                                     boolean applySymmetryToBonds,
                                     java.lang.String filter)
      • reset

        private void reset()
      • setTensors

        void setTensors()
      • setTimeReversal

        public void setTimeReversal​(int op,
                                    int timeRev)
      • setSpinVectors

        public int setSpinVectors()
      • scaleFractionalVibs

        public void scaleFractionalVibs()
        magCIF files have moments expressed as Bohr magnetons along the cryrstallographic axes. These have to be "fractionalized" in order to be properly handled by symmetry operations, then, in the end, turned into Cartesians. It is not clear to me at all how this would be handled if there are subsystems. This method must be run PRIOR to applying symmetry and thus prior to creation of modulation sets.
      • getBaseSymmetry

        public SymmetryInterface getBaseSymmetry()
        Get the symmetry that was in place prior to any supercell business
        Returns:
        base symmetry
      • finalizeUnitCell

        public void finalizeUnitCell​(javajs.util.P3 ptSupercell)
        Ensure that ModelLoader sets up the supercell unit cell.
        Parameters:
        ptSupercell -