Class XtalSymmetry

java.lang.Object
org.jmol.adapter.smarter.XtalSymmetry

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

    • PARTICLE_NONE

      private static final int PARTICLE_NONE
      See Also:
    • PARTICLE_CHAIN

      private static final int PARTICLE_CHAIN
      See Also:
    • PARTICLE_SYMOP

      private static final int PARTICLE_SYMOP
      See Also:
    • MAX_INTERCHAIN_BOND_2

      private static final float MAX_INTERCHAIN_BOND_2
      See Also:
    • acr

    • asc

      private AtomSetCollection asc
    • baseSymmetry

      private SymmetryInterface baseSymmetry
    • sym2

      private SymmetryInterface sym2
    • 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 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
    • symmetry

      public SymmetryInterface symmetry
    • disorderMap

      private Map<Integer,Character> disorderMap
    • disorderMapMax

      private int disorderMapMax
    • mident

      static javajs.util.M4 mident
  • Constructor Details

    • XtalSymmetry

      public XtalSymmetry()
  • Method Details

    • set

    • getSymmetry

      public SymmetryInterface getSymmetry()
    • setSymmetry

      SymmetryInterface setSymmetry(SymmetryInterface symmetry)
    • 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(String xyz, boolean andSetLattice)
    • setLatticeParameter

      public void setLatticeParameter(int latt)
    • applySymmetryFromReader

      SymmetryInterface applySymmetryFromReader(SymmetryInterface readerSymmetry) throws Exception
      Throws:
      Exception
    • setSpaceGroupFrom

      public void setSpaceGroupFrom(SymmetryInterface readerSymmetry)
    • setAtomSetSpaceGroupName

      private void setAtomSetSpaceGroupName(String spaceGroupName)
    • applySymmetryLattice

      private void applySymmetryLattice() throws Exception
      Throws:
      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)
    • removePacking

      public boolean removePacking(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 Exception
      Parameters:
      ms - modulated structure interface
      bsAtoms - relating to supercells
      Throws:
      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 Exception
      Throws:
      Exception
    • duplicateAtomProperties

      private void duplicateAtomProperties(int nTimes)
    • finalizeSymmetry

      private void finalizeSymmetry(SymmetryInterface symmetry)
    • setSymmetryOps

      private void setSymmetryOps()
    • getOverallSpan

      public javajs.util.T3 getOverallSpan()
    • applySymmetryBio

      public void applySymmetryBio(Map<String,Object> thisBiomolecule, boolean applySymmetryToBonds, String filter)
    • reset

      private void reset()
    • addRotatedTensor

      public Tensor addRotatedTensor(Atom a, Tensor t, int iSym, boolean reset, SymmetryInterface symmetry)
    • 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 -