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
-
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
- 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(ncella=1, ncellb=1, ncellc=1)¶ Return the spanning vectors of this bounding box.
Parameters: - ncella (int) – the number of cells along a
- ncellb (int) – the number of cells along b
- ncellc (int) – the number of cells along c
Return type: list of numpy.array
Returns: contains vectors spanning the parallelepiped and its sides
-
getNumPlanes(ncella=1, ncellb=1, ncellc=1)¶ Return the number of planes that will fit inside the bounding box.
Parameters: - ncella (int) – the number of cells along a
- ncellb (int) – the number of cells along b
- ncellc (int) – the number of cells along c
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(ncella=1, ncellb=1, ncellc=1)¶ Return the line segments that make this bounding box.
Parameters: - ncella (int) – the number of cells along a
- ncellb (int) – the number of cells along b
- ncellc (int) – the number of cells along c
Return type: list of tuples of heads and tails of 12 line segments.
Returns: the line segments that make this bounding box
-
getPlaneBoxIntersections(vertices, ncella=1, ncellb=1, ncellc=1)¶ Return the points where the plane containing the specified vertices intersects the parallelepiped.
Parameters: - vertices (list of numpy.array) – the vertices of the square that lies in this plane
- ncella (int) – the number of cells along a
- ncellb (int) – the number of cells along b
- ncellc (int) – the number of cells along c
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
-
getVerticesOfAllPlanes(ncella=1, ncellb=1, ncellc=1, nplanes=None)¶ Return a list of lists of points where the set of planes intersect the parallelepiped.
Parameters: - ncella (int) – the number of cells along a
- ncellb (int) – the number of cells along b
- ncellc (int) – the number of cells along c
- nplanes (int) – the number of planes to generate in the backwards and forwards direction
Return type: list of list of numpy.array
Returns: where the planes intersect the parallelepiped
-
__class__¶ alias of
builtins.type
-
__delattr__¶ Implement delattr(self, name).
-
__dict__= mappingproxy({'__module__': 'schrodinger.application.matsci.nano.plane', '__doc__': '\n Manage a crystal plane object.\n ', 'SQUARE': OrderedDict([(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__': <function CrystalPlane.__init__>, 'checkMillerIndices': <function CrystalPlane.checkMillerIndices>, 'getReciprocals': <function CrystalPlane.getReciprocals>, 'getNormal': <function CrystalPlane.getNormal>, 'getLinDepPlaneVectors': <function CrystalPlane.getLinDepPlaneVectors>, 'transformVectors': <function CrystalPlane.transformVectors>, 'getSimpleSlabVectors': <function CrystalPlane.getSimpleSlabVectors>, 'getSlabVectors': <function CrystalPlane.getSlabVectors>, 'getSpanningVectors': <function CrystalPlane.getSpanningVectors>, 'getNumPlanes': <function CrystalPlane.getNumPlanes>, 'getInterPlanarSeparation': <function CrystalPlane.getInterPlanarSeparation>, 'getRotationToZ': <function CrystalPlane.getRotationToZ>, 'getSquareVertices': <function CrystalPlane.getSquareVertices>, 'getParallelepipedLineSegments': <function CrystalPlane.getParallelepipedLineSegments>, 'getPlaneBoxIntersections': <function CrystalPlane.getPlaneBoxIntersections>, 'getOrderedIntersections': <function CrystalPlane.getOrderedIntersections>, 'getVerticesOfAllPlanes': <function CrystalPlane.getVerticesOfAllPlanes>, '__dict__': <attribute '__dict__' of 'CrystalPlane' objects>, '__weakref__': <attribute '__weakref__' of 'CrystalPlane' objects>})¶
-
__dir__() → list¶ default dir() implementation
-
__eq__¶ Return self==value.
-
__format__()¶ default object formatter
-
__ge__¶ Return self>=value.
-
__getattribute__¶ Return getattr(self, name).
-
__gt__¶ Return self>value.
-
__hash__¶ Return hash(self).
-
__init_subclass__()¶ This method is called when a class is subclassed.
The default implementation does nothing. It may be overridden to extend subclasses.
-
__le__¶ Return self<=value.
-
__lt__¶ Return self<value.
-
__module__= 'schrodinger.application.matsci.nano.plane'¶
-
__ne__¶ Return self!=value.
-
__new__()¶ Create and return a new object. See help(type) for accurate signature.
-
__reduce__()¶ helper for pickle
-
__reduce_ex__()¶ helper for pickle
-
__repr__¶ Return repr(self).
-
__setattr__¶ Implement setattr(self, name, value).
-
__sizeof__() → int¶ size of object in memory, in bytes
-
__str__¶ Return str(self).
-
__subclasshook__()¶ Abstract classes can override this to customize issubclass().
This is invoked early on by abc.ABCMeta.__subclasscheck__(). It should return True, False or NotImplemented. If it returns NotImplemented, the normal algorithm is used. Otherwise, it overrides the normal algorithm (and the outcome is cached).
-
__weakref__¶ list of weak references to the object (if defined)
-