Symmetry function types

Behler and Parrinello PRL 2007

class SymFncExpRad : public nnp::SymFncBaseCutoff

Radial symmetry function (type 2)

\[ G^2_i = \sum_{j \neq i} \mathrm{e}^{-\eta(r_{ij} - r_\mathrm{s})^2} f_c(r_{ij}) \]
Parameter string:
<element-central> 2 <element-neighbor> <eta> <rshift> <rcutoff>
where
  • <element-central> .... element symbol of central atom

  • <element-neighbor> ... element symbol of neighbor atom

  • <eta> ................ \(\eta\)

  • <rshift> ............. \(r_\mathrm{s}\)

  • <rcutoff> ............ \(r_c\)

class SymFncExpAngn : public nnp::SymFncBaseExpAng

Angular symmetry function (type 3)

\[\begin{split} G^3_i = 2^{1-\zeta} \sum_{\substack{j,k\neq i \\ j < k}} \left( 1 + \lambda \cos \theta_{ijk} \right)^\zeta \mathrm{e}^{-\eta( (r_{ij}-r_s)^2 + (r_{ik}-r_s)^2 + (r_{jk}-r_s)^2 ) } f_c(r_{ij}) f_c(r_{ik}) f_c(r_{jk}) \end{split}\]
Parameter string:
<element-central> 3 <element-neighbor1> <element-neighbor2> <eta> <lambda> <zeta> <rcutoff> <<rshift>>
where
  • <element-central> ..... element symbol of central atom

  • <element-neighbor1> ... element symbol of neighbor atom 1

  • <element-neighbor2> ... element symbol of neighbor atom 2

  • <eta> ................. \(\eta\)

  • <lambda> .............. \(\lambda\)

  • <zeta> ................ \(\zeta\)

  • <rcutoff> ............. \(r_c\)

  • <<rshift>> ............ \(r_s\) (optional, default \(r_s = 0\))

Behler JCP 2011

class SymFncExpAngw : public nnp::SymFncBaseExpAng

Angular symmetry function (type 9)

\[\begin{split} G^9_i = 2^{1-\zeta} \sum_{\substack{j,k\neq i \\ j < k}} \left( 1 + \lambda \cos \theta_{ijk} \right)^\zeta \mathrm{e}^{-\eta( (r_{ij}-r_s)^2 + (r_{ik}-r_s)^2 ) } f_c(r_{ij}) f_c(r_{ik}) \end{split}\]
Parameter string:
<element-central> 9 <element-neighbor1> <element-neighbor2> <eta> <lambda> <zeta> <rcutoff> <<rshift>>
where
  • <element-central> ..... element symbol of central atom

  • <element-neighbor1> ... element symbol of neighbor atom 1

  • <element-neighbor2> ... element symbol of neighbor atom 2

  • <eta> ................. \(\eta\)

  • <lambda> .............. \(\lambda\)

  • <zeta> ................ \(\zeta\)

  • <rcutoff> ............. \(r_c\)

  • <<rshift>> ............ \(r_s\) (optional, default \(r_s = 0\))

Gastegger et al. JCP 2018

class SymFncExpRadWeighted : public nnp::SymFncBaseCutoff

Weighted radial symmetry function (type 12)

\[ G^{12}_i = \sum_{j \neq i} Z_j \, \mathrm{e}^{-\eta(r_{ij} - r_\mathrm{s})^2} f_c(r_{ij}) \]
Parameter string:
<element-central> 12 <eta> <rshift> <rcutoff>
where
  • <element-central> .... element symbol of central atom

  • <eta> ................ \(\eta\)

  • <rshift> ............. \(r_\mathrm{s}\)

  • <rcutoff> ............ \(r_c\)

class SymFncExpAngnWeighted : public nnp::SymFncBaseCutoff

Weighted angular symmetry function (type 13)

\[\begin{split} G^{13}_i = 2^{1-\zeta} \sum_{\substack{j,k\neq i \\ j < k}} Z_j Z_k \, \left( 1 + \lambda \cos \theta_{ijk} \right)^\zeta \mathrm{e}^{-\eta \left[ (r_{ij} - r_s)^2 + (r_{ik} - r_s)^2 + (r_{jk} - r_s)^2 \right] } f_c(r_{ij}) f_c(r_{ik}) f_c(r_{jk}) \end{split}\]
Parameter string:
<element-central> 13 <eta> <rshift> <lambda> <zeta> <rcutoff>
where
  • <element-central> ..... element symbol of central atom

  • <eta> ................. \(\eta\)

  • <rshift> .............. \(r_s\)

  • <lambda> .............. \(\lambda\)

  • <zeta> ................ \(\zeta\)

  • <rcutoff> ............. \(r_c\)

Bircher et al. arXiv 2020

class SymFncCompRad : public nnp::SymFncBaseComp

Radial symmetry function with compact support (type 20)

\[ G^{20}_i = \sum_{\substack{j \neq i}} C(r_{ij}, r_l, r_c), \]
where \(C(x, x_\text{low}, x_\text{high})\) is a function with compact support \(\left[x_\text{low}, x_\text{high}\right]\).

Parameter string:

<element-central> 20 <element-neighbor> <rlow> <rcutoff> <subtype>
where
  • <element-central> .... element symbol of central atom

  • <element-neighbor> ... element symbol of neighbor atom

  • <rlow> ............... low radius boundary \(r_{l}\)

  • <rcutoff> ............ high radius boundary \(r_{c}\)

  • <subtype> ............ compact function specifier

See the description of SymFncBaseComp::setCompactFunction() for possible values of the <subtype> argument.

class SymFncCompAngn : public nnp::SymFncBaseCompAng

Narrow angular symmetry function with compact support (type 21)

\[\begin{split} G^{21}_i = \sum_{\substack{j,k\neq i \\ j < k}} C(r_{ij}, r_l, r_c) C(r_{ik}, r_l, r_c) C(r_{jk}, r_l, r_c) C(\theta_{ijk}, \theta_l, \theta_r), \end{split}\]
where \(C(x, x_\text{low}, x_\text{high})\) is a function with compact support \(\left[x_\text{low}, x_\text{high}\right]\).

Parameter string:

<element-central> 21 <element-neighbor1> <element-neighbor2> <rlow> <rcutoff> <left> <right> <subtype>
where
  • <element-central> ..... element symbol of central atom

  • <element-neighbor1> ... element symbol of neighbor atom 1

  • <element-neighbor2> ... element symbol of neighbor atom 2

  • <rlow> ................ low radius boundary \(r_{l}\)

  • <rcutoff> ............. high radius boundary \(r_{c}\)

  • <left> ................ left angle boundary \(\theta_l\)

  • <right> ............... right angle boundary \(\theta_r\)

  • <subtype> ............. compact function specifier

See the description of SymFncBaseComp::setCompactFunction() for possible values of the <subtype> argument.

Note

If <subtype> specifies an asymmetric version of a polynomial core function the asymmetry only applies to the radial parts, i.e. “p2a” sets a “p2a” radial compact function and a “p2” angular compact function.

class SymFncCompAngw : public nnp::SymFncBaseCompAng

Wide angular symmetry function with compact support (type 22)

\[\begin{split} G^{22}_i = \sum_{\substack{j,k\neq i \\ j < k}} C(r_{ij}, r_l, r_c) C(r_{ik}, r_l, r_c) C(\theta_{ijk}, \theta_l, \theta_r), \end{split}\]
where \(C(x, x_\text{low}, x_\text{high})\) is a function with compact support \(\left[x_\text{low}, x_\text{high}\right]\).

Parameter string:

<element-central> 22 <element-neighbor1> <element-neighbor2> <rlow> <rcutoff> <left> <right> <subtype>
where
  • <element-central> ..... element symbol of central atom

  • <element-neighbor1> ... element symbol of neighbor atom 1

  • <element-neighbor2> ... element symbol of neighbor atom 2

  • <rlow> ................ low radius boundary \(r_{l}\)

  • <rcutoff> ............. high radius boundary \(r_{c}\)

  • <left> ................ left angle boundary \(\theta_l\)

  • <right> ............... right angle boundary \(\theta_r\)

  • <subtype> ............. compact function specifier

See the description of SymFncBaseComp::setCompactFunction() for possible values of the <subtype> argument.

Note

If <subtype> specifies an asymmetric version of a polynomial core function the asymmetry only applies to the radial parts, i.e. “p2a” sets a “p2a” radial compact function and a “p2” angular compact function.

class SymFncCompRadWeighted : public nnp::SymFncBaseComp

Weighted radial symmetry function with compact support (type 23)

\[ G^{23}_i = \sum_{\substack{j \neq i}} Z_j C(r_{ij}, r_l, r_c), \]
where \(C(x, x_\text{low}, x_\text{high})\) is a function with compact support \(\left[x_\text{low}, x_\text{high}\right]\). \(Z_j\) is defined as the atomic number of the neighbor atom \(j\).

Parameter string:

<element-central> 23 <rlow> <rcutoff> <subtype>
where
  • <element-central> .... element symbol of central atom

  • <rlow> ................ low radius boundary \(r_{l}\)

  • <rcutoff> ............. high radius boundary \(r_{c}\)

  • <subtype> ............ compact function specifier

See the description of SymFncBaseComp::setCompactFunction() for possible values of the <subtype> argument.

class SymFncCompAngnWeighted : public nnp::SymFncBaseCompAngWeighted

Weighted narrow angular symmetry function with compact support (type 24)

\[\begin{split} G^{24}_i = \sum_{\substack{j,k\neq i \\ j < k}} Z_j Z_k C(r_{ij}, r_l, r_c) C(r_{ik}, r_l, r_c) C(r_{jk}, r_l, r_c) C(\theta_{ijk}, \theta_l, \theta_r), \end{split}\]
where \(C(x, x_\text{low}, x_\text{high})\) is a function with compact support \(\left[x_\text{low}, x_\text{high}\right]\). \(Z_j\) is defined as the atomic number of the neighbor atom \(j\).

Parameter string:

<element-central> 24 <rlow> <rcutoff> <left> <right> <subtype>
where
  • <element-central> ..... element symbol of central atom

  • <rlow> ................ low radius boundary \(r_{l}\)

  • <rcutoff> ............. high radius boundary \(r_{c}\)

  • <left> ................ left angle boundary \(\theta_l\)

  • <right> ............... right angle boundary \(\theta_r\)

  • <subtype> ............. compact function specifier

See the description of SymFncBaseComp::setCompactFunction() for possible values of the <subtype> argument.

Note

If <subtype> specifies an asymmetric version of a polynomial core function the asymmetry only applies to the radial parts, i.e. “p2a” sets a “p2a” radial compact function and a “p2” angular compact function.

class SymFncCompAngwWeighted : public nnp::SymFncBaseCompAngWeighted

Weighted wide angular symmetry function with compact support (type 25)

\[\begin{split} G^{25}_i = \sum_{\substack{j,k\neq i \\ j < k}} Z_j Z_k C(r_{ij}, r_l, r_c) C(r_{ik}, r_l, r_c) C(\theta_{ijk}, \theta_l, \theta_r), \end{split}\]
where \(C(x, x_\text{low}, x_\text{high})\) is a function with compact support \(\left[x_\text{low}, x_\text{high}\right]\). \(Z_j\) is defined as the atomic number of the neighbor atom \(j\).

Parameter string:

<element-central> 25 <rlow> <rcutoff> <left> <right> <subtype>
where
  • <element-central> ..... element symbol of central atom

  • <rlow> ................ low radius boundary \(r_{l}\)

  • <rcutoff> ............. high radius boundary \(r_{c}\)

  • <left> ................ left angle boundary \(\theta_l\)

  • <right> ............... right angle boundary \(\theta_r\)

  • <subtype> ............. compact function specifier

See the description of SymFncBaseComp::setCompactFunction() for possible values of the <subtype> argument.

Note

If <subtype> specifies an asymmetric version of a polynomial core function the asymmetry only applies to the radial parts, i.e. “p2a” sets a “p2a” radial compact function and a “p2” angular compact function.

void nnp::SymFncBaseComp::setCompactFunction(std::string subtype)

Set radial compact function.

The subtype argument determines which CoreFunction::Type is used to generate the CompactFunction used by symmetry functions. The following strings are accepted (without the apostrophes):

  • ”e”: CoreFunction::Type::EXP

  • ”pN”, where “N” is one of “1,2,3,4”, corresponding to the polynomial CoreFunction::Type POLYN, respectively. “pN” can be followed by the letter “a”, which will enable the asymmetric version of the compact function, i.e. \(2x - x^2\) is used as argument. Examples: “p2”, “p3a”, “p4”.

Parameters

subtype[in] Core function specification.

enum class nnp::CoreFunction::Type

List of available function types.

Values:

enumerator POLY1

\(f(x) = (2x - 3)x^2 + 1\)

enumerator POLY2

\(f(x) = ((15 - 6x)x - 10) x^3 + 1\)

enumerator POLY3

\(f(x) = (x(x(20x - 70) + 84) - 35)x^4 + 1\)

enumerator POLY4

\(f(x) = (x(x((315 - 70x)x - 540) + 420) - 126)x^5 + 1\)

enumerator EXP

\(f(x) = e^{1 - \frac{1}{1 - x^2}}\)