VacancyList

class VacancyList(material_specifications, charge_states=None, processes_per_defect=None, processes_per_task=None, processes_per_displacement=None, resume=None)

A class which describes the list of possible vacancy defects for a given host material.

Parameters:
  • material_specifications (MaterialSpecifications) – A descriptor of a bulk material, plus the information needed to perform the calculations.

  • charge_states (int | sequence of int) – The charge states to calculate for each defect.
    Default: 0

  • processes_per_defect (int) – The number of processes assigned to calculating a single defect.
    Default: All available processes.

  • processes_per_task (int) – The number of processes assigned to each task. The number of processes per defect divided by the processes per task determines the number of tasks to be computed in parallel for each defect. If more than 1 task is computed in parallel, 1 processor will be devoted to synchronize all tasks, so that in practice the number of parallel tasks will be (processes_per_defect - 1) / processes_per_task
    Default: Each charge will be run in parallel, i.e.: processes_per_task = (processes_per_defect - 1) / len(charge_states)

  • processes_per_displacement (int) – The number of processes assigned to calculating a single displacement in a dynamical matrix (used for phonon calculations).
    Default: Use all available processes.

  • resume (bool) – Whether reruning the simulation will resume non converged results
    Default: True

areResultsAvailable()
Returns:

True, if results are available.

Return type:

bool

chargeStates()
Returns:

The charge states to calculate for each defect.

Return type:

list of int

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 out. 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

Returns:

A filtered defect list.

Return type:

rtype:

VacancyList | SubstitutionalList | InterstitialList SplitInterstitialList | DefectPairList | DefectClusterList

filterByEquivalentEnvironments(num_groups, r_cut=PhysicalQuantity(6.0, Ang))
Parameters:
  • num_groups – The number of unique defect types. This will cause defects to be grouped into num_groups types where the defects in each group are the most similar to one another.

  • r_cut (PhysicalQuantity of type length) – The cut-off distance for the local atomic environment. Atoms outside of this radius are not included when comparing/grouping defects together.
    Default: 6.0 * Angstrom

Returns:

A filtered defect list.

Return type:

VacancyList | SubstitutionalList | InterstitialList SplitInterstitialList | DefectPairList | DefectClusterList

filterByFormationEnergy(charge=0, minimum_energy=None, maximum_energy=None)

Method for filtering defects by formation energy. This method only works on defects that are updated. Given a minimum and maximum energy, only defects between those values will be kept, the rest being discarded. A value of None means that the particular limit is not applied.

Parameters:
  • charge (int) – Charge state for the filtering.
    Default: 0

  • minimum_energy (PhysicalQuantity of type energy) – Defects with energies lower than this will be discarded.

  • maximum_energy (PhysicalQuantity of type energy) – Defects with energies higher than this will be discarded.

Returns:

a filtered defect list.

Return type:

VacancyList | SubstitutionalList | InterstitialList SplitInterstitialList | DefectPairList | DefectClusterList

filterByInterface(interface_index, distance)
Parameters:
  • interface_index (int) – The index of the interface to filter by.

  • distance (PhysicalQuantity of type length) – The distance from the interfaces to include.

Returns:

A filtered defect list.

Return type:

VacancyList | SubstitutionalList | InterstitialList SplitInterstitialList | DefectPairList | DefectClusterList

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.

Returns:

A filtered defect list.

Return type:

rtype:

VacancyList | SubstitutionalList | InterstitialList SplitInterstitialList | DefectPairList | DefectClusterList

filterByLayer(layer_index, distance=None)
Parameters:
  • layer_index (int) – The index of the layer to filter by.

  • distance (PhysicalQuantity of type length) – The distance from the interfaces to exclude.
    Default: 0.0*Angstrom

Returns:

A filtered defect list.

Return type:

VacancyList | SubstitutionalList | InterstitialList SplitInterstitialList | DefectPairList | DefectClusterList

filterByMostStable(how_many, charge=0)

Method for filtering the most stable (by formation energy) converged defects.

Parameters:
  • how_many (int) – Maximum number of filtered defects.

  • charge (int) – Charge state for the formation energies
    Default: 0

Returns:

a filtered defect list.

Return type:

VacancyList | SubstitutionalList | InterstitialList SplitInterstitialList | DefectPairList | DefectClusterList

filterBySymmetryAfterRelaxation(charge_state, discard_faulty=True, tolerance=None)

A filter which analyzes the defect configurations after relaxation and discards ones which have relaxed to the same configuration, also taking into account possible symmetry transformations.

Parameters:
  • charge_state (int) – The charge state to carry out the symmetry analysis for.

  • discard_faulty (bool) – Whether to discard faulty defects in the list.
    Default: True

  • tolerance (PhysicalQuantity of type length) – The tolerance for atomic positions used to decide whether two defect configurations are equivalent.
    Default: 0.1 * Angstrom

Returns:

The filtered defect list.

Return type:

VacancyList | SubstitutionalList | InterstitialList SplitInterstitialList | DefectPairList | DefectClusterList

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.

Returns:

A filtered defect list.

Return type:

VacancyList | SubstitutionalList | InterstitialList SplitInterstitialList | DefectPairList | DefectClusterList

materialSpecifications()
Returns:

The descriptor of a bulk material, plus the information needed to perform the calculations.

Return type:

MaterialSpecifications

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.

Return type:

Vacancy | Substitutional | Interstitial | DefectCluster | SplitInterstitial

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.

Return type:

int | None

processesPerDisplacement()
Returns:

Number of processes assigned per displacement in dynamical matrix calculations.

Return type:

int

processesPerItem()
Returns:

Processes per item

Return type:

int

processesPerTask()
Returns:

Number of processes assigned per task and per defect.

Return type:

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

Returns:

The list of defect studies stored on the object.

Return type:

list of HarmonicChargedPointDefect

resume()
Returns:

Whether running it again will resume unconverged simulations

Return type:

bool

uniqueString()

Return a unique string representing the state of the object.

update(disable_log=None)

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

Parameters:

disable_log (bool) – Disable detailed logging.
Default: False

wyckoffIndices()
Returns:

The Wyckoff indices for the current defect list.

Return type:

list of int

Directory name

VacancyList creates directory names with a structure

vacancy/element_wyckoff/site/hash

For instance

vacancy/Si_0/004/8510ca94d3b960045791f06a3741606f
  • All vacancies are stored in a directory call vacancy

  • element represents the element placed at the lattice site where the vacancy sits.

  • wyckoff is the Wyckoff number for the vacancy, different for all non equivalent positions.

  • site contains the particular lattice site occupied by the vacancy. Different for all equivalent and inequivalent positions.

  • A hash string representing the material specifications.

Usage example

The following shows an example of use. It assumes there is an already defined Si_64_tersoff specification in MaterialSpecifications.

from SMW import *
from SentaurusMaterialsWorkbench.MaterialSpecifications.TestMaterials import SiGe_64_tersoff

reference = SiGe_64_tersoff
vacancies = VacancyList(reference)

nlprint(vacancies)
vacancies.update()

nlsave('defects.hdf5', vacancies)

vacancylist_example.py