# Symmetry function types

## Behler and Parrinello PRL 2007

$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

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

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.

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)

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):

• ”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}}$$