Tersoff#

class nfflr.models.Tersoff(params: TersoffConfig = TersoffConfig(e1='Si', e2='Si', e3='Si', m=3, gamma=1.0, lambda3=1.3258, c=4.8381, d=2.0417, costheta0=0.0, n=22.956, beta=0.33675, lambda2=1.3258, B=95.373, R=3.0, D=0.2, lambda1=3.2394, A=3264.7))[source]#

Tersoff potential following LAMMPS implementation.

paper: Tersoff, 1988, 10.1103/PhysRevB.38.9902

Refer to https://docs.lammps.org/pair_tersoff.html

Methods

angular_term(g)

Tersoff zeta term, for each edge.

f_attractive(r)

Tersoff pair attractive term.

f_repulsive(r)

Tersoff pair repulsion term.

fcut(r)

Tersoff style smooth cutoff function.

forward(g)

Evaluate Tersoff model for DGLGraph g.

g(angle_cosine)

Tersoff angle term.

fcut(r: Tensor)[source]#

Tersoff style smooth cutoff function.

Parameters:
r:

bond length

f_repulsive(r)[source]#

Tersoff pair repulsion term.

f_attractive(r)[source]#

Tersoff pair attractive term.

g(angle_cosine)[source]#

Tersoff angle term.

angular_term(g: DGLGraph)[source]#

Tersoff zeta term, for each edge.

\[\sum_{k \neq i, j} \textrm{fcut}(r_{ik}) g(\cos(\theta)) \exp(\lambda_3^m (r_{ij} - r_{ij})^m)\]

Note

relies on relative bond vectors g.edata["r"].requires_grad_ == True.

Parameters:
g: dgl.DGLGraph

neighbor list graph

forward(g: DGLGraph)[source]#

Evaluate Tersoff model for DGLGraph g.

class nfflr.models.TersoffConfig(e1: str = 'Si', e2: str = 'Si', e3: str = 'Si', m: Literal[1, 3] = 3, gamma: float = 1.0, lambda3: float = 1.3258, c: float = 4.8381, d: float = 2.0417, costheta0: float = 0.0, n: float = 22.956, beta: float = 0.33675, lambda2: float = 1.3258, B: float = 95.373, R: float = 3.0, D: float = 0.2, lambda1: float = 3.2394, A: float = 3264.7)[source]#

Tersoff potential parameters.

values correspond to J. Tersoff, Phys. Rev. B 37, 6991 (1988) as documented by https://www.ctcms.nist.gov/potentials/entry/1988–Tersoff-J–Si-b/