DefectPairGenerator¶
- class DefectPairGenerator(site_defect_generator, secondary_defect_generator, minimum_distance=None, maximum_distance=None, supercell_repetitions=None, symmetry_tolerance=None)¶
A class which describes the possible defect clusters formed by pairs of point defects at various distances. The original two defects are placed together into the given host material supercell.
- Parameters:
site_defect_generator (
SubstitutionalGenerator
|VacancyGenerator
) – Generator for site defects that will constitute the first defect in the pair.secondary_defect_generator (
SubstitutionalGenerator
|VacancyGenerator
|InterstitialGenerator
) – Generator for vacancies or interstitials that will constitute the second defect in the pair and will be responsible for paired diffusion.minimum_distance (PhysicalQuantity of type length) – Minimum allowed distance from site defect to another. Default:
2.0 * Angstrom
.maximum_distance (PhysicalQuantity of type length) – Maximum allowed distance from site defect to another. Default:
3.0 * Angstrom
.supercell_repetitions (sequence (size 3) of int) – The number of repetitions of the host configuration along the (a, b, c) directions. Note that using this parameter has the same effect as supercelling the host configuration prior to generating the point defects passed to this generator.
symmetry_tolerance (PhysicalQuantity of type length) – The tolerance to be used when determining the symmetries. Default: 0.1 * Angstrom.
- filterByDefectGenerators(defect_generators)¶
Method for filtering a defect generator by keeping the defects that are in one or more other defect generators.
- Parameters:
defect_generators (list of
BaseDefectGenerator
) – The list of defect generators containing the defects to keep after filtering.- Returns:
A filtered defect generator.
- Return type:
VacancyGenerator
|SubstitutionalGenerator
|InterstitialGenerator
SplitInterstitialGenerator
- filterByDistinctConfigurations(top_n_configurations, site_element, secondary_element=None)¶
Method for selecting a number of distinct unique defects using the MTP structural descriptor.
- Parameters:
top_n_configurations (int) – Number of most distinct configurations.
site_element (
PeriodicTableElement
) – Site element to keep after filtering.secondary_element (
PeriodicTableElement
) – Secondary element to keep after filtering. Default: Same as site_element
- Returns:
A filtered defect list.
- Return type:
- filterByLatticeSpecies(site_element_list=None, secondary_element_list=None)¶
Method for selecting unique defects by element. Valid only for defect types that are associated with a lattice site, e. g. Vacancies, but not Interstitials.
- Parameters:
site_element_list (
PeriodicTableElement
| list ofPeriodicTableElement
) – List of elements to keep after filtering.secondary_element_list (
PeriodicTableElement
| list ofPeriodicTableElement
) – List of elements to keep after filtering. Only used if the secondary defect is associated with a lattice site.
- Returns:
A filtered defect list.
- Return type:
VacancyGenerator
|SubstitutionalGenerator
|InterstitialGenerator
SplitInterstitialGenerator
- filterByPointDefect(point_defects, keep_defects=True)¶
Method for filtering the generator of unique point defects by selecting a specific defects.
- Parameters:
point_defects (Sequence of BasePointDefect) – The sequence of point defects to filter.
keep_defects (bool) – Whether or not the given defects are to be kept and all other removed (True) or removed from the generator and all other defect kept (False). Default: True
- Returns:
A filtered defect generator.
- Return type:
VacancyGenerator
|SubstitutionalGenerator
|InterstitialGenerator
SplitInterstitialGenerator
- filterByPositionInZSlices(start=None, end=None, resolution=None, in_plane_position=None)¶
Select defects along the Z-axis of the cell. This method is intended to be used for configurations that are anisotropic along one direction, such as interfaces or surfaces.
- Parameters:
start (PhysicalQuantity of type length) – The start of the position interval. Default: 0 * Angstrom.
end (PhysicalQuantity of type length) – The end of the position interval. Default: length of the cell in z direction.
resolution (PhysicalQuantity of type length) – The size of each slice of the interface profile. Default:
2.0 * Angstrom
in_plane_position (Sequence (2) of type float) – The selected defect in each slice is as close as possible to this fractional coordinate. Mutually exclusive with parameter select_distinct. Default:
[0.5, 0.5]
select_distinct (bool) – Select the most distinct defects per slice. This can be used to sample a diverse configuration space with a minimal number of defects. Mutually exclusive with parameter in_plane_position. Default:
False
defects_per_slice (int) – The number of defects to select per slice. This parameter is only used together with the parameter select_distinct. Default:
1
- Returns:
A filtered defect generator.
- Return type:
VacancyGenerator
|SubstitutionalGenerator
|InterstitialGenerator
SplitInterstitialGenerator
- filterBySimilarityInZSlices(start=None, end=None, resolution=None, defects_per_slice=None)¶
Select defects along the Z-axis of the cell. This method is intended to be used for configurations that are anisotropic along one direction, such as interfaces or surfaces.
- Parameters:
start (PhysicalQuantity of type length) – The start of the position interval. Default: 0 * Angstrom.
end (PhysicalQuantity of type length) – The end of the position interval. Default: length of the cell in z direction.
resolution (PhysicalQuantity of type length) – The size of each slice of the interface profile. Default:
2.0 * Angstrom
defects_per_slice (int) – The number of defects to select per slice. This parameter is only used together with the parameter select_distinct. Default:
1
- Returns:
A filtered defect generator.
- Return type:
VacancyGenerator
|SubstitutionalGenerator
|InterstitialGenerator
SplitInterstitialGenerator
- filterBySphere(center, radius)¶
Method for filtering unique defects by their position in a sphere.
- Parameters:
center (PhysicalQuantity of type position) – The center of the sphere in Cartesian coordinates.
radius (PhysicalQuantity of type length) – The radius of the sphere.
- Returns:
A filtered defect generator.
- Return type:
VacancyGenerator
|SubstitutionalGenerator
|InterstitialGenerator
SplitInterstitialGenerator
- filterBySymmetryIndex(symmetry_indices)¶
Method for filtering the list of unique point defects by selecting specific symmetry indices.
- Parameters:
symmetry_indices (int | list of int) – The list of symmetry indices to keep after filtering.
- Returns:
A filtered defect generator.
- Return type:
VacancyGenerator
|SubstitutionalGenerator
|InterstitialGenerator
SplitInterstitialGenerator
- filterByZPositionInterval(start=None, end=None)¶
Method for selecting unique defects by their position in an interval of the z axis. Note: The
- Parameters:
start (PhysicalQuantity of type length) – The start of the position interval. Default: 0 * Angstrom.
end (PhysicalQuantity of type length) – The end of the position interval. Default: length of the cell in z direction.
- Returns:
A filtered defect generator.
- Return type:
VacancyGenerator
|SubstitutionalGenerator
|InterstitialGenerator
SplitInterstitialGenerator
- hostConfiguration()¶
- Returns:
The host configuration.
- Return type:
- indices()¶
- Returns:
The defect indices for the current defect generator.
- Return type:
list of int
- maximumDistance()¶
- Returns:
Maximum allowed distance from site defect to another.
- Return type:
PhysicalQuantity of type length.
- minimumDistance()¶
- Returns:
Minimum allowed distance from site defect to another.
- Return type:
PhysicalQuantity of type length.
- pointDefects()¶
- Returns:
The list of unique point defects.
- Return type:
Vacancy
|Substitutional
|Interstitial
|DefectCluster
|SplitInterstitial
- secondaryDefectGenerator()¶
- Returns:
Generator for vacancies or interstitials.
- Return type:
SubstitutionalGenerator
|VacancyGenerator
|InterstitialGenerator
- siteDefectGenerator()¶
- Returns:
Generator for site defects.
- Return type:
- supercellRepetitions()¶
- Returns:
The supercell repetitions.
- Return type:
tuple (size 3) of int
- symmetryTolerance()¶
- Returns:
The symmetry tolerance.
- Return type:
PhysicalQuantity of type length
- uniqueDefects()¶
- Returns:
The list of symmetrically unique point defects with their names and symmetry indices, ordered by increasing index.
- Return type:
list of
NamedPointDefect
- uniqueString()¶
Return a unique string representing the state of the object.
Usage Examples¶
In this example a Defects object is created that contains vacancy and pair defects in 4H-SiC. The defect pairs consist of a vacancy and anti-site substitution on two neighboring atoms. Together, these defects can be used to model diffusion of a neighboring atom into a vacancy site. As the 4H polytype of silicon carbide has two different C and Si sites (h and k) there are a total of 4 pair defects that are created in the example.
In the example, the defects are created and added to a Defects object in a Custom Block. The defect configurations are then generated and are iterated over, calculating the phonon density of states of each defect.
A workflow for the calculation can be downloaded here
with a corresponding python script DefectPairGenerator_Example.py
.
Notes¶
The DefectPairGenerator object generates defect pairs for a specific host material. It is possible to create defects pairs that combine a site defect (vacancy or substitution) with either a vacancy, substitution or interstitial. Symmetry analysis is able to reduce the number of defects to the minimum of unique defects pairs.
The site defect and secondary defect are passed to the DefectPairGenerator as generators
themselves. Using the minimum_distance
and maximum_distance
arguments the minimum and
maximum distances between the defects can also be set. A supercell repetition for the defect can
also be given. This is useful in cases where a pair may be desired that is not easily contained
within the host unit cell. An example may be where the unit cell contains only one atom. Once the
generator is created the defects contained within the defect can be filtered down to a desired
subset of defects.
The unique defects can be returned with the uniqueDefects
method as NamedPointDefect
objects, which can be used as input for a ChargedPointDefectConfiguration object. The
defects and generators can also be given to a Defects object to create the basic defect
configurations.