monteCarloDiffusivityCalculation(defect_lists, transition_path_lists, start_temperature=None, end_temperature=None, delta_temperature=None, charge=None, number_of_samples=None, number_of_jumps=None, discard_faulty=True, random_seed=None, amorphous_material=None)

Perform Atomistic Kinetic Monte Carlo simulations on a list of defects and transition paths at different temperatures with the objective of extracting a diffusivity Arrhenius plot.

  • defect_lists (sequence of InterstitialList | SplitInterstitialList | VacancyList) – A sequence of defect lists.
  • transition_path_lists (sequence of TransitionPathList) – A sequence of transition path lists.
  • start_temperature (PhysicalQuantity of type Kelvin) – Starting temperature.
    Default: 873.15 Kelvin
  • end_temperature (PhysicalQuantity of type Kelvin) – Ending temperature. Should be different than starting temperature
    Default: 1173.15 Kelvin
  • delta_temperature (PhysicalQuantity of type Kelvin) – Interval to increase start_temperature until end_temperature is reached.
    Default: 50 Kelvin
  • charge (int) – Charge state to be simulated. Must be between -4 and +4 included.
    Default: 0
  • number_of_samples (int) – Number of Monte Carlo samples to average. Bigger number of samples provides more accuracy (better statistics) at the cost of more CPU time.
    Default: 50
  • number_of_jumps (int) – Number of random walks (migration jumps) per sample. Bigger number of jumps provides better accuracy at the cost of more CPU time, although is usually better to increase the number of samples than the number of jumps.
    Default: 500
  • discard_faulty (bool) – Whether the faulty NEB calculations are to be discarded.
    Default: True
  • random_seed (int) – Initial seed used for the pseudo-random number generator. Change it to do statistical analysis.
    Default: 1
  • amorphous_material (bool) – Whether the material is amorphous and diffusivity calculation has to be adapted to amorphous materials.
    Default: False

A tuple containing the prefactor and activation energy.

Return type:

Tuple of PhysicalQuantity of type frequency, PhysicalQuantity of type energy.


An example of use is:

from SMW import *

defects = nlread("aSi-interstitials.hdf5", InterstitialList)[-1]
nebs = nlread("C-aSi-nebs.hdf5", TransitionPathList)[-1]

diffusivity = monteCarloDiffusivityCalculation(

print("Diffusivity is", diffusivity)

Taken from the full example at Diffusivity calculation in amorphous materials.