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:where<element-central> 2 <element-neighbor> <eta> <rshift> <rcutoff>
<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:where<element-central> 3 <element-neighbor1> <element-neighbor2> <eta> <lambda> <zeta> <rcutoff> <<rshift>>
<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:where<element-central> 9 <element-neighbor1> <element-neighbor2> <eta> <lambda> <zeta> <rcutoff> <<rshift>>
<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:where<element-central> 12 <eta> <rshift> <rcutoff>
<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:where<element-central> 13 <eta> <rshift> <lambda> <zeta> <rcutoff>
<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:
where<element-central> 20 <element-neighbor> <rlow> <rcutoff> <subtype>
<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:
where<element-central> 21 <element-neighbor1> <element-neighbor2> <rlow> <rcutoff> <left> <right> <subtype>
<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:
where<element-central> 22 <element-neighbor1> <element-neighbor2> <rlow> <rcutoff> <left> <right> <subtype>
<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:
where<element-central> 23 <rlow> <rcutoff> <subtype>
<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:
where<element-central> 24 <rlow> <rcutoff> <left> <right> <subtype>
<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:
where<element-central> 25 <rlow> <rcutoff> <left> <right> <subtype>
<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):
”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}}\)
-
enumerator POLY1