VoidsizeDistribution

class VoidsizeDistribution(md_trajectory, start_time=None, end_time=None, atom_selection=None, resolution=None, atomic_radii=None, time_resolution=None, info_panel=None)

Calculate the voidsize distribution of an MD trajectory or a configuration.

Parameters:
  • md_trajectory (MDTrajectory | AtomicConfiguration) – The MDTrajectory or configuration to calculate the coordination number for.
  • start_time (PhysicalQuantity of type time) – The start time.
    Default: 0.0 * fs
  • end_time (PhysicalQuantity of type time) – The end time.
    Default: The last time frame.
  • atom_selection (PeriodicTableElement | str | list | None) – Only include contributions between this selection of atoms. The atoms can be selected by element i.e. PeriodicTableElement, tag or a list of atomic indices.
    Default: All atoms.
  • resolution (PhysicalQuantity of type length) – The bin size, which determines the resolution of the voidsize-histogram.
    Default: 2.0 * Angstrom
  • atomic_radii (PhysicalQuantity of type length) – The atomic radii used for calculating the atomic volumes, which do not contribute to th void volumes.
    Default: Covalent radii of the elements.
  • time_resolution (PhysicalQuantity of type time) – The time interval between snapshots in the MD trajectory that are included in the analysis.
  • info_panel (InfoPanel (Plot2D)) – Info panel to show the calculation progress.
    Default: No InfoPanel.
data()
Returns:The voidsize-distribution as a histogram.
Return type:array
voidsizes()
Returns:The voidsize-diameters associated with the histogram.
Return type:PhysicalQuantity of type length

Usage Examples

Load an MDTrajectory and calculate the VoidsizeDistribution:

md_trajectory = nlread('alumina_trajectory.hdf5')[-1]

# Calculate the voidsize distribution of the trajectory.
vd = VoidsizeDistribution(md_trajectory)

# Get the time and autocorrelation values.
voidsizes = vd.voidsizes().inUnitsOf(Ang)
histogram = vd.data()

# Plot the data using pylab.
import pylab

pylab.plot(
    voidsizes,
    histogram,
    label='Voidsize distribution'
)
pylab.xlabel('Voidsizes (Ang)')
pylab.ylabel('Distribution')
pylab.legend()

pylab.show()

voidsize_distribution.py

Notes

The voidsize distribution analysis calculates the average diameters of the volume of voids between atoms, primarily in disordered solid like glasses. The underlying algorithm first creates a Delaunay-triangulation of the selected coordinates, and then calculates the tetrahedral volume of each simplex. This volume is reduced by the overlap of the volumes of the adjacent vertices with the tetrahedron. The volumes of the vertices are calculated as spheres whose radii can either be specified as parameters, or are taken from the atomic covalent radii. Finally, the resulting void volumes are approximated by spheres with equivalent volume, and a histogram of the diameters of these spheres is used as a measure for the voidsize distribution.

This feature requires the ATK-Classical license feature.