FreeSurface
- class atomman.defect.FreeSurface(hkl: Union[int, float, complex, str, bytes, generic, Sequence[Union[int, float, complex, str, bytes, generic]], Sequence[Sequence[Any]], _SupportsArray], ucell: System, cutboxvector: str = 'c', maxindex: Optional[int] = None, conventional_setting: str = 'p', tol: float = 1e-07)
Bases:
object
Class for generating free surface atomic configurations using clean planar slices.
- property conventional_setting: str
The lattice setting/centering associated with the conventional cell (used if ucell is primitive)
- Type:
- property rcell: System
the rotated cell to use in building the defect system.
- Type:
- property shifts: list
All shift values that place the fault halfway between atomic layers in rcell.
- Type:
- surface(shift: Optional[Union[int, float, complex, str, bytes, generic, Sequence[Union[int, float, complex, str, bytes, generic]], Sequence[Sequence[Any]], _SupportsArray]] = None, vacuumwidth: Optional[float] = None, minwidth: Optional[float] = None, sizemults: Optional[list] = None, even: bool = False) System
Generates and returns a free surface atomic system.
- Parameters:
shift (array-like object, optional) – Applies a shift to all atoms. Different values allow for free surfaces with different termination planes to be selected.
vacuumwidth (float, optional) – If given, the free surface is created by modifying the system’s box to insert a region of vacuum with this width. This is typically used for DFT calculations where it is computationally preferable to insert a vacuum region and keep all dimensions periodic.
sizemults (list or tuple, optional) – The three System.supersize multipliers [a_mult, b_mult, c_mult] to use on the rotated cell to build the final system. Note that the cutboxvector sizemult must be an integer and not a tuple. Default value is [1, 1, 1].
minwidth (float, optional) – If given, the sizemult along the cutboxvector will be selected such that the width of the resulting final system in that direction will be at least this value. If both sizemults and minwidth are given, then the larger of the two in the cutboxvector direction will be used.
even (bool, optional) – A True value means that the sizemult for cutboxvector will be made an even number by adding 1 if it is odd. Default value is False.
- Returns:
The free surface atomic system.
- Return type:
- property system: System
The built free surface system.
- Type:
- property transform: ndarray
The Cartesian transformation tensor associated with rotating from ucell to rcell
- Type:
numpy.ndarray
- property ucell: System
The unit cell to use in building the defect system.
- Type:
- unique_shifts(symprec: float = 1e-05, trial_image_range: int = 1, atol: float = 1e-08, return_indices: bool = False) Union[ndarray, Tuple[ndarray, list]]
Use crystal symmetry operations to filter the list of shift values to only those that are symmetrically unique. Note that the identified unique shifts can still result in the creation of energetically equivalent free surfaces if the free surface introduces a symmetry operation not present in the bulk crystal.
- Parameters:
symprec (float) – The symmetry precision tolerance value used in spglib.
trial_image_range (int, more than or equal to 1.) – Maximum cell images searched in finding translationally equivalent planes. The default value is one, which corresponds to search the 27 neighbor images, [-1, 1]^3. The default value may not be sufficient for largely distorted lattice.
atol (float) – The absolute tolerance used in comparing two crystal planes.
return_indices (bool) – If True then the indices of shift that correspond to the identified unique shifts will be returned as well. Default value is False (only return the shift vectors).
- Returns:
unique_shifts (np.ndarray, (# of unique shifts, 3)) – The symmetrically unique shift vectors.
unique_indices (list) – The indices of shifts that correspond to the identified unique shifts.