Source code for lattice_mc.species

import numpy as np

[docs]class Species: """ Species class. Contains methods that operate on sets of Atom objects """ def __init__( self, atoms ): """ Initialise a Species object. Args: atoms (List(Atom)): A list of Atom objects. Returns: None """ self.atoms = atoms
[docs] def sites_occupied( self ): """ Returns a list of sites occupied by these atoms. Args: None Returns: (List): List of sites occupied by these atoms. """ return [ atom.site.number for atom in self.atoms ]
[docs] def sum_dr_squared( self ): """ Sum of squared total displacements for these atoms. Args: None Returns: (Float): The sum of squared total displacements for these atoms. """ return sum( [ atom.dr_squared() for atom in self.atoms ] )
[docs] def collective_dr_squared( self ): """ Squared sum of total displacements for these atoms. Args: None Returns: (Float): The square of the summed total displacements for these atoms. """ return sum( np.square( sum( [ atom.dr for atom in self.atoms ] ) ) )
[docs] def occupations( self, site_label ): """ Number of these atoms occupying a specific site type. Args: site_label (Str): Label for the site type being considered. Returns: (Int): Number of atoms occupying sites of type `site_label`. """ return sum( atom.site.label == site_label for atom in self.atoms )
[docs] def summed_dr2( self ): """ Sum of squared individual displacements for these atoms. Args: None Returns: (Float): The sum of squared individual displacements for these atoms. """ return sum( [ atom.summed_dr2 for atom in self.atoms ] )
[docs] def tracer_correlation( self ): """ Tracer correlation factor, f, for these atoms. Args: None Returns: (Float): The tracer correlation factor, f, for these atoms. """ return self.sum_dr_squared() / self.summed_dr2()
[docs] def collective_correlation( self ): """ Collective correlation factor, f_I, for these atoms. Args: None Returns: (Float): The collective correlation factor, f_I, for these atoms. """ return self.collective_dr_squared() / self.summed_dr2()