Semiempirical Tight Binding method was realized.
Class that realizes Tight-Binding method.
Constructor of class TB.
Args:
struct (Structure): nanostructure.
lib (module): dynamic library, it realize filling Hamiltonian matrix, calculating repulsive energie, forces acting on atoms.
parms (dict): parameters of method.
Kwargs:
functions (list): list of functions that will be loaded from lib library.
Calculating full energy of nanostructure.
Returns:
energy_total(float): full energy of nanostructure
Calculating bond energy using formula
where is a value on diagonal of diagonalised hamiltonian
Returns:
energy_bond(float): bond energy of atoms
Repulsive energy between two atoms
Total repulsive energy
Function changes method for calculating forces, acting on atoms of structure, to ensure, that hamiltonian matrix is not zero before calculation start and eigenvectors can be calculated.
Loading of function that calculate forces and creating wrap-methods from dynamic library.
Args:
functions (list): list of functions, that will be loaded from lib
lib (module): dynamic library
Loading of functions from dynamic library and creating wrap-methods.
Args:
functions (list): list of functions, that will be loaded from lib
lib (module): dynamic library
Preprocessing for TB method, that:
Molecular mechanics method was realized.
Wrap class for computational modules of molecular mechanical method.
Constructor of class:
Args:
struct(structure): nanostructure
lib(module): dynamic library
ff_functions(list): list of names of force field functions
ff_params(list): list of names of parameters of force field functions
Returns summ of energies, calculated by functions from list ‘functions_ij’
Args:
ff_functions(list): list of names of atom types
lib(module): dynamic library for molecular mechanics computation
It checks matching of atom types and atom names of structure with the same parameters of force field. If there are no atom types in structure function rebuilds it from atom names. If there are no atom names, it prints, that it’s not possible to check out correctness of atom types.
Method REBO was realised according to article: Donald W. Brenner, Olga A. Shenderova, Judith A. Harrison, Steven J. Stuart, Boris Ni, and Susan B. Sinnott, “A second-generation reactive empirical bond order (REBO) potential energy expression for hydrocarbons” // J. Phys.: Condens. Matter 14(2002), P. 783–802. Description for method was taken from this article.
Chemical binding energy can be written as a sum over nearest neighbours in the form:
(1)
The equation (1) is used for the total potential energy. Following the earlier hydrocarbon bonding expression, the empirical bond order function used here is written as a sum of terms:
(2)
Values for the function and depend on the local coordination and bond angles for atoms and respectively. The function is further written as a sum of two terms:
(3)
The first generation hydrocarbon expression used Morse-type terms for the pair interactions in equation (1). It was determined that this form is too restrictive to simultaneously fit equilibrium distances, energies, and force constants for carbon-carbon bonds. This form has the further disadvantage that both terms go to finite values as the distance between atoms decreases, limiting the possibility of modeling process involving energetic atomic collisions. In the second-generation potential next forms are used for attractive ad repulsive potentials:
(4)
and
(5)
Analytic forms for each term in equation (2) are fitted to both the discrete values of the bond orders above, and to other properties of solid-state and molecular carbon as described below. The first term in equation (2):
(6)
where is a function to ensure that interations include only nearest neighbours. P represents a bicubic spline and quantities and represent the number of carbon and hydrogen atoms, respectively, that are neighbours of atom . It’s defined by next equations:
(7)
and
(8)
The term is taken as tricubic spline :
(9)
is given by next expression:
(10)
where
(11)
and
(12)
The term in equation (3) :
(13)
where
(14)
The function is a tricubic spline, and are unit vectors in the direction of the cross products and , respecrively, where R are vectors connecting subscripted atoms.
The value of is defined by a switching function of the form:
(15)
AIREBO method was realized according to article: Steven J. Stuart, Alan B. Tutein and Judith A. Harrison. “A reactive potential for hydrocarbons with intermolecular interactions” // Journ. of Chem. Phys., V 112,14 (2000), p. 6472-6486.
AIREBO potential can be represented by a sum over pairwise interactions, including covalent bonding REBO interactions, LJ terms, and torsion interactions:
(16)
Van-der-Vaals interaction is described through the using of the Lennard-Jones potential:
(17)
is the traditional LJ term:
(18)
It was modified by several sets of switching functions. S(t) can be represented in the next form:
(19)
Magnitude of LJ interactions depends on bonding environment. Gradual exclusion of Lennard-Jones interactions with changings of is controlled by scalling function :
(20)
If atoms and are not connected by two or fewer intermediate atoms, LJ interactions between them are controlled by next switching function:
(21)
where:
The torsional part of equation (16) for the dihedral angle determined by atoms i, j, k, l has the next form:
(22)
where is the torsional potential:
(23)
- class kvazar.core.airebo.AIREBO(struct, ff_params, comm=None)[source]¶
This class is the successor of class MM
Constructor of class AIREBO:
Args:
struct(structure): nanostructure
ff_params(list): list of names of potentials functions
- init_cutoff(r_in, r_out, cutoff_neighbours)[source]¶
Args:
r_in(float): internal cutoff radius
r_out(float): external cutoff radius
cutoff_neighbours(list): list of neighbours get into the field with r_out radius
MARTINI force field for coarse-grained modeling was realized.
This class is the successor of class MM
Constructor of class MARTINI:
Args:
struct(structure): nanostructure
ff_params(list): list of names of force field parameters(functions)
Args:
r_in(float): internal cutoff radius
r_out(float): external cutoff radius
cutoff_neighbours(list): list of neighbours get into the field with r_out radius