public class VoronoiCellBasedAnalysis extends BaseAnalysis
Some Papers You Might Want To Read
TBD: Logan Ward's fault there is nothing here.
VoronoiTessellationCalculator#compute(jstrc.data.Cell, boolean)
,
Serialized FormStructure
Constructor and Description |
---|
VoronoiCellBasedAnalysis(boolean radical)
Initialize a Voronoi cell analyzer.
|
VoronoiCellBasedAnalysis(VoronoiCellBasedAnalysis oldTessellation,
Cell newStructure)
Create a new instance of the analysis toolkit based on a structure that
has an identical tessellation.
|
Modifier and Type | Method and Description |
---|---|
double[][] |
bondLengths()
Get the bond lengths for each atom
|
double[] |
bondLengthVariance(double[] meanLengths)
Compute variance in bond length for each face.
|
static double |
computeShapeDissimilarity(java.util.Map<java.lang.Integer,java.lang.Integer> thisShape,
java.util.Map<java.lang.Integer,java.lang.Integer> referenceShape)
Compute the similarity of the shape of a cell to a reference.
|
double |
faceCountAverage()
Get the average number of faces on all cells
|
double |
faceCountMaximum()
Get the maximum face count of all cells
|
double |
faceCountMinimum()
Get the minimum face count of all cells
|
double |
faceCountVariance()
Get the variance in face count
|
double[] |
getEffectiveCoordinationNumbers()
Get the effective coordination number.
|
double[][] |
getNeighborOrderingParameters(int shell,
boolean weighted)
Compute the Warren-Cowley short range ordering parameters for each atom.
|
org.apache.commons.lang3.tuple.Pair<int[][],double[][]> |
getNeighborShellWeights(int shell)
Get the types and weights on neighbors in each shell.
|
java.util.Set<java.util.Map<java.lang.Integer,java.lang.Integer>> |
getUniquePolyhedronShapes()
Get a list of all unique polyhedron shapes.
|
double |
maxPackingEfficiency()
Compute maximum packing efficiency assuming atoms are hard spheres.
|
double |
meanBCCDissimilarity()
Get how dissimilar, on average, coordination polyhedra are from BCC.
|
double[] |
meanBondLengths()
Compute mean bond length for each cell.
|
double |
meanFCCDissimilarity()
Get how dissimilar, on average, coordination polyhedra are from FCC.
|
double |
meanSCDissimilarity()
Get how dissimilar, on average, coordination polyhedra are from SC.
|
double[] |
neighborPropertyDifferences(double[] property,
double[][] weights,
int[][] faceTypes)
Provided a pre-computed list of neighbor types and weights, compute the
neighbor property differences.
|
double[] |
neighborPropertyDifferences(double[] property,
int shell)
Compute the face-size-weighted difference between properties of an atom
and its neighbors.
|
double[] |
neighborPropertyVariances(double[] property,
double[][] weights,
int[][] types)
Get the weighted variance between the properties of each atom's
neighbors.
|
double[] |
neighborPropertyVariances(double[] property,
int shell)
Get the face-size-weighted variance between the properties of each atom's
neighbors.
|
protected void |
precompute()
Perform any kind of computations that should only be performed once.
|
boolean |
tessellationIsConverged() |
double |
volumeFractionMaximum()
Computes the fraction of cell volume occupied by the largest Voronoi
cell.
|
double |
volumeFractionMinimum()
Computes the fraction of cell volume occupied by the smallest Voronoi
cell.
|
double |
volumeVariance()
Computes the mean absolute deviation in the volume of each cell.
|
double |
warrenCowleyOrderingMagnituide(int shell,
boolean weighted)
Compute the mean deviation in the Warren-Cowley parameter for each type
for each site from 0.
|
analyzeStructure, recompute
public VoronoiCellBasedAnalysis(boolean radical)
radical
- Whether to use the radical-plane Voronoi methodVoronoiTessellationCalculator
public VoronoiCellBasedAnalysis(VoronoiCellBasedAnalysis oldTessellation, Cell newStructure) throws java.lang.Exception
oldTessellation
- Tessellation of original structurenewStructure
- New structurejava.lang.Exception
- If structures are too differentprotected void precompute() throws java.lang.Exception
BaseAnalysis
precompute
in class BaseAnalysis
java.lang.Exception
- If computation failspublic boolean tessellationIsConverged()
public double[] getEffectiveCoordinationNumbers()
public double faceCountAverage()
public double faceCountVariance()
public double faceCountMinimum()
public double faceCountMaximum()
public java.util.Set<java.util.Map<java.lang.Integer,java.lang.Integer>> getUniquePolyhedronShapes()
BaseVoronoiCell.getNeighborTypes()
public double volumeVariance()
public double volumeFractionMinimum()
public double volumeFractionMaximum()
public double maxPackingEfficiency()
Algorithm:
public double[][] getNeighborOrderingParameters(int shell, boolean weighted)
αs,i = 1 - nA,s / (xA * ns)
where nA,s is the number of atoms of type A in shell s, xA is the composition of atom A, and ns is the number of atoms in shell s.
Citation: Cowley, J. Physical Review Letters. 77 (1950), 669
Optionally, one can weight the contributions of each neighbor based on
the path weights. See BaseVoronoiCell.getNeighborsByWalks(java.util.List, int)
for further discussion
shell
- Index of nearest neighbor shellweighted
- Whether to compute the weighted ordering parameterspublic double warrenCowleyOrderingMagnituide(int shell, boolean weighted)
Computed as the average of the average the absolute values of the WC parameters for each type for each site:
Sumi,j1 / [ Number of atoms in structure ] / [ Number of types ] * | [ WC parameter for type i about atom j ] |
shell
- Index of neighbor shell (e.g. 1st shell = 1)weighted
- Whether to weigh ordering parameters by face areagetNeighborOrderingParameters(int, boolean)
public static double computeShapeDissimilarity(java.util.Map<java.lang.Integer,java.lang.Integer> thisShape, java.util.Map<java.lang.Integer,java.lang.Integer> referenceShape)
Example: Reference shape has 12 square faces, this shape has 11 square faces and two triangular faces. There are three different faces (i.e. one missing square face and two extraneous triangular faces). Therefore the dissimilarity is: 3 / 12 = 25%.
thisShape
- Shape to be comparedreferenceShape
- Shape to compare againstpublic double meanSCDissimilarity()
public double meanBCCDissimilarity()
public double meanFCCDissimilarity()
public double[] neighborPropertyDifferences(double[] property, int shell)
sum[ Size of face between atom and neighbor i ] * |
[property of atom] - [property neighbor] | / [ surface area ]
For neighbors in the 2nd or greater shell, {@linkplain BaseVoronoiCell#getExtendedFaces(java.util.List, int) )
is used to find the unique faces between the atoms in the N - 1 shell
and the Nth shell. So, each Nth neighbor atom might have multiple
faces and its total "size of face" will be defined as the sum of the
area of these faces.
property
- List of property for each atom typeshell
- Shell to be considered (1 == 1st nearest neighbor shell)public org.apache.commons.lang3.tuple.Pair<int[][],double[][]> getNeighborShellWeights(int shell)
shell
- Shell being considered. 1 corresponds to the 1st NN,
2 corresponds to the polyhedron formed by an atom and its 1st shell
neighbors, etcBaseVoronoiCell.getExtendedFaces(java.util.List, int)
public double[] neighborPropertyDifferences(double[] property, double[][] weights, int[][] faceTypes)
property
- List of property for each typeweights
- Weight for each neighborfaceTypes
- Type of each neighbor
appropriate cellneighborPropertyDifferences(double[], int)
public double[] neighborPropertyVariances(double[] property, int shell)
property
- List of property for each atom typeshell
- Shell to be considered (1 == 1st nearest neighbor shell)neighborPropertyDifferences(double[], int)
public double[] neighborPropertyVariances(double[] property, double[][] weights, int[][] types)
property
- List of property for each typeweights
- Weight for each neighbortypes
- Types of each neighborsorg.apache.commons.math3.exception.MathIllegalArgumentException
public double[][] bondLengths()
public double[] meanBondLengths()
public double[] bondLengthVariance(double[] meanLengths)
meanLengths
- Mean bond length for each cell.