Merge pull request #3996 from lafourcadep/snann_slcsa
Compute sna/atom on fixed number of neighbors and compute slcsa/atom (Supervised Learning Crystal Structure Analysis tool)
This commit is contained in:
@ -562,6 +562,9 @@ Bibliography
|
|||||||
**(Kumar)**
|
**(Kumar)**
|
||||||
Kumar and Skinner, J. Phys. Chem. B, 112, 8311 (2008)
|
Kumar and Skinner, J. Phys. Chem. B, 112, 8311 (2008)
|
||||||
|
|
||||||
|
**(Lafourcade)**
|
||||||
|
Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, and Marinica, `Comp. Mat. Science, 230, 112534 (2023) <https://doi.org/10.1016/j.commatsci.2023.112534>`_
|
||||||
|
|
||||||
**(Lamoureux and Roux)**
|
**(Lamoureux and Roux)**
|
||||||
G.\ Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003)
|
G.\ Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003)
|
||||||
|
|
||||||
|
|||||||
@ -123,6 +123,7 @@ KOKKOS, o = OPENMP, t = OPT.
|
|||||||
* :doc:`reduce/region <compute_reduce>`
|
* :doc:`reduce/region <compute_reduce>`
|
||||||
* :doc:`rigid/local <compute_rigid_local>`
|
* :doc:`rigid/local <compute_rigid_local>`
|
||||||
* :doc:`saed <compute_saed>`
|
* :doc:`saed <compute_saed>`
|
||||||
|
* :doc:`slcsa/atom <compute_slcsa_atom>`
|
||||||
* :doc:`slice <compute_slice>`
|
* :doc:`slice <compute_slice>`
|
||||||
* :doc:`smd/contact/radius <compute_smd_contact_radius>`
|
* :doc:`smd/contact/radius <compute_smd_contact_radius>`
|
||||||
* :doc:`smd/damage <compute_smd_damage>`
|
* :doc:`smd/damage <compute_smd_damage>`
|
||||||
|
|||||||
@ -287,6 +287,7 @@ The individual style names on the :doc:`Commands compute <Commands_compute>` pag
|
|||||||
* :doc:`reduce/region <compute_reduce>` - same as compute reduce, within a region
|
* :doc:`reduce/region <compute_reduce>` - same as compute reduce, within a region
|
||||||
* :doc:`rigid/local <compute_rigid_local>` - extract rigid body attributes
|
* :doc:`rigid/local <compute_rigid_local>` - extract rigid body attributes
|
||||||
* :doc:`saed <compute_saed>` - electron diffraction intensity on a mesh of reciprocal lattice nodes
|
* :doc:`saed <compute_saed>` - electron diffraction intensity on a mesh of reciprocal lattice nodes
|
||||||
|
* :doc:`slcsa/atom <compute_slcsa_atom>` - perform Supervised Learning Crystal Structure Analysis (SL-CSA)
|
||||||
* :doc:`slice <compute_slice>` - extract values from global vector or array
|
* :doc:`slice <compute_slice>` - extract values from global vector or array
|
||||||
* :doc:`smd/contact/radius <compute_smd_contact_radius>` - contact radius for Smooth Mach Dynamics
|
* :doc:`smd/contact/radius <compute_smd_contact_radius>` - contact radius for Smooth Mach Dynamics
|
||||||
* :doc:`smd/damage <compute_smd_damage>` - damage status of SPH particles in Smooth Mach Dynamics
|
* :doc:`smd/damage <compute_smd_damage>` - damage status of SPH particles in Smooth Mach Dynamics
|
||||||
|
|||||||
162
doc/src/compute_slcsa_atom.rst
Normal file
162
doc/src/compute_slcsa_atom.rst
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
.. index:: compute slcsa/atom
|
||||||
|
|
||||||
|
compute slcsa/atom command
|
||||||
|
============================
|
||||||
|
|
||||||
|
Syntax
|
||||||
|
""""""
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
compute ID group-ID slcsa/atom twojmax nclasses db_mean_descriptor_file lda_file lr_decision_file lr_bias_file maha_file value
|
||||||
|
|
||||||
|
* ID, group-ID are documented in :doc:`compute <compute>` command
|
||||||
|
* slcsa/atom = style name of this compute command
|
||||||
|
* twojmax = band limit for bispectrum components (non-negative integer)
|
||||||
|
* nclasses = number of crystal structures used in the database for the classifier SL-CSA
|
||||||
|
* db_mean_descriptor_file = file name of file containing the database mean descriptor
|
||||||
|
* lda_file = file name of file containing the linear discriminant analysis matrix for dimension reduction
|
||||||
|
* lr_decision_file = file name of file containing the scaling matrix for logistic regression classification
|
||||||
|
* lr_bias_file = file name of file containing the bias vector for logistic regression classification
|
||||||
|
* maha_file = file name of file containing for each crystal structure: the Mahalanobis distance threshold for sanity check purposes, the average reduced descriptor and the inverse of the corresponding covariance matrix
|
||||||
|
* c_ID[*] = compute ID of previously required *compute sna/atom* command
|
||||||
|
|
||||||
|
Examples
|
||||||
|
""""""""
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
compute b1 all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.3
|
||||||
|
compute b2 all slcsa/atom 8 4 mean_descriptors.dat lda_scalings.dat lr_decision.dat lr_bias.dat maha_thresholds.dat c_b1[*]
|
||||||
|
|
||||||
|
Description
|
||||||
|
"""""""""""
|
||||||
|
|
||||||
|
.. versionadded:: TBD
|
||||||
|
|
||||||
|
Define a computation that performs the Supervised Learning Crystal
|
||||||
|
Structure Analysis (SL-CSA) from :ref:`(Lafourcade) <Lafourcade2023_1>`
|
||||||
|
for each atom in the group. The SL-CSA tool takes as an input a per-atom
|
||||||
|
descriptor (bispectrum) that is computed through the *compute sna/atom*
|
||||||
|
command and then proceeds to a dimension reduction step followed by a
|
||||||
|
logistic regression in order to assign a probable crystal structure to
|
||||||
|
each atom in the group. The SL-CSA tool is pre-trained on a database
|
||||||
|
containing :math:`C` distinct crystal structures from which a crystal
|
||||||
|
structure classifier is derived and a tutorial to build such a tool is
|
||||||
|
available at `SL-CSA <https://github.com/lafourcadep/SL-CSA>`_.
|
||||||
|
|
||||||
|
The first step of the SL-CSA tool consists in performing a dimension
|
||||||
|
reduction of the per-atom descriptor :math:`\mathbf{B}^i \in
|
||||||
|
\mathbb{R}^{D}` through the Linear Discriminant Analysis (LDA) method,
|
||||||
|
leading to a new projected descriptor
|
||||||
|
:math:`\mathbf{x}^i=\mathrm{P}_\mathrm{LDA}(\mathbf{B}^i):\mathbb{R}^D
|
||||||
|
\rightarrow \mathbb{R}^{d=C-1}`:
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
|
||||||
|
\mathbf{x}^i = \mathbf{C}^T_\mathrm{LDA} \cdot (\mathbf{B}^i - \mu^\mathbf{B}_\mathrm{db})
|
||||||
|
|
||||||
|
where :math:`\mathbf{C}^T_\mathrm{LDA} \in \mathbb{R}^{D \times d}` is
|
||||||
|
the reduction coefficients matrix of the LDA model read in file
|
||||||
|
*lda_file*, :math:`\mathbf{B}^i \in \mathbb{R}^{D}` is the bispectrum of
|
||||||
|
atom :math:`i` and :math:`\mu^\mathbf{B}_\mathrm{db} \in \mathbb{R}^{D}`
|
||||||
|
is the average descriptor of the entire database. The latter is computed
|
||||||
|
from the average descriptors of each crystal structure read from the
|
||||||
|
file *mean_descriptors_file*.
|
||||||
|
|
||||||
|
The new projected descriptor with dimension :math:`d=C-1` allows for a
|
||||||
|
good separation of different crystal structures fingerprints in the
|
||||||
|
latent space.
|
||||||
|
|
||||||
|
Once the dimension reduction step is performed by means of LDA, the new
|
||||||
|
descriptor :math:`\mathbf{x}^i \in \mathbb{R}^{d=C-1}` is taken as an
|
||||||
|
input for performing a multinomial logistic regression (LR) which
|
||||||
|
provides a score vector
|
||||||
|
:math:`\mathbf{s}^i=\mathrm{P}_\mathrm{LR}(\mathbf{x}^i):\mathbb{R}^d
|
||||||
|
\rightarrow \mathbb{R}^C` defined as:
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
|
||||||
|
\mathbf{s}^i = \mathbf{b}_\mathrm{LR} + \mathbf{D}_\mathrm{LR} \cdot {\mathbf{x}^i}^T
|
||||||
|
|
||||||
|
with :math:`\mathbf{b}_\mathrm{LR} \in \mathbb{R}^C` and
|
||||||
|
:math:`\mathbf{D}_\mathrm{LR} \in \mathbb{R}^{C \times d}` the bias
|
||||||
|
vector and decision matrix of the LR model after training both read in
|
||||||
|
files *lr_fil1* and *lr_file2* respectively.
|
||||||
|
|
||||||
|
Finally, a probability vector
|
||||||
|
:math:`\mathbf{p}^i=\mathrm{P}_\mathrm{LR}(\mathbf{x}^i):\mathbb{R}^d
|
||||||
|
\rightarrow \mathbb{R}^C` is defined as:
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
|
||||||
|
\mathbf{p}^i = \frac{\mathrm{exp}(\mathbf{s}^i)}{\sum\limits_{j} \mathrm{exp}(s^i_j) }
|
||||||
|
|
||||||
|
from which the crystal structure assigned to each atom with descriptor
|
||||||
|
:math:`\mathbf{B}^i` and projected descriptor :math:`\mathbf{x}^i` is
|
||||||
|
computed as the *argmax* of the probability vector
|
||||||
|
:math:`\mathbf{p}^i`. Since the logistic regression step systematically
|
||||||
|
attributes a crystal structure to each atom, a sanity check is needed to
|
||||||
|
avoid misclassification. To this end, a per-atom Mahalanobis distance to
|
||||||
|
each crystal structure *CS* present in the database is computed:
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
|
||||||
|
d_\mathrm{Mahalanobis}^{i \rightarrow \mathrm{CS}} = \sqrt{(\mathbf{x}^i - \mathbf{\mu}^\mathbf{x}_\mathrm{CS})^\mathrm{T} \cdot \mathbf{\Sigma}^{-1}_\mathrm{CS} \cdot (\mathbf{x}^i - \mathbf{\mu}^\mathbf{x}_\mathrm{CS}) }
|
||||||
|
|
||||||
|
where :math:`\mathbf{\mu}^\mathbf{x}_\mathrm{CS} \in \mathbb{R}^{d}` is
|
||||||
|
the average projected descriptor of crystal structure *CS* in the
|
||||||
|
database and where :math:`\mathbf{\Sigma}_\mathrm{CS} \in \mathbb{R}^{d
|
||||||
|
\times d}` is the corresponding covariance matrix. Finally, if the
|
||||||
|
Mahalanobis distance to crystal structure *CS* for atom *i* is greater
|
||||||
|
than the pre-determined threshold, no crystal structure is assigned to
|
||||||
|
atom *i*. The Mahalanobis distance thresholds are read in file
|
||||||
|
*maha_file* while the covariance matrices are read in file
|
||||||
|
*covmat_file*.
|
||||||
|
|
||||||
|
The `SL-CSA <https://github.com/lafourcadep/SL-CSA>`_ framework provides
|
||||||
|
an automatic computation of the different matrices and thresholds
|
||||||
|
required for a proper classification and writes down all the required
|
||||||
|
files for calling the *compute slcsa/atom* command.
|
||||||
|
|
||||||
|
The *compute slcsa/atom* command requires that the :doc:`compute
|
||||||
|
sna/atom <compute_sna_atom>` command is called before as it takes the
|
||||||
|
resulting per-atom bispectrum as an input. In addition, it is crucial
|
||||||
|
that the value *twojmax* is set to the same value of the value *twojmax*
|
||||||
|
used in the *compute sna/atom* command, as well as that the value
|
||||||
|
*nclasses* is set to the number of crystal structures used in the
|
||||||
|
database to train the SL-CSA tool.
|
||||||
|
|
||||||
|
Output info
|
||||||
|
"""""""""""
|
||||||
|
|
||||||
|
By default, this compute computes the Mahalanobis distances to the
|
||||||
|
different crystal structures present in the database in addition to
|
||||||
|
assigning a crystal structure for each atom as a per-atom vector, which
|
||||||
|
can be accessed by any command that uses per-atom values from a compute
|
||||||
|
as input. See the :doc:`Howto output <Howto_output>` page for an
|
||||||
|
overview of LAMMPS output options.
|
||||||
|
|
||||||
|
Restrictions
|
||||||
|
""""""""""""
|
||||||
|
|
||||||
|
This compute is part of the EXTRA-COMPUTE package. It is only enabled
|
||||||
|
if LAMMPS was built with that package. See the :doc:`Build package
|
||||||
|
<Build_package>` page for more info.
|
||||||
|
|
||||||
|
Related commands
|
||||||
|
""""""""""""""""
|
||||||
|
|
||||||
|
:doc:`compute sna/atom <compute_sna_atom>`
|
||||||
|
|
||||||
|
Default
|
||||||
|
"""""""
|
||||||
|
|
||||||
|
none
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. _Lafourcade2023_1:
|
||||||
|
|
||||||
|
**(Lafourcade)** Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, and Marinica,
|
||||||
|
`Comp. Mat. Science, 230, 112534 (2023) <https://doi.org/10.1016/j.commatsci.2023.112534>`_
|
||||||
@ -45,7 +45,7 @@ Syntax
|
|||||||
* w_1, w_2,... = list of neighbor weights, one for each type
|
* w_1, w_2,... = list of neighbor weights, one for each type
|
||||||
* nx, ny, nz = number of grid points in x, y, and z directions (positive integer)
|
* nx, ny, nz = number of grid points in x, y, and z directions (positive integer)
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
* keyword = *rmin0* or *switchflag* or *bzeroflag* or *quadraticflag* or *chem* or *bnormflag* or *wselfallflag* or *bikflag* or *switchinnerflag* or *sinner* or *dinner* or *dgradflag*
|
* keyword = *rmin0* or *switchflag* or *bzeroflag* or *quadraticflag* or *chem* or *bnormflag* or *wselfallflag* or *bikflag* or *switchinnerflag* or *sinner* or *dinner* or *dgradflag* or *nnn* or *wmode* or *delta*
|
||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
@ -82,6 +82,16 @@ Syntax
|
|||||||
*0* = descriptor gradients are summed over atoms of each type
|
*0* = descriptor gradients are summed over atoms of each type
|
||||||
*1* = descriptor gradients are listed separately for each atom pair
|
*1* = descriptor gradients are listed separately for each atom pair
|
||||||
|
|
||||||
|
* additional keyword = *nnn* or *wmode* or *delta*
|
||||||
|
|
||||||
|
.. parsed-literal::
|
||||||
|
|
||||||
|
*nnn* value = number of considered nearest neighbors to compute the bispectrum over a target specific number of neighbors (only implemented for compute sna/atom)
|
||||||
|
*wmode* value = weight function for finding optimal cutoff to match the target number of neighbors (required if nnn used, only implemented for compute sna/atom)
|
||||||
|
*0* = heavyside weight function
|
||||||
|
*1* = hyperbolic tangent weight function
|
||||||
|
*delta* value = transition interval centered at cutoff distance for hyperbolic tangent weight function (ignored if wmode=0, required if wmode=1, only implemented for compute sna/atom)
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
""""""""
|
""""""""
|
||||||
|
|
||||||
@ -94,6 +104,7 @@ Examples
|
|||||||
compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 chem 2 0 1
|
compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 chem 2 0 1
|
||||||
compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 switchinnerflag 1 sinner 1.35 1.6 dinner 0.25 0.3
|
compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 switchinnerflag 1 sinner 1.35 1.6 dinner 0.25 0.3
|
||||||
compute bgrid all sna/grid/local 200 200 200 1.4 0.95 6 2.0 1.0
|
compute bgrid all sna/grid/local 200 200 200 1.4 0.95 6 2.0 1.0
|
||||||
|
compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.2
|
||||||
|
|
||||||
Description
|
Description
|
||||||
"""""""""""
|
"""""""""""
|
||||||
@ -433,6 +444,25 @@ requires that *bikflag=1*.
|
|||||||
The rerun script can use a :doc:`special_bonds <special_bonds>`
|
The rerun script can use a :doc:`special_bonds <special_bonds>`
|
||||||
command that includes all pairs in the neighbor list.
|
command that includes all pairs in the neighbor list.
|
||||||
|
|
||||||
|
The keyword *nnn* allows for the calculation of the bispectrum over a
|
||||||
|
specific target number of neighbors. This option is only implemented for
|
||||||
|
the compute *sna/atom*\ . An optimal cutoff radius for defining the
|
||||||
|
neighborhood of the central atom is calculated by means of a dichotomy
|
||||||
|
algorithm. This iterative process allows to assign weights to
|
||||||
|
neighboring atoms in order to match the total sum of weights with the
|
||||||
|
target number of neighbors. Depending on the radial weight function
|
||||||
|
used in that process, the cutoff radius can fluctuate a lot in the
|
||||||
|
presence of thermal noise. Therefore, in addition to the *nnn* keyword,
|
||||||
|
the keyword *wmode* allows to choose whether a Heaviside (*wmode* = 0)
|
||||||
|
function or a Hyperbolic tangent function (*wmode* = 1) should be used.
|
||||||
|
If the Heaviside function is used, the cutoff radius exactly matches the
|
||||||
|
distance between the central atom an its *nnn*'th neighbor. However, in
|
||||||
|
the case of the hyperbolic tangent function, the dichotomy algorithm
|
||||||
|
allows to span the weights over a distance *delta* in order to reduce
|
||||||
|
fluctuations in the resulting local atomic environment fingerprint. The
|
||||||
|
detailed formalism is given in the paper by Lafourcade et
|
||||||
|
al. :ref:`(Lafourcade) <Lafourcade2023_2>`.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
Output info
|
Output info
|
||||||
@ -585,6 +615,7 @@ Related commands
|
|||||||
""""""""""""""""
|
""""""""""""""""
|
||||||
|
|
||||||
:doc:`pair_style snap <pair_snap>`
|
:doc:`pair_style snap <pair_snap>`
|
||||||
|
:doc:`compute slcsa/atom <compute_slcsa_atom>`
|
||||||
|
|
||||||
Default
|
Default
|
||||||
"""""""
|
"""""""
|
||||||
@ -592,6 +623,7 @@ Default
|
|||||||
The optional keyword defaults are *rmin0* = 0,
|
The optional keyword defaults are *rmin0* = 0,
|
||||||
*switchflag* = 1, *bzeroflag* = 1, *quadraticflag* = 0,
|
*switchflag* = 1, *bzeroflag* = 1, *quadraticflag* = 0,
|
||||||
*bnormflag* = 0, *wselfallflag* = 0, *switchinnerflag* = 0,
|
*bnormflag* = 0, *wselfallflag* = 0, *switchinnerflag* = 0,
|
||||||
|
*nnn* = -1, *wmode* = 0, *delta* = 1.e-3
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
@ -623,3 +655,8 @@ of Angular Momentum, World Scientific, Singapore (1987).
|
|||||||
.. _Ellis2021:
|
.. _Ellis2021:
|
||||||
|
|
||||||
**(Ellis)** Ellis, Fiedler, Popoola, Modine, Stephens, Thompson, Cangi, Rajamanickam, Phys Rev B, 104, 035120, (2021)
|
**(Ellis)** Ellis, Fiedler, Popoola, Modine, Stephens, Thompson, Cangi, Rajamanickam, Phys Rev B, 104, 035120, (2021)
|
||||||
|
|
||||||
|
.. _Lafourcade2023_2:
|
||||||
|
|
||||||
|
**(Lafourcade)** Lafourcade, Maillet, Denoual, Duval, Allera, Goryaeva, and Marinica,
|
||||||
|
`Comp. Mat. Science, 230, 112534 (2023) <https://doi.org/10.1016/j.commatsci.2023.112534>`_
|
||||||
|
|||||||
@ -79,6 +79,7 @@ Alessandro
|
|||||||
Alexey
|
Alexey
|
||||||
ali
|
ali
|
||||||
aliceblue
|
aliceblue
|
||||||
|
Allera
|
||||||
Allinger
|
Allinger
|
||||||
allocatable
|
allocatable
|
||||||
allocator
|
allocator
|
||||||
@ -719,6 +720,7 @@ dem
|
|||||||
Dendrimer
|
Dendrimer
|
||||||
dendritic
|
dendritic
|
||||||
Denniston
|
Denniston
|
||||||
|
Denoual
|
||||||
dephase
|
dephase
|
||||||
dephasing
|
dephasing
|
||||||
dequidt
|
dequidt
|
||||||
@ -860,6 +862,7 @@ Dunweg
|
|||||||
Dupend
|
Dupend
|
||||||
Dupont
|
Dupont
|
||||||
dUs
|
dUs
|
||||||
|
Duval
|
||||||
dV
|
dV
|
||||||
dvector
|
dvector
|
||||||
dVx
|
dVx
|
||||||
@ -1299,6 +1302,7 @@ Gonzalez-Melchor
|
|||||||
googlemail
|
googlemail
|
||||||
googletest
|
googletest
|
||||||
Gordan
|
Gordan
|
||||||
|
Goryaeva
|
||||||
Goudeau
|
Goudeau
|
||||||
GPa
|
GPa
|
||||||
GPL
|
GPL
|
||||||
@ -1385,6 +1389,7 @@ hcp
|
|||||||
hdnnp
|
hdnnp
|
||||||
HDNNP
|
HDNNP
|
||||||
Hearn
|
Hearn
|
||||||
|
Heaviside
|
||||||
heatconduction
|
heatconduction
|
||||||
heatflow
|
heatflow
|
||||||
Hebbeker
|
Hebbeker
|
||||||
@ -1849,6 +1854,7 @@ lbl
|
|||||||
LBtype
|
LBtype
|
||||||
lcbop
|
lcbop
|
||||||
ld
|
ld
|
||||||
|
lda
|
||||||
ldfftw
|
ldfftw
|
||||||
ldg
|
ldg
|
||||||
lebedeva
|
lebedeva
|
||||||
@ -1970,6 +1976,7 @@ lossy
|
|||||||
Lozovik
|
Lozovik
|
||||||
lps
|
lps
|
||||||
lpsapi
|
lpsapi
|
||||||
|
lr
|
||||||
lrt
|
lrt
|
||||||
lsfftw
|
lsfftw
|
||||||
lt
|
lt
|
||||||
@ -2012,7 +2019,10 @@ magelec
|
|||||||
Maginn
|
Maginn
|
||||||
magneton
|
magneton
|
||||||
magnetons
|
magnetons
|
||||||
|
maha
|
||||||
|
Mahalanobis
|
||||||
Mahoney
|
Mahoney
|
||||||
|
Maillet
|
||||||
mainboard
|
mainboard
|
||||||
mainboards
|
mainboards
|
||||||
makefile
|
makefile
|
||||||
@ -2191,6 +2201,7 @@ mintcream
|
|||||||
Mintmire
|
Mintmire
|
||||||
Miron
|
Miron
|
||||||
mis
|
mis
|
||||||
|
misclassification
|
||||||
Mises
|
Mises
|
||||||
Mishin
|
Mishin
|
||||||
Mishra
|
Mishra
|
||||||
@ -2299,6 +2310,7 @@ multicomponent
|
|||||||
multicore
|
multicore
|
||||||
multielectron
|
multielectron
|
||||||
multinode
|
multinode
|
||||||
|
multinomial
|
||||||
multiphysics
|
multiphysics
|
||||||
Multipole
|
Multipole
|
||||||
multiscale
|
multiscale
|
||||||
@ -2390,6 +2402,7 @@ Nbtypes
|
|||||||
Nbytes
|
Nbytes
|
||||||
nc
|
nc
|
||||||
Nc
|
Nc
|
||||||
|
nclasses
|
||||||
nchunk
|
nchunk
|
||||||
Nchunk
|
Nchunk
|
||||||
ncoeff
|
ncoeff
|
||||||
@ -3352,6 +3365,7 @@ Skylake
|
|||||||
slateblue
|
slateblue
|
||||||
slategray
|
slategray
|
||||||
slater
|
slater
|
||||||
|
slcsa
|
||||||
Slepoy
|
Slepoy
|
||||||
Sliozberg
|
Sliozberg
|
||||||
sLL
|
sLL
|
||||||
|
|||||||
1
examples/PACKAGES/sna_nnn_slcsa/Zr_mm.eam.fs
Symbolic link
1
examples/PACKAGES/sna_nnn_slcsa/Zr_mm.eam.fs
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../potentials/Zr_mm.eam.fs
|
||||||
879
examples/PACKAGES/sna_nnn_slcsa/data.zr_cell
Normal file
879
examples/PACKAGES/sna_nnn_slcsa/data.zr_cell
Normal file
@ -0,0 +1,879 @@
|
|||||||
|
# Hcp Zr with box vectors H1=[2-1-10], H2=[-12-10], H3=[0001].
|
||||||
|
|
||||||
|
864 atoms
|
||||||
|
1 atom types
|
||||||
|
|
||||||
|
0.000000000000 19.374000000000 xlo xhi
|
||||||
|
0.000000000000 33.556752345839 ylo yhi
|
||||||
|
0.000000000000 30.846000000000 zlo zhi
|
||||||
|
|
||||||
|
Masses
|
||||||
|
|
||||||
|
1 91.22400000 # Zr
|
||||||
|
|
||||||
|
Atoms # atomic
|
||||||
|
|
||||||
|
1 1 0.000000000000 1.864264019213 2.570500000000
|
||||||
|
2 1 0.000000000000 0.000000000000 0.000000000000
|
||||||
|
3 1 1.614500000000 4.660660048033 2.570500000000
|
||||||
|
4 1 1.614500000000 2.796396028820 0.000000000000
|
||||||
|
5 1 3.229000000000 1.864264019213 2.570500000000
|
||||||
|
6 1 3.229000000000 0.000000000000 0.000000000000
|
||||||
|
7 1 4.843500000000 4.660660048033 2.570500000000
|
||||||
|
8 1 4.843500000000 2.796396028820 0.000000000000
|
||||||
|
9 1 6.458000000000 1.864264019213 2.570500000000
|
||||||
|
10 1 6.458000000000 0.000000000000 0.000000000000
|
||||||
|
11 1 8.072500000000 4.660660048033 2.570500000000
|
||||||
|
12 1 8.072500000000 2.796396028820 0.000000000000
|
||||||
|
13 1 9.687000000000 1.864264019213 2.570500000000
|
||||||
|
14 1 9.687000000000 0.000000000000 0.000000000000
|
||||||
|
15 1 11.301500000000 4.660660048033 2.570500000000
|
||||||
|
16 1 11.301500000000 2.796396028820 0.000000000000
|
||||||
|
17 1 12.916000000000 1.864264019213 2.570500000000
|
||||||
|
18 1 12.916000000000 0.000000000000 0.000000000000
|
||||||
|
19 1 14.530500000000 4.660660048033 2.570500000000
|
||||||
|
20 1 14.530500000000 2.796396028820 0.000000000000
|
||||||
|
21 1 16.145000000000 1.864264019213 2.570500000000
|
||||||
|
22 1 16.145000000000 0.000000000000 0.000000000000
|
||||||
|
23 1 17.759500000000 4.660660048033 2.570500000000
|
||||||
|
24 1 17.759500000000 2.796396028820 0.000000000000
|
||||||
|
25 1 0.000000000000 7.457056076853 2.570500000000
|
||||||
|
26 1 0.000000000000 5.592792057640 0.000000000000
|
||||||
|
27 1 1.614500000000 10.253452105673 2.570500000000
|
||||||
|
28 1 1.614500000000 8.389188086460 0.000000000000
|
||||||
|
29 1 3.229000000000 7.457056076853 2.570500000000
|
||||||
|
30 1 3.229000000000 5.592792057640 0.000000000000
|
||||||
|
31 1 4.843500000000 10.253452105673 2.570500000000
|
||||||
|
32 1 4.843500000000 8.389188086460 0.000000000000
|
||||||
|
33 1 6.458000000000 7.457056076853 2.570500000000
|
||||||
|
34 1 6.458000000000 5.592792057640 0.000000000000
|
||||||
|
35 1 8.072500000000 10.253452105673 2.570500000000
|
||||||
|
36 1 8.072500000000 8.389188086460 0.000000000000
|
||||||
|
37 1 9.687000000000 7.457056076853 2.570500000000
|
||||||
|
38 1 9.687000000000 5.592792057640 0.000000000000
|
||||||
|
39 1 11.301500000000 10.253452105673 2.570500000000
|
||||||
|
40 1 11.301500000000 8.389188086460 0.000000000000
|
||||||
|
41 1 12.916000000000 7.457056076853 2.570500000000
|
||||||
|
42 1 12.916000000000 5.592792057640 0.000000000000
|
||||||
|
43 1 14.530500000000 10.253452105673 2.570500000000
|
||||||
|
44 1 14.530500000000 8.389188086460 0.000000000000
|
||||||
|
45 1 16.145000000000 7.457056076853 2.570500000000
|
||||||
|
46 1 16.145000000000 5.592792057640 0.000000000000
|
||||||
|
47 1 17.759500000000 10.253452105673 2.570500000000
|
||||||
|
48 1 17.759500000000 8.389188086460 0.000000000000
|
||||||
|
49 1 0.000000000000 13.049848134493 2.570500000000
|
||||||
|
50 1 0.000000000000 11.185584115280 0.000000000000
|
||||||
|
51 1 1.614500000000 15.846244163313 2.570500000000
|
||||||
|
52 1 1.614500000000 13.981980144100 0.000000000000
|
||||||
|
53 1 3.229000000000 13.049848134493 2.570500000000
|
||||||
|
54 1 3.229000000000 11.185584115280 0.000000000000
|
||||||
|
55 1 4.843500000000 15.846244163313 2.570500000000
|
||||||
|
56 1 4.843500000000 13.981980144100 0.000000000000
|
||||||
|
57 1 6.458000000000 13.049848134493 2.570500000000
|
||||||
|
58 1 6.458000000000 11.185584115280 0.000000000000
|
||||||
|
59 1 8.072500000000 15.846244163313 2.570500000000
|
||||||
|
60 1 8.072500000000 13.981980144100 0.000000000000
|
||||||
|
61 1 9.687000000000 13.049848134493 2.570500000000
|
||||||
|
62 1 9.687000000000 11.185584115280 0.000000000000
|
||||||
|
63 1 11.301500000000 15.846244163313 2.570500000000
|
||||||
|
64 1 11.301500000000 13.981980144100 0.000000000000
|
||||||
|
65 1 12.916000000000 13.049848134493 2.570500000000
|
||||||
|
66 1 12.916000000000 11.185584115280 0.000000000000
|
||||||
|
67 1 14.530500000000 15.846244163313 2.570500000000
|
||||||
|
68 1 14.530500000000 13.981980144100 0.000000000000
|
||||||
|
69 1 16.145000000000 13.049848134493 2.570500000000
|
||||||
|
70 1 16.145000000000 11.185584115280 0.000000000000
|
||||||
|
71 1 17.759500000000 15.846244163313 2.570500000000
|
||||||
|
72 1 17.759500000000 13.981980144100 0.000000000000
|
||||||
|
73 1 0.000000000000 18.642640192133 2.570500000000
|
||||||
|
74 1 0.000000000000 16.778376172920 0.000000000000
|
||||||
|
75 1 1.614500000000 21.439036220953 2.570500000000
|
||||||
|
76 1 1.614500000000 19.574772201740 0.000000000000
|
||||||
|
77 1 3.229000000000 18.642640192133 2.570500000000
|
||||||
|
78 1 3.229000000000 16.778376172920 0.000000000000
|
||||||
|
79 1 4.843500000000 21.439036220953 2.570500000000
|
||||||
|
80 1 4.843500000000 19.574772201740 0.000000000000
|
||||||
|
81 1 6.458000000000 18.642640192133 2.570500000000
|
||||||
|
82 1 6.458000000000 16.778376172920 0.000000000000
|
||||||
|
83 1 8.072500000000 21.439036220953 2.570500000000
|
||||||
|
84 1 8.072500000000 19.574772201740 0.000000000000
|
||||||
|
85 1 9.687000000000 18.642640192133 2.570500000000
|
||||||
|
86 1 9.687000000000 16.778376172920 0.000000000000
|
||||||
|
87 1 11.301500000000 21.439036220953 2.570500000000
|
||||||
|
88 1 11.301500000000 19.574772201740 0.000000000000
|
||||||
|
89 1 12.916000000000 18.642640192133 2.570500000000
|
||||||
|
90 1 12.916000000000 16.778376172920 0.000000000000
|
||||||
|
91 1 14.530500000000 21.439036220953 2.570500000000
|
||||||
|
92 1 14.530500000000 19.574772201740 0.000000000000
|
||||||
|
93 1 16.145000000000 18.642640192133 2.570500000000
|
||||||
|
94 1 16.145000000000 16.778376172920 0.000000000000
|
||||||
|
95 1 17.759500000000 21.439036220953 2.570500000000
|
||||||
|
96 1 17.759500000000 19.574772201740 0.000000000000
|
||||||
|
97 1 0.000000000000 24.235432249773 2.570500000000
|
||||||
|
98 1 0.000000000000 22.371168230560 0.000000000000
|
||||||
|
99 1 1.614500000000 27.031828278593 2.570500000000
|
||||||
|
100 1 1.614500000000 25.167564259380 0.000000000000
|
||||||
|
101 1 3.229000000000 24.235432249773 2.570500000000
|
||||||
|
102 1 3.229000000000 22.371168230560 0.000000000000
|
||||||
|
103 1 4.843500000000 27.031828278593 2.570500000000
|
||||||
|
104 1 4.843500000000 25.167564259380 0.000000000000
|
||||||
|
105 1 6.458000000000 24.235432249773 2.570500000000
|
||||||
|
106 1 6.458000000000 22.371168230560 0.000000000000
|
||||||
|
107 1 8.072500000000 27.031828278593 2.570500000000
|
||||||
|
108 1 8.072500000000 25.167564259380 0.000000000000
|
||||||
|
109 1 9.687000000000 24.235432249773 2.570500000000
|
||||||
|
110 1 9.687000000000 22.371168230560 0.000000000000
|
||||||
|
111 1 11.301500000000 27.031828278593 2.570500000000
|
||||||
|
112 1 11.301500000000 25.167564259380 0.000000000000
|
||||||
|
113 1 12.916000000000 24.235432249773 2.570500000000
|
||||||
|
114 1 12.916000000000 22.371168230560 0.000000000000
|
||||||
|
115 1 14.530500000000 27.031828278593 2.570500000000
|
||||||
|
116 1 14.530500000000 25.167564259380 0.000000000000
|
||||||
|
117 1 16.145000000000 24.235432249773 2.570500000000
|
||||||
|
118 1 16.145000000000 22.371168230560 0.000000000000
|
||||||
|
119 1 17.759500000000 27.031828278593 2.570500000000
|
||||||
|
120 1 17.759500000000 25.167564259380 0.000000000000
|
||||||
|
121 1 0.000000000000 29.828224307413 2.570500000000
|
||||||
|
122 1 0.000000000000 27.963960288200 0.000000000000
|
||||||
|
123 1 1.614500000000 32.624620336233 2.570500000000
|
||||||
|
124 1 1.614500000000 30.760356317019 0.000000000000
|
||||||
|
125 1 3.229000000000 29.828224307413 2.570500000000
|
||||||
|
126 1 3.229000000000 27.963960288200 0.000000000000
|
||||||
|
127 1 4.843500000000 32.624620336233 2.570500000000
|
||||||
|
128 1 4.843500000000 30.760356317019 0.000000000000
|
||||||
|
129 1 6.458000000000 29.828224307413 2.570500000000
|
||||||
|
130 1 6.458000000000 27.963960288200 0.000000000000
|
||||||
|
131 1 8.072500000000 32.624620336233 2.570500000000
|
||||||
|
132 1 8.072500000000 30.760356317019 0.000000000000
|
||||||
|
133 1 9.687000000000 29.828224307413 2.570500000000
|
||||||
|
134 1 9.687000000000 27.963960288200 0.000000000000
|
||||||
|
135 1 11.301500000000 32.624620336233 2.570500000000
|
||||||
|
136 1 11.301500000000 30.760356317019 0.000000000000
|
||||||
|
137 1 12.916000000000 29.828224307413 2.570500000000
|
||||||
|
138 1 12.916000000000 27.963960288200 0.000000000000
|
||||||
|
139 1 14.530500000000 32.624620336233 2.570500000000
|
||||||
|
140 1 14.530500000000 30.760356317019 0.000000000000
|
||||||
|
141 1 16.145000000000 29.828224307413 2.570500000000
|
||||||
|
142 1 16.145000000000 27.963960288200 0.000000000000
|
||||||
|
143 1 17.759500000000 32.624620336233 2.570500000000
|
||||||
|
144 1 17.759500000000 30.760356317019 0.000000000000
|
||||||
|
145 1 0.000000000000 1.864264019213 7.711500000000
|
||||||
|
146 1 0.000000000000 0.000000000000 5.141000000000
|
||||||
|
147 1 1.614500000000 4.660660048033 7.711500000000
|
||||||
|
148 1 1.614500000000 2.796396028820 5.141000000000
|
||||||
|
149 1 3.229000000000 1.864264019213 7.711500000000
|
||||||
|
150 1 3.229000000000 0.000000000000 5.141000000000
|
||||||
|
151 1 4.843500000000 4.660660048033 7.711500000000
|
||||||
|
152 1 4.843500000000 2.796396028820 5.141000000000
|
||||||
|
153 1 6.458000000000 1.864264019213 7.711500000000
|
||||||
|
154 1 6.458000000000 0.000000000000 5.141000000000
|
||||||
|
155 1 8.072500000000 4.660660048033 7.711500000000
|
||||||
|
156 1 8.072500000000 2.796396028820 5.141000000000
|
||||||
|
157 1 9.687000000000 1.864264019213 7.711500000000
|
||||||
|
158 1 9.687000000000 0.000000000000 5.141000000000
|
||||||
|
159 1 11.301500000000 4.660660048033 7.711500000000
|
||||||
|
160 1 11.301500000000 2.796396028820 5.141000000000
|
||||||
|
161 1 12.916000000000 1.864264019213 7.711500000000
|
||||||
|
162 1 12.916000000000 0.000000000000 5.141000000000
|
||||||
|
163 1 14.530500000000 4.660660048033 7.711500000000
|
||||||
|
164 1 14.530500000000 2.796396028820 5.141000000000
|
||||||
|
165 1 16.145000000000 1.864264019213 7.711500000000
|
||||||
|
166 1 16.145000000000 0.000000000000 5.141000000000
|
||||||
|
167 1 17.759500000000 4.660660048033 7.711500000000
|
||||||
|
168 1 17.759500000000 2.796396028820 5.141000000000
|
||||||
|
169 1 0.000000000000 7.457056076853 7.711500000000
|
||||||
|
170 1 0.000000000000 5.592792057640 5.141000000000
|
||||||
|
171 1 1.614500000000 10.253452105673 7.711500000000
|
||||||
|
172 1 1.614500000000 8.389188086460 5.141000000000
|
||||||
|
173 1 3.229000000000 7.457056076853 7.711500000000
|
||||||
|
174 1 3.229000000000 5.592792057640 5.141000000000
|
||||||
|
175 1 4.843500000000 10.253452105673 7.711500000000
|
||||||
|
176 1 4.843500000000 8.389188086460 5.141000000000
|
||||||
|
177 1 6.458000000000 7.457056076853 7.711500000000
|
||||||
|
178 1 6.458000000000 5.592792057640 5.141000000000
|
||||||
|
179 1 8.072500000000 10.253452105673 7.711500000000
|
||||||
|
180 1 8.072500000000 8.389188086460 5.141000000000
|
||||||
|
181 1 9.687000000000 7.457056076853 7.711500000000
|
||||||
|
182 1 9.687000000000 5.592792057640 5.141000000000
|
||||||
|
183 1 11.301500000000 10.253452105673 7.711500000000
|
||||||
|
184 1 11.301500000000 8.389188086460 5.141000000000
|
||||||
|
185 1 12.916000000000 7.457056076853 7.711500000000
|
||||||
|
186 1 12.916000000000 5.592792057640 5.141000000000
|
||||||
|
187 1 14.530500000000 10.253452105673 7.711500000000
|
||||||
|
188 1 14.530500000000 8.389188086460 5.141000000000
|
||||||
|
189 1 16.145000000000 7.457056076853 7.711500000000
|
||||||
|
190 1 16.145000000000 5.592792057640 5.141000000000
|
||||||
|
191 1 17.759500000000 10.253452105673 7.711500000000
|
||||||
|
192 1 17.759500000000 8.389188086460 5.141000000000
|
||||||
|
193 1 0.000000000000 13.049848134493 7.711500000000
|
||||||
|
194 1 0.000000000000 11.185584115280 5.141000000000
|
||||||
|
195 1 1.614500000000 15.846244163313 7.711500000000
|
||||||
|
196 1 1.614500000000 13.981980144100 5.141000000000
|
||||||
|
197 1 3.229000000000 13.049848134493 7.711500000000
|
||||||
|
198 1 3.229000000000 11.185584115280 5.141000000000
|
||||||
|
199 1 4.843500000000 15.846244163313 7.711500000000
|
||||||
|
200 1 4.843500000000 13.981980144100 5.141000000000
|
||||||
|
201 1 6.458000000000 13.049848134493 7.711500000000
|
||||||
|
202 1 6.458000000000 11.185584115280 5.141000000000
|
||||||
|
203 1 8.072500000000 15.846244163313 7.711500000000
|
||||||
|
204 1 8.072500000000 13.981980144100 5.141000000000
|
||||||
|
205 1 9.687000000000 13.049848134493 7.711500000000
|
||||||
|
206 1 9.687000000000 11.185584115280 5.141000000000
|
||||||
|
207 1 11.301500000000 15.846244163313 7.711500000000
|
||||||
|
208 1 11.301500000000 13.981980144100 5.141000000000
|
||||||
|
209 1 12.916000000000 13.049848134493 7.711500000000
|
||||||
|
210 1 12.916000000000 11.185584115280 5.141000000000
|
||||||
|
211 1 14.530500000000 15.846244163313 7.711500000000
|
||||||
|
212 1 14.530500000000 13.981980144100 5.141000000000
|
||||||
|
213 1 16.145000000000 13.049848134493 7.711500000000
|
||||||
|
214 1 16.145000000000 11.185584115280 5.141000000000
|
||||||
|
215 1 17.759500000000 15.846244163313 7.711500000000
|
||||||
|
216 1 17.759500000000 13.981980144100 5.141000000000
|
||||||
|
217 1 0.000000000000 18.642640192133 7.711500000000
|
||||||
|
218 1 0.000000000000 16.778376172920 5.141000000000
|
||||||
|
219 1 1.614500000000 21.439036220953 7.711500000000
|
||||||
|
220 1 1.614500000000 19.574772201740 5.141000000000
|
||||||
|
221 1 3.229000000000 18.642640192133 7.711500000000
|
||||||
|
222 1 3.229000000000 16.778376172920 5.141000000000
|
||||||
|
223 1 4.843500000000 21.439036220953 7.711500000000
|
||||||
|
224 1 4.843500000000 19.574772201740 5.141000000000
|
||||||
|
225 1 6.458000000000 18.642640192133 7.711500000000
|
||||||
|
226 1 6.458000000000 16.778376172920 5.141000000000
|
||||||
|
227 1 8.072500000000 21.439036220953 7.711500000000
|
||||||
|
228 1 8.072500000000 19.574772201740 5.141000000000
|
||||||
|
229 1 9.687000000000 18.642640192133 7.711500000000
|
||||||
|
230 1 9.687000000000 16.778376172920 5.141000000000
|
||||||
|
231 1 11.301500000000 21.439036220953 7.711500000000
|
||||||
|
232 1 11.301500000000 19.574772201740 5.141000000000
|
||||||
|
233 1 12.916000000000 18.642640192133 7.711500000000
|
||||||
|
234 1 12.916000000000 16.778376172920 5.141000000000
|
||||||
|
235 1 14.530500000000 21.439036220953 7.711500000000
|
||||||
|
236 1 14.530500000000 19.574772201740 5.141000000000
|
||||||
|
237 1 16.145000000000 18.642640192133 7.711500000000
|
||||||
|
238 1 16.145000000000 16.778376172920 5.141000000000
|
||||||
|
239 1 17.759500000000 21.439036220953 7.711500000000
|
||||||
|
240 1 17.759500000000 19.574772201740 5.141000000000
|
||||||
|
241 1 0.000000000000 24.235432249773 7.711500000000
|
||||||
|
242 1 0.000000000000 22.371168230560 5.141000000000
|
||||||
|
243 1 1.614500000000 27.031828278593 7.711500000000
|
||||||
|
244 1 1.614500000000 25.167564259380 5.141000000000
|
||||||
|
245 1 3.229000000000 24.235432249773 7.711500000000
|
||||||
|
246 1 3.229000000000 22.371168230560 5.141000000000
|
||||||
|
247 1 4.843500000000 27.031828278593 7.711500000000
|
||||||
|
248 1 4.843500000000 25.167564259380 5.141000000000
|
||||||
|
249 1 6.458000000000 24.235432249773 7.711500000000
|
||||||
|
250 1 6.458000000000 22.371168230560 5.141000000000
|
||||||
|
251 1 8.072500000000 27.031828278593 7.711500000000
|
||||||
|
252 1 8.072500000000 25.167564259380 5.141000000000
|
||||||
|
253 1 9.687000000000 24.235432249773 7.711500000000
|
||||||
|
254 1 9.687000000000 22.371168230560 5.141000000000
|
||||||
|
255 1 11.301500000000 27.031828278593 7.711500000000
|
||||||
|
256 1 11.301500000000 25.167564259380 5.141000000000
|
||||||
|
257 1 12.916000000000 24.235432249773 7.711500000000
|
||||||
|
258 1 12.916000000000 22.371168230560 5.141000000000
|
||||||
|
259 1 14.530500000000 27.031828278593 7.711500000000
|
||||||
|
260 1 14.530500000000 25.167564259380 5.141000000000
|
||||||
|
261 1 16.145000000000 24.235432249773 7.711500000000
|
||||||
|
262 1 16.145000000000 22.371168230560 5.141000000000
|
||||||
|
263 1 17.759500000000 27.031828278593 7.711500000000
|
||||||
|
264 1 17.759500000000 25.167564259380 5.141000000000
|
||||||
|
265 1 0.000000000000 29.828224307413 7.711500000000
|
||||||
|
266 1 0.000000000000 27.963960288200 5.141000000000
|
||||||
|
267 1 1.614500000000 32.624620336233 7.711500000000
|
||||||
|
268 1 1.614500000000 30.760356317019 5.141000000000
|
||||||
|
269 1 3.229000000000 29.828224307413 7.711500000000
|
||||||
|
270 1 3.229000000000 27.963960288200 5.141000000000
|
||||||
|
271 1 4.843500000000 32.624620336233 7.711500000000
|
||||||
|
272 1 4.843500000000 30.760356317019 5.141000000000
|
||||||
|
273 1 6.458000000000 29.828224307413 7.711500000000
|
||||||
|
274 1 6.458000000000 27.963960288200 5.141000000000
|
||||||
|
275 1 8.072500000000 32.624620336233 7.711500000000
|
||||||
|
276 1 8.072500000000 30.760356317019 5.141000000000
|
||||||
|
277 1 9.687000000000 29.828224307413 7.711500000000
|
||||||
|
278 1 9.687000000000 27.963960288200 5.141000000000
|
||||||
|
279 1 11.301500000000 32.624620336233 7.711500000000
|
||||||
|
280 1 11.301500000000 30.760356317019 5.141000000000
|
||||||
|
281 1 12.916000000000 29.828224307413 7.711500000000
|
||||||
|
282 1 12.916000000000 27.963960288200 5.141000000000
|
||||||
|
283 1 14.530500000000 32.624620336233 7.711500000000
|
||||||
|
284 1 14.530500000000 30.760356317019 5.141000000000
|
||||||
|
285 1 16.145000000000 29.828224307413 7.711500000000
|
||||||
|
286 1 16.145000000000 27.963960288200 5.141000000000
|
||||||
|
287 1 17.759500000000 32.624620336233 7.711500000000
|
||||||
|
288 1 17.759500000000 30.760356317019 5.141000000000
|
||||||
|
289 1 0.000000000000 1.864264019213 12.852500000000
|
||||||
|
290 1 0.000000000000 0.000000000000 10.282000000000
|
||||||
|
291 1 1.614500000000 4.660660048033 12.852500000000
|
||||||
|
292 1 1.614500000000 2.796396028820 10.282000000000
|
||||||
|
293 1 3.229000000000 1.864264019213 12.852500000000
|
||||||
|
294 1 3.229000000000 0.000000000000 10.282000000000
|
||||||
|
295 1 4.843500000000 4.660660048033 12.852500000000
|
||||||
|
296 1 4.843500000000 2.796396028820 10.282000000000
|
||||||
|
297 1 6.458000000000 1.864264019213 12.852500000000
|
||||||
|
298 1 6.458000000000 0.000000000000 10.282000000000
|
||||||
|
299 1 8.072500000000 4.660660048033 12.852500000000
|
||||||
|
300 1 8.072500000000 2.796396028820 10.282000000000
|
||||||
|
301 1 9.687000000000 1.864264019213 12.852500000000
|
||||||
|
302 1 9.687000000000 0.000000000000 10.282000000000
|
||||||
|
303 1 11.301500000000 4.660660048033 12.852500000000
|
||||||
|
304 1 11.301500000000 2.796396028820 10.282000000000
|
||||||
|
305 1 12.916000000000 1.864264019213 12.852500000000
|
||||||
|
306 1 12.916000000000 0.000000000000 10.282000000000
|
||||||
|
307 1 14.530500000000 4.660660048033 12.852500000000
|
||||||
|
308 1 14.530500000000 2.796396028820 10.282000000000
|
||||||
|
309 1 16.145000000000 1.864264019213 12.852500000000
|
||||||
|
310 1 16.145000000000 0.000000000000 10.282000000000
|
||||||
|
311 1 17.759500000000 4.660660048033 12.852500000000
|
||||||
|
312 1 17.759500000000 2.796396028820 10.282000000000
|
||||||
|
313 1 0.000000000000 7.457056076853 12.852500000000
|
||||||
|
314 1 0.000000000000 5.592792057640 10.282000000000
|
||||||
|
315 1 1.614500000000 10.253452105673 12.852500000000
|
||||||
|
316 1 1.614500000000 8.389188086460 10.282000000000
|
||||||
|
317 1 3.229000000000 7.457056076853 12.852500000000
|
||||||
|
318 1 3.229000000000 5.592792057640 10.282000000000
|
||||||
|
319 1 4.843500000000 10.253452105673 12.852500000000
|
||||||
|
320 1 4.843500000000 8.389188086460 10.282000000000
|
||||||
|
321 1 6.458000000000 7.457056076853 12.852500000000
|
||||||
|
322 1 6.458000000000 5.592792057640 10.282000000000
|
||||||
|
323 1 8.072500000000 10.253452105673 12.852500000000
|
||||||
|
324 1 8.072500000000 8.389188086460 10.282000000000
|
||||||
|
325 1 9.687000000000 7.457056076853 12.852500000000
|
||||||
|
326 1 9.687000000000 5.592792057640 10.282000000000
|
||||||
|
327 1 11.301500000000 10.253452105673 12.852500000000
|
||||||
|
328 1 11.301500000000 8.389188086460 10.282000000000
|
||||||
|
329 1 12.916000000000 7.457056076853 12.852500000000
|
||||||
|
330 1 12.916000000000 5.592792057640 10.282000000000
|
||||||
|
331 1 14.530500000000 10.253452105673 12.852500000000
|
||||||
|
332 1 14.530500000000 8.389188086460 10.282000000000
|
||||||
|
333 1 16.145000000000 7.457056076853 12.852500000000
|
||||||
|
334 1 16.145000000000 5.592792057640 10.282000000000
|
||||||
|
335 1 17.759500000000 10.253452105673 12.852500000000
|
||||||
|
336 1 17.759500000000 8.389188086460 10.282000000000
|
||||||
|
337 1 0.000000000000 13.049848134493 12.852500000000
|
||||||
|
338 1 0.000000000000 11.185584115280 10.282000000000
|
||||||
|
339 1 1.614500000000 15.846244163313 12.852500000000
|
||||||
|
340 1 1.614500000000 13.981980144100 10.282000000000
|
||||||
|
341 1 3.229000000000 13.049848134493 12.852500000000
|
||||||
|
342 1 3.229000000000 11.185584115280 10.282000000000
|
||||||
|
343 1 4.843500000000 15.846244163313 12.852500000000
|
||||||
|
344 1 4.843500000000 13.981980144100 10.282000000000
|
||||||
|
345 1 6.458000000000 13.049848134493 12.852500000000
|
||||||
|
346 1 6.458000000000 11.185584115280 10.282000000000
|
||||||
|
347 1 8.072500000000 15.846244163313 12.852500000000
|
||||||
|
348 1 8.072500000000 13.981980144100 10.282000000000
|
||||||
|
349 1 9.687000000000 13.049848134493 12.852500000000
|
||||||
|
350 1 9.687000000000 11.185584115280 10.282000000000
|
||||||
|
351 1 11.301500000000 15.846244163313 12.852500000000
|
||||||
|
352 1 11.301500000000 13.981980144100 10.282000000000
|
||||||
|
353 1 12.916000000000 13.049848134493 12.852500000000
|
||||||
|
354 1 12.916000000000 11.185584115280 10.282000000000
|
||||||
|
355 1 14.530500000000 15.846244163313 12.852500000000
|
||||||
|
356 1 14.530500000000 13.981980144100 10.282000000000
|
||||||
|
357 1 16.145000000000 13.049848134493 12.852500000000
|
||||||
|
358 1 16.145000000000 11.185584115280 10.282000000000
|
||||||
|
359 1 17.759500000000 15.846244163313 12.852500000000
|
||||||
|
360 1 17.759500000000 13.981980144100 10.282000000000
|
||||||
|
361 1 0.000000000000 18.642640192133 12.852500000000
|
||||||
|
362 1 0.000000000000 16.778376172920 10.282000000000
|
||||||
|
363 1 1.614500000000 21.439036220953 12.852500000000
|
||||||
|
364 1 1.614500000000 19.574772201740 10.282000000000
|
||||||
|
365 1 3.229000000000 18.642640192133 12.852500000000
|
||||||
|
366 1 3.229000000000 16.778376172920 10.282000000000
|
||||||
|
367 1 4.843500000000 21.439036220953 12.852500000000
|
||||||
|
368 1 4.843500000000 19.574772201740 10.282000000000
|
||||||
|
369 1 6.458000000000 18.642640192133 12.852500000000
|
||||||
|
370 1 6.458000000000 16.778376172920 10.282000000000
|
||||||
|
371 1 8.072500000000 21.439036220953 12.852500000000
|
||||||
|
372 1 8.072500000000 19.574772201740 10.282000000000
|
||||||
|
373 1 9.687000000000 18.642640192133 12.852500000000
|
||||||
|
374 1 9.687000000000 16.778376172920 10.282000000000
|
||||||
|
375 1 11.301500000000 21.439036220953 12.852500000000
|
||||||
|
376 1 11.301500000000 19.574772201740 10.282000000000
|
||||||
|
377 1 12.916000000000 18.642640192133 12.852500000000
|
||||||
|
378 1 12.916000000000 16.778376172920 10.282000000000
|
||||||
|
379 1 14.530500000000 21.439036220953 12.852500000000
|
||||||
|
380 1 14.530500000000 19.574772201740 10.282000000000
|
||||||
|
381 1 16.145000000000 18.642640192133 12.852500000000
|
||||||
|
382 1 16.145000000000 16.778376172920 10.282000000000
|
||||||
|
383 1 17.759500000000 21.439036220953 12.852500000000
|
||||||
|
384 1 17.759500000000 19.574772201740 10.282000000000
|
||||||
|
385 1 0.000000000000 24.235432249773 12.852500000000
|
||||||
|
386 1 0.000000000000 22.371168230560 10.282000000000
|
||||||
|
387 1 1.614500000000 27.031828278593 12.852500000000
|
||||||
|
388 1 1.614500000000 25.167564259380 10.282000000000
|
||||||
|
389 1 3.229000000000 24.235432249773 12.852500000000
|
||||||
|
390 1 3.229000000000 22.371168230560 10.282000000000
|
||||||
|
391 1 4.843500000000 27.031828278593 12.852500000000
|
||||||
|
392 1 4.843500000000 25.167564259380 10.282000000000
|
||||||
|
393 1 6.458000000000 24.235432249773 12.852500000000
|
||||||
|
394 1 6.458000000000 22.371168230560 10.282000000000
|
||||||
|
395 1 8.072500000000 27.031828278593 12.852500000000
|
||||||
|
396 1 8.072500000000 25.167564259380 10.282000000000
|
||||||
|
397 1 9.687000000000 24.235432249773 12.852500000000
|
||||||
|
398 1 9.687000000000 22.371168230560 10.282000000000
|
||||||
|
399 1 11.301500000000 27.031828278593 12.852500000000
|
||||||
|
400 1 11.301500000000 25.167564259380 10.282000000000
|
||||||
|
401 1 12.916000000000 24.235432249773 12.852500000000
|
||||||
|
402 1 12.916000000000 22.371168230560 10.282000000000
|
||||||
|
403 1 14.530500000000 27.031828278593 12.852500000000
|
||||||
|
404 1 14.530500000000 25.167564259380 10.282000000000
|
||||||
|
405 1 16.145000000000 24.235432249773 12.852500000000
|
||||||
|
406 1 16.145000000000 22.371168230560 10.282000000000
|
||||||
|
407 1 17.759500000000 27.031828278593 12.852500000000
|
||||||
|
408 1 17.759500000000 25.167564259380 10.282000000000
|
||||||
|
409 1 0.000000000000 29.828224307413 12.852500000000
|
||||||
|
410 1 0.000000000000 27.963960288200 10.282000000000
|
||||||
|
411 1 1.614500000000 32.624620336233 12.852500000000
|
||||||
|
412 1 1.614500000000 30.760356317019 10.282000000000
|
||||||
|
413 1 3.229000000000 29.828224307413 12.852500000000
|
||||||
|
414 1 3.229000000000 27.963960288200 10.282000000000
|
||||||
|
415 1 4.843500000000 32.624620336233 12.852500000000
|
||||||
|
416 1 4.843500000000 30.760356317019 10.282000000000
|
||||||
|
417 1 6.458000000000 29.828224307413 12.852500000000
|
||||||
|
418 1 6.458000000000 27.963960288200 10.282000000000
|
||||||
|
419 1 8.072500000000 32.624620336233 12.852500000000
|
||||||
|
420 1 8.072500000000 30.760356317019 10.282000000000
|
||||||
|
421 1 9.687000000000 29.828224307413 12.852500000000
|
||||||
|
422 1 9.687000000000 27.963960288200 10.282000000000
|
||||||
|
423 1 11.301500000000 32.624620336233 12.852500000000
|
||||||
|
424 1 11.301500000000 30.760356317019 10.282000000000
|
||||||
|
425 1 12.916000000000 29.828224307413 12.852500000000
|
||||||
|
426 1 12.916000000000 27.963960288200 10.282000000000
|
||||||
|
427 1 14.530500000000 32.624620336233 12.852500000000
|
||||||
|
428 1 14.530500000000 30.760356317019 10.282000000000
|
||||||
|
429 1 16.145000000000 29.828224307413 12.852500000000
|
||||||
|
430 1 16.145000000000 27.963960288200 10.282000000000
|
||||||
|
431 1 17.759500000000 32.624620336233 12.852500000000
|
||||||
|
432 1 17.759500000000 30.760356317019 10.282000000000
|
||||||
|
433 1 0.000000000000 1.864264019213 17.993500000000
|
||||||
|
434 1 0.000000000000 0.000000000000 15.423000000000
|
||||||
|
435 1 1.614500000000 4.660660048033 17.993500000000
|
||||||
|
436 1 1.614500000000 2.796396028820 15.423000000000
|
||||||
|
437 1 3.229000000000 1.864264019213 17.993500000000
|
||||||
|
438 1 3.229000000000 0.000000000000 15.423000000000
|
||||||
|
439 1 4.843500000000 4.660660048033 17.993500000000
|
||||||
|
440 1 4.843500000000 2.796396028820 15.423000000000
|
||||||
|
441 1 6.458000000000 1.864264019213 17.993500000000
|
||||||
|
442 1 6.458000000000 0.000000000000 15.423000000000
|
||||||
|
443 1 8.072500000000 4.660660048033 17.993500000000
|
||||||
|
444 1 8.072500000000 2.796396028820 15.423000000000
|
||||||
|
445 1 9.687000000000 1.864264019213 17.993500000000
|
||||||
|
446 1 9.687000000000 0.000000000000 15.423000000000
|
||||||
|
447 1 11.301500000000 4.660660048033 17.993500000000
|
||||||
|
448 1 11.301500000000 2.796396028820 15.423000000000
|
||||||
|
449 1 12.916000000000 1.864264019213 17.993500000000
|
||||||
|
450 1 12.916000000000 0.000000000000 15.423000000000
|
||||||
|
451 1 14.530500000000 4.660660048033 17.993500000000
|
||||||
|
452 1 14.530500000000 2.796396028820 15.423000000000
|
||||||
|
453 1 16.145000000000 1.864264019213 17.993500000000
|
||||||
|
454 1 16.145000000000 0.000000000000 15.423000000000
|
||||||
|
455 1 17.759500000000 4.660660048033 17.993500000000
|
||||||
|
456 1 17.759500000000 2.796396028820 15.423000000000
|
||||||
|
457 1 0.000000000000 7.457056076853 17.993500000000
|
||||||
|
458 1 0.000000000000 5.592792057640 15.423000000000
|
||||||
|
459 1 1.614500000000 10.253452105673 17.993500000000
|
||||||
|
460 1 1.614500000000 8.389188086460 15.423000000000
|
||||||
|
461 1 3.229000000000 7.457056076853 17.993500000000
|
||||||
|
462 1 3.229000000000 5.592792057640 15.423000000000
|
||||||
|
463 1 4.843500000000 10.253452105673 17.993500000000
|
||||||
|
464 1 4.843500000000 8.389188086460 15.423000000000
|
||||||
|
465 1 6.458000000000 7.457056076853 17.993500000000
|
||||||
|
466 1 6.458000000000 5.592792057640 15.423000000000
|
||||||
|
467 1 8.072500000000 10.253452105673 17.993500000000
|
||||||
|
468 1 8.072500000000 8.389188086460 15.423000000000
|
||||||
|
469 1 9.687000000000 7.457056076853 17.993500000000
|
||||||
|
470 1 9.687000000000 5.592792057640 15.423000000000
|
||||||
|
471 1 11.301500000000 10.253452105673 17.993500000000
|
||||||
|
472 1 11.301500000000 8.389188086460 15.423000000000
|
||||||
|
473 1 12.916000000000 7.457056076853 17.993500000000
|
||||||
|
474 1 12.916000000000 5.592792057640 15.423000000000
|
||||||
|
475 1 14.530500000000 10.253452105673 17.993500000000
|
||||||
|
476 1 14.530500000000 8.389188086460 15.423000000000
|
||||||
|
477 1 16.145000000000 7.457056076853 17.993500000000
|
||||||
|
478 1 16.145000000000 5.592792057640 15.423000000000
|
||||||
|
479 1 17.759500000000 10.253452105673 17.993500000000
|
||||||
|
480 1 17.759500000000 8.389188086460 15.423000000000
|
||||||
|
481 1 0.000000000000 13.049848134493 17.993500000000
|
||||||
|
482 1 0.000000000000 11.185584115280 15.423000000000
|
||||||
|
483 1 1.614500000000 15.846244163313 17.993500000000
|
||||||
|
484 1 1.614500000000 13.981980144100 15.423000000000
|
||||||
|
485 1 3.229000000000 13.049848134493 17.993500000000
|
||||||
|
486 1 3.229000000000 11.185584115280 15.423000000000
|
||||||
|
487 1 4.843500000000 15.846244163313 17.993500000000
|
||||||
|
488 1 4.843500000000 13.981980144100 15.423000000000
|
||||||
|
489 1 6.458000000000 13.049848134493 17.993500000000
|
||||||
|
490 1 6.458000000000 11.185584115280 15.423000000000
|
||||||
|
491 1 8.072500000000 15.846244163313 17.993500000000
|
||||||
|
492 1 8.072500000000 13.981980144100 15.423000000000
|
||||||
|
493 1 9.687000000000 13.049848134493 17.993500000000
|
||||||
|
494 1 9.687000000000 11.185584115280 15.423000000000
|
||||||
|
495 1 11.301500000000 15.846244163313 17.993500000000
|
||||||
|
496 1 11.301500000000 13.981980144100 15.423000000000
|
||||||
|
497 1 12.916000000000 13.049848134493 17.993500000000
|
||||||
|
498 1 12.916000000000 11.185584115280 15.423000000000
|
||||||
|
499 1 14.530500000000 15.846244163313 17.993500000000
|
||||||
|
500 1 14.530500000000 13.981980144100 15.423000000000
|
||||||
|
501 1 16.145000000000 13.049848134493 17.993500000000
|
||||||
|
502 1 16.145000000000 11.185584115280 15.423000000000
|
||||||
|
503 1 17.759500000000 15.846244163313 17.993500000000
|
||||||
|
504 1 17.759500000000 13.981980144100 15.423000000000
|
||||||
|
505 1 0.000000000000 18.642640192133 17.993500000000
|
||||||
|
506 1 0.000000000000 16.778376172920 15.423000000000
|
||||||
|
507 1 1.614500000000 21.439036220953 17.993500000000
|
||||||
|
508 1 1.614500000000 19.574772201740 15.423000000000
|
||||||
|
509 1 3.229000000000 18.642640192133 17.993500000000
|
||||||
|
510 1 3.229000000000 16.778376172920 15.423000000000
|
||||||
|
511 1 4.843500000000 21.439036220953 17.993500000000
|
||||||
|
512 1 4.843500000000 19.574772201740 15.423000000000
|
||||||
|
513 1 6.458000000000 18.642640192133 17.993500000000
|
||||||
|
514 1 6.458000000000 16.778376172920 15.423000000000
|
||||||
|
515 1 8.072500000000 21.439036220953 17.993500000000
|
||||||
|
516 1 8.072500000000 19.574772201740 15.423000000000
|
||||||
|
517 1 9.687000000000 18.642640192133 17.993500000000
|
||||||
|
518 1 9.687000000000 16.778376172920 15.423000000000
|
||||||
|
519 1 11.301500000000 21.439036220953 17.993500000000
|
||||||
|
520 1 11.301500000000 19.574772201740 15.423000000000
|
||||||
|
521 1 12.916000000000 18.642640192133 17.993500000000
|
||||||
|
522 1 12.916000000000 16.778376172920 15.423000000000
|
||||||
|
523 1 14.530500000000 21.439036220953 17.993500000000
|
||||||
|
524 1 14.530500000000 19.574772201740 15.423000000000
|
||||||
|
525 1 16.145000000000 18.642640192133 17.993500000000
|
||||||
|
526 1 16.145000000000 16.778376172920 15.423000000000
|
||||||
|
527 1 17.759500000000 21.439036220953 17.993500000000
|
||||||
|
528 1 17.759500000000 19.574772201740 15.423000000000
|
||||||
|
529 1 0.000000000000 24.235432249773 17.993500000000
|
||||||
|
530 1 0.000000000000 22.371168230560 15.423000000000
|
||||||
|
531 1 1.614500000000 27.031828278593 17.993500000000
|
||||||
|
532 1 1.614500000000 25.167564259380 15.423000000000
|
||||||
|
533 1 3.229000000000 24.235432249773 17.993500000000
|
||||||
|
534 1 3.229000000000 22.371168230560 15.423000000000
|
||||||
|
535 1 4.843500000000 27.031828278593 17.993500000000
|
||||||
|
536 1 4.843500000000 25.167564259380 15.423000000000
|
||||||
|
537 1 6.458000000000 24.235432249773 17.993500000000
|
||||||
|
538 1 6.458000000000 22.371168230560 15.423000000000
|
||||||
|
539 1 8.072500000000 27.031828278593 17.993500000000
|
||||||
|
540 1 8.072500000000 25.167564259380 15.423000000000
|
||||||
|
541 1 9.687000000000 24.235432249773 17.993500000000
|
||||||
|
542 1 9.687000000000 22.371168230560 15.423000000000
|
||||||
|
543 1 11.301500000000 27.031828278593 17.993500000000
|
||||||
|
544 1 11.301500000000 25.167564259380 15.423000000000
|
||||||
|
545 1 12.916000000000 24.235432249773 17.993500000000
|
||||||
|
546 1 12.916000000000 22.371168230560 15.423000000000
|
||||||
|
547 1 14.530500000000 27.031828278593 17.993500000000
|
||||||
|
548 1 14.530500000000 25.167564259380 15.423000000000
|
||||||
|
549 1 16.145000000000 24.235432249773 17.993500000000
|
||||||
|
550 1 16.145000000000 22.371168230560 15.423000000000
|
||||||
|
551 1 17.759500000000 27.031828278593 17.993500000000
|
||||||
|
552 1 17.759500000000 25.167564259380 15.423000000000
|
||||||
|
553 1 0.000000000000 29.828224307413 17.993500000000
|
||||||
|
554 1 0.000000000000 27.963960288200 15.423000000000
|
||||||
|
555 1 1.614500000000 32.624620336233 17.993500000000
|
||||||
|
556 1 1.614500000000 30.760356317019 15.423000000000
|
||||||
|
557 1 3.229000000000 29.828224307413 17.993500000000
|
||||||
|
558 1 3.229000000000 27.963960288200 15.423000000000
|
||||||
|
559 1 4.843500000000 32.624620336233 17.993500000000
|
||||||
|
560 1 4.843500000000 30.760356317019 15.423000000000
|
||||||
|
561 1 6.458000000000 29.828224307413 17.993500000000
|
||||||
|
562 1 6.458000000000 27.963960288200 15.423000000000
|
||||||
|
563 1 8.072500000000 32.624620336233 17.993500000000
|
||||||
|
564 1 8.072500000000 30.760356317019 15.423000000000
|
||||||
|
565 1 9.687000000000 29.828224307413 17.993500000000
|
||||||
|
566 1 9.687000000000 27.963960288200 15.423000000000
|
||||||
|
567 1 11.301500000000 32.624620336233 17.993500000000
|
||||||
|
568 1 11.301500000000 30.760356317019 15.423000000000
|
||||||
|
569 1 12.916000000000 29.828224307413 17.993500000000
|
||||||
|
570 1 12.916000000000 27.963960288200 15.423000000000
|
||||||
|
571 1 14.530500000000 32.624620336233 17.993500000000
|
||||||
|
572 1 14.530500000000 30.760356317019 15.423000000000
|
||||||
|
573 1 16.145000000000 29.828224307413 17.993500000000
|
||||||
|
574 1 16.145000000000 27.963960288200 15.423000000000
|
||||||
|
575 1 17.759500000000 32.624620336233 17.993500000000
|
||||||
|
576 1 17.759500000000 30.760356317019 15.423000000000
|
||||||
|
577 1 0.000000000000 1.864264019213 23.134500000000
|
||||||
|
578 1 0.000000000000 0.000000000000 20.564000000000
|
||||||
|
579 1 1.614500000000 4.660660048033 23.134500000000
|
||||||
|
580 1 1.614500000000 2.796396028820 20.564000000000
|
||||||
|
581 1 3.229000000000 1.864264019213 23.134500000000
|
||||||
|
582 1 3.229000000000 0.000000000000 20.564000000000
|
||||||
|
583 1 4.843500000000 4.660660048033 23.134500000000
|
||||||
|
584 1 4.843500000000 2.796396028820 20.564000000000
|
||||||
|
585 1 6.458000000000 1.864264019213 23.134500000000
|
||||||
|
586 1 6.458000000000 0.000000000000 20.564000000000
|
||||||
|
587 1 8.072500000000 4.660660048033 23.134500000000
|
||||||
|
588 1 8.072500000000 2.796396028820 20.564000000000
|
||||||
|
589 1 9.687000000000 1.864264019213 23.134500000000
|
||||||
|
590 1 9.687000000000 0.000000000000 20.564000000000
|
||||||
|
591 1 11.301500000000 4.660660048033 23.134500000000
|
||||||
|
592 1 11.301500000000 2.796396028820 20.564000000000
|
||||||
|
593 1 12.916000000000 1.864264019213 23.134500000000
|
||||||
|
594 1 12.916000000000 0.000000000000 20.564000000000
|
||||||
|
595 1 14.530500000000 4.660660048033 23.134500000000
|
||||||
|
596 1 14.530500000000 2.796396028820 20.564000000000
|
||||||
|
597 1 16.145000000000 1.864264019213 23.134500000000
|
||||||
|
598 1 16.145000000000 0.000000000000 20.564000000000
|
||||||
|
599 1 17.759500000000 4.660660048033 23.134500000000
|
||||||
|
600 1 17.759500000000 2.796396028820 20.564000000000
|
||||||
|
601 1 0.000000000000 7.457056076853 23.134500000000
|
||||||
|
602 1 0.000000000000 5.592792057640 20.564000000000
|
||||||
|
603 1 1.614500000000 10.253452105673 23.134500000000
|
||||||
|
604 1 1.614500000000 8.389188086460 20.564000000000
|
||||||
|
605 1 3.229000000000 7.457056076853 23.134500000000
|
||||||
|
606 1 3.229000000000 5.592792057640 20.564000000000
|
||||||
|
607 1 4.843500000000 10.253452105673 23.134500000000
|
||||||
|
608 1 4.843500000000 8.389188086460 20.564000000000
|
||||||
|
609 1 6.458000000000 7.457056076853 23.134500000000
|
||||||
|
610 1 6.458000000000 5.592792057640 20.564000000000
|
||||||
|
611 1 8.072500000000 10.253452105673 23.134500000000
|
||||||
|
612 1 8.072500000000 8.389188086460 20.564000000000
|
||||||
|
613 1 9.687000000000 7.457056076853 23.134500000000
|
||||||
|
614 1 9.687000000000 5.592792057640 20.564000000000
|
||||||
|
615 1 11.301500000000 10.253452105673 23.134500000000
|
||||||
|
616 1 11.301500000000 8.389188086460 20.564000000000
|
||||||
|
617 1 12.916000000000 7.457056076853 23.134500000000
|
||||||
|
618 1 12.916000000000 5.592792057640 20.564000000000
|
||||||
|
619 1 14.530500000000 10.253452105673 23.134500000000
|
||||||
|
620 1 14.530500000000 8.389188086460 20.564000000000
|
||||||
|
621 1 16.145000000000 7.457056076853 23.134500000000
|
||||||
|
622 1 16.145000000000 5.592792057640 20.564000000000
|
||||||
|
623 1 17.759500000000 10.253452105673 23.134500000000
|
||||||
|
624 1 17.759500000000 8.389188086460 20.564000000000
|
||||||
|
625 1 0.000000000000 13.049848134493 23.134500000000
|
||||||
|
626 1 0.000000000000 11.185584115280 20.564000000000
|
||||||
|
627 1 1.614500000000 15.846244163313 23.134500000000
|
||||||
|
628 1 1.614500000000 13.981980144100 20.564000000000
|
||||||
|
629 1 3.229000000000 13.049848134493 23.134500000000
|
||||||
|
630 1 3.229000000000 11.185584115280 20.564000000000
|
||||||
|
631 1 4.843500000000 15.846244163313 23.134500000000
|
||||||
|
632 1 4.843500000000 13.981980144100 20.564000000000
|
||||||
|
633 1 6.458000000000 13.049848134493 23.134500000000
|
||||||
|
634 1 6.458000000000 11.185584115280 20.564000000000
|
||||||
|
635 1 8.072500000000 15.846244163313 23.134500000000
|
||||||
|
636 1 8.072500000000 13.981980144100 20.564000000000
|
||||||
|
637 1 9.687000000000 13.049848134493 23.134500000000
|
||||||
|
638 1 9.687000000000 11.185584115280 20.564000000000
|
||||||
|
639 1 11.301500000000 15.846244163313 23.134500000000
|
||||||
|
640 1 11.301500000000 13.981980144100 20.564000000000
|
||||||
|
641 1 12.916000000000 13.049848134493 23.134500000000
|
||||||
|
642 1 12.916000000000 11.185584115280 20.564000000000
|
||||||
|
643 1 14.530500000000 15.846244163313 23.134500000000
|
||||||
|
644 1 14.530500000000 13.981980144100 20.564000000000
|
||||||
|
645 1 16.145000000000 13.049848134493 23.134500000000
|
||||||
|
646 1 16.145000000000 11.185584115280 20.564000000000
|
||||||
|
647 1 17.759500000000 15.846244163313 23.134500000000
|
||||||
|
648 1 17.759500000000 13.981980144100 20.564000000000
|
||||||
|
649 1 0.000000000000 18.642640192133 23.134500000000
|
||||||
|
650 1 0.000000000000 16.778376172920 20.564000000000
|
||||||
|
651 1 1.614500000000 21.439036220953 23.134500000000
|
||||||
|
652 1 1.614500000000 19.574772201740 20.564000000000
|
||||||
|
653 1 3.229000000000 18.642640192133 23.134500000000
|
||||||
|
654 1 3.229000000000 16.778376172920 20.564000000000
|
||||||
|
655 1 4.843500000000 21.439036220953 23.134500000000
|
||||||
|
656 1 4.843500000000 19.574772201740 20.564000000000
|
||||||
|
657 1 6.458000000000 18.642640192133 23.134500000000
|
||||||
|
658 1 6.458000000000 16.778376172920 20.564000000000
|
||||||
|
659 1 8.072500000000 21.439036220953 23.134500000000
|
||||||
|
660 1 8.072500000000 19.574772201740 20.564000000000
|
||||||
|
661 1 9.687000000000 18.642640192133 23.134500000000
|
||||||
|
662 1 9.687000000000 16.778376172920 20.564000000000
|
||||||
|
663 1 11.301500000000 21.439036220953 23.134500000000
|
||||||
|
664 1 11.301500000000 19.574772201740 20.564000000000
|
||||||
|
665 1 12.916000000000 18.642640192133 23.134500000000
|
||||||
|
666 1 12.916000000000 16.778376172920 20.564000000000
|
||||||
|
667 1 14.530500000000 21.439036220953 23.134500000000
|
||||||
|
668 1 14.530500000000 19.574772201740 20.564000000000
|
||||||
|
669 1 16.145000000000 18.642640192133 23.134500000000
|
||||||
|
670 1 16.145000000000 16.778376172920 20.564000000000
|
||||||
|
671 1 17.759500000000 21.439036220953 23.134500000000
|
||||||
|
672 1 17.759500000000 19.574772201740 20.564000000000
|
||||||
|
673 1 0.000000000000 24.235432249773 23.134500000000
|
||||||
|
674 1 0.000000000000 22.371168230560 20.564000000000
|
||||||
|
675 1 1.614500000000 27.031828278593 23.134500000000
|
||||||
|
676 1 1.614500000000 25.167564259380 20.564000000000
|
||||||
|
677 1 3.229000000000 24.235432249773 23.134500000000
|
||||||
|
678 1 3.229000000000 22.371168230560 20.564000000000
|
||||||
|
679 1 4.843500000000 27.031828278593 23.134500000000
|
||||||
|
680 1 4.843500000000 25.167564259380 20.564000000000
|
||||||
|
681 1 6.458000000000 24.235432249773 23.134500000000
|
||||||
|
682 1 6.458000000000 22.371168230560 20.564000000000
|
||||||
|
683 1 8.072500000000 27.031828278593 23.134500000000
|
||||||
|
684 1 8.072500000000 25.167564259380 20.564000000000
|
||||||
|
685 1 9.687000000000 24.235432249773 23.134500000000
|
||||||
|
686 1 9.687000000000 22.371168230560 20.564000000000
|
||||||
|
687 1 11.301500000000 27.031828278593 23.134500000000
|
||||||
|
688 1 11.301500000000 25.167564259380 20.564000000000
|
||||||
|
689 1 12.916000000000 24.235432249773 23.134500000000
|
||||||
|
690 1 12.916000000000 22.371168230560 20.564000000000
|
||||||
|
691 1 14.530500000000 27.031828278593 23.134500000000
|
||||||
|
692 1 14.530500000000 25.167564259380 20.564000000000
|
||||||
|
693 1 16.145000000000 24.235432249773 23.134500000000
|
||||||
|
694 1 16.145000000000 22.371168230560 20.564000000000
|
||||||
|
695 1 17.759500000000 27.031828278593 23.134500000000
|
||||||
|
696 1 17.759500000000 25.167564259380 20.564000000000
|
||||||
|
697 1 0.000000000000 29.828224307413 23.134500000000
|
||||||
|
698 1 0.000000000000 27.963960288200 20.564000000000
|
||||||
|
699 1 1.614500000000 32.624620336233 23.134500000000
|
||||||
|
700 1 1.614500000000 30.760356317019 20.564000000000
|
||||||
|
701 1 3.229000000000 29.828224307413 23.134500000000
|
||||||
|
702 1 3.229000000000 27.963960288200 20.564000000000
|
||||||
|
703 1 4.843500000000 32.624620336233 23.134500000000
|
||||||
|
704 1 4.843500000000 30.760356317019 20.564000000000
|
||||||
|
705 1 6.458000000000 29.828224307413 23.134500000000
|
||||||
|
706 1 6.458000000000 27.963960288200 20.564000000000
|
||||||
|
707 1 8.072500000000 32.624620336233 23.134500000000
|
||||||
|
708 1 8.072500000000 30.760356317019 20.564000000000
|
||||||
|
709 1 9.687000000000 29.828224307413 23.134500000000
|
||||||
|
710 1 9.687000000000 27.963960288200 20.564000000000
|
||||||
|
711 1 11.301500000000 32.624620336233 23.134500000000
|
||||||
|
712 1 11.301500000000 30.760356317019 20.564000000000
|
||||||
|
713 1 12.916000000000 29.828224307413 23.134500000000
|
||||||
|
714 1 12.916000000000 27.963960288200 20.564000000000
|
||||||
|
715 1 14.530500000000 32.624620336233 23.134500000000
|
||||||
|
716 1 14.530500000000 30.760356317019 20.564000000000
|
||||||
|
717 1 16.145000000000 29.828224307413 23.134500000000
|
||||||
|
718 1 16.145000000000 27.963960288200 20.564000000000
|
||||||
|
719 1 17.759500000000 32.624620336233 23.134500000000
|
||||||
|
720 1 17.759500000000 30.760356317019 20.564000000000
|
||||||
|
721 1 0.000000000000 1.864264019213 28.275500000000
|
||||||
|
722 1 0.000000000000 0.000000000000 25.705000000000
|
||||||
|
723 1 1.614500000000 4.660660048033 28.275500000000
|
||||||
|
724 1 1.614500000000 2.796396028820 25.705000000000
|
||||||
|
725 1 3.229000000000 1.864264019213 28.275500000000
|
||||||
|
726 1 3.229000000000 0.000000000000 25.705000000000
|
||||||
|
727 1 4.843500000000 4.660660048033 28.275500000000
|
||||||
|
728 1 4.843500000000 2.796396028820 25.705000000000
|
||||||
|
729 1 6.458000000000 1.864264019213 28.275500000000
|
||||||
|
730 1 6.458000000000 0.000000000000 25.705000000000
|
||||||
|
731 1 8.072500000000 4.660660048033 28.275500000000
|
||||||
|
732 1 8.072500000000 2.796396028820 25.705000000000
|
||||||
|
733 1 9.687000000000 1.864264019213 28.275500000000
|
||||||
|
734 1 9.687000000000 0.000000000000 25.705000000000
|
||||||
|
735 1 11.301500000000 4.660660048033 28.275500000000
|
||||||
|
736 1 11.301500000000 2.796396028820 25.705000000000
|
||||||
|
737 1 12.916000000000 1.864264019213 28.275500000000
|
||||||
|
738 1 12.916000000000 0.000000000000 25.705000000000
|
||||||
|
739 1 14.530500000000 4.660660048033 28.275500000000
|
||||||
|
740 1 14.530500000000 2.796396028820 25.705000000000
|
||||||
|
741 1 16.145000000000 1.864264019213 28.275500000000
|
||||||
|
742 1 16.145000000000 0.000000000000 25.705000000000
|
||||||
|
743 1 17.759500000000 4.660660048033 28.275500000000
|
||||||
|
744 1 17.759500000000 2.796396028820 25.705000000000
|
||||||
|
745 1 0.000000000000 7.457056076853 28.275500000000
|
||||||
|
746 1 0.000000000000 5.592792057640 25.705000000000
|
||||||
|
747 1 1.614500000000 10.253452105673 28.275500000000
|
||||||
|
748 1 1.614500000000 8.389188086460 25.705000000000
|
||||||
|
749 1 3.229000000000 7.457056076853 28.275500000000
|
||||||
|
750 1 3.229000000000 5.592792057640 25.705000000000
|
||||||
|
751 1 4.843500000000 10.253452105673 28.275500000000
|
||||||
|
752 1 4.843500000000 8.389188086460 25.705000000000
|
||||||
|
753 1 6.458000000000 7.457056076853 28.275500000000
|
||||||
|
754 1 6.458000000000 5.592792057640 25.705000000000
|
||||||
|
755 1 8.072500000000 10.253452105673 28.275500000000
|
||||||
|
756 1 8.072500000000 8.389188086460 25.705000000000
|
||||||
|
757 1 9.687000000000 7.457056076853 28.275500000000
|
||||||
|
758 1 9.687000000000 5.592792057640 25.705000000000
|
||||||
|
759 1 11.301500000000 10.253452105673 28.275500000000
|
||||||
|
760 1 11.301500000000 8.389188086460 25.705000000000
|
||||||
|
761 1 12.916000000000 7.457056076853 28.275500000000
|
||||||
|
762 1 12.916000000000 5.592792057640 25.705000000000
|
||||||
|
763 1 14.530500000000 10.253452105673 28.275500000000
|
||||||
|
764 1 14.530500000000 8.389188086460 25.705000000000
|
||||||
|
765 1 16.145000000000 7.457056076853 28.275500000000
|
||||||
|
766 1 16.145000000000 5.592792057640 25.705000000000
|
||||||
|
767 1 17.759500000000 10.253452105673 28.275500000000
|
||||||
|
768 1 17.759500000000 8.389188086460 25.705000000000
|
||||||
|
769 1 0.000000000000 13.049848134493 28.275500000000
|
||||||
|
770 1 0.000000000000 11.185584115280 25.705000000000
|
||||||
|
771 1 1.614500000000 15.846244163313 28.275500000000
|
||||||
|
772 1 1.614500000000 13.981980144100 25.705000000000
|
||||||
|
773 1 3.229000000000 13.049848134493 28.275500000000
|
||||||
|
774 1 3.229000000000 11.185584115280 25.705000000000
|
||||||
|
775 1 4.843500000000 15.846244163313 28.275500000000
|
||||||
|
776 1 4.843500000000 13.981980144100 25.705000000000
|
||||||
|
777 1 6.458000000000 13.049848134493 28.275500000000
|
||||||
|
778 1 6.458000000000 11.185584115280 25.705000000000
|
||||||
|
779 1 8.072500000000 15.846244163313 28.275500000000
|
||||||
|
780 1 8.072500000000 13.981980144100 25.705000000000
|
||||||
|
781 1 9.687000000000 13.049848134493 28.275500000000
|
||||||
|
782 1 9.687000000000 11.185584115280 25.705000000000
|
||||||
|
783 1 11.301500000000 15.846244163313 28.275500000000
|
||||||
|
784 1 11.301500000000 13.981980144100 25.705000000000
|
||||||
|
785 1 12.916000000000 13.049848134493 28.275500000000
|
||||||
|
786 1 12.916000000000 11.185584115280 25.705000000000
|
||||||
|
787 1 14.530500000000 15.846244163313 28.275500000000
|
||||||
|
788 1 14.530500000000 13.981980144100 25.705000000000
|
||||||
|
789 1 16.145000000000 13.049848134493 28.275500000000
|
||||||
|
790 1 16.145000000000 11.185584115280 25.705000000000
|
||||||
|
791 1 17.759500000000 15.846244163313 28.275500000000
|
||||||
|
792 1 17.759500000000 13.981980144100 25.705000000000
|
||||||
|
793 1 0.000000000000 18.642640192133 28.275500000000
|
||||||
|
794 1 0.000000000000 16.778376172920 25.705000000000
|
||||||
|
795 1 1.614500000000 21.439036220953 28.275500000000
|
||||||
|
796 1 1.614500000000 19.574772201740 25.705000000000
|
||||||
|
797 1 3.229000000000 18.642640192133 28.275500000000
|
||||||
|
798 1 3.229000000000 16.778376172920 25.705000000000
|
||||||
|
799 1 4.843500000000 21.439036220953 28.275500000000
|
||||||
|
800 1 4.843500000000 19.574772201740 25.705000000000
|
||||||
|
801 1 6.458000000000 18.642640192133 28.275500000000
|
||||||
|
802 1 6.458000000000 16.778376172920 25.705000000000
|
||||||
|
803 1 8.072500000000 21.439036220953 28.275500000000
|
||||||
|
804 1 8.072500000000 19.574772201740 25.705000000000
|
||||||
|
805 1 9.687000000000 18.642640192133 28.275500000000
|
||||||
|
806 1 9.687000000000 16.778376172920 25.705000000000
|
||||||
|
807 1 11.301500000000 21.439036220953 28.275500000000
|
||||||
|
808 1 11.301500000000 19.574772201740 25.705000000000
|
||||||
|
809 1 12.916000000000 18.642640192133 28.275500000000
|
||||||
|
810 1 12.916000000000 16.778376172920 25.705000000000
|
||||||
|
811 1 14.530500000000 21.439036220953 28.275500000000
|
||||||
|
812 1 14.530500000000 19.574772201740 25.705000000000
|
||||||
|
813 1 16.145000000000 18.642640192133 28.275500000000
|
||||||
|
814 1 16.145000000000 16.778376172920 25.705000000000
|
||||||
|
815 1 17.759500000000 21.439036220953 28.275500000000
|
||||||
|
816 1 17.759500000000 19.574772201740 25.705000000000
|
||||||
|
817 1 0.000000000000 24.235432249773 28.275500000000
|
||||||
|
818 1 0.000000000000 22.371168230560 25.705000000000
|
||||||
|
819 1 1.614500000000 27.031828278593 28.275500000000
|
||||||
|
820 1 1.614500000000 25.167564259380 25.705000000000
|
||||||
|
821 1 3.229000000000 24.235432249773 28.275500000000
|
||||||
|
822 1 3.229000000000 22.371168230560 25.705000000000
|
||||||
|
823 1 4.843500000000 27.031828278593 28.275500000000
|
||||||
|
824 1 4.843500000000 25.167564259380 25.705000000000
|
||||||
|
825 1 6.458000000000 24.235432249773 28.275500000000
|
||||||
|
826 1 6.458000000000 22.371168230560 25.705000000000
|
||||||
|
827 1 8.072500000000 27.031828278593 28.275500000000
|
||||||
|
828 1 8.072500000000 25.167564259380 25.705000000000
|
||||||
|
829 1 9.687000000000 24.235432249773 28.275500000000
|
||||||
|
830 1 9.687000000000 22.371168230560 25.705000000000
|
||||||
|
831 1 11.301500000000 27.031828278593 28.275500000000
|
||||||
|
832 1 11.301500000000 25.167564259380 25.705000000000
|
||||||
|
833 1 12.916000000000 24.235432249773 28.275500000000
|
||||||
|
834 1 12.916000000000 22.371168230560 25.705000000000
|
||||||
|
835 1 14.530500000000 27.031828278593 28.275500000000
|
||||||
|
836 1 14.530500000000 25.167564259380 25.705000000000
|
||||||
|
837 1 16.145000000000 24.235432249773 28.275500000000
|
||||||
|
838 1 16.145000000000 22.371168230560 25.705000000000
|
||||||
|
839 1 17.759500000000 27.031828278593 28.275500000000
|
||||||
|
840 1 17.759500000000 25.167564259380 25.705000000000
|
||||||
|
841 1 0.000000000000 29.828224307413 28.275500000000
|
||||||
|
842 1 0.000000000000 27.963960288200 25.705000000000
|
||||||
|
843 1 1.614500000000 32.624620336233 28.275500000000
|
||||||
|
844 1 1.614500000000 30.760356317019 25.705000000000
|
||||||
|
845 1 3.229000000000 29.828224307413 28.275500000000
|
||||||
|
846 1 3.229000000000 27.963960288200 25.705000000000
|
||||||
|
847 1 4.843500000000 32.624620336233 28.275500000000
|
||||||
|
848 1 4.843500000000 30.760356317019 25.705000000000
|
||||||
|
849 1 6.458000000000 29.828224307413 28.275500000000
|
||||||
|
850 1 6.458000000000 27.963960288200 25.705000000000
|
||||||
|
851 1 8.072500000000 32.624620336233 28.275500000000
|
||||||
|
852 1 8.072500000000 30.760356317019 25.705000000000
|
||||||
|
853 1 9.687000000000 29.828224307413 28.275500000000
|
||||||
|
854 1 9.687000000000 27.963960288200 25.705000000000
|
||||||
|
855 1 11.301500000000 32.624620336233 28.275500000000
|
||||||
|
856 1 11.301500000000 30.760356317019 25.705000000000
|
||||||
|
857 1 12.916000000000 29.828224307413 28.275500000000
|
||||||
|
858 1 12.916000000000 27.963960288200 25.705000000000
|
||||||
|
859 1 14.530500000000 32.624620336233 28.275500000000
|
||||||
|
860 1 14.530500000000 30.760356317019 25.705000000000
|
||||||
|
861 1 16.145000000000 29.828224307413 28.275500000000
|
||||||
|
862 1 16.145000000000 27.963960288200 25.705000000000
|
||||||
|
863 1 17.759500000000 32.624620336233 28.275500000000
|
||||||
|
864 1 17.759500000000 30.760356317019 25.705000000000
|
||||||
55
examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lda_scalings.dat
Normal file
55
examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lda_scalings.dat
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
0.65552758 -0.08218108 -0.23122826
|
||||||
|
2.03065849 0.46494117 0.87297750
|
||||||
|
-15.80180341 1.50484584 0.31669351
|
||||||
|
0.06060238 -0.47589059 -0.41017499
|
||||||
|
4.23928030 -2.27982958 4.87969884
|
||||||
|
-1.09746642 -1.28258171 2.03459312
|
||||||
|
5.48480653 -0.66345012 3.18471732
|
||||||
|
-1.57479966 0.17478998 -0.17156696
|
||||||
|
3.85779786 1.59890578 1.78936017
|
||||||
|
-1.14469715 -2.15823271 2.14353632
|
||||||
|
5.97160056 0.11573423 0.97653410
|
||||||
|
4.44645807 -0.15365582 -0.08773622
|
||||||
|
3.09452721 0.32439223 1.19779688
|
||||||
|
-1.22585061 -0.32185613 0.03949731
|
||||||
|
0.44816997 -1.11182687 0.26222208
|
||||||
|
0.19532128 0.30397832 -0.57154050
|
||||||
|
5.52432571 -0.76685448 0.32647935
|
||||||
|
6.37957282 -0.96148815 1.53439397
|
||||||
|
2.73798648 -0.69516327 1.73607004
|
||||||
|
0.94755899 0.41154702 -0.14095753
|
||||||
|
1.50733544 1.22254481 0.26284605
|
||||||
|
0.98313431 -1.24195379 0.59009611
|
||||||
|
-0.76518592 0.11605047 -0.00304658
|
||||||
|
-0.68335076 0.48935564 -0.53834507
|
||||||
|
1.86534260 -0.49032664 -0.06298849
|
||||||
|
1.52931829 0.64853878 -0.56286214
|
||||||
|
2.64217062 -1.37348638 0.22526281
|
||||||
|
0.18023516 0.03439864 0.77624538
|
||||||
|
2.02366558 0.35432524 0.76748492
|
||||||
|
0.80982907 0.31806067 0.08774175
|
||||||
|
1.57388194 -1.07822533 0.15886237
|
||||||
|
0.41345498 0.38916338 -0.29917607
|
||||||
|
-0.24819893 0.13763422 0.45471609
|
||||||
|
-2.27933523 -0.01771636 -0.20567577
|
||||||
|
1.52275665 0.35306670 0.21266257
|
||||||
|
0.28547991 1.05230832 1.16641438
|
||||||
|
0.97147437 -0.63973458 -0.37994470
|
||||||
|
0.48124764 0.03483500 -0.01982056
|
||||||
|
0.74502588 0.14367872 -0.24443596
|
||||||
|
0.48813660 0.15632903 -0.88469078
|
||||||
|
0.04886450 0.00882595 -0.47920447
|
||||||
|
0.03103900 -0.15091487 -0.41193682
|
||||||
|
-0.10106190 0.14911569 0.10727243
|
||||||
|
-0.15552036 -0.49286545 -0.04644942
|
||||||
|
0.27304084 0.35638954 1.13331445
|
||||||
|
0.57788886 -0.50269555 0.09110942
|
||||||
|
0.36780762 -0.08710371 -0.28478716
|
||||||
|
1.01678932 -0.42099561 -0.07317253
|
||||||
|
0.06561086 -0.27253002 -0.05366136
|
||||||
|
0.22266923 0.19999531 -0.30017173
|
||||||
|
-0.18666193 0.02576273 0.27752106
|
||||||
|
-0.76718071 0.61299522 0.58296511
|
||||||
|
0.60978530 0.04962900 -0.32796430
|
||||||
|
-0.11572649 0.03034386 -0.83005753
|
||||||
|
0.12675714 0.00004617 -0.37078106
|
||||||
1
examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lr_bias.dat
Normal file
1
examples/PACKAGES/sna_nnn_slcsa/dir.slcsa/lr_bias.dat
Normal file
@ -0,0 +1 @@
|
|||||||
|
-6.32012657 5.62127377 1.19871662 -0.49986382
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
-0.42810669 1.25467216 0.93144383
|
||||||
|
0.09624929 -0.80420088 0.48996738
|
||||||
|
-0.09865949 0.39991755 -0.69233982
|
||||||
|
0.43051689 -0.85038883 -0.72907140
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
5.0540
|
||||||
|
-23.8329 4.6638 3.9805
|
||||||
|
1.1377 0.1077 -0.0171
|
||||||
|
0.1077 0.8846 -0.2577
|
||||||
|
-0.0171 -0.2577 0.6783
|
||||||
|
5.2340
|
||||||
|
-21.2853 -6.1583 1.7948
|
||||||
|
1.7124 0.0341 0.1966
|
||||||
|
0.0341 0.6453 0.2880
|
||||||
|
0.1966 0.2880 1.8991
|
||||||
|
5.0360
|
||||||
|
-23.1593 1.3059 -5.7549
|
||||||
|
0.7496 -0.0806 -0.1101
|
||||||
|
-0.0806 1.1178 0.1667
|
||||||
|
-0.1101 0.1667 0.6711
|
||||||
|
7.9940
|
||||||
|
68.1971 0.1604 -0.0067
|
||||||
|
0.9663 -0.1846 0.6622
|
||||||
|
-0.1846 8.2371 0.9841
|
||||||
|
0.6622 0.9841 5.9601
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
137.71497059
|
||||||
|
0.36342014
|
||||||
|
-2.78949838
|
||||||
|
1.75623090
|
||||||
|
-4.86893969
|
||||||
|
-2.31918628
|
||||||
|
-3.01873942
|
||||||
|
59.70217846
|
||||||
|
-8.31239311
|
||||||
|
-1.05113276
|
||||||
|
-4.08948813
|
||||||
|
11.70560234
|
||||||
|
17.48710737
|
||||||
|
42.43158755
|
||||||
|
-6.27727395
|
||||||
|
-1.46675636
|
||||||
|
-3.40739849
|
||||||
|
1.58674150
|
||||||
|
13.02515977
|
||||||
|
5.67885926
|
||||||
|
6.45692906
|
||||||
|
4.69273492
|
||||||
|
21.59764216
|
||||||
|
-7.68805780
|
||||||
|
-4.37357550
|
||||||
|
-5.79764719
|
||||||
|
0.53149261
|
||||||
|
-0.00723980
|
||||||
|
-2.47811316
|
||||||
|
-0.34939237
|
||||||
|
-4.59425510
|
||||||
|
-4.44056296
|
||||||
|
107.64051985
|
||||||
|
-9.32851480
|
||||||
|
-6.62214151
|
||||||
|
-5.69590145
|
||||||
|
22.80361437
|
||||||
|
9.47641390
|
||||||
|
2.25214024
|
||||||
|
-0.19403065
|
||||||
|
3.05386205
|
||||||
|
12.91756406
|
||||||
|
135.15381317
|
||||||
|
-9.93292065
|
||||||
|
-3.73311129
|
||||||
|
10.67039500
|
||||||
|
9.60945072
|
||||||
|
-0.03566872
|
||||||
|
21.97944941
|
||||||
|
6.70251772
|
||||||
|
74.60284853
|
||||||
|
-5.99090678
|
||||||
|
0.21877973
|
||||||
|
-1.19909174
|
||||||
|
1.37424965
|
||||||
57
examples/PACKAGES/sna_nnn_slcsa/in.slcsa
Normal file
57
examples/PACKAGES/sna_nnn_slcsa/in.slcsa
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
variable trequis equal 750.0
|
||||||
|
variable prequis_low equal 0.0
|
||||||
|
variable prequis_high equal 25.0e4
|
||||||
|
variable equilSteps equal 200
|
||||||
|
variable runSteps equal 2000
|
||||||
|
variable freqdump equal 200
|
||||||
|
variable pstime equal step*dt
|
||||||
|
variable sxx equal 1.e-4*pxx
|
||||||
|
variable syy equal 1.e-4*pyy
|
||||||
|
variable szz equal 1.e-4*pzz
|
||||||
|
variable sxy equal 1.e-4*pxy
|
||||||
|
variable sxz equal 1.e-4*pxz
|
||||||
|
variable syz equal 1.e-4*pyz
|
||||||
|
variable TK equal temp
|
||||||
|
variable PE equal pe
|
||||||
|
variable KE equal ke
|
||||||
|
variable V equal vol
|
||||||
|
|
||||||
|
dimension 3
|
||||||
|
boundary p p p
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
read_data data.zr_cell
|
||||||
|
replicate 1 5 5
|
||||||
|
|
||||||
|
change_box all triclinic
|
||||||
|
|
||||||
|
pair_style hybrid/overlay zero 9.0 eam/fs
|
||||||
|
pair_coeff * * zero
|
||||||
|
pair_coeff * * eam/fs Zr_mm.eam.fs Zr
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
|
||||||
|
thermo 50
|
||||||
|
thermo_style custom step pe ke temp vol pxx pyy pzz pxy pyz pxz
|
||||||
|
|
||||||
|
# fix extra all print 50 "${pstime} ${TK} ${PE} ${KE} ${V} ${sxx} ${syy} ${szz} ${sxy} ${sxz} ${syz}" file thermo_global_npt_low_temperature_Zr_hcp.dat
|
||||||
|
|
||||||
|
velocity all create ${trequis} 42345 dist gaussian
|
||||||
|
|
||||||
|
# 1st step : compute the bispectrum on 24 nearest neighbors
|
||||||
|
compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.25
|
||||||
|
|
||||||
|
# 2nd step : perform dimension reduction + logistic regression
|
||||||
|
compute slcsa all slcsa/atom 8 4 dir.slcsa/mean_descriptor.dat dir.slcsa/lda_scalings.dat dir.slcsa/lr_decision.dat dir.slcsa/lr_bias.dat dir.slcsa/mahalanobis_file.dat c_bnnn[*]
|
||||||
|
|
||||||
|
#dump d1 all custom ${freqdump} slcsa_demo.dump id x y z c_slcsa[*]
|
||||||
|
|
||||||
|
# for testing only. in production use dump as shown above
|
||||||
|
compute max_slcsa all reduce max c_slcsa[*]
|
||||||
|
compute min_slcsa all reduce min c_slcsa[*]
|
||||||
|
thermo_style custom step pe ke temp c_max_slcsa[*] c_min_slcsa[*]
|
||||||
|
|
||||||
|
#fix 1 all nvt temp ${trequis} ${trequis} 0.100
|
||||||
|
fix 1 all npt temp ${trequis} ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0
|
||||||
|
|
||||||
|
run ${equilSteps}
|
||||||
180
examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.1
Normal file
180
examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.1
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
LAMMPS (21 Nov 2023)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
variable trequis equal 750.0
|
||||||
|
variable prequis_low equal 0.0
|
||||||
|
variable prequis_high equal 25.0e4
|
||||||
|
variable equilSteps equal 200
|
||||||
|
variable runSteps equal 2000
|
||||||
|
variable freqdump equal 200
|
||||||
|
variable pstime equal step*dt
|
||||||
|
variable sxx equal 1.e-4*pxx
|
||||||
|
variable syy equal 1.e-4*pyy
|
||||||
|
variable szz equal 1.e-4*pzz
|
||||||
|
variable sxy equal 1.e-4*pxy
|
||||||
|
variable sxz equal 1.e-4*pxz
|
||||||
|
variable syz equal 1.e-4*pyz
|
||||||
|
variable TK equal temp
|
||||||
|
variable PE equal pe
|
||||||
|
variable KE equal ke
|
||||||
|
variable V equal vol
|
||||||
|
|
||||||
|
dimension 3
|
||||||
|
boundary p p p
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
read_data data.zr_cell
|
||||||
|
Reading data file ...
|
||||||
|
orthogonal box = (0 0 0) to (19.374 33.556752 30.846)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
864 atoms
|
||||||
|
read_data CPU = 0.002 seconds
|
||||||
|
replicate 1 5 5
|
||||||
|
Replication is creating a 1x5x5 = 25 times larger system...
|
||||||
|
orthogonal box = (0 0 0) to (19.374 167.78376 154.23)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
21600 atoms
|
||||||
|
replicate CPU = 0.001 seconds
|
||||||
|
|
||||||
|
change_box all triclinic
|
||||||
|
Changing box ...
|
||||||
|
triclinic box = (0 0 0) to (19.374 167.78376 154.23) with tilt (0 0 0)
|
||||||
|
|
||||||
|
pair_style hybrid/overlay zero 9.0 eam/fs
|
||||||
|
pair_coeff * * zero
|
||||||
|
pair_coeff * * eam/fs Zr_mm.eam.fs Zr
|
||||||
|
Reading eam/fs potential file Zr_mm.eam.fs with DATE: 2007-06-11
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
|
||||||
|
thermo 50
|
||||||
|
thermo_style custom step pe ke temp vol pxx pyy pzz pxy pyz pxz
|
||||||
|
|
||||||
|
# fix extra all print 50 "${pstime} ${TK} ${PE} ${KE} ${V} ${sxx} ${syy} ${szz} ${sxy} ${sxz} ${syz}" file thermo_global_npt_low_temperature_Zr_hcp.dat
|
||||||
|
|
||||||
|
velocity all create ${trequis} 42345 dist gaussian
|
||||||
|
velocity all create 750 42345 dist gaussian
|
||||||
|
|
||||||
|
# 1st step : compute the bispectrum on 24 nearest neighbors
|
||||||
|
compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.25
|
||||||
|
|
||||||
|
# 2nd step : perform dimension reduction + logistic regression
|
||||||
|
compute slcsa all slcsa/atom 8 4 dir.slcsa/mean_descriptor.dat dir.slcsa/lda_scalings.dat dir.slcsa/lr_decision.dat dir.slcsa/lr_bias.dat dir.slcsa/mahalanobis_file.dat c_bnnn[*]
|
||||||
|
Files used:
|
||||||
|
database mean descriptor: dir.slcsa/mean_descriptor.dat
|
||||||
|
lda scalings : dir.slcsa/lda_scalings.dat
|
||||||
|
lr decision : dir.slcsa/lr_decision.dat
|
||||||
|
lr bias : dir.slcsa/lr_bias.dat
|
||||||
|
maha stats : dir.slcsa/mahalanobis_file.dat
|
||||||
|
For class 0 maha threshold = 5.054
|
||||||
|
mean B:
|
||||||
|
-23.8329
|
||||||
|
4.6638
|
||||||
|
3.9805
|
||||||
|
icov:
|
||||||
|
1.1377 0.1077 -0.0171
|
||||||
|
0.1077 0.8846 -0.2577
|
||||||
|
-0.0171 -0.2577 0.6783
|
||||||
|
For class 1 maha threshold = 5.234
|
||||||
|
mean B:
|
||||||
|
-21.2853
|
||||||
|
-6.1583
|
||||||
|
1.7948
|
||||||
|
icov:
|
||||||
|
1.7124 0.0341 0.1966
|
||||||
|
0.0341 0.6453 0.288
|
||||||
|
0.1966 0.288 1.8991
|
||||||
|
For class 2 maha threshold = 5.036
|
||||||
|
mean B:
|
||||||
|
-23.1593
|
||||||
|
1.3059
|
||||||
|
-5.7549
|
||||||
|
icov:
|
||||||
|
0.7496 -0.0806 -0.1101
|
||||||
|
-0.0806 1.1178 0.1667
|
||||||
|
-0.1101 0.1667 0.6711
|
||||||
|
For class 3 maha threshold = 7.994
|
||||||
|
mean B:
|
||||||
|
68.1971
|
||||||
|
0.1604
|
||||||
|
-0.0067
|
||||||
|
icov:
|
||||||
|
0.9663 -0.1846 0.6622
|
||||||
|
-0.1846 8.2371 0.9841
|
||||||
|
0.6622 0.9841 5.9601
|
||||||
|
|
||||||
|
#dump d1 all custom ${freqdump} slcsa_demo.dump id x y z c_slcsa[*]
|
||||||
|
|
||||||
|
# for testing only. in production use dump as shown above
|
||||||
|
compute max_slcsa all reduce max c_slcsa[*]
|
||||||
|
compute min_slcsa all reduce min c_slcsa[*]
|
||||||
|
thermo_style custom step pe ke temp c_max_slcsa[*] c_min_slcsa[*]
|
||||||
|
|
||||||
|
#fix 1 all nvt temp ${trequis} ${trequis} 0.100
|
||||||
|
fix 1 all npt temp ${trequis} ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0
|
||||||
|
fix 1 all npt temp 750 ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0
|
||||||
|
fix 1 all npt temp 750 750 0.100 tri ${prequis_low} ${prequis_low} 1.0
|
||||||
|
fix 1 all npt temp 750 750 0.100 tri 0 ${prequis_low} 1.0
|
||||||
|
fix 1 all npt temp 750 750 0.100 tri 0 0 1.0
|
||||||
|
|
||||||
|
run ${equilSteps}
|
||||||
|
run 200
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 0 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 11
|
||||||
|
ghost atom cutoff = 11
|
||||||
|
binsize = 5.5, bins = 4 31 29
|
||||||
|
3 neighbor lists, perpetual/occasional/extra = 2 1 0
|
||||||
|
(1) pair zero, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/newton/tri
|
||||||
|
stencil: half/bin/3d/tri
|
||||||
|
bin: standard
|
||||||
|
(2) pair eam/fs, perpetual, trim from (1)
|
||||||
|
attributes: half, newton on, cut 9.6
|
||||||
|
pair build: trim
|
||||||
|
stencil: none
|
||||||
|
bin: none
|
||||||
|
(3) compute sna/atom, occasional
|
||||||
|
attributes: full, newton on
|
||||||
|
pair build: full/bin/atomonly
|
||||||
|
stencil: full/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 31.9 | 31.9 | 31.9 Mbytes
|
||||||
|
Step PotEng KinEng Temp c_max_slcsa[1] c_max_slcsa[2] c_max_slcsa[3] c_max_slcsa[4] c_max_slcsa[5] c_min_slcsa[1] c_min_slcsa[2] c_min_slcsa[3] c_min_slcsa[4] c_min_slcsa[5]
|
||||||
|
0 -143297.23 2093.9174 750 7.6195146 15.787294 1.2169942 111.01919 2 7.6195146 15.787294 1.2169942 111.01919 2
|
||||||
|
50 -142154.08 1007.7164 360.9442 8.8091564 19.23244 4.2093382 113.87959 2 5.0327148 9.6817454 0.02610585 106.71863 2
|
||||||
|
100 -142365.33 1406.6559 503.83647 8.6272189 17.908949 2.9294666 113.75167 2 6.2058895 11.913521 0.033775944 108.66893 2
|
||||||
|
150 -142188.18 1432.0075 512.91691 8.6441961 18.176321 2.9277374 114.27958 2 5.5899425 10.521867 0.014919473 108.14526 2
|
||||||
|
200 -142000.4 1481.7247 530.72462 8.5895692 18.65646 3.1725758 114.55015 2 5.5955774 10.776385 0.061469343 108.35384 2
|
||||||
|
Loop time of 36.3759 on 1 procs for 200 steps with 21600 atoms
|
||||||
|
|
||||||
|
Performance: 0.950 ns/day, 25.261 hours/ns, 5.498 timesteps/s, 118.760 katom-step/s
|
||||||
|
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 9.0837 | 9.0837 | 9.0837 | 0.0 | 24.97
|
||||||
|
Neigh | 0.52896 | 0.52896 | 0.52896 | 0.0 | 1.45
|
||||||
|
Comm | 0.045416 | 0.045416 | 0.045416 | 0.0 | 0.12
|
||||||
|
Output | 26.548 | 26.548 | 26.548 | 0.0 | 72.98
|
||||||
|
Modify | 0.1493 | 0.1493 | 0.1493 | 0.0 | 0.41
|
||||||
|
Other | | 0.02088 | | | 0.06
|
||||||
|
|
||||||
|
Nlocal: 21600 ave 21600 max 21600 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 36674 ave 36674 max 36674 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 2.61729e+06 ave 2.61729e+06 max 2.61729e+06 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
FullNghs: 5.24007e+06 ave 5.24007e+06 max 5.24007e+06 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 5240069
|
||||||
|
Ave neighs/atom = 242.59579
|
||||||
|
Neighbor list builds = 4
|
||||||
|
Dangerous builds = 0
|
||||||
|
Total wall time: 0:00:43
|
||||||
180
examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.4
Normal file
180
examples/PACKAGES/sna_nnn_slcsa/log.12Dec23.slcsa.g++.4
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
LAMMPS (21 Nov 2023)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
variable trequis equal 750.0
|
||||||
|
variable prequis_low equal 0.0
|
||||||
|
variable prequis_high equal 25.0e4
|
||||||
|
variable equilSteps equal 200
|
||||||
|
variable runSteps equal 2000
|
||||||
|
variable freqdump equal 200
|
||||||
|
variable pstime equal step*dt
|
||||||
|
variable sxx equal 1.e-4*pxx
|
||||||
|
variable syy equal 1.e-4*pyy
|
||||||
|
variable szz equal 1.e-4*pzz
|
||||||
|
variable sxy equal 1.e-4*pxy
|
||||||
|
variable sxz equal 1.e-4*pxz
|
||||||
|
variable syz equal 1.e-4*pyz
|
||||||
|
variable TK equal temp
|
||||||
|
variable PE equal pe
|
||||||
|
variable KE equal ke
|
||||||
|
variable V equal vol
|
||||||
|
|
||||||
|
dimension 3
|
||||||
|
boundary p p p
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
read_data data.zr_cell
|
||||||
|
Reading data file ...
|
||||||
|
orthogonal box = (0 0 0) to (19.374 33.556752 30.846)
|
||||||
|
1 by 2 by 2 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
864 atoms
|
||||||
|
read_data CPU = 0.002 seconds
|
||||||
|
replicate 1 5 5
|
||||||
|
Replication is creating a 1x5x5 = 25 times larger system...
|
||||||
|
orthogonal box = (0 0 0) to (19.374 167.78376 154.23)
|
||||||
|
1 by 2 by 2 MPI processor grid
|
||||||
|
21600 atoms
|
||||||
|
replicate CPU = 0.001 seconds
|
||||||
|
|
||||||
|
change_box all triclinic
|
||||||
|
Changing box ...
|
||||||
|
triclinic box = (0 0 0) to (19.374 167.78376 154.23) with tilt (0 0 0)
|
||||||
|
|
||||||
|
pair_style hybrid/overlay zero 9.0 eam/fs
|
||||||
|
pair_coeff * * zero
|
||||||
|
pair_coeff * * eam/fs Zr_mm.eam.fs Zr
|
||||||
|
Reading eam/fs potential file Zr_mm.eam.fs with DATE: 2007-06-11
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
|
||||||
|
thermo 50
|
||||||
|
thermo_style custom step pe ke temp vol pxx pyy pzz pxy pyz pxz
|
||||||
|
|
||||||
|
# fix extra all print 50 "${pstime} ${TK} ${PE} ${KE} ${V} ${sxx} ${syy} ${szz} ${sxy} ${sxz} ${syz}" file thermo_global_npt_low_temperature_Zr_hcp.dat
|
||||||
|
|
||||||
|
velocity all create ${trequis} 42345 dist gaussian
|
||||||
|
velocity all create 750 42345 dist gaussian
|
||||||
|
|
||||||
|
# 1st step : compute the bispectrum on 24 nearest neighbors
|
||||||
|
compute bnnn all sna/atom 9.0 0.99363 8 0.5 1.0 rmin0 0.0 nnn 24 wmode 1 delta 0.25
|
||||||
|
|
||||||
|
# 2nd step : perform dimension reduction + logistic regression
|
||||||
|
compute slcsa all slcsa/atom 8 4 dir.slcsa/mean_descriptor.dat dir.slcsa/lda_scalings.dat dir.slcsa/lr_decision.dat dir.slcsa/lr_bias.dat dir.slcsa/mahalanobis_file.dat c_bnnn[*]
|
||||||
|
Files used:
|
||||||
|
database mean descriptor: dir.slcsa/mean_descriptor.dat
|
||||||
|
lda scalings : dir.slcsa/lda_scalings.dat
|
||||||
|
lr decision : dir.slcsa/lr_decision.dat
|
||||||
|
lr bias : dir.slcsa/lr_bias.dat
|
||||||
|
maha stats : dir.slcsa/mahalanobis_file.dat
|
||||||
|
For class 0 maha threshold = 5.054
|
||||||
|
mean B:
|
||||||
|
-23.8329
|
||||||
|
4.6638
|
||||||
|
3.9805
|
||||||
|
icov:
|
||||||
|
1.1377 0.1077 -0.0171
|
||||||
|
0.1077 0.8846 -0.2577
|
||||||
|
-0.0171 -0.2577 0.6783
|
||||||
|
For class 1 maha threshold = 5.234
|
||||||
|
mean B:
|
||||||
|
-21.2853
|
||||||
|
-6.1583
|
||||||
|
1.7948
|
||||||
|
icov:
|
||||||
|
1.7124 0.0341 0.1966
|
||||||
|
0.0341 0.6453 0.288
|
||||||
|
0.1966 0.288 1.8991
|
||||||
|
For class 2 maha threshold = 5.036
|
||||||
|
mean B:
|
||||||
|
-23.1593
|
||||||
|
1.3059
|
||||||
|
-5.7549
|
||||||
|
icov:
|
||||||
|
0.7496 -0.0806 -0.1101
|
||||||
|
-0.0806 1.1178 0.1667
|
||||||
|
-0.1101 0.1667 0.6711
|
||||||
|
For class 3 maha threshold = 7.994
|
||||||
|
mean B:
|
||||||
|
68.1971
|
||||||
|
0.1604
|
||||||
|
-0.0067
|
||||||
|
icov:
|
||||||
|
0.9663 -0.1846 0.6622
|
||||||
|
-0.1846 8.2371 0.9841
|
||||||
|
0.6622 0.9841 5.9601
|
||||||
|
|
||||||
|
#dump d1 all custom ${freqdump} slcsa_demo.dump id x y z c_slcsa[*]
|
||||||
|
|
||||||
|
# for testing only. in production use dump as shown above
|
||||||
|
compute max_slcsa all reduce max c_slcsa[*]
|
||||||
|
compute min_slcsa all reduce min c_slcsa[*]
|
||||||
|
thermo_style custom step pe ke temp c_max_slcsa[*] c_min_slcsa[*]
|
||||||
|
|
||||||
|
#fix 1 all nvt temp ${trequis} ${trequis} 0.100
|
||||||
|
fix 1 all npt temp ${trequis} ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0
|
||||||
|
fix 1 all npt temp 750 ${trequis} 0.100 tri ${prequis_low} ${prequis_low} 1.0
|
||||||
|
fix 1 all npt temp 750 750 0.100 tri ${prequis_low} ${prequis_low} 1.0
|
||||||
|
fix 1 all npt temp 750 750 0.100 tri 0 ${prequis_low} 1.0
|
||||||
|
fix 1 all npt temp 750 750 0.100 tri 0 0 1.0
|
||||||
|
|
||||||
|
run ${equilSteps}
|
||||||
|
run 200
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 0 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 11
|
||||||
|
ghost atom cutoff = 11
|
||||||
|
binsize = 5.5, bins = 4 31 29
|
||||||
|
3 neighbor lists, perpetual/occasional/extra = 2 1 0
|
||||||
|
(1) pair zero, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/newton/tri
|
||||||
|
stencil: half/bin/3d/tri
|
||||||
|
bin: standard
|
||||||
|
(2) pair eam/fs, perpetual, trim from (1)
|
||||||
|
attributes: half, newton on, cut 9.6
|
||||||
|
pair build: trim
|
||||||
|
stencil: none
|
||||||
|
bin: none
|
||||||
|
(3) compute sna/atom, occasional
|
||||||
|
attributes: full, newton on
|
||||||
|
pair build: full/bin/atomonly
|
||||||
|
stencil: full/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 11.26 | 11.45 | 11.64 Mbytes
|
||||||
|
Step PotEng KinEng Temp c_max_slcsa[1] c_max_slcsa[2] c_max_slcsa[3] c_max_slcsa[4] c_max_slcsa[5] c_min_slcsa[1] c_min_slcsa[2] c_min_slcsa[3] c_min_slcsa[4] c_min_slcsa[5]
|
||||||
|
0 -143297.23 2093.9174 750 7.6195146 15.787294 1.2169942 111.01919 2 7.6195146 15.787294 1.2169942 111.01919 2
|
||||||
|
50 -142154.08 1007.7164 360.9442 8.8091564 19.23244 4.2093382 113.87959 2 5.0327148 9.6817454 0.02610585 106.71863 2
|
||||||
|
100 -142365.33 1406.6559 503.83647 8.6272189 17.908949 2.9294666 113.75167 2 6.2058895 11.913521 0.033775944 108.66893 2
|
||||||
|
150 -142188.18 1432.0075 512.91691 8.6441961 18.176321 2.9277374 114.27958 2 5.5899425 10.521867 0.014919473 108.14526 2
|
||||||
|
200 -142000.4 1481.7247 530.72462 8.5895692 18.65646 3.1725758 114.55015 2 5.5955774 10.776385 0.061469343 108.35384 2
|
||||||
|
Loop time of 9.81677 on 4 procs for 200 steps with 21600 atoms
|
||||||
|
|
||||||
|
Performance: 3.521 ns/day, 6.817 hours/ns, 20.373 timesteps/s, 440.063 katom-step/s
|
||||||
|
99.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 2.6508 | 2.6589 | 2.6698 | 0.5 | 27.09
|
||||||
|
Neigh | 0.1516 | 0.15276 | 0.15406 | 0.3 | 1.56
|
||||||
|
Comm | 0.047132 | 0.058969 | 0.066095 | 3.2 | 0.60
|
||||||
|
Output | 6.8886 | 6.8886 | 6.8886 | 0.0 | 70.17
|
||||||
|
Modify | 0.046437 | 0.04661 | 0.046825 | 0.1 | 0.47
|
||||||
|
Other | | 0.01091 | | | 0.11
|
||||||
|
|
||||||
|
Nlocal: 5400 ave 5416 max 5393 min
|
||||||
|
Histogram: 2 1 0 0 0 0 0 0 0 1
|
||||||
|
Nghost: 12902.8 ave 12911 max 12888 min
|
||||||
|
Histogram: 1 0 0 0 0 0 1 0 0 2
|
||||||
|
Neighs: 654322 ave 655602 max 650912 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 3
|
||||||
|
FullNghs: 1.31002e+06 ave 1.31507e+06 max 1.30683e+06 min
|
||||||
|
Histogram: 1 1 0 1 0 0 0 0 0 1
|
||||||
|
|
||||||
|
Total # of neighbors = 5240065
|
||||||
|
Ave neighs/atom = 242.5956
|
||||||
|
Neighbor list builds = 4
|
||||||
|
Dangerous builds = 0
|
||||||
|
Total wall time: 0:00:11
|
||||||
2
src/.gitignore
vendored
2
src/.gitignore
vendored
@ -635,6 +635,8 @@
|
|||||||
/compute_rattlers_atom.h
|
/compute_rattlers_atom.h
|
||||||
/compute_rigid_local.cpp
|
/compute_rigid_local.cpp
|
||||||
/compute_rigid_local.h
|
/compute_rigid_local.h
|
||||||
|
/compute_slcsa_atom.cpp
|
||||||
|
/compute_slcsa_atom.h
|
||||||
/compute_smd_triangle_vertices.cpp
|
/compute_smd_triangle_vertices.cpp
|
||||||
/compute_smd_triangle_vertices.h
|
/compute_smd_triangle_vertices.h
|
||||||
/compute_spec_atom.cpp
|
/compute_spec_atom.cpp
|
||||||
|
|||||||
416
src/EXTRA-COMPUTE/compute_slcsa_atom.cpp
Normal file
416
src/EXTRA-COMPUTE/compute_slcsa_atom.cpp
Normal file
@ -0,0 +1,416 @@
|
|||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
|
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 author: Paul Lafourcade (CEA-DAM-DIF, Arpajon, France)
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#include "compute_slcsa_atom.h"
|
||||||
|
|
||||||
|
#include "arg_info.h"
|
||||||
|
#include "atom.h"
|
||||||
|
#include "citeme.h"
|
||||||
|
#include "comm.h"
|
||||||
|
#include "error.h"
|
||||||
|
#include "force.h"
|
||||||
|
#include "memory.h"
|
||||||
|
#include "modify.h"
|
||||||
|
#include "neigh_list.h"
|
||||||
|
#include "neighbor.h"
|
||||||
|
#include "pair.h"
|
||||||
|
#include "potential_file_reader.h"
|
||||||
|
#include "update.h"
|
||||||
|
|
||||||
|
#include <cmath>
|
||||||
|
#include <cstring>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace LAMMPS_NS;
|
||||||
|
|
||||||
|
static const char cite_compute_slcsa_atom_c[] =
|
||||||
|
"compute slcsa/atom command: doi:10.1088/0965-0393/21/5/055020\n\n"
|
||||||
|
"@Article{Lafourcade2023,\n"
|
||||||
|
" author = {P. Lafourcade and J.-B. Maillet and C. Denoual and E. Duval and A. Allera and A. "
|
||||||
|
"M. Goryaeva and M.-C. Marinica},\n"
|
||||||
|
" title = {Robust crystal structure identification at extreme conditions using a "
|
||||||
|
"density-independent spectral descriptor and supervised learning},\n"
|
||||||
|
" journal = {Computational Materials Science},\n"
|
||||||
|
" year = 2023,\n"
|
||||||
|
" volume = XX,\n"
|
||||||
|
" pages = {XXXXXX}\n"
|
||||||
|
"}\n\n";
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
ComputeSLCSAAtom::ComputeSLCSAAtom(LAMMPS *lmp, int narg, char **arg) :
|
||||||
|
Compute(lmp, narg, arg), list(nullptr), lda_scalings(nullptr),
|
||||||
|
database_mean_descriptor(nullptr), lr_bias(nullptr), lr_decision(nullptr), icov_list(nullptr),
|
||||||
|
mean_projected_descriptors(nullptr), maha_thresholds(nullptr), full_descriptor(nullptr),
|
||||||
|
projected_descriptor(nullptr), scores(nullptr), probas(nullptr), prodright(nullptr),
|
||||||
|
dmaha(nullptr), classification(nullptr)
|
||||||
|
{
|
||||||
|
// command : compute c1 all slcsa/atom jmax nclasses parameters_file.dat
|
||||||
|
// example : compute c1 all slcsa/atom 8 4 slcsa_parameters.dat
|
||||||
|
// example : compute c1 all slcsa/atom 8 4 database_mean_descriptor.dat lda_scalings.dat lr_decision.dat lr_bias.dat mahalanobis_data.dat c_b1[*]
|
||||||
|
// Steps :
|
||||||
|
// 1. bs=bs-xbar
|
||||||
|
// 2. dred=coefs_lda*bs
|
||||||
|
// 3. scores=decision_lr*dred + lr_bias
|
||||||
|
// 4. probas=exp(scores)/sum(exp(scores))
|
||||||
|
// 5. cs=argmax(probas)
|
||||||
|
|
||||||
|
// Read the parameters file in one bloc
|
||||||
|
// File structure :
|
||||||
|
// # database mean descriptor
|
||||||
|
// vector with bso4dim rows x 1 col
|
||||||
|
// # LDA dimension reduction matrix
|
||||||
|
// matrix bso4dim rows x nclasses-1 cols
|
||||||
|
// # LR decision matrix
|
||||||
|
// matrix with nclasses rows x nclasses-1 cols
|
||||||
|
// # LR bias vector
|
||||||
|
// vector with 1 row x nclasses cols
|
||||||
|
|
||||||
|
if (narg != 11) utils::missing_cmd_args(FLERR, "compute slcsa/atom", error);
|
||||||
|
|
||||||
|
int twojmax = utils::inumeric(FLERR, arg[3], false, lmp);
|
||||||
|
if (twojmax < 0)
|
||||||
|
error->all(FLERR, "Illegal compute slcsa/atom command: twojmax must be a non-negative integer");
|
||||||
|
ncomps = compute_ncomps(twojmax);
|
||||||
|
|
||||||
|
nclasses = utils::inumeric(FLERR, arg[4], false, lmp);
|
||||||
|
if (nclasses < 2)
|
||||||
|
error->all(FLERR, "Illegal compute slcsa/atom command: nclasses must be greater than 1");
|
||||||
|
|
||||||
|
database_mean_descriptor_file = arg[5];
|
||||||
|
lda_scalings_file = arg[6];
|
||||||
|
lr_decision_file = arg[7];
|
||||||
|
lr_bias_file = arg[8];
|
||||||
|
maha_file = arg[9];
|
||||||
|
|
||||||
|
if (comm->me == 0) {
|
||||||
|
auto mesg = fmt::format(
|
||||||
|
"Files used:\n {:24}: {}\n {:24}: {}\n {:24}: {}\n {:24}: {}\n {:24}: {}\n",
|
||||||
|
"database mean descriptor", database_mean_descriptor_file, "lda scalings",
|
||||||
|
lda_scalings_file, "lr decision", lr_decision_file, "lr bias", lr_bias_file, "maha stats",
|
||||||
|
maha_file);
|
||||||
|
utils::logmesg(lmp, mesg);
|
||||||
|
}
|
||||||
|
|
||||||
|
int expand = 0;
|
||||||
|
char **earg;
|
||||||
|
int nvalues = utils::expand_args(FLERR, narg - 10, &arg[10], 1, earg, lmp);
|
||||||
|
if (earg != &arg[10]) expand = 1;
|
||||||
|
arg = earg;
|
||||||
|
|
||||||
|
ArgInfo argi(arg[0]);
|
||||||
|
value_t val;
|
||||||
|
val.id = "";
|
||||||
|
val.val.c = nullptr;
|
||||||
|
val.which = argi.get_type();
|
||||||
|
val.argindex = argi.get_index1();
|
||||||
|
val.id = argi.get_name();
|
||||||
|
if ((val.which == ArgInfo::FIX) || (val.which == ArgInfo::VARIABLE) ||
|
||||||
|
(val.which == ArgInfo::UNKNOWN) || (val.which == ArgInfo::NONE) || (argi.get_dim() > 1))
|
||||||
|
error->all(FLERR, "Invalid compute slcsa/atom argument: {}", arg[0]);
|
||||||
|
|
||||||
|
// if wildcard expansion occurred, free earg memory from exapnd_args()
|
||||||
|
|
||||||
|
if (expand) {
|
||||||
|
for (int i = 0; i < nvalues; i++) delete[] earg[i];
|
||||||
|
memory->sfree(earg);
|
||||||
|
}
|
||||||
|
|
||||||
|
val.val.c = modify->get_compute_by_id(val.id);
|
||||||
|
if (!val.val.c) error->all(FLERR, "Compute ID {} for fix slcsa/atom does not exist", val.id);
|
||||||
|
if (val.val.c->peratom_flag == 0)
|
||||||
|
error->all(FLERR, "Compute slcsa/atom compute {} does not calculate per-atom values", val.id);
|
||||||
|
if (val.argindex == 0 && val.val.c->size_peratom_cols != 0)
|
||||||
|
error->all(FLERR, "Compute slcsa/atom compute {} does not calculate a per-atom vector", val.id);
|
||||||
|
if (val.argindex && val.val.c->size_peratom_cols == 0)
|
||||||
|
error->all(FLERR, "Compute slcsa/atom compute {} does not calculate a per-atom array", val.id);
|
||||||
|
if (val.argindex && val.argindex > val.val.c->size_peratom_cols)
|
||||||
|
error->all(FLERR, "Compute slcsa/atom compute {} array is accessed out-of-range", val.id);
|
||||||
|
descriptorval = val;
|
||||||
|
memory->create(database_mean_descriptor, ncomps, "slcsa/atom:database_mean_descriptor");
|
||||||
|
memory->create(lda_scalings, ncomps, nclasses - 1, "slcsa/atom:lda_scalings");
|
||||||
|
memory->create(lr_decision, nclasses, nclasses - 1, "slcsa/atom:lr_decision");
|
||||||
|
memory->create(lr_bias, nclasses, "slcsa/atom:lr_bias");
|
||||||
|
memory->create(maha_thresholds, nclasses, "slcsa/atom:maha_thresholds");
|
||||||
|
memory->create(icov_list, nclasses, nclasses - 1, nclasses - 1, "slcsa/atom:icov_list");
|
||||||
|
memory->create(mean_projected_descriptors, nclasses, nclasses - 1,
|
||||||
|
"slcsa/atom:mean_projected_descriptors");
|
||||||
|
|
||||||
|
if (comm->me == 0) {
|
||||||
|
|
||||||
|
if (strcmp(database_mean_descriptor_file, "NULL") == 0) {
|
||||||
|
error->one(FLERR,
|
||||||
|
"Cannot open database mean descriptor file {}: ", database_mean_descriptor_file,
|
||||||
|
utils::getsyserror());
|
||||||
|
} else {
|
||||||
|
PotentialFileReader reader(lmp, database_mean_descriptor_file,
|
||||||
|
"database mean descriptor file");
|
||||||
|
int nread = 0;
|
||||||
|
while (nread < ncomps) {
|
||||||
|
auto values = reader.next_values(0);
|
||||||
|
database_mean_descriptor[nread] = values.next_double();
|
||||||
|
nread++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(lda_scalings_file, "NULL") == 0) {
|
||||||
|
error->one(FLERR, "Cannot open database linear discriminant analysis scalings file {}: ",
|
||||||
|
lda_scalings_file, utils::getsyserror());
|
||||||
|
} else {
|
||||||
|
PotentialFileReader reader(lmp, lda_scalings_file, "lda scalings file");
|
||||||
|
int nread = 0;
|
||||||
|
while (nread < ncomps) {
|
||||||
|
auto values = reader.next_values(nclasses - 1);
|
||||||
|
lda_scalings[nread][0] = values.next_double();
|
||||||
|
lda_scalings[nread][1] = values.next_double();
|
||||||
|
lda_scalings[nread][2] = values.next_double();
|
||||||
|
nread++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(lr_decision_file, "NULL") == 0) {
|
||||||
|
error->one(FLERR, "Cannot open logistic regression decision file {}: ", lr_decision_file,
|
||||||
|
utils::getsyserror());
|
||||||
|
} else {
|
||||||
|
PotentialFileReader reader(lmp, lr_decision_file, "lr decision file");
|
||||||
|
int nread = 0;
|
||||||
|
while (nread < nclasses) {
|
||||||
|
auto values = reader.next_values(nclasses - 1);
|
||||||
|
lr_decision[nread][0] = values.next_double();
|
||||||
|
lr_decision[nread][1] = values.next_double();
|
||||||
|
lr_decision[nread][2] = values.next_double();
|
||||||
|
nread++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(lr_bias_file, "NULL") == 0) {
|
||||||
|
error->one(FLERR, "Cannot open logistic regression bias file {}: ", lr_bias_file,
|
||||||
|
utils::getsyserror());
|
||||||
|
} else {
|
||||||
|
PotentialFileReader reader(lmp, lr_bias_file, "lr bias file");
|
||||||
|
auto values = reader.next_values(nclasses);
|
||||||
|
lr_bias[0] = values.next_double();
|
||||||
|
lr_bias[1] = values.next_double();
|
||||||
|
lr_bias[2] = values.next_double();
|
||||||
|
lr_bias[3] = values.next_double();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(maha_file, "NULL") == 0) {
|
||||||
|
error->one(FLERR, "Cannot open mahalanobis stats file {}: ", maha_file, utils::getsyserror());
|
||||||
|
} else {
|
||||||
|
PotentialFileReader reader(lmp, maha_file, "mahalanobis stats file");
|
||||||
|
int nvalues = nclasses * ((nclasses - 1) * (nclasses - 1) + nclasses);
|
||||||
|
auto values = reader.next_values(nvalues);
|
||||||
|
|
||||||
|
for (int i = 0; i < nclasses; i++) {
|
||||||
|
maha_thresholds[i] = values.next_double();
|
||||||
|
for (int j = 0; j < nclasses - 1; j++)
|
||||||
|
mean_projected_descriptors[i][j] = values.next_double();
|
||||||
|
for (int k = 0; k < nclasses - 1; k++)
|
||||||
|
for (int l = 0; l < nclasses - 1; l++) icov_list[i][k][l] = values.next_double();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < nclasses; i++) {
|
||||||
|
auto mesg = fmt::format("For class {} maha threshold = {:.6}\n", i, maha_thresholds[i]);
|
||||||
|
mesg += " mean B:\n";
|
||||||
|
for (int j = 0; j < nclasses - 1; j++)
|
||||||
|
mesg += fmt::format(" {:11.6}\n", mean_projected_descriptors[i][j]);
|
||||||
|
mesg += " icov:\n";
|
||||||
|
for (int j = 0; j < nclasses - 1; j++) {
|
||||||
|
mesg += fmt::format(" {:11.6} {:11.6} {:11.6}\n", icov_list[i][j][0],
|
||||||
|
icov_list[i][j][1], icov_list[i][j][2]);
|
||||||
|
}
|
||||||
|
utils::logmesg(lmp, mesg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MPI_Bcast(&database_mean_descriptor[0], ncomps, MPI_DOUBLE, 0, world);
|
||||||
|
MPI_Bcast(&lda_scalings[0][0], ncomps * (nclasses - 1), MPI_DOUBLE, 0, world);
|
||||||
|
MPI_Bcast(&lr_decision[0][0], nclasses * (nclasses - 1), MPI_DOUBLE, 0, world);
|
||||||
|
MPI_Bcast(&lr_bias[0], nclasses, MPI_DOUBLE, 0, world);
|
||||||
|
MPI_Bcast(&maha_thresholds[0], nclasses, MPI_DOUBLE, 0, world);
|
||||||
|
MPI_Bcast(&mean_projected_descriptors[0][0], nclasses * (nclasses - 1), MPI_DOUBLE, 0, world);
|
||||||
|
MPI_Bcast(&icov_list[0][0][0], nclasses * (nclasses - 1) * (nclasses - 1), MPI_DOUBLE, 0, world);
|
||||||
|
|
||||||
|
peratom_flag = 1;
|
||||||
|
size_peratom_cols = nclasses + 1;
|
||||||
|
ncols = nclasses + 1;
|
||||||
|
nmax = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
ComputeSLCSAAtom::~ComputeSLCSAAtom()
|
||||||
|
{
|
||||||
|
memory->destroy(classification);
|
||||||
|
memory->destroy(database_mean_descriptor);
|
||||||
|
memory->destroy(lda_scalings);
|
||||||
|
memory->destroy(lr_decision);
|
||||||
|
memory->destroy(lr_bias);
|
||||||
|
memory->destroy(maha_thresholds);
|
||||||
|
memory->destroy(mean_projected_descriptors);
|
||||||
|
memory->destroy(icov_list);
|
||||||
|
memory->destroy(full_descriptor);
|
||||||
|
memory->destroy(projected_descriptor);
|
||||||
|
memory->destroy(scores);
|
||||||
|
memory->destroy(probas);
|
||||||
|
memory->destroy(prodright);
|
||||||
|
memory->destroy(dmaha);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void ComputeSLCSAAtom::init()
|
||||||
|
{
|
||||||
|
|
||||||
|
if (modify->get_compute_by_style(style).size() > 1)
|
||||||
|
if (comm->me == 0) error->warning(FLERR, "More than one compute {}", style);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void ComputeSLCSAAtom::init_list(int /*id*/, NeighList *ptr)
|
||||||
|
{
|
||||||
|
list = ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void ComputeSLCSAAtom::compute_peratom()
|
||||||
|
{
|
||||||
|
invoked_peratom = update->ntimestep;
|
||||||
|
|
||||||
|
// grow per-atom if necessary
|
||||||
|
|
||||||
|
if (atom->nmax > nmax) {
|
||||||
|
memory->destroy(classification);
|
||||||
|
nmax = atom->nmax;
|
||||||
|
memory->create(classification, nmax, ncols, "slcsa/atom:classification");
|
||||||
|
array_atom = classification;
|
||||||
|
}
|
||||||
|
|
||||||
|
int *mask = atom->mask;
|
||||||
|
int nlocal = atom->nlocal;
|
||||||
|
double **compute_array;
|
||||||
|
|
||||||
|
if (descriptorval.which == ArgInfo::COMPUTE) {
|
||||||
|
if (!(descriptorval.val.c->invoked_flag & Compute::INVOKED_PERATOM)) {
|
||||||
|
descriptorval.val.c->compute_peratom();
|
||||||
|
descriptorval.val.c->invoked_flag |= Compute::INVOKED_PERATOM;
|
||||||
|
}
|
||||||
|
compute_array = descriptorval.val.c->array_atom;
|
||||||
|
}
|
||||||
|
|
||||||
|
memory->create(full_descriptor, ncomps, "slcsa/atom:local descriptor");
|
||||||
|
memory->create(projected_descriptor, nclasses - 1, "slcsa/atom:reduced descriptor");
|
||||||
|
memory->create(scores, nclasses, "slcsa/atom:scores");
|
||||||
|
memory->create(probas, nclasses, "slcsa/atom:probas");
|
||||||
|
memory->create(prodright, nclasses - 1, "slcsa/atom:prodright");
|
||||||
|
memory->create(dmaha, nclasses, "slcsa/atom:prodright");
|
||||||
|
|
||||||
|
for (int i = 0; i < nlocal; i++) {
|
||||||
|
if (mask[i] & groupbit) {
|
||||||
|
for (int j = 0; j < ncomps; j++) { full_descriptor[j] = compute_array[i][j]; }
|
||||||
|
// Here comes the LDA + LR process
|
||||||
|
// 1st step : Retrieve mean database descriptor
|
||||||
|
for (int j = 0; j < ncomps; j++) { full_descriptor[j] -= database_mean_descriptor[j]; }
|
||||||
|
// 2nd step : Matrix multiplication to go from ncompsx1 -> (nclasses-1)*1
|
||||||
|
for (int j = 0; j < nclasses - 1; j++) {
|
||||||
|
projected_descriptor[j] = 0.;
|
||||||
|
for (int k = 0; k < ncomps; k++) {
|
||||||
|
projected_descriptor[j] += full_descriptor[k] * lda_scalings[k][j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 3rd step : Matrix multiplication
|
||||||
|
for (int j = 0; j < nclasses; j++) {
|
||||||
|
scores[j] = lr_bias[j];
|
||||||
|
for (int k = 0; k < nclasses - 1; k++) {
|
||||||
|
scores[j] += lr_decision[j][k] * projected_descriptor[k];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 4th step : Matrix multiplication
|
||||||
|
double sumexpscores = 0.;
|
||||||
|
for (int j = 0; j < nclasses; j++) sumexpscores += exp(scores[j]);
|
||||||
|
for (int j = 0; j < nclasses; j++) { probas[j] = exp(scores[j]) / sumexpscores; }
|
||||||
|
|
||||||
|
classification[i][nclasses] = argmax(probas, nclasses);
|
||||||
|
|
||||||
|
// 5th step : Mahalanobis distance
|
||||||
|
for (int j = 0; j < nclasses; j++) {
|
||||||
|
prodright[0] = 0.;
|
||||||
|
prodright[1] = 0.;
|
||||||
|
prodright[2] = 0.;
|
||||||
|
for (int k = 0; k < nclasses - 1; k++) {
|
||||||
|
for (int l = 0; l < nclasses - 1; l++) {
|
||||||
|
prodright[k] +=
|
||||||
|
(icov_list[j][k][l] * (projected_descriptor[k] - mean_projected_descriptors[j][k]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
double prodleft = 0.;
|
||||||
|
for (int k = 0; k < nclasses - 1; k++) {
|
||||||
|
prodleft += (prodright[k] * (projected_descriptor[k] - mean_projected_descriptors[j][k]));
|
||||||
|
}
|
||||||
|
classification[i][j] = sqrt(prodleft);
|
||||||
|
}
|
||||||
|
// 6th step : Sanity check
|
||||||
|
int locclass = classification[i][nclasses];
|
||||||
|
|
||||||
|
if (classification[i][locclass] > maha_thresholds[locclass]) {
|
||||||
|
classification[i][nclasses] = -1.;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
for (int j = 0; j < ncols; j++) { classification[i][j] = -1.; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
memory->destroy(full_descriptor);
|
||||||
|
memory->destroy(projected_descriptor);
|
||||||
|
memory->destroy(scores);
|
||||||
|
memory->destroy(probas);
|
||||||
|
memory->destroy(prodright);
|
||||||
|
memory->destroy(dmaha);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ComputeSLCSAAtom::compute_ncomps(int twojmax)
|
||||||
|
{
|
||||||
|
int ncount;
|
||||||
|
|
||||||
|
ncount = 0;
|
||||||
|
|
||||||
|
for (int j1 = 0; j1 <= twojmax; j1++)
|
||||||
|
for (int j2 = 0; j2 <= j1; j2++)
|
||||||
|
for (int j = j1 - j2; j <= MIN(twojmax, j1 + j2); j += 2)
|
||||||
|
if (j >= j1) ncount++;
|
||||||
|
|
||||||
|
return ncount;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ComputeSLCSAAtom::argmax(double arr[], int size)
|
||||||
|
{
|
||||||
|
int maxIndex = 0; // Initialize the index of the maximum value to the first element.
|
||||||
|
double maxValue = arr[0]; // Initialize the maximum value to the first element.
|
||||||
|
|
||||||
|
for (int i = 1; i < size; ++i) {
|
||||||
|
if (arr[i] > maxValue) {
|
||||||
|
// If a greater value is found, update the maxIndex and maxValue.
|
||||||
|
maxIndex = i;
|
||||||
|
maxValue = arr[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return maxIndex;
|
||||||
|
}
|
||||||
95
src/EXTRA-COMPUTE/compute_slcsa_atom.h
Normal file
95
src/EXTRA-COMPUTE/compute_slcsa_atom.h
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
/* -*- c++ -*- ----------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
|
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 author: Paul Lafourcade (CEA-DAM-DIF, Arpajon, France)
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#ifdef COMPUTE_CLASS
|
||||||
|
// clang-format off
|
||||||
|
ComputeStyle(slcsa/atom,ComputeSLCSAAtom);
|
||||||
|
// clang-format on
|
||||||
|
#else
|
||||||
|
|
||||||
|
#ifndef LMP_COMPUTE_SLCSA_ATOM_H
|
||||||
|
#define LMP_COMPUTE_SLCSA_ATOM_H
|
||||||
|
|
||||||
|
#include "compute.h"
|
||||||
|
|
||||||
|
namespace LAMMPS_NS {
|
||||||
|
|
||||||
|
class ComputeSLCSAAtom : public Compute {
|
||||||
|
public:
|
||||||
|
ComputeSLCSAAtom(class LAMMPS *, int, char **);
|
||||||
|
~ComputeSLCSAAtom() override;
|
||||||
|
void init() override;
|
||||||
|
void init_list(int, class NeighList *) override;
|
||||||
|
void compute_peratom() override;
|
||||||
|
// double memory_usage() override;
|
||||||
|
int compute_ncomps(int);
|
||||||
|
int argmax(double *, int);
|
||||||
|
|
||||||
|
private:
|
||||||
|
struct value_t {
|
||||||
|
int which; // type of data: COMPUTE, FIX, VARIABLE
|
||||||
|
int argindex; // 1-based index if data is vector, else 0
|
||||||
|
std::string id; // compute/fix/variable ID
|
||||||
|
union {
|
||||||
|
class Compute *c;
|
||||||
|
class Fix *f;
|
||||||
|
int v;
|
||||||
|
} val;
|
||||||
|
};
|
||||||
|
value_t descriptorval;
|
||||||
|
int nmax;
|
||||||
|
int ncols;
|
||||||
|
int nevery;
|
||||||
|
int ncomps;
|
||||||
|
int nclasses;
|
||||||
|
const char *database_mean_descriptor_file;
|
||||||
|
const char *lda_scalings_file;
|
||||||
|
const char *lr_decision_file;
|
||||||
|
const char *lr_bias_file;
|
||||||
|
const char *covmat_file;
|
||||||
|
const char *maha_file;
|
||||||
|
class NeighList *list;
|
||||||
|
|
||||||
|
// LDA dimension reduction
|
||||||
|
double **lda_scalings;
|
||||||
|
double *database_mean_descriptor;
|
||||||
|
|
||||||
|
// LR classification
|
||||||
|
double *lr_bias;
|
||||||
|
double **lr_decision;
|
||||||
|
|
||||||
|
// Mahalanobis distance calculation
|
||||||
|
double ***icov_list;
|
||||||
|
double **mean_projected_descriptors;
|
||||||
|
double *maha_thresholds;
|
||||||
|
|
||||||
|
// Per-atom local arrays
|
||||||
|
double *full_descriptor;
|
||||||
|
double *projected_descriptor;
|
||||||
|
double *scores;
|
||||||
|
double *probas;
|
||||||
|
double *prodright;
|
||||||
|
double *dmaha;
|
||||||
|
|
||||||
|
// Output array
|
||||||
|
double **classification;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace LAMMPS_NS
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
@ -56,7 +56,10 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
wselfallflag = 0;
|
wselfallflag = 0;
|
||||||
switchinnerflag = 0;
|
switchinnerflag = 0;
|
||||||
nelements = 1;
|
nelements = 1;
|
||||||
|
nnn = 12;
|
||||||
|
wmode = 0;
|
||||||
|
delta = 1.e-3;
|
||||||
|
nearest_neighbors_mode = false;
|
||||||
// process required arguments
|
// process required arguments
|
||||||
|
|
||||||
memory->create(radelem, ntypes + 1, "sna/atom:radelem"); // offset by 1 to match up with types
|
memory->create(radelem, ntypes + 1, "sna/atom:radelem"); // offset by 1 to match up with types
|
||||||
@ -114,6 +117,22 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style);
|
if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style);
|
||||||
quadraticflag = utils::inumeric(FLERR, arg[iarg + 1], false, lmp);
|
quadraticflag = utils::inumeric(FLERR, arg[iarg + 1], false, lmp);
|
||||||
iarg += 2;
|
iarg += 2;
|
||||||
|
} else if (strcmp(arg[iarg],"nnn") == 0) {
|
||||||
|
if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style);
|
||||||
|
nnn = utils::inumeric(FLERR, arg[iarg + 1], false, lmp);
|
||||||
|
nearest_neighbors_mode = true;
|
||||||
|
if (nnn <= 0) error->all(FLERR, "Illegal compute compute {} command", style);
|
||||||
|
iarg += 2;
|
||||||
|
} else if (strcmp(arg[iarg],"wmode") == 0) {
|
||||||
|
if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style);
|
||||||
|
wmode = utils::inumeric(FLERR, arg[iarg + 1], false, lmp);
|
||||||
|
if (wmode < 0) error->all(FLERR, "Illegal compute compute {} command", style);
|
||||||
|
iarg += 2;
|
||||||
|
} else if (strcmp(arg[iarg],"delta") == 0) {
|
||||||
|
if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style);
|
||||||
|
delta = utils::numeric(FLERR, arg[iarg + 1], false, lmp);
|
||||||
|
if (delta < 1.0e-3) error->all(FLERR, "Illegal compute compute {} command", style);
|
||||||
|
iarg += 2;
|
||||||
} else if (strcmp(arg[iarg], "chem") == 0) {
|
} else if (strcmp(arg[iarg], "chem") == 0) {
|
||||||
if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style);
|
if (iarg + 2 > narg) error->all(FLERR, "Illegal compute {} command", style);
|
||||||
chemflag = 1;
|
chemflag = 1;
|
||||||
@ -183,6 +202,7 @@ ComputeSNAAtom::ComputeSNAAtom(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
|
|
||||||
nmax = 0;
|
nmax = 0;
|
||||||
sna = nullptr;
|
sna = nullptr;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
@ -209,7 +229,7 @@ void ComputeSNAAtom::init()
|
|||||||
{
|
{
|
||||||
if (force->pair == nullptr)
|
if (force->pair == nullptr)
|
||||||
error->all(FLERR,"Compute sna/atom requires a pair style be defined");
|
error->all(FLERR,"Compute sna/atom requires a pair style be defined");
|
||||||
|
rcutsq = force->pair->cutforce * force->pair->cutforce;
|
||||||
if (cutmax > force->pair->cutforce)
|
if (cutmax > force->pair->cutforce)
|
||||||
error->all(FLERR,"Compute sna/atom cutoff is longer than pairwise cutoff");
|
error->all(FLERR,"Compute sna/atom cutoff is longer than pairwise cutoff");
|
||||||
|
|
||||||
@ -275,63 +295,164 @@ void ComputeSNAAtom::compute_peratom()
|
|||||||
const int* const jlist = firstneigh[i];
|
const int* const jlist = firstneigh[i];
|
||||||
const int jnum = numneigh[i];
|
const int jnum = numneigh[i];
|
||||||
|
|
||||||
// ensure rij, inside, and typej are of size jnum
|
|
||||||
|
|
||||||
snaptr->grow_rij(jnum);
|
// ############################################################################## //
|
||||||
|
// ##### Start of section for computing bispectrum on nnn nearest neighbors ##### //
|
||||||
|
// ############################################################################## //
|
||||||
|
if (nearest_neighbors_mode == true) {
|
||||||
|
// ##### 1) : consider full neighbor list in rlist
|
||||||
|
memory->create(distsq, jnum, "snann/atom:distsq");
|
||||||
|
memory->create(rlist, jnum, 3, "snann/atom:rlist");
|
||||||
|
|
||||||
// rij[][3] = displacements between atom I and those neighbors
|
int ncount = 0;
|
||||||
// inside = indices of neighbors of I within cutoff
|
for (int jj = 0; jj < jnum; jj++) {
|
||||||
// typej = types of neighbors of I within cutoff
|
int j = jlist[jj];
|
||||||
|
j &= NEIGHMASK;
|
||||||
|
int jtype = type[j];
|
||||||
|
|
||||||
int ninside = 0;
|
const double delx = xtmp - x[j][0];
|
||||||
for (int jj = 0; jj < jnum; jj++) {
|
const double dely = ytmp - x[j][1];
|
||||||
int j = jlist[jj];
|
const double delz = ztmp - x[j][2];
|
||||||
j &= NEIGHMASK;
|
const double rsq = delx * delx + dely * dely + delz * delz;
|
||||||
|
|
||||||
const double delx = xtmp - x[j][0];
|
if (rsq < rcutsq) {
|
||||||
const double dely = ytmp - x[j][1];
|
distsq[ncount] = rsq;
|
||||||
const double delz = ztmp - x[j][2];
|
rlist[ncount][0] = delx;
|
||||||
const double rsq = delx*delx + dely*dely + delz*delz;
|
rlist[ncount][1] = dely;
|
||||||
int jtype = type[j];
|
rlist[ncount][2] = delz;
|
||||||
int jelem = 0;
|
ncount++;
|
||||||
if (chemflag)
|
|
||||||
jelem = map[jtype];
|
|
||||||
if (rsq < cutsq[itype][jtype] && rsq>1e-20) {
|
|
||||||
snaptr->rij[ninside][0] = delx;
|
|
||||||
snaptr->rij[ninside][1] = dely;
|
|
||||||
snaptr->rij[ninside][2] = delz;
|
|
||||||
snaptr->inside[ninside] = j;
|
|
||||||
snaptr->wj[ninside] = wjelem[jtype];
|
|
||||||
snaptr->rcutij[ninside] = (radi+radelem[jtype])*rcutfac;
|
|
||||||
if (switchinnerflag) {
|
|
||||||
snaptr->sinnerij[ninside] = 0.5*(sinnerelem[itype]+sinnerelem[jtype]);
|
|
||||||
snaptr->dinnerij[ninside] = 0.5*(dinnerelem[itype]+dinnerelem[jtype]);
|
|
||||||
}
|
}
|
||||||
if (chemflag) snaptr->element[ninside] = jelem;
|
|
||||||
ninside++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ##### 2) : compute optimal cutoff such that sum weights S_target = nnn
|
||||||
|
double S_target=1.*nnn;
|
||||||
|
double rc_start=0.1;
|
||||||
|
double rc_max=sqrt(rcutsq);
|
||||||
|
double tol=1.e-8;
|
||||||
|
double * sol_dich = dichotomie(S_target, rc_start, rc_max, tol, distsq, ncount, wmode, delta);
|
||||||
|
memory->destroy(distsq);
|
||||||
|
|
||||||
|
// ##### 3) : assign that optimal cutoff radius to bispectrum context using rcsol
|
||||||
|
double rcsol = (sol_dich[0]+sol_dich[1])/2.;
|
||||||
|
memory->destroy(sol_dich);
|
||||||
|
snaptr->grow_rij(ncount);
|
||||||
|
|
||||||
|
int ninside = 0;
|
||||||
|
for (int jj = 0; jj < ncount; jj++) {
|
||||||
|
int j = jlist[jj];
|
||||||
|
j &= NEIGHMASK;
|
||||||
|
|
||||||
|
const double rsq = rlist[jj][0]*rlist[jj][0]+rlist[jj][1]*rlist[jj][1]+rlist[jj][2]*rlist[jj][2];
|
||||||
|
int jtype = type[j];
|
||||||
|
int jelem = 0;
|
||||||
|
if (chemflag)
|
||||||
|
jelem = map[jtype];
|
||||||
|
|
||||||
|
if (rsq < rcsol*rcsol) {
|
||||||
|
snaptr->rij[ninside][0] = rlist[jj][0];//rijmax;
|
||||||
|
snaptr->rij[ninside][1] = rlist[jj][1];//rijmax;
|
||||||
|
snaptr->rij[ninside][2] = rlist[jj][2];//rijmax;
|
||||||
|
snaptr->inside[ninside] = j;
|
||||||
|
snaptr->wj[ninside] = 1.;
|
||||||
|
snaptr->rcutij[ninside] = rcsol;
|
||||||
|
|
||||||
|
if (switchinnerflag) {
|
||||||
|
snaptr->sinnerij[ninside] = 0.5*(sinnerelem[itype]+sinnerelem[jtype]);
|
||||||
|
snaptr->dinnerij[ninside] = 0.5*(dinnerelem[itype]+dinnerelem[jtype]);
|
||||||
|
}
|
||||||
|
if (chemflag) snaptr->element[ninside] = jelem;
|
||||||
|
ninside++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
memory->destroy(rlist);
|
||||||
|
|
||||||
|
// ############################################################################ //
|
||||||
|
// ##### End of section for computing bispectrum on nnn nearest neighbors ##### //
|
||||||
|
// ############################################################################ //
|
||||||
|
snaptr->compute_ui(ninside, ielem);
|
||||||
|
snaptr->compute_zi();
|
||||||
|
snaptr->compute_bi(ielem);
|
||||||
|
|
||||||
|
for (int icoeff = 0; icoeff < ncoeff; icoeff++)
|
||||||
|
sna[i][icoeff] = snaptr->blist[icoeff];
|
||||||
|
if (quadraticflag) {
|
||||||
|
int ncount = ncoeff;
|
||||||
|
for (int icoeff = 0; icoeff < ncoeff; icoeff++) {
|
||||||
|
double bi = snaptr->blist[icoeff];
|
||||||
|
|
||||||
|
// diagonal element of quadratic matrix
|
||||||
|
|
||||||
|
sna[i][ncount++] = 0.5*bi*bi;
|
||||||
|
|
||||||
|
// upper-triangular elements of quadratic matrix
|
||||||
|
|
||||||
|
for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++)
|
||||||
|
sna[i][ncount++] = bi*snaptr->blist[jcoeff];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// ensure rij, inside, and typej are of size jnum
|
||||||
|
|
||||||
|
snaptr->grow_rij(jnum);
|
||||||
|
|
||||||
|
// rij[][3] = displacements between atom I and those neighbors
|
||||||
|
// inside = indices of neighbors of I within cutoff
|
||||||
|
// typej = types of neighbors of I within cutoff
|
||||||
|
|
||||||
|
int ninside = 0;
|
||||||
|
for (int jj = 0; jj < jnum; jj++) {
|
||||||
|
int j = jlist[jj];
|
||||||
|
j &= NEIGHMASK;
|
||||||
|
|
||||||
|
const double delx = xtmp - x[j][0];
|
||||||
|
const double dely = ytmp - x[j][1];
|
||||||
|
const double delz = ztmp - x[j][2];
|
||||||
|
const double rsq = delx*delx + dely*dely + delz*delz;
|
||||||
|
int jtype = type[j];
|
||||||
|
int jelem = 0;
|
||||||
|
if (chemflag)
|
||||||
|
jelem = map[jtype];
|
||||||
|
if (rsq < cutsq[itype][jtype] && rsq>1e-20) {
|
||||||
|
snaptr->rij[ninside][0] = delx;
|
||||||
|
snaptr->rij[ninside][1] = dely;
|
||||||
|
snaptr->rij[ninside][2] = delz;
|
||||||
|
snaptr->inside[ninside] = j;
|
||||||
|
snaptr->wj[ninside] = wjelem[jtype];
|
||||||
|
snaptr->rcutij[ninside] = (radi+radelem[jtype])*rcutfac;
|
||||||
|
if (switchinnerflag) {
|
||||||
|
snaptr->sinnerij[ninside] = 0.5*(sinnerelem[itype]+sinnerelem[jtype]);
|
||||||
|
snaptr->dinnerij[ninside] = 0.5*(dinnerelem[itype]+dinnerelem[jtype]);
|
||||||
|
}
|
||||||
|
if (chemflag) snaptr->element[ninside] = jelem;
|
||||||
|
ninside++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
snaptr->compute_ui(ninside, ielem);
|
||||||
|
snaptr->compute_zi();
|
||||||
|
snaptr->compute_bi(ielem);
|
||||||
|
|
||||||
|
for (int icoeff = 0; icoeff < ncoeff; icoeff++)
|
||||||
|
sna[i][icoeff] = snaptr->blist[icoeff];
|
||||||
|
if (quadraticflag) {
|
||||||
|
int ncount = ncoeff;
|
||||||
|
for (int icoeff = 0; icoeff < ncoeff; icoeff++) {
|
||||||
|
double bi = snaptr->blist[icoeff];
|
||||||
|
|
||||||
|
// diagonal element of quadratic matrix
|
||||||
|
|
||||||
|
sna[i][ncount++] = 0.5*bi*bi;
|
||||||
|
|
||||||
|
// upper-triangular elements of quadratic matrix
|
||||||
|
|
||||||
|
for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++)
|
||||||
|
sna[i][ncount++] = bi*snaptr->blist[jcoeff];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
snaptr->compute_ui(ninside, ielem);
|
|
||||||
snaptr->compute_zi();
|
|
||||||
snaptr->compute_bi(ielem);
|
|
||||||
for (int icoeff = 0; icoeff < ncoeff; icoeff++)
|
|
||||||
sna[i][icoeff] = snaptr->blist[icoeff];
|
|
||||||
if (quadraticflag) {
|
|
||||||
int ncount = ncoeff;
|
|
||||||
for (int icoeff = 0; icoeff < ncoeff; icoeff++) {
|
|
||||||
double bi = snaptr->blist[icoeff];
|
|
||||||
|
|
||||||
// diagonal element of quadratic matrix
|
|
||||||
|
|
||||||
sna[i][ncount++] = 0.5*bi*bi;
|
|
||||||
|
|
||||||
// upper-triangular elements of quadratic matrix
|
|
||||||
|
|
||||||
for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++)
|
|
||||||
sna[i][ncount++] = bi*snaptr->blist[jcoeff];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
for (int icoeff = 0; icoeff < size_peratom_cols; icoeff++)
|
for (int icoeff = 0; icoeff < size_peratom_cols; icoeff++)
|
||||||
sna[i][icoeff] = 0.0;
|
sna[i][icoeff] = 0.0;
|
||||||
@ -352,3 +473,207 @@ double ComputeSNAAtom::memory_usage()
|
|||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
select3 routine from Numerical Recipes (slightly modified)
|
||||||
|
find k smallest values in array of length n
|
||||||
|
sort auxiliary arrays at same time
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
// Use no-op do while to create single statement
|
||||||
|
|
||||||
|
#define SWAP(a, b) \
|
||||||
|
do { \
|
||||||
|
tmp = a; \
|
||||||
|
(a) = b; \
|
||||||
|
(b) = tmp; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define ISWAP(a, b) \
|
||||||
|
do { \
|
||||||
|
itmp = a; \
|
||||||
|
(a) = b; \
|
||||||
|
(b) = itmp; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define SWAP3(a, b) \
|
||||||
|
do { \
|
||||||
|
tmp = (a)[0]; \
|
||||||
|
(a)[0] = (b)[0]; \
|
||||||
|
(b)[0] = tmp; \
|
||||||
|
tmp = (a)[1]; \
|
||||||
|
(a)[1] = (b)[1]; \
|
||||||
|
(b)[1] = tmp; \
|
||||||
|
tmp = (a)[2]; \
|
||||||
|
(a)[2] = (b)[2]; \
|
||||||
|
(b)[2] = tmp; \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void ComputeSNAAtom::select3(int k, int n, double *arr, int *iarr, double **arr3)
|
||||||
|
{
|
||||||
|
int i, ir, j, l, mid, ia, itmp;
|
||||||
|
double a, tmp, a3[3];
|
||||||
|
|
||||||
|
arr--;
|
||||||
|
iarr--;
|
||||||
|
arr3--;
|
||||||
|
l = 1;
|
||||||
|
ir = n;
|
||||||
|
for (;;) {
|
||||||
|
if (ir <= l + 1) {
|
||||||
|
if (ir == l + 1 && arr[ir] < arr[l]) {
|
||||||
|
SWAP(arr[l], arr[ir]);
|
||||||
|
ISWAP(iarr[l], iarr[ir]);
|
||||||
|
SWAP3(arr3[l], arr3[ir]);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
mid = (l + ir) >> 1;
|
||||||
|
SWAP(arr[mid], arr[l + 1]);
|
||||||
|
ISWAP(iarr[mid], iarr[l + 1]);
|
||||||
|
SWAP3(arr3[mid], arr3[l + 1]);
|
||||||
|
if (arr[l] > arr[ir]) {
|
||||||
|
SWAP(arr[l], arr[ir]);
|
||||||
|
ISWAP(iarr[l], iarr[ir]);
|
||||||
|
SWAP3(arr3[l], arr3[ir]);
|
||||||
|
}
|
||||||
|
if (arr[l + 1] > arr[ir]) {
|
||||||
|
SWAP(arr[l + 1], arr[ir]);
|
||||||
|
ISWAP(iarr[l + 1], iarr[ir]);
|
||||||
|
SWAP3(arr3[l + 1], arr3[ir]);
|
||||||
|
}
|
||||||
|
if (arr[l] > arr[l + 1]) {
|
||||||
|
SWAP(arr[l], arr[l + 1]);
|
||||||
|
ISWAP(iarr[l], iarr[l + 1]);
|
||||||
|
SWAP3(arr3[l], arr3[l + 1]);
|
||||||
|
}
|
||||||
|
i = l + 1;
|
||||||
|
j = ir;
|
||||||
|
a = arr[l + 1];
|
||||||
|
ia = iarr[l + 1];
|
||||||
|
a3[0] = arr3[l + 1][0];
|
||||||
|
a3[1] = arr3[l + 1][1];
|
||||||
|
a3[2] = arr3[l + 1][2];
|
||||||
|
for (;;) {
|
||||||
|
do i++;
|
||||||
|
while (arr[i] < a);
|
||||||
|
do j--;
|
||||||
|
while (arr[j] > a);
|
||||||
|
if (j < i) break;
|
||||||
|
SWAP(arr[i], arr[j]);
|
||||||
|
ISWAP(iarr[i], iarr[j]);
|
||||||
|
SWAP3(arr3[i], arr3[j]);
|
||||||
|
}
|
||||||
|
arr[l + 1] = arr[j];
|
||||||
|
arr[j] = a;
|
||||||
|
iarr[l + 1] = iarr[j];
|
||||||
|
iarr[j] = ia;
|
||||||
|
arr3[l + 1][0] = arr3[j][0];
|
||||||
|
arr3[l + 1][1] = arr3[j][1];
|
||||||
|
arr3[l + 1][2] = arr3[j][2];
|
||||||
|
arr3[j][0] = a3[0];
|
||||||
|
arr3[j][1] = a3[1];
|
||||||
|
arr3[j][2] = a3[2];
|
||||||
|
if (j >= k) ir = j - 1;
|
||||||
|
if (j <= k) l = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
double * ComputeSNAAtom::weights(double * rsq, double rcut, int ncounts)
|
||||||
|
{
|
||||||
|
double * w=nullptr;
|
||||||
|
memory->destroy(w);
|
||||||
|
memory->create(w, ncounts, "snann:gauss_weights");
|
||||||
|
double rloc=0.;
|
||||||
|
for (int i=0; i<ncounts; i++)
|
||||||
|
{
|
||||||
|
rloc = sqrt(rsq[i]);
|
||||||
|
if (rloc > rcut){
|
||||||
|
w[i]=0.;
|
||||||
|
} else {
|
||||||
|
w[i]=1.;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return w;
|
||||||
|
}
|
||||||
|
|
||||||
|
double * ComputeSNAAtom::tanh_weights(double * rsq, double rcut, double delta, int ncounts)
|
||||||
|
{
|
||||||
|
double * w=nullptr;
|
||||||
|
memory->destroy(w);
|
||||||
|
memory->create(w, ncounts, "snann:gauss_weights");
|
||||||
|
double rloc=0.;
|
||||||
|
|
||||||
|
for (int i=0; i<ncounts; i++)
|
||||||
|
{
|
||||||
|
rloc = sqrt(rsq[i]);
|
||||||
|
w[i] = 0.5*(1.-tanh((rloc-rcut)/delta));
|
||||||
|
}
|
||||||
|
return w;
|
||||||
|
}
|
||||||
|
|
||||||
|
double ComputeSNAAtom::sum_weights(double * rsq, double * w, int ncounts)
|
||||||
|
{
|
||||||
|
double S=0.;
|
||||||
|
double rloc=0.;
|
||||||
|
for (int i=0; i<ncounts; i++)
|
||||||
|
{
|
||||||
|
S += w[i];
|
||||||
|
}
|
||||||
|
return S;
|
||||||
|
}
|
||||||
|
|
||||||
|
double ComputeSNAAtom::get_target_rcut(double S_target, double * rsq, double rcut, int ncounts, int weightmode, double delta)
|
||||||
|
{
|
||||||
|
double S_sol;
|
||||||
|
if (weightmode == 0) {
|
||||||
|
double * www = weights(rsq, rcut, ncounts);
|
||||||
|
S_sol = sum_weights(rsq, www, ncounts);
|
||||||
|
memory->destroy(www);
|
||||||
|
} else if (weightmode == 1) {
|
||||||
|
double * www = tanh_weights(rsq, rcut, delta, ncounts);
|
||||||
|
S_sol = sum_weights(rsq, www, ncounts);
|
||||||
|
memory->destroy(www);
|
||||||
|
}
|
||||||
|
double err = S_sol - S_target;
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
double * ComputeSNAAtom::dichotomie(double S_target, double a, double b, double e, double * rsq, int ncounts, int weightmode, double delta)
|
||||||
|
{
|
||||||
|
|
||||||
|
double d=b-a;
|
||||||
|
double * sol = nullptr;
|
||||||
|
memory->destroy(sol);
|
||||||
|
memory->create(sol, 2, "snann:sol");
|
||||||
|
double m=0.;
|
||||||
|
|
||||||
|
int cnt=0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
m = ( a + b ) / 2.;
|
||||||
|
d = fabs( b - a );
|
||||||
|
double f_ra = get_target_rcut(S_target, rsq, a, ncounts, weightmode, delta);
|
||||||
|
double f_rm = get_target_rcut(S_target, rsq, m, ncounts, weightmode, delta);
|
||||||
|
if (f_rm == 0.)
|
||||||
|
{
|
||||||
|
sol[0]=m;
|
||||||
|
sol[1]=m;
|
||||||
|
return sol;
|
||||||
|
}
|
||||||
|
else if (f_rm*f_ra > 0.)
|
||||||
|
{
|
||||||
|
a = m;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
b = m;
|
||||||
|
}
|
||||||
|
cnt+=1;
|
||||||
|
} while ( d > e );
|
||||||
|
sol[0]=a;
|
||||||
|
sol[1]=b;
|
||||||
|
return sol;
|
||||||
|
}
|
||||||
|
|||||||
@ -11,6 +11,10 @@
|
|||||||
See the README file in the top-level LAMMPS directory.
|
See the README file in the top-level LAMMPS directory.
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
Contributing author: Paul Lafourcade (CEA-DAM-DIF, Arpajon, France)
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
#ifdef COMPUTE_CLASS
|
#ifdef COMPUTE_CLASS
|
||||||
// clang-format off
|
// clang-format off
|
||||||
ComputeStyle(sna/atom,ComputeSNAAtom);
|
ComputeStyle(sna/atom,ComputeSNAAtom);
|
||||||
@ -32,10 +36,25 @@ class ComputeSNAAtom : public Compute {
|
|||||||
void init_list(int, class NeighList *) override;
|
void init_list(int, class NeighList *) override;
|
||||||
void compute_peratom() override;
|
void compute_peratom() override;
|
||||||
double memory_usage() override;
|
double memory_usage() override;
|
||||||
|
double rcutsq;
|
||||||
|
|
||||||
|
void select3(int, int, double *, int *, double **);
|
||||||
|
double * weights(double *, double, int);
|
||||||
|
double * tanh_weights(double *, double, double, int);
|
||||||
|
double sum_weights(double *, double *, int);
|
||||||
|
double get_target_rcut(double, double *, double, int, int, double);
|
||||||
|
double * dichotomie(double, double, double, double, double *, int, int, double);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int nmax;
|
int nmax;
|
||||||
int ncoeff;
|
int ncoeff;
|
||||||
|
int nnn;
|
||||||
|
int wmode;
|
||||||
|
double delta;
|
||||||
|
bool nearest_neighbors_mode;
|
||||||
|
double *distsq;
|
||||||
|
double **rlist;
|
||||||
|
int *nearest;
|
||||||
double **cutsq;
|
double **cutsq;
|
||||||
class NeighList *list;
|
class NeighList *list;
|
||||||
double **sna;
|
double **sna;
|
||||||
|
|||||||
Reference in New Issue
Block a user