public class VoroPlusPlusWrapper
extends java.lang.Object
Constructor and Description |
---|
VoroPlusPlusWrapper() |
Modifier and Type | Method and Description |
---|---|
protected static void |
checkBasis(java.io.BufferedReader fp,
Cell strc)
Make sure the basis of the Voro++ output matches this structure.
|
protected static AtomImage |
determineImage(Cell strc,
Cell strcAligned,
boolean radical,
int centerID,
int neighborID,
org.apache.commons.math3.geometry.euclidean.threed.Vector3D point,
org.apache.commons.math3.geometry.euclidean.threed.Vector3D normal)
Determine the periodic image of an image associated with a face.
|
protected static org.apache.commons.math3.geometry.euclidean.threed.Vector3D |
getVoroPlusPlusPositionDelta(Cell strc,
int atomID)
Compute the distance between atom atom and its corresponding
image in Voro++.
|
protected static java.lang.String |
locateExecutable()
Determine the path to the Voro++ executable
|
static java.util.List<BaseVoronoiCell> |
parseResults(Cell strc,
boolean radical,
java.io.BufferedReader fp)
Parse a Voronoi tessellation
|
static java.util.List<BaseVoronoiCell> |
runVoroPlusPlus(Cell strc,
boolean radical)
Use Voro++ to perform a Voronoi tessellation
|
protected static double |
stepDiv(double x,
double y)
Divide two doubles following the scheme used by step_div in Voro++
|
protected static void |
writeStructure(java.io.OutputStream outStream,
Cell strc,
boolean radical)
Write structure to voro++ process
|
public static java.util.List<BaseVoronoiCell> runVoroPlusPlus(Cell strc, boolean radical) throws java.lang.Exception
strc
- Structure to be tessellatedradical
- Whether to perform a radical plane tessellationjava.lang.Exception
protected static java.lang.String locateExecutable()
protected static void writeStructure(java.io.OutputStream outStream, Cell strc, boolean radical)
outStream
- Already-started voroPlusPlus processstrc
- Structure to be tessellatedradical
- Whether to perform a radical plane tessellationpublic static java.util.List<BaseVoronoiCell> parseResults(Cell strc, boolean radical, java.io.BufferedReader fp) throws java.lang.Exception
strc
- Structure being tessellatedfp
- Output from Voro++ wrapperradical
- Whether Voro++ performed radical plane tessellationjava.lang.Exception
protected static AtomImage determineImage(Cell strc, Cell strcAligned, boolean radical, int centerID, int neighborID, org.apache.commons.math3.geometry.euclidean.threed.Vector3D point, org.apache.commons.math3.geometry.euclidean.threed.Vector3D normal)
strc
- Structure being tessellated.strcAligned
- Structure being tessellated, aligned to the same
basis as Voro++ (e.g., a parallel to x axis)radical
- Whether we are performing a radical plane tessellationcenterID
- ID of central atomneighborID
- ID of neighboring atompoint
- Coordinates of a vertex on this facenormal
- Normal of the faceprotected static void checkBasis(java.io.BufferedReader fp, Cell strc) throws java.lang.Exception
strc
- Structure being tessellatedfp
- Output from Voro++ output. Starting on 1st linejava.lang.Exception
- If the basis is differentprotected static org.apache.commons.math3.geometry.euclidean.threed.Vector3D getVoroPlusPlusPositionDelta(Cell strc, int atomID)
Voro++ adjusts atom positions such that they reside within the orthorhombic box defined by 0≤x<ax, 0≤y<by, and 0≤z<cz, where a, b, and c are the lattice vectors.
strc
- Structure being tessellated, adjusted to have the same
basis set as Voro++.atomID
- ID of atom at the center of this Voronoi cell. Shouldprotected static double stepDiv(double x, double y)
x
- y
-