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

      • applySymmetryToBonds

        private boolean applySymmetryToBonds
      • centroidPacked

        private boolean centroidPacked
      • doCentroidUnitCell

        private boolean doCentroidUnitCell
      • doNormalize

        private boolean doNormalize
      • doPackUnitCell

        private boolean doPackUnitCell
      • latticeOnly

        private boolean latticeOnly
      • trajectoryUnitCells

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

        private float[] unitCellParams
      • baseUnitCell

        private float[] baseUnitCell
      • latticeCells

        private int[] latticeCells
      • unitCellTranslations

        private javajs.util.V3[] unitCellTranslations
      • symmetryRange

        private float symmetryRange
      • packingError

        private float packingError
      • filterSymop

        private java.lang.String filterSymop
      • bondsFound

        private javajs.util.SB bondsFound
      • ndims

        private int ndims
      • firstAtom

        private int firstAtom
      • latticeOp

        private int latticeOp
      • noSymmetryCount

        private int noSymmetryCount
      • nVib

        private int nVib
      • ptTemp

        private javajs.util.P3 ptTemp
      • mTemp

        private javajs.util.M3 mTemp
      • 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
    • 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
      • setMinMax

        private void setMinMax​(int dim,
                               int kcode,
                               int maxX,
                               int maxY,
                               int maxZ)
      • trimToUnitCell

        private void trimToUnitCell​(int iAtomFirst)
      • 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 ndims,
                                    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 -