Package org.jmol.util

Class Tensor

java.lang.Object
org.jmol.util.Tensor

public class Tensor extends Object
Author:
Bob Hanson hansonr@stolaf.edu 6/30/2013, Simone Sturniolo
  • Field Details

    • ADP_FACTOR

      private static final float ADP_FACTOR
    • MAGNETIC_SUSCEPTIBILITY_FACTOR

      private static final float MAGNETIC_SUSCEPTIBILITY_FACTOR
      See Also:
    • INTERACTION_FACTOR

      private static final float INTERACTION_FACTOR
      See Also:
    • CHEMICAL_SHIFT_ANISOTROPY_FACTOR

      private static final float CHEMICAL_SHIFT_ANISOTROPY_FACTOR
      See Also:
    • tSort

      private static EigenSort tSort
    • id

      public String id
    • type

      public String type
    • iType

      public int iType
    • KNOWN_TYPES

      private static final String KNOWN_TYPES
      See Also:
    • TYPE_OTHER

      public static final int TYPE_OTHER
      See Also:
    • TYPE_ISO

      public static final int TYPE_ISO
      See Also:
    • TYPE_ADP

      public static final int TYPE_ADP
      See Also:
    • TYPE_TLS_U

      public static final int TYPE_TLS_U
      See Also:
    • TYPE_TLS_R

      public static final int TYPE_TLS_R
      See Also:
    • TYPE_MS

      public static final int TYPE_MS
      See Also:
    • TYPE_EFG

      public static final int TYPE_EFG
      See Also:
    • TYPE_ISC

      public static final int TYPE_ISC
      See Also:
    • TYPE_CHARGE

      public static final int TYPE_CHARGE
      See Also:
    • TYPE_QUADRUPOLE

      public static final int TYPE_QUADRUPOLE
      See Also:
    • TYPE_RAMAN

      public static final int TYPE_RAMAN
      See Also:
    • TYPE_CSA

      public static final int TYPE_CSA
      See Also:
    • asymMatrix

      public double[][] asymMatrix
    • symMatrix

      public double[][] symMatrix
    • eigenVectors

      public javajs.util.V3[] eigenVectors
    • eigenValues

      public float[] eigenValues
    • parBorU

      public float[] parBorU
    • altType

      public String altType
    • isIsotropic

      public boolean isIsotropic
    • forThermalEllipsoid

      public boolean forThermalEllipsoid
    • eigenSignMask

      public int eigenSignMask
    • typeFactor

      private float typeFactor
    • sortIso

      private boolean sortIso
    • modelIndex

      public int modelIndex
    • atomIndex1

      public int atomIndex1
    • atomIndex2

      public int atomIndex2
    • isModulated

      public boolean isModulated
    • isUnmodulated

      public boolean isUnmodulated
    • infoList

      private static final String infoList
      See Also:
  • Constructor Details

    • Tensor

      public Tensor()
      Although this constructor is public, to be a valid tensor, one must invoke one of the "setFrom" methods. These had been static, but it turns out when that is the case, then JavaScript versions cannot be modularized to omit this class along with Eigen. So the general full constructor would look something like: new Tensor().setFrom...(....)
  • Method Details

    • getType

      private static int getType(String type)
    • getInfoIndex

      private static int getInfoIndex(String infoType)
    • isFloatInfo

      public static boolean isFloatInfo(String infoType)
    • getInfo

      public Object getInfo(String infoType)
      returns an object of the specified type, including "eigenvalues", "eigenvectors", "asymmetric", "symmetric", "trace", "indices", and "type"
      Parameters:
      infoType -
      Returns:
      Object or null
    • isotropy

      public float isotropy()
      isotropy = average of eigenvalues
      Returns:
      isotropy
    • span

      public float span()
      width of the signal; |e2 - e0|
      Returns:
      unitless; >= 0
    • skew

      public float skew()
      a measure of asymmetry.
      Returns:
      range [-1, 1]
    • anisotropy

      public float anisotropy()
      anisotropy = directed distance from (center of two closest) to (the furthest)
      Returns:
      unitless number
    • reducedAnisotropy

      public float reducedAnisotropy()
      reduced anisotropy = largest difference from isotropy (may be negative)
      Returns:
      unitless number
    • asymmetry

      public float asymmetry()
      asymmetry = deviation from a symmetric tensor
      Returns:
      range [0,1]
    • copyTensor

      public Tensor copyTensor()
    • setFromAsymmetricTensor

      public Tensor setFromAsymmetricTensor(double[][] asymmetricTensor, String type, String id)
      Standard constructor for QM tensors
      Parameters:
      asymmetricTensor -
      type -
      id -
      Returns:
      this
    • setFromEigenVectors

      public Tensor setFromEigenVectors(javajs.util.T3[] eigenVectors, float[] eigenValues, String type, String id, Tensor t)
      Standard constructor for charge and iso.
      Parameters:
      eigenVectors -
      eigenValues -
      type -
      id -
      t -
      Returns:
      this
    • setFromAxes

      public Tensor setFromAxes(javajs.util.V3[] axes)
      Standard constructor for ellipsoids based on axes
      Parameters:
      axes -
      Returns:
      Tensor
    • setFromThermalEquation

      public Tensor setFromThermalEquation(double[] coefs, String id)
      standard constructor for thermal ellipsoids convention beta (see http://www.iucr.org/iucr-top/comm/cnom/adp/finrepone/finrepone.html)
      Parameters:
      coefs -
      id -
      Returns:
      this
    • setType

      public Tensor setType(String type)
      Note that type may be null here to skip type initialization and allow later setting of type; this should be used with care.
      Parameters:
      type -
      Returns:
      "this" for convenience only
    • getFactoredValue

      public float getFactoredValue(int i)
      Returns a factored eigenvalue; thermal ellipsoids use sqrt(abs(eigenvalue)) for ellipsoid axes; others use just use abs(eigenvalue); all cases get factored by typeFactor
      Parameters:
      i -
      Returns:
      factored eigenvalue
    • setAtomIndexes

      public void setAtomIndexes(int index1, int index2)
    • isSelected

      public boolean isSelected(javajs.util.BS bsSelected, int iAtom)
    • newTensorType

      private void newTensorType(javajs.util.V3[] vectors, float[] values, String type, String id)
      common processing of eigenvectors.
      Parameters:
      vectors -
      values -
      type -
      id -
    • processType

      private void processType()
      Sets typeFactor, altType, isIsotropic, forThermalEllipsoid; type "iso" changed to "" here.
    • sortAndNormalize

      private void sortAndNormalize()
      The expression: |sigma_3 - sigma_iso| >= |sigma_1 - sigma_iso| >= |sigma_2 - sigma_iso| simply sorts the values from largest to smallest or smallest to largest, depending upon the direction of the asymmetry, always setting the last value to be the farthest from the mean. We use a simpler form here: |sigma_3 - sigma_1| >= |sigma_3 - sigma_2| >= |sigma_2 - sigma_1| which amounts to the same thing and is prettier. (Think about it!)
    • isEquiv

      public boolean isEquiv(Tensor t)
    • getEigenSort

      private static Comparator<? super Object> getEigenSort()
    • toString

      public String toString()
      Overrides:
      toString in class Object