Merge pull request #2570 from kipbarrett/pair_rann

Add new Package USER-RANN with pair style rann for using a neural network to compute energies and forces
This commit is contained in:
Axel Kohlmeyer
2021-05-27 13:07:26 -04:00
committed by GitHub
42 changed files with 8680 additions and 8 deletions

View File

@ -145,7 +145,7 @@ set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-HDNNP USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESONT USER-MGPT USER-MISC
USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB
USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
USER-RANN USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-PACE USER-BROWNIAN)
set(SUFFIX_PACKAGES CORESHELL GPU KOKKOS OPT USER-INTEL USER-OMP)

View File

@ -9,7 +9,7 @@ set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-HDNNP USER-INTEL USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESODPD
USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
USER-PACE USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
USER-PACE USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP USER-RANN
USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
USER-TALLY USER-UEF USER-VTK USER-YAFF)

View File

@ -11,7 +11,7 @@ set(ALL_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GPU
USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD
USER-HDNNP USER-INTEL USER-LB USER-MANIFOLD USER-MDI USER-MEAMC USER-MESODPD
USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-OMP
USER-PACE USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP
USER-PACE USER-PHONON USER-PLUMED USER-PTM USER-QMMM USER-QTB USER-QUIP USER-RANN
USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
USER-TALLY USER-UEF USER-VTK USER-YAFF)

View File

@ -227,6 +227,7 @@ OPT.
* :doc:`polymorphic <pair_polymorphic>`
* :doc:`python <pair_python>`
* :doc:`quip <pair_quip>`
* :doc:`rann <pair_rann>`
* :doc:`reax/c (ko) <pair_reaxc>`
* :doc:`rebo (io) <pair_airebo>`
* :doc:`resquared (go) <pair_resquared>`

View File

@ -100,6 +100,7 @@ page gives those details.
* :ref:`USER-QMMM <PKG-USER-QMMM>`
* :ref:`USER-QTB <PKG-USER-QTB>`
* :ref:`USER-QUIP <PKG-USER-QUIP>`
* :ref:`USER-RANN <PKG-USER-RANN>`
* :ref:`USER-REACTION <PKG-USER-REACTION>`
* :ref:`USER-REAXC <PKG-USER-REAXC>`
* :ref:`USER-SCAFACOS <PKG-USER-SCAFACOS>`
@ -2277,6 +2278,31 @@ This package has :ref:`specific installation instructions <user-quip>` on the :d
----------
.. _PKG-USER-RANN:
USER-RANN package
-----------------
**Contents:**
A pair style for using rapid atomistic neural network (RANN) potentials.
These neural network potentials work by first generating a series of symmetry
functions from the neighbor list and then using these values as the input layer
of a neural network.
**Authors:**
This package was written by Christopher Barrett
with contributions by Doyl Dickel, Mississippi State University.
**Supporting info:**
* src/USER-RANN: filenames -> commands
* :doc:`pair_style rann <pair_rann>`
* examples/USER/rann
----------
.. _PKG-USER-REACTION:
USER-REACTION package

View File

@ -101,6 +101,8 @@ package:
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-QUIP <PKG-USER-QUIP>` | QUIP/libatoms interface | :doc:`pair_style quip <pair_quip>` | USER/quip | ext |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-RANN <PKG-USER-RANN>` | rapid atomistic neural network (RANN) potentials | :doc:`pair rann <pair_rann>` | USER/rann | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-REACTION <PKG-USER-REACTION>` | chemical reactions in classical MD | :doc:`fix bond/react <fix_bond_react>` | USER/reaction | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-REAXC <PKG-USER-REAXC>` | ReaxFF potential (C/C++) | :doc:`pair_style reaxc <pair_reaxc>` | reax | no |

412
doc/src/pair_rann.rst Normal file
View File

@ -0,0 +1,412 @@
.. index:: pair_style rann
pair_style rann command
=======================
Syntax
""""""
.. code-block:: LAMMPS
pair_style rann
pair_coeff file Type1_element Type2_element Type3_element...
Examples
""""""""
.. code-block:: LAMMPS
pair_style rann
pair_coeff ** Mg.rann Mg
pair_coeff ** MgAlalloy.rann Mg Mg Al Mg
Description
"""""""""""
Pair style *rann* computes pairwise interactions for a variety of
materials using rapid atomistic neural network (RANN) potentials
(:ref:`Dickel <Dickel>` , :ref:`Nitol <Nitol>`). Neural network
potentials work by first generating a series of symmetry functions
i.e. structural fingerprints from the neighbor list and then using these
values as the input layer of a neural network. There is a single output
neuron in the final layer which is the energy. Atomic forces are found
by analytical derivatives computed via back-propagation. For alloy
systems, each element has a unique network.
Potential file syntax
"""""""""""""""""""""
The RANN potential is defined by a single text file which contains all
the fitting parameters for the alloy system. The potential file also
defines the active fingerprints, network architecture, activation
functions, etc. The potential file is divided into several sections
which are identified by one of the following keywords:
* atomtypes
* mass
* fingerprintsperelement
* fingerprints
* fingerprintconstants
* screening (optional)
* networklayers
* layersize
* weight
* bias
* activationfunctions
* calibrationparameters (ignored)
The '#' character is treated as a comment marker, similar to LAMMPS
input scripts. Sections are not required to follow a rigid ordering,
but do require previous definition of prerequisite information. E.g.,
fingerprintconstants for a particular fingerprint must follow the
fingerprints definition; layersize for a particular layer must follow
the declaration of network layers.
*atomtypes* are defined as follows using element keywords separated by spaces.
.. code-block::
atomtypes:
Fe Mg Al etc.
*mass* must be specified for each element keyword as follows:
.. code-block::
mass:Mg:
24.305
mass:Fe:
55.847
mass:Al:
26.982
*fingerprintsperelement* specifies how many fingerprints are active for
computing the energy of a given atom. This number must be specified for
each element keyword. Active elements for each fingerprint depend upon
the type of the central atom and the neighboring atoms. Pairwise
fingerprints may be defined for a Mg atom based exclusively on its Al
neighbors, for example. Bond fingerprints may use two neighbor lists of
different element types. In computing fingerprintsperelement from all
defined fingerprints, only the fingerprints defined for atoms of a
particular element should be considered, regardless of the elements used
in its neighbor list. In the following code, for example, some
fingerprints may compute pairwise fingerprints summing contributions
about Fe atoms based on a neighbor list of exclusively Al atoms, but if
there are no fingerprints summing contributions of all neighbors about a
central Al atom, then fingerprintsperelement of Al is zero:
.. code-block::
fingerprintsperelement:Mg:
5
fingerprintsperelement:Fe:
2
fingerprintsperelement:Al:
0
*fingerprints* specifies the active fingerprints for a certain element
combination. Pair fingerprints are specified for two elements, while
bond fingerprints are specified for three elements. Only one
fingerprints header should be used for an individual combination of
elements. The ordering of the fingerprints in the network input layer
is determined by the order of element combinations specified by
subsequent *fingerprints* lines, and the order of the fingerprints
defined for each element combination. Multiple fingerprints of the same
style or different ones may be specified. If the same style and element
combination is used for multiple fingerprints, they should have
different id numbers. The first element specifies the atoms for which
this fingerprint is computed while the other(s) specify which atoms to
use in the neighbor lists for the computation. Switching the second and
third element type in bond fingerprints has no effect on the
computation:
.. code-block::
fingerprints:Mg_Mg:
radial_0 radialscreened_0 radial_1
fingerprints:Mg_Al_Fe:
bond_0 bondspin_0
fingerprints:Mg_Al:
radial_0 radialscreened_0
The following fingerprint styles are currently defined. See the
:ref:`formulation section <fingerprints>` below for their definitions:
* radial
* radialscreened
* radialspin
* radialscreenedspin
* bond
* bondscreened
* bondspin
* bondscreenedspin
*fingerprintconstants* specifies the meta-parameters for a defined fingerprint. For all radial styles, re, rc,
alpha, dr, o, and n must be specified. re should usually be the stable interatomic distance, rc is the cutoff
radius, dr is the cutoff smoothing distance, o is the lowest radial power term (which may be negative), and n
is the highest power term. The total length of the fingerprint vector is (n-o+1). alpha is a list of decay parameters
used for exponential decay of radial contributions. It may be set proportionally to the bulk modulus similarly
to MEAM potentials, but other values may provided better fitting in special cases. Bond style fingerprints require
specification of re, rc, alphak, dr, k, and m. Here m is the power of the bond cosines and k is the number of
decay parameters. Cosine powers go from 0 to m-1 and are each computed for all values of alphak. Thus the total
length of the fingerprint vector is m*k.
.. code-block::
fingerprintconstants:Mg_Mg:radialscreened_0:re:
3.193592
fingerprintconstants:Mg_Mg:radialscreened_0:rc:
6.000000
fingerprintconstants:Mg_Mg:radialscreened_0:alpha:
5.520000 5.520000 5.520000 5.520000 5.520000
fingerprintconstants:Mg_Mg:radialscreened_0:dr:
2.806408
fingerprintconstants:Mg_Mg:radialscreened_0:o:
-1
fingerprintconstants:Mg_Mg:radialscreened_0:n:
3
*screening* specifies the Cmax and Cmin values used in the screening
fingerprints. Contributions form neighbors to the fingerprint are
omitted if they are blocked by a closer neighbor, and reduced if they
are partially blocked. Larger values of Cmin correspond to neighbors
being blocked more easily. Cmax cannot be greater than 3, and Cmin
cannot be greater than Cmax or less than zero. Screening may be omitted
in which case the default values Cmax = 2.8, Cmin = 0.8 are used. Since
screening is a bond computation, it is specified separately for each
combination of three elements in which the latter two may be
interchanged with no effect.
.. code-block::
screening:Mg_Mg_Mg:Cmax:
2.700000
screening:Mg_Mg_Mg:Cmin:
0.400000
*networklayers* species the size of the neural network for each atom.
It counts both the input and output layer and so is 2 + \<hidden layers\>.
.. code-block::
networklayers:Mg:
3
*layersize* specifies the length of each layer, including the input
layer and output layer. The input layer is layer 0. The size of the
input layer size must match the summed length of all the fingerprints
for that element, and the output layer size must be 1:
.. code-block::
layersize:Mg:0:
14
layersize:Mg:1:
20
layersize:Mg:2:
1
*weight* specifies the weight for a given element and layer. Weight
cannot be specified for the output layer. The weight of layer i is a
*m* x *n* matrix where *m* is the layer size of *i* and *n* is the layer size of
*i*\ +1:
.. code-block::
weight:Mg:0:
w11 w12 w13 ...
w21 w22 w23 ...
...
*bias* specifies the bias for a given element and layer. Bias cannot be
specified for the output layer. The bias of layer i is a nx1 vector
where n is the layer size of i+1:
.. code-block::
bias:Mg:0:
b1
b2
b3
...
*activationfunctions* specifies the activation function for a given
element and layer. Activation functions cannot be specified for the
output layer:
.. code-block::
activationfunctions:Mg:0:
sigI
activationfunctions:Mg:1:
linear
The following activation styles are currently specified. See the
:ref:`formulation section <activations>` below for their definitions.
* sigI
* linear
*calibrationparameters* specifies a number of parameters used to calibrate the potential. These are ignored
by LAMMPS.
Formulation
"""""""""""
In the RANN formulation, the total energy of a system of atoms
is given by:
.. math::
E = \sum_{\alpha} E^{\alpha}\\\\
E^{\alpha} = {}^{N}\!A^{\alpha}\\\\
{}^{n+1}\!A_i^{\alpha} = {}^{n}\!F\left({}^{n}\!W_{ij}{\;}^{n}\!A_j^{\alpha}+{}^{n}\!B_i\right)\\\\
{}^{0}\!A_i^{\alpha} = \left[\begin{array}{c} {}^1\!S\!f^\alpha\\ {}^2\!S\!f^\alpha \\...\\\end{array}\right]
Here :math:`E^\alpha` is the energy of atom :math:`\alpha`,
:math:`{}^n\!F()`, :math:`{}^n\!W_{ij}` and :math:`{}^n\!B_i` are the
activation function, weight matrix and bias vector of the n-th layer
respectively. The inputs to the first layer are a collection of
structural fingerprints which are collected and reshaped into a single
long vector. The individual fingerprints may be defined in any order
and have various shapes and sizes. Multiple fingerprints of the same
type and varying parameters may also be defined in the input layer.
Eight types of structural fingerprints are currently defined. In the
following, :math:`\beta` and :math:`\gamma` span the full neighbor list
of atom :math:`\alpha`. :math:`\delta_i` are decay meta-parameters, and
:math:`r_e` is a meta-parameter roughly proportional to the first
neighbor distance. :math:`r_c` and :math:`dr` are the neighbor cutoff
distance and cutoff smoothing distance respectively.
:math:`S^{\alpha\beta}` is the MEAM screening function :ref:`(Baskes)
<Baskes97>`, :math:`s_i^\alpha` and :math:`s_i^\beta` are the atom spin
vectors :ref:`(Tranchida) <Tranchida7>`. :math:`r^{\alpha\beta}` is the
distance from atom :math:`\alpha` to atom :math:`\beta`, and
:math:`\theta^{\alpha\beta\gamma}` is the bond angle:
.. math ::
cos\left(\theta^{\alpha\beta\gamma}\right)=\frac{\mathbf{r}^{\alpha\beta} \cdot \mathbf{r}^{\alpha\gamma}}{r^{\alpha\beta}r^{\alpha\gamma}}
:math:`S^{\alpha\beta}` is defined as :ref:`(Baskes) <Baskes97>`:
.. math::
X^{\gamma\beta} = \left(\frac{r^{\gamma\beta}}{r^{\alpha\beta}}\right)^2\\
\\
X^{\alpha\gamma} = \left(\frac{r^{\alpha\gamma}}{r^{\alpha\beta}}\right)^2\\
\\
C = \frac{2\left(X^{\alpha\gamma}+X^{\gamma\beta}\right)-\left(X^{\alpha\gamma}-X^{\gamma\beta}\right)^2-1}{1-\left(X^{\alpha\gamma}-X^{\gamma\beta}\right)^2}\\
\\
f_c(x) = \left[\begin{array}{l} 1 \; \: x \geq 1\\ \left(1-\left(1-x\right)^4\right)^2 \; \: 0<x<1\\0\; \; x\leq0\end{array}\right.\\
\\
S^{\alpha\beta\gamma} = f_c\left(\frac{C-C_{min}}{C_{max}-C_{min}}\right)\\
\\
S^{\alpha\beta} = \prod_\gamma S^{\alpha\beta\gamma}\\
The structural fingerprints are computed as follows:
.. _fingerprints:
* **radial**
.. math::
{}^r\!S\!f_i^\alpha = \sum_{\beta} \left(\frac{r^{\alpha\beta}}{r_e}\right)^ie^{-\delta_i \frac{r^{\alpha\beta}}{r_e}}f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)
* **bond**
.. math::
{}^b\!S\!f_{ij}^\alpha = \sum_{\beta}\sum_{\gamma} \left(cos(\theta_{\alpha\beta\gamma})\right)^ie^{-\delta_j \frac{r^{\alpha\beta}}{r_e}}e^{-\delta_j \frac{r^{\alpha\gamma}}{r_e}}f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)f_c\left(\frac{r_c-r^{\alpha\gamma}}{dr}\right)
* **radialscreened**
.. math::
{}^{rsc}\!S\!f_i^\alpha = \sum_{\beta} \left(\frac{r^{\alpha\beta}}{r_e}\right)^ie^{-\delta_i \frac{r^{\alpha\beta}}{r_e}}S^{\alpha\beta}f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)
* **bondscreened**
.. math::
{}^{bsc}\!S\!f_{ij}^\alpha = \sum_{\beta}\sum_{\gamma} \left(cos(\theta_{\alpha\beta\gamma})\right)^ie^{-\delta_j \frac{r^{\alpha\beta}}{r_e}}e^{-\delta_j \frac{r^{\alpha\gamma}}{r_e}}S^{\alpha\beta}S^{\alpha\gamma}f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)f_c\left(\frac{r_c-r^{\alpha\gamma}}{dr}\right)
* **radialspin**
.. math::
{}^{rsp}\!S\!f_i^\alpha = \sum_{\beta} \left(\frac{r^{\alpha\beta}}{r_e}\right)^ie^{-\delta_i \frac{r^{\alpha\beta}}{r_e}}\left(\mathbf{s^\alpha \cdot s^\beta}\right)f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)
* **bondspin**
.. math::
{}^{bsp}\!S\!f_{ij}^\alpha = \sum_{\beta}\sum_{\gamma} \left(cos(\theta_{\alpha\beta\gamma})\right)^ie^{-\delta_j \frac{r^{\alpha\beta}}{r_e}}e^{-\delta_j \frac{r^{\alpha\gamma}}{r_e}}\left(\mathbf{s^\alpha \cdot s^\beta}\right)\left(\mathbf{s^\alpha \cdot s^\gamma}\right)f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)f_c\left(\frac{r_c-r^{\alpha\gamma}}{dr}\right)
* **radialscreenedspin**
.. math::
{}^{rscsp}\!S\!f_i^\alpha = \sum_{\beta} \left(\frac{r^{\alpha\beta}}{r_e}\right)^ie^{-\delta_i \frac{r^{\alpha\beta}}{r_e}}S^{\alpha\beta}\left(\mathbf{s^\alpha \cdot s^\beta}\right)f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)
* **bondscreenedspin**
.. math::
{}^{bscsp}\!S\!f_{ij}^\alpha = \sum_{\beta}\sum_{\gamma} \left(cos(\theta_{\alpha\beta\gamma})\right)^ie^{-\delta_j \frac{r^{\alpha\beta}}{r_e}}e^{-\delta_j \frac{r^{\alpha\gamma}}{r_e}}S^{\alpha\beta}S^{\alpha\gamma}\left(\mathbf{s^\alpha \cdot s^\beta}\right)\left(\mathbf{s^\alpha \cdot s^\gamma}\right)f_c\left(\frac{r_c-r^{\alpha\beta}}{dr}\right)f_c\left(\frac{r_c-r^{\alpha\gamma}}{dr}\right)
The activation functions are computed as follows:
.. _activations:
* **sigI**
.. math::
F^{sigI}(x) = 0.1x+0.9ln\left(e^x+1\right)
* **linear**
.. math::
F^{linear}(x) = x
Restrictions
""""""""""""
Pair style *rann* is part of the USER-RANN package. It is only enabled if LAMMPS was built with that
package. Additionally, if any spin fingerprint styles are used LAMMPS must be built with the SPIN
package as well.
Defaults
""""""""""""
Cmin = 0.8, Cmax = 2.8.
----------
.. _Baskes97:
**(Baskes)** Baskes,
Materials Chemistry and Physics, 50(2), 152-158, (1997).
.. _Dickel:
**(Dickel)** Dickel, Francis, and Barrett,
Computational Materials Science 171 (2020): 109157.
.. _Nitol:
**(Nitol)** Nitol, Dickel, and Barrett,
Computational Materials Science 188 (2021): 110207.
.. _Tranchida7:
**(Tranchida)** Tranchida, Plimpton, Thibaudeau and Thompson,
Journal of Computational Physics, 372, 406-425, (2018).

View File

@ -291,6 +291,7 @@ accelerated styles exist.
* :doc:`polymorphic <pair_polymorphic>` - polymorphic 3-body potential
* :doc:`python <pair_python>` -
* :doc:`quip <pair_quip>` -
* :doc:`rann <pair_rann>` -
* :doc:`reax/c <pair_reaxc>` - ReaxFF potential in C
* :doc:`rebo <pair_airebo>` - second generation REBO potential of Brenner
* :doc:`resquared <pair_resquared>` - Everaers RE-Squared ellipsoidal potential

View File

@ -23,6 +23,7 @@ acolor
acos
Acta
actinide
activationfunctions
acylindricity
addforce
Addington
@ -75,6 +76,7 @@ allocaters
allosws
AlO
Alonso
alphak
alphashrink
amap
Amatrix
@ -153,6 +155,7 @@ atomfile
AtomicPairStyle
atomID
atomistic
atomtypes
attogram
attograms
attrac
@ -288,6 +291,9 @@ BondAngle
BondBond
bondchk
bondmax
bondscreened
bondscreenedspin
bondspin
bondtype
Bonet
Bonomi
@ -340,6 +346,8 @@ bz
cadetblue
Cagin
calc
calibrationfunctions
calibrationparameters
calibre
caltech
Caltech
@ -670,6 +678,7 @@ diagonalized
diagonalizers
diagonalizing
Diallo
Dickel
diel
differentiable
diffusively
@ -722,6 +731,7 @@ doxygenclass
doxygenfunction
downarrow
Doye
Doyl
dpd
DPD
dpdTheta
@ -1638,6 +1648,7 @@ Laupretre
Lauriat
lavenderblush
lawngreen
layersize
lB
lbfgs
lbl
@ -2164,6 +2175,7 @@ nemd
netcdf
netstat
Nettleton
networklayers
Neumann
Nevent
nevery
@ -2198,6 +2210,7 @@ Ninteger
NiO
Nissila
nist
Nitol
nitride
nitrides
niu
@ -2672,6 +2685,9 @@ qw
qx
qy
qz
radialscreened
radialscreenedspin
radialspin
radian
radians
Rafferty
@ -2684,6 +2700,8 @@ ramping
Ramprasad
Randisi
randomizations
rann
RANN
Raphson
Rappe
Ravelo
@ -2960,6 +2978,7 @@ SiC
Siegmund
Siepmann
Sievers
sigI
sigmoid
Sij
Sikandar
@ -3661,6 +3680,8 @@ zz
Zm
PowerShell
filesystems
fingerprintconstants
fingerprintsperelement
zincblende
Zstandard
Zstd

View File

@ -0,0 +1,277 @@
#iter: 3957, evals: 6770, e_err: 1.2959304580e-05, e1: 1.2959304580e-05, ev_err 1.4570936792e-05, r_err: 1.0147937957e-06, lambda: 1.4986245485e+50
atomtypes:
Ti Zr
mass:Ti:
47.867000
mass:Zr:
91.224000
fingerprintsperelement:Ti:
3
fingerprintsperelement:Zr:
3
fingerprints:Ti_Ti:
radialscreened_0
fingerprints:Ti_all_all:
bondscreened_0
fingerprints:Ti_Zr:
radialscreened_0
fingerprints:Zr_Zr:
radialscreened_0
fingerprints:Zr_all_all:
bondscreened_0
fingerprints:Zr_Ti:
radialscreened_0
fingerprintconstants:Ti_Ti:radialscreened_0:re:
2.943843
fingerprintconstants:Ti_Ti:radialscreened_0:rc:
8.000000
fingerprintconstants:Ti_Ti:radialscreened_0:alpha:
4.720000 4.720000 4.720000 4.720000 4.720000
fingerprintconstants:Ti_Ti:radialscreened_0:dr:
5.056157
fingerprintconstants:Ti_Ti:radialscreened_0:o:
-1
fingerprintconstants:Ti_Ti:radialscreened_0:n:
3
fingerprintconstants:Ti_all_all:bondscreened_0:re:
2.943843
fingerprintconstants:Ti_all_all:bondscreened_0:rc:
8.000000
fingerprintconstants:Ti_all_all:bondscreened_0:alphak:
1.000000 2.000000 4.000000 6.000000 9.000000
fingerprintconstants:Ti_all_all:bondscreened_0:dr:
5.056157
fingerprintconstants:Ti_all_all:bondscreened_0:k:
5
fingerprintconstants:Ti_all_all:bondscreened_0:m:
8
fingerprintconstants:Ti_Zr:radialscreened_0:re:
2.943843
fingerprintconstants:Ti_Zr:radialscreened_0:rc:
8.000000
fingerprintconstants:Ti_Zr:radialscreened_0:alpha:
4.720000 4.720000 4.720000 4.720000 4.720000
fingerprintconstants:Ti_Zr:radialscreened_0:dr:
5.056157
fingerprintconstants:Ti_Zr:radialscreened_0:o:
-1
fingerprintconstants:Ti_Zr:radialscreened_0:n:
3
fingerprintconstants:Zr_Zr:radialscreened_0:re:
3.234381
fingerprintconstants:Zr_Zr:radialscreened_0:rc:
8.000000
fingerprintconstants:Zr_Zr:radialscreened_0:alpha:
4.450000 4.450000 4.450000 4.450000 4.450000
fingerprintconstants:Zr_Zr:radialscreened_0:dr:
4.765619
fingerprintconstants:Zr_Zr:radialscreened_0:o:
-1
fingerprintconstants:Zr_Zr:radialscreened_0:n:
3
fingerprintconstants:Zr_all_all:bondscreened_0:re:
3.234381
fingerprintconstants:Zr_all_all:bondscreened_0:rc:
8.000000
fingerprintconstants:Zr_all_all:bondscreened_0:alphak:
1.000000 2.000000 6.000000 9.000000
fingerprintconstants:Zr_all_all:bondscreened_0:dr:
4.765619
fingerprintconstants:Zr_all_all:bondscreened_0:k:
4
fingerprintconstants:Zr_all_all:bondscreened_0:m:
8
fingerprintconstants:Zr_Ti:radialscreened_0:re:
3.234381
fingerprintconstants:Zr_Ti:radialscreened_0:rc:
8.000000
fingerprintconstants:Zr_Ti:radialscreened_0:alpha:
4.450000 4.450000 4.450000 4.450000 4.450000
fingerprintconstants:Zr_Ti:radialscreened_0:dr:
4.765619
fingerprintconstants:Zr_Ti:radialscreened_0:o:
-1
fingerprintconstants:Zr_Ti:radialscreened_0:n:
3
screening:Ti_Ti_Ti:Cmax:
0.900000
screening:Ti_Ti_Ti:Cmin:
0.490000
screening:Ti_Ti_Zr:Cmax:
0.850000
screening:Ti_Ti_Zr:Cmin:
0.440000
screening:Ti_Zr_Ti:Cmax:
1.500000
screening:Ti_Zr_Ti:Cmin:
0.700000
screening:Ti_Zr_Zr:Cmax:
0.950000
screening:Ti_Zr_Zr:Cmin:
0.470000
screening:Zr_Ti_Ti:Cmax:
2.700000
screening:Zr_Ti_Ti:Cmin:
0.470000
screening:Zr_Ti_Zr:Cmax:
1.900000
screening:Zr_Ti_Zr:Cmin:
0.440000
screening:Zr_Zr_Ti:Cmax:
2.950000
screening:Zr_Zr_Ti:Cmin:
1.200000
screening:Zr_Zr_Zr:Cmax:
2.900000
screening:Zr_Zr_Zr:Cmin:
0.490000
networklayers:Ti:
3
networklayers:Zr:
3
layersize:Ti:0:
50
layersize:Ti:1:
20
layersize:Ti:2:
1
layersize:Zr:0:
42
layersize:Zr:1:
20
layersize:Zr:2:
1
weight:Ti:0:
2.959065631457990e+01 8.820178365370960e+00 3.567479250699050e+01 -9.520944737974550e+01 5.810216841766590e+01 9.002124484009080e-03 1.229243737965220e-01 8.308975217587410e-01 6.823375462445510e-01 -2.120116364747350e+00 -5.042944013969450e+00 8.888536859810211e-01 4.730113767902510e+00 -3.561046029798420e-01 -5.268119595319890e+00 -5.022196630576951e+00 1.408878320391390e+01 1.468387176035110e+01 3.760997999097570e+01 -6.917447867710290e+00 -5.365770859257360e+01 2.298166523864800e+01 3.868330833699280e+02 -1.716548340302800e+02 -1.893938251864540e+03 7.087497678108080e+01 6.758413925648071e+02 -1.879116886681510e+01 1.086082362821260e+03 -2.582591099463280e+03 -6.919949629103320e+03 6.653492220309850e+03 3.910779971401370e+04 -7.590339154383870e+03 -2.022471894606200e+04 5.146509910417540e+03 -1.785463453281940e+04 4.562627218960931e+04 1.101701455067090e+05 -3.084309856150380e+05 -9.971094440845660e+05 6.441995235572750e+05 6.416524220576230e+05 -5.569111763100200e+05 4.328915131668910e+05 5.428524342952564e+01 -4.807139553935529e+01 3.674056463489699e+01 -1.977223569852695e+01 1.398466060959636e+01
1.115693858967680e+02 -5.209779939312010e+00 -1.092385668269330e+01 -7.571784442383159e+01 -1.662179555544060e+01 6.916594544622801e-02 3.413942491148800e+00 4.480188413646630e-01 -2.802071362110940e+00 4.856749991432370e-01 3.705116153321830e+00 -2.506064444643240e-01 4.559599774503270e-01 -1.221308069065120e+00 -1.641607115739850e+01 3.587904146265880e+00 -2.383416507477550e+01 -9.053907553863560e-01 -2.345767274757610e+00 2.209763752910380e+00 -2.673114428269780e+01 8.868866584244550e+00 -9.266724447503009e+02 1.276638625895970e+02 7.168919250618770e+02 3.363071672846350e+02 1.444136022401220e+03 3.037219474351350e+02 6.597654623185430e+02 -3.584719368857490e+03 1.436854292524340e+04 1.250649758704310e+02 -1.134443963945180e+04 -9.877927968886390e+03 -7.232548546930680e+03 -1.764631584481190e+01 -1.378082415237150e+04 5.896464207004850e+04 -9.422840447102470e+04 2.948993551487030e+04 2.008982788928040e+03 7.562262912574749e+04 -4.983163988565260e+04 -8.575889316913020e+04 2.236873807148270e+05 1.354471135914414e+02 -3.150983530345522e+01 -6.539829926937760e+00 -3.528134551545980e+01 -3.035896296858233e+01
8.785785932652220e+01 -4.720301334844530e+01 -2.020078576639370e+01 -8.255733692970909e+01 1.178751057600940e+02 9.264406483588231e-02 -8.591966416908700e-01 -2.857387389805440e-01 3.015871584381770e+00 1.521919611154890e-01 -2.855075022109020e+00 -2.903254706936460e-01 -3.875576775518040e-01 -1.502710449510660e+00 1.520339443967300e+01 1.731954001149110e+00 -5.593960128660860e+01 -2.295786748665170e+00 5.184952484874350e+01 1.592105947138620e+01 1.044288938102470e+01 1.080112064482300e+02 -6.503242958941140e+02 5.126387212054780e+01 1.597542448224040e+03 5.525892218471130e+00 -2.044692134406340e+02 -4.378343406176560e+02 -1.365572260486900e+03 5.425057742978480e+02 1.300810235708670e+04 -4.023490852286060e+03 -1.988158982819950e+04 6.967310910979560e+03 -2.024171606454450e+04 -3.946519618937470e+03 3.272873458153340e+04 -6.329517027391020e+04 -6.758621346995250e+05 -8.901399431816940e+04 5.802311652874351e+05 2.469897516161080e+05 -2.953675934297680e+05 2.508985896982250e+05 3.461023887148230e+04 1.352813198749896e+02 -1.630380500385758e+02 -1.059726795027444e+02 -4.718842231531175e+01 2.097108477308344e+02
-5.983315673949120e+01 -5.919307194682480e+01 -2.313899936627500e+01 -1.379967160974440e+01 -5.689633174295660e+00 2.558411500579730e-02 4.966535582181171e-01 -1.127104896784800e-01 6.616245113484800e-01 1.512024678970050e+00 1.261340306063010e-01 -8.939209739253280e-01 3.836435145531750e-01 -9.152933589729160e-01 -2.819515446321520e+00 2.370269820057920e-02 -3.518535110763860e+00 -5.912237597981070e+00 -4.743613153004790e+00 -9.646383685996600e+00 -1.251890320875510e+01 1.196420918486560e+02 -3.106534430102290e+01 1.234735282275300e+02 3.222034272429480e+02 -8.517391382048750e+01 -1.336644870819130e+02 2.301334896952550e+02 2.795984833086180e+02 -7.564031065509090e+02 4.407754317028220e+03 -7.773963274447460e+01 -1.013680532461270e+04 -2.137688884394740e+03 1.854556641011860e+03 4.584784172458900e+03 3.070062887959150e+03 -1.650713622650290e+04 -1.690054624853500e+05 -9.892176689015090e+04 4.202313825462020e+05 1.823855045104630e+05 -3.431732355464990e+05 -1.288820654713850e+05 1.153329116697660e+05 -9.512788431741470e+01 -1.083147074683482e+02 -1.401980252358567e+01 5.077341232589099e+01 1.611760202769135e+01
6.043868296995040e+01 4.953730803784700e+01 7.444491996599690e+01 2.069602350040530e+01 2.885023876509890e+01 -1.819594904018430e-02 -3.848784799773810e-01 -1.481217043109310e-01 1.376200375927920e+00 -1.047720682285890e-02 -3.575729995777320e+00 -1.600916160440440e+00 1.794687661779280e-01 7.996111823895621e-01 -1.099747849865890e+01 8.461579059755990e-01 1.912020946657630e+01 -2.330922291393970e+00 -3.201760021603340e+00 5.967674495276551e+00 7.202403588231940e+00 -3.963009841931790e+01 1.232746458298290e+02 7.293629493154040e+01 9.070915000036319e+01 7.821017738799991e+01 1.030456292377630e+02 2.367832546260190e+01 7.465984980998800e+02 -2.222946622172020e+03 2.365811170850490e+03 -4.316665836652120e+03 -5.681650496185500e+03 -4.705610717173330e+03 -2.463533711738170e+03 4.277433987676700e+02 -1.340783803475190e+04 8.114394517862870e+04 -1.371771041031440e+05 7.645477649479060e+04 1.381604663006290e+05 -9.358182445605620e+04 1.497249059051430e+05 3.740090050028630e+04 -2.951225783430170e+04 7.899947268818528e+01 1.744184194432216e+01 7.251446838854935e+01 5.429577897804942e+01 7.807542695718272e+00
7.336413357703550e+01 5.385735724250819e+01 -1.013025042673250e+02 -3.775215413344070e+01 3.856228680957000e+01 -2.774006629323010e-01 3.529706536044520e+00 1.051024631506050e+00 -9.126702013427540e+00 -3.036141107572870e-01 6.965836125304440e+00 2.370710254085180e-01 -2.453818030419200e+00 3.584431481868390e+00 -3.955211197897520e+01 -2.946319634169590e+01 1.075342223305780e+02 3.106469607072350e+01 -5.639364892412801e+01 -1.608059058708440e-01 5.568683573148920e+00 1.095331213085640e+02 7.356684893782630e+02 -1.953531461722100e+02 -2.290279364852280e+03 -7.626123846589050e+01 -1.093150014594480e+03 -4.785211317880390e+02 1.823212591707460e+03 -7.110275609460000e+03 -8.718444264025210e+02 2.761255219512280e+04 4.288711262044300e+04 7.873341657826530e+03 2.101411900064320e+04 -2.549447846479280e+04 -4.781367612174040e+04 3.798098289652220e+03 -1.231616040097590e+06 -1.636924466717420e+06 -8.535898658236240e+05 -1.069993108285150e+06 7.918258980567560e+04 2.785945734799830e+06 1.341027760457690e+06 3.999352207637106e+01 -2.084141902956322e+01 -5.860760267787311e+00 8.807230220822389e+01 -7.620161545548299e+01
-5.454503514021350e+01 3.022937868044680e+00 1.036302323371130e+02 1.935381124326150e+01 -4.612595619827530e+01 8.792376998749740e-02 3.958336360908130e-01 -3.611972157525290e-01 -7.637152495511270e-01 3.653562740495300e-01 3.067551830757980e-01 -3.161256031699760e-01 4.744168004022800e-02 1.328386675030670e-02 -2.283213430935990e+00 -7.905546692629679e-02 -8.415206885898829e+00 3.763465287005150e+00 1.822358427888100e+01 -2.102569135625870e+00 -8.119986083501260e+00 -4.299383232184290e+01 -6.319797969630640e+01 1.364977306635730e+01 1.116474530878040e+03 6.481020621915920e+01 -1.135738338453160e+03 -1.755614422178900e+02 6.704888124888900e+01 8.115636002388160e+02 2.229292409804530e+03 4.152068637760440e+02 -2.300186571663850e+04 -8.991813724806230e+03 9.833563087692790e+03 1.007435440408350e+04 1.268059452291430e+04 -6.100360643113080e+04 -7.679226754674291e+04 -4.324234891085850e+04 5.104133002498230e+05 5.100622558505500e+05 5.687417836825640e+05 -4.065563558156510e+05 -1.061487530145130e+06 -5.003180676080586e+01 4.052841198873614e+01 7.087821421181067e+01 -4.393348440683287e+01 7.746042081722949e+00
-1.716350791787660e+01 7.669125478653530e+01 3.361398252746390e+00 -1.823274223785960e+02 1.680571316955560e+02 5.044485048795341e-02 -1.554309491130320e+00 -1.040567622332270e-01 5.403793929246860e+00 -9.332473544329940e-01 -3.328691452127940e+00 7.276367356846971e-01 -1.466253850993270e+00 -2.049238235100090e+00 1.890511806957930e+01 -1.365603915317670e-01 -7.306887579902040e+01 1.804106245632960e+01 4.985504986813700e+01 -1.387868082177220e+01 1.509060210160700e+01 -4.283272769576120e+01 -5.638949573162710e+02 -1.147260037690820e+01 1.990318793808500e+03 -1.291052217409060e+02 -7.864632802727400e+02 1.714942131555120e+02 -9.047631218077070e+02 1.594135040047940e+03 5.057802021444400e+03 2.765903434357460e+03 -5.421551955012629e+03 -1.460714485552360e+04 -2.242060556352510e+04 9.175879529415230e+03 2.631222640155590e+04 -1.290337306291940e+05 3.174622597120970e+05 -3.531368075740880e+05 -9.863082748151441e+05 1.052808298304350e+06 2.019305533585840e+05 -5.362818651229400e+05 4.057391172423450e+05 6.166117974861679e+01 -1.733823613019336e+01 -3.276018836488415e+01 -1.102900890440716e+02 1.431606844789580e+02
4.277587614028520e+01 -5.541473137759560e+01 -1.102024827305630e+01 5.257858445795200e+01 -3.425341040033230e+01 -5.103011537222040e-02 1.131369327308280e-01 -2.892417383021370e-01 -3.408892711180270e-01 4.987019733292620e-01 5.930401521399159e+00 3.573649251910180e-01 -6.196824517342410e+00 3.493614018252210e-02 4.466306254045950e+00 -2.141513647484160e+00 -1.643052132619940e+01 7.878931556659919e+00 -5.834432405562180e+01 -6.326641211588000e+00 7.387894467468740e+01 6.867106305603799e+01 -2.651950831795120e+02 -4.817891301084070e+01 1.714170745131860e+03 -1.662565378656220e+02 5.075078770601480e+02 3.532164567001380e+02 -1.688617047555710e+03 -2.348133577164790e+03 -3.835231374568170e+03 5.031215766012700e+03 -2.913252889346310e+04 -1.018714388790040e+04 1.131417862036770e+04 7.321582219471570e+03 2.002936335361840e+04 2.917068634474880e+05 1.116083541827690e+06 1.198457175470130e+05 -5.669370558466420e+05 -3.745999354981260e+05 7.447029070304430e+04 -1.889247408188940e+05 -2.017056816322920e+05 8.475147542077808e+01 -1.769890954110007e+02 5.862177082179904e+00 1.923396463667033e+02 -1.132367725685456e+02
2.127944540103450e+01 -2.877490844198130e+01 5.903642848966370e+01 3.205853304780400e+00 6.690385675269400e+01 -1.550046529349520e-01 8.612501177660180e-01 2.451744371445420e-02 -2.418332147292460e+00 2.130934772577300e-01 3.602492255934550e-01 -6.336639965844749e-02 7.128735584523610e-01 5.204016397389720e-01 -1.428851379175280e-01 -1.098637221879920e+00 -1.514115944100120e+01 -3.997867152468980e+00 1.926736020692510e+01 3.182059523652050e+00 -1.878696122769460e+01 -2.037225647171810e+01 -2.525319448922870e+02 -6.541187163682530e+01 5.997373834256399e+02 2.676468877629580e+02 -2.162646066318250e+02 -4.122274734310440e+02 -3.584287388298700e+02 -6.287776493875820e+02 3.234653603322630e+03 1.708512593874380e+03 -2.727209058828810e+03 1.033810889939680e+03 -7.805596568289660e+03 -6.217798368030160e+03 5.313748576584260e+03 3.782843343209730e+04 -6.327484327593841e+04 -1.061552540069060e+05 -2.166129924583750e+04 1.334816983273110e+05 2.349340167555280e+05 -1.858449942928970e+03 -1.503039371950090e+05 3.974641964015988e+01 -6.098888036471162e+01 5.695862343246636e+01 3.662466881845616e+01 4.564119577544508e+01
-1.809019814601920e+01 -6.318546075726380e+01 3.502313213382470e+01 2.537223513907520e+01 2.139592943381480e+01 6.497971721711360e-02 -2.541186757927500e-01 1.331003658270460e-01 -1.149611183868250e+00 7.191503838203580e-01 -7.984961611912481e-02 -3.034047471169860e-01 -3.752559589532610e-01 -1.459226938296720e+00 -8.074197858798611e+00 -1.749726257636480e+00 5.068428107922120e+01 1.870829404153490e+00 1.189599350957090e+01 1.056999138261870e+01 1.815394425479030e+01 -8.770611613711820e+01 4.766163355057220e+02 -5.835197574323640e+01 -6.412462403239050e+02 -5.534327678560210e+01 -5.714475346906891e+02 -1.916294922174240e+02 -2.059172424432570e+02 2.152982801219270e+03 -3.197765552742720e+03 1.214725535748060e+03 2.979752928144600e+03 -1.059319412352340e+03 4.010636576154850e+03 8.730065384619330e+01 1.416071470392590e+03 -2.480004127031560e+04 4.130113532056310e+03 2.696725909732280e+04 1.350230086967440e+05 -2.104408453509880e+04 -1.870080707984100e+05 9.258425664851280e+03 2.270199436544050e+04 3.874358737148040e-01 -9.538899256479260e+01 3.295543854351155e+01 5.880075690806045e+01 1.425146633849586e-01
-6.287562290750431e+01 -1.256743566101110e+01 1.186515639771760e+02 4.448885777059110e+01 -8.655564354879640e+01 1.595312781983040e-01 1.110252834715520e+00 -6.728476391469840e-01 -4.767156094912900e+00 -5.684009350323000e-01 4.579771722243120e+00 -2.456192762060000e-01 -2.776347381266540e+00 2.020337937589390e+00 1.243352952853730e+01 -4.866495322917700e-01 -6.829757251604780e+00 3.109726419700340e+00 1.639409904201660e+00 5.336533994115300e+00 -3.830578054157360e+00 -1.581757722751310e+01 -1.395663345783050e+02 -9.372283713117540e+01 1.346416062603650e+02 5.310234552809910e+01 1.764352528448100e+02 -5.583382655188281e+02 -1.671614656241800e+02 -1.155396041321240e+03 4.943126679254260e+02 1.027179627044370e+03 1.635112143739060e+02 4.849942865254680e+03 -6.899574251683660e+03 6.643786277678040e+02 4.566027778907500e+03 5.214306944633080e+04 3.540346669080600e+04 7.892295323196100e+04 8.273562649930600e+04 -2.596956367011940e+05 -1.488814354406500e+05 9.783358918515230e+04 4.433509034746130e+04 -4.441209222489129e+01 -4.478147672621296e+01 1.165766141987243e+02 7.791327490368327e+01 -1.078098706882099e+02
-1.129050987598760e+01 -1.064541855473100e+02 -7.128503516512480e+00 -6.453299364158001e+01 -1.211842272514140e+02 -1.432994958956060e-01 -4.920505992800340e-01 6.006413098366169e-01 3.461329088596560e+00 -2.998490277733280e+00 -7.466558029079150e+00 1.444037214220510e+00 2.664068255392900e+00 6.349796872002090e+00 -4.233220413417680e+00 1.174955929427830e+01 -1.296278332359900e+01 -1.212974652006810e+01 4.615816393256650e+01 1.222731370360360e+01 2.199633528849840e+00 1.197655633479170e+02 4.185118414251960e+02 -5.410074419928320e+02 -8.011246407469890e+02 6.864786471573329e+02 -6.262561405889981e+02 9.465933235349200e+01 9.927815158125890e+01 3.610725123550870e+03 -1.046068383906190e+04 -2.462571483744750e+03 3.209910271331160e+04 1.012499832057500e+04 4.447909159349940e+03 -1.430989259072110e+04 -1.323291979818500e+04 1.316261475411740e+04 2.834634933114450e+05 2.630501465736330e+05 -8.645569870102340e+04 -2.053856359685850e+04 -2.369991590369040e+05 -2.965843834083010e+05 -4.409599532396930e+04 1.347335082570862e+02 -1.666426990810843e+02 -8.727053995175037e+01 -7.345910633318029e+01 -1.069741498356160e+02
1.320973530791700e+02 1.133744177141020e+02 6.187724893682460e+01 -1.036257536830240e+02 -6.711739425491170e+01 -2.361802771282950e-02 2.852818677612850e+00 -5.763113597522780e-02 -5.754645017157180e+00 1.040226353964420e+00 -7.188164230414800e+00 8.884067862570069e-01 -3.338922522957300e+00 -1.830898005699390e+00 6.420876673786810e+01 -4.093058268227900e+00 -2.624123626170260e+01 -6.070285210535170e+00 -4.136775103420210e+01 -3.106575523655030e+00 -1.170680617250370e+01 -8.932374517039530e+01 -8.795441283927320e+02 -1.694005532298300e+02 7.289997970841830e+01 1.274307640624960e+02 1.039711213416940e+03 5.500505833839030e+02 1.011388720913690e+03 -3.338045408785700e+03 1.459457972380790e+02 -1.093001969648530e+03 8.346012452448140e+03 3.942859030732620e+03 7.209887485535430e+03 2.063913337114790e+04 1.726277649630800e+04 -4.375686580512670e+05 -4.334965941900989e+05 2.520663302832980e+04 -1.975121234131820e+05 -6.972869237695930e+04 -3.958293518819950e+04 3.157469424712080e+05 1.469868050563580e+05 1.510297172571374e+02 8.174083334624558e+01 6.050773979909467e+01 -6.935968739127078e+01 -8.738587281474005e+01
-7.680083713548920e+01 -2.885579283049770e+01 8.230918168172470e+01 -2.879211280721080e+00 -1.502918483015010e+02 1.724684493190230e-02 2.405636998267920e-01 -5.191089978005340e-01 -3.908004839649150e+00 -1.149104213600200e+00 5.623119733181780e+00 3.202891744101100e+00 -4.198194201255600e+00 3.434108485139931e+00 1.669727873396220e+01 1.843422989710170e+00 -1.778376425248270e+01 -8.848918908776380e+00 -2.820847151335140e+01 -5.555859896695160e+00 5.906172198123640e+01 -8.815749977758810e+01 -7.073641353278190e+02 1.361368756288440e+02 2.161766946802510e+03 4.319482649640560e+02 -1.345860454878010e+03 -1.651617448977750e+02 -7.951328420274290e+02 2.064063700098160e+03 5.963440573047770e+03 8.486607123360481e+02 -2.151883495306340e+04 -1.547872222331930e+04 -5.826866815020149e+02 8.289831536661310e+03 2.767385574431240e+04 -3.130380986270620e+04 1.432236375805380e+05 2.662252894939030e+05 -2.028384328729530e+05 -8.671824378835870e+05 3.489184006508940e+05 7.166138082697390e+05 -4.161462700086611e+05 -9.509749589540242e+01 -6.239116927882034e+01 1.355811944826567e+02 1.045509318465184e+02 -2.542652647320133e+02
2.092015377584270e+01 -6.818146651595410e+01 -3.962051090650320e+01 6.298697276595180e+00 4.978455687558160e+01 -2.133167764421440e-03 -4.228408643390770e+00 -1.574679657025820e-01 4.652489412972160e+00 1.733331459289110e-01 9.950307502565490e+00 -1.837649610790410e-01 1.670753494312190e+00 -5.452686146305620e-01 -9.939087460650070e+00 -2.288461945407100e+00 5.371501324556300e+00 -1.030098894662700e+01 1.110409318938780e+01 -3.379978051391610e+00 -2.077708918933370e+01 -1.740409212661940e+01 6.179426972594830e+02 1.202112107144330e+01 -1.272542035621630e+03 -1.693409267633910e+02 -1.215662561898050e+03 -3.769491663120790e+02 -2.471368250515080e+02 2.460931072666510e+03 -6.112302974891570e+03 5.576028754777240e+03 1.494463766585660e+04 -5.844549337907069e+02 -4.023838198942170e+03 1.828075889404760e+03 -6.856904185154880e+01 1.472734042646860e+04 -2.422000894715169e+04 -1.750059740610240e+05 1.824411937467380e+05 -1.162243993332650e+05 -1.546180026284920e+05 1.457903320438880e+05 7.260952292331720e+04 3.943660694116207e+01 -1.003457748667055e+02 -4.164853601174104e+01 3.976746887667212e+01 2.857221230025209e+01
5.549236330002110e+00 8.510464271612239e+00 1.499915930872850e+00 -5.718076776176819e+01 -1.073400737021230e+02 1.913734210571670e-02 -1.897976106885310e+00 9.474353027541720e-02 6.559895938589190e+00 3.847861539699660e-01 -1.197530597842370e+01 -2.502985321272610e-01 1.021236923490620e+01 2.075785921157220e+00 -6.506928209049970e+00 6.234279325535130e+00 1.752790175510280e+01 -9.361615516391020e-02 -3.637988402046640e+01 -1.035563439659020e+01 -2.104567867330320e+01 1.590829936726210e+02 1.463762464824570e+03 4.385982942807070e+02 -1.722479327485010e+03 -6.585308438558330e-01 1.139079783125020e+03 -8.350487082617450e+02 -7.343631692232960e+01 -4.728152000583490e+01 -9.143160143408950e+03 4.266010242928260e+03 -1.001379527078610e+04 -3.570221809676630e+03 2.321762918844290e+04 -1.378614329552220e+03 -1.252462675350270e+04 -9.977546699884468e+04 -2.165451322108980e+05 -1.244428306954970e+05 1.647110199826280e+05 -6.868788643158780e+04 5.939294657377000e+05 3.361439704050320e+05 -5.152691654531129e+05 7.005560538924354e-03 -2.994889224868999e+01 1.379153078197083e+01 -5.778826551302973e+00 -1.509172064436118e+02
-7.916671728129339e+00 4.492823948998120e+01 -2.321361896168350e+00 -1.307990846578830e+02 8.765869130093630e+01 -9.432882458046210e-02 1.611005810242830e+00 -1.492405431125900e-02 -4.882611306436191e+00 1.355693318261030e+00 7.347697810758220e+00 -1.005947608673520e+00 -4.361056799092970e+00 9.247886198515159e-02 -2.009908475018450e+01 -8.766169433333260e+00 6.434501739699240e+01 5.061307399216700e+00 -8.580659555328150e+01 8.467487932199029e+00 4.795338088214070e+01 1.223215802782500e+02 2.099492630433860e+02 -1.899923297323580e+02 -8.744126753927590e+02 1.763805850118000e+02 1.138206840449200e+03 -5.264380804364580e+02 -9.034346921159790e+02 -4.059105563840720e+03 6.875493804896340e+03 1.735011124704730e+04 -4.579734146321170e+03 -9.297778126741820e+03 -2.341425160868980e+03 -1.554197660004220e+03 8.525873364765690e+03 1.618272281833870e+04 -1.029347626249580e+06 -1.377874758793990e+06 1.133230497940440e+06 1.535001290882850e+06 4.483416847289580e+05 -1.249958276970500e+05 -9.474144957910458e+05 -9.177308441563005e+01 1.716609154039195e+02 1.202551244452341e+00 -2.251239259883857e+02 1.329545258333232e+02
-7.802632807816740e+01 -6.845340364662910e+01 1.356713670586950e+01 6.429559291889871e+01 5.969112686840559e+01 -1.476459646859460e-01 -9.014179718702729e-01 2.539243605349720e-01 6.578331994696370e-01 6.567788654511670e-01 2.672971790084560e+00 -4.045417196641020e-01 -2.480889831451430e+00 -2.173085187939530e+00 -6.149384313374290e-01 1.237555532875510e+00 3.398910583700700e+00 3.748468846399340e+00 -1.356194023597960e+01 3.576828207684910e-01 1.028514022166650e+01 -2.452974645090860e+01 1.472219899103320e+02 3.531820910869280e+01 -1.830872227158560e+02 -7.121290468102021e+01 -3.227075248363260e+02 -1.353082919292390e+02 2.733126427158990e+02 2.841383806359940e+03 -3.265593290646150e+03 -4.267522007397480e+02 1.466201562416410e+03 -2.517201653687010e+03 1.254021916995560e+04 1.578186339790410e+03 -1.196054098260550e+04 -5.449534436381410e+03 6.576862020272011e+04 -8.695350896731610e+04 -8.814270606378430e+04 4.587074072723950e+05 7.623642768318400e+04 -3.517609551203240e+05 -4.378004867922440e+04 -5.681797561372628e+01 -9.779539200282534e+01 1.443245457550560e+01 1.006885844130784e+02 4.141105727390936e+01
-8.073601889023701e+01 -1.294665120866080e+02 5.945805590714150e+01 -2.898290131951680e+01 -1.137372595027620e+01 1.219346386197720e-01 -3.839491851396980e-02 -3.595476170701780e-01 8.224162070888551e-01 3.344070630946880e-01 -1.361143505206730e-01 6.625530309825680e-01 2.537011728158460e-01 -4.266564294031260e-01 -1.194978121256970e+01 1.737482385185800e+00 2.043919378151330e+01 -4.788563396789360e+00 -3.474946133830100e+01 -4.220943925467510e+00 2.517221961878410e+01 1.060184179513230e+01 1.781504656839610e+02 1.365399582956040e+01 -3.400000871925320e+02 4.642900563873431e+01 3.718217200852840e+02 1.563519292553870e+02 -4.059289015912770e+02 1.917350342938080e+03 -2.168254395331960e+03 -5.048353631651640e+02 7.841144679334910e+02 -1.920899103395900e+02 7.535043890794460e+03 -9.790152729192910e+02 -3.407548179745761e+03 -2.289116277601350e+04 2.424830526185240e+04 -1.711510685927520e+04 -3.676143854672500e+04 7.968742284328659e+04 -3.199123493424850e+04 -3.494703283466890e+04 3.043202096109460e+04 -6.209159849717116e+01 -1.614908073286566e+02 5.757761883838479e+01 4.637524166135631e+00 -3.243304600499138e+01
weight:Ti:1:
-1.900909743994830e+01 -7.578770479490130e+00 -3.218496428548700e+00 -4.236167744297790e+00 -1.186749689073690e+01 5.376081602840550e+00 -6.790956567542070e+00 -1.773830000868000e+01 -5.501967698076490e+00 -1.126457217402020e+01 -9.679843884554650e+00 -4.136760185943520e+00 -5.854885706629030e+00 -6.673888840718900e+00 -2.988839238536750e+00 -9.253564488744130e+00 -2.641721529732370e+00 -8.536185712280711e+00 -5.034707016809750e+00 -7.113274560516300e+00
weight:Zr:0:
2.533572249648930e+01 -3.104581412524160e+01 8.841104450754280e+01 -7.985007792792420e+01 1.105808295039840e+02 -2.253538179994260e-01 -1.217589435913240e+00 -3.123739899897850e-01 9.157750022278430e+00 -6.194932975999620e-01 1.805558285462210e+00 9.357252380200199e-01 -8.814314612982440e-01 -5.372602165349510e-01 -1.992290532411720e+00 -3.180677179120500e+00 -7.224133471766901e+01 1.155030255834780e+00 2.075891577317090e+01 -5.232664886315670e+00 1.524105164832800e+00 -1.458171074797400e+03 6.080706785724720e+03 2.667380590374640e+03 -2.816532409598860e+03 -2.266503801594660e+03 -3.497749759328590e+03 -1.121776586769620e+04 -7.879967440006579e+03 1.386491948216740e+05 -3.193806071289290e+05 3.308221046077160e+04 6.743087983549030e+05 1.806390176571200e+05 -3.207206812968620e+05 -1.175492428241280e+05 -2.019157932932850e+04 1.339548490080990e+01 -1.551532847085550e+01 9.935243320837451e+01 -9.381032226564771e+01 1.259985684965357e+02
8.641356211895409e+01 2.926871756471990e+01 1.137002479624610e+02 -6.088770796726430e+01 6.856146552249691e+00 5.032351871125780e-01 8.187734713481200e+00 -3.476244749478940e-02 -7.683172824505160e+00 -8.962907555979780e-01 5.163687504426310e-01 -5.533027836530370e+00 5.380657254803910e+00 1.863276616282680e+00 -8.995095022460541e+01 -7.288066972238700e+00 8.405780166521951e+01 5.110412820173250e+00 -4.475402613800050e+01 3.056775458291590e-01 -1.966026700692910e+01 -6.044195576037370e+03 1.094040144482330e+03 3.434070247275919e+03 -4.324493055396300e+02 2.396835704792020e+03 -4.786326256678370e+03 -5.413992175022420e+03 -2.702704511838280e+03 1.394418979423900e+05 3.944325141044279e+04 -7.188166063628149e+04 1.418586533975730e+05 2.230081550297510e+05 -7.428337596593521e+04 -2.675348378012910e+05 -4.628800797585280e+04 1.130323785646560e+02 3.502541884152883e+01 8.823797097404974e+01 -1.180913281083844e+02 -1.029789795456498e+01
8.182902023347150e+01 -8.502416465112761e+01 -2.763321450364950e+01 -1.313909805815120e+02 5.463117835242790e+01 -3.782161893922071e-01 3.335583887237500e+00 2.888202736469640e+00 -7.193511304589880e+00 -1.240613513989550e+00 -2.525794255058170e+00 -6.080916633394290e+00 3.079661108116500e+00 5.082544529122120e+00 -2.845369664618080e+01 -5.691066249022370e+00 5.831268688342400e+01 1.650423069905090e+00 4.340558836334050e+01 4.057624699330630e+01 -4.956388161707650e+01 2.471787602550810e+03 1.440741355003530e+04 2.241189533780660e+03 -2.903320384580420e+04 -7.600180707459649e+03 2.684462629754650e+04 -1.419309127842040e+03 -5.611970822069090e+03 -1.583688341174910e+05 -4.652870961930530e+05 -4.888759958784170e+05 3.488465566479620e+05 5.842197530580350e+05 -1.513214383617390e+05 9.028378709143749e+04 1.572594959847890e+05 1.317973513728643e+02 -3.183767987119257e+01 -1.043035336997356e+01 -1.788886889820495e+02 -1.339410350013497e+01
-5.652441775088680e+02 -3.129914392467210e+01 5.776487271895490e+02 6.648560055409160e+01 -1.439142742809110e+03 7.303517222923140e-01 -1.986755880395500e+01 6.181443845570690e+00 3.085984797843680e+01 -8.283096136717610e+00 -3.660476730408280e+01 -2.524588834830200e+01 1.318575482677720e+01 4.176612923056790e+01 9.283533384778779e+01 -7.182594840793200e+01 -2.254176428654160e+02 -1.025976171903940e+02 1.611287027554690e+02 3.895800750604409e+02 6.426095247283079e+01 4.498850293159150e+03 -1.462349405161030e+04 -2.518915996673100e+04 -7.265862062220550e+04 4.172752544042370e+04 2.987993108002130e+05 -5.736070620427340e+04 -1.589440191723990e+05 -1.399372096816560e+06 -4.839223894563860e+04 2.825626450509210e+06 -1.687356257140730e+06 8.277560578207459e+06 -2.062383216276100e+06 -9.599817498706000e+06 3.392792196540230e+06 -3.264002378786422e+01 -6.629362463611876e+02 -1.919215048310130e+01 1.738528692222605e+02 -8.100975145711094e+02
-5.431631319817260e+01 -3.628324047087360e+01 1.022210382717950e+02 -1.074838507269040e+02 -2.831943351413090e+00 -1.988238481861890e-01 -8.861289582437939e-01 -2.659934829782150e-01 -2.500791955145240e+00 -4.659806866606560e-01 3.926169295504710e+00 2.669166718326410e-01 -1.514094441740170e+00 1.034511626848980e+00 6.820065074437121e+00 7.932716071919410e+00 2.180195590260740e+01 1.978786508820320e+01 -2.732010728150630e+01 -9.474679834058371e+00 1.360591611527890e+01 -1.035706138546610e+03 7.017440123881720e+02 -6.953359657419940e+02 -5.295377159648910e+02 1.137939133817210e+03 -3.485970789141290e+02 -3.210992515023680e+03 -5.762571673570000e+01 2.747991946789470e+04 -5.128063482846500e+04 3.520300450792160e+04 4.437774556615860e+04 -1.709565787239910e+05 -1.757127494146750e+05 1.822865848646780e+05 1.322706507800000e+05 -6.823778558801978e+01 -2.250810945077585e+01 1.119819809206000e+02 -1.217369676067614e+02 1.346314014865552e+01
-3.669941545939720e+01 -8.405586768963340e+01 8.692672852590420e+01 3.985890209828150e+01 8.319750257128629e+01 -7.887057799613520e-01 -5.520154317958050e+00 3.762045115966520e-01 2.773079096577780e+00 3.369996096451810e+00 9.292037353957291e+00 -5.032923222293260e-01 -6.373844844165419e+00 2.334757531809900e+00 5.619931100129070e+01 -4.453094727354520e+00 -2.306287892302360e+01 -2.595764677221580e+01 -9.529921264066989e+01 3.852844185321880e-01 5.783284185778750e+01 3.986431492895560e+03 -1.532710219721710e+04 -2.227510481912310e+04 2.046059979317870e+03 1.353745934057660e+04 -1.092753370052650e+03 5.584268784963220e+04 3.919881477473020e+04 -6.221728732152170e+05 -2.133437162841550e+05 -3.634587471619811e+05 1.106570454775120e+05 1.617775128979920e+05 -7.156897525130800e+05 2.336653838425920e+05 5.313218262254350e+05 -1.570427171455060e+02 -3.300252397580416e+01 2.032969299259227e+02 9.261314953642727e+01 -1.656667663289629e+01
4.071084977766680e+01 -3.225883971466690e+02 -2.375031277591230e+02 -1.144178314279990e+02 3.949278167358970e+02 -2.327326862841910e+00 -1.997338673727920e+01 1.175739111677390e+01 4.996803588453490e+01 -2.194751719287660e+01 -5.309675785043421e+01 2.778685283616090e+00 1.911111627596840e+01 1.744384392108320e+01 1.322852126122420e+02 -1.391581651419830e+01 -1.950757677292500e+02 -1.134007478261480e+02 -9.985415441581139e+01 2.464424565825630e+02 2.542236329797270e+02 -1.110434420152410e+03 -3.040151344108270e+04 6.801164885510380e+03 -2.810289094479380e+03 8.192168112080690e+04 1.627059952332300e+05 -5.848126177715840e+04 -1.170526778773960e+05 -2.924793255307260e+05 5.657072556399970e+05 -1.160747035645160e+06 -1.037995892636170e+06 1.324813413756760e+06 5.914431119804890e+05 -5.122684826753260e+05 -2.212069483141570e+04 1.310701958000760e+02 -2.236101109794340e+02 -1.896886828639565e+02 -1.791410593088798e+02 2.135917914953256e+02
-8.305346344791120e+01 -3.235620238557810e+01 1.540280898552070e+02 -8.505069184329680e+01 -8.864670528524121e+00 4.186669782715560e-01 2.167213368682270e+00 -3.963222117224930e-01 -4.180821628950010e+00 9.786501790988951e-01 2.759223243589140e+00 -2.376728776775800e+00 -2.207928709370440e+00 1.370561494773690e+00 -6.812936025730320e+00 -9.797735484929360e+00 4.795569195576270e+00 8.433143089998490e-01 1.755956390953760e+01 6.235057554831759e+00 -4.915300325225690e+00 4.386018681689310e+02 8.742558615017920e+02 -7.459525176599220e+02 -3.482673795419380e+03 9.701066633749530e+03 8.927499699024700e+03 -1.007378842613340e+04 -1.248205754978190e+04 2.137476925711530e+04 -3.846197532195120e+04 2.350862940428050e+04 1.889340182611190e+05 -1.613308006095720e+05 1.565764464358310e+04 1.305963361619490e+05 -5.881336805585201e+04 -7.360400305758367e+01 -2.839923413629685e+01 1.390331604361033e+02 -1.166881156667366e+02 2.122752542365443e+01
8.510909239982939e+01 -1.050260911362220e+02 6.030975416867520e+00 -8.419401053125510e+01 7.324867679391581e+01 5.088133446817030e-01 -2.144620786387980e-01 1.505617320863300e-01 3.870175605355199e+00 -4.128049110812650e+00 -8.503334831034071e+00 -4.076570262352580e-01 8.337258283742670e-01 -1.656775376069380e+00 -4.081917850165220e+00 2.066031539450400e+01 -1.682683308594650e+01 1.213477846358850e+01 4.235722023829860e+01 8.311850485217191e+00 1.225552817962400e+01 -1.670858301911210e+03 1.548132226476110e+04 -2.792768805516890e+03 -2.310328624289540e+04 -1.229076194298200e+04 8.893642787684799e+03 3.620671322443900e+03 -6.958421306423869e+03 1.414849008530630e+05 -5.864480519843830e+05 4.968700870485260e+04 7.832729249462371e+05 3.148801691625880e+04 -2.353638238153300e+05 1.608464356260650e+05 -3.508851526595750e+04 6.689888434954611e+01 -9.563488361383232e+01 1.116335860897162e+01 -1.034659998054885e+02 8.399127754279677e+01
-1.114570099991160e+01 -6.926243212951100e+01 9.386496431939491e+01 -2.295510931757380e+00 -6.046763404444400e+00 2.898642905444560e-01 -1.625310241796620e+00 -1.218170412307850e+00 7.489729742415911e+00 8.361561362691129e-01 -1.115938591585690e+01 6.679754821153540e-02 5.785064857006460e+00 -4.044742253368670e+00 1.073715686572580e+01 1.033453524594790e+01 -5.877278601248240e+01 -3.356635731688480e+00 8.570736512869060e+01 -1.239987551502300e+00 -4.267012445092090e+01 1.384890831540650e+03 -5.063147634513090e+03 -1.569683963456500e+03 2.129101312565610e+04 5.159650055402110e+01 -1.413253003623380e+04 -8.469153207531510e+02 -3.104436472061270e+02 -1.274776881436820e+05 2.958284670480920e+05 8.592025056220101e+04 -8.455860485870300e+05 -3.204900083786110e+05 -1.026291950041460e+06 3.318209425356080e+05 1.522454093638370e+06 -3.778296971893572e+01 -3.995218818506164e+01 1.081103567856049e+02 -8.891857970473525e+00 -1.566634417513517e+01
-1.352697655693660e+02 -7.553260847079370e+01 1.786105945396520e+02 1.636313459349920e+00 -9.732920165993470e+01 -3.806781170792960e-01 -6.335260275640000e-01 1.096623130060620e+00 -8.604275384802211e+00 1.507234884406940e+00 1.212456310573770e+01 -3.268968127116560e+00 -5.992761003730370e+00 2.723683218198630e+00 6.223975209537880e+00 6.504645083849810e+00 7.333398035742310e+01 -2.631914631181600e+01 -1.147578612525850e+02 3.036217850565730e+01 5.857762112134800e+01 1.500014061192680e+03 -2.823171430138920e+03 4.200336833759470e+03 -8.499746884217300e+03 -7.399598459308570e+03 9.185462737591170e+03 1.140137183175320e+04 5.753186452408380e+03 2.023196157306570e+04 2.985571779456290e+05 -6.056963200121589e+05 -2.751624275131960e+04 7.414814251577060e+05 3.856959782321730e+05 -5.443630306958930e+05 -4.367232882232639e+05 -1.050676134248258e+02 -8.984025763253389e+01 9.379297081568865e+01 -7.472614286653091e+01 6.220076959430686e+01
-3.615132092490310e+01 -3.858340262737140e+01 1.634387171920810e+02 -5.680771453886280e+01 2.380907581661240e+01 -7.055083207411091e-02 2.116798575043050e+00 -5.757518389320500e-02 2.062120025660740e+00 -4.427217969752861e-01 -4.587169063560870e+00 8.569009610394041e-01 5.586321813120700e+00 -5.247797129652870e-01 -1.963974356071750e+01 -8.708569850782829e-01 6.928543384793290e+00 -5.185002494593450e-01 -1.373621411619710e+01 -5.705775320716000e+00 -8.306890053043070e+00 -2.245413685718130e+02 2.755077502611750e+03 2.575808566495810e+03 -3.094664279216610e+03 -5.039940922691360e+03 4.097637156460780e+03 6.865879737984740e+02 -3.332723417658070e+03 1.047610726556520e+04 -5.811147047617920e+04 -1.266588731691560e+05 -1.061037605449640e+05 -2.815624151483800e+04 -6.291924571268640e+04 1.600516630465110e+05 1.994397826501680e+05 -5.240050768041203e+01 -2.732329896989961e+01 1.704830869255617e+02 -7.399627421789091e+01 3.693020881236266e+01
7.226963234590970e+01 -1.131292657040380e+02 3.268696250613230e+00 5.627277170054580e+01 -3.427120227200370e+01 2.734003672029740e-03 -2.906310742205300e-01 -2.225861856268850e-01 6.586741206415870e-01 5.848937088477630e-01 -6.548934844319469e-01 -6.519043364624360e-01 9.562630677798431e-02 2.193083987055510e-01 2.315122669410550e+00 3.125822581201339e+00 -5.885061699930230e+00 -6.350385021559251e+00 4.197115414215730e+00 6.290329062273900e+00 6.565397925628610e-01 8.739910288604840e+02 -1.895228713772440e+03 -1.677744955179130e+03 7.062956153365851e+03 3.664908560289650e+03 -4.256519163487670e+03 -2.283625686598360e+03 -3.144907367753580e+02 -3.667040237896290e+04 1.673278305812640e+05 1.429250380308550e+05 -6.902302039536190e+05 -2.801116064591860e+05 5.949695690657950e+05 1.443847666529710e+05 -5.736033864491480e+04 4.653755433477311e+01 -6.274448840552078e+01 1.107281049566416e+01 -1.853146365973967e+01 8.876760616316000e+00
-4.080642934953081e+01 -6.516640400179880e+01 2.484641241756290e+01 -7.823170980354840e+01 3.925038674887500e+01 -1.199200598880390e-01 -1.189389535467320e+00 -3.630313211277510e-01 6.026203559571330e+00 6.953669584012189e-03 -1.211331625001940e+01 -8.283560399191811e-01 5.862229443015400e+00 1.238628474245990e+00 9.194561117202550e+00 6.274293734474210e+00 -4.597991044277630e+01 -1.057632295744130e+01 8.567261031292701e+01 1.567821971324760e+01 -3.697704388358490e+01 2.702141318098890e+03 -4.013475832320740e+03 -1.823300815517460e+02 1.217734350465610e+04 2.903060891279720e+03 -1.450507323096950e+04 -1.677469333268600e+03 6.117578165518090e+03 4.462250140329540e+04 2.790494985020640e+05 -3.475435798661080e+05 -2.533266658411400e+05 4.209619921241840e+05 -2.367655556436450e+05 -1.996473301191440e+05 3.429295831952530e+05 -2.698119327323881e+01 -1.226503290831413e+02 4.004529089926289e+01 -9.204578406853539e+00 2.413184289179218e+00
1.873285799630320e+01 -1.167334386914860e+02 2.206341383109620e+02 1.993026904498310e+02 -2.600559688160810e+02 2.507809313862140e-01 1.371977059217770e+00 -2.589674095079710e+00 -5.137241402607950e+00 7.102121862890379e+00 1.432424381160370e+01 2.358434606006580e-01 -7.431225192281209e+00 2.536280585420020e+00 -1.099315868597960e+01 -2.221065250728070e+00 3.639816831869160e+01 -1.087726459647240e+01 -9.234935903671770e+01 -3.548875423462670e+01 3.340327938565450e+01 -1.030326299001860e+03 -2.034101980394670e+03 4.992000555709520e+03 -2.296303896406780e+04 -1.162606232588940e+04 6.234539324912170e+04 1.529673701716010e+04 -3.617092876033260e+04 9.557403397150971e+04 3.038216250263159e+05 -2.176382559912470e+05 2.564076797401850e+05 -1.222746193955690e+05 6.685876473124009e+04 7.879165108633500e+04 -4.744603439128560e+05 3.291428128845545e+01 -8.585287104530059e+01 2.339440544796711e+02 1.725094379192837e+02 -2.748862509561272e+02
9.845444206406150e+00 -2.415750770672310e+01 5.034391247360530e+01 -4.425497839507670e+01 2.735250906830970e+01 -8.370945088175161e-02 -2.471574962532890e+00 6.966916358946820e-01 6.756892242329070e-01 2.608941732570010e+00 4.265807029744230e+00 4.808373016046690e+00 -4.109588936109370e+00 -3.073745527963980e+00 3.039293463313370e+01 -9.337351059041030e+00 -1.023622691494740e+01 -4.466709596864100e-01 3.153921890443010e+01 -8.168954600867051e-01 -1.836802651802990e+01 -7.937674266264991e+02 -1.163123022283180e+04 -4.325923038500940e+03 -5.224164902633120e+03 -2.961725474125090e+03 -8.304411116361360e+03 -1.124142827178260e+03 1.642841535246150e+04 1.132620837658520e+05 3.368271807678040e+05 3.071118192248400e+05 4.628944159999200e+05 5.246782046822310e+04 -4.960772198359710e+05 -3.095590715698010e+05 -2.433691743004140e+05 -4.577295045811584e+00 -1.021606321873773e+01 6.093166505971111e+01 -5.700796564855787e+01 4.584992629845553e+01
-6.675084179059741e+01 -5.319611005507720e+00 7.491875537438330e+01 -5.237096066083861e+01 3.717211864140010e+01 -1.409763988324450e-01 -1.521419828704840e+00 2.130185158959690e-01 -4.156290734829960e+00 -2.727335324009150e+00 6.699849182115780e+00 2.051772232537070e+00 -3.868040913321810e+00 3.463354324343020e-01 2.740797373496460e+00 2.860277490234231e+00 3.262103918360760e+01 5.009000163850530e+00 -3.901916736240690e+01 -7.145170617094230e+00 1.542786044384030e+01 7.154011856241409e+01 1.299020043306170e+03 -2.029247496088070e+02 -9.094679091607150e+03 -1.309859707266300e+03 7.295831527249220e+03 -1.406740322771730e+03 -3.634412782314169e+03 2.799416361678240e+04 -6.686518973624610e+04 -5.325166001392089e+04 2.057682253131430e+05 1.596981733699540e+04 -2.558655388800600e+05 5.472623514840820e+04 1.509683891199390e+05 -7.955180069688193e+01 9.319937153787935e+00 8.528410039045046e+01 -6.628391842334683e+01 5.353816593201972e+01
1.552251191146970e+02 2.926168344795230e+01 -1.975963221781200e+01 -1.767123937750160e+02 -4.064599841989800e+01 -4.061069620099700e-02 3.102679823058760e+00 1.562394981650100e-01 -8.991948619788200e+00 3.036354312209300e+00 -4.560676602938530e+00 -2.121975314751200e-01 4.260683318184590e-01 -2.284711567035990e+00 2.630899015700080e+01 -1.377247327115220e+01 4.121986751814490e+01 1.555293878059420e+01 -1.526606696261670e+01 -2.150435607700940e+00 2.034345473156460e+01 -1.314812987963530e+03 -6.655539714447120e+03 5.876087935861181e+03 5.460882669941640e+03 6.319618759495910e+03 8.953514047677760e+03 9.670636612518680e+03 1.501097343014040e+04 -3.197182430829710e+05 -4.059529176635650e+04 2.069408059291140e+05 5.714902553126360e+05 -2.165961111026020e+05 -3.394478504822790e+05 -2.206524231481800e+05 -3.721550556458730e+05 1.484236100637929e+02 4.837861034425413e+01 -1.034516753470562e+01 -2.021774280076698e+02 -5.296186530802704e+01
-1.296586666798590e+01 -9.126528123641710e+01 1.114857831083380e+01 -6.728714614183200e+01 8.612466627553160e+01 1.889118996778360e-01 2.258019271133150e+00 3.929291837353300e-01 -2.467956398573290e+00 -8.006567452709210e-01 3.878406343686240e+00 3.512346206158590e+00 -4.753836015830060e-01 -2.161700050088120e+00 8.009353797204399e+00 -1.225645636759810e+01 -5.899202175307560e+00 -2.130163905959490e+00 1.453550632648960e+01 4.167032623664090e+00 -1.450518723354680e+01 2.572283568219910e+03 -4.272923240955890e+02 2.832332706192290e+03 9.810424981300040e+02 1.836452288374570e+03 -1.869428532828810e+02 -3.878513276928310e+03 1.427922634890410e+03 -9.326818311252800e+04 3.157656622121350e+03 -2.687783976236190e+04 8.793991398604171e+04 8.123241501170451e+04 -6.418348147866150e+04 -2.985051950682400e+04 -2.920583833894430e+04 -3.228022285917200e+01 -7.906163904779172e+01 2.073573536270432e+01 -8.040165986006356e+01 1.061998645840528e+02
9.959709062534900e+01 1.087502667955940e+01 6.436094130202110e+01 -3.606892523904480e+01 5.290601532225030e+01 -4.193056943169590e-02 -3.898885751261870e+00 3.949896656482370e-01 3.662370941675750e+00 -1.778355788278790e+00 2.930598927783389e+00 5.714011717804970e-01 -2.466140683777800e+00 -4.174264058702390e-01 -3.039258956469940e+00 -8.248792926836001e-01 -1.852127217208240e+01 3.803546859375490e+00 -1.847726641274240e+01 -2.560674697863870e+01 9.995432341534119e+00 -2.340208868175690e+03 5.297835251929640e+03 4.320759148084090e+03 1.167588258688800e+04 -5.817161570754710e+03 -1.725326860015780e+04 -7.965064390236350e+03 -7.323066834087200e+03 9.620006625259769e+04 -9.591248324384430e+04 7.421213722488130e+04 1.119510461026150e+05 2.931552681902420e+04 -2.000404269113050e+05 -5.578042521727410e+04 1.908442441085770e+05 8.322641687128646e+01 2.198679825560096e+01 7.123296439417778e+01 -5.345105172984309e+01 6.581547611099977e+01
weight:Zr:1:
-8.449402603952080e+00 -6.338794008660490e+00 -3.646475639589930e+00 -4.568817240756670e-02 -7.486395335332810e+00 -3.785050765188870e+00 -3.485773491732340e-01 -5.538686152537460e+00 -7.433810976865260e+00 -5.821849208003560e+00 -3.395190456952280e+00 -8.333672632254331e+00 -3.029331386730920e+01 -8.956537722110630e+00 -3.920136298332350e+00 -6.736243977919150e+00 -9.649168312913330e+00 -8.048165313887120e+00 -6.960447300715590e+00 -9.643037059291860e+00
bias:Ti:0:
-1.956139686368849e+00
2.316102584868799e+00
-5.873577280820660e+00
2.540633238613090e+01
2.169586324610206e+00
-6.132550222727400e-01
6.490063401842909e-01
-2.951927218533048e+00
-8.218012457375847e-01
1.774990864410230e+01
1.988342296137330e+01
1.990921933487670e+01
1.131818275713660e+01
1.317146636683290e+01
1.234521162759310e+01
4.176334634524130e+01
7.732436210630709e+00
2.952926382581680e+00
1.848343983326470e+01
3.602895726219770e+01
bias:Ti:1:
-2.511965921735320e+01
bias:Zr:0:
1.370501580095990e+01
2.772761128809670e+00
5.124080364684149e+00
9.604164800454713e+01
2.052952479827250e+01
-3.172235149688250e+00
-5.149625266581623e+00
1.816107898644540e+01
1.763964253937473e-01
4.436246684052568e+00
1.092585291778570e+01
1.491088913020820e+01
-2.483576459966645e-01
1.297333763833140e+01
-3.864339565119073e+00
4.631895807524710e+00
2.375195292636960e+01
1.209498628860100e+01
2.227387923911460e+01
8.401986227903949e+00
bias:Zr:1:
-1.947972075332220e+01
activationfunctions:Ti:0:
sigI
activationfunctions:Ti:1:
linear
activationfunctions:Zr:0:
sigI
activationfunctions:Zr:1:
linear
calibrationparameters:algorithm:
LM_ch
calibrationparameters:dumpdirectory:
.
calibrationparameters:doforces:
0
calibrationparameters:normalizeinput:
1
calibrationparameters:tolerance:
1.0000000000e-07
calibrationparameters:regularizer:
1.0000000000e-04
calibrationparameters:logfile:
TiZr.log
calibrationparameters:potentialoutputfile:
TiZr_output_2.nn
calibrationparameters:potentialoutputfreq:
10
calibrationparameters:maxepochs:
10000000
calibrationparameters:dimsreserved:Ti:0:
45
calibrationparameters:dimsreserved:Ti:1:
20
calibrationparameters:dimsreserved:Ti:2:
0
calibrationparameters:dimsreserved:Zr:0:
37
calibrationparameters:dimsreserved:Zr:1:
20
calibrationparameters:dimsreserved:Zr:2:
0
calibrationparameters:validation:
0.100000

View File

@ -0,0 +1,45 @@
units metal
dimension 3
boundary p p p
atom_style atomic
lattice hcp 2.9962594
region whole block 0 10 0 10 0 10 units lattice
create_box 2 whole
create_atoms 2 box
timestep 0.001
set group all type 1
set group all type/fraction 2 0.10 486
pair_style rann
pair_coeff * * TiZr_2.nn Ti Zr
compute peratom all pe/atom
shell mkdir ovito_files2
dump 1 all custom 10 ovito_files2/dump.*.gz id type x y z c_peratom
dump_modify 1 element Ti Zr
thermo 1
thermo_style custom step lx ly lz press pxx pyy pzz pxy pxz pyz pe temp
variable etol equal 1.0e-32
variable ftol equal 1.0e-32
variable maxiter equal 1.0e+9
variable maxeval equal 1.0e+9
variable dmax equal 1.0e-2
fix 1 all box/relax aniso 0.0
min_style cg
minimize ${etol} ${ftol} ${maxiter} ${maxeval}
unfix 1
write_restart TiZr.min
#-------------------------EQUILIBRATION--------------------------------
velocity all create 300 12345 mom yes rot no
fix 1 all npt temp 300 300 0.1 aniso 0 0 1
run 100
unfix 1

420
potentials/MgAl.rann Normal file
View File

@ -0,0 +1,420 @@
atomtypes:
Mg Al
mass:Mg:
24.500000
mass:Al:
26.500000
fingerprintsperelement:Mg:
5
fingerprintsperelement:Al:
5
fingerprints:Mg_Mg:
radialscreened_0
fingerprints:Mg_Mg_Mg:
bondscreened_0
fingerprints:Mg_Al:
radialscreened_0
fingerprints:Mg_Al_Al:
bondscreened_0
fingerprints:Mg_Al_Mg:
bondscreened_0
fingerprints:Al_Al:
radialscreened_0
fingerprints:Al_Al_Al:
bondscreened_0
fingerprints:Al_Mg:
radialscreened_0
fingerprints:Al_Al_Mg:
bondscreened_0
fingerprints:Al_Mg_Mg:
bondscreened_0
fingerprintconstants:Mg_Mg:radialscreened_0:re:
3.193592
fingerprintconstants:Mg_Mg:radialscreened_0:rc:
9.000000
fingerprintconstants:Mg_Mg:radialscreened_0:alpha:
5.520000 5.520000 5.520000 5.520000 5.520000
fingerprintconstants:Mg_Mg:radialscreened_0:dr:
2.806408
fingerprintconstants:Mg_Mg:radialscreened_0:o:
-1
fingerprintconstants:Mg_Mg:radialscreened_0:n:
3
fingerprintconstants:Mg_Mg_Mg:bondscreened_0:re:
3.193592
fingerprintconstants:Mg_Mg_Mg:bondscreened_0:rc:
9.000000
fingerprintconstants:Mg_Mg_Mg:bondscreened_0:alphak:
1.000000 2.000000 6.000000 9.000000
fingerprintconstants:Mg_Mg_Mg:bondscreened_0:dr:
2.806408
fingerprintconstants:Mg_Mg_Mg:bondscreened_0:k:
4
fingerprintconstants:Mg_Mg_Mg:bondscreened_0:m:
4
fingerprintconstants:Mg_Al:radialscreened_0:re:
3.193592
fingerprintconstants:Mg_Al:radialscreened_0:rc:
9.000000
fingerprintconstants:Mg_Al:radialscreened_0:alpha:
5.520000 5.520000 5.520000 5.520000 5.520000
fingerprintconstants:Mg_Al:radialscreened_0:dr:
2.806408
fingerprintconstants:Mg_Al:radialscreened_0:o:
-1
fingerprintconstants:Mg_Al:radialscreened_0:n:
3
fingerprintconstants:Mg_Al_Al:bondscreened_0:re:
3.193592
fingerprintconstants:Mg_Al_Al:bondscreened_0:rc:
9.000000
fingerprintconstants:Mg_Al_Al:bondscreened_0:alphak:
1.000000 2.000000 6.000000 9.000000
fingerprintconstants:Mg_Al_Al:bondscreened_0:dr:
2.806408
fingerprintconstants:Mg_Al_Al:bondscreened_0:k:
4
fingerprintconstants:Mg_Al_Al:bondscreened_0:m:
4
fingerprintconstants:Mg_Al_Mg:bondscreened_0:re:
3.193592
fingerprintconstants:Mg_Al_Mg:bondscreened_0:rc:
9.000000
fingerprintconstants:Mg_Al_Mg:bondscreened_0:alphak:
1.000000 2.000000 6.000000 9.000000
fingerprintconstants:Mg_Al_Mg:bondscreened_0:dr:
2.806408
fingerprintconstants:Mg_Al_Mg:bondscreened_0:k:
4
fingerprintconstants:Mg_Al_Mg:bondscreened_0:m:
4
fingerprintconstants:Al_Al:radialscreened_0:re:
2.863780
fingerprintconstants:Al_Al:radialscreened_0:rc:
9.000000
fingerprintconstants:Al_Al:radialscreened_0:alpha:
4.640000 4.640000 4.640000 4.640000 4.640000
fingerprintconstants:Al_Al:radialscreened_0:dr:
2.806408
fingerprintconstants:Al_Al:radialscreened_0:o:
-1
fingerprintconstants:Al_Al:radialscreened_0:n:
3
fingerprintconstants:Al_Al_Al:bondscreened_0:re:
2.806408
fingerprintconstants:Al_Al_Al:bondscreened_0:rc:
9.000000
fingerprintconstants:Al_Al_Al:bondscreened_0:alphak:
1.000000 2.000000 6.000000 9.000000
fingerprintconstants:Al_Al_Al:bondscreened_0:dr:
2.806408
fingerprintconstants:Al_Al_Al:bondscreened_0:k:
4
fingerprintconstants:Al_Al_Al:bondscreened_0:m:
4
fingerprintconstants:Al_Mg:radialscreened_0:re:
2.863780
fingerprintconstants:Al_Mg:radialscreened_0:rc:
9.000000
fingerprintconstants:Al_Mg:radialscreened_0:alpha:
4.640000 4.640000 4.640000 4.640000 4.640000
fingerprintconstants:Al_Mg:radialscreened_0:dr:
2.806408
fingerprintconstants:Al_Mg:radialscreened_0:o:
-1
fingerprintconstants:Al_Mg:radialscreened_0:n:
3
fingerprintconstants:Al_Al_Mg:bondscreened_0:re:
2.863780
fingerprintconstants:Al_Al_Mg:bondscreened_0:rc:
9.000000
fingerprintconstants:Al_Al_Mg:bondscreened_0:alphak:
1.000000 2.000000 6.000000 9.000000
fingerprintconstants:Al_Al_Mg:bondscreened_0:dr:
2.806408
fingerprintconstants:Al_Al_Mg:bondscreened_0:k:
4
fingerprintconstants:Al_Al_Mg:bondscreened_0:m:
4
fingerprintconstants:Al_Mg_Mg:bondscreened_0:re:
2.863780
fingerprintconstants:Al_Mg_Mg:bondscreened_0:rc:
11.000000
fingerprintconstants:Al_Mg_Mg:bondscreened_0:alphak:
1.000000 2.000000 6.000000 9.000000
fingerprintconstants:Al_Mg_Mg:bondscreened_0:dr:
2.806408
fingerprintconstants:Al_Mg_Mg:bondscreened_0:k:
4
fingerprintconstants:Al_Mg_Mg:bondscreened_0:m:
4
screening:Mg_Mg_Mg:Cmax:
2.900000
screening:Mg_Mg_Mg:Cmin:
0.490000
screening:Mg_Mg_Al:Cmax:
2.900000
screening:Mg_Mg_Al:Cmin:
0.490000
screening:Mg_Al_Al:Cmax:
2.900000
screening:Mg_Al_Al:Cmin:
0.490000
screening:Al_Mg_Mg:Cmax:
2.900000
screening:Al_Mg_Mg:Cmin:
0.490000
screening:Al_Mg_Al:Cmax:
2.900000
screening:Al_Mg_Al:Cmin:
0.490000
screening:Al_Al_Al:Cmax:
2.900000
screening:Al_Al_Al:Cmin:
0.490000
networklayers:Mg:
4
networklayers:Al:
4
layersize:Mg:0:
58
layersize:Mg:1:
20
layersize:Mg:2:
20
layersize:Mg:3:
1
layersize:Al:0:
58
layersize:Al:1:
20
layersize:Al:2:
20
layersize:Al:3:
1
weight:Mg:0:
-1.785709637141698e+00 -2.371331163952699e+00 -3.584666446035055e-01 -3.994433541292258e-01 -3.474264138268926e-01 -8.381743360502992e-01 6.290413047627712e-01 -5.646601130458131e-01 -5.364061550950701e-01 -1.420156935100460e+00 -2.816583819554435e+00 -1.494210880082622e+00 -2.951756069400571e+00 -4.056376487273200e+00 -4.878726596441286e+00 -1.919851021890410e+00 -1.040933359344202e+00 -1.912164145788669e+00 3.582828089435102e+01 -4.267173909417400e+00 -6.073492346374423e+01 -1.607220925670398e-01 -1.719640989485931e-01 -5.649704843356557e-01 1.646854362247616e-01 9.226352576765787e-01 -1.510449197387298e+00 -5.880715677047327e-01 -4.644240538486470e-01 -1.806294357203167e+00 -1.091128419087364e+00 -8.228279168644904e-01 -1.649720523253538e+00 7.072598136485905e-02 -1.073496895419296e-01 3.320321961475337e+00 -2.547682785422520e+00 -1.290055452330559e+00 1.430839408291663e-01 1.999754445059562e+01 -4.972915253338146e+00 6.208169152968830e+00 3.472185560305259e-02 -3.599451946554959e-02 1.046983976380782e-01 -1.694934642255984e-01 -1.294106101219921e+00 -3.274114430854418e-01 -4.747836733460055e-01 8.296459354302431e-02 -5.639484222062460e-01 6.591804413161815e+00 -1.443877461097912e+00 3.870638814650015e+00 9.999345057385436e-01 1.440698787682816e+01 -2.757151858789724e+00 7.584676150455445e+00
-1.516123250662651e+00 -1.889482637400315e+00 -8.845136034875191e-01 -1.768081476547574e+00 -4.944738947512313e-01 -1.539847337564832e+00 3.579604433064165e-01 -7.328663859063962e-01 -7.577813442716000e-01 9.565861327587108e-02 8.453058400993022e-01 -8.294539765971408e-01 6.148647179847951e-01 -9.768006368808708e-01 4.366809359226592e+00 -1.111644839699821e+00 -1.309930309373545e+00 -1.414575276229275e+00 -3.678183236986850e+01 3.464630282863912e+00 5.865608837071269e+01 8.679084311160959e-01 1.771023159259409e+00 -2.074962144113289e-01 1.236538330236955e+00 -6.947842423978178e-01 5.261597058141348e-01 7.312115571035712e-01 5.872212540509701e-01 2.329576421085782e-01 -4.054636819359206e-01 1.548668586152546e+00 9.234094464501965e-01 1.534166807735957e-01 -9.703966105167389e-01 -1.261822800509360e+01 3.430765282553199e+00 -2.166411434623481e+01 -1.734867333237623e+00 -4.849650293621495e+01 3.609583973481238e+00 -5.898071561915224e+01 1.271431259060009e-01 -1.587574442499559e-01 -9.108624394784862e-02 2.157346586330218e-01 1.371638960931185e+00 3.197845474224496e-01 8.102353388832680e-02 -5.438324250447317e-01 -1.374618240214261e+00 -1.098822687968962e+01 -8.980012911691826e-01 -6.859907883157475e+00 -6.000857886012690e+00 -3.182678105931556e+01 -5.309281873382854e+00 -1.099113141972782e+01
-1.595948299400713e+00 -9.917357012461063e-01 3.289330499748370e-02 -1.082482821580614e+00 -1.254500180940821e+00 -1.512946254495855e+00 -4.807750350668318e-01 -1.636683797306628e+00 -1.447406382731868e-02 -2.606128047694211e+00 -1.151000304617074e+00 -2.251392163542068e+00 -2.825456228048855e-01 -5.590089894162079e-01 -9.809469334321716e-02 1.523487901335693e-01 1.109775319138070e+00 1.599120510968118e+00 3.806208494958453e+01 -1.824568529302817e+00 -6.026898076177336e+01 -1.645931841175404e+00 -1.142472808402406e+00 1.732520209244453e-01 -9.802189137231041e-01 1.021020494977193e+00 -7.974296633990253e-01 7.987563605865354e-01 -1.325348310611384e+00 -3.306950717367093e-01 -4.197399091732549e-01 -1.923423889030254e-01 -1.087078691840971e+00 6.130016250913731e-02 -3.043680836177625e-01 3.249073856734301e+00 -3.494282750607797e+00 -2.787348580664225e+00 2.532233131252668e-01 2.132700744535062e+01 -3.891945294376054e+00 4.984721944290221e+00 -8.591074010436380e-03 1.389729557632992e+00 5.820152538904340e-01 4.845241737098689e-01 -1.784868565802203e+00 6.828170919600101e-01 -3.186308431534978e-01 3.313210512199288e-01 3.726994961108279e-01 5.937319354054387e+00 -2.176709520995805e+00 3.783167240088523e+00 1.156316375146520e+00 1.327963604026587e+01 -1.813351918146697e+00 7.169806893937777e+00
9.440812872077139e-02 5.302564997698384e-02 1.117978520676761e-02 8.308306593439836e-01 8.217071183559771e-01 8.554924651718659e-01 1.050313049065129e-01 2.687441622967747e-01 1.586282967066217e-01 2.388443897891485e-01 3.072278974606370e-01 1.143764756485686e+00 -8.102687224829047e-01 1.222516372244420e+00 5.221051147689456e-01 2.889680122542625e+00 1.757581330390175e+00 1.536322075513476e+00 4.017976500975776e+01 4.517217388196067e-01 -6.013656349193640e+01 -2.160735963472632e+00 -1.957673626977379e+00 -1.973886617808031e+00 -1.062492073960987e+00 -8.350366929906329e-01 -6.358123655911271e-01 -4.212662774602451e-01 -4.227809085813911e-02 9.521215462528613e-01 6.663462625985257e-01 -2.835635162897592e+00 -6.247022383796982e-01 -2.010753621924918e+00 4.838781227389280e+00 -3.562077608755666e+01 -1.853468424313148e+00 -1.796001032953733e+01 3.260816235457207e+00 -3.119184983948016e+01 -7.756159437740738e+00 -2.911343715170575e+01 -6.240769891615150e-03 1.326515805100646e+00 -1.742970142857320e-01 -1.387194181470721e+00 1.378184119783719e+00 1.193168529844272e+00 1.424871511862715e+00 1.798008366961889e+00 1.646827279092571e+00 -2.330857210956853e+01 -4.077200954765677e-01 6.646107014423341e+00 -3.612096350250668e-01 -5.819393972062899e+01 -3.326422346935368e+00 8.196409742764731e+00
8.026134238482531e-01 5.444653317168038e-01 1.052983757751088e+00 8.948419628763481e-01 1.178782508742015e+00 1.142882662283424e+00 4.332640192040950e-01 1.558869923854084e-01 1.033710792843344e+00 -4.183386580274796e-01 -4.103498602527378e-02 1.099023830999154e+00 1.091705166073150e+00 7.028908375690883e-01 1.494923339378697e+00 3.589751401086034e+00 1.854972723745576e+00 2.500715101234206e+00 3.895182908222151e+01 -8.322322107408431e-01 -5.952566729517557e+01 9.096784990985787e-02 1.074428966459908e+00 1.500439946691547e+00 9.403175101184030e-01 8.606965912631491e-01 1.111390624836119e+00 -2.176491305293237e-02 7.029030097192503e-01 5.539637420840762e-01 1.240110821832719e+00 -2.424888348772325e-01 1.307144131895208e+00 4.974679740816207e-01 1.014257597477208e+00 3.198593114835498e+00 -1.645652141349619e+00 -1.013700609843676e+00 2.867207197965427e+00 2.097055581464869e+01 -3.706228798378251e+00 6.265537959610239e+00 -1.832126463267875e-01 -1.036520916459131e+00 3.353741379602614e-01 2.259476240135999e-01 9.300139076017763e-01 -1.615249566522349e+00 -2.167774474441668e-01 -6.476169450903692e-01 1.280583519684650e+00 5.527271292227306e+00 -1.506063099130910e+00 2.848449946786113e+00 2.624350303457668e+00 1.469239715533939e+01 -2.010280388147575e+00 6.291762476210704e+00
6.495078551193052e-01 2.168574166719645e+00 3.339759130343636e-01 1.119973312080915e+00 2.436885485890690e+00 1.359054452572750e+00 1.443958925175723e-01 1.895568642371617e+00 -5.175259743572410e-01 1.125230448008709e+00 6.831000746675069e-01 1.421760703875003e+00 8.746006899327209e-01 6.238777705632904e-01 6.106764895058953e-01 -9.616007774361685e-01 -1.744995359801435e+00 -1.042597546941120e+00 -3.827922662677923e+01 2.481465058984861e+00 6.071758460012248e+01 4.500417576803731e-01 -7.243147511699479e-01 1.618980874016269e-01 -1.159452824977600e-01 6.036337012610200e-01 -9.611944887221133e-02 9.136321632450725e-01 6.743230971994020e-01 7.437251526369391e-02 9.868885410595589e-01 -3.584919506612915e-01 1.106885256506014e+00 1.259559780097294e+00 -1.255472277829583e+00 -7.310443622500878e+00 1.725841423474411e+00 8.527143411398804e-01 -5.139157040102878e+00 -2.660349676027390e+01 9.676328892527145e-01 -8.730602073559078e+00 3.703174666230394e-01 7.001918359788613e-01 -3.874684682112543e-02 -1.155032963726255e+00 6.455549204231563e-01 -8.236664770470153e-02 2.982460443128121e-01 1.129936952604915e-01 -8.920492080906998e-01 -4.954977239408588e+00 2.277537957874971e+00 -4.244912308318869e+00 -2.993317215817838e+00 -1.019592704515189e+01 2.241378301418246e+00 -6.765114817202972e+00
1.497322901784700e+00 8.328863856045163e-01 1.626417118476197e-01 1.466127078108253e+00 1.541037427494254e+00 1.014463875299439e+00 -3.071156762496625e-01 1.899421392361014e+00 8.975411834602864e-01 7.197702106815657e-01 3.044684108561156e-01 1.639142575897001e+00 1.010807640630619e+00 -2.283536265327152e-02 -5.152948953023828e-01 4.879836836406502e-02 -1.425504192818913e+00 -5.354271699786821e-01 -3.861939468859126e+01 1.138604131033340e+00 6.049877395627557e+01 -4.241979321886862e-01 9.593936628836131e-01 -4.707019993674837e-01 -4.814612619461939e-02 -1.340529816703740e+00 1.378188387944096e+00 3.594617328440777e-01 -1.814538395809694e-01 1.722050719520492e-01 3.410425134552932e-01 -3.815549833143784e-01 7.567532999118334e-01 1.755825387790703e-01 1.872686143157443e-02 -3.810796565108913e+00 2.767401746093609e+00 1.461579181512387e+00 -1.518840532256556e+00 -2.035039786722959e+01 4.127913082739022e+00 -5.236458934307453e+00 1.340669420326538e+00 -9.360060291033818e-01 6.176675823421108e-01 -9.234117177263135e-01 9.010930334218907e-01 -5.552262029152705e-01 1.658235549492413e+00 -1.130613865248042e+00 1.175853571492664e-01 -5.789734962186391e+00 1.147741517409820e+00 -3.532708640915806e+00 -2.386004933114704e+00 -1.530520550343530e+01 2.155462511924869e+00 -7.731709555110941e+00
6.151546023375839e-01 8.331475683806565e-01 1.127105879987719e+00 1.957149284768375e+00 1.609785347419244e+00 1.094558187291200e+00 1.003660059076397e+00 5.907668277439444e-02 2.484655875465800e-01 7.892889717172837e-01 -7.037722494665709e-02 5.117250213317729e-01 1.072495886134013e+00 1.690347945663896e+00 4.082623786516771e-01 2.460418880041200e+00 2.546166277815583e+00 2.102621781365916e+00 3.993327015592153e+01 7.537685387866933e-01 -5.986157598250070e+01 1.161711667641092e+00 2.523235675486633e-01 2.126517710387116e+00 1.130396762837665e+00 1.281028323901280e+00 8.464387615980400e-01 1.316538110534906e+00 -1.022741959300069e-01 1.009796130577260e+00 3.291880400569602e-01 1.482320886180379e+00 -2.750623091342203e-01 1.404167573658044e+00 4.395704001780482e-01 4.443175046993431e+00 -1.842659720713829e+00 -5.585681658440382e-01 2.651925280154365e+00 2.241600557997685e+01 -2.405429235852421e+00 6.740796874563553e+00 3.256188367030415e-01 -4.714616710521252e-01 1.132748141467966e+00 -4.235899455429966e-01 4.655179394994165e-01 -1.271596208163574e+00 5.846963753764466e-01 -1.422868916392639e-01 8.197150148590734e-01 6.520413426115458e+00 -3.638022706184743e-01 3.947826186051187e+00 2.398237398756997e+00 1.513149184279703e+01 -2.028909800876026e-01 6.062284761783476e+00
-1.456103275677101e+00 -1.747940603029734e+00 -9.720257698368204e-01 -9.934253897638343e-01 -4.531173145211597e-01 -1.228599664209593e+00 -5.164054639677400e-02 -5.763127337477418e-01 -1.100950257011979e+00 -8.696233568049690e-01 1.802652869389618e-01 -5.246872555671930e-01 -6.937519916901576e-01 -6.157056598666270e-01 -1.862581080287556e-02 -3.202135001300810e+00 -1.576648733774774e+00 -3.461757543113149e+00 -3.873872510403687e+01 3.313355944512269e-01 5.972602658870902e+01 2.938808095164880e-01 -8.550925793330891e-01 -1.646818696793851e+00 -1.861953667013123e+00 -6.950244416517213e-01 -1.445934336769557e+00 -7.948783879144076e-01 -1.323148122386140e+00 -2.148186262150269e-01 2.336514478409819e-01 -8.132112683253392e-01 -4.430864528714903e-02 -4.437542917187206e-01 -8.398878787032650e-01 -4.028301263410073e+00 2.484670598235052e+00 1.392157483066873e+00 -2.596052919166324e+00 -2.102447236799064e+01 3.645385103171598e+00 -7.222801978445798e+00 -2.214583702442715e-01 1.206354505933984e-01 -1.240861680043865e+00 8.372732566904626e-01 3.439558810141765e-01 6.376277608908648e-01 -2.103327143155892e-01 -5.263117799449192e-01 -1.644057124281769e+00 -7.059374916507548e+00 6.857366956425881e-01 -2.892151130353331e+00 -2.245220123805767e+00 -1.368482105405257e+01 1.067662979078698e+00 -5.897996319091171e+00
1.169686171793793e+00 1.383290456074257e+00 7.871694121536006e-01 6.570951504404878e-01 2.237115749971619e+00 8.444427421957335e-01 -5.408723271469059e-02 8.771873811384934e-01 5.319979369126591e-01 1.323373309156311e+00 -1.213156375809409e+00 1.586674398530206e+00 6.010145392730563e-01 -6.813591118689866e-01 -4.542285094771753e-01 -4.615556834120846e-01 -1.589970062588768e+00 -9.879260164216339e-01 -3.939289667362455e+01 9.804350884746398e-01 5.922578135408816e+01 1.769368807344529e+00 1.477947161809543e+00 2.077494953862131e+00 1.381193010140540e+00 1.948276096645537e+00 8.163867735991893e-01 1.240254076116419e-01 1.502605723597530e-01 5.236802213790946e-01 -9.682571465198583e-01 2.944079801907815e+00 -8.801952483841465e-01 2.610514860314305e+00 -4.885001153173206e+00 2.025580054707683e+01 1.255790293135207e+00 9.301713119441374e+00 -5.222641920607171e+00 -6.467732220392478e-01 5.618749732141108e+00 6.424550466109433e-01 -3.191995413229567e-01 3.047501019449786e-01 -2.485560176452425e-01 8.872043133180906e-01 -4.554515063744631e-01 1.047836742963862e+00 -7.444461646153682e-01 -4.603371264924711e-01 -5.314673822949866e+00 2.951792297279541e+01 -3.162923921605903e+00 -2.717834951770745e+00 -6.510271734450696e+00 6.827142025311707e+01 -3.059788520164010e+00 -3.660918059839303e+00
-3.150210050412978e-01 -7.581296853743379e-01 7.149738110943165e-01 1.180664558144573e+00 -3.369074530464621e-01 -4.126525161282242e-01 -3.431083364930922e-01 7.115759376882236e-01 -4.187433076499490e-01 3.760731655432754e-01 -1.452155412303804e-01 8.294192127468272e-02 -5.408918879753030e-01 -8.961610232206794e-01 -8.305726777347928e-01 1.266676713233917e+00 1.910398881477749e+00 -3.088018474925281e-01 3.879369228106974e+01 -1.782842917843394e+00 -6.064616577147219e+01 -9.565698451288248e-01 -3.000826750033378e-01 9.935551811565110e-01 3.121875585506592e-01 -2.063426894486875e-01 4.953676196304044e-02 1.877183670698412e-01 -7.695981486942038e-02 -2.964527091522284e-02 -4.936066462111493e-01 8.797707354185188e-01 5.130541574463129e-03 6.506028994291482e-01 -3.427035163580404e-01 2.579403885310316e+00 -2.229507976516024e+00 -6.175710804490746e-01 2.129615923385346e+00 2.077794900033060e+01 -2.851815854758159e+00 5.654053233935262e+00 -3.034063560926140e-02 3.685115640509649e-01 -5.740979305309140e-01 -1.157565515371050e-01 9.010035024529553e-03 5.109506515177896e-01 1.502504108125128e-01 -4.569273379873958e-01 7.235353768031403e-01 5.780644280346827e+00 -1.260518100797727e+00 3.552827339360714e+00 1.931844218801803e+00 1.309155788018073e+01 -1.695720094841159e+00 4.997626375040753e+00
-1.867208210521629e+00 -2.154050124981763e+00 -2.025121256348245e+00 -8.780250697836709e-01 -2.545055949093587e+00 -1.705593072254862e+00 4.249360820833717e-01 -1.798481679755026e+00 -1.028007488375364e+00 -1.348895439563146e+00 6.898426536221167e-01 -1.719321928990863e+00 5.363475582552589e-01 1.067891124177100e-01 1.630414302302847e+00 -2.322139924974998e-01 2.193833685682030e+00 1.078021070010580e+00 3.849410542663313e+01 -9.869268663645649e-01 -6.030607932563299e+01 -7.833294154853248e-01 -1.249583597598111e+00 2.301581834274389e-01 -8.043309558504536e-02 1.197198740384817e-01 8.497512044206752e-02 -1.685623113019995e-01 -4.573217662864938e-01 4.233892164043358e-02 -1.365448060940942e-01 -3.984620069946951e+00 -2.159095052723752e+00 -9.557599924254411e-01 -1.894389657239876e+00 1.416676704231087e+01 -4.678589308970982e+00 4.331597318627465e+00 -1.259264088839718e+00 4.293153854426649e+01 -5.030501459102738e+00 2.265707244236811e+01 -7.978564118559235e-02 -1.042088797019775e-01 3.335739177124347e-01 1.551927642232589e-01 2.680123945549088e-01 1.785770248427373e+00 -5.478067476749638e-01 1.304802359321553e-01 1.052142035696074e+00 8.407124049156998e+00 -8.516475944808340e-01 4.605113845012633e+00 2.790149749983415e+00 1.863326545518285e+01 2.872164563840890e-01 9.173222499047370e+00
5.506032834242659e-01 -3.830352521749511e-02 9.366673427777513e-01 2.043458927160148e+00 -4.981373356464123e-01 8.392825427027072e-01 -4.630559293407024e-01 -1.845776373763883e-01 1.391138930050305e+00 2.336162110190607e-01 -6.204332493390088e-01 7.658898641017703e-01 1.284244419149069e+00 1.868318925210131e+00 -5.809387411078776e-01 3.473073163631298e+00 2.278490641999710e+00 1.843351067156179e+00 3.960367063073098e+01 1.161231224777468e-01 -5.957192220849409e+01 5.593513044563266e-01 1.279811551279498e+00 1.389479800033307e+00 1.149468030892677e+00 1.380808367105348e+00 -5.367319137833872e-01 -5.381049622376979e-01 -4.018602177260740e-01 -5.774428298039329e-01 9.736924299662771e-01 -5.373078206565592e-01 -4.757679466892408e-01 4.891263035661476e-01 1.127636121823873e-01 -1.416849760630635e+01 -2.297641744320313e+00 -1.060341331329528e+01 2.208756399381943e-01 -1.320265241247732e+01 -2.727863430188731e+00 -2.156124176566502e+01 -5.234242793683467e-02 1.193528086485630e-01 7.019157331812368e-01 9.797347729851728e-01 -9.179664353094518e-01 1.295789948590120e+00 -5.513907981701797e-01 4.145942193054186e-01 1.104892833147659e+00 8.548433513434377e+00 -6.080873134459865e-01 1.034230634400686e+00 1.673898914157290e+00 1.332560986638912e+01 -1.982630317899963e+00 4.313653932751602e+00
1.892900579489723e+00 1.195675363663570e-01 4.931393066052225e-01 1.773436264580348e+00 1.018540736033245e+00 1.478467515677010e+00 1.068909184260295e-01 4.318416853028965e-01 6.520390933599345e-01 7.232015824045398e-01 1.358206978514629e+00 1.259230150326073e+00 1.829102579762920e+00 1.797925303658782e+00 1.580598244275055e+00 2.124532248155129e+00 1.438664860181990e+00 2.818893630463421e+00 3.928257515981589e+01 6.525829918797219e-01 -5.912574662607658e+01 8.459597591568284e-01 5.377927919821095e-01 1.087261009572620e-01 5.326046470065620e-01 6.763222190544089e-01 5.673033061821032e-01 4.494501935235508e-02 7.045852200994963e-01 -3.905771713020070e-01 -3.902043074165583e-01 7.352057508782162e-01 -8.172280190674854e-02 7.212852407752280e-01 1.790215480893179e+00 3.647954487449964e+00 -2.040557371706523e+00 -3.011614934519346e-01 2.842375532121052e+00 2.115339222930650e+01 -2.834248637940453e+00 6.937878302385224e+00 1.399470504980892e+00 -5.797480924042091e-01 -2.220920468920098e-02 3.141822693609726e-01 -2.665642416205489e-01 2.559092008522766e-01 2.422007443012340e-01 3.067518117563274e-02 1.707659469919815e+00 5.633963943522351e+00 -4.927517234431426e-01 2.979913251743053e+00 3.259463706143255e+00 1.494804754089688e+01 -1.052028357455071e+00 6.956190423016229e+00
-2.013653326644787e+00 -1.665800997793766e+00 -1.607723544125994e+00 -8.276366610309568e-01 -5.186896666926978e-01 -8.750085361286812e-01 -9.128944739329538e-01 -1.655147832436357e+00 -1.293960680042440e+00 -6.195220916739224e-01 1.794244988706833e-01 1.100804249053197e-01 -5.695192108900274e-01 -1.951015882811276e+00 -8.739156732690531e-01 -2.629213635890685e+00 -2.617465371337444e+00 -2.720879186174074e+00 -4.012033429166078e+01 6.225733875318792e-01 5.868113695524157e+01 3.101833080605759e-01 -7.830409312939863e-01 -2.064689904014698e+00 -1.162142405609573e+00 -6.095842580300000e-01 -4.604968395803067e-01 -1.091124641700418e+00 -1.180019001205851e+00 4.415640701102961e-01 -4.349821702159880e-01 -1.563184846363212e+00 -5.977111439433292e-01 -4.469194471837865e-01 -9.520550489057891e-01 -4.048671853267269e+00 1.007723267955946e+00 1.642628368380529e+00 -1.317332174868449e+00 -2.268273976878976e+01 3.000401984828846e+00 -5.696936359671310e+00 -7.786958576399514e-01 6.589352039310380e-01 -1.650773243030217e+00 4.279498804464296e-01 -1.069140475507969e+00 1.198394888278420e+00 5.099865559257777e-01 -7.492747941874035e-01 -1.930936224673610e+00 -5.844876850547339e+00 1.226695558244665e+00 -2.321487617726204e+00 -3.657251292744047e+00 -1.476903311813269e+01 1.366143777573320e+00 -6.788019084514294e+00
-1.900127956904744e+00 -1.614877675625845e+00 -6.031792496085100e-01 -1.199996303554719e+00 -2.024087316400690e+00 -1.749484228166303e+00 -1.640711627214922e+00 -1.418100160757070e+00 -4.013615551681407e-02 -9.912221507746571e-01 -8.139115463485208e-01 -1.097791228645540e+00 -1.218853765033092e+00 -9.389087208387402e-01 -7.726283153349398e-01 1.068935698646161e+00 1.078350606378432e+00 8.398125861064322e-01 3.804293104715946e+01 -1.135325419485055e+00 -5.971374455421793e+01 -1.182442330674610e+00 -1.165873969299222e+00 -4.133400888138105e-01 -5.160278607918934e-01 9.172782123586428e-01 -8.459825997358857e-01 -5.372856823872793e-02 -1.215369482153126e+00 -3.364892623510000e-01 -2.396455727105233e-01 -9.280376616165876e-01 -1.530638888810315e+00 -4.058170598218643e-01 -7.397018378369307e-01 2.613585483320553e+00 -3.500047920645216e+00 -2.584128406677028e+00 2.108262824449401e+00 2.150196908342983e+01 -4.139448545111482e+00 5.691912836152653e+00 -3.468534096854611e-01 -1.204412883683414e-01 -7.718746301815105e-02 -1.602433208123794e-01 -4.054048482252511e-01 5.075658455595712e-01 -1.623789246929828e+00 3.792149251582282e-02 6.348067091558756e-01 7.629598690977820e+00 -1.217450387057794e+00 3.809027032248044e+00 1.000129130698186e+00 1.409396417687703e+01 -2.288733408978484e+00 7.823367401769505e+00
6.677384746294071e-02 7.145488066673366e-01 2.489879798986131e-01 1.844555806288372e+00 -6.790959043240460e-02 1.257204144354420e+00 4.748564945291601e-03 8.760929124450866e-01 -6.864674958075967e-01 6.523116095486512e-01 -7.145925819436224e-01 5.976890443119832e-01 3.267408275176847e-01 1.153116747480742e+00 1.269384239931726e+00 3.505461159370955e+00 2.681411488443762e+00 3.256126501015209e+00 4.067762093236063e+01 2.423718923306040e-01 -5.917404114831201e+01 -3.893935507238976e-02 -2.714797525163113e-01 1.345482400708503e-01 1.450040538946213e+00 1.317708860103535e+00 -4.106769619307252e-01 -5.166274436270485e-01 -2.161269840318382e-01 9.909141827858832e-02 -1.037710418838401e+00 -3.419942483529050e-01 5.090543819537692e-02 -1.689294939367256e-01 6.066564260956041e-01 -3.194966040656718e+00 -8.498580934058224e-01 -5.906839819021856e+00 1.144048613014777e+00 3.951722545489535e+00 -1.798341006570878e+00 -1.109979491619539e+01 -3.998827276503918e-01 3.117841280537745e-01 7.401561603857543e-01 -3.151003647941699e-01 -6.572478902158646e-01 -1.059330435196439e+00 -2.258110818946177e-01 4.986573074648320e-01 1.054795069459436e+00 -6.534872351603693e+00 -9.744453630208600e-01 4.165657979395683e-01 2.333193133760215e+00 -1.825334075106521e+01 -2.715859024273775e+00 1.555722920941707e+00
-6.304130354538627e-01 -1.706191465529111e+00 -2.614578885486647e-01 1.830514822728846e-01 -1.374659412124440e+00 -7.899822136599892e-01 3.373375279677834e-01 -1.924659096680376e+00 -6.639561930987814e-01 -2.296889570516440e+00 1.502812168226441e+00 -1.348798021573365e+00 -6.003610299307800e-01 1.932638299310155e-01 -3.057663659750426e-01 9.436519346385256e-01 5.663552602326668e-01 1.272437710805222e+00 3.929169655518359e+01 -2.407936604317787e+00 -6.059059056252610e+01 -3.313565040942521e-01 1.440568084257538e-01 9.267112224973896e-01 9.752120524748482e-01 4.076742973979007e-01 -1.662678610779799e-01 1.235122224742212e+00 -1.189491749994293e+00 -1.142351459568135e+00 1.100278746911633e+00 -1.321253206769758e+00 6.408668915193843e-01 -1.262620917019034e+00 3.573461893257976e+00 -1.112604373950455e+01 -1.773988910742917e+00 -7.203270911072455e+00 3.036802726280925e+00 4.757733890835402e+00 -3.567010867145902e+00 -4.468163819565033e+00 -1.358194574488106e+00 6.590811694964938e-02 -1.337574022316208e-01 -4.458759474976270e-01 -1.072756039497483e+00 -6.793366166337730e-01 -1.872872321904922e+00 1.352764279578768e+00 8.150846250732159e-01 7.119808535465887e+00 -1.589734925889195e+00 2.748598743333923e+00 2.151128785383654e+00 1.550504790260026e+01 -1.764681853620750e+00 6.983690366076974e+00
9.609285219133623e-01 1.100937184496785e+00 6.742293933716366e-01 2.215481799070950e+00 1.723349916573386e-01 5.591260038674447e-01 1.101879419673879e+00 5.789280400584246e-01 5.607962334453498e-02 1.467505968911087e+00 -2.261470940255269e-01 1.579794795499728e+00 1.464375088094931e+00 2.303653957563707e+00 1.288647608260556e-01 3.782319835780063e+00 3.015715055548326e+00 1.694882644581113e+00 3.940365716072488e+01 -2.256038839954335e-01 -5.921506855683899e+01 7.365045177428251e-01 1.541377729611983e+00 1.150004337902504e+00 6.995600013927940e-01 9.373201255351435e-01 1.039386695034719e+00 1.220069334074607e-01 1.446087578309685e+00 6.640677048081250e-01 7.282002161548018e-01 5.971184615177580e-01 1.411300075712736e+00 6.215412388637387e-01 2.247832910719480e-01 3.919969493048933e+00 -3.009585006376973e+00 -6.185706311425533e-01 2.400352887909316e+00 2.181880280493685e+01 -3.865399431780463e+00 6.242748194744823e+00 1.735253018638783e-01 -1.685964612380604e-01 3.929311420670237e-02 4.090616810426532e-02 -1.274216923309136e-01 -1.050924881913444e+00 2.075593760954182e-02 6.561958740912458e-01 7.526689275617816e-01 5.548200802353842e+00 -6.969733776740566e-01 2.397110370854551e+00 2.120115238278637e+00 1.493743618861343e+01 -1.425621688083554e+00 6.895576582885743e+00
-1.338742462379944e+00 3.767020122298228e-01 -1.206182193227218e+00 -9.464901964056885e-01 2.849914557277630e-01 -6.147257265524634e-01 9.863968594737053e-02 -7.225980545916540e-01 -8.567558294587090e-01 -1.249156201745331e+00 3.775473071949890e-01 -1.934761911479883e-01 6.329677827348652e-02 2.949388023761791e-01 6.359307279465212e+00 3.652407935509041e-01 3.848114796769548e+00 -3.331203602487100e-01 -3.355676433173777e+01 4.061946409755262e+00 6.055116279778275e+01 5.741879966209301e-01 -1.036925321016977e+00 4.050966417716434e-01 -8.137343471916003e-01 1.180329396674364e+00 7.360865253967704e-01 5.140554862345725e-01 -2.344302667666907e-02 -1.575933140318599e-01 -1.583246175536504e-01 9.361424023162056e-01 -4.593167944871105e-01 -2.195507136850130e-02 -4.311654111883012e+00 -1.750866817744921e-01 1.251448765973281e-01 -1.304620905596290e+01 -5.948500123062186e+00 -2.610248805149519e+01 1.821797456929266e+00 -4.337511217288012e+01 3.406378510791560e-01 -8.222580724412766e-01 -1.332038463287349e+00 -2.262888677014703e-01 -1.295884531076384e-01 -1.712562454981386e+00 -8.081869486298623e-01 -1.121253707920938e+00 -3.058608483495804e+00 -1.395171208795252e+01 -5.071626482293745e+00 -9.119660885069990e+00 -1.101187284859091e+01 -3.126948326327833e+01 -1.122742363734864e+01 -1.309969043387856e+01
weight:Mg:1:
1.465778844036504e+00 -4.209351306089414e-01 5.533261536259784e-01 1.699269356406786e+00 7.451509332957360e-01 -1.034124604627082e+00 1.112346735177074e+00 8.892611012533947e-01 -1.556473289108563e+00 -1.495611368711766e-01 -2.881470112023502e+00 -2.894185814917097e-01 4.681277752316224e-01 1.031040479090871e+00 -4.558972190530629e-01 9.186855669666044e-01 3.972542856643079e-01 1.747313298737063e-01 6.838072300009305e-01 1.681611638215134e-01
1.501849767625394e+00 -7.023377472376465e-01 1.455387945298262e+00 2.340651413617266e-01 1.408737786907839e+00 -8.925309887350766e-01 5.743214399116848e-01 1.815312769785512e+00 -1.483814447438226e+00 -2.770061136788336e+00 5.082597798541868e+00 2.116588254937458e+00 1.698174731216727e-01 1.248322412711796e+00 -1.388596690964667e+00 1.326808151898367e+00 6.495455689312934e-01 1.892001665957773e+00 6.832644490403080e-01 -1.479934354096847e+00
1.681381320740473e+00 -1.147920710453949e+00 -5.081168577232035e-01 6.981079334746964e-01 4.743016647525004e-01 3.501976576659972e-01 1.189841055191703e+00 1.234988811918930e+00 -1.204782356360656e+00 -3.008452623817832e-01 -3.077205770795708e+00 8.732144080139520e-01 1.172431063073844e+00 1.479247512823286e+00 -1.535367344752776e+00 8.713828618883649e-01 5.161968273486323e-01 4.636515847343008e-01 5.428123858583572e-01 -3.476436053503250e-01
-9.870045008422520e-01 4.948676918949667e-01 -4.551239528082980e-01 -1.024418212260871e+00 -2.130365666373588e+00 2.042869485737032e+00 8.290182250742587e-01 -1.534424561694044e+00 1.082471956788938e+00 1.297606474744929e+00 -4.747982892504115e+00 -1.453793080234187e+00 1.403756925322778e-01 -8.812721650994962e-01 1.658881664770830e+00 -1.367705024194113e+00 -1.711160143448012e+00 -1.204461606056489e+00 1.955051607801028e-01 1.335447266350232e-01
1.331456064002820e+00 -3.443990651789668e-01 5.014652409875506e-02 8.721861751885298e-01 2.035849286276737e+00 -2.607661803226752e+00 -1.623490863873214e+00 1.315241992803213e+00 -8.645559029440065e-01 -1.545258732436165e+00 6.299682217808456e+00 8.465159119696554e-01 1.668960348339750e+00 1.792343852891206e+00 -1.779814364739630e+00 9.367140617683570e-01 8.594876367336072e-01 1.063425809220204e+00 5.089173950927403e-01 -1.781201967051649e+00
-2.518209426474575e+00 1.003944860141666e+00 -6.463154137955156e-01 -9.804866320897011e-01 -1.928062472623542e+00 1.026926735817894e+00 -4.290406941699949e-01 -1.459834520891626e+00 1.669352289396166e+00 2.262467151735990e+00 -6.031330614815437e+00 -5.914637320114322e-01 -1.070722912749366e+00 -2.006483463440807e+00 2.202637625493507e+00 -2.469165470491592e+00 -9.607205737228296e-01 -2.245668860025551e+00 -4.392003602360673e-01 1.149364338724064e+00
-8.119832646581950e-01 3.518705363333067e-01 9.246463774492765e-02 -7.798814332541475e-01 -1.128212349689842e+00 1.963824634060174e+00 4.888566812080562e-01 -1.716734587909100e+00 1.825219105105982e+00 2.146464786144905e+00 -3.360283443674060e+00 -1.530721840356525e-01 -9.797088099635017e-01 -7.349686427069815e-01 1.438473202391418e+00 -1.702044544762664e+00 -1.664305221615688e+00 -1.787177740176654e+00 -1.415345091677094e+00 1.316211354220498e+00
8.734421635622941e-01 -1.307675711145555e+00 1.468943230015174e+00 1.776087362673574e+00 1.766444102862730e+00 -9.887976564707337e-01 6.126732270389640e-01 1.403684328047654e+00 -1.965464090577594e+00 -2.116530874904755e+00 5.517642353532208e+00 2.534986729691318e+00 1.330696533796011e+00 9.073416744399517e-01 -3.396238100234890e-01 1.245256592634833e+00 1.304977892647917e+00 2.159098432823269e+00 1.116968603797167e+00 -8.767119796847646e-01
-2.799794912997838e-01 1.582128857059772e+00 9.919902106639022e-01 -1.124170299767554e+00 -1.139557922597514e+00 1.269882961967335e-01 -1.224845886128309e+00 -8.434140014212456e-01 1.701623470200913e+00 -1.614598264358074e-02 3.935203111500222e+00 2.927536382404504e-01 -1.365712954048305e-01 -1.321412444007030e+00 1.246038487323322e+00 -1.327972837275189e+00 -8.866493738108997e-01 -6.748055130079246e-01 2.705755236526660e-01 5.911678126991621e-01
-3.703716778117280e-01 1.084370539947259e+00 -1.911521080584282e-01 -4.894641642482672e-01 -1.538454791876779e+00 3.978268780998903e-01 -8.888809251250521e-01 -4.893860079996426e-01 2.141252826700208e+00 8.559532710169834e-01 4.125536076201732e+00 -1.691624600478772e-01 -3.005790744910043e-01 -1.462746971662383e+00 1.322212449042910e+00 1.847228987551023e-01 -8.154246574244368e-01 8.278584978713761e-02 -4.720906813745064e-01 1.837194044334735e+00
-1.963894147053697e+00 8.481971628862205e-01 -2.509455048337443e-01 -1.947584977996479e+00 -1.895362753755156e+00 1.939335100147419e+00 2.982093826820997e-01 -1.936668642805460e+00 1.839918949190644e+00 2.398282751265625e+00 -4.793332089976109e+00 -1.438241603219055e+00 -5.431125170907512e-02 -3.724806264554864e-01 1.701305722507781e+00 -2.358811790352806e+00 -1.334984267770158e+00 -5.849904592594316e-01 -1.169295423876260e+00 2.340489374899756e+00
-2.490102489911918e+00 1.048236893186082e+00 -1.085466275714722e+00 -1.127567450734038e+00 -2.193880076964710e+00 2.207408284753751e+00 2.166712070501259e-01 -1.746142113876670e+00 3.522352768661940e-01 2.432445171709474e+00 -5.439471813348341e+00 -6.995625480095804e-01 -1.307691652821496e+00 -1.465286347273700e-01 2.129072230980504e+00 -2.818040633869866e+00 -1.295004429226321e+00 -1.466218123415459e+00 -1.278757721171444e+00 2.332425566221312e+00
-2.255907054257435e-01 -5.847448296074976e-01 9.202925283532513e-02 1.638943206092620e+00 6.906966241072305e-01 4.345211422856532e-01 3.577271206726728e-01 1.408213235297299e+00 -7.746269751114643e-01 -1.212514014151606e+00 -3.914029578170664e+00 9.592452189936614e-02 1.738340207813581e+00 2.212850667223372e+00 -1.759360889570273e+00 4.619260342814928e-01 5.980209221758619e-01 -2.549828999518424e-02 -2.764009500428974e-01 -8.993002374420039e-01
-5.370291801322025e-01 5.873449877452648e-01 4.105991304440652e-01 -1.321350404003781e+00 -1.137895535409305e+00 1.836468466772769e+00 5.316732206352653e-01 -6.919008156266709e-01 6.581061895089561e-01 -3.534084726552320e-01 -4.003333148833982e+00 -1.478244346520043e+00 -4.487068587290338e-01 -5.655729056667194e-01 1.599132056629925e-01 -7.449487491341771e-01 -1.932774143674798e+00 2.482514725829248e-02 -3.517757227938000e-01 7.876121537016451e-01
1.476270041837531e+00 -1.193435835297533e+00 1.854853615983878e+00 4.796641711462346e-01 1.426973292424701e+00 -1.078116011217447e+00 -9.624076168442826e-01 2.400754940883012e-01 -1.160764739003492e+00 -2.855604615946185e+00 5.648216008304577e+00 1.623839644270675e+00 1.155615459583678e+00 1.093046171418981e+00 -1.323504446654159e+00 2.281722427079344e+00 1.843869897384129e+00 1.820173598509529e+00 1.009034999235191e+00 -8.283625032565384e-01
6.351015056496715e-01 -1.588095040598710e+00 1.510804680081518e-01 1.728631718929447e+00 1.953527508262844e+00 -8.950484151925027e-01 -1.549085232248696e+00 1.704261350179208e+00 -1.342170987659266e+00 -1.804549971486465e+00 6.436533459883923e+00 1.053860790926788e+00 1.883064071054059e+00 1.598067106145733e+00 -2.084965962526157e+00 1.994733317289165e+00 3.763483427828365e-01 1.681118544541766e+00 4.658592719062582e-01 -1.911934251078956e+00
-1.697854489882621e+00 1.766700196464240e-02 -3.391749782574969e-01 -2.491446557457555e-01 -5.435668974147123e-01 4.890387827304827e-01 1.379806866305661e-01 -6.504520462983524e-01 1.263603788866698e+00 2.778625614152376e+00 -4.142662187819849e+00 -9.675263818624473e-01 1.956929549471515e-01 -1.898440645190361e+00 7.791348002500257e-01 -1.706164448684087e+00 -1.698910158416905e+00 -1.475405130946446e+00 -2.295520708822354e-02 5.609460132896833e-02
1.218961654973661e+00 -1.669562069973942e+00 2.635652915573581e-01 1.892799785173103e-01 7.171386640627009e-01 -2.089835282415400e+00 3.753882122604449e-01 1.682094047187949e+00 -6.877276952798148e-01 -1.221140367875111e+00 5.591274456672248e+00 1.624309838689807e+00 1.154092197543588e+00 1.990225119865108e+00 -1.848657074223161e+00 1.583001765240571e+00 6.171471228114651e-01 2.304767005600374e+00 -4.356637012169388e-01 -7.561080895978304e-01
-7.392124926345531e-01 8.644870754087407e-01 7.744218863524486e-01 -9.199286891963258e-01 -4.508715255978447e-01 6.830813276279550e-01 -1.118978090142563e+00 -4.891122141137486e-01 1.950733879750220e-01 6.619846883266907e-01 2.804221309941165e+00 -3.762944369601601e-01 -1.825905385556802e-01 -1.210400746100754e+00 1.085358528682326e+00 -4.236253780136567e-01 -1.448188645344797e+00 -1.135441192359422e+00 -1.044816971831260e+00 -1.852596017739929e-03
-2.137291278489463e-01 -1.984548668714384e+00 -1.185646549783710e-01 1.914691628138003e+00 9.008019701886796e-01 -6.370146352484225e-01 1.369844305623831e+00 2.371320747779856e-01 -1.645637012338011e+00 -5.198984711569546e-02 -3.718211211669842e+00 4.462004058993116e-01 1.394224669614334e+00 4.269052754339200e-01 -7.088951440033354e-01 -8.672521187431148e-02 1.053740197440027e+00 1.159484492504233e-01 -2.101757309715755e-01 -2.221620119704517e-01
weight:Mg:2:
4.985102860451676e-01 -7.262792472889643e-01 1.318763576828465e-01 8.186331884718984e-01 -2.783578237068067e+00 2.060732996889114e+00 3.759601959473670e-01 -2.253718278283624e+00 -1.100193328613778e+00 -1.677618074609734e-01 1.035923903154120e+00 2.567822564242692e+00 7.529807197443396e-01 3.005436874704988e-01 -2.142457556260002e+00 -2.439188269382941e+00 1.028510520644794e+00 -2.074459262409995e+00 -1.079019215644429e+00 1.147978452894624e+00
weight:Al:0:
-1.432110723201956e+00 1.841917779704499e+00 1.719324066354930e+00 7.026912090308464e-01 -1.189044624711053e+00 1.068436804434558e-02 4.570284250779559e-01 1.568887767245410e-01 -2.732522139584960e-01 1.176266067769484e-01 5.871947232272907e-01 6.857926438945583e-01 1.855191607770853e+00 -7.074117842093759e+00 5.060431846588827e+00 -9.131452752131771e+00 -3.887866704419630e+01 -5.958695977044773e+01 5.482665032040791e+01 -1.466629573686700e+02 -2.214003719453278e+01 2.687821829537404e-01 1.467478658828394e+00 2.450525313276710e+00 1.836035829344747e+00 1.014980816371806e+00 -5.431733345953269e-02 -4.166933191638935e-01 3.857578749814471e-01 -1.307015876269008e+00 9.489858918991716e-01 -1.055304562755620e+00 -3.672211493025497e-01 -6.225994515969970e-01 -9.830657003671998e+00 -1.689466046518755e+01 -4.053354282650348e+00 1.216012592833444e+01 -2.975770865669723e+01 -3.862092373827004e+01 -2.241572934245583e+01 2.863394680669568e+01 -1.812289961344137e-01 1.143378117702868e+00 3.981934180169743e-01 1.035157503881483e+00 3.231965753089316e-02 3.103351930711233e-01 9.671980861748466e-01 6.851809092506519e-01 1.935891373813104e+00 -2.566264009758761e+00 1.644867226556546e+00 -1.149677002774023e+01 5.311829483758602e+00 3.566349976845965e+00 4.801097445006265e+00 -5.599243572823184e+00
-2.493816629489102e+00 1.803243786753197e+00 2.482294891421849e+00 2.073250671092273e+00 1.102335877813907e+00 -4.555524511026257e-01 -2.032830266148408e-01 -3.229435835133955e-01 -2.169011480651218e-01 -8.814862243264918e-01 2.036567975959162e+00 6.802633258446865e-01 -6.627052206930845e-01 -8.725446279382282e+00 9.573955766064826e+00 -1.188028019142355e+01 -5.098489223255402e+01 -6.169572265146319e+01 7.352610751420212e+01 -1.450999522010589e+02 -1.250396393765602e+01 -1.466845819338494e-01 3.336989171585483e-01 1.084787530635759e+00 3.680599722446854e-01 1.028775377817223e+00 2.731696995141599e-01 4.139876543233951e+00 1.269427289473883e-01 1.695859510139002e+00 -1.888198855670740e+00 4.642759872553775e+00 -1.428917145716297e+00 1.745862425138112e+00 -1.718991471214031e+01 -4.089602348366602e+00 -1.188361049428283e+01 1.419896950037203e+01 -3.453130463450466e+01 -1.856409212799956e+01 -2.774336974334607e+01 3.109809046939586e+01 -4.893794940883491e-01 -1.336443014424853e+00 -1.921766940591308e-01 8.064763378867397e-01 -2.275475666934735e+00 -1.744073396603051e+00 -2.310059368001458e+00 4.959776552887763e+00 -1.107848775300084e-01 1.156368512335891e+01 -8.318325031484040e-01 8.777620550048706e+00 5.300939501286707e+00 2.861184637749722e+01 8.286071322521886e+00 1.987121084882488e+01
-1.347591753945153e+00 3.403490994942323e-01 1.582559164072798e+00 1.011238013310297e+00 8.671307138558701e-01 -6.145221394556727e-01 -1.369696693994654e+00 -4.796504290785871e-01 -2.581970138757129e-01 -1.202916825892050e+00 -3.501397331243151e+00 -5.180645801912249e-01 -1.954670766067575e+00 -7.782782581494712e+00 -3.145070246644248e+01 -1.415490872440733e+01 -6.308536680776756e+01 -6.033204094983649e+01 2.675545020209107e+01 -1.498267599209238e+02 -5.594230242448236e+01 2.219747712030302e+00 2.389443605305893e+00 1.677171758083394e+00 2.019540967705885e+00 2.492352183758881e+00 -3.608900181172940e-01 4.632248940882167e-02 6.175405256068316e-01 -2.471730545935495e-01 9.667919677212791e-01 1.530406546730379e+00 -1.788364412575043e-02 3.917620617885285e-01 -7.487733927031861e+00 -1.347401614819233e+01 -4.097418015188869e+00 5.320599656636385e+00 -2.487963513705950e+01 -3.287963277759405e+01 -1.771269787404349e+01 1.534514227754598e+01 4.989946070929033e-01 -1.401408682236294e+00 2.117086898968285e-01 -3.395049375250158e-01 7.104292181561113e-01 1.155153795295076e+00 -3.200081808671787e-01 4.560380082494677e-01 1.514938601813758e+00 -1.155702387639934e+01 1.413428578217233e+00 -1.704892244055884e+01 6.246774810997171e+00 -7.309286065301847e+00 7.984465065835433e+00 -1.074188212280723e+01
-6.187439736772989e-01 1.773017501652121e+00 7.285339586483368e-01 3.532432967478389e-01 -8.467853499366839e-01 3.068726584738788e-01 -8.214969077074131e-01 -7.935178255189520e-01 8.606654940611355e-02 1.090392345580999e-01 -1.262760042063322e+00 6.389004281926768e-01 2.173214930440658e+00 -6.699185611089317e+00 3.145912330892788e+00 -1.001462344462009e+01 -4.089542556740265e+01 -6.019539297622755e+01 5.383884872369422e+01 -1.483991332091668e+02 -2.142083191374203e+01 1.758802438442280e+00 6.142136053590673e-01 1.259747817052617e+00 2.382985637689204e+00 1.167212142590298e+00 -3.646760645395771e-01 -1.960670808393522e-01 -2.804351430637651e-01 4.926623697622402e-01 -1.369293894769585e+00 1.244656490010913e-01 -2.858024151927121e-01 6.073677046707691e-01 -1.078392240549954e+01 -1.589985655761591e+01 -6.766837503784342e+00 1.264115298193096e+01 -3.110086534638744e+01 -3.660335119536406e+01 -2.277033072415394e+01 2.962588258162774e+01 1.088710252097637e+00 -6.533824556074990e-01 7.188504414544261e-01 -5.765928235719312e-01 -3.073283871340471e-02 1.926095332006734e-01 6.030415672086420e-01 -7.099249699852894e-02 1.471566282476453e+00 -5.132864873378922e+00 6.099018570936162e-01 -1.125323712009319e+01 3.199690484410561e+00 3.728931141262224e+00 3.943566288106495e+00 -4.596665554008860e+00
-1.099610302885510e+00 3.625741581456616e-01 2.164000127445603e+00 1.138902892030247e+00 5.021643533733039e-01 1.267118462538977e-01 1.059054513822077e+00 -6.466334278397154e-01 -4.966466169796565e-01 6.639621185259361e-01 8.197484246024588e-01 -2.493375388290523e-01 -6.054830272603013e-01 -5.110532314363538e+00 7.691180328203559e+00 -9.828847595397509e+00 -3.882814936650011e+01 -5.332830262715802e+01 5.675763487666736e+01 -1.407655791931672e+02 -1.938599903361980e+01 2.365099540365844e-01 3.894532019306306e-01 1.622217173596539e+00 5.699938072563211e-01 1.021600482492864e+00 4.023692752335212e-01 -5.379180244436169e-02 1.329506941689211e-01 -3.691827174204309e-01 4.954562492263999e-01 -1.646649962153930e+00 -2.694953382245881e-01 6.266323440083940e-01 -1.133064186048235e+01 -1.743086593071545e+01 -4.829330944283042e+00 1.049485439921875e+01 -3.183830426736588e+01 -3.968530696276854e+01 -2.312349137415206e+01 2.748456348329824e+01 -4.662187183419507e-01 -1.874123065339049e-01 1.262480945525382e+00 -7.074761530859583e-01 6.781263073640880e-01 -3.936195320674471e-01 5.649325040135924e-01 -1.979046835400294e+00 6.694530130791567e-01 -6.125267066092572e+00 2.972832026889102e-01 -1.442516736162753e+01 2.713301771835890e+00 -1.272568665021838e+00 1.497085701044095e+00 -8.819892642413288e+00
2.270972508676572e+00 -9.448831465401315e-01 -1.872548997075092e+00 6.475174320195116e-01 2.095311391946971e+00 4.721838991908827e-01 8.419813645841157e-01 -4.204047530653203e-01 5.126663014842943e-01 6.958366840173515e-01 7.620279695229549e-01 5.483828350247560e-01 -2.944028237974083e-01 8.214202227431901e+00 -9.925489663130106e+00 1.284289925340336e+01 3.640102904666410e+01 6.531755554525364e+01 -6.065413308695910e+01 1.540229788982734e+02 1.634848104395119e+01 -9.418232223637144e-01 1.655281670198657e-01 -5.299326099248159e-02 -1.480151027161708e+00 -5.066438878760208e-01 1.560731589369125e-01 -1.056417517982188e+00 4.614839625287233e-01 2.725611391104326e-01 1.469604890840139e-02 5.405033843443745e-02 -2.142922977752409e+00 3.623634013166175e-01 7.885820876082556e+00 1.490951850622343e+01 2.943782689289873e+00 -1.015896731145747e+01 2.829404270058964e+01 3.586075079239354e+01 1.858936102338812e+01 -2.683713389735417e+01 1.000232616804251e+00 6.867208741321440e-01 9.410880695589353e-01 4.439872547176966e-01 3.451946507452828e-02 5.712914601816004e-01 9.295340156989002e-01 -1.231870846020250e-01 -1.748021581506692e+00 5.704333032344718e+00 -4.786426607472791e-01 1.146555123462855e+01 -5.639671681183954e+00 -2.237999314467623e+00 -2.551824669824498e+00 9.112678777895974e+00
1.000065062800030e+00 -1.317475163188961e+00 -1.762513981538560e+00 -2.285753929586093e-02 1.180416421814314e+00 6.283779992997816e-01 -1.873519944835288e-01 3.245285019447755e-01 3.882535124234925e-01 -4.903764841128573e-01 -1.412350126705854e-02 -1.536567893035869e-01 -2.979237588660169e-01 6.761015947207256e+00 -6.310281320421482e+00 1.163203678703299e+01 3.740985002234884e+01 6.060824604585126e+01 -5.667536681986889e+01 1.494001337693019e+02 1.909935713746351e+01 -6.459643330797216e-01 9.777851284081192e-02 -1.332642298341636e+00 6.595826892354367e-02 1.157174470442190e-02 -6.769567937407498e-01 1.073614650442393e-01 1.280631303597817e-01 -4.932624844844086e-01 8.287070471343628e-01 3.918104386028650e-01 6.806122021824034e-01 -6.792772423327295e-01 1.000783166733237e+01 1.442359780927455e+01 5.633062450176427e+00 -1.251030516597156e+01 3.087958202968966e+01 3.647297944264128e+01 2.158999647034986e+01 -2.797334681704914e+01 1.132829443741545e+00 -2.338787184378454e-01 1.510956652059528e+00 -4.797389671712566e-01 9.874039541608126e-01 3.457990137206280e-01 1.734953618505395e-01 -2.093552440324462e-02 5.784804958685974e-01 1.782739742284166e+00 3.982358854622468e-01 8.921162199396989e+00 -2.822566094974970e+00 -5.950515133771464e+00 -2.564404830093907e+00 4.034107462560540e+00
-1.456140171763652e+00 1.421869981629854e+00 2.347755862366141e+00 3.375468021055591e-02 -1.059526380081481e+00 7.501132453665879e-01 4.585853050714329e-01 9.467541745826630e-01 1.394563185793548e+00 -7.761528656647710e-01 3.894337734765644e-01 -4.670565652719310e-02 1.870125930283772e+00 -6.535833774240652e+00 1.556503342344549e+01 -9.557035795176217e+00 -3.102532590519321e+01 -6.053599584697879e+01 6.818487699715567e+01 -1.469574574442845e+02 -6.087157251524160e+00 5.618925419366472e-01 5.600039648448164e-01 1.099091344089244e+00 9.503900589762194e-01 2.562355810739827e+00 -8.348002439571441e-01 4.916504628869307e-01 1.041007584055157e+00 1.224046794503130e+00 -1.871488152783801e+00 5.831008109519478e-01 9.912683871604793e-01 1.186341056796104e+00 -1.001960476775033e+01 -7.196188962542398e+00 -4.755774795271144e+00 1.269322733907339e+01 -2.517687803383679e+01 -2.175032944218288e+01 -1.944386746900341e+01 2.964868776061055e+01 3.369046290163254e-01 1.245559426120832e+00 1.177831347618372e-01 -9.308931775477198e-01 1.127498579793694e+00 -1.237606289274876e+00 -1.503330016687930e-02 2.242142122474958e-01 -1.210953232613528e-01 -6.424985609753172e+00 -3.191126144056585e+00 -9.780743968648851e+00 1.159648478615604e+00 7.344124432144304e-01 -8.282715178616070e-01 -5.604381770520612e+00
-1.523755995254710e+00 2.250626978172765e+00 2.842503736029024e+00 2.501832026983969e+00 5.886095562262877e-01 6.024890692220075e-01 -5.649011867951119e-01 -1.758595753359236e-01 8.765402775178925e-01 5.591190580351555e-01 -1.192958913156274e+00 -5.851076177116050e-01 -1.377280945158846e+00 -7.394917838408078e+00 5.895103085933058e+00 -1.180217521341039e+01 -3.799215048388508e+01 -6.283645171450967e+01 5.183876156913210e+01 -1.516968173616302e+02 -1.983605183172796e+01 1.027004776722114e+00 9.445452140811043e-02 1.025070046798495e+00 9.837351972669154e-01 1.168604932942368e+00 -1.921742608673527e-01 6.312432039931632e-01 -8.510306573540387e-01 2.373222012323795e-01 -1.377997705844737e-01 -1.232692132268192e+00 3.179756337618171e-01 1.220716962051071e+00 -8.555985708245009e+00 -1.549565857922867e+01 -4.621116872437013e+00 1.195129358932225e+01 -2.540509910454630e+01 -3.794138041938822e+01 -1.881365420068616e+01 2.562047570657378e+01 -1.055926375699220e+00 -4.341831046141078e-01 -9.718179527257292e-02 -2.100527737643912e-01 -9.299794013733025e-02 -6.951880172386373e-01 -2.798060191788908e-01 1.524118613578008e-01 3.754839936272118e+00 7.642680315690025e+00 -1.670530153093481e+00 1.315436926559826e+00 8.033289640745979e+00 2.224498376655797e+01 -7.909551041970461e-01 7.193640979271770e+00
-1.348514521051773e+00 1.741877222373103e+00 1.275283047201778e+00 6.802121638670283e-01 -3.205796589991751e-02 3.665810815620481e-01 9.524173481720821e-02 7.448265449821624e-02 -3.441825844774107e-01 7.541945371014994e-02 1.199176039435992e+00 -9.127456455706241e-01 -1.032190207467590e+00 -7.276876541217718e+00 3.373173452087405e+00 -1.073507223011985e+01 -4.499771820157802e+01 -5.773891684332969e+01 5.547830104282509e+01 -1.465722852394755e+02 -2.548351129657324e+01 4.612816775906559e-01 5.606138479530822e-01 1.982784122629453e+00 1.088523066945077e+00 2.268095893161326e+00 1.057674364084170e-01 8.408323961719550e-01 -6.461947949515955e-01 4.177584888287743e-01 -6.675327162819584e-01 5.304449353263165e-01 3.092714942000399e-01 9.746242398567848e-01 -1.143082789445881e+01 -1.577059041283818e+01 -5.345654388675412e+00 1.143251598774175e+01 -3.167804129790818e+01 -3.865895268164886e+01 -2.283728105054481e+01 2.883137028061659e+01 4.580216609713528e-01 5.676544588933377e-01 1.273776900383664e+00 -3.888870796706662e-01 -1.490234363262336e-02 3.557451943907265e-01 2.430502367702629e-01 -3.508550770971827e-01 1.171664156415408e+00 -7.443159553535657e+00 5.260162985833595e-01 -1.472295064514932e+01 3.885582272308717e+00 1.389896523633034e-01 4.709844417744390e+00 -8.042267277807570e+00
-2.673686041219628e+00 1.848718259112358e+00 2.847911984213018e+00 2.578676591548682e+00 8.767487789050403e-01 -1.067079476591140e+00 -4.852296760947503e-01 -2.055758077397882e-01 -1.064835734480204e+00 -1.793508204393659e-02 -1.505595044207793e+00 1.368134422937604e-01 -7.153911820671812e-01 -8.949450414145591e+00 -2.636405841105347e+01 -1.349478119750641e+01 -5.037986243725478e+01 -6.375970063479721e+01 2.354727678335179e+01 -1.513187810870275e+02 -4.570858235604122e+01 3.965574548628955e-01 6.591592212696764e-01 6.131701481660720e-01 1.497416301242334e+00 1.057484657202598e+00 6.790006211722156e-01 1.516755891215019e+00 4.325921954792687e-01 1.947111458581545e+00 -8.412462489440533e-01 2.200542368683334e+00 -4.864862278883246e-01 -5.099550779617652e-01 -6.604371262034166e+00 -1.203245031659886e+01 -4.015560601192549e+00 5.095298367076854e+00 -2.458092279943849e+01 -2.984186038777605e+01 -1.704307451771916e+01 1.289397516275872e+01 7.550420438125877e-01 -8.946800286544758e-01 1.743816001398582e-01 2.004417509997769e-01 1.264522835425187e+00 -9.712018856079282e-01 -2.768641957515730e-02 4.929007817512674e-01 1.252248573686531e+00 -1.993400976523483e+01 1.307109251336974e+00 -2.448096703244893e+01 4.687408380064209e+00 -1.547570365030091e+01 5.700373791219904e+00 -1.844141234994024e+01
-9.371516398947044e-01 1.737573945626914e-01 1.637169453110056e+00 6.972206680270827e-01 -1.468816845605246e+00 5.420997232790193e-01 2.558602523543576e-01 4.705129386216659e-01 -1.327408495503521e+00 -8.408108900721021e-01 -5.780992665919511e-01 -3.575853433703235e-02 3.389128310401401e+00 -7.170820194421567e+00 4.169420627996869e+00 -1.078781669159203e+01 -3.771195702753491e+01 -6.363169295302831e+01 5.411982482009384e+01 -1.534789566651695e+02 -1.992672501058277e+01 9.486191316326182e-01 1.299085539116343e+00 1.240909095839280e+00 2.022379963062581e+00 1.467683161290637e+00 5.036916359272596e-01 -7.774843449599101e-01 -2.036523720992210e-01 7.547454944369013e-02 3.990664685383150e-01 -7.507467190447812e-01 4.233813839342274e-01 8.963906715757380e-01 -8.895208747408780e+00 -1.149944553562740e+01 -5.419848739665071e+00 1.224307211401348e+01 -2.774643738820382e+01 -2.972887915959852e+01 -2.097345457839796e+01 2.919788679182954e+01 6.737002971481650e-01 -5.924378122759628e-01 -1.090256620882717e-01 -7.969081121753281e-01 -2.010156986893805e-01 9.523848871216554e-01 6.881992354597418e-01 4.243718110502824e-01 2.275511732151750e+00 3.198706100426790e+00 -3.756158394482544e-01 -5.179422708165999e+00 4.618475079546405e+00 1.569636195022258e+01 4.270407126875082e+00 3.588792375660754e+00
8.564292231534617e-01 -1.221383797709528e+00 -3.207245739365173e+00 -2.477696488912426e+00 -4.590112980113205e-01 -1.296058879923288e-02 -9.116810902510268e-01 -7.932571552291630e-01 -1.121380088325897e+00 -1.365316053815737e+00 1.617448335651889e-01 -5.130523169290119e-01 3.173625461342171e+00 7.289589694865303e+00 2.882619346954336e+01 1.029247597241829e+01 8.602342565749544e+01 6.120013740303779e+01 -2.286816904499308e+01 1.481055934411637e+02 6.693547857894958e+01 -5.130996009129725e-01 -1.076162046309220e+00 -1.719433701849976e+00 -4.610435191654334e-01 -6.363585066640453e-01 -4.441652430562791e-02 5.650951814595113e-01 -8.807593877334263e-01 -7.669290563455757e-01 -6.125425203827743e-01 -4.694693390340736e-01 2.409691871546549e-01 2.142490303524673e-01 9.133017447572707e+00 1.450712214820751e+01 5.415335216459948e+00 -1.070248190799063e+01 3.058644633809967e+01 3.543884589315817e+01 2.253050270909898e+01 -2.800032038218268e+01 -6.137796486597072e-01 -2.611845985309909e-01 3.604666431687209e-01 -7.063265387803368e-02 5.312818226898997e-01 1.012608538549953e+00 4.851219666317775e-01 1.760853217450013e+00 -4.960354494867047e-01 1.236099413784917e+01 -9.005504401271945e-01 1.634304374193446e+01 -3.195965314953701e+00 4.272414927865840e+00 -4.125294164081444e+00 1.162637997917624e+01
-2.418808711811526e+00 1.733926124136895e+00 8.330993701809563e-01 4.364786274130001e-01 3.279882046977336e-01 4.603590399136943e-01 -1.047233892330709e+00 3.851725840713678e-01 6.161986618414578e-01 -5.110374662581220e-01 -7.981763047474916e-01 5.242266050175866e-01 -7.508622166962788e-01 -6.900110490090785e+00 -2.519695286032868e-01 -1.205443399442332e+01 -4.569790406596859e+01 -6.183508138041467e+01 5.178838304904305e+01 -1.527518439138299e+02 -2.387072621859000e+01 -1.270839815030310e-01 1.773339149513058e+00 1.933382865842626e+00 2.119111243836469e+00 2.008154631503126e+00 1.242123713634072e-01 -6.821753310116960e-01 5.571108565949984e-01 6.291140959356495e-01 -1.011036645474479e+00 -2.027939967013463e-01 3.648059851005410e-01 9.873244036482913e-01 -1.089198458040189e+01 -1.417695069809743e+01 -5.331541954410040e+00 1.199613267117165e+01 -3.070216190199439e+01 -3.652047274813664e+01 -2.259486092860639e+01 2.869103228657039e+01 9.755569747071873e-01 -1.043033809747687e+00 5.791134583988119e-01 -1.267125616323706e+00 -1.608243628022744e-01 -5.989526651088962e-01 1.028384865574645e+00 -1.853887659016536e-02 1.014723775715733e+00 -4.191157008602250e+00 1.141539049245558e+00 -1.125539884382912e+01 3.793294626710798e+00 3.531536312138268e+00 4.723145292194083e+00 -5.973726498569091e+00
1.569314495970184e+00 -1.438160578142807e+00 -3.099037064078228e+00 -2.094472748878724e+00 -1.277662822895112e+00 -7.380871123913173e-01 -9.948029312816195e-01 1.768600602290313e-02 -5.865519480028315e-01 -5.715587987032867e-03 -1.100378521007939e+00 -1.381148142384492e-01 3.113947638382450e-01 7.865636481745953e+00 2.123505644282455e+01 1.436587689459649e+01 4.305690092322715e+01 6.333510354710081e+01 -2.716609683348461e+01 1.513757889805704e+02 3.854802622755269e+01 -8.761438919160233e-01 -7.136019635155910e-01 -3.634832465852293e-01 -1.335567628433893e+00 -1.101938218719903e+00 5.065823641374134e-01 9.163169163686524e-01 1.318806654760696e-01 4.469332712712836e-01 -2.562862961477399e-01 -9.723497851158027e-01 3.628948996658920e-01 7.947192307242005e-01 4.645896228961643e+00 1.358213917582495e+01 1.676685782988536e+00 -1.694999693759924e+00 2.235933197270412e+01 3.145955221350353e+01 1.595621527475518e+01 -1.117694245347132e+01 5.098821087553810e-01 -8.675272128667071e-01 1.267990623178884e+00 -5.523330830268747e-01 1.081079076470699e+00 -1.796209483229660e+00 5.738871760768633e-01 -2.472674325921602e+00 -9.343423522335285e-01 1.754668799281941e+01 -1.208102515219717e+00 2.231329940542642e+01 -3.311876272884179e+00 1.193020452568821e+01 -5.662193532317554e+00 1.318089976100853e+01
-6.431812111410339e-02 -1.548122580530648e+00 -1.876022804111155e+00 -1.527519963980062e+00 1.485671919525828e-01 2.094176066248045e-01 -1.067757473386666e-01 -3.602265760963342e-03 -8.318021408584389e-02 2.317668577530650e-01 2.727174410568505e+00 4.166862111939534e-01 -1.372980132340793e+00 5.263564570579375e+00 -4.597926220393228e+00 8.654966032594725e+00 3.630043106279994e+01 5.988316794866076e+01 -4.871342873461423e+01 1.443534941914104e+02 2.090333003570664e+01 -4.339495594699197e-01 -2.047454083033455e-02 -7.220272544860212e-01 -3.727730080365345e-01 -1.654494898892531e+00 5.528935491645448e-01 1.709228089298272e-01 3.390981124199464e-01 -1.212551933467053e-01 -8.406830754393078e-02 9.962351294466613e-01 -2.212495307390427e+00 -1.211148096325786e+00 7.768989522826815e+00 1.597473688478710e+01 2.903096743344550e+00 -1.163465801540052e+01 2.395363596078898e+01 3.413384531774311e+01 1.800679043523903e+01 -2.662042996841150e+01 -7.730488748175767e-01 4.222687841139211e-01 -7.342215868079367e-01 -4.098244399539971e-01 -4.991821095513201e-01 -1.485213765557458e+00 -1.354400255085925e-01 2.102506286930058e-01 -1.059240914224493e+00 -9.066502610083084e+00 3.636875150217670e+00 1.547275338899744e+00 -5.872956620387054e+00 -1.924060002080596e+01 3.096214427531617e+00 -3.493939722348456e+00
5.206113584562292e-01 -1.618161300186006e-01 -2.168995699409025e-01 9.512389952972818e-01 3.528781950838340e+00 1.516635514821768e-01 -7.849576613990215e-01 -8.131368651384194e-01 -1.681120867213601e+00 -2.311071956055251e-01 1.339482306410842e+00 2.872113911020206e-01 9.625830123324326e-01 7.282997255413219e+00 -1.223080534258827e+01 1.227585625636253e+01 4.476661090670854e+01 5.744335851623561e+01 -5.931211365108869e+01 1.539014264873220e+02 2.978822808709586e+01 4.732612003556744e+00 2.932394333650310e+00 3.537301329320701e+00 2.920968717358637e+00 2.894584994871013e+00 -1.268465719847077e-01 1.293228547503769e+00 2.568883813531229e+00 2.737098712907117e+00 -4.072905257553768e+00 4.009013718242196e+00 -3.827406336625913e+00 8.837483304458402e-01 7.907693509377577e+00 3.417810190687581e+01 -1.729591689046753e+00 -1.153645570724301e+01 4.257075755876994e+01 6.719181423562546e+01 2.614665786679209e+01 -2.911470301775545e+01 5.529174437723220e-01 2.584881015763633e-01 -9.608010334653481e-01 4.408568587189937e-01 -5.153792944275248e-01 3.048404147973626e+00 1.364733497369314e-01 1.077971625584530e+01 5.661266381781430e-01 3.483914403253796e+01 2.360555441289732e+00 5.671370789694532e+01 -1.385137876296104e+00 3.982462299895447e+01 8.889489276030991e-01 5.547944343607271e+01
-5.858921892410870e-01 1.814509234143652e-01 1.677309418571522e+00 1.254336146565227e+00 -1.498767144349290e+00 6.976193279641271e-01 1.619058376349129e+00 7.341228577831577e-01 1.418816429904011e-01 -8.084371076791804e-01 6.476403597472873e-01 1.960005219557937e-01 2.615386855236896e+00 -8.166899463168130e+00 1.409334663492637e+01 -1.165032025731679e+01 -3.051825805942087e+01 -6.204684208208316e+01 6.505392844373104e+01 -1.502374507999750e+02 -5.774406537621331e+00 4.429224729439321e-01 3.312045484473122e-01 2.550477933196473e-01 7.069722286043332e-01 1.199539573767623e+00 3.520846285950199e-01 1.399933830993206e-01 -2.949602711520808e-01 -1.124050521911198e+00 -8.391453703517251e-01 1.746145262415380e+00 -3.726495139047596e-01 -9.978479079776996e-01 -8.038414925437861e+00 -3.791250000159569e+00 -5.608715630082805e+00 1.233297646511898e+01 -1.989910312559123e+01 -1.722276935200171e+01 -1.717967331985579e+01 2.957195727751434e+01 -6.019479806137009e-01 2.032631087677667e+00 -7.055194622245814e-01 2.196652919259283e+00 -5.533726217202199e-01 -5.729225430586150e-01 -1.921421334419898e+00 1.346549880252832e+00 -4.568185800241808e+00 -1.536435398795961e+00 -5.826932954650411e+00 -1.615774582229894e+00 -3.745542987316820e+00 8.910762041833763e+00 -4.848214652023901e+00 1.696035375475610e+00
2.460614402785303e+00 -7.241452019873946e-01 -5.114948850773701e-01 3.775775474763693e-01 5.920709246232609e-01 9.157584018164900e-01 -1.003505415372464e+00 1.211337748456807e-01 2.016277904566624e+00 5.263762485346173e-01 5.270898929189212e-01 8.838823752421429e-01 -1.837236790654586e+00 7.697457276200072e+00 -6.255178163548591e+00 1.091680260659651e+01 3.233651618434666e+01 6.141516390685604e+01 -5.417004636737190e+01 1.519151665379661e+02 1.530989667229034e+01 1.969075482975136e+00 7.976043287811950e-01 -7.317087962113853e-01 -6.067381398559508e-01 -7.179302541088319e-01 8.415071373182220e-02 -9.026661917938119e-01 -1.899363518875498e+00 -1.679401560127167e-01 -4.476458728797876e-01 -6.920077785855797e-01 -1.845204048681330e+00 -2.201274826299739e+00 7.483864829691690e+00 1.237957465148130e+01 3.753605575312854e+00 -1.561141884649805e+01 2.517522740190397e+01 2.857800710472924e+01 1.884225630819505e+01 -3.289472560022838e+01 -8.443297952009821e-01 2.257579045980071e-01 1.532211369863260e+00 7.524513771978643e-02 8.797724697643877e-01 -1.292348786416549e-01 1.925463901384575e+00 -8.608778763588738e-02 5.423773185627448e+00 -4.278470676052746e+00 8.658834491231929e+00 2.650745555484597e+00 6.503432663479608e+00 -1.336289918724424e+01 1.425593574788316e+01 1.851498315888065e+00
-2.994029118559781e+00 1.214440563293267e+00 1.141466926242006e+00 6.458954468388448e-01 9.112322222121805e-01 -9.701028715531620e-02 -2.115595540831251e-01 4.885875005261425e-02 7.408533301109668e-01 2.932784527398574e-03 7.050756631248747e-01 -8.845147398620350e-01 -4.983565243991968e+00 -1.533175023350490e+01 6.492039998185297e+00 -1.939308286183601e+01 -4.701158084951810e+01 -7.818965979492195e+01 5.312098024476278e+01 -1.655234004041376e+02 -1.982729188383489e+01 8.945068159733532e-01 2.543135384258551e-01 4.947108367964867e-01 1.273113515555614e+00 1.535747628547408e+00 1.689216324636680e-01 -7.637765646623346e-01 -2.645998608381725e-01 2.641404735491563e-01 -1.059646052288411e+00 1.137174935025574e+00 -1.113450998218306e+00 -1.072566378180772e+00 -9.107799850178628e+00 -7.099693690876056e+00 -5.990885529527515e+00 8.773496067305036e+00 -2.442725724633679e+01 -2.351623047060953e+01 -1.964890442571634e+01 2.327537653096795e+01 9.347668267017283e-02 -2.459437280127975e-01 -8.539660615844725e-01 -2.543488525591560e-02 -7.573260057317033e-01 -1.342620265120248e+00 -5.906903513802277e-01 9.691052054824814e-01 -2.655420090616619e+00 -3.351696266989819e+00 -4.814857327497600e-01 -3.369983745737662e-01 2.507284362625430e+00 1.371377112322060e+01 4.688383441787778e+00 1.035306846950232e+01
weight:Al:1:
-1.005913794192329e+00 4.610411432550187e-01 -1.006327989709852e+00 4.368147058810481e-01 -6.753517265465377e-01 4.060465652945509e-02 8.658146513160432e-01 6.154446163960740e-01 8.029988167174570e-01 -4.822396720072580e-01 -1.541750359368592e-01 -2.652005124232077e-01 -3.012472252090649e-01 -3.705387159618206e-02 4.963655658324690e-01 1.216767823284246e-01 -3.100596425625666e-01 -2.845244411599995e-01 9.659623689563925e-01 3.740076781667671e-01
8.682736976415105e-01 -2.226093905514073e-01 -3.581749423000642e-01 -1.174404858981064e+00 -8.266859033282873e-01 -9.842568981068921e-01 -1.040165723927639e+00 4.738942862226285e-01 -9.879066682106030e-01 5.966057656752629e-01 -9.274173853464718e-01 -9.490970477635539e-01 4.898305947432779e-01 1.509972169657058e-01 -1.721146215554496e+00 -1.860930235529755e-01 -1.495395332548297e-01 -7.143082497529100e-01 -3.396589991014352e-01 3.138357849895953e-01
-2.013587942871434e-01 6.523476600769075e-01 6.701295282036556e-01 -7.143337778424697e-01 -1.057693520055897e+00 -1.008066701101517e+00 4.626721437055412e-01 -1.020695846296652e-01 -5.873483433348372e-01 -6.982781373299616e-01 -4.450925020020687e-01 -1.577215660240575e-01 -4.542129528260553e-01 5.695554398039489e-02 -3.559775907556548e-01 -7.351645767283942e-01 2.527519315047961e-01 -1.075514861391435e+00 6.765332954561568e-01 -8.510432318948227e-02
9.812722922246474e-01 4.346957746367421e-01 -6.490499941325837e-01 -2.030898086511017e-01 -9.007640539341419e-01 -1.024159750390500e+00 -7.811165619346673e-01 -9.401389677454021e-01 6.766549636855455e-01 -9.580243721033606e-01 -2.407147262064165e-02 2.653866361832353e-01 -4.221401952280315e-01 -3.571063037651391e-03 -4.342855893867922e-01 1.280678643281789e+00 -5.664482234829272e-01 4.053266178387384e-01 -6.124235776417976e-01 -1.236011738569997e+00
1.841271866631932e+00 2.452172361007741e+00 9.750531812918640e-01 7.881135852476659e-01 2.835711649707525e-01 -1.686774774372248e-01 -3.312439602310103e-01 -4.193898224744253e-01 2.871809689701981e-01 7.708086655985447e-01 -1.029665329415773e-01 -8.574686067588666e-01 -1.102072302989900e+00 5.631285758256298e-01 -4.163286138359060e-01 4.903289517946192e-01 8.295330352136282e-02 5.648164433892021e-01 -3.569468714940303e-01 5.754614111251751e-01
-6.744511170739709e-01 -8.013179865353375e-01 -7.874482252242783e-01 -5.558575685475841e-01 -4.659953595112984e-01 3.390369460242634e-01 3.719504225043971e-01 -1.284647918622943e-01 8.238836725006630e-01 -1.747324445918804e-01 -1.097733833994482e+00 8.780109566940720e-01 -1.268219430691529e-01 6.462742100954085e-01 4.159040996668743e-01 -6.386644144149366e-02 1.434561841350907e-01 2.795067251306869e-01 7.055018008705032e-01 -1.285297409999169e+00
6.126517797072575e-01 1.026548258699580e+00 9.657721946406628e-03 5.411661966048643e-01 4.408886728960997e-01 6.239793236211864e-01 -4.959580128812953e-01 6.822180299948455e-01 8.626893996310737e-02 6.073763970204668e-01 1.820378145271898e-01 7.521658960599251e-01 -2.171005988190537e-01 -3.437522657136018e-01 -8.498931942710831e-01 -6.422698820490529e-01 4.465292812744432e-01 3.351398863544678e-01 -2.580164208610440e-01 5.062545354377554e-01
5.357496736185667e-01 8.161333994563488e-01 -1.605279965545604e-01 1.034476820440813e+00 -3.898665315453381e-02 -7.349200244097940e-01 -9.088756575059960e-01 -4.156676422852549e-01 5.804041604981682e-01 -6.548451435528244e-02 6.195745555338815e-01 1.211712818869516e+00 -2.844493302643383e-01 8.391431845909666e-01 -1.379527080299685e+00 -1.420593470258588e+00 -2.294757381957856e-01 -7.243055734643968e-01 8.498076186483265e-01 6.871495603413424e-01
9.567900190347394e-01 6.414163625678286e-01 9.187616547645043e-01 6.601672803834309e-01 9.281202181464153e-01 -4.711104388194925e-01 -1.095759141208192e+00 1.003817163306935e+00 7.259633055981878e-01 -9.672905357274294e-01 1.498566394509505e-01 3.669193802909008e-01 2.881268584760170e-02 2.293362777101618e-01 -7.518548120553729e-01 -2.367740251472287e-01 1.516691719102685e-01 1.842036400223960e-01 7.693620305912214e-01 7.444252405923172e-01
1.050116888218384e+00 1.853817546007132e+00 4.360486160215881e-01 1.106085665121656e+00 -3.194672145354456e-01 -1.253093074978444e+00 -7.936845468369641e-01 7.223160700991357e-01 4.809636727060941e-01 -2.253195391012004e-01 1.068338529908742e-01 6.006598057523339e-01 3.720746881076729e-01 -1.620906155787737e-01 -1.253605679273816e+00 -6.829620164410504e-01 1.266763891329528e+00 7.069036625298861e-01 2.337577606223918e-01 3.079001247059869e+00
-2.219810593448381e-01 -7.934520787828460e-01 -8.008495817609917e-01 -3.599022935388854e-01 -1.091177956108919e+00 2.107937101761260e-01 6.341710984078032e-04 -8.892685058346667e-01 -2.009263753832392e-01 5.997891980109906e-01 7.111505569069914e-01 3.643858147100779e-01 -4.267987659507641e-01 -7.432954916059157e-01 -1.432352061428134e-01 6.822939800971172e-01 8.644475381636156e-01 7.080844568912557e-01 9.992859898092590e-01 -1.575316591897092e+00
5.493792578424040e-01 1.276111389980823e+00 2.690460228775156e-01 7.379479318940000e-01 1.011765910960222e+00 4.119241998874386e-01 -1.950395625418125e-01 8.184742776601135e-01 3.351781334859828e-01 9.087186548791135e-01 7.779661965006451e-01 -4.531588881447282e-01 -1.209639396813327e+00 7.591251029587816e-01 2.683542337303467e-01 -1.017999320107711e+00 -9.415834496252479e-01 8.519646469589288e-01 -5.202023713484714e-01 7.704094082554132e-01
-8.198587978551805e-01 8.271723097882008e-02 3.118165162015984e-01 -7.874953675320339e-01 -1.940514157063917e+00 -5.186871242938789e-01 2.969225150473809e-01 1.097790779464027e+00 -4.291274143591914e-01 -3.092582170831176e-01 -7.375125129204336e-01 -4.963823975129005e-01 6.899274151039074e-01 -4.551819954515786e-01 9.522413470408236e-01 -7.732096748843738e-01 -9.820184148387432e-01 2.716571111985063e-01 5.051146792663559e-01 -2.907835548204803e+00
-1.075789996389904e+00 -4.742668620429637e-01 -6.558842432828349e-01 -5.552398634751469e-01 -5.696185779971747e-01 3.136947694468237e-01 4.841374135516042e-01 8.056716188911026e-01 7.722656581112528e-01 9.263197670303960e-01 -1.072342748173361e+00 -9.035735090126356e-01 1.776241320626453e-02 1.082897010674743e-01 9.545418104246070e-01 3.110063574022571e-01 -1.372090936474997e+00 2.708112203062142e-01 1.106319129759726e+00 3.741025755982980e-01
-6.409039990558760e-01 -6.198651489741381e-01 -6.331904628571726e-01 -1.329242917346505e-01 5.790318725619163e-01 9.913916747560542e-01 5.491450539928419e-01 -6.337941257249047e-01 2.585861228021201e-01 -1.862731077016331e-01 -8.461064505579956e-01 -5.494435273784494e-01 6.243812045008411e-01 -3.358848790376691e-01 2.009158109167070e-01 -1.718864655936684e-01 1.132560758877454e+00 -6.617106426593899e-01 9.773970219199652e-01 9.312964775103416e-01
-1.843994615961358e+00 -8.685242556701873e-01 -1.591718024185837e-01 4.888807482463509e-03 -1.070203735766175e+00 6.888707518369401e-01 -6.090931428471550e-01 -1.688614196571312e-01 6.046823102487794e-01 -1.225711621316313e+00 -1.389635446519708e+00 -1.666295893478473e-01 1.064404887100253e+00 -6.943730552465772e-01 1.005143978833875e+00 -4.030757473193848e-01 -4.579186879684553e-01 -6.693610069642342e-01 1.874033060523140e-01 -1.675468517588950e+00
9.974773291876159e-01 6.079038839500417e-01 3.354138341742603e-01 4.534383666967883e-01 1.142121450290879e+00 9.506518940548244e-01 -7.937585013752509e-01 2.145969365704544e-01 2.063501761923578e-02 1.046495191966576e+00 1.176684304926423e-02 -9.053501888503190e-01 -8.173854035386219e-01 -3.812881016073097e-01 -2.883602575786728e-01 -2.693722239240173e-01 2.329230716958027e-01 -6.287294763863015e-01 2.933574715474763e-01 2.754718857927090e+00
6.938712353031129e-01 1.541391753631175e+00 7.800725297706444e-02 8.237590631135955e-01 2.450164106829603e-01 -1.618697204822798e-01 2.448936949570442e-01 2.977876988087732e-01 1.381535517974605e-01 7.295500311767378e-01 -9.318240689058703e-01 6.010699689551772e-01 2.444414187224716e-01 7.648519621659626e-01 -1.521806211939662e+00 8.817103971114530e-01 -8.697317649087198e-01 9.805969401410045e-01 1.413144763674782e-01 2.083462937622262e+00
-2.001631417145785e+00 -1.131740971203729e+00 3.337428842571128e-01 -1.148773616825357e+00 -2.657801677992105e-01 -9.297218107434237e-01 -1.642509227315621e-01 1.839234557264083e-01 4.578258956641898e-01 8.472636403872399e-01 -6.717043082137639e-01 -7.156993567553329e-01 1.227956228974581e+00 1.007246618936000e+00 -6.465898938940587e-01 -6.883062796636823e-01 -4.801681015082787e-01 1.066222273514804e-01 3.912414328316632e-01 -1.507990196864420e+00
-3.839485105342400e-01 -2.141760786738760e+00 7.178170412603320e-01 -2.487398992673547e-01 -5.091871900188701e-01 1.160059778163378e+00 5.064094465485605e-01 7.195495134509805e-02 -5.515994093763954e-01 4.530579552235158e-01 -7.962174291298818e-02 1.220849329739568e-01 -6.531636724287639e-02 5.131285809216268e-01 4.724402419358615e-01 4.515428357467800e-01 -6.241927379327035e-01 4.669693849972243e-01 -5.826818481586439e-01 -1.795757569402424e+00
weight:Al:2:
5.135392247082138e-01 -2.557695069587775e-01 -8.759929196994461e-01 -2.592453838725610e-01 -1.189048019572937e+00 2.054550280939581e-01 -7.741415829524717e-01 -1.371240136666099e+00 -1.785581851632136e-01 -5.539664106776194e-01 5.665810200297841e-01 -9.271401805759163e-01 3.229073776050251e-01 1.607505356609535e-01 1.016297936419758e+00 7.113887799356671e-01 -2.767419575935879e-01 -4.198504961044903e-01 1.449509742812711e-01 8.600172384690399e-01
bias:Mg:0:
3.731289176409835e+00
-6.362098051399459e+00
1.931308809836757e+00
4.963552044050653e+00
7.754597633826141e+00
-3.935935745945748e+00
-3.988156363681842e+00
6.752189616521796e+00
-6.854078701817841e+00
-3.910885559291621e+00
8.376344056426712e+00
1.744418830889844e+00
5.714182595832976e+00
6.711849773350551e+00
-7.721580893085197e+00
2.393372301200320e+00
6.167392386379966e+00
4.153464665687600e+00
6.333580200641886e+00
-7.063026995147228e+00
bias:Mg:1:
-4.816344573335819e+00
6.175739957282312e+00
-3.333139776313989e+00
-6.802371768156505e+00
7.422561929694263e+00
-6.449006822627947e+00
3.837530092748229e-01
6.887001449220396e+00
4.708194954780337e+00
3.647072225857475e+00
-6.558555872688774e+00
-6.660753612846411e+00
-4.281579495927591e+00
1.441333632084118e+00
7.213758051059082e+00
7.269571344201147e+00
-6.193060501741222e+00
6.468596568525814e+00
4.297019366432399e+00
-5.109585902756677e+00
bias:Mg:2:
-6.973210524091122e+00
bias:Al:0:
1.385605881456594e+00
1.456168048192331e+00
1.570435419151431e+00
1.826540771735247e+00
1.207119457375240e+00
7.898089296852779e-01
-1.620004360537007e+00
1.670224097808616e+00
3.825092544050332e-01
1.246171711447400e+00
6.204763361450589e-01
5.843024597969713e-01
8.834918153160423e-01
1.705474401272730e+00
-3.416385643555942e+00
-3.894018054421750e-01
3.106839779186236e+00
1.195701572346602e+00
-8.559051661995589e-01
1.110081737815194e+00
bias:Al:1:
-5.450983710225460e-01
2.407396020581909e-01
1.534086726090900e+00
3.980765207282594e-02
7.579902523143215e-01
-2.703133069081817e-01
1.874269420264722e+00
2.204400449046542e+00
8.926548043650204e-01
1.295723133572349e+00
-1.498599549429615e+00
1.962828654094330e+00
-1.278215062724843e+00
-1.442692553389844e+00
8.849366870775945e-01
-2.059145588034654e+00
1.499819766671037e+00
2.637210411767147e-01
-8.586061133801967e-01
-6.970775827470471e-01
bias:Al:2:
-3.067090914266515e-01
activationfunctions:Mg:0:
sigI
activationfunctions:Mg:1:
sigI
activationfunctions:Mg:2:
linear
activationfunctions:Al:0:
sigI
activationfunctions:Al:1:
sigI
activationfunctions:Al:2:
linear
calibrationparameters:algorithm:
LM_ch
calibrationparameters:dumpdirectory:
.
calibrationparameters:doforces:
0
calibrationparameters:normalizeinput:
0
calibrationparameters:tolerance:
1.0000000000e-07
calibrationparameters:regularizer:
1.0000000000e-04
calibrationparameters:logfile:
MgAl1.logon.log
calibrationparameters:potentialoutputfile:
MgAl1.nnl_output.nn
calibrationparameters:potentialoutputfreq:
100
calibrationparameters:maxepochs:
10000000
calibrationparameters:dimsreserved:Mg:0:
0
calibrationparameters:dimsreserved:Mg:1:
0
calibrationparameters:dimsreserved:Mg:2:
0
calibrationparameters:dimsreserved:Mg:3:
0
calibrationparameters:dimsreserved:Al:0:
0
calibrationparameters:dimsreserved:Al:1:
0
calibrationparameters:dimsreserved:Al:2:
0
calibrationparameters:dimsreserved:Al:3:
0
calibrationparameters:validation:
0.100000

125
potentials/Ti.rann Normal file
View File

@ -0,0 +1,125 @@
atomtypes:
Ti
mass:Ti:
47.867000
fingerprintsperelement:Ti:
2
fingerprints:Ti_Ti:
radialscreened_0
fingerprints:Ti_Ti_Ti:
bondscreened_0
fingerprintconstants:Ti_Ti:radialscreened_0:re:
2.943843
fingerprintconstants:Ti_Ti:radialscreened_0:rc:
8.000000
fingerprintconstants:Ti_Ti:radialscreened_0:alpha:
4.720000 4.720000 4.720000 4.720000 4.720000
fingerprintconstants:Ti_Ti:radialscreened_0:dr:
5.056157
fingerprintconstants:Ti_Ti:radialscreened_0:o:
-1
fingerprintconstants:Ti_Ti:radialscreened_0:n:
3
fingerprintconstants:Ti_Ti_Ti:bondscreened_0:re:
2.943843
fingerprintconstants:Ti_Ti_Ti:bondscreened_0:rc:
8.000000
fingerprintconstants:Ti_Ti_Ti:bondscreened_0:alphak:
1.000000 2.000000 4.000000 6.000000 9.000000
fingerprintconstants:Ti_Ti_Ti:bondscreened_0:dr:
5.056157
fingerprintconstants:Ti_Ti_Ti:bondscreened_0:k:
5
fingerprintconstants:Ti_Ti_Ti:bondscreened_0:m:
8
screening:Ti_Ti_Ti:Cmax:
0.900000
screening:Ti_Ti_Ti:Cmin:
0.490000
networklayers:Ti:
3
layersize:Ti:0:
45
layersize:Ti:1:
20
layersize:Ti:2:
1
weight:Ti:0:
2.959065631457996e+01 8.820178365370962e+00 3.567479250699058e+01 -9.520944737974554e+01 5.810216841766599e+01 9.002124484009087e-03 1.229243737965223e-01 8.308975217587411e-01 6.823375462445517e-01 -2.120116364747359e+00 -5.042944013969457e+00 8.888536859810211e-01 4.730113767902510e+00 -3.561046029798427e-01 -5.268119595319895e+00 -5.022196630576959e+00 1.408878320391399e+01 1.468387176035118e+01 3.760997999097573e+01 -6.917447867710291e+00 -5.365770859257368e+01 2.298166523864803e+01 3.868330833699283e+02 -1.716548340302800e+02 -1.893938251864545e+03 7.087497678108087e+01 6.758413925648077e+02 -1.879116886681516e+01 1.086082362821264e+03 -2.582591099463284e+03 -6.919949629103328e+03 6.653492220309851e+03 3.910779971401374e+04 -7.590339154383871e+03 -2.022471894606208e+04 5.146509910417548e+03 -1.785463453281940e+04 4.562627218960930e+04 1.101701455067094e+05 -3.084309856150380e+05 -9.971094440845660e+05 6.441995235572759e+05 6.416524220576235e+05 -5.569111763100204e+05 4.328915131668917e+05
1.115693858967680e+02 -5.209779939312019e+00 -1.092385668269338e+01 -7.571784442383165e+01 -1.662179555544062e+01 6.916594544622806e-02 3.413942491148807e+00 4.480188413646634e-01 -2.802071362110945e+00 4.856749991432379e-01 3.705116153321830e+00 -2.506064444643249e-01 4.559599774503276e-01 -1.221308069065122e+00 -1.641607115739855e+01 3.587904146265885e+00 -2.383416507477553e+01 -9.053907553863565e-01 -2.345767274757615e+00 2.209763752910383e+00 -2.673114428269787e+01 8.868866584244550e+00 -9.266724447503019e+02 1.276638625895979e+02 7.168919250618773e+02 3.363071672846352e+02 1.444136022401225e+03 3.037219474351357e+02 6.597654623185438e+02 -3.584719368857498e+03 1.436854292524348e+04 1.250649758704312e+02 -1.134443963945185e+04 -9.877927968886395e+03 -7.232548546930685e+03 -1.764631584481192e+01 -1.378082415237156e+04 5.896464207004858e+04 -9.422840447102475e+04 2.948993551487039e+04 2.008982788928043e+03 7.562262912574751e+04 -4.983163988565268e+04 -8.575889316913021e+04 2.236873807148275e+05
8.785785932652226e+01 -4.720301334844532e+01 -2.020078576639373e+01 -8.255733692970911e+01 1.178751057600947e+02 9.264406483588233e-02 -8.591966416908701e-01 -2.857387389805442e-01 3.015871584381770e+00 1.521919611154894e-01 -2.855075022109026e+00 -2.903254706936468e-01 -3.875576775518043e-01 -1.502710449510661e+00 1.520339443967308e+01 1.731954001149112e+00 -5.593960128660866e+01 -2.295786748665179e+00 5.184952484874352e+01 1.592105947138623e+01 1.044288938102477e+01 1.080112064482304e+02 -6.503242958941141e+02 5.126387212054787e+01 1.597542448224041e+03 5.525892218471139e+00 -2.044692134406341e+02 -4.378343406176561e+02 -1.365572260486906e+03 5.425057742978480e+02 1.300810235708672e+04 -4.023490852286065e+03 -1.988158982819957e+04 6.967310910979561e+03 -2.024171606454459e+04 -3.946519618937478e+03 3.272873458153344e+04 -6.329517027391024e+04 -6.758621346995255e+05 -8.901399431816948e+04 5.802311652874356e+05 2.469897516161081e+05 -2.953675934297686e+05 2.508985896982255e+05 3.461023887148237e+04
-5.983315673949122e+01 -5.919307194682484e+01 -2.313899936627505e+01 -1.379967160974447e+01 -5.689633174295666e+00 2.558411500579737e-02 4.966535582181172e-01 -1.127104896784805e-01 6.616245113484802e-01 1.512024678970052e+00 1.261340306063013e-01 -8.939209739253282e-01 3.836435145531752e-01 -9.152933589729167e-01 -2.819515446321528e+00 2.370269820057923e-02 -3.518535110763861e+00 -5.912237597981075e+00 -4.743613153004790e+00 -9.646383685996602e+00 -1.251890320875517e+01 1.196420918486563e+02 -3.106534430102295e+01 1.234735282275306e+02 3.222034272429482e+02 -8.517391382048751e+01 -1.336644870819136e+02 2.301334896952556e+02 2.795984833086188e+02 -7.564031065509095e+02 4.407754317028228e+03 -7.773963274447465e+01 -1.013680532461273e+04 -2.137688884394744e+03 1.854556641011866e+03 4.584784172458902e+03 3.070062887959159e+03 -1.650713622650294e+04 -1.690054624853504e+05 -9.892176689015098e+04 4.202313825462025e+05 1.823855045104632e+05 -3.431732355464993e+05 -1.288820654713853e+05 1.153329116697667e+05
6.043868296995044e+01 4.953730803784704e+01 7.444491996599693e+01 2.069602350040536e+01 2.885023876509898e+01 -1.819594904018437e-02 -3.848784799773817e-01 -1.481217043109315e-01 1.376200375927928e+00 -1.047720682285893e-02 -3.575729995777325e+00 -1.600916160440444e+00 1.794687661779281e-01 7.996111823895621e-01 -1.099747849865894e+01 8.461579059755999e-01 1.912020946657639e+01 -2.330922291393975e+00 -3.201760021603348e+00 5.967674495276554e+00 7.202403588231947e+00 -3.963009841931792e+01 1.232746458298296e+02 7.293629493154042e+01 9.070915000036325e+01 7.821017738799992e+01 1.030456292377632e+02 2.367832546260195e+01 7.465984980998800e+02 -2.222946622172022e+03 2.365811170850493e+03 -4.316665836652123e+03 -5.681650496185503e+03 -4.705610717173333e+03 -2.463533711738178e+03 4.277433987676707e+02 -1.340783803475192e+04 8.114394517862871e+04 -1.371771041031446e+05 7.645477649479064e+04 1.381604663006295e+05 -9.358182445605620e+04 1.497249059051436e+05 3.740090050028634e+04 -2.951225783430175e+04
7.336413357703552e+01 5.385735724250821e+01 -1.013025042673255e+02 -3.775215413344078e+01 3.856228680957005e+01 -2.774006629323017e-01 3.529706536044521e+00 1.051024631506057e+00 -9.126702013427540e+00 -3.036141107572878e-01 6.965836125304446e+00 2.370710254085188e-01 -2.453818030419209e+00 3.584431481868394e+00 -3.955211197897520e+01 -2.946319634169591e+01 1.075342223305788e+02 3.106469607072355e+01 -5.639364892412809e+01 -1.608059058708443e-01 5.568683573148927e+00 1.095331213085647e+02 7.356684893782635e+02 -1.953531461722103e+02 -2.290279364852281e+03 -7.626123846589050e+01 -1.093150014594484e+03 -4.785211317880392e+02 1.823212591707464e+03 -7.110275609460003e+03 -8.718444264025210e+02 2.761255219512287e+04 4.288711262044306e+04 7.873341657826532e+03 2.101411900064324e+04 -2.549447846479287e+04 -4.781367612174047e+04 3.798098289652226e+03 -1.231616040097599e+06 -1.636924466717421e+06 -8.535898658236240e+05 -1.069993108285157e+06 7.918258980567560e+04 2.785945734799839e+06 1.341027760457699e+06
-5.454503514021354e+01 3.022937868044680e+00 1.036302323371132e+02 1.935381124326150e+01 -4.612595619827534e+01 8.792376998749749e-02 3.958336360908138e-01 -3.611972157525295e-01 -7.637152495511270e-01 3.653562740495307e-01 3.067551830757984e-01 -3.161256031699768e-01 4.744168004022808e-02 1.328386675030670e-02 -2.283213430935990e+00 -7.905546692629681e-02 -8.415206885898833e+00 3.763465287005156e+00 1.822358427888101e+01 -2.102569135625872e+00 -8.119986083501262e+00 -4.299383232184291e+01 -6.319797969630641e+01 1.364977306635739e+01 1.116474530878043e+03 6.481020621915923e+01 -1.135738338453166e+03 -1.755614422178900e+02 6.704888124888905e+01 8.115636002388160e+02 2.229292409804531e+03 4.152068637760446e+02 -2.300186571663856e+04 -8.991813724806230e+03 9.833563087692793e+03 1.007435440408356e+04 1.268059452291436e+04 -6.100360643113084e+04 -7.679226754674294e+04 -4.324234891085859e+04 5.104133002498235e+05 5.100622558505505e+05 5.687417836825646e+05 -4.065563558156515e+05 -1.061487530145137e+06
-1.716350791787661e+01 7.669125478653537e+01 3.361398252746399e+00 -1.823274223785969e+02 1.680571316955566e+02 5.044485048795340e-02 -1.554309491130323e+00 -1.040567622332271e-01 5.403793929246866e+00 -9.332473544329941e-01 -3.328691452127943e+00 7.276367356846972e-01 -1.466253850993279e+00 -2.049238235100094e+00 1.890511806957937e+01 -1.365603915317673e-01 -7.306887579902040e+01 1.804106245632967e+01 4.985504986813705e+01 -1.387868082177220e+01 1.509060210160700e+01 -4.283272769576126e+01 -5.638949573162711e+02 -1.147260037690828e+01 1.990318793808507e+03 -1.291052217409064e+02 -7.864632802727403e+02 1.714942131555128e+02 -9.047631218077078e+02 1.594135040047945e+03 5.057802021444401e+03 2.765903434357460e+03 -5.421551955012631e+03 -1.460714485552365e+04 -2.242060556352513e+04 9.175879529415230e+03 2.631222640155592e+04 -1.290337306291942e+05 3.174622597120972e+05 -3.531368075740882e+05 -9.863082748151447e+05 1.052808298304350e+06 2.019305533585843e+05 -5.362818651229400e+05 4.057391172423453e+05
4.277587614028521e+01 -5.541473137759568e+01 -1.102024827305631e+01 5.257858445795204e+01 -3.425341040033231e+01 -5.103011537222046e-02 1.131369327308289e-01 -2.892417383021378e-01 -3.408892711180274e-01 4.987019733292620e-01 5.930401521399169e+00 3.573649251910184e-01 -6.196824517342410e+00 3.493614018252218e-02 4.466306254045950e+00 -2.141513647484169e+00 -1.643052132619943e+01 7.878931556659929e+00 -5.834432405562187e+01 -6.326641211588008e+00 7.387894467468747e+01 6.867106305603809e+01 -2.651950831795124e+02 -4.817891301084077e+01 1.714170745131860e+03 -1.662565378656220e+02 5.075078770601488e+02 3.532164567001387e+02 -1.688617047555710e+03 -2.348133577164794e+03 -3.835231374568176e+03 5.031215766012700e+03 -2.913252889346310e+04 -1.018714388790049e+04 1.131417862036779e+04 7.321582219471577e+03 2.002936335361845e+04 2.917068634474881e+05 1.116083541827691e+06 1.198457175470134e+05 -5.669370558466424e+05 -3.745999354981262e+05 7.447029070304433e+04 -1.889247408188946e+05 -2.017056816322926e+05
2.127944540103459e+01 -2.877490844198131e+01 5.903642848966372e+01 3.205853304780400e+00 6.690385675269403e+01 -1.550046529349525e-01 8.612501177660181e-01 2.451744371445429e-02 -2.418332147292466e+00 2.130934772577301e-01 3.602492255934556e-01 -6.336639965844759e-02 7.128735584523618e-01 5.204016397389728e-01 -1.428851379175287e-01 -1.098637221879929e+00 -1.514115944100129e+01 -3.997867152468988e+00 1.926736020692518e+01 3.182059523652051e+00 -1.878696122769461e+01 -2.037225647171812e+01 -2.525319448922875e+02 -6.541187163682535e+01 5.997373834256405e+02 2.676468877629583e+02 -2.162646066318257e+02 -4.122274734310448e+02 -3.584287388298700e+02 -6.287776493875825e+02 3.234653603322635e+03 1.708512593874384e+03 -2.727209058828812e+03 1.033810889939684e+03 -7.805596568289665e+03 -6.217798368030164e+03 5.313748576584261e+03 3.782843343209733e+04 -6.327484327593845e+04 -1.061552540069069e+05 -2.166129924583750e+04 1.334816983273117e+05 2.349340167555289e+05 -1.858449942928976e+03 -1.503039371950097e+05
-1.809019814601928e+01 -6.318546075726388e+01 3.502313213382471e+01 2.537223513907526e+01 2.139592943381489e+01 6.497971721711365e-02 -2.541186757927502e-01 1.331003658270462e-01 -1.149611183868251e+00 7.191503838203581e-01 -7.984961611912485e-02 -3.034047471169865e-01 -3.752559589532619e-01 -1.459226938296722e+00 -8.074197858798613e+00 -1.749726257636485e+00 5.068428107922127e+01 1.870829404153494e+00 1.189599350957094e+01 1.056999138261877e+01 1.815394425479039e+01 -8.770611613711824e+01 4.766163355057220e+02 -5.835197574323644e+01 -6.412462403239056e+02 -5.534327678560212e+01 -5.714475346906897e+02 -1.916294922174244e+02 -2.059172424432571e+02 2.152982801219279e+03 -3.197765552742724e+03 1.214725535748061e+03 2.979752928144608e+03 -1.059319412352343e+03 4.010636576154852e+03 8.730065384619338e+01 1.416071470392590e+03 -2.480004127031567e+04 4.130113532056319e+03 2.696725909732282e+04 1.350230086967443e+05 -2.104408453509889e+04 -1.870080707984104e+05 9.258425664851280e+03 2.270199436544054e+04
-6.287562290750430e+01 -1.256743566101117e+01 1.186515639771760e+02 4.448885777059116e+01 -8.655564354879643e+01 1.595312781983040e-01 1.110252834715529e+00 -6.728476391469848e-01 -4.767156094912901e+00 -5.684009350323000e-01 4.579771722243129e+00 -2.456192762060004e-01 -2.776347381266544e+00 2.020337937589395e+00 1.243352952853733e+01 -4.866495322917708e-01 -6.829757251604784e+00 3.109726419700340e+00 1.639409904201668e+00 5.336533994115300e+00 -3.830578054157361e+00 -1.581757722751315e+01 -1.395663345783051e+02 -9.372283713117540e+01 1.346416062603658e+02 5.310234552809914e+01 1.764352528448105e+02 -5.583382655188282e+02 -1.671614656241805e+02 -1.155396041321241e+03 4.943126679254263e+02 1.027179627044373e+03 1.635112143739064e+02 4.849942865254689e+03 -6.899574251683669e+03 6.643786277678042e+02 4.566027778907507e+03 5.214306944633082e+04 3.540346669080600e+04 7.892295323196106e+04 8.273562649930603e+04 -2.596956367011948e+05 -1.488814354406507e+05 9.783358918515232e+04 4.433509034746134e+04
-1.129050987598768e+01 -1.064541855473103e+02 -7.128503516512480e+00 -6.453299364158009e+01 -1.211842272514147e+02 -1.432994958956061e-01 -4.920505992800346e-01 6.006413098366171e-01 3.461329088596560e+00 -2.998490277733287e+00 -7.466558029079155e+00 1.444037214220511e+00 2.664068255392905e+00 6.349796872002096e+00 -4.233220413417683e+00 1.174955929427833e+01 -1.296278332359902e+01 -1.212974652006815e+01 4.615816393256657e+01 1.222731370360364e+01 2.199633528849840e+00 1.197655633479179e+02 4.185118414251962e+02 -5.410074419928328e+02 -8.011246407469899e+02 6.864786471573334e+02 -6.262561405889981e+02 9.465933235349208e+01 9.927815158125892e+01 3.610725123550871e+03 -1.046068383906190e+04 -2.462571483744753e+03 3.209910271331161e+04 1.012499832057500e+04 4.447909159349948e+03 -1.430989259072112e+04 -1.323291979818503e+04 1.316261475411749e+04 2.834634933114457e+05 2.630501465736330e+05 -8.645569870102342e+04 -2.053856359685859e+04 -2.369991590369045e+05 -2.965843834083019e+05 -4.409599532396934e+04
1.320973530791708e+02 1.133744177141023e+02 6.187724893682469e+01 -1.036257536830247e+02 -6.711739425491179e+01 -2.361802771282957e-02 2.852818677612859e+00 -5.763113597522784e-02 -5.754645017157189e+00 1.040226353964424e+00 -7.188164230414809e+00 8.884067862570078e-01 -3.338922522957300e+00 -1.830898005699394e+00 6.420876673786813e+01 -4.093058268227900e+00 -2.624123626170262e+01 -6.070285210535175e+00 -4.136775103420218e+01 -3.106575523655032e+00 -1.170680617250375e+01 -8.932374517039534e+01 -8.795441283927323e+02 -1.694005532298305e+02 7.289997970841837e+01 1.274307640624964e+02 1.039711213416945e+03 5.500505833839034e+02 1.011388720913694e+03 -3.338045408785704e+03 1.459457972380795e+02 -1.093001969648537e+03 8.346012452448143e+03 3.942859030732624e+03 7.209887485535437e+03 2.063913337114791e+04 1.726277649630802e+04 -4.375686580512670e+05 -4.334965941900997e+05 2.520663302832988e+04 -1.975121234131820e+05 -6.972869237695933e+04 -3.958293518819951e+04 3.157469424712080e+05 1.469868050563582e+05
-7.680083713548922e+01 -2.885579283049772e+01 8.230918168172471e+01 -2.879211280721089e+00 -1.502918483015012e+02 1.724684493190237e-02 2.405636998267923e-01 -5.191089978005340e-01 -3.908004839649156e+00 -1.149104213600202e+00 5.623119733181787e+00 3.202891744101102e+00 -4.198194201255601e+00 3.434108485139935e+00 1.669727873396221e+01 1.843422989710179e+00 -1.778376425248273e+01 -8.848918908776389e+00 -2.820847151335147e+01 -5.555859896695163e+00 5.906172198123646e+01 -8.815749977758814e+01 -7.073641353278192e+02 1.361368756288446e+02 2.161766946802516e+03 4.319482649640568e+02 -1.345860454878011e+03 -1.651617448977750e+02 -7.951328420274290e+02 2.064063700098161e+03 5.963440573047775e+03 8.486607123360481e+02 -2.151883495306340e+04 -1.547872222331931e+04 -5.826866815020154e+02 8.289831536661319e+03 2.767385574431247e+04 -3.130380986270626e+04 1.432236375805384e+05 2.662252894939036e+05 -2.028384328729534e+05 -8.671824378835870e+05 3.489184006508943e+05 7.166138082697394e+05 -4.161462700086616e+05
2.092015377584279e+01 -6.818146651595413e+01 -3.962051090650328e+01 6.298697276595188e+00 4.978455687558166e+01 -2.133167764421444e-03 -4.228408643390778e+00 -1.574679657025827e-01 4.652489412972169e+00 1.733331459289110e-01 9.950307502565492e+00 -1.837649610790413e-01 1.670753494312191e+00 -5.452686146305626e-01 -9.939087460650070e+00 -2.288461945407101e+00 5.371501324556304e+00 -1.030098894662705e+01 1.110409318938780e+01 -3.379978051391611e+00 -2.077708918933370e+01 -1.740409212661944e+01 6.179426972594837e+02 1.202112107144332e+01 -1.272542035621634e+03 -1.693409267633910e+02 -1.215662561898054e+03 -3.769491663120792e+02 -2.471368250515081e+02 2.460931072666515e+03 -6.112302974891570e+03 5.576028754777241e+03 1.494463766585662e+04 -5.844549337907076e+02 -4.023838198942177e+03 1.828075889404763e+03 -6.856904185154887e+01 1.472734042646867e+04 -2.422000894715175e+04 -1.750059740610240e+05 1.824411937467389e+05 -1.162243993332659e+05 -1.546180026284929e+05 1.457903320438883e+05 7.260952292331720e+04
5.549236330002111e+00 8.510464271612248e+00 1.499915930872854e+00 -5.718076776176822e+01 -1.073400737021232e+02 1.913734210571671e-02 -1.897976106885318e+00 9.474353027541729e-02 6.559895938589197e+00 3.847861539699668e-01 -1.197530597842371e+01 -2.502985321272612e-01 1.021236923490629e+01 2.075785921157222e+00 -6.506928209049970e+00 6.234279325535139e+00 1.752790175510280e+01 -9.361615516391029e-02 -3.637988402046642e+01 -1.035563439659020e+01 -2.104567867330323e+01 1.590829936726218e+02 1.463762464824573e+03 4.385982942807074e+02 -1.722479327485013e+03 -6.585308438558333e-01 1.139079783125024e+03 -8.350487082617457e+02 -7.343631692232964e+01 -4.728152000583492e+01 -9.143160143408955e+03 4.266010242928261e+03 -1.001379527078619e+04 -3.570221809676638e+03 2.321762918844290e+04 -1.378614329552227e+03 -1.252462675350271e+04 -9.977546699884476e+04 -2.165451322108983e+05 -1.244428306954979e+05 1.647110199826282e+05 -6.868788643158785e+04 5.939294657377007e+05 3.361439704050320e+05 -5.152691654531133e+05
-7.916671728129341e+00 4.492823948998129e+01 -2.321361896168357e+00 -1.307990846578832e+02 8.765869130093633e+01 -9.432882458046217e-02 1.611005810242834e+00 -1.492405431125902e-02 -4.882611306436194e+00 1.355693318261039e+00 7.347697810758224e+00 -1.005947608673526e+00 -4.361056799092979e+00 9.247886198515168e-02 -2.009908475018450e+01 -8.766169433333262e+00 6.434501739699240e+01 5.061307399216700e+00 -8.580659555328153e+01 8.467487932199038e+00 4.795338088214078e+01 1.223215802782503e+02 2.099492630433865e+02 -1.899923297323583e+02 -8.744126753927595e+02 1.763805850118002e+02 1.138206840449201e+03 -5.264380804364586e+02 -9.034346921159797e+02 -4.059105563840728e+03 6.875493804896346e+03 1.735011124704736e+04 -4.579734146321174e+03 -9.297778126741827e+03 -2.341425160868986e+03 -1.554197660004223e+03 8.525873364765699e+03 1.618272281833872e+04 -1.029347626249581e+06 -1.377874758793992e+06 1.133230497940448e+06 1.535001290882857e+06 4.483416847289582e+05 -1.249958276970502e+05 -9.474144957910469e+05
-7.802632807816745e+01 -6.845340364662916e+01 1.356713670586956e+01 6.429559291889871e+01 5.969112686840563e+01 -1.476459646859465e-01 -9.014179718702735e-01 2.539243605349726e-01 6.578331994696370e-01 6.567788654511676e-01 2.672971790084568e+00 -4.045417196641024e-01 -2.480889831451431e+00 -2.173085187939534e+00 -6.149384313374290e-01 1.237555532875511e+00 3.398910583700701e+00 3.748468846399348e+00 -1.356194023597969e+01 3.576828207684911e-01 1.028514022166658e+01 -2.452974645090863e+01 1.472219899103325e+02 3.531820910869286e+01 -1.830872227158568e+02 -7.121290468102021e+01 -3.227075248363264e+02 -1.353082919292399e+02 2.733126427158998e+02 2.841383806359943e+03 -3.265593290646156e+03 -4.267522007397489e+02 1.466201562416414e+03 -2.517201653687018e+03 1.254021916995564e+04 1.578186339790411e+03 -1.196054098260551e+04 -5.449534436381417e+03 6.576862020272012e+04 -8.695350896731619e+04 -8.814270606378432e+04 4.587074072723955e+05 7.623642768318407e+04 -3.517609551203249e+05 -4.378004867922448e+04
-8.073601889023706e+01 -1.294665120866081e+02 5.945805590714158e+01 -2.898290131951689e+01 -1.137372595027623e+01 1.219346386197728e-01 -3.839491851396981e-02 -3.595476170701787e-01 8.224162070888553e-01 3.344070630946880e-01 -1.361143505206734e-01 6.625530309825681e-01 2.537011728158463e-01 -4.266564294031267e-01 -1.194978121256974e+01 1.737482385185809e+00 2.043919378151334e+01 -4.788563396789363e+00 -3.474946133830109e+01 -4.220943925467513e+00 2.517221961878412e+01 1.060184179513237e+01 1.781504656839612e+02 1.365399582956045e+01 -3.400000871925323e+02 4.642900563873435e+01 3.718217200852840e+02 1.563519292553875e+02 -4.059289015912773e+02 1.917350342938086e+03 -2.168254395331966e+03 -5.048353631651641e+02 7.841144679334916e+02 -1.920899103395903e+02 7.535043890794466e+03 -9.790152729192915e+02 -3.407548179745769e+03 -2.289116277601358e+04 2.424830526185240e+04 -1.711510685927522e+04 -3.676143854672500e+04 7.968742284328669e+04 -3.199123493424857e+04 -3.494703283466893e+04 3.043202096109469e+04
weight:Ti:1:
-1.900909743994832e+01 -7.578770479490131e+00 -3.218496428548703e+00 -4.236167744297796e+00 -1.186749689073697e+01 5.376081602840554e+00 -6.790956567542075e+00 -1.773830000868000e+01 -5.501967698076490e+00 -1.126457217402026e+01 -9.679843884554652e+00 -4.136760185943520e+00 -5.854885706629038e+00 -6.673888840718904e+00 -2.988839238536756e+00 -9.253564488744136e+00 -2.641721529732375e+00 -8.536185712280712e+00 -5.034707016809759e+00 -7.113274560516300e+00
bias:Ti:0:
-1.956139686368855e+00
2.316102584868805e+00
-5.873577280820667e+00
2.540633238613091e+01
2.169586324610218e+00
-6.132550222727400e-01
6.490063401842918e-01
-2.951927218533057e+00
-8.218012457375843e-01
1.774990864410233e+01
1.988342296137336e+01
1.990921933487676e+01
1.131818275713668e+01
1.317146636683294e+01
1.234521162759314e+01
4.176334634524139e+01
7.732436210630711e+00
2.952926382581686e+00
1.848343983326478e+01
3.602895726219778e+01
bias:Ti:1:
#-2.511965921735326e+01
1599.0960982347167
activationfunctions:Ti:0:
sigI
activationfunctions:Ti:1:
linear
calibrationparameters:algorithm:
LM_ch
calibrationparameters:dumpdirectory:
.
calibrationparameters:doforces:
0
calibrationparameters:normalizeinput:
1
calibrationparameters:tolerance:
1.0000000000e-07
calibrationparameters:regularizer:
1.0000000000e-04
calibrationparameters:logfile:
Ti_fitting1.log
calibrationparameters:potentialoutputfile:
Ti_1.nnal_output.nn
calibrationparameters:potentialoutputfreq:
100
calibrationparameters:maxepochs:
10000000
calibrationparameters:dimsreserved:Ti:0:
0
calibrationparameters:dimsreserved:Ti:1:
0
calibrationparameters:dimsreserved:Ti:2:
0
calibrationparameters:validation:
0.100000

124
potentials/Zn.rann Normal file
View File

@ -0,0 +1,124 @@
atomtypes:
Zn
mass:Zn:
65.380000
fingerprintsperelement:Zn:
2
fingerprints:Zn_Zn:
radialscreened_0
fingerprints:Zn_Zn_Zn:
bondscreened_0
fingerprintconstants:Zn_Zn:radialscreened_0:re:
2.648925
fingerprintconstants:Zn_Zn:radialscreened_0:rc:
8.000000
fingerprintconstants:Zn_Zn:radialscreened_0:alpha:
6.950000 6.950000 6.950000 6.950000 6.950000
fingerprintconstants:Zn_Zn:radialscreened_0:dr:
5.351075
fingerprintconstants:Zn_Zn:radialscreened_0:o:
-1
fingerprintconstants:Zn_Zn:radialscreened_0:n:
3
fingerprintconstants:Zn_Zn_Zn:bondscreened_0:re:
2.648925
fingerprintconstants:Zn_Zn_Zn:bondscreened_0:rc:
8.000000
fingerprintconstants:Zn_Zn_Zn:bondscreened_0:alphak:
1.000000 2.000000 6.000000 9.000000
fingerprintconstants:Zn_Zn_Zn:bondscreened_0:dr:
5.351075
fingerprintconstants:Zn_Zn_Zn:bondscreened_0:k:
4
fingerprintconstants:Zn_Zn_Zn:bondscreened_0:m:
8
screening:Zn_Zn_Zn:Cmax:
2.900000
screening:Zn_Zn_Zn:Cmin:
0.490000
networklayers:Zn:
3
layersize:Zn:0:
37
layersize:Zn:1:
20
layersize:Zn:2:
1
weight:Zn:0:
1.840843217996557e+03 1.327600298586164e+03 1.963548257955883e+03 1.429779297065990e+03 -1.051474168654006e+03 -1.660296406213434e+00 6.334570172699882e+01 -3.737038982792268e+00 4.968114752212670e+01 -9.567199194282953e+00 9.631589502702576e+00 -8.106222221683005e+00 1.163282250867211e+00 -7.159618962300345e+00 1.771028645853366e+02 -1.453247401354386e+01 2.252010741565294e+02 -3.033883801231511e+01 8.602899898801377e+01 -1.262500330269335e+01 4.709565431208187e+01 -3.411777169795419e+03 3.036872725714003e+04 1.147063535734760e+04 2.579893241305215e+04 2.525583705168684e+04 3.928446402286141e+04 3.708907106359200e+04 4.734108367180712e+04 -5.030090247388524e+05 4.446370017908084e+05 1.517518591797291e+05 1.022787698073169e+06 6.770155176081622e+05 3.468968893618785e+05 5.066083711607796e+05 6.232017917820069e+05
-4.867894022463213e+01 -6.696518437134288e+02 7.526948115726896e+02 2.141409611012552e+03 -1.910072205582579e+03 -4.830909565926931e-02 -1.388633643368077e+00 -7.983666630510140e-02 4.467091689403698e+00 -1.272558703081971e+00 -4.378710865127610e+00 3.443545489023216e+00 2.359117449397919e+00 1.562073699923843e+00 9.442749064616654e+00 -3.971519085672417e+00 -2.100922782635326e+01 1.817116491035471e-01 -2.040654367736756e+01 -1.208612901353981e+01 2.972997432741401e+01 -2.815091979129757e+03 -2.577786933826371e+03 2.783448001716584e+03 1.335915322198614e+04 1.414693151466261e+03 3.590765340226186e+04 4.893501501274273e+03 -4.504854951783422e+04 2.631600052429191e+05 1.009949017216819e+05 -1.042007315166406e+05 -1.626118958640781e+06 6.969556024636492e+05 -2.004918857445113e+03 -9.772234150996550e+05 1.612479330407999e+06
-2.547026671271322e+03 -2.950626616483513e+03 -2.744157181861291e+02 4.502269888982345e+03 7.642968810186376e+03 3.888930467743632e+00 9.299273947755566e+00 -1.301367634390119e-01 6.542128812937680e+00 -1.958937643529492e+01 4.030601718341823e+01 4.857939610787255e+00 -5.452609029666395e+01 -9.654377634167119e+01 -1.346121915835327e+02 1.840279843320920e+02 -6.508480314782527e+01 8.484065117304094e+01 -3.439712308602064e+02 -1.851789651157605e+02 3.689316978903703e+02 4.030138700240145e+04 5.888342632537148e+04 -4.762881412943191e+04 5.429566968749958e+04 3.785140953051671e+04 -2.067608331519767e+03 5.502126550207735e+04 -5.865131368721859e+04 -1.040697418309879e+06 -2.692728675649706e+06 -6.958339360362046e+06 9.717764177843109e+05 3.029302411030397e+06 1.507658303878951e+06 4.162944435381576e+06 2.603707536631078e+06
-4.020279651937405e+01 -3.712025215369567e+02 -3.905640951927051e+02 -9.769394562415926e+02 -8.000518667485832e+01 -9.902121471246689e-02 -6.315286863554328e-01 -7.525903056758572e-03 -6.581420778516043e+00 -3.953343778355981e-01 5.653937770792338e+00 -1.601237306989471e+00 -3.641074595744250e+00 8.590396854588673e-01 1.363317917303327e+01 7.731295376404532e+00 3.389263658172769e+01 7.954438643114552e-01 -1.990772872609119e+01 1.959756469248548e+01 1.959384540241467e+01 1.745835254917957e+03 -2.671324000856120e+03 -8.342521378051908e+03 -3.283752564475801e+03 1.435382195358146e+04 -2.646024265137098e+03 -7.043085213107316e+03 4.270157136776987e+03 2.741327608487913e+04 2.272959950858857e+04 3.032064842536186e+05 4.517831331111924e+05 -9.956048638245321e+04 -1.371366713379567e+05 -2.128379609295736e+05 -2.761388024665481e+05
-4.553288771293628e+02 -2.389110686529863e+03 -2.721644216851545e+03 -1.745749470448249e+03 -3.312486741418715e+03 -1.210765614220592e+00 3.943359793116002e+01 -3.149949212847695e+00 4.341439554849352e+01 -5.350355177108398e+00 5.109552274030201e+00 -6.934837454418926e+00 -1.795073888449587e+00 -8.946399900294518e+00 4.678167996106505e+02 -2.735142786019918e+01 1.201847812850579e+02 -4.293276983420454e+01 -4.588532588655881e+01 -6.147486946263889e+01 -2.568054234212329e+01 2.607892553152449e+03 -2.983152785208851e+04 -5.084479742814501e+03 -1.309910331053079e+04 -1.185093560878402e+04 -8.012767373368240e+03 -1.931821356921383e+04 -1.498648829129887e+04 4.956277516134420e+05 1.350126765532461e+05 1.939340301448317e+05 7.304255348724735e+04 9.479924834876996e+05 1.077059613736371e+05 -5.260943601902098e+05 1.578023714969253e+05
1.287060906064671e+02 6.419532516700075e+02 5.631212936256003e+02 -4.674728869335681e+01 -5.088555982705109e+03 -1.061129653037721e+00 6.463699904546160e+00 1.565088130214456e+00 -3.474802355680357e+01 7.814465663883186e+00 9.863070966490204e+00 -1.208999338140349e+01 2.850429663953289e+00 1.487468241998924e+01 -3.611859625077368e+01 -6.318239183252798e+01 2.313514592814801e+02 5.974330953468709e+01 -4.040675660307240e+01 8.228392165673229e+01 2.587032722271676e+01 -7.970047925528133e+03 9.524764474600510e+03 3.493005952807600e+04 -1.008766711617699e+04 -7.335180753238307e+04 -4.592580194975859e+04 3.569191328066273e+04 -1.038892674679388e+04 4.613935196622462e+05 1.206082869437945e+06 4.327918493048243e+05 2.065009811381410e+05 -9.651957960726328e+05 -4.892246525201621e+04 4.678438362636891e+05 4.451310450503579e+05
-2.244001562135284e+02 -2.947533384054621e+02 -3.716501463286722e+02 -6.579432730238428e+02 -1.924990262356199e+02 1.446993704443946e-01 5.700905464838008e-01 -5.008069513836519e-01 3.671356954783432e+00 3.193826437901424e-01 9.504158478199282e-01 2.307855594812535e-01 6.250545308727700e-01 -1.457679758283194e+00 -1.067984412812215e+01 1.262081441549886e+00 -8.441682390737853e+00 -3.368708907101144e+00 -4.360857580363301e+00 1.277685545459654e+01 3.583413158092908e+00 2.685434463415187e+03 2.335059394840259e+03 2.007840959322174e+03 2.184545161240448e+03 3.599914008006690e+03 -3.219758371691591e+03 -8.894828954753271e+03 -7.928670592250448e+01 2.510725928742397e+04 -1.151412386637197e+04 8.898162141759250e+04 3.414728740951253e+05 3.648299486863153e+05 -5.184753431119079e+04 -3.957212459575803e+05 -3.204937461149927e+05
-2.094057771857782e+02 -5.879762345159693e+01 1.638449410806029e+02 -1.536913149348004e+02 -4.207154579511297e+02 4.865438911547222e-02 6.184664673369579e+00 4.009998338742765e-01 2.414577834315304e+00 -8.477955616608593e-01 1.670985460758872e+00 -1.493485603728542e+00 -1.885280090642520e+00 3.100553619413786e-01 3.301296463793345e+01 1.611901985098975e+00 -5.000161679968362e+01 -3.112090748603185e+00 2.227635031724946e+01 -4.722476108930669e+00 -1.299500822314205e+01 1.680884442298651e+03 -3.195679145000194e+03 -1.817930083223865e+03 5.228834317783630e+03 -7.761230124878755e+03 7.010943608788367e+02 2.407779905378570e+03 -4.191907023656593e+03 9.787927676212358e+02 5.247086467701172e+04 1.777601807846408e+04 -2.812300640264689e+05 -1.190107109972477e+05 -8.187404029272732e+04 2.062303020081563e+05 2.973629505331946e+05
3.996253316096240e+02 7.020193312483506e+02 6.886795747897199e+02 -1.017286740464166e+03 -2.270129023740150e+03 -5.429478923988308e-01 5.082891380302957e+00 -7.806588741763909e-01 -2.308625278805171e+01 8.057987594509667e+00 -5.216776073596485e+00 -4.956155303075058e+00 1.799013368308143e+01 2.997387846534346e+00 -3.344695306407772e+01 -1.898136096777484e+01 1.768444934640630e+02 3.203870946993737e+01 -6.357874929657306e+00 1.431753460792018e+01 -7.170225680377385e+01 2.833273821024094e+03 1.604155460734075e+04 -2.818255189638704e+04 -5.155248110181149e+04 -5.073261552578159e+03 1.147674784768651e+04 1.282323153147283e+04 -1.793756114263649e+04 5.545164307930873e+05 8.220294701579114e+05 7.949708714636023e+05 -4.014746506395403e+04 1.813138275448710e+05 8.128946021087655e+05 2.208022420409432e+05 6.117235817318064e+05
1.609587997595022e+03 1.063278592331951e+03 1.621641256995942e+03 3.800587789635133e+03 2.464285195824142e+03 1.301381442045066e+00 -3.915311853316171e+01 2.836732531919875e+00 -4.409336353611096e+01 5.413413791999937e+00 -4.672598127332175e+00 6.731688390114411e+00 1.467407016089138e+00 8.383613519495249e+00 -4.697850666578314e+02 2.955934218333761e+01 -1.135743717058182e+02 4.273527146757789e+01 4.058043897259598e+01 6.411595191781156e+01 3.040370721661198e+01 -2.018812382180802e+03 3.113495955826021e+04 4.252895548771596e+03 7.402216411613146e+03 1.262311543171592e+04 1.652889838477845e+04 1.334901099878853e+04 4.529249580292105e+03 -5.235759996157698e+05 -2.092682606121698e+05 -2.835887954845360e+05 5.092872757394497e+04 -3.268805064592685e+05 1.164029954979558e+05 -1.789137850712673e+04 -3.752272721435481e+05
-1.869339700695036e+02 -2.711104010015937e+02 8.134226621464947e+01 5.540283992238183e+01 -3.069283676908044e+02 7.909097704307448e-02 -5.236808978512814e+00 5.351846112312371e-01 -6.556937006029356e-01 6.842464004396732e-01 -1.407007658264797e-01 1.830210066619608e+00 1.850600436409528e+00 4.397881176068279e-01 3.236196944044836e+01 -2.577656125433838e+00 -1.953686607969710e+01 -6.793937255459886e+00 1.409198234503100e+01 -1.054905721811694e+01 -2.341063193629975e+01 5.541998269367858e+02 -6.927844934521366e+03 -3.776162709861349e+03 3.830706825109737e+03 -2.297883983048941e+03 1.993572103030687e+03 3.942942417653607e+03 9.365263122109411e+00 4.501352409085185e+04 1.795315880643928e+05 1.243869880792447e+05 -1.884806044261365e+05 -6.023155113890633e+04 4.397734299519763e+04 -1.986967382669768e+04 -4.838198909269566e+04
-8.598120098834096e+02 -8.391863724010162e+01 9.141288779685266e+02 6.291516867955859e+02 5.084024207447897e+01 -1.130075766764037e+00 8.400001229434618e+00 -6.508762656240539e-01 3.242496089458407e+01 -6.509917115315996e+00 8.765141790535703e+00 -5.508049685490449e+00 1.326607027224823e+01 -6.599665659882787e+00 3.413922893358430e+02 5.435025240030077e+00 4.171772693423943e+01 -4.425376853262456e+01 5.220013664325218e+01 -1.710164330123337e+01 6.881073641868993e+01 1.102626948020171e+04 6.162812546570687e+04 8.932031832302722e+03 8.728661032742386e+04 2.771222394794940e+04 2.219030296574051e+04 2.984268489763810e+03 1.692759111028905e+04 1.371120228160145e+06 2.541766533641900e+06 1.431930821154697e+06 1.714597553666327e+06 1.269571631594059e+06 1.770259060988277e+06 2.286998039556925e+06 8.018546085244186e+05
-1.238492874947903e+03 -2.404190943477982e+03 -1.967868676179012e+03 -9.251476683616278e+01 9.681819275768881e+01 1.542612328190149e+00 -6.325810600086770e+01 4.140346350117789e+00 -4.955621465165487e+01 9.477593724882059e+00 -1.122619045205835e+01 7.898363089136797e+00 2.486943358976950e-01 8.262960301923508e+00 -1.774027831420277e+02 1.193524060159517e+01 -2.257179523567315e+02 2.999999276837573e+01 -7.041994315964807e+01 1.571099970941951e+01 -6.027517510319813e+01 3.217365031281775e+03 -2.972328708582964e+04 -1.115035159550204e+04 -3.110501716236360e+04 -2.448448643770179e+04 -3.946230681350971e+04 -4.147669191403156e+04 -4.422774069416532e+04 5.046939658822084e+05 -5.350712363272174e+05 -5.096205381295439e+05 1.667072003296654e+05 5.359017837715702e+05 -1.465796948101423e+06 -1.207395944754628e+06 -6.699578913850705e+05
-3.474022314195353e+02 -3.555025436558426e+02 8.713349077489387e+02 -1.470922577327833e+02 7.382060589544488e+01 7.935153549222949e-02 -7.759220152209404e-01 -4.471299415459822e-01 5.970574771150265e+00 8.177331361160014e-01 -7.324325478795535e+00 1.004657467296750e+00 1.904810261854232e+00 3.769679387588469e-02 4.921411884496084e+00 -2.346312220163470e+00 -3.213644916679318e+01 -1.124104788526019e+01 1.617625350213212e+01 -3.237992824000127e+00 1.117610269531818e+01 -2.408572604800540e+02 -2.969274630722372e+03 4.624222624249609e+03 9.461037593569181e+03 2.265153642633529e+03 1.474441708877377e+04 2.542844832736363e+03 -2.052860751175176e+04 -4.025918683842004e+04 2.012349368112139e+05 -1.738702709130462e+05 -9.218044325004334e+05 -1.490131777332481e+05 7.356466418350046e+05 8.688765603303112e+04 1.707773705736880e+05
-2.883173755528617e+02 6.640838078450979e+02 7.672648926122102e+01 -1.149201392748783e+03 6.475094954650361e+02 7.769773205585054e-01 -1.528326819437759e+01 2.372772516782163e+00 -2.101509413883469e+01 6.136704563023679e+00 -1.681955318758272e+01 6.765781717156283e+00 -1.114470199224738e+01 3.660049603045086e+00 -2.993186204128040e+02 5.104576180852823e-01 -1.475945302756736e+02 8.091400194861006e+00 -3.885963537068615e+01 4.240441890603346e+01 -4.073318629456916e+01 -9.891438054339715e+03 -8.517585899348131e+04 -2.282231149047157e+04 -4.101297281631408e+04 -4.896136705862332e+03 -3.769673968263360e+04 -1.918169381314612e+04 -1.886667839609148e+04 -8.824194205268268e+05 -2.724561468915461e+06 -8.601948513472035e+05 -1.565103646751642e+06 -2.895390572234056e+06 -6.332212891517369e+05 -3.496365383645286e+05 -2.360598489130690e+06
-2.098317109902523e+02 -5.191916028281686e+02 -4.072513779425757e+02 1.648645810202673e+03 8.008100493349814e+01 6.673676489318506e-01 -2.234551357730190e+01 4.324580028271706e+00 -1.115367518646302e+01 2.385143934009538e+00 -1.888418029457968e+01 1.053150469580193e+01 -1.321009282875341e+01 -8.164359611630221e-01 -2.544563691723962e+02 -7.279711477665754e-02 -2.427387970075490e+02 9.834942209456305e+00 -7.462310036631851e+01 4.021651438591282e+01 2.429677654379990e+01 -8.000312401143434e+03 -1.120651268436376e+05 -2.705586768488990e+04 5.410189868127030e+03 -2.734118906322595e+04 -2.012272178090466e+04 -2.048016419497057e+03 -5.179641789156697e+04 -4.258470174599529e+05 -2.444053059309976e+06 -1.317184298692366e+06 -1.978303048622859e+06 5.123453197700781e+05 -2.745475568245941e+06 -2.504064345974599e+06 -6.589181033339936e+05
-8.227395992590568e-01 8.402693564583156e+01 1.815585281022566e+02 3.000818198361154e+02 8.058422277681002e+02 -1.403423249457104e-01 -4.684885440242636e+00 -3.155059737214863e-01 -2.142423225472274e+00 7.823448914070521e-01 4.907619438732473e-01 1.420542355841920e-01 1.064109507072471e-02 -2.394985427255821e+00 3.280371336927642e+01 8.137788321401858e-02 2.629017584969349e+01 -8.912535171174423e-01 -4.233130590820435e+01 -1.174851039901424e+01 6.427637350191217e+00 -4.010724778979453e+03 -2.572481944694466e+02 5.177792533304703e+03 -3.183707922594705e+03 -3.712788300100658e+03 -9.680749251221494e+03 -8.127603073207721e+03 1.085288392028389e+03 1.651460584536785e+05 1.366136537742037e+04 -1.975829808487097e+04 2.671717127180303e+05 7.046034181257843e+03 -2.209888878104767e+05 1.075612168134570e+05 -6.389420350760744e+04
-2.624614355513467e+02 -3.322920155334897e+02 -1.007253674048416e+02 -6.883995238526846e+02 -4.148158619112295e+02 6.668773877535907e-02 3.559694252206691e-01 -4.769307092246022e-02 8.414135633745047e-02 -1.523737480373382e+00 -2.629764000142077e+00 -1.091241060801898e+00 7.535210785482911e-01 2.173769394429124e+00 -1.334593827215766e+01 -4.494096915372464e+00 1.355288539130498e+01 1.022271563912265e+01 1.654684914913852e+00 8.273397323601738e+00 6.320909889323898e+00 1.604941942575870e+03 3.850446876423065e+03 5.019480656839593e+03 -1.550436687524828e+03 -4.079558821492986e+03 -3.190561267686891e+03 1.668057826215280e+03 2.678008069427244e+02 -2.388105125932132e+02 -1.486451119986938e+05 -3.080703509002728e+05 -2.089720798558507e+05 7.306594469099441e+04 3.777534507727789e+05 2.147884436501953e+05 3.010899184939094e+03
-2.174728682280671e+03 -7.854909989734913e+02 1.577337427124105e+03 7.392879338718672e+02 -2.031293222927472e+03 9.815697575740177e-01 -4.060742228028013e+00 1.771054166594305e+00 4.338042973986315e+00 -1.950709589059402e+00 1.383564405552985e+01 -9.496007054920318e+00 -1.441633040429974e+01 -1.683383727754707e+00 1.939263088801955e+01 -4.296716004293904e+01 -2.099204621670571e+01 -2.566053624162975e+01 -2.461342432348027e+02 1.709537803072899e+02 2.767532404363527e+02 3.257450132587233e+03 -1.386610370240498e+04 3.636555915788168e+04 2.512343018039977e+04 -1.768451640041186e+04 1.477756394744807e+05 -1.021358228573174e+04 -1.161020499758031e+05 6.425861902773150e+04 6.462450329899557e+05 -1.638982938577188e+06 -2.109062476582080e+06 2.281775468412996e+06 4.257678996800155e+05 1.004623655823118e+06 -8.396220880638172e+05
9.341272875268173e+02 1.523630384000860e+02 -3.308191284114405e+02 -2.745533909538656e+03 1.093612069150671e+03 -9.263803756621519e-01 9.677852559069018e-01 1.985645486565863e+00 9.698276105046586e-01 2.352565497995323e+00 -4.649719127421410e-01 -2.015395710398236e+00 -9.608496226119479e+00 7.489945812622556e+00 -9.093611856005616e+00 -1.875396788524467e+01 2.252698855227218e+00 1.003217836810984e+01 1.935312261715944e+01 3.310844224727441e+00 6.505579353043269e+01 -5.054354839283399e+02 -2.402724429734602e+03 -5.781381255987149e+02 -1.947750709649783e+02 -1.721567792817546e+04 -3.570515181768234e+04 1.744893705690145e+04 -1.228487113034495e+03 1.111367889272611e+05 3.767183834465455e+05 7.095990316148212e+05 1.181644134129440e+06 -6.586946890358032e+05 -2.795476465151584e+05 -4.258568631088620e+05 -1.728310863412047e+05
weight:Zn:1:
-2.953614335455724e+00 -1.540740947683137e+00 -2.390376979910860e-02 -4.733071603103755e+00 2.638412534877502e+00 1.358896268600150e+00 -1.127482685265421e+01 -1.342791952592754e+01 -1.868196586479195e+00 -2.639018099129854e+00 -1.636923782004850e+01 1.404305129315243e+00 2.955805365131578e+00 -2.185249784455780e+00 -2.784840797769666e+00 1.384514171320113e+00 -1.795558952161663e+01 -1.357705098955455e+01 -1.860151078466323e-01 -2.370613289249908e+00
bias:Zn:0:
6.170970946932821e+01
-4.150812873713187e+00
9.853741603467787e+00
2.721794032367539e+01
2.687631075485057e+02
1.408693614782542e+01
3.724732180034960e+01
4.120610552023929e+01
6.646503480337852e+00
-2.683074862384495e+02
2.858636579192188e+01
3.833833122430053e+01
-6.116706610542293e+01
3.959901837539699e+00
-4.124081102018241e+01
-4.430796692879193e+01
2.830207223926218e+01
3.880279320236085e+01
6.690787521775901e+00
5.173538980360735e+00
bias:Zn:1:
-3.035446092168328e+01
activationfunctions:Zn:0:
sigI
activationfunctions:Zn:1:
linear
calibrationparameters:algorithm:
LM_ch
calibrationparameters:dumpdirectory:
.
calibrationparameters:doforces:
0
calibrationparameters:normalizeinput:
1
calibrationparameters:tolerance:
1.0000000000e-07
calibrationparameters:regularizer:
1.0000000000e-04
calibrationparameters:logfile:
Zn_fitting1.log
calibrationparameters:potentialoutputfile:
Zn_1.nnal_output.nn
calibrationparameters:potentialoutputfreq:
100
calibrationparameters:maxepochs:
10000000
calibrationparameters:dimsreserved:Zn:0:
0
calibrationparameters:dimsreserved:Zn:1:
0
calibrationparameters:dimsreserved:Zn:2:
0
calibrationparameters:validation:
0.100000

124
potentials/Zr.rann Normal file
View File

@ -0,0 +1,124 @@
atomtypes:
Zr
mass:Zr:
91.224000
fingerprintsperelement:Zr:
2
fingerprints:Zr_Zr:
radialscreened_0
fingerprints:Zr_Zr_Zr:
bondscreened_0
fingerprintconstants:Zr_Zr:radialscreened_0:re:
3.234381
fingerprintconstants:Zr_Zr:radialscreened_0:rc:
8.000000
fingerprintconstants:Zr_Zr:radialscreened_0:alpha:
4.450000 4.450000 4.450000 4.450000 4.450000
fingerprintconstants:Zr_Zr:radialscreened_0:dr:
4.765619
fingerprintconstants:Zr_Zr:radialscreened_0:o:
-1
fingerprintconstants:Zr_Zr:radialscreened_0:n:
3
fingerprintconstants:Zr_Zr_Zr:bondscreened_0:re:
3.234381
fingerprintconstants:Zr_Zr_Zr:bondscreened_0:rc:
8.000000
fingerprintconstants:Zr_Zr_Zr:bondscreened_0:alphak:
1.000000 2.000000 6.000000 9.000000
fingerprintconstants:Zr_Zr_Zr:bondscreened_0:dr:
4.765619
fingerprintconstants:Zr_Zr_Zr:bondscreened_0:k:
4
fingerprintconstants:Zr_Zr_Zr:bondscreened_0:m:
8
screening:Zr_Zr_Zr:Cmax:
0.900000
screening:Zr_Zr_Zr:Cmin:
0.490000
networklayers:Zr:
3
layersize:Zr:0:
37
layersize:Zr:1:
20
layersize:Zr:2:
1
weight:Zr:0:
7.381296522566744e+00 7.130158190840194e+00 4.200171884340379e+01 4.427190404667763e+01 -1.366855586452906e+01 8.821696154907847e-02 -2.518871936614479e+00 -3.072814109456260e-01 -6.332074236235906e+00 -7.916482408467866e-02 -2.595428388395566e+00 1.587936612704918e+00 -6.963607030326845e+00 -8.481911197418225e-01 1.246686339682635e+01 1.085607134603704e+00 8.140087560418554e+01 -1.080470966704628e+01 2.607676058587359e+01 -7.823196841829972e+00 -5.874243038785177e+00 -6.105955749933876e+02 -7.693654919669473e+02 -4.400614746958312e+02 -7.554494013420192e+02 4.800624986166874e+02 6.979997952915920e+02 -5.314040268701267e+02 5.368619586705707e+02 3.156976072918432e+03 -6.435519589744056e+03 -3.263679521448650e+03 9.382981141164784e+03 1.672189279890477e+04 -2.017347933852068e+03 -1.134054703828864e+04 -3.644374088529719e+03
-7.343334482704901e+00 -1.641068084462888e+01 7.448941034741394e+01 7.587359086673480e+01 6.388751445416979e+01 -8.202464329288484e-02 -9.754636115736895e-01 -2.804865806130803e-01 6.344093861270931e+00 -5.751686551986382e-01 4.767101904913019e-01 -1.356527078630970e+00 -9.486404998481820e+00 9.094802133975990e-01 9.087984393925655e+00 -7.740317874926092e+00 -3.210734010043303e+01 4.144894475202913e+00 -6.536145387633145e+00 9.276129485335133e+00 5.446805529828485e+01 -7.242034068166550e+02 1.128209249476092e+02 -1.186574669501124e+03 8.851722647740458e+01 8.601662987738347e+02 -2.158956794874402e+02 2.229929118224090e+02 3.887806365412573e+02 5.998977467892071e+03 -6.263888300917686e+03 4.426174676002242e+03 -3.856796050510524e+03 8.517552259919396e+03 -4.891968629515542e+03 2.465964715657373e+03 -4.960383391302242e+03
1.242933668004703e+01 3.534076315567761e+01 2.892206764764533e+01 -9.158620533153363e+01 -9.304465471150889e+00 3.597219932340947e-01 -1.965765303236593e-01 -6.038034819786912e-01 4.169258880920890e+00 -7.788832807290629e-01 -3.971920915817314e+00 -1.080922341488128e-01 -2.237569503326876e+00 -2.175385636753291e-01 5.551918816987198e+00 4.549334720744278e+00 -2.409429679621821e+01 5.911403983185100e+00 5.094059579971503e+00 7.174416021103966e+00 3.750621314836827e+01 -1.098579388811412e+03 4.104923684883875e+02 2.946257748491966e+03 9.800101505711735e+02 -1.993689482756887e+03 3.152070625214521e+02 -2.144988128022771e+03 -1.424363139282173e+03 -8.170397245720832e+02 -2.860300585635730e+02 2.276112912820758e+03 2.364347789865741e+03 3.768650601673110e+03 4.580252035526390e+02 -7.748957372067850e+02 -1.861695170737821e+03
-6.277694758618647e+01 1.100646761374202e+02 1.292600039936085e+02 -2.521205829986573e+02 1.125299912224420e+02 -7.614290619269820e-02 -3.672792000573074e-01 4.227386826327034e-01 8.112901456397041e-02 -2.853166404886919e-01 1.053738071618254e+00 4.916810581429380e-02 -1.546278859912050e-01 2.758207253453695e-02 9.662960124336845e-01 1.690207712112010e+00 2.558423565380535e+00 -4.796097627224981e+00 -8.618810493536149e+00 2.335845454354129e-01 -2.104611134736317e+00 5.559104799755133e+02 7.243968985648039e+02 -5.602325024858994e+02 -4.212917725727958e+03 -1.335304959745415e+03 2.692494364107346e+03 5.102210457612818e+03 9.738600760491171e+02 -1.221933267231483e+04 2.034703995286087e+04 -1.786705189919247e+04 1.526681731311544e+04 3.331659172050699e+03 2.052074056308941e+03 -2.167059369795558e+04 -9.540058829221348e+02
2.701146000196256e+00 -2.981174417591707e+01 1.073588510831900e+02 5.254946187803375e+01 -3.901514784711276e+01 -1.235984454426156e-01 8.894893392619696e-01 2.289283123441673e-01 -3.873715417459276e+00 -1.608140269517794e-01 4.954044593926455e+00 2.043631311776301e-01 2.358802292434077e+00 4.013568701860717e-01 -4.071479527020475e+01 -6.525583960070157e-01 -5.181177916359917e+00 -8.917421943346707e+00 -1.921960278026024e+01 -1.017036024898709e+01 1.621303931936334e+01 -7.849798887940015e+02 -1.152713040653699e+03 -3.587035731132012e+02 -7.438654410983773e+02 6.687606100049227e+02 6.763690377496048e+02 1.194109444141304e+02 2.691573945338395e+02 3.053517603714615e+02 -5.664534427666624e+03 -3.048603215591392e+03 9.203545449530582e+03 1.759915892752787e+04 -2.694942192510066e+03 -9.448137725809862e+03 -3.275473011597345e+03
-1.113610892629528e+01 -5.352070716625105e+01 1.622198596023905e+02 -1.121530297588318e+02 3.298940291093732e+01 -5.938569861795934e-02 1.789885135491486e-01 3.192923908403887e-01 -5.863203003855301e-01 3.417318216113329e-03 -2.387044267807831e-02 -1.646461312808371e-01 4.023189796284228e-01 3.405442830143419e-02 -1.291845029175062e+00 -2.897829651895125e+00 4.097651210125941e+00 2.535870831025441e+00 1.605926650199906e+00 -1.319481747750912e+00 -5.094487244938955e+00 -5.580532917240298e+02 9.629857757595847e+02 7.829027004580353e+02 -2.044440856048167e+02 -2.039256198054595e+03 -2.761565574550300e+03 2.011091027784327e+03 3.636013777486120e+03 -4.941540584165978e+04 -8.698942047243450e+04 1.932214662264583e+04 2.348981597562570e+04 1.276093782663354e+04 9.745339044614766e+03 4.506933487665747e+02 -1.172776377038700e+02
-3.133280493516302e-02 1.613829617649381e+01 2.606086728183494e+01 9.894789241412758e+00 -7.032936058911798e+01 -3.051477823783093e-02 7.665634632211482e+00 -2.851163710513550e-01 -7.382190741685160e+00 3.340812447859877e-01 -2.079239603301193e+00 4.610633647758736e-01 -9.225717014368872e-01 2.256748703310680e+00 -2.224289597011503e+01 -4.289837165230754e-01 -3.506530479870034e+01 -5.452040625805429e+00 -1.830619506402129e+00 4.323944585100644e+00 1.404310652241231e+01 -1.015069631142862e+03 2.497411423296064e+03 -2.936346829823708e+02 2.585158798846734e+03 -8.363128458209458e+02 1.142077779191439e+03 -7.788864617705302e+02 -2.082756085307323e+03 8.126829220618039e+03 -1.535039362543352e+04 3.306880486772492e+03 2.192625684812579e+03 2.004337842246266e+04 -7.325105493275832e+03 -7.317717859542367e+03 -8.238741527531189e+03
5.178762015960374e+01 4.397985283536948e+01 1.451874516251761e+01 -1.007621316895964e+02 -1.755118188356003e+02 5.873682329428755e-01 -2.664586283290843e+00 1.902291756606684e+00 -8.634135766153344e-01 1.642095074632718e+00 3.433391740348147e+00 1.486375527784142e+00 2.271011825734604e+01 -1.908787522889777e+00 5.565270671219807e+01 -7.315584468961031e+00 -1.202014438732027e+01 -1.120928101651775e+01 -1.659252047811708e+02 8.685602926277943e+00 -3.709274047587231e+01 1.334529585301922e+03 -2.342179260454223e+03 -3.448013417930393e+03 2.215428924215240e+02 -3.726643773931769e+02 2.109127105876841e+03 2.121078750676438e+00 1.235858854803566e+03 -8.477864465043676e+03 4.680844543443491e+03 -7.994738609209978e+03 1.249972986929879e+04 1.445905988868188e+04 2.319585231212667e+02 -1.190363714475799e+04 -2.682638991028886e+03
-1.325939901769810e+01 -5.039776936509699e+00 6.906716671654445e+01 1.842210220795870e+01 -1.673344191792709e+02 -8.793341733379941e-01 -4.464010770999057e+00 3.098049067138969e+00 1.010750276956096e+01 2.182290856152695e+00 -1.010054622828261e+01 -4.029047609555121e+00 6.232601113500972e+00 2.156888636353290e+00 3.177501020130934e+01 7.144480954593013e+00 -7.550509481003976e+01 -8.941368514046992e+00 1.041820896826468e+02 -1.359235155832685e+01 -9.348755638249870e+01 2.104409813994797e+03 -1.026048417650894e+03 -9.955679582541674e+02 -7.972344395854406e+02 -1.457652314333864e+03 4.792882547286521e+02 1.433742846088243e+03 -2.541007873696039e+02 -1.670515066428002e+03 -2.415107029850905e+03 2.792347492243997e+03 1.385247240294723e+03 2.989892961265303e+03 1.302007241430902e+03 -2.829973197828950e+03 2.773818852570511e+02
2.068868727753571e+01 -1.976035481735939e+02 -1.798147133105336e+02 2.655690146746205e+02 -1.876974933088704e+02 -5.327957546670193e-01 5.544211322818130e+00 -5.290986149116881e-01 -3.327147969273904e+01 4.548635034748443e+00 5.925868280213026e+01 -5.227911158109348e+00 -4.008361316752591e+01 1.092161526557298e+01 -4.087727407939851e+01 -2.452536772970915e+01 2.419677473999974e+02 -1.237703002908215e+01 -4.956647617367765e+02 5.423800519251387e+01 3.637397492117086e+02 6.998551359311029e+00 3.272494384269504e+03 1.035575851458618e+03 2.653344583912416e+04 4.765808317502468e+03 -8.444579314257524e+03 1.472164566611349e+04 -2.238729957499929e+04 -6.612320389792499e+03 2.830128060860079e+04 -1.961922378962470e+04 -1.111286223880333e+03 -1.425411906736236e+04 -7.757368610184068e+03 -1.379960685504116e+04 -1.027112096230488e+04
-2.365067863964305e+01 -2.058385987233662e+01 6.719231355332327e+01 1.664260207898833e+01 2.314010346016702e+00 -1.571074578826339e-01 -3.340674635312043e-01 -3.285477040438386e-02 -6.349012747087381e+00 -4.279980599545441e-01 3.444373720594022e+00 -5.591934342584590e-01 6.096534412933446e-01 -5.932817051532292e-01 -1.207352003086340e+00 -1.630313731175197e-01 -4.186217469581054e+00 -4.277667967938339e+00 -7.605151181781177e+00 3.701691555203355e+00 -2.939214854903926e+01 4.144090858650238e+02 -3.440115216775906e+02 -1.147538509821983e+02 -9.325483430475338e+02 4.329052064332990e+02 1.397123839890397e+03 -1.513325512976397e+03 4.436525632243687e+02 7.027359259277902e+03 -8.304700900932956e+03 -3.075330960837537e+03 6.950250980630349e+03 1.626555899463438e+04 -6.382847256421246e+02 -1.231133921598834e+04 -4.454490118851970e+03
-2.490762247580751e+01 -7.704395690617876e+01 -3.759264757640926e+01 -2.387482074478985e+01 -2.368312473041670e+01 5.199004235526338e-02 -8.950743325162778e-01 2.163678439474779e-01 5.918470629976595e+00 8.043227211729510e-01 1.683098524725376e+01 1.462130945510479e+00 -2.726269390689826e+00 4.537409510583774e-02 -1.572840886156958e+01 -1.957916094029760e+00 5.590689759889049e+01 4.579852076133587e+00 7.061512986959033e+01 2.175677288018516e+00 -4.940202401953005e+01 1.014385171806143e+03 2.221858627713963e+03 1.335323688723463e+03 -1.351081267123477e+03 1.273373579927487e+03 -1.738382154653573e+03 -3.305203145875294e+01 -1.764050538292633e+03 -7.749364235272099e+03 1.788000867417741e+02 -8.065215134600997e+03 1.216703450226447e+04 1.549815573897577e+04 -1.649188524133760e+03 -1.163232130429769e+04 -2.316476098246495e+03
2.595418400942068e+01 -5.025443662631862e+01 5.551235483002111e+00 -5.057282149937810e+01 6.885458866699666e+01 1.383428833801509e-01 9.029352996084028e-02 -8.782677075495333e-01 1.537879226611543e-02 2.513340680507049e-01 -2.223969757890600e+00 3.621186190852583e-01 1.459318437234252e+00 -9.078169286935350e-01 -2.464277459094684e+00 1.158954712453820e+00 2.287555815020272e+01 4.122016719581704e+00 -1.916046420753785e+01 -2.127011438543926e+00 1.252558790234667e+01 -1.199090251930070e+03 -3.115932133111034e+02 2.648539639457308e+03 2.028516493428186e+03 2.593465387430189e+03 -2.441924641224769e+03 -5.036948222837340e+03 -7.043011645780736e+02 -7.068717315129480e+02 -2.203215765508770e+03 -6.776803869888758e+03 8.388118092019462e+03 2.299264584439720e+04 -4.243447575259648e+03 -8.187319257213576e+03 -5.166367944086643e+03
-1.485261475002464e+01 1.996384938135571e+01 -1.265000659499631e+01 -6.313060438128263e+01 3.068904645459310e+01 2.287893858172400e-01 -4.605744068252624e-01 -1.067608362823322e+00 2.574249568465039e+00 -8.117811486741096e-01 -3.383920984492935e+00 1.780615849275111e+00 1.739890236931991e+00 -2.040587991524515e+00 2.706015049812731e+00 1.176058435395413e+01 -1.278892176853245e+01 2.359144432605323e+00 1.488033576981515e+01 -1.362741245633645e+01 -9.128865777112892e+00 7.447031114655842e+02 4.021556534846347e+02 -2.047789643975846e+03 -3.311577459142598e+02 -1.872576522488972e+03 -1.786842016646160e+03 3.337494335711804e+03 1.306846039690949e+03 2.871083316295149e+03 -9.113746710100057e+03 -1.242976884641936e+02 7.953639928226145e+03 -3.727107602288750e+03 6.900051440406323e+03 -8.564913672930197e+03 5.309826518100263e+03
4.383716646771092e+00 -7.171277888414558e+01 4.771328618552386e+01 5.935566558472448e+01 -4.037730934544003e+01 -9.988049845902591e-02 -1.734608370476428e-01 6.145564792733131e-01 5.715540197981080e-01 -3.957776905239759e-01 -1.047361949239829e+00 4.143944214024021e-01 1.317981704407956e+00 7.192145360372761e-01 1.093783168983153e+00 -5.808672273125883e+00 -7.860877109428078e+00 3.448178016136839e+00 1.402153523788541e+01 -2.854985456062495e+00 -1.263087431015409e+01 -2.911915984611637e+01 -2.775332904676435e+02 3.375716039569820e+02 9.464418372912785e+02 9.691550206834904e+02 -2.365228580730808e+02 -6.840683514579940e+02 -1.540159147717303e+02 -2.144685011450176e+04 8.191205448363766e+03 -1.574896690887435e+04 2.300987989641396e+04 8.487067886059498e+03 -3.627059105584906e+02 -2.146079170322270e+04 -5.778262992501805e+03
6.332098777930179e+01 -4.235200147411553e+01 -5.508040254230945e+01 6.043534840323802e+01 -2.827936806398792e+01 1.292106725107093e-01 9.571923144695239e-01 -8.903008345736324e-01 -2.687119380409823e+00 -4.869185147685802e-01 3.656804455272601e-01 1.638847253916739e+00 1.322220213316077e+00 -7.297492042376632e-01 -7.299494598070715e+00 4.865372318142658e+00 2.828468437095840e+01 1.145939557427762e+01 -1.991975983092215e+01 -1.723395123154611e+01 4.902586260324359e-01 3.144949483942754e+02 8.356740419183171e+02 -1.163365756456409e+02 -1.204676593864002e+03 -2.182380007791583e+03 1.614838987778708e+03 2.225654170802206e+03 8.897487602147228e+02 1.329027287572518e+04 2.401315646381050e+04 -6.140821239820143e+03 1.047645228402168e+03 -6.846784763591834e+03 -4.864233343948024e+03 -1.206543639448176e+04 -4.531173102740860e+03
-2.615001423051205e+02 1.544844934715346e+02 2.257341863862515e+02 2.038726287807665e+02 -2.924744950663223e+02 -5.530479035946733e-01 -1.976003536395126e+00 3.730687778137769e+00 2.639620318254015e+00 -1.496270970625150e+00 4.060167182199057e+00 5.618344968143281e-01 -3.471338368559449e-02 4.301061914731707e+00 1.476888543283464e+01 -2.049224928169378e+01 -5.614627145417134e+01 -1.541943081243772e+00 5.189202522085132e+01 -1.438977966650609e+01 -6.316288400564984e+01 2.662118182890792e+03 -2.939368939554080e+02 -5.267309507964911e+03 -4.065878095123616e+00 -2.249265635407812e+03 3.523087445570794e+03 9.651669746730648e+03 3.961454066147802e+03 2.804695221212129e+04 1.566211444954258e+04 -8.797454350306340e+03 -1.516132001797956e+04 -9.505786359207541e+03 -1.544403968564882e+04 -9.609968019360755e+03 -1.159704948244616e+04
1.802289034544688e+02 1.026706551753254e+02 -3.769648331401010e+02 -4.606326435516488e+02 4.793762473771329e+02 6.756914458795386e-01 2.369294959660302e+00 -4.190698470274679e+00 -1.080387100731011e+00 3.016079811933339e-01 -1.375753522025393e+01 -3.037742717795375e-01 5.574355163484181e+00 -5.244802148325808e+00 -1.673837741072239e+01 2.402003153477136e+01 5.614838865538595e+01 1.621099616557411e+01 -4.361205268273413e+00 1.134029351405468e+01 4.009042522799712e+01 -3.221035096462857e+03 9.434696207641604e+02 8.198780479281244e+03 -6.489926380348305e+03 -5.495065723887946e+03 -3.183495420161816e+03 -4.207452756572930e+03 -3.897650550391648e+02 -1.077317443319540e+04 1.624451203976944e+04 2.139444868226495e+01 1.068352192443755e+04 4.940822516539784e+03 7.721628613847120e+03 1.634675592282272e+03 5.171721637096403e+03
-2.609034303199128e+01 -7.769357448208970e+01 1.748372476587158e+01 -5.251208787933724e+00 1.335514909211972e+01 7.439461426478934e-02 3.216538618523616e-02 -1.833520185399168e-01 4.544725587614833e-01 -3.217239428924067e-01 7.547026892535951e-01 -4.301842102108369e-01 -2.345122573914390e+00 -2.707841487419461e-01 -8.601226024312181e-01 2.460323122887637e+00 -4.889375831247838e+00 -1.072540578125127e+00 -7.193669364801267e+00 7.543329505286398e+00 2.084800705131283e+01 3.939817334867372e+02 -3.188117128084888e+02 3.692893199412986e+02 5.536133041051113e+02 6.329096050602059e+02 9.955913661543278e+02 -4.271092264935067e+02 -1.939019665544233e+03 -6.680967130805675e+00 5.878462099019339e+02 -2.319037706051229e+04 1.677785520800550e+04 1.777317572909228e+04 -8.619334023897873e+02 -9.451431666341537e+03 -2.937950917771465e+03
2.119570983436646e+02 -1.184716155223651e+02 -2.834752449280204e+02 -1.005889506534004e+02 2.221131188176547e+02 -2.973181268314488e-01 -2.813670882682948e+00 3.460887706608498e+00 1.616042765074561e+01 -3.041616707906931e+00 -1.732477618449203e+01 -5.154493693613070e+00 -6.782940654041445e-01 4.233025878069218e+00 2.603989167693364e+01 -3.157302052072417e+01 -1.200863254888831e+02 1.724104739752880e+01 1.328579978593651e+02 6.368244603125043e+01 8.270218953737908e+00 -2.803010591348636e+02 -6.821415341701146e+03 -9.471105574290392e+03 1.554740825565412e+03 7.708517357068736e+02 2.168875045061543e+03 1.591013509849872e+04 2.273432111834214e+03 3.764678758792744e+03 8.984427737629128e+03 -1.213717745552139e+02 4.768242755886266e+03 1.533977273809600e+03 4.883012280694039e+02 -4.513229537068590e+03 -9.447075781888223e+02
weight:Zr:1:
-8.175576164099528e+00 -1.341685099580933e+01 -3.939640265969577e+00 -6.580142417630491e+00 -7.856389508033577e+00 -3.357365936835799e+01 -9.049031279259449e+00 -5.235065045549836e+00 -6.779278996155368e+00 -2.650607951877734e-01 -9.579549467991685e+00 -6.942695320135554e+00 -9.562672513440180e+00 -6.573200331851058e+00 -8.948479539452956e+00 -1.100616682951540e+01 7.180780753238659e+00 -2.941167595223658e+00 -8.085451426199342e+00 -1.810921789477701e+00
bias:Zr:0:
1.220978247929677e+01
1.539814934489904e+00
1.315141624159684e+00
-3.216075539810813e+00
1.597216908911821e+01
-1.509449655353172e+00
1.306779431995830e+01
6.881643510699838e+00
1.795274861296060e+01
2.635443682698823e+01
2.445366910380627e+01
2.037740967539630e+01
1.545006534703347e+01
6.110145520503632e+00
4.386713239573275e+00
1.319076535780910e-01
-1.823581113535763e+00
5.165578713447484e+00
1.995013562637883e+01
2.709392285019076e+00
bias:Zr:1:
-1.726374265091256e+01
activationfunctions:Zr:0:
sigI
activationfunctions:Zr:1:
linear
calibrationparameters:algorithm:
LM_ch
calibrationparameters:dumpdirectory:
.
calibrationparameters:doforces:
0
calibrationparameters:normalizeinput:
1
calibrationparameters:tolerance:
1.0000000000e-07
calibrationparameters:regularizer:
1.0000000000e-04
calibrationparameters:logfile:
Zr_fitting1.log
calibrationparameters:potentialoutputfile:
Zr_1.nnal_output.nn
calibrationparameters:potentialoutputfreq:
100
calibrationparameters:maxepochs:
10000000
calibrationparameters:dimsreserved:Zr:0:
0
calibrationparameters:dimsreserved:Zr:1:
0
calibrationparameters:dimsreserved:Zr:2:
0
calibrationparameters:validation:
0.100000

5
src/.gitignore vendored
View File

@ -87,6 +87,11 @@
/fix_pafi*.cpp
/fix_pafi*.h
/pair_rann.cpp
/pair_rann.h
/rann_*.cpp
/rann_*.h
/compute_test_nbl.cpp
/compute_test_nbl.h
/pair_multi_lucy.cpp

View File

@ -55,9 +55,9 @@ PACKUSER = user-adios user-atc user-awpmd user-brownian user-bocs user-cgdna \
user-cgsdk user-colvars user-diffraction user-dpd user-drude \
user-eff user-fep user-h5md user-hdnnp user-intel user-lb user-manifold \
user-mdi user-meamc user-mesodpd user-mesont user-mgpt user-misc \
user-mofff \user-molfile user-netcdf user-omp user-phonon \
user-mofff user-molfile user-netcdf user-omp user-phonon \
user-pace user-plumed user-ptm user-qmmm user-qtb user-quip \
user-reaction user-reaxc user-scafacos user-smd user-smtbq \
user-rann user-reaction user-reaxc user-scafacos user-smd user-smtbq \
user-sdpd user-sph user-tally user-uef user-vtk user-yaff
PACKLIB = compress gpu kim kokkos latte message mpiio mscg poems python voronoi \

443
src/Makefile.txt Normal file
View File

@ -0,0 +1,443 @@
# LAMMPS multiple-machine -*- Makefile -*-
SHELL = /bin/bash
PYTHON = python
#.IGNORE:
# Definitions
ROOT = lmp
EXE = lmp_$@
ARLIB = liblammps_$@.a
SHLIB = liblammps_$@.so
ARLINK = liblammps.a
SHLINK = liblammps.so
TMPNAME= tmp_$@_name
LMPLINK= -L. -llammps_$@
OBJDIR = Obj_$@
OBJSHDIR = Obj_shared_$@
SRC = $(wildcard *.cpp)
INC = $(filter-out lmpinstalledpkgs.h lmpgitversion.h,$(wildcard *.h))
OBJ = $(SRC:.cpp=.o)
SRCLIB = $(filter-out main.cpp,$(SRC))
OBJLIB = $(filter-out main.o,$(OBJ))
# Command-line options for mode: static (default), shared, or print
mode = static
objdir = $(OBJDIR)
ifeq ($(mode),shared)
objdir = $(OBJSHDIR)
endif
# Package variables
# PACKAGE = standard packages
# PACKUSER = user packagse
# PACKLIB = all packages that require an additional lib
# should be PACKSYS + PACKINT + PACKEXT
# PACKSYS = subset that reqiure a common system library
# include MPIIO and LB b/c require full MPI, not just STUBS
# PACKINT = subset that require an internal (provided) library
# PACKEXT = subset that require an external (downloaded) library
PACKAGE = asphere body class2 colloid compress coreshell dipole gpu \
granular kim kokkos kspace latte manybody mc message misc \
mliap molecule mpiio mscg opt peri plugin poems \
python qeq replica rigid shock snap spin srd voronoi
PACKUSER = user-adios user-atc user-awpmd user-bocs user-cgdna user-cgsdk user-colvars \
user-diffraction user-dpd user-drude user-eff user-fep user-h5md \
user-intel user-lb user-manifold user-meamc user-mesodpd user-mesont \
user-mgpt user-misc user-mofff user-molfile \
user-netcdf user-omp user-phonon user-pace user-plumed user-ptm user-qmmm \
user-qtb user-quip user-rann user-reaction user-reaxc user-scafacos user-smd user-smtbq \
user-sdpd user-sph user-tally user-uef user-vtk user-yaff
PACKLIB = compress gpu kim kokkos latte message mpiio mscg poems \
python voronoi \
user-adios user-atc user-awpmd user-colvars user-h5md user-lb user-molfile \
user-netcdf user-plumed user-qmmm user-quip user-scafacos \
user-smd user-vtk user-mesont user-pace
PACKSYS = compress mpiio python user-lb
PACKINT = gpu kokkos message poems user-atc user-awpmd user-colvars user-mesont
PACKEXT = kim latte mscg voronoi \
user-adios user-h5md user-molfile user-netcdf user-pace user-plumed \
user-qmmm user-quip user-smd user-vtk
PACKALL = $(PACKAGE) $(PACKUSER)
# Helper GNU make function for conversion to upper case without using shell commands
uppercase_TABLE:=a,A b,B c,C d,D e,E f,F g,G h,H i,I j,J k,K l,L m,M n,N o,O p,P q,Q r,R s,S t,T u,U v,V w,W x,X y,Y z,Z
uppercase_internal=$(if $1,$$(subst $(firstword $1),$(call uppercase_internal,$(wordlist 2,$(words $1),$1),$2)),$2)
uppercase=$(eval uppercase_RESULT:=$(call uppercase_internal,$(uppercase_TABLE),$1))$(uppercase_RESULT)
PACKAGEUC = $(call uppercase,$(PACKAGE))
PACKUSERUC = $(call uppercase,$(PACKUSER))
YESDIR = $(call uppercase,$(@:yes-%=%))
NODIR = $(call uppercase,$(@:no-%=%))
LIBDIR = $(@:lib-%=%)
LIBUSERDIR = $(@:lib-user-%=%)
# List of all targets
help:
@echo ''
@echo 'make clean-all delete all object files'
@echo 'make clean-machine delete object files for one machine'
@echo 'make mpi-stubs build dummy MPI library in STUBS'
@echo 'make install-python install LAMMPS wrapper in Python'
@echo 'make tar create lmp_src.tar.gz for src dir and packages'
@echo ''
@echo 'make package list available packages and their dependencies'
@echo 'make package-status (ps) status of all packages'
@echo 'make package-installed (pi) list of installed packages'
@echo 'make yes-package install a single pgk in src dir'
@echo 'make no-package remove a single pkg from src dir'
@echo 'make yes-all install all pgks in src dir'
@echo 'make no-all remove all pkgs from src dir'
@echo 'make yes-standard (yes-std) install all standard pkgs'
@echo 'make no-standard (no-std) remove all standard pkgs'
@echo 'make yes-user install all user pkgs'
@echo 'make no-user remove all user pkgs'
@echo 'make yes-lib install all pkgs with libs (included or ext)'
@echo 'make no-lib remove all pkgs with libs (included or ext)'
@echo 'make yes-ext install all pkgs with external libs'
@echo 'make no-ext remove all pkgs with external libs'
@echo ''
@echo 'make package-update (pu) replace src files with updated package files'
@echo 'make package-overwrite replace package files with src files'
@echo 'make package-diff (pd) diff src files against package files'
@echo ''
@echo 'make lib-package help for download/build/install a package library'
@echo 'make lib-package args="..." download/build/install a package library'
@echo 'make purge purge obsolete copies of source files'
@echo ''
@echo 'make machine build LAMMPS for machine with static library'
@echo 'make mode=static machine same as above'
@echo 'make mode=shared machine build LAMMPS for machine with shared library'
@echo 'make mode=print machine print compiler/linker flags'
@echo ''
@echo 'machine is one of these from src/MAKE:'
@echo ''
@files="`ls MAKE/Makefile.*`"; \
for file in $$files; do head -1 $$file; done
@echo ''
@echo '... or one of these from src/MAKE/OPTIONS:'
@echo ''
@files="`ls MAKE/OPTIONS/Makefile.*`"; \
for file in $$files; do head -1 $$file; done
@echo ''
@echo '... or one of these from src/MAKE/MACHINES:'
@echo ''
@files="`ls MAKE/MACHINES/Makefile.*`"; \
for file in $$files; do head -1 $$file; done
@echo ''
@echo '... or one of these from src/MAKE/MINE:'
@echo ''
@files="`ls MAKE/MINE/Makefile.* 2>/dev/null`"; \
for file in $$files; do head -1 $$file; done
@echo ''
lmpinstalledpkgs.h: $(SRC) $(INC)
@echo '#ifndef LMP_INSTALLED_PKGS_H' > ${TMPNAME}.lmpinstalled
@echo '#define LMP_INSTALLED_PKGS_H' >> ${TMPNAME}.lmpinstalled
@echo 'const char * LAMMPS_NS::LAMMPS::installed_packages[] = {' >> ${TMPNAME}.lmpinstalled
@for p in $(PACKAGEUC) $(PACKUSERUC); do info=$$($(SHELL) Package.sh $$p installed); \
[ -n "$$info" ] && echo "\"$$info\"" | sed -e 's/".*package \(.*\)"/"\1",/' >> ${TMPNAME}.lmpinstalled || :; done
@echo ' NULL };' >> ${TMPNAME}.lmpinstalled
@echo '#endif' >> ${TMPNAME}.lmpinstalled
@if [ -f lmpinstalledpkgs.h ]; \
then test "`diff --brief ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h`" != "" && \
mv ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h || rm ${TMPNAME}.lmpinstalled ; \
else mv ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h ; fi
gitversion:
@echo 'Gathering git version information'
@echo '#ifndef LMP_GIT_VERSION_H' > ${TMPNAME}.lmpgitversion
@echo '#define LMP_GIT_VERSION_H' >> ${TMPNAME}.lmpgitversion
@if (type git && test -e ../.git ) >> /dev/null 2>> /dev/null ; then \
git='true'; \
commit=$$(git rev-parse HEAD); \
branch=$$(git rev-parse --abbrev-ref HEAD); \
describe=$$(git describe --dirty=-modified); \
else \
git='false' ; \
commit='(unknown)' ; \
branch='(unknown)' ; \
describe='(unknown)' ; \
fi ; \
echo "const bool LAMMPS_NS::LAMMPS::has_git_info = $${git};" >> ${TMPNAME}.lmpgitversion ; \
echo "const char LAMMPS_NS::LAMMPS::git_commit[] = \"$${commit}\";" >> ${TMPNAME}.lmpgitversion ; \
echo "const char LAMMPS_NS::LAMMPS::git_branch[] = \"$${branch}\";" >> ${TMPNAME}.lmpgitversion ; \
echo "const char LAMMPS_NS::LAMMPS::git_descriptor[] = \"$${describe}\";" >> ${TMPNAME}.lmpgitversion
@echo '#endif' >> ${TMPNAME}.lmpgitversion
@if [ -f lmpgitversion.h ]; \
then test "`diff --brief ${TMPNAME}.lmpgitversion lmpgitversion.h`" != "" && \
mv ${TMPNAME}.lmpgitversion lmpgitversion.h || rm ${TMPNAME}.lmpgitversion ; \
else mv ${TMPNAME}.lmpgitversion lmpgitversion.h ; fi
# Build LAMMPS in one of 2 modes
# static = static compile in Obj_machine (default)
# shared = shared compile in Obj_shared_machine
.DEFAULT:
@if [ $@ = "serial" ]; \
then cd STUBS; $(MAKE); cd ..; fi
@test -f MAKE/Makefile.$@ -o -f MAKE/OPTIONS/Makefile.$@ -o \
-f MAKE/MACHINES/Makefile.$@ -o -f MAKE/MINE/Makefile.$@
@if [ ! -d $(objdir) ]; then mkdir $(objdir); fi
@echo 'Gathering installed package information (may take a little while)'
@$(SHELL) Make.sh style
@$(SHELL) Make.sh packages
@$(MAKE) $(MFLAGS) lmpinstalledpkgs.h gitversion
@echo 'Compiling LAMMPS for machine $@'
@if [ -f MAKE/MACHINES/Makefile.$@ ]; \
then cp MAKE/MACHINES/Makefile.$@ $(objdir)/Makefile; fi
@if [ -f MAKE/OPTIONS/Makefile.$@ ]; \
then cp MAKE/OPTIONS/Makefile.$@ $(objdir)/Makefile; fi
@if [ -f MAKE/Makefile.$@ ]; \
then cp MAKE/Makefile.$@ $(objdir)/Makefile; fi
@if [ -f MAKE/MINE/Makefile.$@ ]; \
then cp MAKE/MINE/Makefile.$@ $(objdir)/Makefile; fi
@if [ ! -e Makefile.package ]; \
then cp Makefile.package.empty Makefile.package; fi
@if [ ! -e Makefile.package.settings ]; \
then cp Makefile.package.settings.empty Makefile.package.settings; fi
@cp Makefile.package Makefile.package.settings $(objdir)
@cd $(objdir); rm -f .depend; \
$(MAKE) $(MFLAGS) "SRC = $(SRC)" "INC = $(INC)" depend || :
@rm -f $(ARLINK) $(SHLINK) $(EXE)
ifeq ($(mode),static)
@cd $(objdir); \
$(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" "SHFLAGS =" \
"LMPLIB = $(ARLIB)" "ARLIB = $(ARLIB)" "SHLIB = $(SHLIB)" \
"LMPLINK = $(LMPLINK)" "EXE = ../$(EXE)" ../$(EXE)
@ln -s $(ARLIB) $(ARLINK)
endif
ifeq ($(mode),shared)
@cd $(objdir); \
$(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" \
"LMPLIB = $(SHLIB)" "ARLIB = $(ARLIB)" "SHLIB = $(SHLIB)" \
"LMPLINK = $(LMPLINK)" "EXE = ../$(EXE)" ../$(EXE)
@ln -s $(SHLIB) $(SHLINK)
endif
# backward compatibility
ifeq ($(mode),exe)
$(MAKE) $(MFLAGS) mode=static $@
endif
ifeq ($(mode),lib)
$(MAKE) $(MFLAGS) mode=static $@
endif
ifeq ($(mode),shexe)
$(MAKE) $(MFLAGS) mode=shared $@
endif
ifeq ($(mode),shlib)
$(MAKE) $(MFLAGS) mode=shared $@
endif
ifeq ($(mode),print)
@cd $(objdir); \
$(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" \
"EXE = ../$(ARLIB)" -f ../Makefile.print
endif
# Remove machine-specific object files
clean:
@echo 'make clean-all delete all object files'
@echo 'make clean-machine delete object files for one machine'
clean-all:
rm -rf Obj_*
clean-%:
@if [ $@ = "clean-serial" ]; \
then cd STUBS; $(MAKE) clean; cd ..; fi
rm -rf Obj_$(@:clean-%=%) Obj_shared_$(@:clean-%=%)
# Make MPI STUBS library
mpi-stubs:
@cd STUBS; $(MAKE) clean; $(MAKE)
# install LAMMPS shared lib and Python wrapper for Python usage
# include python package settings to automatically adapt name of
# the python interpreter. must purge build folder to not install
# unwanted outdated files.
sinclude ../lib/python/Makefile.lammps
install-python:
@rm -rf ../python/build
@$(PYTHON) ../python/install.py -v ../src/version.h \
-p ../python/lammps -l ../src/liblammps.so
# Create a tarball of src dir and packages
tar:
@cd STUBS; $(MAKE) clean
@cd ..; tar cvzf src/$(ROOT)_src.tar.gz \
src/Make* src/Package.sh src/Depend.sh src/Install.sh src/Fetch.sh \
src/MAKE src/DEPEND src/*.cpp src/*.h src/STUBS \
$(patsubst %,src/%,$(PACKAGEUC)) $(patsubst %,src/%,$(PACKUSERUC)) \
--exclude=*/.svn
@cd STUBS; $(MAKE)
@echo "Created $(ROOT)_src.tar.gz"
# Package management
package:
@echo 'Standard packages:' $(PACKAGE)
@echo ''
@echo 'User-contributed packages:' $(PACKUSER)
@echo ''
@echo 'Packages that need system libraries:' $(PACKSYS)
@echo ''
@echo 'Packages that need provided libraries:' $(PACKINT)
@echo ''
@echo 'Packages that need external libraries:' $(PACKEXT)
@echo ''
@echo 'make package list available packages'
@echo 'make package list available packages'
@echo 'make package-status (ps) status of all packages'
@echo 'make package-installed (pi) list of installed packages'
@echo 'make yes-package install a single pgk in src dir'
@echo 'make no-package remove a single pkg from src dir'
@echo 'make yes-all install all pgks in src dir'
@echo 'make no-all remove all pkgs from src dir'
@echo 'make yes-standard (yes-std) install all standard pkgs'
@echo 'make no-standard (no-std) remove all standard pkgs'
@echo 'make yes-user install all user pkgs'
@echo 'make no-user remove all user pkgs'
@echo 'make yes-lib install all pkgs with libs (included or ext)'
@echo 'make no-lib remove all pkgs with libs (included or ext)'
@echo 'make yes-ext install all pkgs with external libs'
@echo 'make no-ext remove all pkgs with external libs'
@echo ''
@echo 'make package-update (pu) replace src files with package files'
@echo 'make package-overwrite replace package files with src files'
@echo 'make package-diff (pd) diff src files against package file'
@echo ''
@echo 'make lib-package build and/or download a package library'
yes-all:
@for p in $(PACKALL); do $(MAKE) yes-$$p; done
no-all:
@for p in $(PACKALL); do $(MAKE) no-$$p; done
yes-standard yes-std:
@for p in $(PACKAGE); do $(MAKE) yes-$$p; done
no-standard no-std:
@for p in $(PACKAGE); do $(MAKE) no-$$p; done
yes-user:
@for p in $(PACKUSER); do $(MAKE) yes-$$p; done
no-user:
@for p in $(PACKUSER); do $(MAKE) no-$$p; done
yes-lib:
@for p in $(PACKLIB); do $(MAKE) yes-$$p; done
no-lib:
@for p in $(PACKLIB); do $(MAKE) no-$$p; done
yes-ext:
@for p in $(PACKEXT); do $(MAKE) yes-$$p; done
no-ext:
@for p in $(PACKEXT); do $(MAKE) no-$$p; done
yes-%:
@if [ ! -e Makefile.package ]; \
then cp Makefile.package.empty Makefile.package; fi
@if [ ! -e Makefile.package.settings ]; \
then cp Makefile.package.settings.empty Makefile.package.settings; fi
@if [ ! -e $(YESDIR) ]; then \
echo "Package $(YESDIR) does not exist"; exit 1; \
elif [ -e $(YESDIR)/Install.sh ]; then \
echo "Installing package $(@:yes-%=%)"; \
cd $(YESDIR); $(SHELL) Install.sh 1; cd ..; \
$(SHELL) Depend.sh $(YESDIR) 1; \
else \
echo "Installing package $(@:yes-%=%)"; \
cd $(YESDIR); $(SHELL) ../Install.sh 1; cd ..; \
$(SHELL) Depend.sh $(YESDIR) 1; \
fi;
@$(SHELL) Fetch.sh $(YESDIR)
no-%:
@if [ ! -e $(NODIR) ]; then \
echo "Package $(NODIR) does not exist"; exit 1; \
elif [ -e $(NODIR)/Install.sh ]; then \
echo "Uninstalling package $(@:no-%=%)"; \
cd $(NODIR); $(SHELL) Install.sh 0; cd ..; \
$(SHELL) Depend.sh $(NODIR) 0; \
else \
echo "Uninstalling package $(@:no-%=%)"; \
cd $(NODIR); $(SHELL) ../Install.sh 0; cd ..; \
$(SHELL) Depend.sh $(NODIR) 0; \
fi;
# download/build/install a package library
# update the timestamp on main.cpp to trigger a relink with "make machine"
lib-%:
@if [ -e ../lib/$(LIBDIR)/Install.py ]; then \
echo "Installing lib $(@:lib-%=%)"; \
( cd ../lib/$(LIBDIR); $(PYTHON) Install.py $(args) ); \
elif [ -e ../lib/$(LIBUSERDIR)/Install.py ]; then \
echo "Installing lib $(@:lib-user-%=%)"; \
( cd ../lib/$(LIBUSERDIR); $(PYTHON) Install.py $(args) ); \
else \
echo "Install script for lib $(@:lib-%=%) does not exist"; \
fi; touch main.cpp
# status = list src files that differ from package files
# installed = list of installed packages
# update = replace src files with newer package files
# overwrite = overwrite package files with newer src files
# diff = show differences between src and package files
# purge = delete obsolete and auto-generated package files
package-status ps:
@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p status; done
@echo ''
@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p status; done
package-installed pi:
@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p installed; done
@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p installed; done
package-update pu: purge
@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p update; done
@echo ''
@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p update; done
package-overwrite: purge
@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p overwrite; done
@echo ''
@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p overwrite; done
package-diff pd:
@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p diff; done
@echo ''
@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p diff; done
purge: Purge.list
@echo 'Purging obsolete and auto-generated source files'
@for f in `grep -v '#' Purge.list` ; \
do test -f $$f && rm $$f && echo $$f || : ; \
done

View File

@ -19,9 +19,9 @@
------------------------------------------------------------------------- */
#ifdef PAIR_CLASS
PairStyle(hdnnp,PairHDNNP)
// clang-format off
PairStyle(hdnnp,PairHDNNP);
// clang-format on
#else
#ifndef LMP_PAIR_HDNNP_H

1272
src/USER-RANN/pair_rann.cpp Normal file

File diff suppressed because it is too large Load Diff

165
src/USER-RANN/pair_rann.h Normal file
View File

@ -0,0 +1,165 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifdef PAIR_CLASS
// clang-format off
PairStyle(rann,PairRANN);
// clang-format on
#else
#ifndef LMP_PAIR_RANN
#define LMP_PAIR_RANN
#include "pair.h"
#include <vector>
#include <string>
namespace LAMMPS_NS {
namespace RANN {
//forward declarations
class Activation;
class Fingerprint;
}
class PairRANN : public Pair {
public:
//inherited functions
PairRANN(class LAMMPS *);
~PairRANN();
void compute(int, int);
void settings(int, char **);
void coeff(int, char **);
void init_style();
double init_one(int, int);
void init_list(int , NeighList *);
void errorf(const char*,int,const char*);
int factorial(int);
RANN::Fingerprint *create_fingerprint(const char *);
RANN::Activation *create_activation(const char *);
//global variables
int nelements; // # of elements (distinct from LAMMPS atom types since multiple atom types can be mapped to one element)
int nelementsp; // nelements+1
char **elements; // names of elements
char **elementsp; // names of elements with "all" appended as the last "element"
double *mass; // mass of each element
double cutmax; // max radial distance for neighbor lists
int *map; // mapping from atom types to elements
int *fingerprintcount; // static variable used in initialization
int *fingerprintlength; // # of input neurons defined by fingerprints of each element.
int *fingerprintperelement; // # of fingerprints for each element
bool doscreen;//screening is calculated if any defined fingerprint uses it
bool allscreen;//all fingerprints use screening so screened neighbors can be completely ignored
bool dospin;
int res;//Resolution of function tables for cubic interpolation.
int memguess;
double *screening_min;
double *screening_max;
bool **weightdefined;
bool **biasdefined;
int nmax1;
int nmax2;
int fmax;
int fnmax;
//memory actively written to during each compute:
double *xn,*yn,*zn,*Sik,*dSikx,*dSiky,*dSikz,*dSijkx,*dSijky,*dSijkz,*sx,*sy,*sz,**dSijkxc,**dSijkyc,**dSijkzc,*dfeaturesx,*dfeaturesy,*dfeaturesz,*features;
double *layer,*sum,*sum1,**dlayerx,**dlayery,**dlayerz,**dlayersumx,**dlayersumy,**dlayersumz;
double **dsx,**dsy,**dsz,**dssumx,**dssumy,**dssumz;
int *tn,*jl;
bool *Bij;
struct Simulation{
int *id;
bool forces;
bool spins;
double **x;
double **f;
double **s;
double box[3][3];
double origin[3];
double **features;
double **dfx;
double **dfy;
double **dfz;
double **dsx;
double **dsy;
double **dsz;
int *ilist,*numneigh,**firstneigh,*type,inum,gnum;
};
struct NNarchitecture{
int layers;
int *dimensions;//vector of length layers with entries for neurons per layer
double **Weights;
double **Biases;
int *activations;//unused
int maxlayer;//longest layer (for memory allocation)
};
Simulation *sims;
NNarchitecture *net;//array of networks, 1 for each element.
protected:
RANN::Activation ***activation;
RANN::Fingerprint ***fingerprints;
private:
//new functions
void allocate(const std::vector<std::string>);//called after reading element list, but before reading the rest of the potential
void read_file(char *);//read potential file
void read_atom_types(std::vector<std::string>,std::vector<std::string>,char*,int);
void read_mass(std::vector<std::string>,std::vector<std::string>,char*,int);
void read_fpe(std::vector<std::string>,std::vector<std::string>,char*,int);//fingerprints per element. Count total fingerprints defined for each 1st element in element combinations
void read_fingerprints(std::vector<std::string>,std::vector<std::string>,char*,int);
void read_fingerprint_constants(std::vector<std::string>,std::vector<std::string>,char*,int);
void read_network_layers(std::vector<std::string>,std::vector<std::string>,char*,int);//include input and output layer (hidden layers + 2)
void read_layer_size(std::vector<std::string>,std::vector<std::string>,char*,int);
void read_weight(std::vector<std::string>,std::vector<std::string>,FILE*,char*,int*);//weights should be formatted as properly shaped matrices
void read_bias(std::vector<std::string>,std::vector<std::string>,FILE*,char*,int*);//biases should be formatted as properly shaped vectors
void read_activation_functions(std::vector<std::string>,std::vector<std::string>,char*,int);
void read_screening(std::vector<std::string>,std::vector<std::string>,char*,int);
bool check_potential();//after finishing reading potential file
void propagateforward(double *,double **,double **,int,int);//called by compute to get force and energy
void propagateforwardspin(double *,double **,double **,double**,int,int);//called by compute to get force and energy
void screen(int,int,int);
void cull_neighbor_list(int *,int,int);
void screen_neighbor_list(int *,int,int);
};
}
#endif
#endif

View File

@ -0,0 +1,73 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifndef LMP_RANN_ACTIVATION_H
#define LMP_RANN_ACTIVATION_H
namespace LAMMPS_NS {
namespace RANN {
class Activation {
public:
Activation(class PairRANN *);
virtual ~Activation();
virtual double activation_function(double);
virtual double dactivation_function(double);
virtual double ddactivation_function(double);
bool empty;
const char *style;
};
Activation::Activation(PairRANN *_pair) {
empty = true;
style = "empty";
}
Activation::~Activation() {
}
//default is linear activation (no change).
double Activation::activation_function(double A) {
return A;
}
double Activation::dactivation_function(double A) {
return 1.0;
}
double Activation::ddactivation_function(double A) {
return 0.0;
}
}
}
#endif /* RANN_ACTIVATION_H_ */

View File

@ -0,0 +1,69 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifndef LMP_RANN_ACTIVATION_LINEAR_H
#define LMP_RANN_ACTIVATION_LINEAR_H
#include "rann_activation.h"
namespace LAMMPS_NS {
namespace RANN {
class Activation_linear : public Activation {
public:
Activation_linear(class PairRANN *);
double activation_function(double);
double dactivation_function(double);
double ddactivation_function(double);
};
Activation_linear::Activation_linear(PairRANN *_pair) : Activation(_pair) {
empty = false;
style = "linear";
}
double Activation_linear::activation_function(double A)
{
return A;
}
double Activation_linear::dactivation_function(double A)
{
return 1.0;
}
double Activation_linear::ddactivation_function(double) {
return 0.0;
}
}
}
#endif /* ACTIVATION_LINEAR_H_ */

View File

@ -0,0 +1,70 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifndef LMP_RANN_ACTIVATION_SIGI_H
#define LMP_RANN_ACTIVATION_SIGI_H
#include "rann_activation.h"
namespace LAMMPS_NS {
namespace RANN {
class Activation_sigI : public Activation {
public:
Activation_sigI(class PairRANN *);
double activation_function(double);
double dactivation_function(double);
double ddactivation_function(double);
};
Activation_sigI::Activation_sigI(PairRANN *_pair) : Activation(_pair) {
empty = false;
style = "sigI";
}
double Activation_sigI::activation_function(double in) {
if (in>34)return in;
return 0.1*in + 0.9*log(exp(in) + 1);
}
double Activation_sigI::dactivation_function(double in) {
if (in>34)return 1;
return 0.1 + 0.9/(exp(in)+1)*exp(in);
}
double Activation_sigI::ddactivation_function(double in) {
if (in>34)return 0;
return 0.9*exp(in)/(exp(in)+1)/(exp(in)+1);;
}
}
}
#endif /* ACTIVATION_SIGI_H_ */

View File

@ -0,0 +1,78 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#include "rann_fingerprint.h"
using namespace LAMMPS_NS::RANN;
Fingerprint::Fingerprint(PairRANN *_pair)
{
spin = false;
screen = false;
empty = true;
fullydefined = false;
n_body_type = 0;
style = "empty";
pair = _pair;
}
// Smooth cutoff, goes from 1 to zero over the interval rc-dr to rc.
// Same as MEAM uses. Used by generateradialtable and generatexpcuttable.
double Fingerprint::cutofffunction(double r, double rc, double dr)
{
double out;
if (r < (rc - dr))
out = 1;
else if (r > rc)
out = 0;
else {
out = 1 - (rc - r) / dr;
out *= out;
out *= out;
out = 1 - out;
out *= out;
}
return out;
}
void Fingerprint::generate_rinvssqrttable()
{
int buf = 5;
int m;
double r1;
double cutmax = pair->cutmax;
int res = pair->res;
rinvsqrttable = new double[res + buf];
for (m = 0; m < (res + buf); m++) {
r1 = cutmax * cutmax * (double) (m) / (double) (res);
rinvsqrttable[m] = 1 / sqrt(r1);
}
}

View File

@ -0,0 +1,96 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
----------------*/
#ifndef LMP_RANN_FINGERPRINT_H
#define LMP_RANN_FINGERPRINT_H
#include "pair_rann.h"
namespace LAMMPS_NS {
namespace RANN {
class Fingerprint {
public:
Fingerprint(PairRANN *);
virtual ~Fingerprint() {}
virtual bool parse_values(std::string, std::vector<std::string>) { return false; }
virtual void write_values(FILE *) {}
virtual void init(int *, int) {}
virtual void allocate() {}
void init_screen(int);
//no screen,no spin
virtual void compute_fingerprint(double *, double *, double *, double *, int, int, double *,
double *, double *, int *, int, int *)
{
}
//screen
virtual void compute_fingerprint(double *, double *, double *, double *, double *, double *,
double *, double *, double *, double *, double *, bool *, int,
int, double *, double *, double *, int *, int, int *)
{
}
//spin
virtual void compute_fingerprint(double *, double *, double *, double *, double *, double *,
double *, int, int, double *, double *, double *, int *, int,
int *)
{
}
//spin,screen
virtual void compute_fingerprint(double *, double *, double *, double *, double *, double *,
double *, double *, double *, double *, double *, double *,
double *, double *, bool *, int, int, double *, double *,
double *, int *, int, int *)
{
}
virtual int get_length(){return 0;};
virtual double cutofffunction(double, double, double);
virtual void generate_rinvssqrttable();
bool spin;
bool screen;
int n_body_type; //i-j vs. i-j-k vs. i-j-k-l, etc.
bool empty;
bool fullydefined;
int startingneuron;
int id; //based on ordering of fingerprints listed for i-j in potential file
const char *style;
int *atomtypes;
double *rinvsqrttable;
double rc;
PairRANN *pair;
};
} // namespace RANN
} // namespace LAMMPS_NS
#endif /* RANN_FINGERPRINT_H_ */

View File

@ -0,0 +1,809 @@
// clang-format off
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#include "rann_fingerprint_bond.h"
using namespace LAMMPS_NS::RANN;
Fingerprint_bond::Fingerprint_bond(PairRANN *_pair) : Fingerprint(_pair)
{
n_body_type = 3;
dr = 0;
re = 0;
rc = 0;
alpha_k = new double [1];
alpha_k[0] = -1;
kmax = 0;
mlength = 0;
id = -1;
style = "bond";
atomtypes = new int [n_body_type];
empty = true;
_pair->allscreen = false;
}
Fingerprint_bond::~Fingerprint_bond() {
delete [] alpha_k;
delete [] atomtypes;
delete [] expcuttable;
delete [] dfctable;
for (int i=0;i<(mlength*(mlength+1))>>1;i++) {
delete [] coeff[i];
delete [] coeffx[i];
delete [] coeffy[i];
delete [] coeffz[i];
delete [] Mf[i];
}
delete [] coeff;
delete [] coeffx;
delete [] coeffy;
delete [] coeffz;
delete [] Mf;
delete [] rinvsqrttable;
}
bool Fingerprint_bond::parse_values(std::string constant,std::vector<std::string> line1) {
int nwords,l;
nwords=line1.size();
if (constant.compare("re")==0) {
re = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("rc")==0) {
rc = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("alphak")==0) {
delete [] alpha_k;
alpha_k = new double [nwords];
for (l=0;l<nwords;l++) {
alpha_k[l]=strtod(line1[l].c_str(),NULL);
}
}
else if (constant.compare("dr")==0) {
dr = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("k")==0) {
kmax = strtol(line1[0].c_str(),NULL,10);
}
else if (constant.compare("m")==0) {
mlength = strtol(line1[0].c_str(),NULL,10);
}
else pair->errorf(FLERR,"Undefined value for bond power");
if (re!=0.0 && rc!=0.0 && alpha_k[0]!=-1 && dr!=0.0 && mlength!=0 && kmax!=0)return true;
return false;
}
void Fingerprint_bond::write_values(FILE *fid) {
int i;
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:re:\n",style,id);
fprintf(fid,"%f\n",re);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:rc:\n",style,id);
fprintf(fid,"%f\n",rc);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:alphak:\n",style,id);
for (i=0;i<kmax;i++) {
fprintf(fid,"%f ",alpha_k[i]);
}
fprintf(fid,"\n");
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:dr:\n",style,id);
fprintf(fid,"%f\n",dr);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:k:\n",style,id);
fprintf(fid,"%d\n",kmax);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:m:\n",style,id);
fprintf(fid,"%d\n",mlength);
}
void Fingerprint_bond::init(int *i,int _id) {
for (int j=0;j<n_body_type;j++) {atomtypes[j] = i[j];}
re = 0;
rc = 0;
mlength = 0;
kmax = 0;
alpha_k = new double [1];
alpha_k[0]=-1;
empty = false;
id = _id;
}
//number of neurons defined by this fingerprint
int Fingerprint_bond::get_length() {
return mlength*kmax;
}
void Fingerprint_bond::allocate() {
generate_exp_cut_table();
generate_coefficients();
generate_rinvssqrttable();
}
//Generate table of complex functions for quick reference during compute. Used by do3bodyfeatureset_singleneighborloop and do3bodyfeatureset_doubleneighborloop.
void Fingerprint_bond::generate_exp_cut_table() {
int m,n;
double r1;
int buf = 5;
int res = pair->res;
double cutmax = pair->cutmax;
expcuttable = new double [(res+buf)*(kmax)];
dfctable = new double [res+buf];
for (m=0;m<(res+buf);m++) {
r1 = cutmax*cutmax*(double)(m)/(double)(res);
for (n=0;n<(kmax);n++) {
expcuttable[n+m*(kmax)] = exp(-alpha_k[n]/re*sqrt(r1))*cutofffunction(sqrt(r1),rc,dr);
}
if (sqrt(r1)>=rc || sqrt(r1) <= (rc-dr)) {
dfctable[m]=0;
}
else{
dfctable[m]=-8*pow(1-(rc-sqrt(r1))/dr,3)/dr/(1-pow(1-(rc-sqrt(r1))/dr,4));
}
}
}
//Generate table of complex functions for quick reference during compute. Used by do3bodyfeatureset_singleneighborloop.
void Fingerprint_bond::generate_coefficients() { //calculates multinomial coefficient for each term
int p,mb,mc;
int n,p1,i1;
mb = mlength;
mc=(mb*(mb+1))>>1;
coeff = new int *[mc];
coeffx = new int *[mc];
coeffy = new int *[mc];
coeffz = new int *[mc];
for (p=0;p<mc;p++) {
coeff[p]=new int [mb];
coeffx[p]=new int [mb];
coeffy[p]=new int [mb];
coeffz[p]=new int [mb];
}
Mf = new int*[mc];
int *M = new int[mlength+1];
for (p=0;p<mlength+1;p++) {
M[p]=0;
}
for (p1=0;p1<mc;p1++) {
Mf[p1] = new int[mlength+1];
for (p=0;p<mlength+1;p++) {
Mf[p1][p]=0;
}
}
M[0] = 2;
Mf[0][0] = 2;
n = 1;
int m1 = 1;
bool go = true;
bool broke = false;
while (go) {
broke = false;
for (i1=0;i1<mlength-1;i1++) {
if (M[i1+1] == 0) {
M[i1+1]=M[i1+1]+1;
for (p1=0;p1<mlength+1;p1++) {
Mf[n][p1] = M[p1];
}
n = n+1;
broke = true;
break;
}
}
if (m1<mlength && !broke) {
M[m1]=M[m1]+1;
for (p1=m1+1;p1<mlength+1;p1++) {
M[p1]=0;
}
for (p1=0;p1<mlength+1;p1++) {
Mf[n][p1]=M[p1];
}
n=n+1;
broke = true;
m1 = m1+1;
}
if (!broke) {
go = false;
}
}
for (p=0;p<mb;p++) {
for (p1=0;p1<mc;p1++) {
if (p==0) {
coeffx[p1][p]=0;
coeffy[p1][p]=0;
coeffz[p1][p]=0;
}
else{
coeffx[p1][p]=coeffx[p1][p-1];
if (Mf[p1][p]==0) {
coeffx[p1][p]++;
}
coeffy[p1][p]=coeffy[p1][p-1];
if (Mf[p1][p]==1) {
coeffy[p1][p]++;
}
coeffz[p1][p]=coeffz[p1][p-1];
if (Mf[p1][p]==2) {
coeffz[p1][p]++;
}
}
coeff[p1][p] = pair->factorial(p)/pair->factorial(coeffx[p1][p])/pair->factorial(coeffy[p1][p])/pair->factorial(coeffz[p1][p]);
}
}
}
//Called by getproperties. Gets 3-body features and dfeatures
void Fingerprint_bond::compute_fingerprint(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz, int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i;
int *ilist,*numneigh;
PairRANN::Simulation *sim = &pair->sims[sid];
ilist = sim->ilist;
numneigh = sim->numneigh;
i = ilist[ii];
//select the more efficient algorithm for this particular potential and environment.
if (jnum*2>(mlength+1)*mlength*20) {
do3bodyfeatureset_singleneighborloop(features,dfeaturesx,dfeaturesy,dfeaturesz,ii,sid,xn,yn,zn,tn,jnum,jl);
}
else{
do3bodyfeatureset_doubleneighborloop(features,dfeaturesx,dfeaturesy,dfeaturesz,ii,sid,xn,yn,zn,tn,jnum,jl);
}
}
//Called by do3bodyfeatureset. Algorithm for high neighbor numbers and small series of bond angle powers
void Fingerprint_bond::do3bodyfeatureset_singleneighborloop(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i,j,jj,itype,jtype,kk,m,n,mcount,a,a1,a2,ai;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
int count=0;
PairRANN::Simulation *sim = &pair->sims[sid];
int *type = sim->type;
double cutmax = pair->cutmax;
int res = pair->res;
double cutinv2 = 1/cutmax/cutmax;
ilist = sim->ilist;
int nelements=pair->nelements;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double expr[jnum][kmax+12];
int p = kmax;
int countmb=((mlength)*(mlength+1))>>1;
// calculate interpolation expr, rinvs and dfc, for each neighbor
for (jj = 0; jj < jnum; jj++) {
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype && atomtypes[2] != nelements && atomtypes[2] != jtype) {
expr[jj][0]=0;
continue;
}
delx = xn[jj];
dely = yn[jj];
delz = zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq>rc*rc) {
expr[jj][0]=0;
continue;
}
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
r1 = r1-trunc(r1);
double *p0 = &expcuttable[(m1-1)*kmax];
double *p1 = &expcuttable[m1*kmax];
double *p2 = &expcuttable[(m1+1)*kmax];
double *p3 = &expcuttable[(m1+2)*kmax];
for (kk=0;kk<kmax;kk++) {
expr[jj][kk] = p1[kk]+0.5*r1*(p2[kk]-p0[kk]+r1*(2.0*p0[kk]-5.0*p1[kk]+4.0*p2[kk]-p3[kk]+r1*(3.0*(p1[kk]-p2[kk])+p3[kk]-p0[kk])));
}
double* q = &dfctable[m1-1];
double* ri = &rinvsqrttable[m1-1];
double dfc = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
double rinvs = ri[1] + 0.5 * r1*(ri[2] - ri[0] + r1*(2.0*ri[0] - 5.0*ri[1] + 4.0*ri[2] - ri[3] + r1*(3.0*(ri[1] - ri[2]) + ri[3] - ri[0])));
expr[jj][p]=delx*rinvs;
expr[jj][p+1]=dely*rinvs;
expr[jj][p+2]=delz*rinvs;
//Hack to avoid nan when x y or z component of radial vector is exactly 0. Shouldn't affect accuracy.
if (expr[jj][p]*expr[jj][p]<0.000000000001) {
expr[jj][p] = 0.000001;
}
if (expr[jj][p+1]*expr[jj][p+1]<0.000000000001) {
expr[jj][p+1] = 0.000001;
}
if (expr[jj][p+2]*expr[jj][p+2]<0.000000000001) {
expr[jj][p+2] = 0.000001;
}
expr[jj][p+3] = -dfc*expr[jj][p];
expr[jj][p+4] = rinvs/expr[jj][p];
expr[jj][p+5] = rinvs*expr[jj][p];
expr[jj][p+6] = -dfc*expr[jj][p+1];
expr[jj][p+7] = rinvs/expr[jj][p+1];
expr[jj][p+8] = rinvs*expr[jj][p+1];
expr[jj][p+9] = -dfc*expr[jj][p+2];
expr[jj][p+10] = rinvs/expr[jj][p+2];
expr[jj][p+11] = rinvs*expr[jj][p+2];
}
int kb = kmax;
int mb = mlength;
count = startingneuron;
double Bb[mb];
double dBbx;
double dBby;
double dBbz;
double yprod;
for (mcount=0;mcount<countmb;mcount++) {
int *M = Mf[mcount];
int *_coeffx = coeffx[mcount];
int *_coeffy = coeffy[mcount];
int *_coeffz = coeffz[mcount];
int *_coeff = coeff[mcount];
a = mb+1;
for (a1=0;a1<mb;a1++) {
if (Mf[mcount][a1+1]==0) {
a = a1;
break;
}
}
for (n=0;n<kb;n++) {
for (a1=0;a1<mb;a1++) {
Bb[a1]=0;
}
ai = n;
double y1 = alpha_k[ai]/re;
//loop over jtype to get Bb
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
double yprod = expr[jj][ai];
double *y4 = &expr[jj][p];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
for (a2=a;a2<mb;a2++) {
Bb[a2]=Bb[a2]+yprod;
yprod *= y4[M[a2+1]];
}
}
if (atomtypes[1]!=atomtypes[2]) {//Bb!=Bg
double Bg[mb];
for (a1=0;a1<mb;a1++) {
Bg[a1]=0;
}
ai = n;
double y1 = alpha_k[ai]/re;
//loop over ktype to get Bg
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[2] != nelements && atomtypes[2] != jtype) {
continue;
}
double yprod = expr[jj][ai];
double *y4 = &expr[jj][p];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
for (a2=a;a2<mb;a2++) {
Bg[a2]=Bg[a2]+yprod;
yprod *= y4[M[a2+1]];
}
}
double B1;
//loop over ktype to get dBg*Bb
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[2] != nelements && atomtypes[2] != jtype) {
continue;
}
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = Bb[a2]*_coeff[a2]*yprod;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
yprod *= y4[M[a2+1]];
ai++;
}
}
//loop over jtype to get dBb*Bg
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = Bg[a2]*_coeff[a2]*yprod;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
yprod *= y4[M[a2+1]];
ai++;
}
}
//central atom derivative
for (a2=a;a2<mb;a2++) {
ai = n*(mb)+a2+count+jnum*f;
features[ai-jnum*f] += Bb[a2]*Bg[a2]*_coeff[a2];
}
}
else{//Bb=Bg
double B1;
//loop over jtype to get 2*Bb*dBb
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = 2*Bb[a2]*_coeff[a2]*yprod;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
yprod *= y4[M[a2+1]];
ai++;
}
}
//central atom derivative
for (a2=a;a2<mb;a2++) {
ai = n*(mb)+a2+count+jnum*f;
features[ai-jnum*f] += Bb[a2]*Bb[a2]*_coeff[a2];
}
}
}
}
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
count = startingneuron;
for (n=0;n<kb;n++) {
for (m=0;m<mb;m++) {
dfeaturesx[jnum*f+count]-=dfeaturesx[jj*f+count];
dfeaturesy[jnum*f+count]-=dfeaturesy[jj*f+count];
dfeaturesz[jnum*f+count]-=dfeaturesz[jj*f+count];
count++;
}
}
}
}
//Called by do3bodyfeatureset. Algorithm for low neighbor numbers and large series of bond angle powers
void Fingerprint_bond::do3bodyfeatureset_doubleneighborloop(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,int ii, int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i,j,jj,itype,jtype,ktype,kk,m,n;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
int jtypes = atomtypes[1];
int ktypes = atomtypes[2];
int count=0;
PairRANN::Simulation *sim = &pair->sims[sid];
double **x = sim->x;
int *type = sim->type;
int nelements = pair->nelements;
int res = pair->res;
double cutmax = pair->cutmax;
double cutinv2 = 1/cutmax/cutmax;
ilist = sim->ilist;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double expr[jnum][kmax];
double y[jnum][3];
double ri[jnum];
double dfc[jnum];
int kb = kmax;
int mb = mlength;
double c41[kmax];
double c51[kmax];
double c61[kmax];
double ct[kmax];
for (jj = 0; jj < jnum; jj++) {
jtype = tn[jj];
if (jtypes != nelements && jtypes != jtype && ktypes != nelements && ktypes != jtype) {
expr[jj][0]=0;
continue;
}
delx = xn[jj];
dely = yn[jj];
delz = zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq>rc*rc) {
expr[jj][0]=0;
continue;
}
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
if (!(m1>=1 && m1 <= res))pair->errorf(FLERR,"Neighbor list is invalid.");//usually results from nan somewhere.
r1 = r1-trunc(r1);
double *p0 = &expcuttable[(m1-1)*kmax];
double *p1 = &expcuttable[m1*kmax];
double *p2 = &expcuttable[(m1+1)*kmax];
double *p3 = &expcuttable[(m1+2)*kmax];
for (kk=0;kk<kmax;kk++) {
expr[jj][kk] = p1[kk]+0.5*r1*(p2[kk]-p0[kk]+r1*(2.0*p0[kk]-5.0*p1[kk]+4.0*p2[kk]-p3[kk]+r1*(3.0*(p1[kk]-p2[kk])+p3[kk]-p0[kk])));
}
double* q = &dfctable[m1-1];
double* r2 = &rinvsqrttable[m1-1];
dfc[jj] = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
ri[jj] = r2[1] + 0.5 * r1*(r2[2] - r2[0] + r1*(2.0*r2[0] - 5.0*r2[1] + 4.0*r2[2] - r2[3] + r1*(3.0*(r2[1] - r2[2]) + r2[3] - r2[0])));
y[jj][0]=delx*ri[jj];
y[jj][1]=dely*ri[jj];
y[jj][2]=delz*ri[jj];
}
for (jj = 0; jj < jnum; jj++) {
if (expr[jj][0]==0)continue;
jtype = tn[jj];
if (jtypes != nelements && jtypes != jtype) {
continue;
}
for (n = 0;n<kmax;n++) {
ct[n] = 2*alpha_k[n]/re;
c41[n]=(-ct[n]+2*dfc[jj])*y[jj][0];
c51[n]=(-ct[n]+2*dfc[jj])*y[jj][1];
c61[n]= (-ct[n]+2*dfc[jj])*y[jj][2];
}
if (jtypes==ktypes) {
for (kk=jj+1;kk< jnum; kk++) {
if (expr[kk][0]==0)continue;
ktype = tn[kk];
if (ktypes != nelements && ktypes != ktype) {
continue;
}
count = startingneuron;
double dot = (y[jj][0]*y[kk][0]+y[jj][1]*y[kk][1]+y[jj][2]*y[kk][2]);
double c1 = 2*ri[jj]*(y[kk][0]-dot*y[jj][0]);
double c2 = 2*ri[jj]*(y[kk][1]-dot*y[jj][1]);
double c3 = 2*ri[jj]*(y[kk][2]-dot*y[jj][2]);
double c10 = 2*ri[kk]*(y[jj][0]-dot*y[kk][0]);
double c11 = 2*ri[kk]*(y[jj][1]-dot*y[kk][1]);
double c12 = 2*ri[kk]*(y[jj][2]-dot*y[kk][2]);
//alternate formulation:
// double c1 = 2*ri[jj]*y[kk][0]*(1-y[jj][0]*y[jj][0]);
// double c2 = 2*ri[jj]*y[kk][1]*(1-y[jj][1]*y[jj][1]);
// double c3 = 2*ri[jj]*y[kk][2]*(1-y[jj][2]*y[jj][2]);
// double c10 = 2*ri[kk]*y[jj][0]*(1-y[kk][0]*y[kk][0]);
// double c11 = 2*ri[kk]*y[jj][1]*(1-y[kk][1]*y[kk][1]);
// double c12 = 2*ri[kk]*y[jj][2]*(1-y[kk][2]*y[kk][2]);
for (n=0;n<kb;n++) {
double dot1=expr[jj][n]*expr[kk][n];
double c4 = c41[n];
double c5 = c51[n];
double c6 = c61[n];
double ct2 = -ct[n]+2*dfc[kk];
double c42 = ct2*y[kk][0];
double c52 = ct2*y[kk][1];
double c62 = ct2*y[kk][2];
//m=0
features[count]+=2*dot1;
dfeaturesx[jj*f+count]+=dot1*c4;
dfeaturesy[jj*f+count]+=dot1*c5;
dfeaturesz[jj*f+count]+=dot1*c6;
dfeaturesx[kk*f+count]+=dot1*c42;
dfeaturesy[kk*f+count]+=dot1*c52;
dfeaturesz[kk*f+count]+=dot1*c62;
c4*=dot;
c5*=dot;
c6*=dot;
c42*=dot;
c52*=dot;
c62*=dot;
count++;
for (m=1;m<mb;m++) {
double c7 = dot1*(m*c1+c4);
double c8 = dot1*(m*c2+c5);
double c9 = dot1*(m*c3+c6);
dfeaturesx[jj*f+count]+=c7;
dfeaturesy[jj*f+count]+=c8;
dfeaturesz[jj*f+count]+=c9;
dfeaturesx[kk*f+count]+=dot1*(m*c10+c42);
dfeaturesy[kk*f+count]+=dot1*(m*c11+c52);
dfeaturesz[kk*f+count]+=dot1*(m*c12+c62);
dot1*=dot;
features[count++]+=2*dot1;
}
}
}
kk=jj;
if (ktypes == nelements || ktypes == jtype) {
count = startingneuron;
double dot = (y[jj][0]*y[kk][0]+y[jj][1]*y[kk][1]+y[jj][2]*y[kk][2]);
double c1 = 2*ri[jj]*(y[kk][0]-dot*y[jj][0]);
double c2 = 2*ri[jj]*(y[kk][1]-dot*y[jj][1]);
double c3 = 2*ri[jj]*(y[kk][2]-dot*y[jj][2]);
//alternate formulation:
// double c1 = 2*ri[jj]*y[kk][0]*(1-y[jj][0]*y[jj][0]);
// double c2 = 2*ri[jj]*y[kk][1]*(1-y[jj][1]*y[jj][1]);
// double c3 = 2*ri[jj]*y[kk][2]*(1-y[jj][2]*y[jj][2]);
for (n=0;n<kb;n++) {
double dot1=expr[jj][n]*expr[kk][n];
double c4 = c41[n];
double c5 = c51[n];
double c6 = c61[n];
//m=0
features[count]+=dot1;
dfeaturesx[jj*f+count]+=dot1*c4;
dfeaturesy[jj*f+count]+=dot1*c5;
dfeaturesz[jj*f+count]+=dot1*c6;
c4*=dot;
c5*=dot;
c6*=dot;
count++;
for (m=1;m<mb;m++) {
double c7 = dot1*(m*c1+c4);
double c8 = dot1*(m*c2+c5);
double c9 = dot1*(m*c3+c6);
dfeaturesx[jj*f+count]+=c7;
dfeaturesy[jj*f+count]+=c8;
dfeaturesz[jj*f+count]+=c9;
dot1*=dot;
features[count++]+=dot1;
}
}
}
}
else {
for (kk=0;kk<jnum; kk++) {
if (expr[kk][0]==0)continue;
ktype = tn[kk];
if (ktypes != nelements && ktypes != ktype) {
continue;
}
count = startingneuron;
double dot = (y[jj][0]*y[kk][0]+y[jj][1]*y[kk][1]+y[jj][2]*y[kk][2]);
double c1 = ri[jj]*(y[kk][0]-dot*y[jj][0]);
double c2 = ri[jj]*(y[kk][1]-dot*y[jj][1]);
double c3 = ri[jj]*(y[kk][2]-dot*y[jj][2]);
double c10 = ri[kk]*(y[jj][0]-dot*y[kk][0]);
double c11 = ri[kk]*(y[jj][1]-dot*y[kk][1]);
double c12 = ri[kk]*(y[jj][2]-dot*y[kk][2]);
//alternate formulation:
// double c1 = 2*ri[jj]*y[kk][0]*(1-y[jj][0]*y[jj][0]);
// double c2 = 2*ri[jj]*y[kk][1]*(1-y[jj][1]*y[jj][1]);
// double c3 = 2*ri[jj]*y[kk][2]*(1-y[jj][2]*y[jj][2]);
// double c10 = 2*ri[kk]*y[jj][0]*(1-y[kk][0]*y[kk][0]);
// double c11 = 2*ri[kk]*y[jj][1]*(1-y[kk][1]*y[kk][1]);
// double c12 = 2*ri[kk]*y[jj][2]*(1-y[kk][2]*y[kk][2]);
for (n=0;n<kb;n++) {
double dot1=expr[jj][n]*expr[kk][n];
double c4 = c41[n]/2;
double c5 = c51[n]/2;
double c6 = c61[n]/2;
double ct2 = -ct[n]/2+dfc[kk];
double c42 = ct2*y[kk][0];
double c52 = ct2*y[kk][1];
double c62 = ct2*y[kk][2];
//m=0
features[count]+=dot1;
dfeaturesx[jj*f+count]+=dot1*c4;
dfeaturesy[jj*f+count]+=dot1*c5;
dfeaturesz[jj*f+count]+=dot1*c6;
dfeaturesx[kk*f+count]+=dot1*c42;
dfeaturesy[kk*f+count]+=dot1*c52;
dfeaturesz[kk*f+count]+=dot1*c62;
c4*=dot;
c5*=dot;
c6*=dot;
c42*=dot;
c52*=dot;
c62*=dot;
count++;
for (m=1;m<mb;m++) {
double c7 = dot1*(m*c1+c4);
double c8 = dot1*(m*c2+c5);
double c9 = dot1*(m*c3+c6);
dfeaturesx[jj*f+count]+=c7;
dfeaturesy[jj*f+count]+=c8;
dfeaturesz[jj*f+count]+=c9;
dfeaturesx[kk*f+count]+=dot1*(m*c10+c42);
dfeaturesy[kk*f+count]+=dot1*(m*c11+c52);
dfeaturesz[kk*f+count]+=dot1*(m*c12+c62);
dot1*=dot;
features[count++]+=dot1;
}
}
}
}
}
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
count = startingneuron;
for (n=0;n<kb;n++) {
for (m=0;m<mb;m++) {
dfeaturesx[jnum*f+count]-=dfeaturesx[jj*f+count];
dfeaturesy[jnum*f+count]-=dfeaturesy[jj*f+count];
dfeaturesz[jnum*f+count]-=dfeaturesz[jj*f+count];
count++;
}
}
}
}

View File

@ -0,0 +1,72 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifndef LMP_RANN_FINGERPRINT_BOND_H
#define LMP_RANN_FINGERPRINT_BOND_H
#include "rann_fingerprint.h"
namespace LAMMPS_NS {
namespace RANN {
class Fingerprint_bond : public Fingerprint {
public:
Fingerprint_bond(PairRANN *);
~Fingerprint_bond();
bool parse_values(std::string,std::vector<std::string>);
void write_values(FILE *);
void init(int*,int);
void allocate();
void compute_fingerprint(double*,double*,double*,double*,int,int,double *,double *,double *,int *,int,int *);
void do3bodyfeatureset_doubleneighborloop(double *,double *,double *,double *,int,int,double *,double *,double *,int *,int,int *);
void do3bodyfeatureset_singleneighborloop(double *,double *,double *,double *,int,int,double *,double *,double *,int *,int,int *);
void generate_exp_cut_table();
void generate_coefficients();
int get_length();
double *expcuttable;
double *dfctable;
double dr;
double *alpha_k;
double re;
int **coeff;
int **coeffx;
int **coeffy;
int **coeffz;
int kmax;
int mlength;
int **Mf;
};
}
}
#endif /* FINGERPRINT_BOND_H_ */

View File

@ -0,0 +1,763 @@
// clang-format off
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#include "rann_fingerprint_bondscreened.h"
using namespace LAMMPS_NS::RANN;
Fingerprint_bondscreened::Fingerprint_bondscreened(PairRANN *_pair) : Fingerprint(_pair)
{
n_body_type = 3;
dr = 0;
re = 0;
rc = 0;
alpha_k = new double [1];
alpha_k[0] = -1;
kmax = 0;
mlength = 0;
id = -1;
style = "bondscreened";
atomtypes = new int [n_body_type];
empty = true;
_pair->doscreen = true;
screen = true;
}
Fingerprint_bondscreened::~Fingerprint_bondscreened() {
delete [] alpha_k;
delete [] atomtypes;
delete [] expcuttable;
delete [] dfctable;
for (int i=0;i<(mlength*(mlength+1))>>1;i++) {
delete [] coeff[i];
delete [] coeffx[i];
delete [] coeffy[i];
delete [] coeffz[i];
delete [] Mf[i];
}
delete [] coeff;
delete [] coeffx;
delete [] coeffy;
delete [] coeffz;
delete [] Mf;
delete [] rinvsqrttable;
}
bool Fingerprint_bondscreened::parse_values(std::string constant,std::vector<std::string> line1) {
int nwords,l;
nwords=line1.size();
if (constant.compare("re")==0) {
re = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("rc")==0) {
rc = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("alphak")==0) {
delete [] alpha_k;
alpha_k = new double [nwords];
for (l=0;l<nwords;l++) {
alpha_k[l]=strtod(line1[l].c_str(),NULL);
}
}
else if (constant.compare("dr")==0) {
dr = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("k")==0) {
kmax = strtol(line1[0].c_str(),NULL,10);
}
else if (constant.compare("m")==0) {
mlength = strtol(line1[0].c_str(),NULL,10);
}
else pair->errorf(FLERR,"Undefined value for bond power");
if (re!=0.0 && rc!=0.0 && alpha_k[0]!=-1 && dr!=0.0 && mlength!=0 && kmax!=0)return true;
return false;
}
void Fingerprint_bondscreened::write_values(FILE *fid) {
int i;
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:re:\n",style,id);
fprintf(fid,"%f\n",re);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:rc:\n",style,id);
fprintf(fid,"%f\n",rc);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:alphak:\n",style,id);
for (i=0;i<kmax;i++) {
fprintf(fid,"%f ",alpha_k[i]);
}
fprintf(fid,"\n");
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:dr:\n",style,id);
fprintf(fid,"%f\n",dr);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:k:\n",style,id);
fprintf(fid,"%d\n",kmax);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:m:\n",style,id);
fprintf(fid,"%d\n",mlength);
}
void Fingerprint_bondscreened::init(int *i,int _id) {
for (int j=0;j<n_body_type;j++) {atomtypes[j] = i[j];}
re = 0;
rc = 0;
mlength = 0;
kmax = 0;
alpha_k = new double [1];
alpha_k[0]=-1;
empty = false;
id = _id;
}
//number of neurons defined by this fingerprint
int Fingerprint_bondscreened::get_length() {
return mlength*kmax;
}
void Fingerprint_bondscreened::allocate() {
generate_exp_cut_table();
generate_coefficients();
generate_rinvssqrttable();
}
//Generate table of complex functions for quick reference during compute. Used by do3bodyfeatureset_singleneighborloop and do3bodyfeatureset_doubleneighborloop.
void Fingerprint_bondscreened::generate_exp_cut_table() {
int m,n;
double r1;
int buf = 5;
int res = pair->res;
double cutmax = pair->cutmax;
expcuttable = new double [(res+buf)*(kmax)];
dfctable = new double [res+buf];
for (m=0;m<(res+buf);m++) {
r1 = cutmax*cutmax*(double)(m)/(double)(res);
for (n=0;n<(kmax);n++) {
expcuttable[n+m*(kmax)] = exp(-alpha_k[n]/re*sqrt(r1))*cutofffunction(sqrt(r1),rc,dr);
}
if (sqrt(r1)>=rc || sqrt(r1) <= (rc-dr)) {
dfctable[m]=0;
}
else{
dfctable[m]=-8*pow(1-(rc-sqrt(r1))/dr,3)/dr/(1-pow(1-(rc-sqrt(r1))/dr,4));
}
}
}
//Generate table of complex functions for quick reference during compute. Used by do3bodyfeatureset_singleneighborloop.
void Fingerprint_bondscreened::generate_coefficients() { //calculates multinomial coefficient for each term
int p,mb,mc;
int n,p1,i1;
mb = mlength;
mc=(mb*(mb+1))>>1;
coeff = new int *[mc];
coeffx = new int *[mc];
coeffy = new int *[mc];
coeffz = new int *[mc];
for (p=0;p<mc;p++) {
coeff[p]=new int [mb];
coeffx[p]=new int [mb];
coeffy[p]=new int [mb];
coeffz[p]=new int [mb];
}
Mf = new int*[mc];
int *M = new int[mlength+1];
for (p=0;p<mlength+1;p++) {
M[p]=0;
}
for (p1=0;p1<mc;p1++) {
Mf[p1] = new int[mlength+1];
for (p=0;p<mlength+1;p++) {
Mf[p1][p]=0;
}
}
M[0] = 2;
Mf[0][0] = 2;
n = 1;
int m1 = 1;
bool go = true;
bool broke = false;
while (go) {
broke = false;
for (i1=0;i1<mlength-1;i1++) {
if (M[i1+1] == 0) {
M[i1+1]=M[i1+1]+1;
for (p1=0;p1<mlength+1;p1++) {
Mf[n][p1] = M[p1];
}
n = n+1;
broke = true;
break;
}
}
if (m1<mlength && !broke) {
M[m1]=M[m1]+1;
for (p1=m1+1;p1<mlength+1;p1++) {
M[p1]=0;
}
for (p1=0;p1<mlength+1;p1++) {
Mf[n][p1]=M[p1];
}
n=n+1;
broke = true;
m1 = m1+1;
}
if (!broke) {
go = false;
}
}
for (p=0;p<mb;p++) {
for (p1=0;p1<mc;p1++) {
if (p==0) {
coeffx[p1][p]=0;
coeffy[p1][p]=0;
coeffz[p1][p]=0;
}
else{
coeffx[p1][p]=coeffx[p1][p-1];
if (Mf[p1][p]==0) {
coeffx[p1][p]++;
}
coeffy[p1][p]=coeffy[p1][p-1];
if (Mf[p1][p]==1) {
coeffy[p1][p]++;
}
coeffz[p1][p]=coeffz[p1][p-1];
if (Mf[p1][p]==2) {
coeffz[p1][p]++;
}
}
coeff[p1][p] = pair->factorial(p)/pair->factorial(coeffx[p1][p])/pair->factorial(coeffy[p1][p])/pair->factorial(coeffz[p1][p]);
}
}
}
//Called by getproperties. Gets 3-body features and dfeatures
void Fingerprint_bondscreened::compute_fingerprint(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,double *Sik, double *dSikx, double*dSiky, double *dSikz, double *dSijkx, double *dSijky, double *dSijkz, bool *Bij, int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i;
//select the more efficient algorithm for this particular potential and environment.
if (jnum*2>(mlength+1)*mlength*20) {
do3bodyfeatureset_singleneighborloop(features,dfeaturesx,dfeaturesy,dfeaturesz,Sik,dSikx,dSiky,dSikz,dSijkx,dSijky,dSijkz,Bij,ii,sid,xn,yn,zn,tn,jnum,jl);
}
else{
do3bodyfeatureset_doubleneighborloop(features,dfeaturesx,dfeaturesy,dfeaturesz,Sik,dSikx,dSiky,dSikz,dSijkx,dSijky,dSijkz,Bij,ii,sid,xn,yn,zn,tn,jnum,jl);
}
}
//Called by do3bodyfeatureset. Algorithm for high neighbor numbers and small series of bond angle powers
void Fingerprint_bondscreened::do3bodyfeatureset_singleneighborloop(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,double *Sik, double *dSikx, double*dSiky, double *dSikz, double *dSijkx, double *dSijky, double *dSijkz, bool *Bij,int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i,j,jj,itype,jtype,kk,m,n,mcount,a,a1,a2,ai;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
int count=0;
PairRANN::Simulation *sim = &pair->sims[sid];
int *type = sim->type;
double cutmax = pair->cutmax;
int res = pair->res;
double cutinv2 = 1/cutmax/cutmax;
ilist = sim->ilist;
int nelements=pair->nelements;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double expr[jnum][kmax+12];
int p = kmax;
int countmb=((mlength)*(mlength+1))>>1;
// calculate interpolation expr, rinvs and dfc, for each neighbor
for (jj = 0; jj < jnum; jj++) {
if (Bij[jj]==false) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype && atomtypes[2] != nelements && atomtypes[2] != jtype) {
expr[jj][0]=0;
continue;
}
delx=xn[jj];
dely=yn[jj];
delz=zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq>rc*rc) {
expr[jj][0]=0;
continue;
}
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
r1 = r1-trunc(r1);
double *p0 = &expcuttable[(m1-1)*kmax];
double *p1 = &expcuttable[m1*kmax];
double *p2 = &expcuttable[(m1+1)*kmax];
double *p3 = &expcuttable[(m1+2)*kmax];
for (kk=0;kk<kmax;kk++) {
expr[jj][kk] = p1[kk]+0.5*r1*(p2[kk]-p0[kk]+r1*(2.0*p0[kk]-5.0*p1[kk]+4.0*p2[kk]-p3[kk]+r1*(3.0*(p1[kk]-p2[kk])+p3[kk]-p0[kk])));
expr[jj][kk] *= Sik[jj];
}
double* q = &dfctable[m1-1];
double* ri = &rinvsqrttable[m1-1];
double dfc = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
double rinvs = ri[1] + 0.5 * r1*(ri[2] - ri[0] + r1*(2.0*ri[0] - 5.0*ri[1] + 4.0*ri[2] - ri[3] + r1*(3.0*(ri[1] - ri[2]) + ri[3] - ri[0])));
expr[jj][p]=delx*rinvs;
expr[jj][p+1]=dely*rinvs;
expr[jj][p+2]=delz*rinvs;
//Hack to avoid nan when x y or z component of radial vector is exactly 0. Shouldn't affect accuracy.
if (expr[jj][p]*expr[jj][p]<0.000000000001) {
expr[jj][p] = 0.000001;
}
if (expr[jj][p+1]*expr[jj][p+1]<0.000000000001) {
expr[jj][p+1] = 0.000001;
}
if (expr[jj][p+2]*expr[jj][p+2]<0.000000000001) {
expr[jj][p+2] = 0.000001;
}
expr[jj][p+3] = -dfc*expr[jj][p]-dSikx[jj];
expr[jj][p+4] = rinvs/expr[jj][p];
expr[jj][p+5] = rinvs*expr[jj][p];
expr[jj][p+6] = -dfc*expr[jj][p+1]-dSiky[jj];
expr[jj][p+7] = rinvs/expr[jj][p+1];
expr[jj][p+8] = rinvs*expr[jj][p+1];
expr[jj][p+9] = -dfc*expr[jj][p+2]-dSikz[jj];
expr[jj][p+10] = rinvs/expr[jj][p+2];
expr[jj][p+11] = rinvs*expr[jj][p+2];
}
int kb = kmax;
int mb = mlength;
count = startingneuron;
double Bb[mb];
double dBbx;
double dBby;
double dBbz;
double dBbx1[mb];
double dBby1[mb];
double dBbz1[mb];
double yprod;
for (mcount=0;mcount<countmb;mcount++) {
int *M = Mf[mcount];
int *_coeffx = coeffx[mcount];
int *_coeffy = coeffy[mcount];
int *_coeffz = coeffz[mcount];
int *_coeff = coeff[mcount];
a = mb+1;
for (a1=0;a1<mb;a1++) {
if (Mf[mcount][a1+1]==0) {
a = a1;
break;
}
}
for (n=0;n<kb;n++) {
for (a1=0;a1<mb;a1++) {
Bb[a1]=0;
dBbx1[a1] = 0;
dBby1[a1] = 0;
dBbz1[a1] = 0;
}
ai = n;
double y1 = alpha_k[ai]/re;
//loop over jtype to get Bb
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
double yprod = expr[jj][ai];
double *y4 = &expr[jj][p];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
for (a2=a;a2<mb;a2++) {
Bb[a2]=Bb[a2]+yprod;
yprod *= y4[M[a2+1]];
}
}
if (atomtypes[1]!=atomtypes[2]) {//Bb!=Bg
double Bg[mb];
for (a1=0;a1<mb;a1++) {
Bg[a1]=0;
}
ai = n;
double y1 = alpha_k[ai]/re;
//loop over ktype to get Bg
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[2] != nelements && atomtypes[2] != jtype) {
continue;
}
double yprod = expr[jj][ai];
double *y4 = &expr[jj][p];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
for (a2=a;a2<mb;a2++) {
Bg[a2]=Bg[a2]+yprod;
yprod *= y4[M[a2+1]];
}
}
double B1;
//loop over ktype to get dBg*Bb
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[2] != nelements && atomtypes[2] != jtype) {
continue;
}
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = Bb[a2]*_coeff[a2]*yprod;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dBbx1[a2] -= dBbx;
dBby1[a2] -= dBby;
dBbz1[a2] -= dBbz;
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
yprod *= y4[M[a2+1]];
ai++;
for (kk=0;kk<jnum;kk++) {
if (Bij[kk]==false) {continue;}
dfeaturesx[n*mb+a2+count+kk*f]+=B1*dSijkx[jj*jnum+kk];
dfeaturesy[n*mb+a2+count+kk*f]+=B1*dSijky[jj*jnum+kk];
dfeaturesz[n*mb+a2+count+kk*f]+=B1*dSijkz[jj*jnum+kk];
}
}
}
//loop over jtype to get dBb*Bg
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = Bg[a2]*_coeff[a2]*yprod;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dBbx1[a2] -= dBbx;
dBby1[a2] -= dBby;
dBbz1[a2] -= dBbz;
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
yprod *= y4[M[a2+1]];
ai++;
for (kk=0;kk<jnum;kk++) {
if (Bij[kk]==false) {continue;}
dfeaturesx[n*mb+a2+count+kk*f]+=B1*dSijkx[jj*jnum+kk];
dfeaturesy[n*mb+a2+count+kk*f]+=B1*dSijky[jj*jnum+kk];
dfeaturesz[n*mb+a2+count+kk*f]+=B1*dSijkz[jj*jnum+kk];
}
}
}
//central atom derivative
for (a2=a;a2<mb;a2++) {
ai = n*(mb)+a2+count+jnum*f;
features[ai-jnum*f] += Bb[a2]*Bg[a2]*_coeff[a2];
}
}
else{//Bb=Bg
double B1;
//loop over jtype to get 2*Bb*dBb
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = 2*Bb[a2]*_coeff[a2]*yprod;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dBbx1[a2] -= dBbx;
dBby1[a2] -= dBby;
dBbz1[a2] -= dBbz;
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
yprod *= y4[M[a2+1]];
ai++;
for (kk=0;kk<jnum;kk++) {
if (Bij[kk]==false) {continue;}
dfeaturesx[n*mb+a2+count+kk*f]+=B1*dSijkx[jj*jnum+kk];
dfeaturesy[n*mb+a2+count+kk*f]+=B1*dSijky[jj*jnum+kk];
dfeaturesz[n*mb+a2+count+kk*f]+=B1*dSijkz[jj*jnum+kk];
}
}
}
//central atom derivative
for (a2=a;a2<mb;a2++) {
ai = n*(mb)+a2+count+jnum*f;
features[ai-jnum*f] += Bb[a2]*Bb[a2]*_coeff[a2];
}
}
}
}
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
count = startingneuron;
for (n=0;n<kb;n++) {
for (m=0;m<mb;m++) {
dfeaturesx[jnum*f+count]-=dfeaturesx[jj*f+count];
dfeaturesy[jnum*f+count]-=dfeaturesy[jj*f+count];
dfeaturesz[jnum*f+count]-=dfeaturesz[jj*f+count];
count++;
}
}
}
}
//Called by do3bodyfeatureset. Algorithm for low neighbor numbers and large series of bond angle powers
void Fingerprint_bondscreened::do3bodyfeatureset_doubleneighborloop(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,double *Sik, double *dSikx, double*dSiky, double *dSikz, double *dSijkx, double *dSijky, double *dSijkz, bool *Bij,int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i,j,jj,itype,jtype,ktype,kk,m,n;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
int jtypes = atomtypes[1];
int ktypes = atomtypes[2];
int count=0;
PairRANN::Simulation *sim = &pair->sims[sid];
int *type = sim->type;
int nelements = pair->nelements;
int res = pair->res;
double cutmax = pair->cutmax;
double cutinv2 = 1/cutmax/cutmax;
ilist = sim->ilist;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double expr[jnum][kmax];
double y[jnum][3];
double ri[jnum];
double dfc[jnum];
int kb = kmax;
int mb = mlength;
double Bijk[kb][mb];
double c41[kmax];
double c51[kmax];
double c61[kmax];
double ct[kmax];
for (jj = 0; jj < jnum; jj++) {
if (Bij[jj]==false) {continue;}
jtype = tn[jj];
if (jtypes != nelements && jtypes != jtype && ktypes != nelements && ktypes != jtype) {
expr[jj][0]=0;
continue;
}
delx = xn[jj];
dely = yn[jj];
delz = zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq>rc*rc) {
expr[jj][0]=0;
continue;
}
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
if (!(m1>=1 && m1 <= res))pair->errorf(FLERR,"Neighbor list is invalid.");//usually results from nan somewhere.
r1 = r1-trunc(r1);
double *p0 = &expcuttable[(m1-1)*kmax];
double *p1 = &expcuttable[m1*kmax];
double *p2 = &expcuttable[(m1+1)*kmax];
double *p3 = &expcuttable[(m1+2)*kmax];
for (kk=0;kk<kmax;kk++) {
expr[jj][kk] = p1[kk]+0.5*r1*(p2[kk]-p0[kk]+r1*(2.0*p0[kk]-5.0*p1[kk]+4.0*p2[kk]-p3[kk]+r1*(3.0*(p1[kk]-p2[kk])+p3[kk]-p0[kk])));
expr[jj][kk] *= Sik[jj];
}
double* q = &dfctable[m1-1];
double* r2 = &rinvsqrttable[m1-1];
dfc[jj] = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
ri[jj] = r2[1] + 0.5 * r1*(r2[2] - r2[0] + r1*(2.0*r2[0] - 5.0*r2[1] + 4.0*r2[2] - r2[3] + r1*(3.0*(r2[1] - r2[2]) + r2[3] - r2[0])));
y[jj][0]=delx*ri[jj];
y[jj][1]=dely*ri[jj];
y[jj][2]=delz*ri[jj];
}
for (jj = 0; jj < jnum; jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0)continue;
jtype =tn[jj];
if (jtypes != nelements && jtypes != jtype) {
continue;
}
for (n = 0;n<kmax;n++) {
ct[n] = alpha_k[n]/re;
c41[n]=(-ct[n]+dfc[jj])*y[jj][0]+dSikx[jj];
c51[n]=(-ct[n]+dfc[jj])*y[jj][1]+dSiky[jj];
c61[n]=(-ct[n]+dfc[jj])*y[jj][2]+dSikz[jj];
}
for (n=0;n<kb;n++) {for (m=0;m<mb;m++) {Bijk[n][m]=0;}}
for (kk=0;kk< jnum; kk++) {
if (Bij[kk]==false) {continue;}
if (expr[kk][0]==0)continue;
ktype = tn[kk];
if (ktypes != nelements && ktypes != ktype) {
continue;
}
count = startingneuron;
double dot = (y[jj][0]*y[kk][0]+y[jj][1]*y[kk][1]+y[jj][2]*y[kk][2]);
double c1 = ri[jj]*(y[kk][0]-dot*y[jj][0]);
double c2 = ri[jj]*(y[kk][1]-dot*y[jj][1]);
double c3 = ri[jj]*(y[kk][2]-dot*y[jj][2]);
double c10 = ri[kk]*(y[jj][0]-dot*y[kk][0]);
double c11 = ri[kk]*(y[jj][1]-dot*y[kk][1]);
double c12 = ri[kk]*(y[jj][2]-dot*y[kk][2]);
for (n=0;n<kb;n++) {
double dot1=expr[jj][n]*expr[kk][n];
double c4 = c41[n];
double c5 = c51[n];
double c6 = c61[n];
double ct2 = -ct[n]+dfc[kk];
double c42 = ct2*y[kk][0]+dSikx[kk];
double c52 = ct2*y[kk][1]+dSiky[kk];
double c62 = ct2*y[kk][2]+dSikz[kk];
//m=0
Bijk[n][0]+=dot1;
features[count]+=dot1;
dfeaturesx[jj*f+count]+=dot1*c4;
dfeaturesy[jj*f+count]+=dot1*c5;
dfeaturesz[jj*f+count]+=dot1*c6;
dfeaturesx[kk*f+count]+=dot1*c42;
dfeaturesy[kk*f+count]+=dot1*c52;
dfeaturesz[kk*f+count]+=dot1*c62;
c4*=dot;
c5*=dot;
c6*=dot;
c42*=dot;
c52*=dot;
c62*=dot;
count++;
for (m=1;m<mb;m++) {
double c7 = dot1*(m*c1+c4);
double c8 = dot1*(m*c2+c5);
double c9 = dot1*(m*c3+c6);
dfeaturesx[jj*f+count]+=c7;
dfeaturesy[jj*f+count]+=c8;
dfeaturesz[jj*f+count]+=c9;
dfeaturesx[kk*f+count]+=dot1*(m*c10+c42);
dfeaturesy[kk*f+count]+=dot1*(m*c11+c52);
dfeaturesz[kk*f+count]+=dot1*(m*c12+c62);
dot1*=dot;
features[count++]+=dot1;
Bijk[n][m] += dot1;
}
}
}
for (kk=0;kk<jnum;kk++) {
if (Bij[kk]==false) {continue;}
if (expr[kk][0]==0)continue;
ktype = tn[kk];
if (ktypes != nelements && ktypes != ktype) {
continue;
}
count = startingneuron;
for (n=0;n<kb;n++) {
for (m=0;m<mb;m++) {
dfeaturesx[kk*f+count]+=2*Bijk[n][m]*dSijkx[jj*jnum+kk];
dfeaturesy[kk*f+count]+=2*Bijk[n][m]*dSijky[jj*jnum+kk];
dfeaturesz[kk*f+count]+=2*Bijk[n][m]*dSijkz[jj*jnum+kk];
count++;
}
}
}
}
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
count = startingneuron;
for (n=0;n<kb;n++) {
for (m=0;m<mb;m++) {
dfeaturesx[jnum*f+count]-=dfeaturesx[jj*f+count];
dfeaturesy[jnum*f+count]-=dfeaturesy[jj*f+count];
dfeaturesz[jnum*f+count]-=dfeaturesz[jj*f+count];
count++;
}
}
}
}

View File

@ -0,0 +1,72 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifndef LMP_RANN_FINGERPRINT_BONDSCREENED_H
#define LMP_RANN_FINGERPRINT_BONDSCREENED_H
#include "rann_fingerprint.h"
namespace LAMMPS_NS {
namespace RANN {
class Fingerprint_bondscreened : public Fingerprint {
public:
Fingerprint_bondscreened(PairRANN *);
~Fingerprint_bondscreened();
bool parse_values(std::string,std::vector<std::string>);
void write_values(FILE *);
void init(int*,int);
void allocate();
void compute_fingerprint(double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,bool*,int,int,double*,double*,double*,int*,int,int*);
void do3bodyfeatureset_doubleneighborloop(double *,double *,double *,double *,double*,double*,double*,double*,double*,double*,double*,bool*,int,int,double*,double*,double*,int*,int,int*);
void do3bodyfeatureset_singleneighborloop(double *,double *,double *,double *,double*,double*,double*,double*,double*,double*,double*,bool*,int,int,double*,double*,double*,int*,int,int*);
void generate_exp_cut_table();
void generate_coefficients();
int get_length();
double *expcuttable;
double *dfctable;
double dr;
double *alpha_k;
double re;
int **coeff;
int **coeffx;
int **coeffy;
int **coeffz;
int kmax;
int mlength;
int **Mf;
};
}
}
#endif /* FINGERPRINT_BOND_H_ */

View File

@ -0,0 +1,815 @@
// clang-format off
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#include "rann_fingerprint_bondscreenedspin.h"
using namespace LAMMPS_NS::RANN;
Fingerprint_bondscreenedspin::Fingerprint_bondscreenedspin(PairRANN *_pair) : Fingerprint(_pair)
{
n_body_type = 3;
dr = 0;
re = 0;
rc = 0;
alpha_k = new double [1];
alpha_k[0] = -1;
kmax = 0;
mlength = 0;
id = -1;
style = "bondscreenedspin";
atomtypes = new int [n_body_type];
empty = true;
_pair->doscreen = true;
screen = true;
_pair->dospin = true;
spin = true;
}
Fingerprint_bondscreenedspin::~Fingerprint_bondscreenedspin() {
delete [] alpha_k;
delete [] atomtypes;
delete [] expcuttable;
delete [] dfctable;
for (int i=0;i<(mlength*(mlength+1))>>1;i++) {
delete [] coeff[i];
delete [] coeffx[i];
delete [] coeffy[i];
delete [] coeffz[i];
delete [] Mf[i];
}
delete [] coeff;
delete [] coeffx;
delete [] coeffy;
delete [] coeffz;
delete [] Mf;
delete [] rinvsqrttable;
}
bool Fingerprint_bondscreenedspin::parse_values(std::string constant,std::vector<std::string> line1) {
int nwords,l;
nwords=line1.size();
if (constant.compare("re")==0) {
re = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("rc")==0) {
rc = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("alphak")==0) {
delete [] alpha_k;
alpha_k = new double [nwords];
for (l=0;l<nwords;l++) {
alpha_k[l]=strtod(line1[l].c_str(),NULL);
}
}
else if (constant.compare("dr")==0) {
dr = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("k")==0) {
kmax = strtol(line1[0].c_str(),NULL,10);
}
else if (constant.compare("m")==0) {
mlength = strtol(line1[0].c_str(),NULL,10);
}
else pair->errorf(FLERR,"Undefined value for bond power");
if (re!=0.0 && rc!=0.0 && alpha_k[0]!=-1 && dr!=0.0 && mlength!=0 && kmax!=0)return true;
return false;
}
void Fingerprint_bondscreenedspin::write_values(FILE *fid) {
int i;
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:re:\n",style,id);
fprintf(fid,"%f\n",re);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:rc:\n",style,id);
fprintf(fid,"%f\n",rc);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:alphak:\n",style,id);
for (i=0;i<kmax;i++) {
fprintf(fid,"%f ",alpha_k[i]);
}
fprintf(fid,"\n");
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:dr:\n",style,id);
fprintf(fid,"%f\n",dr);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:k:\n",style,id);
fprintf(fid,"%d\n",kmax);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:m:\n",style,id);
fprintf(fid,"%d\n",mlength);
}
void Fingerprint_bondscreenedspin::init(int *i,int _id) {
for (int j=0;j<n_body_type;j++) {atomtypes[j] = i[j];}
re = 0;
rc = 0;
mlength = 0;
kmax = 0;
alpha_k = new double [1];
alpha_k[0]=-1;
empty = false;
id = _id;
}
//number of neurons defined by this fingerprint
int Fingerprint_bondscreenedspin::get_length() {
return mlength*kmax;
}
void Fingerprint_bondscreenedspin::allocate() {
generate_exp_cut_table();
generate_coefficients();
generate_rinvssqrttable();
}
//Generate table of complex functions for quick reference during compute. Used by do3bodyfeatureset_singleneighborloop and do3bodyfeatureset_doubleneighborloop.
void Fingerprint_bondscreenedspin::generate_exp_cut_table() {
int m,n;
double r1;
int buf = 5;
int res = pair->res;
double cutmax = pair->cutmax;
expcuttable = new double [(res+buf)*(kmax)];
dfctable = new double [res+buf];
for (m=0;m<(res+buf);m++) {
r1 = cutmax*cutmax*(double)(m)/(double)(res);
for (n=0;n<(kmax);n++) {
expcuttable[n+m*(kmax)] = exp(-alpha_k[n]/re*sqrt(r1))*cutofffunction(sqrt(r1),rc,dr);
}
if (sqrt(r1)>=rc || sqrt(r1) <= (rc-dr)) {
dfctable[m]=0;
}
else{
dfctable[m]=-8*pow(1-(rc-sqrt(r1))/dr,3)/dr/(1-pow(1-(rc-sqrt(r1))/dr,4));
}
}
}
//Generate table of complex functions for quick reference during compute. Used by do3bodyfeatureset_singleneighborloop.
void Fingerprint_bondscreenedspin::generate_coefficients() { //calculates multinomial coefficient for each term
int p,mb,mc;
int n,p1,i1;
mb = mlength;
mc=(mb*(mb+1))>>1;
coeff = new int *[mc];
coeffx = new int *[mc];
coeffy = new int *[mc];
coeffz = new int *[mc];
for (p=0;p<mc;p++) {
coeff[p]=new int [mb];
coeffx[p]=new int [mb];
coeffy[p]=new int [mb];
coeffz[p]=new int [mb];
}
Mf = new int*[mc];
int *M = new int[mlength+1];
for (p=0;p<mlength+1;p++) {
M[p]=0;
}
for (p1=0;p1<mc;p1++) {
Mf[p1] = new int[mlength+1];
for (p=0;p<mlength+1;p++) {
Mf[p1][p]=0;
}
}
M[0] = 2;
Mf[0][0] = 2;
n = 1;
int m1 = 1;
bool go = true;
bool broke = false;
while (go) {
broke = false;
for (i1=0;i1<mlength-1;i1++) {
if (M[i1+1] == 0) {
M[i1+1]=M[i1+1]+1;
for (p1=0;p1<mlength+1;p1++) {
Mf[n][p1] = M[p1];
}
n = n+1;
broke = true;
break;
}
}
if (m1<mlength && !broke) {
M[m1]=M[m1]+1;
for (p1=m1+1;p1<mlength+1;p1++) {
M[p1]=0;
}
for (p1=0;p1<mlength+1;p1++) {
Mf[n][p1]=M[p1];
}
n=n+1;
broke = true;
m1 = m1+1;
}
if (!broke) {
go = false;
}
}
for (p=0;p<mb;p++) {
for (p1=0;p1<mc;p1++) {
if (p==0) {
coeffx[p1][p]=0;
coeffy[p1][p]=0;
coeffz[p1][p]=0;
}
else{
coeffx[p1][p]=coeffx[p1][p-1];
if (Mf[p1][p]==0) {
coeffx[p1][p]++;
}
coeffy[p1][p]=coeffy[p1][p-1];
if (Mf[p1][p]==1) {
coeffy[p1][p]++;
}
coeffz[p1][p]=coeffz[p1][p-1];
if (Mf[p1][p]==2) {
coeffz[p1][p]++;
}
}
coeff[p1][p] = pair->factorial(p)/pair->factorial(coeffx[p1][p])/pair->factorial(coeffy[p1][p])/pair->factorial(coeffz[p1][p]);
}
}
}
//Called by getproperties. Gets 3-body features and dfeatures
void Fingerprint_bondscreenedspin::compute_fingerprint(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz, double *dspinx, double *dspiny, double *dspinz,double *Sik, double *dSikx, double*dSiky, double *dSikz, double *dSijkx, double *dSijky, double *dSijkz, bool *Bij, int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i;
//select the more efficient algorithm for this particular potential and environment.
if (jnum*2>(mlength+1)*mlength*20) {
do3bodyfeatureset_singleneighborloop(features,dfeaturesx,dfeaturesy,dfeaturesz,dspinx,dspiny,dspinz,Sik,dSikx,dSiky,dSikz,dSijkx,dSijky,dSijkz,Bij,ii,sid,xn,yn,zn,tn,jnum,jl);
}
else{
do3bodyfeatureset_doubleneighborloop(features,dfeaturesx,dfeaturesy,dfeaturesz,dspinx,dspiny,dspinz,Sik,dSikx,dSiky,dSikz,dSijkx,dSijky,dSijkz,Bij,ii,sid,xn,yn,zn,tn,jnum,jl);
}
}
//Called by do3bodyfeatureset. Algorithm for high neighbor numbers and small series of bond angle powers
void Fingerprint_bondscreenedspin::do3bodyfeatureset_singleneighborloop(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz, double *dspinx, double *dspiny, double *dspinz,double *Sik, double *dSikx, double*dSiky, double *dSikz, double *dSijkx, double *dSijky, double *dSijkz, bool *Bij, int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i,j,jj,itype,jtype,kk,m,n,mcount,a,a1,a2,ai;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
int count=0;
PairRANN::Simulation *sim = &pair->sims[sid];
int *type = sim->type;
double cutmax = pair->cutmax;
int res = pair->res;
double cutinv2 = 1/cutmax/cutmax;
ilist = sim->ilist;
int nelements=pair->nelements;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double expr[jnum][kmax+12];
int p = kmax;
int countmb=((mlength)*(mlength+1))>>1;
double *si = sim->s[i];
// calculate interpolation expr, rinvs and dfc, for each neighbor
for (jj = 0; jj < jnum; jj++) {
if (Bij[jj]==false) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype && atomtypes[2] != nelements && atomtypes[2] != jtype) {
expr[jj][0]=0;
continue;
}
delx=xn[jj];
dely=yn[jj];
delz=zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq>rc*rc) {
expr[jj][0]=0;
continue;
}
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
r1 = r1-trunc(r1);
double *p0 = &expcuttable[(m1-1)*kmax];
double *p1 = &expcuttable[m1*kmax];
double *p2 = &expcuttable[(m1+1)*kmax];
double *p3 = &expcuttable[(m1+2)*kmax];
for (kk=0;kk<kmax;kk++) {
expr[jj][kk] = p1[kk]+0.5*r1*(p2[kk]-p0[kk]+r1*(2.0*p0[kk]-5.0*p1[kk]+4.0*p2[kk]-p3[kk]+r1*(3.0*(p1[kk]-p2[kk])+p3[kk]-p0[kk])));
expr[jj][kk] *= Sik[jj];
}
double* q = &dfctable[m1-1];
double* ri = &rinvsqrttable[m1-1];
double dfc = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
double rinvs = ri[1] + 0.5 * r1*(ri[2] - ri[0] + r1*(2.0*ri[0] - 5.0*ri[1] + 4.0*ri[2] - ri[3] + r1*(3.0*(ri[1] - ri[2]) + ri[3] - ri[0])));
expr[jj][p]=delx*rinvs;
expr[jj][p+1]=dely*rinvs;
expr[jj][p+2]=delz*rinvs;
//Hack to avoid nan when x y or z component of radial vector is exactly 0. Shouldn't affect accuracy.
if (expr[jj][p]*expr[jj][p]<0.000000000001) {
expr[jj][p] = 0.000001;
}
if (expr[jj][p+1]*expr[jj][p+1]<0.000000000001) {
expr[jj][p+1] = 0.000001;
}
if (expr[jj][p+2]*expr[jj][p+2]<0.000000000001) {
expr[jj][p+2] = 0.000001;
}
expr[jj][p+3] = -dfc*expr[jj][p]-dSikx[jj];
expr[jj][p+4] = rinvs/expr[jj][p];
expr[jj][p+5] = rinvs*expr[jj][p];
expr[jj][p+6] = -dfc*expr[jj][p+1]-dSiky[jj];
expr[jj][p+7] = rinvs/expr[jj][p+1];
expr[jj][p+8] = rinvs*expr[jj][p+1];
expr[jj][p+9] = -dfc*expr[jj][p+2]-dSikz[jj];
expr[jj][p+10] = rinvs/expr[jj][p+2];
expr[jj][p+11] = rinvs*expr[jj][p+2];
}
int kb = kmax;
int mb = mlength;
count = startingneuron;
double Bb[mb];
double Bbs[mb];
double dBbx;
double dBby;
double dBbz;
double yprod;
for (mcount=0;mcount<countmb;mcount++) {
int *M = Mf[mcount];
int *_coeffx = coeffx[mcount];
int *_coeffy = coeffy[mcount];
int *_coeffz = coeffz[mcount];
int *_coeff = coeff[mcount];
a = mb+1;
for (a1=0;a1<mb;a1++) {
if (Mf[mcount][a1+1]==0) {
a = a1;
break;
}
}
for (n=0;n<kb;n++) {
for (a1=0;a1<mb;a1++) {
Bb[a1]=0;
Bbs[a1]=0;
}
ai = n;
double y1 = alpha_k[ai]/re;
//loop over jtype to get Bb
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
double yprod = expr[jj][ai];
double *y4 = &expr[jj][p];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
for (a2=a;a2<mb;a2++) {
Bb[a2]=Bb[a2]+yprod;
Bbs[a2]=Bbs[a2]+yprod*sp;
yprod *= y4[M[a2+1]];
}
}
if (atomtypes[1]!=atomtypes[2]) {//Bb!=Bg
double Bg[mb];
double Bgs[mb];
for (a1=0;a1<mb;a1++) {
Bg[a1]=0;
Bgs[a1]=0;
}
ai = n;
double y1 = alpha_k[ai]/re;
//loop over ktype to get Bg
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[2] != nelements && atomtypes[2] != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
double yprod = expr[jj][ai];
double *y4 = &expr[jj][p];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
for (a2=a;a2<mb;a2++) {
Bg[a2]=Bg[a2]+yprod;
Bgs[a2]=Bgs[a2]+yprod*sp;
yprod *= y4[M[a2+1]];
}
}
double B1;
//loop over ktype to get dBg*Bb
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[2] != nelements && atomtypes[2] != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = Bbs[a2]*_coeff[a2]*yprod*sp;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
dspinx[ai] += yprod*Bbs[a2]*_coeff[a2]*si[0];
dspiny[ai] += yprod*Bbs[a2]*_coeff[a2]*si[1];
dspinz[ai] += yprod*Bbs[a2]*_coeff[a2]*si[2];
dspinx[ai-jj*f+jnum*f] += yprod*Bbs[a2]*_coeff[a2]*sj[0];
dspiny[ai-jj*f+jnum*f] += yprod*Bbs[a2]*_coeff[a2]*sj[1];
dspinz[ai-jj*f+jnum*f] += yprod*Bbs[a2]*_coeff[a2]*sj[2];
yprod *= y4[M[a2+1]];
ai++;
for (kk=0;kk<jnum;kk++) {
if (Bij[kk]==false) {continue;}
dfeaturesx[n*mb+a2+count+kk*f]+=B1*dSijkx[jj*jnum+kk];
dfeaturesy[n*mb+a2+count+kk*f]+=B1*dSijky[jj*jnum+kk];
dfeaturesz[n*mb+a2+count+kk*f]+=B1*dSijkz[jj*jnum+kk];
}
}
}
//loop over jtype to get dBb*Bg
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = Bgs[a2]*_coeff[a2]*yprod*sp;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
dspinx[ai] += Bgs[a2]*yprod*_coeff[a2]*si[0];
dspiny[ai] += Bgs[a2]*yprod*_coeff[a2]*si[1];
dspinz[ai] += Bgs[a2]*yprod*_coeff[a2]*si[2];
dspinx[ai-jj*f+jnum*f] += yprod*Bgs[a2]*_coeff[a2]*sj[0];
dspiny[ai-jj*f+jnum*f] += yprod*Bgs[a2]*_coeff[a2]*sj[1];
dspinz[ai-jj*f+jnum*f] += yprod*Bgs[a2]*_coeff[a2]*sj[2];
yprod *= y4[M[a2+1]];
ai++;
for (kk=0;kk<jnum;kk++) {
if (Bij[kk]==false) {continue;}
dfeaturesx[n*mb+a2+count+kk*f]+=B1*dSijkx[jj*jnum+kk];
dfeaturesy[n*mb+a2+count+kk*f]+=B1*dSijky[jj*jnum+kk];
dfeaturesz[n*mb+a2+count+kk*f]+=B1*dSijkz[jj*jnum+kk];
}
}
}
//central atom derivative
for (a2=a;a2<mb;a2++) {
ai = n*(mb)+a2+count+jnum*f;
features[ai-jnum*f] += Bbs[a2]*Bgs[a2]*_coeff[a2];
}
}
else{//Bb=Bg
double B1;
//loop over jtype to get 2*Bb*dBb
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = 2*Bbs[a2]*_coeff[a2]*yprod*sp;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
dspinx[ai] += 2*Bbs[a2]*yprod*_coeff[a2]*si[0];
dspiny[ai] += 2*Bbs[a2]*yprod*_coeff[a2]*si[1];
dspinz[ai] += 2*Bbs[a2]*yprod*_coeff[a2]*si[2];
dspinx[ai-jj*f+jnum*f] += 2*yprod*Bbs[a2]*_coeff[a2]*sj[0];
dspiny[ai-jj*f+jnum*f] += 2*yprod*Bbs[a2]*_coeff[a2]*sj[1];
dspinz[ai-jj*f+jnum*f] += 2*yprod*Bbs[a2]*_coeff[a2]*sj[2];
yprod *= y4[M[a2+1]];
ai++;
for (kk=0;kk<jnum;kk++) {
if (Bij[kk]==false) {continue;}
dfeaturesx[n*mb+a2+count+kk*f]+=B1*dSijkx[jj*jnum+kk];
dfeaturesy[n*mb+a2+count+kk*f]+=B1*dSijky[jj*jnum+kk];
dfeaturesz[n*mb+a2+count+kk*f]+=B1*dSijkz[jj*jnum+kk];
}
}
}
//central atom derivative
for (a2=a;a2<mb;a2++) {
ai = n*(mb)+a2+count+jnum*f;
features[ai-jnum*f] += Bbs[a2]*Bbs[a2]*_coeff[a2];
}
}
}
}
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
count = startingneuron;
for (n=0;n<kb;n++) {
for (m=0;m<mb;m++) {
dfeaturesx[jnum*f+count]-=dfeaturesx[jj*f+count];
dfeaturesy[jnum*f+count]-=dfeaturesy[jj*f+count];
dfeaturesz[jnum*f+count]-=dfeaturesz[jj*f+count];
count++;
}
}
}
}
//Called by do3bodyfeatureset. Algorithm for low neighbor numbers and large series of bond angle powers
void Fingerprint_bondscreenedspin::do3bodyfeatureset_doubleneighborloop(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz, double *dspinx, double *dspiny, double *dspinz,double *Sik, double *dSikx, double*dSiky, double *dSikz, double *dSijkx, double *dSijky, double *dSijkz, bool *Bij, int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i,j,jj,itype,jtype,ktype,kk,m,n;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
int jtypes = atomtypes[1];
int ktypes = atomtypes[2];
int count=0;
PairRANN::Simulation *sim = &pair->sims[sid];
int *type = sim->type;
int nelements = pair->nelements;
int res = pair->res;
double cutmax = pair->cutmax;
double cutinv2 = 1/cutmax/cutmax;
ilist = sim->ilist;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double expr[jnum][kmax];
double y[jnum][3];
double ri[jnum];
double dfc[jnum];
int kb = kmax;
int mb = mlength;
double Bijk[kb][mb];
double c41[kmax];
double c51[kmax];
double c61[kmax];
double ct[kmax];
double *si = sim->s[i];
for (jj = 0; jj < jnum; jj++) {
if (Bij[jj]==false) {continue;}
jtype = tn[jj];
if (jtypes != nelements && jtypes != jtype && ktypes != nelements && ktypes != jtype) {
expr[jj][0]=0;
continue;
}
delx = xn[jj];
dely = yn[jj];
delz = zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq>rc*rc) {
expr[jj][0]=0;
continue;
}
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
if (!(m1>=1 && m1 <= res))pair->errorf(FLERR,"Neighbor list is invalid.");//usually results from nan somewhere.
r1 = r1-trunc(r1);
double *p0 = &expcuttable[(m1-1)*kmax];
double *p1 = &expcuttable[m1*kmax];
double *p2 = &expcuttable[(m1+1)*kmax];
double *p3 = &expcuttable[(m1+2)*kmax];
for (kk=0;kk<kmax;kk++) {
expr[jj][kk] = p1[kk]+0.5*r1*(p2[kk]-p0[kk]+r1*(2.0*p0[kk]-5.0*p1[kk]+4.0*p2[kk]-p3[kk]+r1*(3.0*(p1[kk]-p2[kk])+p3[kk]-p0[kk])));
expr[jj][kk] *= Sik[jj];
}
double* q = &dfctable[m1-1];
double* r2 = &rinvsqrttable[m1-1];
dfc[jj] = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
ri[jj] = r2[1] + 0.5 * r1*(r2[2] - r2[0] + r1*(2.0*r2[0] - 5.0*r2[1] + 4.0*r2[2] - r2[3] + r1*(3.0*(r2[1] - r2[2]) + r2[3] - r2[0])));
y[jj][0]=delx*ri[jj];
y[jj][1]=dely*ri[jj];
y[jj][2]=delz*ri[jj];
}
for (jj = 0; jj < jnum; jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0)continue;
jtype =tn[jj];
if (jtypes != nelements && jtypes != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double spj = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
for (n = 0;n<kmax;n++) {
ct[n] = alpha_k[n]/re;
c41[n]=(-ct[n]+dfc[jj])*y[jj][0]+dSikx[jj];
c51[n]=(-ct[n]+dfc[jj])*y[jj][1]+dSiky[jj];
c61[n]=(-ct[n]+dfc[jj])*y[jj][2]+dSikz[jj];
}
for (n=0;n<kb;n++) {for (m=0;m<mb;m++) {Bijk[n][m]=0;}}
for (kk=0;kk< jnum; kk++) {
if (Bij[kk]==false) {continue;}
if (expr[kk][0]==0)continue;
ktype = tn[kk];
if (ktypes != nelements && ktypes != ktype) {
continue;
}
j = jl[kk];
double *sk = sim->s[j];
double spk = si[0]*sk[0]+si[1]*sk[1]+si[2]*sk[2];
count = startingneuron;
double dot = (y[jj][0]*y[kk][0]+y[jj][1]*y[kk][1]+y[jj][2]*y[kk][2]);
double c1 = ri[jj]*(y[kk][0]-dot*y[jj][0]);
double c2 = ri[jj]*(y[kk][1]-dot*y[jj][1]);
double c3 = ri[jj]*(y[kk][2]-dot*y[jj][2]);
double c10 = ri[kk]*(y[jj][0]-dot*y[kk][0]);
double c11 = ri[kk]*(y[jj][1]-dot*y[kk][1]);
double c12 = ri[kk]*(y[jj][2]-dot*y[kk][2]);
for (n=0;n<kb;n++) {
double dot1=expr[jj][n]*expr[kk][n];
double c4 = c41[n];
double c5 = c51[n];
double c6 = c61[n];
double ct2 = -ct[n]+dfc[kk];
double c42 = ct2*y[kk][0]+dSikx[kk];
double c52 = ct2*y[kk][1]+dSiky[kk];
double c62 = ct2*y[kk][2]+dSikz[kk];
//m=0
Bijk[n][0]+=dot1*spj*spk;
features[count]+=dot1*spj*spk;
dspinx[jj*f+count] += dot1*si[0]*spk;
dspiny[jj*f+count] += dot1*si[1]*spk;
dspinz[jj*f+count] += dot1*si[2]*spk;
dspinx[kk*f+count] += dot1*si[0]*spj;
dspiny[kk*f+count] += dot1*si[1]*spj;
dspinz[kk*f+count] += dot1*si[2]*spj;
dspinx[jnum*f+count] += dot1*(sj[0]*spk+sk[0]*spj);
dspiny[jnum*f+count] += dot1*(sj[1]*spk+sk[1]*spj);
dspinz[jnum*f+count] += dot1*(sj[2]*spk+sk[2]*spj);
dfeaturesx[jj*f+count]+=dot1*c4*spj*spk;
dfeaturesy[jj*f+count]+=dot1*c5*spj*spk;
dfeaturesz[jj*f+count]+=dot1*c6*spj*spk;
dfeaturesx[kk*f+count]+=dot1*c42*spj*spk;
dfeaturesy[kk*f+count]+=dot1*c52*spj*spk;
dfeaturesz[kk*f+count]+=dot1*c62*spj*spk;
c4*=dot;
c5*=dot;
c6*=dot;
c42*=dot;
c52*=dot;
c62*=dot;
count++;
for (m=1;m<mb;m++) {
double c7 = dot1*(m*c1+c4);
double c8 = dot1*(m*c2+c5);
double c9 = dot1*(m*c3+c6);
dfeaturesx[jj*f+count]+=c7*spj*spk;
dfeaturesy[jj*f+count]+=c8*spj*spk;
dfeaturesz[jj*f+count]+=c9*spj*spk;
dfeaturesx[kk*f+count]+=dot1*(m*c10+c42)*spj*spk;
dfeaturesy[kk*f+count]+=dot1*(m*c11+c52)*spj*spk;
dfeaturesz[kk*f+count]+=dot1*(m*c12+c62)*spj*spk;
dot1*=dot;
dspinx[jj*f+count] += dot1*si[0]*spk;
dspiny[jj*f+count] += dot1*si[1]*spk;
dspinz[jj*f+count] += dot1*si[2]*spk;
dspinx[kk*f+count] += dot1*si[0]*spj;
dspiny[kk*f+count] += dot1*si[1]*spj;
dspinz[kk*f+count] += dot1*si[2]*spj;
dspinx[jnum*f+count] += dot1*(sj[0]*spk+sk[0]*spj);
dspiny[jnum*f+count] += dot1*(sj[1]*spk+sk[1]*spj);
dspinz[jnum*f+count] += dot1*(sj[2]*spk+sk[2]*spj);
Bijk[n][m] += dot1*spj*spk;
features[count++]+=dot1*spj*spk;
}
}
}
for (kk=0;kk<jnum;kk++) {
if (Bij[kk]==false) {continue;}
if (expr[kk][0]==0)continue;
ktype = tn[kk];
if (ktypes != nelements && ktypes != ktype) {
continue;
}
count = startingneuron;
for (n=0;n<kb;n++) {
for (m=0;m<mb;m++) {
dfeaturesx[kk*f+count]+=2*Bijk[n][m]*dSijkx[jj*jnum+kk];
dfeaturesy[kk*f+count]+=2*Bijk[n][m]*dSijky[jj*jnum+kk];
dfeaturesz[kk*f+count]+=2*Bijk[n][m]*dSijkz[jj*jnum+kk];
count++;
}
}
}
}
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
if (expr[jj][0]==0) {continue;}
count = startingneuron;
for (n=0;n<kb;n++) {
for (m=0;m<mb;m++) {
dfeaturesx[jnum*f+count]-=dfeaturesx[jj*f+count];
dfeaturesy[jnum*f+count]-=dfeaturesy[jj*f+count];
dfeaturesz[jnum*f+count]-=dfeaturesz[jj*f+count];
count++;
}
}
}
}

View File

@ -0,0 +1,72 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifndef LMP_RANN_FINGERPRINT_BONDSCREENEDSPIN_H
#define LMP_RANN_FINGERPRINT_BONDSCREENEDSPIN_H
#include "rann_fingerprint.h"
namespace LAMMPS_NS {
namespace RANN {
class Fingerprint_bondscreenedspin : public Fingerprint {
public:
Fingerprint_bondscreenedspin(PairRANN *);
~Fingerprint_bondscreenedspin();
bool parse_values(std::string,std::vector<std::string>);
void write_values(FILE *);
void init(int*,int);
void allocate();
void compute_fingerprint(double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,bool*,int,int,double*,double*,double*,int*,int,int*);
void do3bodyfeatureset_doubleneighborloop(double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,bool*,int,int,double*,double*,double*,int*,int,int *);
void do3bodyfeatureset_singleneighborloop(double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,bool*,int,int,double*,double*,double*,int*,int,int*);
void generate_exp_cut_table();
void generate_coefficients();
int get_length();
double *expcuttable;
double *dfctable;
double dr;
double *alpha_k;
double re;
int **coeff;
int **coeffx;
int **coeffy;
int **coeffz;
int kmax;
int mlength;
int **Mf;
};
}
}
#endif /* FINGERPRINT_BOND_H_ */

View File

@ -0,0 +1,888 @@
// clang-format off
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#include "rann_fingerprint_bondspin.h"
using namespace LAMMPS_NS::RANN;
Fingerprint_bondspin::Fingerprint_bondspin(PairRANN *_pair) : Fingerprint(_pair)
{
n_body_type = 3;
dr = 0;
re = 0;
rc = 0;
alpha_k = new double [1];
alpha_k[0] = -1;
kmax = 0;
mlength = 0;
id = -1;
style = "bondspin";
atomtypes = new int [n_body_type];
empty = true;
_pair->allscreen = false;
_pair->dospin = true;
spin = true;
}
Fingerprint_bondspin::~Fingerprint_bondspin() {
delete [] alpha_k;
delete [] atomtypes;
delete [] expcuttable;
delete [] dfctable;
for (int i=0;i<(mlength*(mlength+1))>>1;i++) {
delete [] coeff[i];
delete [] coeffx[i];
delete [] coeffy[i];
delete [] coeffz[i];
delete [] Mf[i];
}
delete [] coeff;
delete [] coeffx;
delete [] coeffy;
delete [] coeffz;
delete [] Mf;
delete [] rinvsqrttable;
}
bool Fingerprint_bondspin::parse_values(std::string constant,std::vector<std::string> line1) {
int nwords,l;
nwords=line1.size();
if (constant.compare("re")==0) {
re = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("rc")==0) {
rc = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("alphak")==0) {
delete [] alpha_k;
alpha_k = new double [nwords];
for (l=0;l<nwords;l++) {
alpha_k[l]=strtod(line1[l].c_str(),NULL);
}
}
else if (constant.compare("dr")==0) {
dr = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("k")==0) {
kmax = strtol(line1[0].c_str(),NULL,10);
}
else if (constant.compare("m")==0) {
mlength = strtol(line1[0].c_str(),NULL,10);
}
else pair->errorf(FLERR,"Undefined value for bond power");
if (re!=0.0 && rc!=0.0 && alpha_k[0]!=-1 && dr!=0.0 && mlength!=0 && kmax!=0)return true;
return false;
}
void Fingerprint_bondspin::write_values(FILE *fid) {
int i;
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:re:\n",style,id);
fprintf(fid,"%f\n",re);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:rc:\n",style,id);
fprintf(fid,"%f\n",rc);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:alphak:\n",style,id);
for (i=0;i<kmax;i++) {
fprintf(fid,"%f ",alpha_k[i]);
}
fprintf(fid,"\n");
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:dr:\n",style,id);
fprintf(fid,"%f\n",dr);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:k:\n",style,id);
fprintf(fid,"%d\n",kmax);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:m:\n",style,id);
fprintf(fid,"%d\n",mlength);
}
void Fingerprint_bondspin::init(int *i,int _id) {
for (int j=0;j<n_body_type;j++) {atomtypes[j] = i[j];}
re = 0;
rc = 0;
mlength = 0;
kmax = 0;
alpha_k = new double [1];
alpha_k[0]=-1;
empty = false;
id = _id;
}
//number of neurons defined by this fingerprint
int Fingerprint_bondspin::get_length() {
return mlength*kmax;
}
void Fingerprint_bondspin::allocate() {
generate_exp_cut_table();
generate_coefficients();
generate_rinvssqrttable();
}
//Generate table of complex functions for quick reference during compute. Used by do3bodyfeatureset_singleneighborloop and do3bodyfeatureset_doubleneighborloop.
void Fingerprint_bondspin::generate_exp_cut_table() {
int m,n;
double r1;
int buf = 5;
int res = pair->res;
double cutmax = pair->cutmax;
expcuttable = new double [(res+buf)*(kmax)];
dfctable = new double [res+buf];
for (m=0;m<(res+buf);m++) {
r1 = cutmax*cutmax*(double)(m)/(double)(res);
for (n=0;n<(kmax);n++) {
expcuttable[n+m*(kmax)] = exp(-alpha_k[n]/re*sqrt(r1))*cutofffunction(sqrt(r1),rc,dr);
}
if (sqrt(r1)>=rc || sqrt(r1) <= (rc-dr)) {
dfctable[m]=0;
}
else{
dfctable[m]=-8*pow(1-(rc-sqrt(r1))/dr,3)/dr/(1-pow(1-(rc-sqrt(r1))/dr,4));
}
}
}
//Generate table of complex functions for quick reference during compute. Used by do3bodyfeatureset_singleneighborloop.
void Fingerprint_bondspin::generate_coefficients() { //calculates multinomial coefficient for each term
int p,mb,mc;
int n,p1,i1;
mb = mlength;
mc=(mb*(mb+1))>>1;
coeff = new int *[mc];
coeffx = new int *[mc];
coeffy = new int *[mc];
coeffz = new int *[mc];
for (p=0;p<mc;p++) {
coeff[p]=new int [mb];
coeffx[p]=new int [mb];
coeffy[p]=new int [mb];
coeffz[p]=new int [mb];
}
Mf = new int*[mc];
int *M = new int[mlength+1];
for (p=0;p<mlength+1;p++) {
M[p]=0;
}
for (p1=0;p1<mc;p1++) {
Mf[p1] = new int[mlength+1];
for (p=0;p<mlength+1;p++) {
Mf[p1][p]=0;
}
}
M[0] = 2;
Mf[0][0] = 2;
n = 1;
int m1 = 1;
bool go = true;
bool broke = false;
while (go) {
broke = false;
for (i1=0;i1<mlength-1;i1++) {
if (M[i1+1] == 0) {
M[i1+1]=M[i1+1]+1;
for (p1=0;p1<mlength+1;p1++) {
Mf[n][p1] = M[p1];
}
n = n+1;
broke = true;
break;
}
}
if (m1<mlength && !broke) {
M[m1]=M[m1]+1;
for (p1=m1+1;p1<mlength+1;p1++) {
M[p1]=0;
}
for (p1=0;p1<mlength+1;p1++) {
Mf[n][p1]=M[p1];
}
n=n+1;
broke = true;
m1 = m1+1;
}
if (!broke) {
go = false;
}
}
for (p=0;p<mb;p++) {
for (p1=0;p1<mc;p1++) {
if (p==0) {
coeffx[p1][p]=0;
coeffy[p1][p]=0;
coeffz[p1][p]=0;
}
else{
coeffx[p1][p]=coeffx[p1][p-1];
if (Mf[p1][p]==0) {
coeffx[p1][p]++;
}
coeffy[p1][p]=coeffy[p1][p-1];
if (Mf[p1][p]==1) {
coeffy[p1][p]++;
}
coeffz[p1][p]=coeffz[p1][p-1];
if (Mf[p1][p]==2) {
coeffz[p1][p]++;
}
}
coeff[p1][p] = pair->factorial(p)/pair->factorial(coeffx[p1][p])/pair->factorial(coeffy[p1][p])/pair->factorial(coeffz[p1][p]);
}
}
}
//Called by getproperties. Gets 3-body features and dfeatures
void Fingerprint_bondspin::compute_fingerprint(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,double * dspinx,double *dspiny,double *dspinz,int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i;
int *ilist,*numneigh;
PairRANN::Simulation *sim = &pair->sims[sid];
ilist = sim->ilist;
numneigh = sim->numneigh;
i = ilist[ii];
//select the more efficient algorithm for this particular potential and environment.
if (jnum*2>(mlength+1)*mlength*20) {
do3bodyfeatureset_singleneighborloop(features,dfeaturesx,dfeaturesy,dfeaturesz,dspinx,dspiny,dspinz,ii,sid,xn,yn,zn,tn,jnum,jl);
}
else{
do3bodyfeatureset_doubleneighborloop(features,dfeaturesx,dfeaturesy,dfeaturesz,dspinx,dspiny,dspinz,ii,sid,xn,yn,zn,tn,jnum,jl);
}
}
//Called by do3bodyfeatureset. Algorithm for high neighbor numbers and small series of bond angle powers
void Fingerprint_bondspin::do3bodyfeatureset_singleneighborloop(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,double * dspinx,double *dspiny,double *dspinz,int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i,j,jj,itype,jtype,kk,m,n,mcount,a,a1,a2,ai;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
int count=0;
PairRANN::Simulation *sim = &pair->sims[sid];
int *type = sim->type;
double cutmax = pair->cutmax;
int res = pair->res;
double cutinv2 = 1/cutmax/cutmax;
ilist = sim->ilist;
int nelements=pair->nelements;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double expr[jnum][kmax+12];
int p = kmax;
int countmb=((mlength)*(mlength+1))>>1;
double *si = sim->s[i];
// calculate interpolation expr, rinvs and dfc, for each neighbor
for (jj = 0; jj < jnum; jj++) {
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype && atomtypes[2] != nelements && atomtypes[2] != jtype) {
expr[jj][0]=0;
continue;
}
delx = xn[jj];
dely = yn[jj];
delz = zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq>rc*rc) {
expr[jj][0]=0;
continue;
}
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
r1 = r1-trunc(r1);
double *p0 = &expcuttable[(m1-1)*kmax];
double *p1 = &expcuttable[m1*kmax];
double *p2 = &expcuttable[(m1+1)*kmax];
double *p3 = &expcuttable[(m1+2)*kmax];
for (kk=0;kk<kmax;kk++) {
expr[jj][kk] = p1[kk]+0.5*r1*(p2[kk]-p0[kk]+r1*(2.0*p0[kk]-5.0*p1[kk]+4.0*p2[kk]-p3[kk]+r1*(3.0*(p1[kk]-p2[kk])+p3[kk]-p0[kk])));
}
double* q = &dfctable[m1-1];
double* ri = &rinvsqrttable[m1-1];
double dfc = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
double rinvs = ri[1] + 0.5 * r1*(ri[2] - ri[0] + r1*(2.0*ri[0] - 5.0*ri[1] + 4.0*ri[2] - ri[3] + r1*(3.0*(ri[1] - ri[2]) + ri[3] - ri[0])));
expr[jj][p]=delx*rinvs;
expr[jj][p+1]=dely*rinvs;
expr[jj][p+2]=delz*rinvs;
//Hack to avoid nan when x y or z component of radial vector is exactly 0. Shouldn't affect accuracy.
if (expr[jj][p]*expr[jj][p]<0.000000000001) {
expr[jj][p] = 0.000001;
}
if (expr[jj][p+1]*expr[jj][p+1]<0.000000000001) {
expr[jj][p+1] = 0.000001;
}
if (expr[jj][p+2]*expr[jj][p+2]<0.000000000001) {
expr[jj][p+2] = 0.000001;
}
expr[jj][p+3] = -dfc*expr[jj][p];
expr[jj][p+4] = rinvs/expr[jj][p];
expr[jj][p+5] = rinvs*expr[jj][p];
expr[jj][p+6] = -dfc*expr[jj][p+1];
expr[jj][p+7] = rinvs/expr[jj][p+1];
expr[jj][p+8] = rinvs*expr[jj][p+1];
expr[jj][p+9] = -dfc*expr[jj][p+2];
expr[jj][p+10] = rinvs/expr[jj][p+2];
expr[jj][p+11] = rinvs*expr[jj][p+2];
}
int kb = kmax;
int mb = mlength;
count = startingneuron;
double Bb[mb];
double Bbs[mb];
double dBbx;
double dBby;
double dBbz;
double yprod;
for (mcount=0;mcount<countmb;mcount++) {
int *M = Mf[mcount];
int *_coeffx = coeffx[mcount];
int *_coeffy = coeffy[mcount];
int *_coeffz = coeffz[mcount];
int *_coeff = coeff[mcount];
a = mb+1;
for (a1=0;a1<mb;a1++) {
if (Mf[mcount][a1+1]==0) {
a = a1;
break;
}
}
for (n=0;n<kb;n++) {
for (a1=0;a1<mb;a1++) {
Bb[a1]=0;
Bbs[a1]=0;
}
ai = n;
double y1 = alpha_k[ai]/re;
//loop over jtype to get Bb
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
double yprod = expr[jj][ai];
double *y4 = &expr[jj][p];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
for (a2=a;a2<mb;a2++) {
Bb[a2]=Bb[a2]+yprod;
Bbs[a2]=Bbs[a2]+yprod*sp;
yprod *= y4[M[a2+1]];
}
}
if (atomtypes[1]!=atomtypes[2]) {//Bb!=Bg
double Bg[mb];
double Bgs[mb];
for (a1=0;a1<mb;a1++) {
Bg[a1]=0;
Bgs[a1]=0;
}
ai = n;
double y1 = alpha_k[ai]/re;
//loop over ktype to get Bg
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[2] != nelements && atomtypes[2] != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
double yprod = expr[jj][ai];
double *y4 = &expr[jj][p];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
for (a2=a;a2<mb;a2++) {
Bg[a2]=Bg[a2]+yprod;
Bgs[a2]=Bgs[a2]+yprod*sp;
yprod *= y4[M[a2+1]];
}
}
double B1;
//loop over ktype to get dBg*Bb
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[2] != nelements && atomtypes[2] != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = Bbs[a2]*_coeff[a2]*yprod*sp;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
dspinx[ai] += yprod*Bbs[a2]*_coeff[a2]*si[0];
dspiny[ai] += yprod*Bbs[a2]*_coeff[a2]*si[1];
dspinz[ai] += yprod*Bbs[a2]*_coeff[a2]*si[2];
dspinx[ai-jj*f+jnum*f] += yprod*Bbs[a2]*_coeff[a2]*sj[0];
dspiny[ai-jj*f+jnum*f] += yprod*Bbs[a2]*_coeff[a2]*sj[1];
dspinz[ai-jj*f+jnum*f] += yprod*Bbs[a2]*_coeff[a2]*sj[2];
yprod *= y4[M[a2+1]];
ai++;
}
}
//loop over jtype to get dBb*Bg
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = Bgs[a2]*_coeff[a2]*yprod*sp;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
dspinx[ai] += Bgs[a2]*yprod*_coeff[a2]*si[0];
dspiny[ai] += Bgs[a2]*yprod*_coeff[a2]*si[1];
dspinz[ai] += Bgs[a2]*yprod*_coeff[a2]*si[2];
dspinx[ai-jj*f+jnum*f] += yprod*Bgs[a2]*_coeff[a2]*sj[0];
dspiny[ai-jj*f+jnum*f] += yprod*Bgs[a2]*_coeff[a2]*sj[1];
dspinz[ai-jj*f+jnum*f] += yprod*Bgs[a2]*_coeff[a2]*sj[2];
yprod *= y4[M[a2+1]];
ai++;
}
}
//central atom derivative
for (a2=a;a2<mb;a2++) {
ai = n*(mb)+a2+count+jnum*f;
features[ai-jnum*f] += Bbs[a2]*Bgs[a2]*_coeff[a2];
}
}
else{//Bb=Bg
double B1;
//loop over jtype to get 2*Bb*dBb
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
double *y3 = &expr[jj][p+3];
double *y4 = &expr[jj][p];
ai = n;
yprod = expr[jj][ai];
for (a2=0;a2<a;a2++) {
yprod *= y4[M[a2+1]];
}
ai = n*(mb)+a+count+jj*f;
for (a2=a;a2<mb;a2++) {
B1 = 2*Bbs[a2]*_coeff[a2]*yprod*sp;
dBbx = -B1*(y1*y4[0]+y3[0]-_coeffx[a2]*y3[1]+a2*y3[2]);
dBby = -B1*(y1*y4[1]+y3[3]-_coeffy[a2]*y3[4]+a2*y3[5]);
dBbz = -B1*(y1*y4[2]+y3[6]-_coeffz[a2]*y3[7]+a2*y3[8]);
dfeaturesx[ai] += dBbx;
dfeaturesy[ai] += dBby;
dfeaturesz[ai] += dBbz;
dspinx[ai] += 2*Bbs[a2]*yprod*_coeff[a2]*si[0];
dspiny[ai] += 2*Bbs[a2]*yprod*_coeff[a2]*si[1];
dspinz[ai] += 2*Bbs[a2]*yprod*_coeff[a2]*si[2];
dspinx[ai-jj*f+jnum*f] += 2*yprod*Bbs[a2]*_coeff[a2]*sj[0];
dspiny[ai-jj*f+jnum*f] += 2*yprod*Bbs[a2]*_coeff[a2]*sj[1];
dspinz[ai-jj*f+jnum*f] += 2*yprod*Bbs[a2]*_coeff[a2]*sj[2];
yprod *= y4[M[a2+1]];
ai++;
}
}
//central atom derivative
for (a2=a;a2<mb;a2++) {
ai = n*(mb)+a2+count+jnum*f;
features[ai-jnum*f] += Bbs[a2]*Bbs[a2]*_coeff[a2];
}
}
}
}
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
count = startingneuron;
for (n=0;n<kb;n++) {
for (m=0;m<mb;m++) {
dfeaturesx[jnum*f+count]-=dfeaturesx[jj*f+count];
dfeaturesy[jnum*f+count]-=dfeaturesy[jj*f+count];
dfeaturesz[jnum*f+count]-=dfeaturesz[jj*f+count];
count++;
}
}
}
}
//Called by do3bodyfeatureset. Algorithm for low neighbor numbers and large series of bond angle powers
void Fingerprint_bondspin::do3bodyfeatureset_doubleneighborloop(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,double * dspinx,double *dspiny,double *dspinz,int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl) {
int i,j,jj,itype,jtype,ktype,kk,m,n;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
int jtypes = atomtypes[1];
int ktypes = atomtypes[2];
int count=0;
PairRANN::Simulation *sim = &pair->sims[sid];
double **x = sim->x;
int *type = sim->type;
int nelements = pair->nelements;
int res = pair->res;
double cutmax = pair->cutmax;
double cutinv2 = 1/cutmax/cutmax;
ilist = sim->ilist;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double expr[jnum][kmax];
double y[jnum][3];
double ri[jnum];
double dfc[jnum];
int kb = kmax;
int mb = mlength;
double c41[kmax];
double c51[kmax];
double c61[kmax];
double ct[kmax];
double *si = sim->s[i];
for (jj = 0; jj < jnum; jj++) {
jtype = tn[jj];
if (jtypes != nelements && jtypes != jtype && ktypes != nelements && ktypes != jtype) {
expr[jj][0]=0;
continue;
}
delx = xn[jj];
dely = yn[jj];
delz = zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq>rc*rc) {
expr[jj][0]=0;
continue;
}
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
if (!(m1>=1 && m1 <= res))pair->errorf(FLERR,"Neighbor list is invalid.");//usually results from nan somewhere.
r1 = r1-trunc(r1);
double *p0 = &expcuttable[(m1-1)*kmax];
double *p1 = &expcuttable[m1*kmax];
double *p2 = &expcuttable[(m1+1)*kmax];
double *p3 = &expcuttable[(m1+2)*kmax];
for (kk=0;kk<kmax;kk++) {
expr[jj][kk] = p1[kk]+0.5*r1*(p2[kk]-p0[kk]+r1*(2.0*p0[kk]-5.0*p1[kk]+4.0*p2[kk]-p3[kk]+r1*(3.0*(p1[kk]-p2[kk])+p3[kk]-p0[kk])));
}
double* q = &dfctable[m1-1];
double* r2 = &rinvsqrttable[m1-1];
dfc[jj] = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
ri[jj] = r2[1] + 0.5 * r1*(r2[2] - r2[0] + r1*(2.0*r2[0] - 5.0*r2[1] + 4.0*r2[2] - r2[3] + r1*(3.0*(r2[1] - r2[2]) + r2[3] - r2[0])));
y[jj][0]=delx*ri[jj];
y[jj][1]=dely*ri[jj];
y[jj][2]=delz*ri[jj];
}
for (jj = 0; jj < jnum; jj++) {
if (expr[jj][0]==0)continue;
jtype = tn[jj];
if (jtypes != nelements && jtypes != jtype) {
continue;
}
j = jl[jj];
double *sj = sim->s[j];
double spj = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
for (n = 0;n<kmax;n++) {
ct[n] = 2*alpha_k[n]/re;
c41[n]=(-ct[n]+2*dfc[jj])*y[jj][0];
c51[n]=(-ct[n]+2*dfc[jj])*y[jj][1];
c61[n]= (-ct[n]+2*dfc[jj])*y[jj][2];
}
if (jtypes==ktypes) {
for (kk=jj+1;kk< jnum; kk++) {
if (expr[kk][0]==0)continue;
ktype = tn[kk];
if (ktypes != nelements && ktypes != ktype) {
continue;
}
j = jl[kk];
double *sk = sim->s[j];
double spk = si[0]*sk[0]+si[1]*sk[1]+si[2]*sk[2];
count = startingneuron;
double dot = (y[jj][0]*y[kk][0]+y[jj][1]*y[kk][1]+y[jj][2]*y[kk][2]);
double c1 = 2*ri[jj]*(y[kk][0]-dot*y[jj][0]);
double c2 = 2*ri[jj]*(y[kk][1]-dot*y[jj][1]);
double c3 = 2*ri[jj]*(y[kk][2]-dot*y[jj][2]);
double c10 = 2*ri[kk]*(y[jj][0]-dot*y[kk][0]);
double c11 = 2*ri[kk]*(y[jj][1]-dot*y[kk][1]);
double c12 = 2*ri[kk]*(y[jj][2]-dot*y[kk][2]);
for (n=0;n<kb;n++) {
double dot1=expr[jj][n]*expr[kk][n];
double c4 = c41[n];
double c5 = c51[n];
double c6 = c61[n];
double ct2 = -ct[n]+2*dfc[kk];
double c42 = ct2*y[kk][0];
double c52 = ct2*y[kk][1];
double c62 = ct2*y[kk][2];
//m=0
dspinx[jj*f+count] += 2*dot1*si[0]*spk;
dspiny[jj*f+count] += 2*dot1*si[1]*spk;
dspinz[jj*f+count] += 2*dot1*si[2]*spk;
dspinx[kk*f+count] += 2*dot1*si[0]*spj;
dspiny[kk*f+count] += 2*dot1*si[1]*spj;
dspinz[kk*f+count] += 2*dot1*si[2]*spj;
dspinx[jnum*f+count] += 2*dot1*(sj[0]*spk+sk[0]*spj);
dspiny[jnum*f+count] += 2*dot1*(sj[1]*spk+sk[1]*spj);
dspinz[jnum*f+count] += 2*dot1*(sj[2]*spk+sk[2]*spj);
features[count]+=2*dot1*spj*spk;
dfeaturesx[jj*f+count]+=dot1*c4*spj*spk;
dfeaturesy[jj*f+count]+=dot1*c5*spj*spk;
dfeaturesz[jj*f+count]+=dot1*c6*spj*spk;
dfeaturesx[kk*f+count]+=dot1*c42*spj*spk;
dfeaturesy[kk*f+count]+=dot1*c52*spj*spk;
dfeaturesz[kk*f+count]+=dot1*c62*spj*spk;
c4*=dot;
c5*=dot;
c6*=dot;
c42*=dot;
c52*=dot;
c62*=dot;
count++;
for (m=1;m<mb;m++) {
double c7 = dot1*(m*c1+c4);
double c8 = dot1*(m*c2+c5);
double c9 = dot1*(m*c3+c6);
dfeaturesx[jj*f+count]+=c7*spj*spk;
dfeaturesy[jj*f+count]+=c8*spj*spk;
dfeaturesz[jj*f+count]+=c9*spj*spk;
dfeaturesx[kk*f+count]+=dot1*(m*c10+c42)*spj*spk;
dfeaturesy[kk*f+count]+=dot1*(m*c11+c52)*spj*spk;
dfeaturesz[kk*f+count]+=dot1*(m*c12+c62)*spj*spk;
dot1*=dot;
dspinx[jj*f+count] += 2*dot1*si[0]*spk;
dspiny[jj*f+count] += 2*dot1*si[1]*spk;
dspinz[jj*f+count] += 2*dot1*si[2]*spk;
dspinx[kk*f+count] += 2*dot1*si[0]*spj;
dspiny[kk*f+count] += 2*dot1*si[1]*spj;
dspinz[kk*f+count] += 2*dot1*si[2]*spj;
dspinx[jnum*f+count] += 2*dot1*(sj[0]*spk+sk[0]*spj);
dspiny[jnum*f+count] += 2*dot1*(sj[1]*spk+sk[1]*spj);
dspinz[jnum*f+count] += 2*dot1*(sj[2]*spk+sk[2]*spj);
features[count++]+=2*dot1*spj*spk;
}
}
}
kk=jj;
if (ktypes == nelements || ktypes == jtype) {
count = startingneuron;
double dot = (y[jj][0]*y[kk][0]+y[jj][1]*y[kk][1]+y[jj][2]*y[kk][2]);
double c1 = 2*ri[jj]*(y[kk][0]-dot*y[jj][0]);
double c2 = 2*ri[jj]*(y[kk][1]-dot*y[jj][1]);
double c3 = 2*ri[jj]*(y[kk][2]-dot*y[jj][2]);
for (n=0;n<kb;n++) {
double dot1=expr[jj][n]*expr[kk][n];
double c4 = c41[n];
double c5 = c51[n];
double c6 = c61[n];
//m=0
features[count]+=dot1*spj*spj;
dspinx[jj*f+count] += 2*dot1*si[0]*spj;
dspiny[jj*f+count] += 2*dot1*si[1]*spj;
dspinz[jj*f+count] += 2*dot1*si[2]*spj;
dspinx[jnum*f+count] += 2*dot1*sj[0]*spj;
dspiny[jnum*f+count] += 2*dot1*sj[1]*spj;
dspinz[jnum*f+count] += 2*dot1*sj[2]*spj;
dfeaturesx[jj*f+count]+=dot1*c4*spj*spj;
dfeaturesy[jj*f+count]+=dot1*c5*spj*spj;
dfeaturesz[jj*f+count]+=dot1*c6*spj*spj;
c4*=dot;
c5*=dot;
c6*=dot;
count++;
for (m=1;m<mb;m++) {
double c7 = dot1*(m*c1+c4);
double c8 = dot1*(m*c2+c5);
double c9 = dot1*(m*c3+c6);
dfeaturesx[jj*f+count]+=c7*spj*spj;
dfeaturesy[jj*f+count]+=c8*spj*spj;
dfeaturesz[jj*f+count]+=c9*spj*spj;
dot1*=dot;
dspinx[jj*f+count] += 2*dot1*si[0]*spj;
dspiny[jj*f+count] += 2*dot1*si[1]*spj;
dspinz[jj*f+count] += 2*dot1*si[2]*spj;
dspinx[jnum*f+count] += 2*dot1*sj[0]*spj;
dspiny[jnum*f+count] += 2*dot1*sj[1]*spj;
dspinz[jnum*f+count] += 2*dot1*sj[2]*spj;
features[count++]+=dot1*spj*spj;
}
}
}
}
else {
for (kk=0;kk<jnum; kk++) {
if (expr[kk][0]==0)continue;
ktype = tn[kk];
if (ktypes != nelements && ktypes != ktype) {
continue;
}
j = jl[kk];
double *sk = sim->s[j];
double spk = si[0]*sk[0]+si[1]*sk[1]+si[2]*sk[2];
count = startingneuron;
double dot = (y[jj][0]*y[kk][0]+y[jj][1]*y[kk][1]+y[jj][2]*y[kk][2]);
double c1 = ri[jj]*(y[kk][0]-dot*y[jj][0]);
double c2 = ri[jj]*(y[kk][1]-dot*y[jj][1]);
double c3 = ri[jj]*(y[kk][2]-dot*y[jj][2]);
double c10 = ri[kk]*(y[jj][0]-dot*y[kk][0]);
double c11 = ri[kk]*(y[jj][1]-dot*y[kk][1]);
double c12 = ri[kk]*(y[jj][2]-dot*y[kk][2]);
for (n=0;n<kb;n++) {
double dot1=expr[jj][n]*expr[kk][n];
double c4 = c41[n]/2;
double c5 = c51[n]/2;
double c6 = c61[n]/2;
double ct2 = -ct[n]/2+dfc[kk];
double c42 = ct2*y[kk][0];
double c52 = ct2*y[kk][1];
double c62 = ct2*y[kk][2];
//m=0
features[count]+=dot1*spj*spk;
dspinx[jj*f+count] += dot1*si[0]*spk;
dspiny[jj*f+count] += dot1*si[1]*spk;
dspinz[jj*f+count] += dot1*si[2]*spk;
dspinx[kk*f+count] += dot1*si[0]*spj;
dspiny[kk*f+count] += dot1*si[1]*spj;
dspinz[kk*f+count] += dot1*si[2]*spj;
dspinx[jnum*f+count] += dot1*(sj[0]*spk+sk[0]*spj);
dspiny[jnum*f+count] += dot1*(sj[1]*spk+sk[1]*spj);
dspinz[jnum*f+count] += dot1*(sj[2]*spk+sk[2]*spj);
dfeaturesx[jj*f+count]+=dot1*c4*spj*spk;
dfeaturesy[jj*f+count]+=dot1*c5*spj*spk;
dfeaturesz[jj*f+count]+=dot1*c6*spj*spk;
dfeaturesx[kk*f+count]+=dot1*c42*spj*spk;
dfeaturesy[kk*f+count]+=dot1*c52*spj*spk;
dfeaturesz[kk*f+count]+=dot1*c62*spj*spk;
c4*=dot;
c5*=dot;
c6*=dot;
c42*=dot;
c52*=dot;
c62*=dot;
count++;
for (m=1;m<mb;m++) {
double c7 = dot1*(m*c1+c4);
double c8 = dot1*(m*c2+c5);
double c9 = dot1*(m*c3+c6);
dfeaturesx[jj*f+count]+=c7*spj*spk;
dfeaturesy[jj*f+count]+=c8*spj*spk;
dfeaturesz[jj*f+count]+=c9*spj*spk;
dfeaturesx[kk*f+count]+=dot1*(m*c10+c42)*spj*spk;
dfeaturesy[kk*f+count]+=dot1*(m*c11+c52)*spj*spk;
dfeaturesz[kk*f+count]+=dot1*(m*c12+c62)*spj*spk;
dot1*=dot;
dspinx[jj*f+count] += dot1*si[0]*spk;
dspiny[jj*f+count] += dot1*si[1]*spk;
dspinz[jj*f+count] += dot1*si[2]*spk;
dspinx[kk*f+count] += dot1*si[0]*spj;
dspiny[kk*f+count] += dot1*si[1]*spj;
dspinz[kk*f+count] += dot1*si[2]*spj;
dspinx[jnum*f+count] += dot1*(sj[0]*spk+sk[0]*spj);
dspiny[jnum*f+count] += dot1*(sj[1]*spk+sk[1]*spj);
dspinz[jnum*f+count] += dot1*(sj[2]*spk+sk[2]*spj);
features[count++]+=dot1*spj*spk;
}
}
}
}
}
for (jj=0;jj<jnum;jj++) {
if (expr[jj][0]==0) {continue;}
count = startingneuron;
for (n=0;n<kb;n++) {
for (m=0;m<mb;m++) {
dfeaturesx[jnum*f+count]-=dfeaturesx[jj*f+count];
dfeaturesy[jnum*f+count]-=dfeaturesy[jj*f+count];
dfeaturesz[jnum*f+count]-=dfeaturesz[jj*f+count];
count++;
}
}
}
}

View File

@ -0,0 +1,71 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifndef LMP_RANN_FINGERPRINT_BONDSPIN_H
#define LMP_RANN_FINGERPRINT_BONDSPIN_H
#include "rann_fingerprint.h"
namespace LAMMPS_NS {
namespace RANN {
class Fingerprint_bondspin : public Fingerprint {
public:
Fingerprint_bondspin(PairRANN *);
~Fingerprint_bondspin();
bool parse_values(std::string,std::vector<std::string>);
void write_values(FILE *);
void init(int*,int);
void allocate();
virtual void compute_fingerprint(double*,double*,double*,double*,double*,double*,double*,int,int,double*,double*,double*,int*,int,int*);//spin
void do3bodyfeatureset_doubleneighborloop(double*,double*,double*,double*,double*,double*,double*,int,int,double*,double*,double*,int*,int,int*);
void do3bodyfeatureset_singleneighborloop(double*,double*,double*,double*,double*,double*,double*,int,int,double*,double*,double*,int*,int,int*);
void generate_exp_cut_table();
void generate_coefficients();
int get_length();
double *expcuttable;
double *dfctable;
double dr;
double *alpha_k;
double re;
int **coeff;
int **coeffx;
int **coeffy;
int **coeffz;
int kmax;
int mlength;
int **Mf;
};
}
}
#endif /* FINGERPRINT_BOND_H_ */

View File

@ -0,0 +1,240 @@
// clang-format off
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#include "rann_fingerprint_radial.h"
using namespace LAMMPS_NS::RANN;
Fingerprint_radial::Fingerprint_radial(PairRANN *_pair) : Fingerprint(_pair)
{
n_body_type = 2;
dr = 0;
re = 0;
rc = 0;
alpha = new double [1];
alpha[0] = -1;
nmax = 0;
omin = 0;
id = -1;
style = "radial";
atomtypes = new int [n_body_type];
empty = true;
fullydefined = false;
_pair->allscreen = false;
}
Fingerprint_radial::~Fingerprint_radial()
{
delete [] atomtypes;
delete [] radialtable;
delete [] alpha;
delete [] dfctable;
delete [] rinvsqrttable;
}
bool Fingerprint_radial::parse_values(std::string constant,std::vector<std::string> line1) {
int l;
int nwords=line1.size();
if (constant.compare("re")==0) {
re = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("rc")==0) {
rc = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("alpha")==0) {
delete [] alpha;
alpha = new double [nwords];
for (l=0;l<nwords;l++) {
alpha[l]=strtod(line1[l].c_str(),NULL);
}
}
else if (constant.compare("dr")==0) {
dr = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("n")==0) {
nmax = strtol(line1[0].c_str(),NULL,10);
}
else if (constant.compare("o")==0) {
omin = strtol(line1[0].c_str(),NULL,10);
}
else pair->errorf(FLERR,"Undefined value for radial power");
//code will run with default o=0 if o is never specified. All other values must be defined in potential file.
if (re!=0 && rc!=0 && alpha!=0 && dr!=0 && nmax!=0)return true;
return false;
}
void Fingerprint_radial::write_values(FILE *fid) {
int i;
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:re:\n",style,id);
fprintf(fid,"%f\n",re);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:rc:\n",style,id);
fprintf(fid,"%f\n",rc);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:alpha:\n",style,id);
for (i=0;i<(nmax-omin+1);i++) {
fprintf(fid,"%f ",alpha[i]);
}
fprintf(fid,"\n");
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:dr:\n",style,id);
fprintf(fid,"%f\n",dr);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:o:\n",style,id);
fprintf(fid,"%d\n",omin);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:n:\n",style,id);
fprintf(fid,"%d\n",nmax);
}
//called after fingerprint is fully defined and tables can be computed.
void Fingerprint_radial::allocate()
{
int k,m;
double r1;
int buf = 5;
int res = pair->res;
double cutmax = pair->cutmax;
radialtable = new double [(res+buf)*get_length()];
dfctable = new double [res+buf];
for (k=0;k<(res+buf);k++) {
r1 = cutmax*cutmax*(double)(k)/(double)(res);
for (m=0;m<=(nmax-omin);m++) {
radialtable[k*(nmax-omin+1)+m]=pow(sqrt(r1)/re,m+omin)*exp(-alpha[m]*sqrt(r1)/re)*cutofffunction(sqrt(r1),rc,dr);
}
if (sqrt(r1)>=rc || sqrt(r1) <= (rc-dr)) {
dfctable[k]=0;
}
else{
dfctable[k]=-8*pow(1-(rc-sqrt(r1))/dr,3)/dr/(1-pow(1-(rc-sqrt(r1))/dr,4));
}
}
generate_rinvssqrttable();
}
//called after fingerprint is declared for i-j type, but before its parameters are read.
void Fingerprint_radial::init(int *i,int _id)
{
empty = false;
for (int j=0;j<n_body_type;j++) {atomtypes[j] = i[j];}
id = _id;
}
void Fingerprint_radial::compute_fingerprint(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl)
{
int nelements = pair->nelements;
int res = pair->res;
int i,j,jj,itype,jtype,l;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
//
PairRANN::Simulation *sim = &pair->sims[sid];
int count=0;
// double **x = sim->x;
int *type = sim->type;
ilist = sim->ilist;
double cutmax = pair->cutmax;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double cutinv2 = 1/cutmax/cutmax;
//loop over neighbors
for (jj = 0; jj < jnum; jj++) {
jtype =tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype)continue;
delx = xn[jj];
dely = yn[jj];
delz = zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq > rc*rc)continue;
count = startingneuron;
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
if (m1>res || m1<1) {pair->errorf(FLERR,"invalid neighbor radius!");}
if (radialtable[m1]==0) {continue;}
//cubic interpolation from tables
double *p1 = &radialtable[m1*(nmax-omin+1)];
double *p2 = &radialtable[(m1+1)*(nmax-omin+1)];
double *p3 = &radialtable[(m1+2)*(nmax-omin+1)];
double *p0 = &radialtable[(m1-1)*(nmax-omin+1)];
double *q = &dfctable[m1-1];
double *rinvs = &rinvsqrttable[m1-1];
r1 = r1-trunc(r1);
double dfc = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
double ri = rinvs[1] + 0.5 * r1*(rinvs[2] - rinvs[0] + r1*(2.0*rinvs[0] - 5.0*rinvs[1] + 4.0*rinvs[2] - rinvs[3] + r1*(3.0*(rinvs[1] - rinvs[2]) + rinvs[3] - rinvs[0])));
for (l=0;l<=(nmax-omin);l++) {
double rt = p1[l]+0.5*r1*(p2[l]-p0[l]+r1*(2.0*p0[l]-5.0*p1[l]+4.0*p2[l]-p3[l]+r1*(3.0*(p1[l]-p2[l])+p3[l]-p0[l])));
features[count]+=rt;
rt *= (l+omin)/rsq+(-alpha[l]/re+dfc)*ri;
//update neighbor's features
dfeaturesx[jj*f+count]+=rt*delx;
dfeaturesy[jj*f+count]+=rt*dely;
dfeaturesz[jj*f+count]+=rt*delz;
//update atom's features
dfeaturesx[jnum*f+count]-=rt*delx;
dfeaturesy[jnum*f+count]-=rt*dely;
dfeaturesz[jnum*f+count]-=rt*delz;
count++;
}
}
}
int Fingerprint_radial::get_length()
{
return nmax-omin+1;
}

View File

@ -0,0 +1,63 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifndef LMP_RANN_FINGERPRINT_RADIAL_H
#define LMP_RANN_FINGERPRINT_RADIAL_H
#include "rann_fingerprint.h"
namespace LAMMPS_NS {
namespace RANN {
class Fingerprint_radial : public Fingerprint {
public:
Fingerprint_radial(PairRANN *);
~Fingerprint_radial();
bool parse_values(std::string,std::vector<std::string>);
void write_values(FILE *);
void init(int*,int);
void allocate();
void compute_fingerprint(double*,double*,double*,double*,int,int,double*,double*,double*,int*,int,int*);
int get_length();
double *radialtable;
double *dfctable;
double dr;
double *alpha;
double re;
int nmax;//highest term
int omin;//lowest term
};
}
}
#endif /* FINGERPRINT_RADIAL_H_ */

View File

@ -0,0 +1,254 @@
// clang-format off
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#include "rann_fingerprint_radialscreened.h"
using namespace LAMMPS_NS::RANN;
Fingerprint_radialscreened::Fingerprint_radialscreened(PairRANN *_pair) : Fingerprint(_pair)
{
n_body_type = 2;
dr = 0;
re = 0;
rc = 0;
alpha = new double [1];
alpha[0] = -1;
nmax = 0;
omin = 0;
id = -1;
style = "radialscreened";
atomtypes = new int [n_body_type];
empty = true;
fullydefined = false;
_pair->doscreen = true;
screen = true;
}
Fingerprint_radialscreened::~Fingerprint_radialscreened()
{
delete [] atomtypes;
delete [] radialtable;
delete [] alpha;
delete [] dfctable;
delete [] rinvsqrttable;
}
bool Fingerprint_radialscreened::parse_values(std::string constant,std::vector<std::string> line1) {
int l;
int nwords=line1.size();
if (constant.compare("re")==0) {
re = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("rc")==0) {
rc = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("alpha")==0) {
delete [] alpha;
alpha = new double [nwords];
for (l=0;l<nwords;l++) {
alpha[l]=strtod(line1[l].c_str(),NULL);
}
}
else if (constant.compare("dr")==0) {
dr = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("n")==0) {
nmax = strtol(line1[0].c_str(),NULL,10);
}
else if (constant.compare("o")==0) {
omin = strtol(line1[0].c_str(),NULL,10);
}
else pair->errorf(FLERR,"Undefined value for radial power");
//code will run with default o=0 if o is never specified. All other values must be defined in potential file.
if (re!=0 && rc!=0 && alpha!=0 && dr!=0 && nmax!=0)return true;
return false;
}
void Fingerprint_radialscreened::write_values(FILE *fid) {
int i;
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:re:\n",style,id);
fprintf(fid,"%f\n",re);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:rc:\n",style,id);
fprintf(fid,"%f\n",rc);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:alpha:\n",style,id);
for (i=0;i<(nmax-omin+1);i++) {
fprintf(fid,"%f ",alpha[i]);
}
fprintf(fid,"\n");
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:dr:\n",style,id);
fprintf(fid,"%f\n",dr);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:o:\n",style,id);
fprintf(fid,"%d\n",omin);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:n:\n",style,id);
fprintf(fid,"%d\n",nmax);
}
//called after fingerprint is fully defined and tables can be computed.
void Fingerprint_radialscreened::allocate()
{
int k,m;
double r1;
int buf = 5;
int res = pair->res;
double cutmax = pair->cutmax;
radialtable = new double [(res+buf)*get_length()];
dfctable = new double [res+buf];
for (k=0;k<(res+buf);k++) {
r1 = cutmax*cutmax*(double)(k)/(double)(res);
for (m=0;m<=(nmax-omin);m++) {
radialtable[k*(nmax-omin+1)+m]=pow(sqrt(r1)/re,m+omin)*exp(-alpha[m]*sqrt(r1)/re)*cutofffunction(sqrt(r1),rc,dr);
}
if (sqrt(r1)>=rc || sqrt(r1) <= (rc-dr)) {
dfctable[k]=0;
}
else{
dfctable[k]=-8*pow(1-(rc-sqrt(r1))/dr,3)/dr/(1-pow(1-(rc-sqrt(r1))/dr,4));
}
}
generate_rinvssqrttable();
}
//called after fingerprint is declared for i-j type, but before its parameters are read.
void Fingerprint_radialscreened::init(int *i,int _id)
{
empty = false;
for (int j=0;j<n_body_type;j++) {atomtypes[j] = i[j];}
id = _id;
}
void Fingerprint_radialscreened::compute_fingerprint(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,double *Sik, double *dSikx, double*dSiky, double *dSikz, double *dSijkx, double *dSijky, double *dSijkz, bool *Bij,int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl)
{
int nelements = pair->nelements;
int res = pair->res;
int i,j,jj,itype,jtype,l,kk;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
//
PairRANN::Simulation *sim = &pair->sims[sid];
int count=0;
double **x = sim->x;
int *type = sim->type;
ilist = sim->ilist;
double cutmax = pair->cutmax;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double cutinv2 = 1/cutmax/cutmax;
//loop over neighbors
for (jj = 0; jj < jnum; jj++) {
if (Bij[jj]==false) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype)continue;
delx = xn[jj];
dely = yn[jj];
delz = zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq > rc*rc)continue;
count = startingneuron;
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
if (m1>res || m1<1) {pair->errorf(FLERR,"invalid neighbor radius!");}
if (radialtable[m1]==0) {continue;}
//cubic interpolation from tables
double *p1 = &radialtable[m1*(nmax-omin+1)];
double *p2 = &radialtable[(m1+1)*(nmax-omin+1)];
double *p3 = &radialtable[(m1+2)*(nmax-omin+1)];
double *p0 = &radialtable[(m1-1)*(nmax-omin+1)];
double *q = &dfctable[m1-1];
double *rinvs = &rinvsqrttable[m1-1];
r1 = r1-trunc(r1);
double dfc = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
double ri = rinvs[1] + 0.5 * r1*(rinvs[2] - rinvs[0] + r1*(2.0*rinvs[0] - 5.0*rinvs[1] + 4.0*rinvs[2] - rinvs[3] + r1*(3.0*(rinvs[1] - rinvs[2]) + rinvs[3] - rinvs[0])));
for (l=0;l<=(nmax-omin);l++) {
double rt = Sik[jj]*(p1[l]+0.5*r1*(p2[l]-p0[l]+r1*(2.0*p0[l]-5.0*p1[l]+4.0*p2[l]-p3[l]+r1*(3.0*(p1[l]-p2[l])+p3[l]-p0[l]))));
features[count]+=rt;
double rt1 = rt*((l+omin)/rsq+(-alpha[l]/re+dfc)*ri);
//update neighbor's features
dfeaturesx[jj*f+count]+=rt1*delx+rt*dSikx[jj];
dfeaturesy[jj*f+count]+=rt1*dely+rt*dSiky[jj];
dfeaturesz[jj*f+count]+=rt1*delz+rt*dSikz[jj];
for (kk=0;kk<jnum;kk++) {
if (Bij[kk]==false) {continue;}
dfeaturesx[kk*f+count]+=rt*dSijkx[jj*jnum+kk];
dfeaturesy[kk*f+count]+=rt*dSijky[jj*jnum+kk];
dfeaturesz[kk*f+count]+=rt*dSijkz[jj*jnum+kk];
}
count++;
}
}
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
count = startingneuron;
for (l=0;l<=(nmax-omin);l++) {
dfeaturesx[jnum*f+count]-=dfeaturesx[jj*f+count];
dfeaturesy[jnum*f+count]-=dfeaturesy[jj*f+count];
dfeaturesz[jnum*f+count]-=dfeaturesz[jj*f+count];
count++;
}
}
}
int Fingerprint_radialscreened::get_length()
{
return nmax-omin+1;
}

View File

@ -0,0 +1,62 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifndef LMP_RANN_FINGERPRINT_RADIALSCREENED_H
#define LMP_RANN_FINGERPRINT_RADIALSCREENED_H
#include "rann_fingerprint.h"
namespace LAMMPS_NS {
namespace RANN {
class Fingerprint_radialscreened : public Fingerprint {
public:
Fingerprint_radialscreened(PairRANN *);
~Fingerprint_radialscreened();
bool parse_values(std::string,std::vector<std::string>);
void write_values(FILE *);
void init(int*,int);
void allocate();
void compute_fingerprint(double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,bool*,int,int,double*,double*,double*,int*,int,int*);
int get_length();
double *radialtable;
double *dfctable;
double dr;
double *alpha;
double re;
int nmax;//highest term
int omin;//lowest term
};
}
}
#endif /* FINGERPRINT_RADIALSCREENED_H_ */

View File

@ -0,0 +1,265 @@
// clang-format off
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#include "rann_fingerprint_radialscreenedspin.h"
using namespace LAMMPS_NS::RANN;
Fingerprint_radialscreenedspin::Fingerprint_radialscreenedspin(PairRANN *_pair) : Fingerprint(_pair)
{
n_body_type = 2;
dr = 0;
re = 0;
rc = 0;
alpha = new double [1];
alpha[0] = -1;
nmax = 0;
omin = 0;
id = -1;
style = "radialscreenedspin";
atomtypes = new int [n_body_type];
empty = true;
fullydefined = false;
_pair->doscreen = true;
screen = true;
_pair->dospin = true;
spin = true;
}
Fingerprint_radialscreenedspin::~Fingerprint_radialscreenedspin()
{
delete [] atomtypes;
delete [] radialtable;
delete [] alpha;
delete [] dfctable;
delete [] rinvsqrttable;
}
bool Fingerprint_radialscreenedspin::parse_values(std::string constant,std::vector<std::string> line1) {
int l;
int nwords=line1.size();
if (constant.compare("re")==0) {
re = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("rc")==0) {
rc = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("alpha")==0) {
delete [] alpha;
alpha = new double [nwords];
for (l=0;l<nwords;l++) {
alpha[l]=strtod(line1[l].c_str(),NULL);
}
}
else if (constant.compare("dr")==0) {
dr = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("n")==0) {
nmax = strtol(line1[0].c_str(),NULL,10);
}
else if (constant.compare("o")==0) {
omin = strtol(line1[0].c_str(),NULL,10);
}
else pair->errorf(FLERR,"Undefined value for radial power");
//code will run with default o=0 if o is never specified. All other values must be defined in potential file.
if (re!=0 && rc!=0 && alpha!=0 && dr!=0 && nmax!=0)return true;
return false;
}
void Fingerprint_radialscreenedspin::write_values(FILE *fid) {
int i;
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:re:\n",style,id);
fprintf(fid,"%f\n",re);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:rc:\n",style,id);
fprintf(fid,"%f\n",rc);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:alpha:\n",style,id);
for (i=0;i<(nmax-omin+1);i++) {
fprintf(fid,"%f ",alpha[i]);
}
fprintf(fid,"\n");
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:dr:\n",style,id);
fprintf(fid,"%f\n",dr);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:o:\n",style,id);
fprintf(fid,"%d\n",omin);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:n:\n",style,id);
fprintf(fid,"%d\n",nmax);
}
//called after fingerprint is fully defined and tables can be computed.
void Fingerprint_radialscreenedspin::allocate()
{
int k,m;
double r1;
int buf = 5;
int res = pair->res;
double cutmax = pair->cutmax;
radialtable = new double [(res+buf)*get_length()];
dfctable = new double [res+buf];
for (k=0;k<(res+buf);k++) {
r1 = cutmax*cutmax*(double)(k)/(double)(res);
for (m=0;m<=(nmax-omin);m++) {
radialtable[k*(nmax-omin+1)+m]=pow(sqrt(r1)/re,m+omin)*exp(-alpha[m]*sqrt(r1)/re)*cutofffunction(sqrt(r1),rc,dr);
}
if (sqrt(r1)>=rc || sqrt(r1) <= (rc-dr)) {
dfctable[k]=0;
}
else{
dfctable[k]=-8*pow(1-(rc-sqrt(r1))/dr,3)/dr/(1-pow(1-(rc-sqrt(r1))/dr,4));
}
}
generate_rinvssqrttable();
}
//called after fingerprint is declared for i-j type, but before its parameters are read.
void Fingerprint_radialscreenedspin::init(int *i,int _id)
{
empty = false;
for (int j=0;j<n_body_type;j++) {atomtypes[j] = i[j];}
id = _id;
}
void Fingerprint_radialscreenedspin::compute_fingerprint(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,double * dspinx,double *dspiny,double *dspinz,double *Sik, double *dSikx, double*dSiky, double *dSikz, double *dSijkx, double *dSijky, double *dSijkz, bool *Bij,int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl)
{
int nelements = pair->nelements;
int res = pair->res;
int i,j,jj,itype,jtype,l,kk;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
PairRANN::Simulation *sim = &pair->sims[sid];
int count=0;
double **x = sim->x;
int *type = sim->type;
ilist = sim->ilist;
double cutmax = pair->cutmax;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double cutinv2 = 1/cutmax/cutmax;
double *si = sim->s[i];
//loop over neighbors
for (jj = 0; jj < jnum; jj++) {
if (Bij[jj]==false) {continue;}
jtype = tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype)continue;
delx = xn[jj];
dely = yn[jj];
delz = zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq > rc*rc)continue;
count = startingneuron;
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
if (m1>res || m1<1) {pair->errorf(FLERR,"invalid neighbor radius!");}
if (radialtable[m1]==0) {continue;}
j=jl[jj];
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
//cubic interpolation from tables
double *p1 = &radialtable[m1*(nmax-omin+1)];
double *p2 = &radialtable[(m1+1)*(nmax-omin+1)];
double *p3 = &radialtable[(m1+2)*(nmax-omin+1)];
double *p0 = &radialtable[(m1-1)*(nmax-omin+1)];
double *q = &dfctable[m1-1];
double *rinvs = &rinvsqrttable[m1-1];
r1 = r1-trunc(r1);
double dfc = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
double ri = rinvs[1] + 0.5 * r1*(rinvs[2] - rinvs[0] + r1*(2.0*rinvs[0] - 5.0*rinvs[1] + 4.0*rinvs[2] - rinvs[3] + r1*(3.0*(rinvs[1] - rinvs[2]) + rinvs[3] - rinvs[0])));
for (l=0;l<=(nmax-omin);l++) {
double rt = Sik[jj]*(p1[l]+0.5*r1*(p2[l]-p0[l]+r1*(2.0*p0[l]-5.0*p1[l]+4.0*p2[l]-p3[l]+r1*(3.0*(p1[l]-p2[l])+p3[l]-p0[l]))));
//update neighbor's features
dspinx[jj*f+count]+=rt*si[0];
dspiny[jj*f+count]+=rt*si[1];
dspinz[jj*f+count]+=rt*si[2];
dspinx[jnum*f+count]+=rt*sj[0];
dspiny[jnum*f+count]+=rt*sj[1];
dspinz[jnum*f+count]+=rt*sj[2];
rt *= sp;
features[count]+=rt;
double rt1 = rt*((l+omin)/rsq+(-alpha[l]/re+dfc)*ri);
dfeaturesx[jj*f+count]+=rt1*delx+rt*dSikx[jj];
dfeaturesy[jj*f+count]+=rt1*dely+rt*dSiky[jj];
dfeaturesz[jj*f+count]+=rt1*delz+rt*dSikz[jj];
for (kk=0;kk<jnum;kk++) {
if (Bij[kk]==false) {continue;}
dfeaturesx[kk*f+count]+=rt*dSijkx[jj*jnum+kk];
dfeaturesy[kk*f+count]+=rt*dSijky[jj*jnum+kk];
dfeaturesz[kk*f+count]+=rt*dSijkz[jj*jnum+kk];
}
count++;
}
}
for (jj=0;jj<jnum;jj++) {
if (Bij[jj]==false) {continue;}
count = startingneuron;
for (l=0;l<=(nmax-omin);l++) {
dfeaturesx[jnum*f+count]-=dfeaturesx[jj*f+count];
dfeaturesy[jnum*f+count]-=dfeaturesy[jj*f+count];
dfeaturesz[jnum*f+count]-=dfeaturesz[jj*f+count];
count++;
}
}
}
int Fingerprint_radialscreenedspin::get_length()
{
return nmax-omin+1;
}

View File

@ -0,0 +1,62 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifndef LMP_RANN_FINGERPRINT_RADIALSCREENEDSPIN_H
#define LMP_RANN_FINGERPRINT_RADIALSCREENEDSPIN_H
#include "rann_fingerprint.h"
namespace LAMMPS_NS {
namespace RANN {
class Fingerprint_radialscreenedspin : public Fingerprint {
public:
Fingerprint_radialscreenedspin(PairRANN *);
~Fingerprint_radialscreenedspin();
bool parse_values(std::string,std::vector<std::string>);
void write_values(FILE *);
void init(int*,int);
void allocate();
virtual void compute_fingerprint(double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,double*,bool*,int,int,double*,double*,double*,int*,int,int*);//spin,screen
int get_length();
double *radialtable;
double *dfctable;
double dr;
double *alpha;
double re;
int nmax;//highest term
int omin;//lowest term
};
}
}
#endif /* FINGERPRINT_RADIALSCREENED_H_ */

View File

@ -0,0 +1,253 @@
// clang-format off
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#include "rann_fingerprint_radialspin.h"
using namespace LAMMPS_NS::RANN;
Fingerprint_radialspin::Fingerprint_radialspin(PairRANN *_pair) : Fingerprint(_pair)
{
n_body_type = 2;
dr = 0;
re = 0;
rc = 0;
alpha = new double [1];
alpha[0] = -1;
nmax = 0;
omin = 0;
id = -1;
style = "radialspin";
atomtypes = new int [n_body_type];
empty = true;
fullydefined = false;
_pair->allscreen = false;
_pair->dospin = true;
spin = true;
}
Fingerprint_radialspin::~Fingerprint_radialspin()
{
delete [] atomtypes;
delete [] radialtable;
delete [] alpha;
delete [] dfctable;
delete [] rinvsqrttable;
}
bool Fingerprint_radialspin::parse_values(std::string constant,std::vector<std::string> line1) {
int l;
int nwords=line1.size();
if (constant.compare("re")==0) {
re = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("rc")==0) {
rc = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("alpha")==0) {
delete [] alpha;
alpha = new double [nwords];
for (l=0;l<nwords;l++) {
alpha[l]=strtod(line1[l].c_str(),NULL);
}
}
else if (constant.compare("dr")==0) {
dr = strtod(line1[0].c_str(),NULL);
}
else if (constant.compare("n")==0) {
nmax = strtol(line1[0].c_str(),NULL,10);
}
else if (constant.compare("o")==0) {
omin = strtol(line1[0].c_str(),NULL,10);
}
else pair->errorf(FLERR,"Undefined value for radial power");
//code will run with default o=0 if o is never specified. All other values must be defined in potential file.
if (re!=0 && rc!=0 && alpha!=0 && dr!=0 && nmax!=0)return true;
return false;
}
void Fingerprint_radialspin::write_values(FILE *fid) {
int i;
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:re:\n",style,id);
fprintf(fid,"%f\n",re);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:rc:\n",style,id);
fprintf(fid,"%f\n",rc);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:alpha:\n",style,id);
for (i=0;i<(nmax-omin+1);i++) {
fprintf(fid,"%f ",alpha[i]);
}
fprintf(fid,"\n");
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:dr:\n",style,id);
fprintf(fid,"%f\n",dr);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:o:\n",style,id);
fprintf(fid,"%d\n",omin);
fprintf(fid,"fingerprintconstants:");
fprintf(fid,"%s",pair->elementsp[atomtypes[0]]);
for (i=1;i<n_body_type;i++) {
fprintf(fid,"_%s",pair->elementsp[atomtypes[i]]);
}
fprintf(fid,":%s_%d:n:\n",style,id);
fprintf(fid,"%d\n",nmax);
}
//called after fingerprint is fully defined and tables can be computed.
void Fingerprint_radialspin::allocate()
{
int k,m;
double r1;
int buf = 5;
int res = pair->res;
double cutmax = pair->cutmax;
radialtable = new double [(res+buf)*get_length()];
dfctable = new double [res+buf];
for (k=0;k<(res+buf);k++) {
r1 = cutmax*cutmax*(double)(k)/(double)(res);
for (m=0;m<=(nmax-omin);m++) {
radialtable[k*(nmax-omin+1)+m]=pow(sqrt(r1)/re,m+omin)*exp(-alpha[m]*sqrt(r1)/re)*cutofffunction(sqrt(r1),rc,dr);
}
if (sqrt(r1)>=rc || sqrt(r1) <= (rc-dr)) {
dfctable[k]=0;
}
else{
dfctable[k]=-8*pow(1-(rc-sqrt(r1))/dr,3)/dr/(1-pow(1-(rc-sqrt(r1))/dr,4));
}
}
generate_rinvssqrttable();
}
//called after fingerprint is declared for i-j type, but before its parameters are read.
void Fingerprint_radialspin::init(int *i,int _id)
{
empty = false;
for (int j=0;j<n_body_type;j++) {atomtypes[j] = i[j];}
id = _id;
}
void Fingerprint_radialspin::compute_fingerprint(double * features,double * dfeaturesx,double *dfeaturesy,double *dfeaturesz,double * dspinx,double *dspiny,double *dspinz,int ii,int sid,double *xn,double *yn,double*zn,int *tn,int jnum,int *jl)
{
int nelements = pair->nelements;
int res = pair->res;
int i,j,jj,itype,jtype,l;
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
//
PairRANN::Simulation *sim = &pair->sims[sid];
int count=0;
int *type = sim->type;
ilist = sim->ilist;
double cutmax = pair->cutmax;
i = ilist[ii];
itype = pair->map[type[i]];
int f = pair->net[itype].dimensions[0];
double cutinv2 = 1/cutmax/cutmax;
double *si = sim->s[i];
firstneigh = sim->firstneigh;
jlist = firstneigh[i];
//loop over neighbors
for (jj = 0; jj < jnum; jj++) {
j = jl[jj];
jtype =tn[jj];
if (atomtypes[1] != nelements && atomtypes[1] != jtype)continue;
delx = xn[jj];
dely = yn[jj];
delz = zn[jj];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq > rc*rc)continue;
count = startingneuron;
double r1 = (rsq*((double)res)*cutinv2);
int m1 = (int)r1;
if (m1>res || m1<1) {pair->errorf(FLERR,"invalid neighbor radius!");}
if (radialtable[m1]==0) {continue;}
double *sj = sim->s[j];
double sp = si[0]*sj[0]+si[1]*sj[1]+si[2]*sj[2];
//cubic interpolation from tables
double *p1 = &radialtable[m1*(nmax-omin+1)];
double *p2 = &radialtable[(m1+1)*(nmax-omin+1)];
double *p3 = &radialtable[(m1+2)*(nmax-omin+1)];
double *p0 = &radialtable[(m1-1)*(nmax-omin+1)];
double *q = &dfctable[m1-1];
double *rinvs = &rinvsqrttable[m1-1];
r1 = r1-trunc(r1);
double dfc = q[1] + 0.5 * r1*(q[2] - q[0] + r1*(2.0*q[0] - 5.0*q[1] + 4.0*q[2] - q[3] + r1*(3.0*(q[1] - q[2]) + q[3] - q[0])));
double ri = rinvs[1] + 0.5 * r1*(rinvs[2] - rinvs[0] + r1*(2.0*rinvs[0] - 5.0*rinvs[1] + 4.0*rinvs[2] - rinvs[3] + r1*(3.0*(rinvs[1] - rinvs[2]) + rinvs[3] - rinvs[0])));
for (l=0;l<=(nmax-omin);l++) {
double rt = p1[l]+0.5*r1*(p2[l]-p0[l]+r1*(2.0*p0[l]-5.0*p1[l]+4.0*p2[l]-p3[l]+r1*(3.0*(p1[l]-p2[l])+p3[l]-p0[l])));
dspinx[jj*f+count]+=rt*si[0];
dspiny[jj*f+count]+=rt*si[1];
dspinz[jj*f+count]+=rt*si[2];
dspinx[jnum*f+count]+=rt*sj[0];
dspiny[jnum*f+count]+=rt*sj[1];
dspinz[jnum*f+count]+=rt*sj[2];
rt *= sp;
features[count]+=rt;
rt *= (l+omin)/rsq+(-alpha[l]/re+dfc)*ri;
//update neighbor's features
dfeaturesx[jj*f+count]+=rt*delx;
dfeaturesy[jj*f+count]+=rt*dely;
dfeaturesz[jj*f+count]+=rt*delz;
//update atom's features
dfeaturesx[jnum*f+count]-=rt*delx;
dfeaturesy[jnum*f+count]-=rt*dely;
dfeaturesz[jnum*f+count]-=rt*delz;
count++;
}
}
}
int Fingerprint_radialspin::get_length()
{
return nmax-omin+1;
}

View File

@ -0,0 +1,62 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Christopher Barrett (MSU) barrett@me.msstate.edu
Doyl Dickel (MSU) doyl@me.msstate.edu
----------------------------------------------------------------------*/
/*
“The research described and the resulting data presented herein, unless
otherwise noted, was funded under PE 0602784A, Project T53 "Military
Engineering Applied Research", Task 002 under Contract No. W56HZV-17-C-0095,
managed by the U.S. Army Combat Capabilities Development Command (CCDC) and
the Engineer Research and Development Center (ERDC). The work described in
this document was conducted at CAVS, MSU. Permission was granted by ERDC
to publish this information. Any opinions, findings and conclusions or
recommendations expressed in this material are those of the author(s) and
do not necessarily reflect the views of the United States Army.​”
DISTRIBUTION A. Approved for public release; distribution unlimited. OPSEC#4918
*/
#ifndef LMP_RANN_FINGERPRINT_RADIALSPIN_H
#define LMP_RANN_FINGERPRINT_RADIALSPIN_H
#include "rann_fingerprint.h"
namespace LAMMPS_NS {
namespace RANN {
class Fingerprint_radialspin : public Fingerprint {
public:
Fingerprint_radialspin(PairRANN *);
~Fingerprint_radialspin();
bool parse_values(std::string,std::vector<std::string>);
void write_values(FILE *);
void init(int*,int);
void allocate();
void compute_fingerprint(double*,double*,double*,double*,double*,double*,double*,int,int,double*,double*,double*,int*,int,int*);
int get_length();
double *radialtable;
double *dfctable;
double dr;
double *alpha;
double re;
int nmax;//highest term
int omin;//lowest term
};
}
}
#endif /* FINGERPRINT_RADIAL_H_ */