# DefectPairList¶

class DefectPairList(substitutional_defect, native_defect, cutoff_distances, charge_states=None, processes_per_defect=None)

A class which describes the list of possible pair defects in a material.

Parameters: substitutional_defect (SubstitutionalList) – List substitutional defects that will constitute the first defect in the pair. The list does not require being updated (by using update()). The main objective of pairs is to simulate impurity or dopant diffusion driven by native defects. This defect must be the substitutional one and cannot be a native element. native_defect (VacancyList | SplitInterstitialList | InterstitialList) – List of vacancies or interstitials that will constitute the second defect in the pair and will be responsible for paired diffusion. If interstitial must be a native element. The list does not require being updated (by using update()). cutoff_distances (tuple of two PhysicalQuantity of type length.) – Minimum and maximum distance between the specified defects to be considered valid. Pairs where any point defect is at a distance not in between these specified distances to the other point defect in the pair will be considered to just be 2 isolated point defects, and will be discarded. charge_states (int | sequence of int) – The charge states to calculate for each defect pair. Default: 0 processes_per_defect (int) – The number of processes assigned to calculating a single defect. Default: All available processes.
chargeStates()
Returns: The charge states to calculate for each defect. list of int
cutoffDistances()
Returns: The cut off distances tuple of two PhysicalQuantity of type length
filterByDistance(distance, cartesian_coordinates=None, fractional_coordinates=None)

Method for filtering defects by distance. Given a origin in the supercell and a distance, all defects within a bigger distance will be filtered. After filtering, the wyckoff indices with no defects will be erased.

Parameters: distance (PhysicalQuantity of type length) – Maximum distance cartesian_coordinates (sequence (size 3) of PhysicalQuantity of type length) – The position of the reference to measure distances, given in absolute coordinates. This option is mutually exclusive to fractional_coordinates. Default: None fractional_coordinates (sequence (size 3) of float) – The position of the reference to measure distances, given in fractional coordinates of the bulk unit cell. This option is mutually exclusive to cartesian_coordinates. Default: None A filtered defect list. VacancyList | SubstitutionalList | SplitInterstitialList
filterByLatticeSpecies(element_list)

Method for selecting inequivalent defects by element name. Valid only for defect types that are associated with a lattice site, e. g. Vacancies, but not Interstitials.

Parameters: element_list (PeriodicTableElement | list of PeriodicTableElement) – List of elements to keep after filtering. A filtered defect list. VacancyList | SubstitutionalList | SplitInterstitialList
filterByWyckoffIndex(wyckoff_indices)

Method for filtering the list of inequivalent point defects by selecting specific Wyckoff indices.

Parameters: wyckoff_indices (int | list of int) – The list of Wyckoff indices to keep after filtering. A filtered defect list. The same type as the unfiltered list.
materialSpecifications()
Returns: The descriptor of a bulk material, plus the information needed to perform the calculations. MaterialSpecifications
nativeDefectList()
Returns: The list of vacancies or interstitials that will constitute the second defect in the pair. VacancyList | SplitInterstitialList | InterstitialList
nlprint(stream=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>)

Prints a summary of the wyckoff indices created and equivalent defects

pointDefects()
Returns: The list of inequivalent point defects. Vacancy | Substitutional | Interstitial | DefectCluster
processesPerDefect()
Returns: The number of processes to be assigned to calculating each defect. If None, all available processes should perform the calculation for each defect collaboratively. int | None
results(discard_faulty=True)

Method for retrieving calculated defect studies.

Parameters: discard_faulty (bool) – Flag to determine whether faulty defect studies should be discarded. Default: True The list of defect studies stored on the object. list of HarmonicChargedPointDefect
substitutionalDefectList()
Returns: The list of substitutional defects which constitute the first defect in the pair. SubstitutionalList
update()

Update all the harmonic charged point defect studies contained in the defect list.

wyckoffIndices()
Returns: The Wyckoff indices for the current defect list. list of int

## Directory name¶

DefectPairList creates directory names with a structure

pair/compact/constituents/sites/hash


For instance,

pair/CV/C^Si_0+Si_0/001+000/8510ca94d3b960045791f06a3741606f

• All pair defects are stored in a directory called pair.
• compact shows the usual cluster notation in TCAD, with I or V meaning interstitial/vacancy and the rest denoting the non-native defect.
• constituent shows the names of the two constituent defects.
• sites contains the indices for the two sites occupied by the constituent defects.
• hash is a hash string represents the material specifications.

## Usage example¶

The following shows an example of use. It assumes there is an already defined Si_64Ge_tersoff specification in MaterialSpecifications that support Ge as a substitutional element.

from SMW import *

reference = MaterialSpecificationsDatabase.SiGe_64_tersoff
vacancies = VacancyList(reference)
substitutionals = SubstitutionalList(reference, Germanium)
pairs = DefectPairList(substitutionals, vacancies, (2.2 * Angstrom, 3.2 * Angstrom))

nlprint(pairs)
pairs.update()

nlsave('defects.hdf5', vacancies)
nlsave('defects.hdf5', substitutionals)
nlsave('defects.hdf5', pairs)


pairlist_example.py