Merge pull request #2699 from yury-lysogorskiy/feature/user-pace

USER-PACE pair_style integration into LAMMPS
This commit is contained in:
Axel Kohlmeyer
2021-04-12 17:05:40 -04:00
committed by GitHub
31 changed files with 10775 additions and 20 deletions

View File

@ -124,7 +124,7 @@ set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE
USER-LB USER-MANIFOLD USER-MEAMC USER-MESONT USER-MGPT USER-MISC USER-MOFFF
USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB
USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH
USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF)
USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-PACE)
set(SUFFIX_PACKAGES CORESHELL GPU KOKKOS OPT USER-INTEL USER-OMP)
@ -387,9 +387,9 @@ else()
endif()
foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM
USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS)
USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS USER-PACE)
if(PKG_${PKG_WITH_INCL})
include(Packages/${PKG_WITH_INCL})
include(Packages/${PKG_WITH_INCL})
endif()
endforeach()

View File

@ -0,0 +1,26 @@
set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2021.4.9.tar.gz" CACHE STRING "URL for PACE evaluator library sources")
set(PACELIB_MD5 "4db54962fbd6adcf8c18d46e1798ceb5" CACHE STRING "MD5 checksum of PACE evaluator library tarball")
mark_as_advanced(PACELIB_URL)
mark_as_advanced(PACELIB_MD5)
# download library sources to build folder
file(DOWNLOAD ${PACELIB_URL} ${CMAKE_BINARY_DIR}/libpace.tar.gz SHOW_PROGRESS EXPECTED_HASH MD5=${PACELIB_MD5})
# uncompress downloaded sources
execute_process(
COMMAND ${CMAKE_COMMAND} -E remove_directory lammps-user-pace*
COMMAND ${CMAKE_COMMAND} -E tar xzf libpace.tar.gz
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
file(GLOB PACE_EVALUATOR_INCLUDE_DIR ${CMAKE_BINARY_DIR}/lammps-user-pace-*/USER-PACE)
file(GLOB PACE_EVALUATOR_SOURCES ${CMAKE_BINARY_DIR}/lammps-user-pace-*/USER-PACE/*.cpp)
list(FILTER PACE_EVALUATOR_SOURCES EXCLUDE REGEX pair_pace.cpp)
add_library(pace STATIC ${PACE_EVALUATOR_SOURCES})
set_target_properties(pace PROPERTIES OUTPUT_NAME pace${LAMMPS_MACHINE})
target_include_directories(pace PUBLIC ${PACE_EVALUATOR_INCLUDE_DIR})
target_link_libraries(lammps PRIVATE pace)

View File

@ -52,6 +52,7 @@ This is the list of packages that may require additional steps.
* :ref:`USER-MESONT <user-mesont>`
* :ref:`USER-MOLFILE <user-molfile>`
* :ref:`USER-NETCDF <user-netcdf>`
* :ref:`USER-PACE <user-pace>`
* :ref:`USER-PLUMED <user-plumed>`
* :ref:`USER-OMP <user-omp>`
* :ref:`USER-QMMM <user-qmmm>`
@ -1247,6 +1248,46 @@ be built for the most part with all major versions of the C++ language.
----------
.. _user-pace:
USER-PACE package
-----------------------------
This package requires a library that can be downloaded and built
in lib/pace or somewhere else, which must be done before building
LAMMPS with this package. The code for the library can be found
at: `https://github.com/ICAMS/lammps-user-pace/ <https://github.com/ICAMS/lammps-user-pace/>`_
.. tabs::
.. tab:: CMake build
By default the library will be downloaded from the git repository
and built automatically when the USER-PACE package is enabled with
``-D PKG_USER-PACE=yes``. The location for the sources may be
customized by setting the variable ``PACELIB_URL`` when
configuring with CMake (e.g. to use a local archive on machines
without internet access). Since CMake checks the validity of the
archive with ``md5sum`` you may also need to set ``PACELIB_MD5``
if you provide a different library version than what is downloaded
automatically.
.. tab:: Traditional make
You can download and build the USER-PACE library
in one step from the ``lammps/src`` dir, using these commands,
which invoke the ``lib/pace/Install.py`` script.
.. code-block:: bash
$ make lib-pace # print help message
$ make lib-pace args="-b" # download and build the default version in lib/pace
You should not need to edit the ``lib/pace/Makefile.lammps`` file.
----------
.. _user-plumed:
USER-PLUMED package

View File

@ -30,17 +30,17 @@ steps, as explained on the :doc:`Build extras <Build_extras>` page.
These links take you to the extra instructions for those select
packages:
+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
| :ref:`COMPRESS <compress>` | :ref:`GPU <gpu>` | :ref:`KIM <kim>` | :ref:`KOKKOS <kokkos>` | :ref:`LATTE <latte>` | :ref:`MESSAGE <message>` |
+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
| :ref:`MSCG <mscg>` | :ref:`OPT <opt>` | :ref:`POEMS <poems>` | :ref:`PYTHON <python>` | :ref:`VORONOI <voronoi>` | :ref:`USER-ADIOS <user-adios>` |
+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
| :ref:`USER-ATC <user-atc>` | :ref:`USER-AWPMD <user-awpmd>` | :ref:`USER-COLVARS <user-colvars>` | :ref:`USER-H5MD <user-h5md>` | :ref:`USER-INTEL <user-intel>` | :ref:`USER-MOLFILE <user-molfile>` |
+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
| :ref:`USER-NETCDF <user-netcdf>` | :ref:`USER-PLUMED <user-plumed>` | :ref:`USER-OMP <user-omp>` | :ref:`USER-QMMM <user-qmmm>` | :ref:`USER-QUIP <user-quip>` | :ref:`USER-SCAFACOS <user-scafacos>` |
+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
| :ref:`USER-SMD <user-smd>` | :ref:`USER-VTK <user-vtk>` | | | | |
+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
| :ref:`COMPRESS <compress>` | :ref:`GPU <gpu>` | :ref:`KIM <kim>` | :ref:`KOKKOS <kokkos>` | :ref:`LATTE <latte>` | :ref:`MESSAGE <message>` |
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
| :ref:`MSCG <mscg>` | :ref:`OPT <opt>` | :ref:`POEMS <poems>` | :ref:`PYTHON <python>` | :ref:`VORONOI <voronoi>` | :ref:`USER-ADIOS <user-adios>` |
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
| :ref:`USER-ATC <user-atc>` | :ref:`USER-AWPMD <user-awpmd>` | :ref:`USER-COLVARS <user-colvars>` | :ref:`USER-H5MD <user-h5md>` | :ref:`USER-INTEL <user-intel>` | :ref:`USER-MOLFILE <user-molfile>` |
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
| :ref:`USER-NETCDF <user-netcdf>` | :ref:`USER-PACE <user-pace>` | :ref:`USER-PLUMED <user-plumed>` | :ref:`USER-OMP <user-omp>` | :ref:`USER-QMMM <user-qmmm>` | :ref:`USER-QUIP <user-quip>` |
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
| :ref:`USER-SCAFACOS <user-scafacos>` | :ref:`USER-SMD <user-smd>` | :ref:`USER-VTK <user-vtk>` | | | |
+--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+
The mechanism for including packages is simple but different for CMake
versus make.

View File

@ -216,6 +216,7 @@ OPT.
* :doc:`oxrna2/stk <pair_oxrna2>`
* :doc:`oxrna2/xstk <pair_oxrna2>`
* :doc:`oxrna2/coaxstk <pair_oxrna2>`
* :doc:`pace <pair_pace>`
* :doc:`peri/eps <pair_peri>`
* :doc:`peri/lps (o) <pair_peri>`
* :doc:`peri/pmb (o) <pair_peri>`

View File

@ -90,6 +90,7 @@ page gives those details.
* :ref:`USER-MOLFILE <PKG-USER-MOLFILE>`
* :ref:`USER-NETCDF <PKG-USER-NETCDF>`
* :ref:`USER-OMP <PKG-USER-OMP>`
* :ref:`USER-PACE <PKG-USER-PACE>`
* :ref:`USER-PHONON <PKG-USER-PHONON>`
* :ref:`USER-PLUMED <PKG-USER-PLUMED>`
* :ref:`USER-PTM <PKG-USER-PTM>`
@ -1349,6 +1350,46 @@ This package has :ref:`specific installation instructions <user-colvars>` on the
----------
.. _PKG-USER-PACE:
USER-PACE package
-------------------
**Contents:**
A pair style for the Atomic Cluster Expansion potential (ACE).
ACE is a methodology for deriving a highly accurate classical potential
fit to a large archive of quantum mechanical (DFT) data. The USER-PACE
package provides an efficient implementation for running simulations
with ACE potentials.
**Authors:**
This package was written by Yury Lysogorskiy^1,
Cas van der Oord^2, Anton Bochkarev^1,
Sarath Menon^1, Matteo Rinaldi^1, Thomas Hammerschmidt^1, Matous Mrovec^1,
Aidan Thompson^3, Gabor Csanyi^2, Christoph Ortner^4, Ralf Drautz^1.
^1: Ruhr-University Bochum, Bochum, Germany
^2: University of Cambridge, Cambridge, United Kingdom
^3: Sandia National Laboratories, Albuquerque, New Mexico, USA
^4: University of British Columbia, Vancouver, BC, Canada
**Install:**
This package has :ref:`specific installation instructions <user-pace>` on the :doc:`Build extras <Build_extras>` page.
**Supporting info:**
* src/USER-PACE: filenames -> commands
* :doc:`pair_style pace <pair_pace>`
* examples/USER/pace
----------
.. _PKG-USER-PLUMED:
USER-PLUMED package

View File

@ -81,6 +81,8 @@ package:
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-OMP <PKG-USER-OMP>` | OpenMP-enabled styles | :doc:`Speed omp <Speed_omp>` | `Benchmarks <https://lammps.sandia.gov/bench.html>`_ | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-PACE <PKG-USER-PACE>` | Fast implementation of Atomic Cluster Expansion (ACE) potential | :doc:`pair pace <pair_pace>` | USER/pace | ext |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-PHONON <PKG-USER-PHONON>` | phonon dynamical matrix | :doc:`fix phonon <fix_phonon>` | USER/phonon | no |
+------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+
| :ref:`USER-PLUMED <PKG-USER-PLUMED>` | :ref:`PLUMED <PLUMED>` free energy library | :doc:`fix plumed <fix_plumed>` | USER/plumed | ext |

114
doc/src/pair_pace.rst Normal file
View File

@ -0,0 +1,114 @@
.. index:: pair_style pace
pair_style pace command
========================
Syntax
""""""
.. code-block:: LAMMPS
pair_style pace ... keyword values ...
* an optional keyword may be appended
* keyword = *product* or *recursive*
.. parsed-literal::
*product* = use product algorithm for basis functions
*recursive* = use recursive algorithm for basis functions
Examples
""""""""
.. code-block:: LAMMPS
pair_style pace
pair_style pace product
pair_coeff * * Cu-PBE-core-rep.ace Cu
Description
"""""""""""
Pair style *pace* computes interactions using the Atomic Cluster
Expansion (ACE), which is a general expansion of the atomic energy in
multi-body basis functions. :ref:`(Drautz) <Drautz20191>`.
The *pace* pair style
provides an efficient implementation that
is described in this paper :ref:`(Lysogorskiy) <Lysogorskiy20211>`.
In ACE, the total energy is decomposed into a sum over
atomic energies. The energy of atom *i* is expressed as a
linear or non-linear function of one or more density functions.
By projecting the
density onto a local atomic base, the lowest order contributions
to the energy can be expressed as a set of scalar polynomials in
basis function contributions summed over neighbor atoms.
Only a single pair_coeff command is used with the *pace* style which
specifies an ACE coefficient file followed by N additional arguments
specifying the mapping of ACE elements to LAMMPS atom types,
where N is the number of LAMMPS atom types:
* ACE coefficient file
* N element names = mapping of ACE elements to atom types
Only a single pair_coeff command is used with the *pace* style which
specifies an ACE file that fully defines the potential.
Note that unlike for other potentials, cutoffs are
not set in the pair_style or pair_coeff command; they are specified in
the ACE file.
The pair_style *pace* command may be followed by an optional keyword
*product* or *recursive*, which determines which of two algorithms
is used for the calculation of basis functions and derivatives.
The default is *recursive*.
See the :doc:`pair_coeff <pair_coeff>` doc page for alternate ways
to specify the path for the ACE coefficient file.
Mixing, shift, table, tail correction, restart, rRESPA info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS with
user-specifiable parameters as described above. You never need to
specify a pair_coeff command with I != J arguments for this style.
This pair style does not support the :doc:`pair_modify <pair_modify>`
shift, table, and tail options.
This pair style does not write its information to :doc:`binary restart files <restart>`, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
This pair style can only be used via the *pair* keyword of the
:doc:`run_style respa <run_style>` command. It does not support the
*inner*\ , *middle*\ , *outer* keywords.
----------
Restrictions
""""""""""""
This pair style is part of the USER-PACE package. It is only enabled if LAMMPS
was built with that package.
See the :doc:`Build package <Build_package>` doc page for more info.
Related commands
""""""""""""""""
:doc:`pair_style snap <pair_snap>`
Default
"""""""
recursive
.. _Drautz20191:
**(Drautz)** Drautz, Phys Rev B, 99, 014104 (2019).
.. _Lysogorskiy20211:
**(Lysogorskiy)** Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, TBD (2021).

View File

@ -99,7 +99,7 @@ accelerated styles exist.
* :doc:`zero <pair_zero>` - neighbor list but no interactions
* :doc:`adp <pair_adp>` - angular dependent potential (ADP) of Mishin
* :doc:`agni <pair_agni>` - machine learned potential mapping atomic environment to forces
* :doc:`agni <pair_agni>` - AGNI machine-learning potential
* :doc:`airebo <pair_airebo>` - AIREBO potential of Stuart
* :doc:`airebo/morse <pair_airebo>` - AIREBO with Morse instead of LJ
* :doc:`atm <pair_atm>` - Axilrod-Teller-Muto potential
@ -280,6 +280,7 @@ accelerated styles exist.
* :doc:`oxrna2/hbond <pair_oxrna2>` -
* :doc:`oxrna2/stk <pair_oxrna2>` -
* :doc:`oxrna2/xstk <pair_oxrna2>` -
* :doc:`pace <pair_pace>` - Atomic Cluster Expansion (ACE) machine-learning potential
* :doc:`peri/eps <pair_peri>` - peridynamic EPS potential
* :doc:`peri/lps <pair_peri>` - peridynamic LPS potential
* :doc:`peri/pmb <pair_peri>` - peridynamic PMB potential
@ -297,7 +298,7 @@ accelerated styles exist.
* :doc:`smd/ulsph <pair_smd_ulsph>` -
* :doc:`smtbq <pair_smtbq>` -
* :doc:`mliap <pair_mliap>` - Multiple styles of machine-learning potential
* :doc:`snap <pair_snap>` - SNAP quantum-accurate potential
* :doc:`snap <pair_snap>` - SNAP machine-learning potential
* :doc:`soft <pair_soft>` - Soft (cosine) potential
* :doc:`sph/heatconduction <pair_sph_heatconduction>` -
* :doc:`sph/idealgas <pair_sph_idealgas>` -

View File

@ -268,6 +268,7 @@ blueviolet
bn
bni
bo
Bochkarev
Bochum
bocs
bodyflag
@ -343,6 +344,7 @@ Cao
Capolungo
Caro
cartesian
Cas
CasP
Caswell
Cates
@ -1069,6 +1071,7 @@ fuer
fx
fy
fz
Gabor
Gahler
gainsboro
Galindo
@ -1193,6 +1196,7 @@ Halperin
Halver
Hamaker
Hamel
Hammerschmidt
haptic
Hara
Harpertown
@ -1743,6 +1747,7 @@ lx
ly
Lybrand
lyon
Lysogorskiy
Lyulin
lz
Maaravi
@ -1801,8 +1806,10 @@ Materias
mathbf
mathjax
matlab
Matous
matplotlib
Matsubara
Matteo
Mattice
Mattox
Mattson
@ -1863,6 +1870,7 @@ MEMALIGN
membered
memcheck
Mendelev
Menon
mer
Meremianin
Mersenne
@ -1986,6 +1994,7 @@ mpiio
mpirun
mplayer
mps
Mrovec
Mryglod
mscg
MSCG
@ -2311,6 +2320,7 @@ oneway
onn
ons
OO
Oord
opencl
openKIM
openmp
@ -2331,6 +2341,7 @@ Orsi
ortho
orthonormal
orthorhombic
Ortner
oso
Otype
Ouldridge
@ -2620,6 +2631,7 @@ radians
Rafferty
rahman
Rahman
Ralf
Raman
ramped
ramping
@ -2727,6 +2739,7 @@ Rij
RIj
Rik
Rin
Rinaldi
Rino
RiRj
Risi
@ -2815,6 +2828,7 @@ Sandia
sandybrown
sanitizer
Sanyal
Sarath
sc
scafacos
SCAFACOS

View File

@ -0,0 +1 @@
../../../potentials/Cu-PBE-core-rep.ace

View File

@ -0,0 +1,38 @@
# simple test of fcc Cu with ACE product
units metal
atom_style atomic
neighbor 0.3 bin
neigh_modify every 2 delay 10 check yes
variable a equal 3.597
lattice fcc $a
region box block 0 4 0 4 0 4
create_box 1 box
create_atoms 1 box
mass 1 26.98
group Al type 1
pair_style pace product
pair_coeff * * Cu-PBE-core-rep.ace Cu
velocity all create 300 8728 loop geom
timestep 0.0005
fix 1 all nve
compute eatom all pe/atom
compute energy all reduce sum c_eatom
variable delenergy equal c_energy-pe
compute satom all stress/atom NULL
compute str all reduce sum c_satom[1] c_satom[2] c_satom[3]
variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press
thermo 10
thermo_style custom step temp epair etotal press v_delenergy v_delpress
run 100

View File

@ -0,0 +1,38 @@
# simple test of fcc Cu with ACE recursive
units metal
atom_style atomic
neighbor 0.3 bin
neigh_modify every 2 delay 10 check yes
variable a equal 3.597
lattice fcc $a
region box block 0 4 0 4 0 4
create_box 1 box
create_atoms 1 box
mass 1 26.98
group Al type 1
pair_style pace recursive
pair_coeff * * Cu-PBE-core-rep.ace Cu
velocity all create 300 8728 loop geom
timestep 0.0005
fix 1 all nve
compute eatom all pe/atom
compute energy all reduce sum c_eatom
variable delenergy equal c_energy-pe
compute satom all stress/atom NULL
compute str all reduce sum c_satom[1] c_satom[2] c_satom[3]
variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press
thermo 10
thermo_style custom step temp epair etotal press v_delenergy v_delpress
run 100

View File

@ -0,0 +1,108 @@
LAMMPS (24 Dec 2020)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94)
using 1 OpenMP thread(s) per MPI task
# simple test of fcc Cu with ACE product
units metal
atom_style atomic
neighbor 0.3 bin
neigh_modify every 2 delay 10 check yes
variable a equal 3.597
lattice fcc $a
lattice fcc 3.597
Lattice spacing in x,y,z = 3.5970000 3.5970000 3.5970000
region box block 0 4 0 4 0 4
create_box 1 box
Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (14.388000 14.388000 14.388000)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 256 atoms
create_atoms CPU = 0.000 seconds
mass 1 26.98
group Al type 1
256 atoms in group Al
pair_style pace product
ACE version: 2021.2.3
Product evaluator is used
pair_coeff * * Cu-PBE-core-rep.ace Cu
Loading Cu-PBE-core-rep.ace
Total number of basis functions
Cu: 16 (r=1) 726 (r>1)
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
velocity all create 300 8728 loop geom
timestep 0.0005
fix 1 all nve
compute eatom all pe/atom
compute energy all reduce sum c_eatom
variable delenergy equal c_energy-pe
compute satom all stress/atom NULL
compute str all reduce sum c_satom[1] c_satom[2] c_satom[3]
variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press
thermo 10
thermo_style custom step temp epair etotal press v_delenergy v_delpress
run 100
Neighbor list info ...
update every 2 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7.7
ghost atom cutoff = 7.7
binsize = 3.85, bins = 4 4 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair pace, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.036 | 4.036 | 4.036 Mbytes
Step Temp E_pair TotEng Press v_delenergy v_delpress
0 300 -945.9873 -936.0989 45359.818 0 2.1827873e-11
10 280.68558 -945.35055 -936.09878 46326.919 0 2.910383e-11
20 228.73618 -943.63789 -936.09844 48903.598 0 -2.910383e-11
30 160.53661 -941.38948 -936.09798 52222.083 0 -2.910383e-11
40 97.732944 -939.31899 -936.09758 55176.875 0 2.1827873e-11
50 59.165961 -938.04759 -936.0974 56850.103 0 2.910383e-11
60 53.124678 -937.84857 -936.09751 56878.948 0 0
70 74.623347 -938.5575 -936.09782 55565.237 0 4.3655746e-11
80 109.4762 -939.70663 -936.09815 53665.652 0 2.910383e-11
90 142.02657 -940.77975 -936.09837 52001.1 0 0
100 161.73598 -941.42945 -936.09842 51114.997 0 1.4551915e-11
Loop time of 11.4718 on 1 procs for 100 steps with 256 atoms
Performance: 0.377 ns/day, 63.732 hours/ns, 8.717 timesteps/s
99.3% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 11.468 | 11.468 | 11.468 | 0.0 | 99.96
Neigh | 0.001181 | 0.001181 | 0.001181 | 0.0 | 0.01
Comm | 0.001207 | 0.001207 | 0.001207 | 0.0 | 0.01
Output | 0.000876 | 0.000876 | 0.000876 | 0.0 | 0.01
Modify | 0.000455 | 0.000455 | 0.000455 | 0.0 | 0.00
Other | | 0.000397 | | | 0.00
Nlocal: 256.000 ave 256 max 256 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 2201.00 ave 2201 max 2201 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 43118.0 ave 43118 max 43118 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 43118
Ave neighs/atom = 168.42969
Neighbor list builds = 1
Dangerous builds = 0
Total wall time: 0:00:11

View File

@ -0,0 +1,108 @@
LAMMPS (24 Dec 2020)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94)
using 1 OpenMP thread(s) per MPI task
# simple test of fcc Cu with ACE product
units metal
atom_style atomic
neighbor 0.3 bin
neigh_modify every 2 delay 10 check yes
variable a equal 3.597
lattice fcc $a
lattice fcc 3.597
Lattice spacing in x,y,z = 3.5970000 3.5970000 3.5970000
region box block 0 4 0 4 0 4
create_box 1 box
Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (14.388000 14.388000 14.388000)
1 by 2 by 2 MPI processor grid
create_atoms 1 box
Created 256 atoms
create_atoms CPU = 0.000 seconds
mass 1 26.98
group Al type 1
256 atoms in group Al
pair_style pace product
ACE version: 2021.2.3
Product evaluator is used
pair_coeff * * Cu-PBE-core-rep.ace Cu
Loading Cu-PBE-core-rep.ace
Total number of basis functions
Cu: 16 (r=1) 726 (r>1)
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
velocity all create 300 8728 loop geom
timestep 0.0005
fix 1 all nve
compute eatom all pe/atom
compute energy all reduce sum c_eatom
variable delenergy equal c_energy-pe
compute satom all stress/atom NULL
compute str all reduce sum c_satom[1] c_satom[2] c_satom[3]
variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press
thermo 10
thermo_style custom step temp epair etotal press v_delenergy v_delpress
run 100
Neighbor list info ...
update every 2 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7.7
ghost atom cutoff = 7.7
binsize = 3.85, bins = 4 4 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair pace, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.005 | 4.005 | 4.005 Mbytes
Step Temp E_pair TotEng Press v_delenergy v_delpress
0 300 -945.9873 -936.0989 45359.818 0 -1.4551915e-11
10 280.68558 -945.35055 -936.09878 46326.919 0 2.910383e-11
20 228.73618 -943.63789 -936.09844 48903.598 0 0
30 160.53661 -941.38948 -936.09798 52222.083 0 -2.910383e-11
40 97.732944 -939.31899 -936.09758 55176.875 0 2.1827873e-11
50 59.165961 -938.04759 -936.0974 56850.103 0 -1.4551915e-11
60 53.124678 -937.84857 -936.09751 56878.948 0 7.2759576e-12
70 74.623347 -938.5575 -936.09782 55565.237 0 0
80 109.4762 -939.70663 -936.09815 53665.652 0 2.1827873e-11
90 142.02657 -940.77975 -936.09837 52001.1 0 -1.4551915e-11
100 161.73598 -941.42945 -936.09842 51114.997 0 1.4551915e-11
Loop time of 3.54317 on 4 procs for 100 steps with 256 atoms
Performance: 1.219 ns/day, 19.684 hours/ns, 28.223 timesteps/s
98.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 | 3.1375 | 3.3058 | 3.469 | 6.5 | 93.30
Neigh | 0.000284 | 0.00031975 | 0.000352 | 0.0 | 0.01
Comm | 0.071607 | 0.23492 | 0.40336 | 24.6 | 6.63
Output | 0.001189 | 0.0012315 | 0.001347 | 0.2 | 0.03
Modify | 0.000311 | 0.00032725 | 0.000351 | 0.0 | 0.01
Other | | 0.0005298 | | | 0.01
Nlocal: 64.0000 ave 71 max 57 min
Histogram: 1 0 0 0 1 1 0 0 0 1
Nghost: 1373.00 ave 1380 max 1366 min
Histogram: 1 0 0 0 1 1 0 0 0 1
Neighs: 0.00000 ave 0 max 0 min
Histogram: 4 0 0 0 0 0 0 0 0 0
FullNghs: 10779.5 ave 11978 max 9604 min
Histogram: 1 0 0 0 1 1 0 0 0 1
Total # of neighbors = 43118
Ave neighs/atom = 168.42969
Neighbor list builds = 1
Dangerous builds = 0
Total wall time: 0:00:03

View File

@ -0,0 +1,108 @@
LAMMPS (24 Dec 2020)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94)
using 1 OpenMP thread(s) per MPI task
# simple test of fcc Cu with ACE recursive
units metal
atom_style atomic
neighbor 0.3 bin
neigh_modify every 2 delay 10 check yes
variable a equal 3.597
lattice fcc $a
lattice fcc 3.597
Lattice spacing in x,y,z = 3.5970000 3.5970000 3.5970000
region box block 0 4 0 4 0 4
create_box 1 box
Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (14.388000 14.388000 14.388000)
1 by 1 by 1 MPI processor grid
create_atoms 1 box
Created 256 atoms
create_atoms CPU = 0.000 seconds
mass 1 26.98
group Al type 1
256 atoms in group Al
pair_style pace recursive
ACE version: 2021.2.3
Recursive evaluator is used
pair_coeff * * Cu-PBE-core-rep.ace Cu
Loading Cu-PBE-core-rep.ace
Total number of basis functions
Cu: 16 (r=1) 726 (r>1)
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
velocity all create 300 8728 loop geom
timestep 0.0005
fix 1 all nve
compute eatom all pe/atom
compute energy all reduce sum c_eatom
variable delenergy equal c_energy-pe
compute satom all stress/atom NULL
compute str all reduce sum c_satom[1] c_satom[2] c_satom[3]
variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press
thermo 10
thermo_style custom step temp epair etotal press v_delenergy v_delpress
run 100
Neighbor list info ...
update every 2 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7.7
ghost atom cutoff = 7.7
binsize = 3.85, bins = 4 4 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair pace, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.036 | 4.036 | 4.036 Mbytes
Step Temp E_pair TotEng Press v_delenergy v_delpress
0 300 -945.9873 -936.0989 45359.818 0 0
10 280.68558 -945.35055 -936.09878 46326.919 0 5.8207661e-11
20 228.73618 -943.63789 -936.09844 48903.598 0 1.4551915e-11
30 160.53661 -941.38948 -936.09798 52222.083 0 7.2759576e-11
40 97.732944 -939.31899 -936.09758 55176.875 0 -5.8207661e-11
50 59.165961 -938.04759 -936.0974 56850.103 0 0
60 53.124678 -937.84857 -936.09751 56878.948 0 8.7311491e-11
70 74.623347 -938.5575 -936.09782 55565.237 0 -1.4551915e-11
80 109.4762 -939.70663 -936.09815 53665.652 0 2.1827873e-11
90 142.02657 -940.77975 -936.09837 52001.1 0 2.910383e-11
100 161.73598 -941.42945 -936.09842 51114.997 0 0
Loop time of 9.31437 on 1 procs for 100 steps with 256 atoms
Performance: 0.464 ns/day, 51.746 hours/ns, 10.736 timesteps/s
99.4% 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.3103 | 9.3103 | 9.3103 | 0.0 | 99.96
Neigh | 0.001214 | 0.001214 | 0.001214 | 0.0 | 0.01
Comm | 0.001176 | 0.001176 | 0.001176 | 0.0 | 0.01
Output | 0.000827 | 0.000827 | 0.000827 | 0.0 | 0.01
Modify | 0.000479 | 0.000479 | 0.000479 | 0.0 | 0.01
Other | | 0.000363 | | | 0.00
Nlocal: 256.000 ave 256 max 256 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 2201.00 ave 2201 max 2201 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0.00000 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 43118.0 ave 43118 max 43118 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 43118
Ave neighs/atom = 168.42969
Neighbor list builds = 1
Dangerous builds = 0
Total wall time: 0:00:09

View File

@ -0,0 +1,108 @@
LAMMPS (24 Dec 2020)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94)
using 1 OpenMP thread(s) per MPI task
# simple test of fcc Cu with ACE recursive
units metal
atom_style atomic
neighbor 0.3 bin
neigh_modify every 2 delay 10 check yes
variable a equal 3.597
lattice fcc $a
lattice fcc 3.597
Lattice spacing in x,y,z = 3.5970000 3.5970000 3.5970000
region box block 0 4 0 4 0 4
create_box 1 box
Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (14.388000 14.388000 14.388000)
1 by 2 by 2 MPI processor grid
create_atoms 1 box
Created 256 atoms
create_atoms CPU = 0.000 seconds
mass 1 26.98
group Al type 1
256 atoms in group Al
pair_style pace recursive
ACE version: 2021.2.3
Recursive evaluator is used
pair_coeff * * Cu-PBE-core-rep.ace Cu
Loading Cu-PBE-core-rep.ace
Total number of basis functions
Cu: 16 (r=1) 726 (r>1)
Mapping LAMMPS atom type #1(Cu) -> ACE species type #0
velocity all create 300 8728 loop geom
timestep 0.0005
fix 1 all nve
compute eatom all pe/atom
compute energy all reduce sum c_eatom
variable delenergy equal c_energy-pe
compute satom all stress/atom NULL
compute str all reduce sum c_satom[1] c_satom[2] c_satom[3]
variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press
thermo 10
thermo_style custom step temp epair etotal press v_delenergy v_delpress
run 100
Neighbor list info ...
update every 2 steps, delay 10 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 7.7
ghost atom cutoff = 7.7
binsize = 3.85, bins = 4 4 4
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair pace, perpetual
attributes: full, newton on
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Per MPI rank memory allocation (min/avg/max) = 4.005 | 4.005 | 4.005 Mbytes
Step Temp E_pair TotEng Press v_delenergy v_delpress
0 300 -945.9873 -936.0989 45359.818 0 -5.0931703e-11
10 280.68558 -945.35055 -936.09878 46326.919 0 1.4551915e-11
20 228.73618 -943.63789 -936.09844 48903.598 0 0
30 160.53661 -941.38948 -936.09798 52222.083 0 -2.910383e-11
40 97.732944 -939.31899 -936.09758 55176.875 0 0
50 59.165961 -938.04759 -936.0974 56850.103 0 -2.910383e-11
60 53.124678 -937.84857 -936.09751 56878.948 0 1.4551915e-11
70 74.623347 -938.5575 -936.09782 55565.237 0 3.6379788e-11
80 109.4762 -939.70663 -936.09815 53665.652 0 -7.2759576e-12
90 142.02657 -940.77975 -936.09837 52001.1 0 -2.910383e-11
100 161.73598 -941.42945 -936.09842 51114.997 0 7.2759576e-12
Loop time of 2.91339 on 4 procs for 100 steps with 256 atoms
Performance: 1.483 ns/day, 16.185 hours/ns, 34.324 timesteps/s
98.9% 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.5753 | 2.723 | 2.8656 | 6.3 | 93.46
Neigh | 0.000308 | 0.000365 | 0.00046 | 0.0 | 0.01
Comm | 0.045106 | 0.18792 | 0.33552 | 24.1 | 6.45
Output | 0.001213 | 0.001259 | 0.001388 | 0.2 | 0.04
Modify | 0.000304 | 0.00033 | 0.00037 | 0.0 | 0.01
Other | | 0.0005595 | | | 0.02
Nlocal: 64.0000 ave 71 max 57 min
Histogram: 1 0 0 0 1 1 0 0 0 1
Nghost: 1373.00 ave 1380 max 1366 min
Histogram: 1 0 0 0 1 1 0 0 0 1
Neighs: 0.00000 ave 0 max 0 min
Histogram: 4 0 0 0 0 0 0 0 0 0
FullNghs: 10779.5 ave 11978 max 9604 min
Histogram: 1 0 0 0 1 1 0 0 0 1
Total # of neighbors = 43118
Ave neighs/atom = 168.42969
Neighbor list builds = 1
Dangerous builds = 0
Total wall time: 0:00:03

2
lib/pace/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/src
/libpace.a

105
lib/pace/Install.py Normal file
View File

@ -0,0 +1,105 @@
# TODO#!/usr/bin/env python
"""
Install.py tool to download, compile, and setup the pace library
used to automate the steps described in the README file in this dir
"""
from __future__ import print_function
import sys, os, subprocess, shutil
from argparse import ArgumentParser
sys.path.append('..')
from install_helpers import fullpath, geturl, checkmd5sum
# settings
thisdir = fullpath('.')
version = 'v.2021.4.9'
# known checksums for different PACE versions. used to validate the download.
checksums = { \
'v.2021.2.3.upd2' : '8fd1162724d349b930e474927197f20d',
'v.2021.4.9' : '4db54962fbd6adcf8c18d46e1798ceb5',
}
parser = ArgumentParser(prog='Install.py',
description="LAMMPS library build wrapper script")
# help message
HELP = """
Syntax from src dir: make lib-pace args="-b"
or: make lib-pace args="-b -v version"
Syntax from lib dir: python Install.py -b
or: python Install.py -b -v version
Examples:
make lib-pace args="-b" # install default version of PACE lib
make lib-pace args="-b -v version" # install specified version of PACE lib
"""
pgroup = parser.add_mutually_exclusive_group()
pgroup.add_argument("-b", "--build", action="store_true",
help="download and build base PACE library")
parser.add_argument("-v", "--version", default=version, choices=checksums.keys(),
help="set version of PACE library to download and build (default: %s)" % version)
parser.add_argument("-vv", "--verbose", action="store_true",
help="be more verbose about is happening while this script runs")
args = parser.parse_args()
# print help message and exit, if neither build nor path options are given
if not args.build:
parser.print_help()
sys.exit(HELP)
buildflag = args.build
verboseflag = args.verbose
version = args.version
archive_extension = "tar.gz"
url = "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/%s.%s" % (version, archive_extension)
unarchived_folder_name = "lammps-user-pace-%s"%(version)
# download PACE tarball, unpack, build PACE
if buildflag:
# download entire tarball
print("Downloading pace tarball ...")
archive_filename = "%s.%s" % (version, archive_extension)
download_filename = "%s/%s" % (thisdir, archive_filename)
print("Downloading from ",url," to ",download_filename, end=" ")
geturl(url, download_filename)
print(" done")
# verify downloaded archive integrity via md5 checksum, if known.
if version in checksums:
if not checkmd5sum(checksums[version], archive_filename):
sys.exit("Checksum for pace library does not match")
print("Unpacking pace tarball ...")
src_folder = thisdir+"/src"
cmd = 'cd "%s"; rm -rf "%s"; tar -xvf %s; mv %s %s' % (thisdir, src_folder, archive_filename, unarchived_folder_name, src_folder)
subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
# build
print("Building libpace ...")
cmd = 'make lib -j2'
txt = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
if verboseflag:
print(txt.decode("UTF-8"))
# remove source files
print("Removing pace build files and archive ...")
cmd = 'rm %s; make clean-build' % (download_filename)
subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)

37
lib/pace/Makefile Normal file
View File

@ -0,0 +1,37 @@
SHELL = /bin/sh
# ------ FILES ------
SRC_FILES = $(wildcard src/USER-PACE/*.cpp)
SRC = $(filter-out src/USER-PACE/pair_pace.cpp, $(SRC_FILES))
# ------ DEFINITIONS ------
LIB = libpace.a
OBJ = $(SRC:.cpp=.o)
# ------ SETTINGS ------
CXXFLAGS = -O3 -fPIC -Isrc/USER-PACE
ARCHIVE = ar
ARCHFLAG = -rc
USRLIB =
SYSLIB =
# ------ MAKE PROCEDURE ------
lib: $(OBJ)
$(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ)
# ------ COMPILE RULES ------
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
# ------ CLEAN ------
clean-all:
-rm -f *~ $(OBJ) $(LIB)
clean-build:
-rm -f *~ $(OBJ)

3
lib/pace/Makefile.lammps Normal file
View File

@ -0,0 +1,3 @@
pace_SYSINC =-I../../lib/pace/src/USER-PACE
pace_SYSLIB = -L../../lib/pace/ -lpace
pace_SYSPATH =

18
lib/pace/README Normal file
View File

@ -0,0 +1,18 @@
This directory contains files required to use the USER-PACE package,
which provides the pace pair style, an efficient implementation of
the Atomic Cluster Expansion potential (ACE).
ACE is a methodology for deriving a highly accurate classical potential
fit to a large archive of quantum mechanical (DFT) data.
This package was written by Yury Lysogorskiy and others
at ICAMS, the Interdisciplinary Centre for Advanced Materials Simulation,
Ruhr University Bochum, Germany, http://www.icams.de
You can type "make lib-pace" from the src directory to see help on
how to download and build this library via make commands, or you can
do the same thing by typing "python Install.py" from within this
directory.
More information about the USER-PACE implementation of ACE
is available here:
https://github.com/ICAMS/lammps-user-pace

File diff suppressed because it is too large Load Diff

3
src/.gitignore vendored
View File

@ -32,6 +32,9 @@
/pair_kim.cpp
/pair_kim.h
/pair_pace.cpp
/pair_pace.h
/superpose3d.h
/kokkos.cpp

View File

@ -55,7 +55,7 @@ PACKUSER = user-adios user-atc user-awpmd user-bocs user-cgdna user-cgsdk user-c
user-diffraction user-dpd user-drude user-eff user-fep user-h5md \
user-intel user-lb user-manifold user-meamc user-mesodpd user-mesont \
user-mgpt user-misc user-mofff user-molfile \
user-netcdf user-omp user-phonon user-plumed user-ptm user-qmmm \
user-netcdf user-omp user-phonon user-pace user-plumed user-ptm user-qmmm \
user-qtb user-quip user-reaction user-reaxc user-scafacos user-smd user-smtbq \
user-sdpd user-sph user-tally user-uef user-vtk user-yaff
@ -63,15 +63,15 @@ PACKLIB = compress gpu kim kokkos latte message mpiio mscg poems \
python voronoi \
user-adios user-atc user-awpmd user-colvars user-h5md user-lb user-molfile \
user-netcdf user-plumed user-qmmm user-quip user-scafacos \
user-smd user-vtk user-mesont
user-smd user-vtk user-mesont user-pace
PACKSYS = compress mpiio python user-lb
PACKINT = gpu kokkos message poems user-atc user-awpmd user-colvars user-mesont
PACKEXT = kim latte mscg voronoi \
user-adios user-h5md user-molfile user-netcdf user-plumed user-qmmm user-quip \
user-smd user-vtk
user-adios user-h5md user-molfile user-netcdf user-pace user-plumed \
user-qmmm user-quip user-smd user-vtk
PACKALL = $(PACKAGE) $(PACKUSER)

64
src/USER-PACE/Install.sh Normal file
View File

@ -0,0 +1,64 @@
# Install/unInstall package files in LAMMPS
# mode = 0/1/2 for uninstall/install/update
mode=$1
# enforce using portable C locale
LC_ALL=C
export LC_ALL
# arg1 = file, arg2 = file it depends on
action () {
if (test $mode = 0) then
rm -f ../$1
elif (! cmp -s $1 ../$1) then
if (test -z "$2" || test -e ../$2) then
cp $1 ..
if (test $mode = 2) then
echo " updating src/$1"
fi
fi
elif (test -n "$2") then
if (test ! -e ../$2) then
rm -f ../$1
fi
fi
}
# all package files with no dependencies
for file in *.cpp *.h; do
test -f ${file} && action $file
done
# edit 2 Makefile.package files to include/exclude package info
if (test $1 = 1) then
if (test -e ../Makefile.package) then
sed -i -e 's/[^ \t]*pace[^ \t]* //' ../Makefile.package
sed -i -e 's|^PKG_SYSINC =[ \t]*|&$(pace_SYSINC) |' ../Makefile.package
sed -i -e 's|^PKG_SYSLIB =[ \t]*|&$(pace_SYSLIB) |' ../Makefile.package
sed -i -e 's|^PKG_SYSPATH =[ \t]*|&$(pace_SYSPATH) |' ../Makefile.package
fi
if (test -e ../Makefile.package.settings) then
sed -i -e '/^include.*pace.*$/d' ../Makefile.package.settings
# multiline form needed for BSD sed on Macs
sed -i -e '4 i \
include ..\/..\/lib\/pace\/Makefile.lammps
' ../Makefile.package.settings
fi
elif (test $1 = 0) then
if (test -e ../Makefile.package) then
sed -i -e 's/[^ \t]*pace[^ \t]* //' ../Makefile.package
fi
if (test -e ../Makefile.package.settings) then
sed -i -e '/^include.*pace.*$/d' ../Makefile.package.settings
fi
fi

23
src/USER-PACE/README Normal file
View File

@ -0,0 +1,23 @@
The USER-PACE package provides the pace pair style,
an efficient implementation of the Atomic Cluster Expansion
potential (ACE).
ACE is a methodology for deriving a highly accurate classical
potential fit to a large archive of quantum mechanical (DFT) data.
This package was written by Yury Lysogorskiy and others
at ICAMS, the Interdisciplinary Centre for Advanced Materials Simulation,
Ruhr University Bochum, Germany (http://www.icams.de).
This package requires a library that can be downloaded and built
in lib/pace or somewhere else, which must be done before building
LAMMPS with this package. Details of the download, build, and
install process for this package using traditional make (not CMake)
are given in the lib/pace/README file, and scripts are
provided to help automate the process. Also see the LAMMPS manual for
general information on building LAMMPS with external libraries
using either traditional make or CMake.
More information about the USER-PACE implementation of ACE
is available here:
https://github.com/ICAMS/lammps-user-pace

392
src/USER-PACE/pair_pace.cpp Normal file
View File

@ -0,0 +1,392 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://lammps.sandia.gov/, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/*
Copyright 2021 Yury Lysogorskiy^1, Cas van der Oord^2, Anton Bochkarev^1,
Sarath Menon^1, Matteo Rinaldi^1, Thomas Hammerschmidt^1, Matous Mrovec^1,
Aidan Thompson^3, Gabor Csanyi^2, Christoph Ortner^4, Ralf Drautz^1
^1: Ruhr-University Bochum, Bochum, Germany
^2: University of Cambridge, Cambridge, United Kingdom
^3: Sandia National Laboratories, Albuquerque, New Mexico, USA
^4: University of British Columbia, Vancouver, BC, Canada
*/
//
// Created by Lysogorskiy Yury on 27.02.20.
//
#include "pair_pace.h"
#include "atom.h"
#include "comm.h"
#include "error.h"
#include "force.h"
#include "math_const.h"
#include "memory.h"
#include "neigh_list.h"
#include "neigh_request.h"
#include "neighbor.h"
#include "update.h"
#include <cmath>
#include <cstring>
#include "ace_evaluator.h"
#include "ace_recursive.h"
#include "ace_c_basis.h"
#include "ace_version.h"
namespace LAMMPS_NS {
struct ACEImpl {
ACECTildeBasisSet *basis_set;
ACERecursiveEvaluator *ace;
};
}
using namespace LAMMPS_NS;
using namespace MathConst;
#define MAXLINE 1024
#define DELTA 4
//added YL
//keywords for ACE evaluator style
#define RECURSIVE_KEYWORD "recursive"
#define PRODUCT_KEYWORD "product"
static int elements_num_pace = 104;
static char const *const elements_pace[104] = {"X", "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na",
"Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn",
"Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr",
"Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb",
"Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd",
"Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir",
"Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th",
"Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr"
};
static int AtomicNumberByName_pace(char *elname) {
for (int i = 1; i < elements_num_pace; i++)
if (strcmp(elname, elements_pace[i]) == 0)
return i;
return -1;
}
/* ---------------------------------------------------------------------- */
PairPACE::PairPACE(LAMMPS *lmp) : Pair(lmp) {
single_enable = 0;
restartinfo = 0;
one_coeff = 1;
manybody_flag = 1;
aceimpl = new ACEImpl;
aceimpl->ace = nullptr;
aceimpl->basis_set = nullptr;
recursive = false;
scale = nullptr;
}
/* ----------------------------------------------------------------------
check if allocated, since class can be destructed when incomplete
------------------------------------------------------------------------- */
PairPACE::~PairPACE() {
if (copymode) return;
delete aceimpl->basis_set;
delete aceimpl->ace;
delete aceimpl;
if (allocated) {
memory->destroy(setflag);
memory->destroy(cutsq);
memory->destroy(scale);
}
}
/* ---------------------------------------------------------------------- */
void PairPACE::compute(int eflag, int vflag) {
int i, j, ii, jj, inum, jnum;
double delx, dely, delz, evdwl;
double fij[3];
int *ilist, *jlist, *numneigh, **firstneigh;
ev_init(eflag, vflag);
// downwards modified by YL
double **x = atom->x;
double **f = atom->f;
tagint *tag = atom->tag;
int *type = atom->type;
// number of atoms in cell
int nlocal = atom->nlocal;
int newton_pair = force->newton_pair;
// number of atoms including ghost atoms
int nall = nlocal + atom->nghost;
// inum: length of the neighborlists list
inum = list->inum;
// ilist: list of "i" atoms for which neighbor lists exist
ilist = list->ilist;
//numneigh: the length of each these neigbor list
numneigh = list->numneigh;
// the pointer to the list of neighbors of "i"
firstneigh = list->firstneigh;
if (inum != nlocal)
error->all(FLERR,fmt::format("inum: {} nlocal: {} are different",inum, nlocal));
// Aidan Thompson told RD (26 July 2019) that practically always holds:
// inum = nlocal
// i = ilist(ii) < inum
// j = jlist(jj) < nall
// neighborlist contains neighbor atoms plus skin atoms,
// skin atoms can be removed by setting skin to zero but here
// they are disregarded anyway
//determine the maximum number of neighbours
int max_jnum = -1;
int nei = 0;
for (ii = 0; ii < list->inum; ii++) {
i = ilist[ii];
jnum = numneigh[i];
nei = nei + jnum;
if (jnum > max_jnum)
max_jnum = jnum;
}
aceimpl->ace->resize_neighbours_cache(max_jnum);
//loop over atoms
for (ii = 0; ii < list->inum; ii++) {
i = list->ilist[ii];
const int itype = type[i];
const double xtmp = x[i][0];
const double ytmp = x[i][1];
const double ztmp = x[i][2];
jlist = firstneigh[i];
jnum = numneigh[i];
// checking if neighbours are actually within cutoff range is done inside compute_atom
// mapping from LAMMPS atom types ('type' array) to ACE species is done inside compute_atom
// by using 'aceimpl->ace->element_type_mapping' array
// x: [r0 ,r1, r2, ..., r100]
// i = 0 ,1
// jnum(0) = 50
// jlist(neigh ind of 0-atom) = [1,2,10,7,99,25, .. 50 element in total]
try {
aceimpl->ace->compute_atom(i, x, type, jnum, jlist);
} catch (exception &e) {
error->one(FLERR, e.what());
}
// 'compute_atom' will update the `aceimpl->ace->e_atom` and `aceimpl->ace->neighbours_forces(jj, alpha)` arrays
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
const int jtype = type[j];
j &= NEIGHMASK;
delx = x[j][0] - xtmp;
dely = x[j][1] - ytmp;
delz = x[j][2] - ztmp;
fij[0] = scale[itype][jtype]*aceimpl->ace->neighbours_forces(jj, 0);
fij[1] = scale[itype][jtype]*aceimpl->ace->neighbours_forces(jj, 1);
fij[2] = scale[itype][jtype]*aceimpl->ace->neighbours_forces(jj, 2);
f[i][0] += fij[0];
f[i][1] += fij[1];
f[i][2] += fij[2];
f[j][0] -= fij[0];
f[j][1] -= fij[1];
f[j][2] -= fij[2];
// tally per-atom virial contribution
if (vflag)
ev_tally_xyz(i, j, nlocal, newton_pair, 0.0, 0.0,
fij[0], fij[1], fij[2],
-delx, -dely, -delz);
}
// tally energy contribution
if (eflag) {
// evdwl = energy of atom I
evdwl = scale[1][1]*aceimpl->ace->e_atom;
ev_tally_full(i, 2.0 * evdwl, 0.0, 0.0, 0.0, 0.0, 0.0);
}
}
if (vflag_fdotr) virial_fdotr_compute();
// end modifications YL
}
/* ---------------------------------------------------------------------- */
void PairPACE::allocate() {
allocated = 1;
int n = atom->ntypes;
memory->create(setflag, n + 1, n + 1, "pair:setflag");
memory->create(cutsq, n + 1, n + 1, "pair:cutsq");
memory->create(scale, n + 1, n + 1,"pair:scale");
map = new int[n+1];
}
/* ----------------------------------------------------------------------
global settings
------------------------------------------------------------------------- */
void PairPACE::settings(int narg, char **arg) {
if (narg > 1)
error->all(FLERR,"Illegal pair_style command.");
// ACE potentials are parameterized in metal units
if (strcmp("metal",update->unit_style) != 0)
error->all(FLERR,"ACE potentials require 'metal' units");
recursive = true; // default evaluator style: RECURSIVE
if (narg > 0) {
if (strcmp(arg[0], RECURSIVE_KEYWORD) == 0)
recursive = true;
else if (strcmp(arg[0], PRODUCT_KEYWORD) == 0) {
recursive = false;
} else error->all(FLERR,"Illegal pair_style command");
}
if (comm->me == 0) {
utils::logmesg(lmp,fmt::format("ACE version: {}.{}.{}\n",
VERSION_YEAR, VERSION_MONTH, VERSION_DAY));
if (recursive) utils::logmesg(lmp,"Recursive evaluator is used\n");
else utils::logmesg(lmp,"Product evaluator is used\n");
}
}
/* ----------------------------------------------------------------------
set coeffs for one or more type pairs
------------------------------------------------------------------------- */
void PairPACE::coeff(int narg, char **arg) {
if (!allocated) allocate();
map_element2type(narg-3,arg+3);
auto potential_file_name = utils::get_potential_file_path(arg[2]);
char **elemtypes = &arg[3];
//load potential file
aceimpl->basis_set = new ACECTildeBasisSet();
if (comm->me == 0)
utils::logmesg(lmp,fmt::format("Loading {}\n", potential_file_name));
aceimpl->basis_set->load(potential_file_name);
if (comm->me == 0) {
utils::logmesg(lmp,"Total number of basis functions\n");
for (SPECIES_TYPE mu = 0; mu < aceimpl->basis_set->nelements; mu++) {
int n_r1 = aceimpl->basis_set->total_basis_size_rank1[mu];
int n = aceimpl->basis_set->total_basis_size[mu];
utils::logmesg(lmp,fmt::format("\t{}: {} (r=1) {} (r>1)\n", aceimpl->basis_set->elements_name[mu], n_r1, n));
}
}
// read args that map atom types to pACE elements
// map[i] = which element the Ith atom type is, -1 if not mapped
// map[0] is not used
aceimpl->ace = new ACERecursiveEvaluator();
aceimpl->ace->set_recursive(recursive);
aceimpl->ace->element_type_mapping.init(atom->ntypes + 1);
const int n = atom->ntypes;
for (int i = 1; i <= n; i++) {
char *elemname = elemtypes[i - 1];
int atomic_number = AtomicNumberByName_pace(elemname);
if (atomic_number == -1)
error->all(FLERR,fmt::format("'{}' is not a valid element\n", elemname));
SPECIES_TYPE mu = aceimpl->basis_set->get_species_index_by_name(elemname);
if (mu != -1) {
if (comm->me == 0)
utils::logmesg(lmp,fmt::format("Mapping LAMMPS atom type #{}({}) -> "
"ACE species type #{}\n", i, elemname, mu));
map[i] = mu;
aceimpl->ace->element_type_mapping(i) = mu; // set up LAMMPS atom type to ACE species mapping for ace evaluator
} else {
error->all(FLERR, fmt::format("Element {} is not supported by ACE-potential from file {}", elemname,potential_file_name));
}
}
// initialize scale factor
for (int i = 1; i <= n; i++) {
for (int j = i; j <= n; j++) {
scale[i][j] = 1.0;
}
}
aceimpl->ace->set_basis(*aceimpl->basis_set, 1);
}
/* ----------------------------------------------------------------------
init specific to this pair style
------------------------------------------------------------------------- */
void PairPACE::init_style() {
if (atom->tag_enable == 0)
error->all(FLERR, "Pair style pACE requires atom IDs");
if (force->newton_pair == 0)
error->all(FLERR, "Pair style pACE requires newton pair on");
// request a full neighbor list
int irequest = neighbor->request(this, instance_me);
neighbor->requests[irequest]->half = 0;
neighbor->requests[irequest]->full = 1;
}
/* ----------------------------------------------------------------------
init for one type pair i,j and corresponding j,i
------------------------------------------------------------------------- */
double PairPACE::init_one(int i, int j) {
if (setflag[i][j] == 0) error->all(FLERR, "All pair coeffs are not set");
//cutoff from the basis set's radial functions settings
scale[j][i] = scale[i][j];
return aceimpl->basis_set->radial_functions->cut(map[i], map[j]);
}
/* ----------------------------------------------------------------------
extract method for extracting value of scale variable
---------------------------------------------------------------------- */
void *PairPACE::extract(const char *str, int &dim)
{
dim = 2;
if (strcmp(str,"scale") == 0) return (void *) scale;
return nullptr;
}

65
src/USER-PACE/pair_pace.h Normal file
View File

@ -0,0 +1,65 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
This software is distributed under the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/*
Copyright 2021 Yury Lysogorskiy^1, Cas van der Oord^2, Anton Bochkarev^1,
Sarath Menon^1, Matteo Rinaldi^1, Thomas Hammerschmidt^1, Matous Mrovec^1,
Aidan Thompson^3, Gabor Csanyi^2, Christoph Ortner^4, Ralf Drautz^1
^1: Ruhr-University Bochum, Bochum, Germany
^2: University of Cambridge, Cambridge, United Kingdom
^3: Sandia National Laboratories, Albuquerque, New Mexico, USA
^4: University of British Columbia, Vancouver, BC, Canada
*/
//
// Created by Lysogorskiy Yury on 27.02.20.
//
#ifdef PAIR_CLASS
PairStyle(pace,PairPACE)
#else
#ifndef LMP_PAIR_PACE_H
#define LMP_PAIR_PACE_H
#include "pair.h"
namespace LAMMPS_NS {
class PairPACE : public Pair {
public:
PairPACE(class LAMMPS *);
virtual ~PairPACE();
virtual void compute(int, int);
void settings(int, char **);
void coeff(int, char **);
virtual void init_style();
double init_one(int, int);
void *extract(const char *, int &);
protected:
struct ACEImpl *aceimpl;
virtual void allocate();
double **scale;
bool recursive; // "recursive" option for ACERecursiveEvaluator
};
}
#endif
#endif

View File

@ -0,0 +1,156 @@
---
lammps_version: 10 Mar 2021
date_generated: Wed Apr 7 19:29:52 2021
epsilon: 5e-13
skip_tests:
prerequisites: ! |
pair pace
pre_commands: ! |
variable newton_pair delete
variable newton_pair index on
post_commands: ! ""
input_file: in.manybody
pair_style: pace product
pair_coeff: ! |
* * Cu-PBE-core-rep.ace Cu Cu Cu Cu Cu Cu Cu Cu
extract: ! ""
natoms: 64
init_vdwl: -161.633164433256
init_coul: 0
init_stress: ! |2-
4.9972088100615499e+00 6.2044830913935627e+00 9.1051638867046787e+00 -3.5472278350778463e+00 1.6694265484458743e+01 1.2476127820340779e+00
init_forces: ! |2
1 -6.2219087614981250e-01 1.4663175178944543e+00 1.0137638901413766e+00
2 -1.1376106569501299e+00 -4.6174763313965872e-01 -9.1065044746775559e-01
3 2.1030321840370370e-01 -1.8491702608421043e-01 2.5692785978237719e-02
4 -8.7721996834879601e-01 1.5265564953914739e+00 6.4946175447488763e-01
5 -4.2522149043165169e-01 -3.7218018176382173e-01 -9.1663252333251566e-02
6 3.7791326544489656e-01 1.2266089287989812e+00 2.9557107319921827e-01
7 -5.3020873901893739e-01 -5.3124732660122731e-01 7.0401499321631211e-01
8 -4.7453371627778157e-02 2.6914766341308627e-01 -3.4048361271920741e-01
9 -1.5727338601129420e-01 -8.3756943998984656e-01 -1.0686980500960253e+00
10 4.1485698120166843e-03 -4.7811767918434078e-01 -1.0586891580297206e+00
11 1.5438259205363782e+00 -1.5050047785033229e+00 9.6197857985461699e-01
12 -2.5123830465559287e+00 -1.7362105833106261e+00 -1.6289247068121975e+00
13 -5.9061498165333037e-01 2.3625898287840648e+00 -3.1399719632578482e-01
14 -5.5397546653775487e-01 1.8689085709447488e+00 -2.3086691928371150e-02
15 -1.6265821570337315e+00 1.7928198829778783e+00 -1.7156140339072117e+00
16 8.1679939937581825e-01 3.9772968007052850e-01 3.1004730854830331e+00
17 1.0595934046175022e+00 1.1460004586855164e+00 -1.8847997843937443e+00
18 2.0249462959828027e-01 2.6186197454749149e-01 1.4401663320550588e+00
19 -5.4631311118700510e-01 -7.9893542481115554e-01 -3.9498484189193867e-01
20 -2.7894722368446363e+00 3.3102350276296261e-01 1.9153108358696447e-01
21 7.2621138168723165e-01 -6.2245359068793776e-02 -1.1867468416622704e+00
22 -2.8699857742027954e+00 2.0263873921216695e+00 -2.5768047926156896e+00
23 6.7173035813894433e-01 1.1304059874438197e+00 9.5707129936936708e-01
24 8.1087520346689013e-01 9.3244931025572342e-01 1.2800553902585901e+00
25 2.8247847798959724e-01 -1.2561285000275449e-01 5.0249723343582131e-01
26 -1.2883224887965014e-01 -1.4823080811794720e-01 2.1451743731744269e-01
27 8.7218773747963574e-01 -4.8694991909043589e-01 8.0838245267066877e-01
28 -8.4108903261132240e-03 4.7660038551589268e-01 2.2692513770082767e+00
29 -1.2657298236003225e+00 5.0651440211205545e-01 -4.8138238615461226e-01
30 -4.9017825771987117e-01 4.3447662476279558e-01 -3.4664013847475933e-01
31 -5.2051576149994172e-01 3.8596959394993430e-01 -3.4070818553119930e-01
32 -1.3692783712259324e+00 1.9224558097577280e-01 -2.3226212734495302e-01
33 2.0607521792189685e+00 -1.2673195197857356e+00 1.6670068237762361e+00
34 -4.3444509217934746e-02 -3.3223620460414396e-02 1.7607017023404770e-01
35 5.0753059936755485e-01 -3.2385224472005308e-01 1.0142288303361275e+00
36 1.3677004996446801e-01 -9.3517724534410873e-01 2.4335569461986416e-02
37 -7.4579131173355373e-01 8.8843839477814257e-01 -9.4789414920423842e-01
38 3.9719539842505980e-02 -1.5258728344629927e-01 8.3622980382132700e-03
39 8.1730755341737116e-01 -9.8384548843887609e-01 -1.6996132976225720e+00
40 1.7801146130924872e+00 -1.1427274274008914e+00 -6.5983603408485103e-01
41 5.2820539468557050e-03 -2.3421071155474642e-02 -2.2563348155755425e-01
42 -1.5456364604619246e+00 -8.8225129116518508e-01 -5.8763735424108920e-01
43 1.1131408674714505e-01 -2.2247577888201988e+00 9.9728168268816919e-02
44 1.3854946872101335e+00 -1.5126948458101386e+00 9.7414222691400487e-01
45 -4.5981549862059468e-01 8.1397756884858363e-01 -1.3541793681441523e+00
46 -6.2619038173039365e-01 -8.2735236769680287e-01 2.2798662790638051e+00
47 1.0779718530622200e+00 5.2605298038101200e-01 6.1701114081825081e-01
48 3.8637284054399190e-01 3.0866805709781331e-01 -1.6028037248104018e-01
49 -8.8513638517173976e-01 -2.2564795567224198e+00 -1.4543286189784184e+00
50 4.0710335798111497e-01 1.0605235322146205e+00 -3.9752095773786261e-01
51 -9.1955086227825678e-01 1.6763661105933092e+00 1.6016036592489016e+00
52 2.4999859814585754e+00 -2.4516798161916005e+00 2.9455125031924960e+00
53 1.3494715555333863e+00 1.5041935505267137e+00 1.1203406583029385e+00
54 1.0781523968729976e+00 -1.1923649286227966e+00 -9.5279276661349610e-01
55 8.9808463906224834e-01 -1.4591385038403597e+00 -1.5496340042814589e+00
56 -1.6781965313765140e-01 2.7770530096449575e-01 -9.0012005317367583e-01
57 8.4669616061380487e-02 -3.6858526486025139e-01 -5.9756791316798570e-02
58 8.5722805697043558e-01 -4.6399147930805790e-01 3.6325830284450400e-01
59 1.6110642872174779e+00 9.9355375331449325e-01 -9.4982017793350748e-01
60 -1.3129344859566598e+00 -2.5250923468261077e+00 -1.6935614677383237e+00
61 -4.4869257920465672e-02 6.9444242511398624e-01 -2.4196506339842316e-01
62 -1.1637776716822190e+00 1.1834011745844724e+00 -9.3135952930487587e-01
63 9.6457625131492997e-01 -1.4202510282595555e+00 -6.5977083749846954e-01
64 1.3468893282796701e+00 1.5138254987169797e+00 2.7159451744492960e+00
run_vdwl: -161.618480729195
run_coul: 0
run_stress: ! |2-
4.9994648190802469e+00 6.2341889704204814e+00 9.1844870434928065e+00 -3.5139192287217877e+00 1.6660134035412678e+01 1.4298492052949148e+00
run_forces: ! |2
1 -6.2816679628833150e-01 1.4637637672487021e+00 1.0165317420170146e+00
2 -1.1422624515775013e+00 -4.7321268150877716e-01 -9.1937052724928292e-01
3 1.9863435270459309e-01 -1.8101272698051718e-01 3.8842917970335344e-02
4 -8.6907185029044620e-01 1.5294385374560244e+00 6.4103701764704912e-01
5 -4.3303851444525354e-01 -3.7930261859668579e-01 -8.2809410717883475e-02
6 3.9940995017594572e-01 1.2286053601549636e+00 3.1250581709996106e-01
7 -5.1887189298179548e-01 -5.1653500358989046e-01 6.9318256549563484e-01
8 -5.4007672382228117e-02 2.6859183359408156e-01 -3.4042178338983115e-01
9 -1.7074436045121943e-01 -8.5109770186947620e-01 -1.0773588492848072e+00
10 3.0793973322678671e-04 -4.8186595253268472e-01 -1.0405155138263378e+00
11 1.5283231048348811e+00 -1.4922676136398514e+00 9.5299400757773478e-01
12 -2.5067070901167137e+00 -1.7260607993708745e+00 -1.6244790393474420e+00
13 -5.6235790886570680e-01 2.3585631413137618e+00 -2.9127876443329359e-01
14 -5.6548461211840872e-01 1.8653022429237700e+00 -3.3242294041994691e-02
15 -1.6247793293987234e+00 1.7878424820880410e+00 -1.7100129080118776e+00
16 8.1592475815211640e-01 3.9978815670043610e-01 3.0954281982865943e+00
17 1.0568502301698139e+00 1.1454676964498280e+00 -1.8730495547882335e+00
18 1.8424845063192019e-01 2.7392740222782286e-01 1.4489558473703783e+00
19 -5.5999914801363948e-01 -8.1164618021764123e-01 -4.0693565170944346e-01
20 -2.7796384097824927e+00 3.1873084687724579e-01 1.7813456086024190e-01
21 7.3330693120564727e-01 -8.0395528722245327e-02 -1.2031927072203379e+00
22 -2.8714070500131230e+00 2.0341709966821746e+00 -2.5868755001462174e+00
23 6.7965142776034648e-01 1.1390245455901293e+00 9.6635789845676201e-01
24 8.2281062435904495e-01 9.2819309753370116e-01 1.2754920796056943e+00
25 2.8226519759590424e-01 -1.2226596891011678e-01 4.9537642544898125e-01
26 -1.3183205688042435e-01 -1.4257647612047622e-01 2.1434508820007092e-01
27 8.7792855239715339e-01 -4.9723350353286189e-01 8.1153570058578628e-01
28 -2.0947861194287209e-02 4.8894215287088771e-01 2.2752551215641708e+00
29 -1.2702068511884055e+00 5.1109069534141316e-01 -4.8571925387760806e-01
30 -4.8291102543559505e-01 4.2805907218805661e-01 -3.4628363342745988e-01
31 -5.1815876825981022e-01 3.8579011364491556e-01 -3.3978922486345037e-01
32 -1.3608082901833720e+00 1.8827011193929857e-01 -2.3469836599399560e-01
33 2.0529282523834711e+00 -1.2685983762091522e+00 1.6663497592278897e+00
34 -4.5189243354727182e-02 -3.2736561856626163e-02 1.8030687445807031e-01
35 5.0972119775588631e-01 -3.2015892710668520e-01 1.0138858093121164e+00
36 1.2271707477597629e-01 -9.3118808111966556e-01 6.0812551409211574e-03
37 -7.4244159178072111e-01 8.8563960698770794e-01 -9.5166206712247381e-01
38 4.5283609418616089e-02 -1.5033288786816132e-01 1.0628470501896768e-02
39 8.1272114808168361e-01 -9.7791747752504798e-01 -1.7007525281592790e+00
40 1.8000478262438198e+00 -1.1538213789257317e+00 -6.7136411510679861e-01
41 1.5499683265522783e-02 -1.3955600748288348e-02 -2.1744779416050455e-01
42 -1.5503540998240530e+00 -8.9262908626198989e-01 -5.9864359763177577e-01
43 1.0386261899746982e-01 -2.2234594365313654e+00 9.2443698220991327e-02
44 1.3872759356889137e+00 -1.5127698142330404e+00 9.7258424666774057e-01
45 -4.6739915218621014e-01 8.0388098835321042e-01 -1.3465943067485506e+00
46 -6.2872500689429289e-01 -8.2458713276079976e-01 2.2958918389492728e+00
47 1.0814994400034377e+00 5.2553860312232092e-01 6.1776419974193064e-01
48 3.8751598752151462e-01 3.1426891660378731e-01 -1.6298137257439968e-01
49 -9.0904275530250200e-01 -2.2873822047160863e+00 -1.4864379781792141e+00
50 4.1358159051664400e-01 1.0570092137239000e+00 -4.0323250644756137e-01
51 -9.4172195349527010e-01 1.6996496654949222e+00 1.6115119215552665e+00
52 2.5097037619453455e+00 -2.4525324196081129e+00 2.9540058179786848e+00
53 1.3720332798470005e+00 1.5342144442319867e+00 1.1653691882985184e+00
54 1.0768101277470987e+00 -1.1921583386413552e+00 -9.4962490497040664e-01
55 8.8736792497602746e-01 -1.4571034818051574e+00 -1.5335539060163184e+00
56 -1.6630858341375376e-01 2.6605463886145830e-01 -8.9638200504290855e-01
57 8.2311794363042881e-02 -3.7571896462749871e-01 -5.9456549563766878e-02
58 8.5610205446436338e-01 -4.5532402871724648e-01 3.5240564373735805e-01
59 1.6277722160751178e+00 1.0048795089638383e+00 -9.5389574412271805e-01
60 -1.3396097925873200e+00 -2.5484866844918983e+00 -1.7252656664423354e+00
61 -4.1356937053694531e-02 6.9831995565982619e-01 -2.3722369658580467e-01
62 -1.1615014571620641e+00 1.1805918165226632e+00 -9.2596032516965732e-01
63 9.6753599487408937e-01 -1.4353996747437299e+00 -6.7618187950266095e-01
64 1.3730994742564451e+00 1.5481237027388630e+00 2.7374902138995694e+00
...

View File

@ -0,0 +1,156 @@
---
lammps_version: 10 Mar 2021
date_generated: Wed Apr 7 19:30:07 2021
epsilon: 5e-13
skip_tests:
prerequisites: ! |
pair pace
pre_commands: ! |
variable newton_pair delete
variable newton_pair index on
post_commands: ! ""
input_file: in.manybody
pair_style: pace recursive
pair_coeff: ! |
* * Cu-PBE-core-rep.ace Cu Cu Cu Cu Cu Cu Cu Cu
extract: ! ""
natoms: 64
init_vdwl: -161.633164433261
init_coul: 0
init_stress: ! |2-
4.9972088100713812e+00 6.2044830914039082e+00 9.1051638867151059e+00 -3.5472278350779094e+00 1.6694265484458967e+01 1.2476127820342575e+00
init_forces: ! |2
1 -6.2219087614976065e-01 1.4663175178944572e+00 1.0137638901413537e+00
2 -1.1376106569501236e+00 -4.6174763313970757e-01 -9.1065044746784896e-01
3 2.1030321840359212e-01 -1.8491702608427843e-01 2.5692785978129237e-02
4 -8.7721996834878824e-01 1.5265564953915360e+00 6.4946175447490173e-01
5 -4.2522149043160318e-01 -3.7218018176385625e-01 -9.1663252333276296e-02
6 3.7791326544486292e-01 1.2266089287991140e+00 2.9557107319932868e-01
7 -5.3020873901893451e-01 -5.3124732660126450e-01 7.0401499321635996e-01
8 -4.7453371627832100e-02 2.6914766341310509e-01 -3.4048361271929112e-01
9 -1.5727338601131144e-01 -8.3756943998987954e-01 -1.0686980500959902e+00
10 4.1485698119566282e-03 -4.7811767918420989e-01 -1.0586891580297877e+00
11 1.5438259205364635e+00 -1.5050047785034886e+00 9.6197857985467283e-01
12 -2.5123830465558123e+00 -1.7362105833106412e+00 -1.6289247068123103e+00
13 -5.9061498165326987e-01 2.3625898287840066e+00 -3.1399719632578593e-01
14 -5.5397546653770346e-01 1.8689085709447653e+00 -2.3086691928354244e-02
15 -1.6265821570337562e+00 1.7928198829776705e+00 -1.7156140339071948e+00
16 8.1679939937577550e-01 3.9772968007061277e-01 3.1004730854830349e+00
17 1.0595934046175248e+00 1.1460004586857007e+00 -1.8847997843938362e+00
18 2.0249462959833447e-01 2.6186197454741122e-01 1.4401663320550206e+00
19 -5.4631311118702253e-01 -7.9893542481102942e-01 -3.9498484189200239e-01
20 -2.7894722368447864e+00 3.3102350276278353e-01 1.9153108358694923e-01
21 7.2621138168723631e-01 -6.2245359068663686e-02 -1.1867468416622644e+00
22 -2.8699857742029091e+00 2.0263873921216184e+00 -2.5768047926156705e+00
23 6.7173035813885495e-01 1.1304059874438499e+00 9.5707129936933311e-01
24 8.1087520346680431e-01 9.3244931025571798e-01 1.2800553902586222e+00
25 2.8247847798945536e-01 -1.2561285000276420e-01 5.0249723343583008e-01
26 -1.2883224887964320e-01 -1.4823080811799477e-01 2.1451743731744408e-01
27 8.7218773747968470e-01 -4.8694991909036628e-01 8.0838245267060171e-01
28 -8.4108903260151635e-03 4.7660038551579958e-01 2.2692513770083211e+00
29 -1.2657298236002679e+00 5.0651440211208831e-01 -4.8138238615456286e-01
30 -4.9017825771975698e-01 4.3447662476281140e-01 -3.4664013847486475e-01
31 -5.2051576149983925e-01 3.8596959395000907e-01 -3.4070818553126514e-01
32 -1.3692783712259216e+00 1.9224558097570044e-01 -2.3226212734480328e-01
33 2.0607521792189862e+00 -1.2673195197858425e+00 1.6670068237762066e+00
34 -4.3444509217972604e-02 -3.3223620460338277e-02 1.7607017023409030e-01
35 5.0753059936748002e-01 -3.2385224472009999e-01 1.0142288303361040e+00
36 1.3677004996441039e-01 -9.3517724534399915e-01 2.4335569462137843e-02
37 -7.4579131173356694e-01 8.8843839477811493e-01 -9.4789414920418880e-01
38 3.9719539842571261e-02 -1.5258728344628525e-01 8.3622980381342846e-03
39 8.1730755341728512e-01 -9.8384548843884079e-01 -1.6996132976225846e+00
40 1.7801146130923835e+00 -1.1427274274009283e+00 -6.5983603408481306e-01
41 5.2820539467414857e-03 -2.3421071155573910e-02 -2.2563348155758098e-01
42 -1.5456364604620965e+00 -8.8225129116507839e-01 -5.8763735424098651e-01
43 1.1131408674736287e-01 -2.2247577888201659e+00 9.9728168268968409e-02
44 1.3854946872102469e+00 -1.5126948458100051e+00 9.7414222691401664e-01
45 -4.5981549862049609e-01 8.1397756884859851e-01 -1.3541793681441470e+00
46 -6.2619038173035535e-01 -8.2735236769680376e-01 2.2798662790638025e+00
47 1.0779718530621707e+00 5.2605298038103576e-01 6.1701114081812414e-01
48 3.8637284054407789e-01 3.0866805709788758e-01 -1.6028037248101001e-01
49 -8.8513638517169380e-01 -2.2564795567223652e+00 -1.4543286189782592e+00
50 4.0710335798118663e-01 1.0605235322144930e+00 -3.9752095773780305e-01
51 -9.1955086227837013e-01 1.6763661105933743e+00 1.6016036592489449e+00
52 2.4999859814584600e+00 -2.4516798161916613e+00 2.9455125031925271e+00
53 1.3494715555332963e+00 1.5041935505267034e+00 1.1203406583029645e+00
54 1.0781523968730000e+00 -1.1923649286229243e+00 -9.5279276661359580e-01
55 8.9808463906211189e-01 -1.4591385038403633e+00 -1.5496340042814931e+00
56 -1.6781965313775016e-01 2.7770530096449070e-01 -9.0012005317363286e-01
57 8.4669616061344807e-02 -3.6858526486015031e-01 -5.9756791316800374e-02
58 8.5722805697030136e-01 -4.6399147930816353e-01 3.6325830284449651e-01
59 1.6110642872176364e+00 9.9355375331453510e-01 -9.4982017793350770e-01
60 -1.3129344859565715e+00 -2.5250923468261557e+00 -1.6935614677383823e+00
61 -4.4869257920441788e-02 6.9444242511398635e-01 -2.4196506339840404e-01
62 -1.1637776716821653e+00 1.1834011745845063e+00 -9.3135952930485300e-01
63 9.6457625131507396e-01 -1.4202510282595464e+00 -6.5977083749854104e-01
64 1.3468893282798624e+00 1.5138254987169519e+00 2.7159451744492755e+00
run_vdwl: -161.618480729193
run_coul: 0
run_stress: ! |2-
4.9994648190880460e+00 6.2341889704281970e+00 9.1844870435007469e+00 -3.5139192287216519e+00 1.6660134035412629e+01 1.4298492052947611e+00
run_forces: ! |2
1 -6.2816679628832128e-01 1.4637637672488530e+00 1.0165317420171567e+00
2 -1.1422624515773547e+00 -4.7321268150894835e-01 -9.1937052724939328e-01
3 1.9863435270447563e-01 -1.8101272698046844e-01 3.8842917970311100e-02
4 -8.6907185029051970e-01 1.5294385374559754e+00 6.4103701764724941e-01
5 -4.3303851444527064e-01 -3.7930261859680259e-01 -8.2809410717699622e-02
6 3.9940995017606218e-01 1.2286053601548976e+00 3.1250581709979730e-01
7 -5.1887189298196845e-01 -5.1653500358999127e-01 6.9318256549549417e-01
8 -5.4007672382224883e-02 2.6859183359401456e-01 -3.4042178338972828e-01
9 -1.7074436045121416e-01 -8.5109770186939693e-01 -1.0773588492847035e+00
10 3.0793973323051810e-04 -4.8186595253265396e-01 -1.0405155138263271e+00
11 1.5283231048349268e+00 -1.4922676136399666e+00 9.5299400757780717e-01
12 -2.5067070901166972e+00 -1.7260607993709931e+00 -1.6244790393474351e+00
13 -5.6235790886583970e-01 2.3585631413136179e+00 -2.9127876443333595e-01
14 -5.6548461211843171e-01 1.8653022429237356e+00 -3.3242294041971987e-02
15 -1.6247793293987416e+00 1.7878424820878918e+00 -1.7100129080120188e+00
16 8.1592475815216303e-01 3.9978815670041690e-01 3.0954281982866050e+00
17 1.0568502301698155e+00 1.1454676964498558e+00 -1.8730495547881063e+00
18 1.8424845063197498e-01 2.7392740222789114e-01 1.4489558473704491e+00
19 -5.5999914801367834e-01 -8.1164618021765156e-01 -4.0693565170939688e-01
20 -2.7796384097825526e+00 3.1873084687730341e-01 1.7813456086038751e-01
21 7.3330693120563484e-01 -8.0395528722151582e-02 -1.2031927072201976e+00
22 -2.8714070500131141e+00 2.0341709966822590e+00 -2.5868755001463439e+00
23 6.7965142776034937e-01 1.1390245455901691e+00 9.6635789845673215e-01
24 8.2281062435890928e-01 9.2819309753390167e-01 1.2754920796057649e+00
25 2.8226519759595764e-01 -1.2226596891014743e-01 4.9537642544899713e-01
26 -1.3183205688038924e-01 -1.4257647612039717e-01 2.1434508820029102e-01
27 8.7792855239706757e-01 -4.9723350353285928e-01 8.1153570058585001e-01
28 -2.0947861194201500e-02 4.8894215287086157e-01 2.2752551215641588e+00
29 -1.2702068511883076e+00 5.1109069534141138e-01 -4.8571925387763182e-01
30 -4.8291102543552133e-01 4.2805907218813599e-01 -3.4628363342741275e-01
31 -5.1815876825973306e-01 3.8579011364505383e-01 -3.3978922486349478e-01
32 -1.3608082901834111e+00 1.8827011193937446e-01 -2.3469836599383653e-01
33 2.0529282523835013e+00 -1.2685983762092712e+00 1.6663497592278267e+00
34 -4.5189243354751718e-02 -3.2736561856755692e-02 1.8030687445809970e-01
35 5.0972119775587099e-01 -3.2015892710665028e-01 1.0138858093119485e+00
36 1.2271707477597758e-01 -9.3118808111974460e-01 6.0812551408806932e-03
37 -7.4244159178063873e-01 8.8563960698757693e-01 -9.5166206712249257e-01
38 4.5283609418585336e-02 -1.5033288786827403e-01 1.0628470501999519e-02
39 8.1272114808181617e-01 -9.7791747752517932e-01 -1.7007525281592044e+00
40 1.8000478262439097e+00 -1.1538213789257521e+00 -6.7136411510685423e-01
41 1.5499683265592791e-02 -1.3955600748503419e-02 -2.1744779416054441e-01
42 -1.5503540998240890e+00 -8.9262908626199444e-01 -5.9864359763176522e-01
43 1.0386261899753707e-01 -2.2234594365314631e+00 9.2443698220934262e-02
44 1.3872759356888453e+00 -1.5127698142329729e+00 9.7258424666771137e-01
45 -4.6739915218619787e-01 8.0388098835315858e-01 -1.3465943067486295e+00
46 -6.2872500689439892e-01 -8.2458713276081630e-01 2.2958918389493181e+00
47 1.0814994400035058e+00 5.2553860312226619e-01 6.1776419974197272e-01
48 3.8751598752146438e-01 3.1426891660371681e-01 -1.6298137257451450e-01
49 -9.0904275530255685e-01 -2.2873822047160055e+00 -1.4864379781792907e+00
50 4.1358159051644028e-01 1.0570092137240017e+00 -4.0323250644759429e-01
51 -9.4172195349516652e-01 1.6996496654948405e+00 1.6115119215552218e+00
52 2.5097037619454046e+00 -2.4525324196079747e+00 2.9540058179785182e+00
53 1.3720332798469679e+00 1.5342144442320667e+00 1.1653691882983437e+00
54 1.0768101277471369e+00 -1.1921583386412453e+00 -9.4962490497026519e-01
55 8.8736792497605987e-01 -1.4571034818051218e+00 -1.5335539060162722e+00
56 -1.6630858341372168e-01 2.6605463886156522e-01 -8.9638200504305587e-01
57 8.2311794363030891e-02 -3.7571896462756421e-01 -5.9456549563895990e-02
58 8.5610205446440457e-01 -4.5532402871718020e-01 3.5240564373727451e-01
59 1.6277722160751129e+00 1.0048795089638642e+00 -9.5389574412266476e-01
60 -1.3396097925873169e+00 -2.5484866844917313e+00 -1.7252656664424246e+00
61 -4.1356937053699777e-02 6.9831995565994065e-01 -2.3722369658585374e-01
62 -1.1615014571620197e+00 1.1805918165227427e+00 -9.2596032516965954e-01
63 9.6753599487398723e-01 -1.4353996747436160e+00 -6.7618187950256603e-01
64 1.3730994742563347e+00 1.5481237027388883e+00 2.7374902138994806e+00
...