shakenbreak.distortions module#
Module containing functions for applying distortions to defect structures
- shakenbreak.distortions.distort(structure: Structure, num_nearest_neighbours: int, distortion_factor: float, site_index: Optional[int] = None, frac_coords: Optional[array] = None, distorted_element: Optional[str] = None, verbose: Optional[bool] = False) dict [source]#
Applies bond distortions to num_nearest_neighbours of the defect (specified by site_index (for substitutions or interstitials) or frac_coords (for vacancies))
- Parameters:
structure (
Structure
) – Defect structure as a pymatgen objectnum_nearest_neighbours (
int
) – Number of defect nearest neighbours to apply bond distortions tofactor (distortion) – The distortion factor to apply to the bond distance between the defect and nearest neighbours. Typical choice is between 0.4 (-60%) and 1.6 (+60%).
site_index (
int
, optional) – Index of defect site in structure (for substitutions or interstitials), counting from 1.frac_coords (
numpy.ndarray
, optional) – Fractional coordinates of the defect site in the structure (for vacancies).distorted_element (
str
, optional) – Neighbouring element to distort. If None, the closest neighbours to the defect will be chosen. (Default: None)verbose (
bool
, optional) – Whether to print distortion information. (Default: False)
- Returns:
Dictionary with distorted defect structure and the distortion parameters.
- Return type:
dict
- shakenbreak.distortions.local_mc_rattle(structure: Structure, site_index: Optional[int] = None, frac_coords: Optional[array] = None, stdev: Optional[float] = None, d_min: Optional[float] = None, verbose: Optional[bool] = False, n_iter: int = 1, active_atoms: Optional[list] = None, nbr_cutoff: float = 5, width: float = 0.1, max_attempts: int = 5000, max_disp: float = 2.0, seed: int = 42) Structure [source]#
Given a pymatgen Structure object, apply random displacements to all atomic positions, with the displacement distances randomly drawn from a Gaussian distribution of standard deviation stdev. The random displacements tail off as we move away from the defect site.
- Parameters:
structure (
Structure
) – Structure as a pymatgen objectsite_index (
int
, optional) – Index of defect site in structure (for substitutions or interstitials), counting from 1.frac_coords (
numpy.ndarray
, optional) – Fractional coordinates of the defect site in the structure (for vacancies).stdev (
float
) – Standard deviation (in Angstroms) of the Gaussian distribution from which random atomic displacement distances are drawn during rattling. Default is set to 10% of the bulk nearest neighbour distance.d_min (
float
) – Minimum interatomic distance (in Angstroms) in the rattled structure. Monte Carlo rattle moves that put atoms at distances less than this will be heavily penalised. Default is to set this to 80% of the nearest neighbour distance in the defect supercell (ignoring interstitials).verbose (
bool
) – Whether to print out information about the rattling process.n_iter (
int
) – Number of Monte Carlo cycles to perform. (Default: 1)active_atoms (
list
, optional) – List of which atomic indices should undergo Monte Carlo rattling. (Default: None)nbr_cutoff (
float
) – The radial cutoff distance (in Angstroms) used to construct the list of atomic neighbours for checking interatomic distances. (Default: 5)width (
float
) – Width of the Monte Carlo rattling error function, in Angstroms. (Default: 0.1)max_disp (
float
) – Maximum atomic displacement (in Angstroms) during Monte Carlo rattling. Rarely occurs and is used primarily as a safety net. (Default: 2.0)max_attempts (
int
) – Maximum Monte Carlo rattle move attempts allowed for a single atom; if this limit is reached an Exception is raised. (Default: 5000)seed (
int
) – Seed for NumPy random state from which random rattle displacements are generated. (Default: 42)
- Returns:
Rattled pymatgen Structure object
- Return type:
Structure
- shakenbreak.distortions.rattle(structure: Structure, stdev: Optional[float] = None, d_min: Optional[float] = None, verbose: bool = False, n_iter: int = 1, active_atoms: Optional[list] = None, nbr_cutoff: float = 5, width: float = 0.1, max_attempts: int = 5000, max_disp: float = 2.0, seed: int = 42) Structure [source]#
Given a pymatgen Structure object, apply random displacements to all atomic positions, with the displacement distances randomly drawn from a Gaussian distribution of standard deviation stdev.
- Parameters:
structure (
Structure
) – Structure as a pymatgen objectstdev (
float
) – Standard deviation (in Angstroms) of the Gaussian distribution from which random atomic displacement distances are drawn during rattling. Default is set to 10% of the bulk nearest neighbour distance.d_min (
float
) – Minimum interatomic distance (in Angstroms) in the rattled structure. Monte Carlo rattle moves that put atoms at distances less than this will be heavily penalised. Default is to set this to 80% of the nearest neighbour distance in the defect supercell (ignoring interstitials).verbose (
bool
) – Whether to print information about the rattling process.n_iter (
int
) – Number of Monte Carlo cycles to perform. (Default: 1)active_atoms (
list
, optional) – List of which atomic indices should undergo Monte Carlo rattling. (Default: None)nbr_cutoff (
float
) – The radial cutoff distance (in Angstroms) used to construct the list of atomic neighbours for checking interatomic distances. (Default: 5)width (
float
) – Width of the Monte Carlo rattling error function, in Angstroms. (Default: 0.1)max_disp (
float
) – Maximum atomic displacement (in Angstroms) during Monte Carlo rattling. Rarely occurs and is used primarily as a safety net. (Default: 2.0)max_attempts (
int
) – Maximum Monte Carlo rattle move attempts allowed for a single atom; if this limit is reached an Exception is raised. (Default: 5000)seed (
int
) – Seed for NumPy random state from which random rattle displacements are generated. (Default: 42)
- Returns:
Rattled pymatgen Structure object
- Return type:
Structure