schrodinger.application.matsci.nano.plane module¶
Classes and functions for crystal planes.
Copyright Schrodinger, LLC. All rights reserved.
- schrodinger.application.matsci.nano.plane.ext_gcd(a, b)¶
 Solve ax + by = gcd(a, b) using the Extended Euclidean Algorithm. Return (1) the greatest common divisor (gcd) of integers a and b and (2) the integer Bezout coefficients x and y.
- Parameters
 a (int) – the a coefficient
b (int) – the b coefficient
- Return type
 int, int, int
- Returns
 gcd(a, b), Bezout coefficient x, and Bezout coefficient y
- schrodinger.application.matsci.nano.plane.reduce_hkl(hkl)¶
 Reduce hkl to the smallest set of indices
param list hkl: Miller indices
- Retype
 list, int
- Returns
 Reduced Miller indices, divisor
- class schrodinger.application.matsci.nano.plane.CrystalPlane(h_index, k_index, l_index, a_vec, b_vec, c_vec, origin=None, logger=None)¶
 Bases:
objectManage a crystal plane object.
- SQUARE = {1: array([-1., 1., 0.]), 2: array([-1., -1., 0.]), 3: array([ 1., -1., 0.]), 4: array([1., 1., 0.])}¶
 
- DISTANCE_THRESH = -0.001¶
 
- SAME_VECTOR_THRESH = 0.0001¶
 
- SLAB_THRESHOLD = 1e-07¶
 
- __init__(h_index, k_index, l_index, a_vec, b_vec, c_vec, origin=None, logger=None)¶
 Create an instance.
- Parameters
 h_index (int) – the h Miller index
k_index (int) – the k Miller index
l_index (int) – the l Miller index
a_vec (numpy.array) – the a lattice vector
b_vec (numpy.array) – the b lattice vector
c_vec (numpy.array) – the c lattice vector
origin (numpy.array) – the origin of the lattice vectors in Angstrom
logger (logging.getLogger) – output logger
- checkMillerIndices()¶
 Check the user provided Miller indices.
- getReciprocals()¶
 Return the reciprocal lattice vectors.
- Return type
 three numpy.array
- Returns
 the three reciprocal lattice vectors.
- getNormal()¶
 Return the normal vector.
- Return type
 numpy.array
- Returns
 the normal vector for this plane
- getLinDepPlaneVectors()¶
 Return three typically used plane vectors that are linearly dependent.
- Return type
 numpy.array, numpy.array, numpy.array
- Returns
 typically used plane vectors that are linearly dependent
- transformVectors(a_vec, b_vec, c_vec)¶
 Transform the given vectors using the basis transform.
- Parameters
 a_vec (numpy.array) – the first vector
b_vec (numpy.array) – the second vector
c_vec (numpy.array) – the third vector
- Return type
 numpy.array, numpy.array, numpy.array
- Returns
 the three transformed vectors
- getSimpleSlabVectors()¶
 This sets the simple, i.e. two of the Miller indices are zero, transformation matrix into self.basis and sets the simple slab vectors.
- getSlabVectors()¶
 This sets the transformation matrix into self.basis. Basis vectors are chosen such that a and b axes are in the plane of the Miller plane, and c-axis is out of this plane (NOT necessarily normal to it). Also sets the slab vectors.
- getSpanningVectors(st)¶
 Return the spanning vectors of this bounding box.
- Parameters
 st (schrodinger.structure.Structure) – the structure
- Return type
 list of numpy.array
- Returns
 contains vectors spanning the parallelepiped and its sides
- getBestSpanningVector(st)¶
 Return the spanning vector with the largest projection onto the plane normal vector.
- Parameters
 st (schrodinger.structure.Structure) – the structure
- Return type
 numpy.array
- Returns
 the best spanning vector
- getNumPlanes(st)¶
 Return the number of planes that will fit inside the bounding box.
- Parameters
 st (schrodinger.structure.Structure) – the structure
- Return type
 int
- Returns
 the number of planes that will fit inside the bounding box
- getInterPlanarSeparation()¶
 Return the inter-planar separation in Angstrom.
- Return type
 float
- Returns
 the inter-planar separation in Angstrom
- getRotationToZ()¶
 Return the rotation matrix needed to rotate this plane to the XY-plane as well as its inverse.
- Return type
 two numpy.array
- Returns
 the rotation matrix that rotates this plane to the XY-plane and its inverse.
- getSquareVertices()¶
 Return the vertices of a square that lies in this plane. The square has and edge-length of 2 Angstrom. It is rotated from the XY-plane, centered on origin, into this plane.
- Return type
 list of numpy.array
- Returns
 the vertices of the squre that lies in this plane
- getParallelepipedLineSegments(st)¶
 Return the line segments that make this bounding box.
- Parameters
 st (schrodinger.structure.Structure) – the structure
- Return type
 list of tuples of heads and tails of 12 line segments.
- Returns
 the line segments that make this bounding box
- getPlaneBoxIntersections(st, vertices)¶
 Return the points where the plane containing the specified vertices intersects the parallelepiped.
- Parameters
 st (schrodinger.structure.Structure) – the structure
vertices (list of numpy.array) – the vertices of the square that lies in this plane
- Return type
 list of numpy.array
- Returns
 the points of intersection
- getOrderedIntersections(intersections)¶
 Return the provided list of planar points in counter-clockwise order.
- Parameters
 intersections (list of numpy.array) – some intersection points in a plane
- Return type
 list of numpy.array
- Returns
 those planar intersections in counter-clockwise order
- getVertices(normal_vec, idx, draw_location=0, thickness=1)¶
 Return a list of numpy.array containing vertices of a plane with the given index.
- Parameters
 normal_vec (numpy.array) – the normal vector
idx (int) – the plane index, the sign of the index controls whether behind or ahead of the normal vector origin
draw_location (float) – specifies the starting location at which planes will be drawn in terms of a fraction of the normal vector which has a length of one inter-planar spacing
thickness (float) – specifies the thickness or distance between consecutive planes in terms of a fraction of the normal vector which has a length of one inter-planar spacing
- Return type
 list of numpy.array
- Returns
 the plane vertices
- getVerticesOfAllPlanes(st, draw_location=0, thickness=1, also_draw_planes_behind=True)¶
 Return a list of lists of points where the set of planes intersect the parallelepiped.
- Parameters
 st (schrodinger.structure.Structure) – the structure
draw_location (float) – specifies the starting location at which planes will be drawn in terms of a fraction of the normal vector which has a length of one inter-planar spacing
thickness (float) – specifies the thickness or distance between consecutive planes in terms of a fraction of the normal vector which has a length of one inter-planar spacing
also_draw_planes_behind (bool) – whether to also draw planes behind the specified draw location, this is in addition to always drawing planes ahead of the draw location
- Return type
 list of list of numpy.array
- Returns
 where the planes intersect the parallelepiped