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:

str

property cutboxvector: str

The box vector for the cut direction.

Type:

str

property cutindex: int

The Cartesian index for the cut direction.

Type:

int

property hkl: ndarray

Crystal plane in Miller or Miller-Bravais indices

Type:

numpy.ndarray

property rcell: System

the rotated cell to use in building the defect system.

Type:

atomman.System

property rcellwidth: float

The width of rcell in the cutindex direction.

Type:

float

property shifts: list

All shift values that place the fault halfway between atomic layers in rcell.

Type:

list

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:

atomman.System

property surfacearea: float

The surface area of one of the hkl planes.

Type:

float

property system: System

The built free surface system.

Type:

atomman.System

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:

atomman.System

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.

property uvws: ndarray

The conventional Miller or Miller-Bravais crystal vectors associated with the rcell box vectors.

Type:

numpy.ndarray