Merge pull request #1011 from ellio167/kim-v2-update

KIM v2 update
This commit is contained in:
Axel Kohlmeyer
2019-02-21 20:06:59 -05:00
committed by GitHub
32 changed files with 1443 additions and 1314 deletions

View File

@ -656,28 +656,34 @@ if(PKG_USER-VTK)
endif()
if(PKG_KIM)
option(DOWNLOAD_KIM "Download KIM-API v1 from OpenKIM instead of using an already installed one)" OFF)
option(DOWNLOAD_KIM "Download KIM-API v2 from OpenKIM instead of using an already installed one" OFF)
if(DOWNLOAD_KIM)
message(STATUS "KIM-API v1 download requested - we will build our own")
message(STATUS "KIM-API v2 download requested - we will build our own")
enable_language(C)
enable_language(Fortran)
include(ExternalProject)
ExternalProject_Add(kim_build
URL https://github.com/openkim/kim-api/archive/v1.9.5.tar.gz
URL_MD5 9f66efc128da33039e30659f36fc6d00
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
URL https://s3.openkim.org/kim-api/kim-api-v2-2.0.0.txz
URL_MD5 1ff8f563ad5991f7a2a25b35a13d7308
BINARY_DIR build
CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
)
ExternalProject_get_property(kim_build INSTALL_DIR)
set(KIM_INCLUDE_DIRS ${INSTALL_DIR}/include/kim-api-v1)
set(KIM_LIBRARIES ${INSTALL_DIR}/lib/libkim-api-v1.so)
set(KIM-API-V2_INCLUDE_DIRS ${INSTALL_DIR}/include/kim-api-v2)
set(KIM-API-V2_LDFLAGS ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libkim-api-v2${CMAKE_SHARED_LIBRARY_SUFFIX})
list(APPEND LAMMPS_DEPS kim_build)
else()
find_package(KIM)
if(NOT KIM_FOUND)
message(FATAL_ERROR "KIM-API v1 not found, help CMake to find it by setting KIM_LIBRARY and KIM_INCLUDE_DIR, or set DOWNLOAD_KIM=ON to download it")
find_package(KIM-API-V2)
if(NOT KIM-API-V2_FOUND)
message(FATAL_ERROR "KIM-API v2 not found, help CMake to find it by setting PKG_CONFIG_PATH, or set DOWNLOAD_KIM=ON to download it")
endif()
endif()
list(APPEND LAMMPS_LINK_LIBS ${KIM_LIBRARIES})
include_directories(${KIM_INCLUDE_DIRS})
list(APPEND LAMMPS_LINK_LIBS "${KIM-API-V2_LDFLAGS}")
include_directories(${KIM-API-V2_INCLUDE_DIRS})
endif()
if(PKG_MESSAGE)

View File

@ -0,0 +1,50 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the Common Development
# and Distribution License Version 1.0 (the "License").
#
# You can obtain a copy of the license at
# http://www.opensource.org/licenses/CDDL-1.0. See the License for the
# specific language governing permissions and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each file and
# include the License file in a prominent location with the name LICENSE.CDDL.
# If applicable, add the following below this CDDL HEADER, with the fields
# enclosed by brackets "[]" replaced with your own identifying information:
#
# Portions Copyright (c) [yyyy] [name of copyright owner]. All rights reserved.
#
# CDDL HEADER END
#
#
# Copyright (c) 2013--2018, Regents of the University of Minnesota.
# All rights reserved.
#
# Contributors:
# Richard Berger
# Christoph Junghans
# Ryan S. Elliott
#
# - Find KIM-API-V2
#
# sets standard pkg_check_modules variables plus:
#
# KIM-API-V2-CMAKE_C_COMPILER
# KIM-API-V2-CMAKE_CXX_COMPILER
# KIM-API-V2-CMAKE_Fortran_COMPILER
#
find_package(PkgConfig REQUIRED)
include(FindPackageHandleStandardArgs)
pkg_check_modules(KIM-API-V2 REQUIRED libkim-api-v2>=2.0)
pkg_get_variable(KIM-API-V2-CMAKE_C_COMPILER libkim-api-v2 CMAKE_C_COMPILER)
pkg_get_variable(KIM-API-V2-CMAKE_CXX_COMPILER libkim-api-v2 CMAKE_CXX_COMPILER)
pkg_get_variable(KIM-API-V2_CMAKE_Fortran_COMPILER libkim-api-v2 CMAKE_Fortran_COMPILER)
# handle the QUIETLY and REQUIRED arguments and set KIM-API-V2_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(KIM-API-V2 REQUIRED_VARS KIM-API-V2_LIBRARIES)

View File

@ -1,22 +0,0 @@
# - Find kim
# Find the native KIM headers and libraries.
#
# KIM_INCLUDE_DIRS - where to find kim.h, etc.
# KIM_LIBRARIES - List of libraries when using kim.
# KIM_FOUND - True if kim found.
#
find_path(KIM_INCLUDE_DIR KIM_API.h PATH_SUFFIXES kim-api-v1)
find_library(KIM_LIBRARY NAMES kim-api-v1)
set(KIM_LIBRARIES ${KIM_LIBRARY})
set(KIM_INCLUDE_DIRS ${KIM_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set KIM_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(KIM DEFAULT_MSG KIM_LIBRARY KIM_INCLUDE_DIR)
mark_as_advanced(KIM_INCLUDE_DIR KIM_LIBRARY )

View File

@ -191,16 +191,12 @@ package?" page.
[CMake build]:
-D DOWNLOAD_KIM=value # download OpenKIM API v1 for build, value = no (default) or yes
-D KIM_LIBRARY=path # KIM library file (only needed if a custom location)
-D KIM_INCLUDE_DIR=path # KIM include directory (only needed if a custom location) :pre
-D DOWNLOAD_KIM=value # download OpenKIM API v2 for build, value = no (default) or yes :pre
If DOWNLOAD_KIM is set, the KIM library will be downloaded and built
inside the CMake build directory. If the KIM library is already on
your system (in a location CMake cannot find it), KIM_LIBRARY is the
filename (plus path) of the KIM library file, not the directory the
library file is in. KIM_INCLUDE_DIR is the directory the KIM include
file is in.
your system (in a location CMake cannot find it), set the PKG_CONFIG_PATH
environment variable so that libkim-api-v2 can be found.
[Traditional make]:
@ -214,8 +210,8 @@ make lib-kim args="-b " # (re-)install KIM API lib with only example models
make lib-kim args="-b -a Glue_Ercolessi_Adams_Al__MO_324507536345_001" # ditto plus one model
make lib-kim args="-b -a everything" # install KIM API lib with all models
make lib-kim args="-n -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # add one model or model driver
make lib-kim args="-p /usr/local/kim-api" # use an existing KIM API installation at the provided location
make lib-kim args="-p /usr/local/kim-api -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # ditto but add one model or driver :pre
make lib-kim args="-p /usr/local" # use an existing KIM API installation at the provided location
make lib-kim args="-p /usr/local -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # ditto but add one model or driver :pre
:line

View File

@ -6988,12 +6988,6 @@ The atom style defined does not have this attribute. :dd
The atom style defined does not have these attributes. :dd
{KIM neighbor iterator exceeded range} :dt
This should not happen. It likely indicates a bug
in the KIM implementation of the interatomic potential
where it is requesting neighbors incorrectly. :dd
{KOKKOS package does not yet support comm_style tiled} :dt
Self-explanatory. :dd
@ -10185,10 +10179,6 @@ valid. :dd
Self-explanatory. :dd
{Unrecognized virial argument in pair_style command} :dt
Only two options are supported: LAMMPSvirial and KIMvirial :dd
{Unsupported mixing rule in kspace_style ewald/disp} :dt
Only geometric mixing is supported. :dd

View File

@ -346,12 +346,11 @@ system.
Information about the KIM project can be found at its website:
https://openkim.org. The KIM project is led by Ellad Tadmor and Ryan
Elliott (U Minnesota) and James Sethna (Cornell U).
Elliott (U Minnesota).
[Authors:] Ryan Elliott (U Minnesota) is the main developer for the KIM
API which the "pair_style kim"_pair_kim.html command uses. He
developed the pair style in collaboration with Valeriu Smirichinski (U
Minnesota).
developed the pair style.
[Install:]
@ -2102,5 +2101,3 @@ src/USER-YAFF/README
"pair_style mm3/switch3/coulgauss/long"_pair_mm3_switch3_coulgauss.html
"pair_style lj/switch3/coulgauss/long"_pair_lj_switch3_coulgauss.html
examples/USER/yaff :ul

View File

@ -158,12 +158,6 @@ the pair_*.cpp file associated with the potential.
Some parameters are global settings for the pair style, e.g. the
viscosity setting "mu" for "pair_style lubricate"_pair_lubricate.html.
For "pair_kim"_pair_kim.html, all free parameters supported by the
KIM Model are available (e.g., PARAM_FREE_sigmas provided by the
LennardJones612_Universal__MO_826355984548_001 Model). If the free
parameter corresponds to an array, then the particular array element
to be adapted must be specified (e.g., "PARAM_FREE_sigmas:10", to
adapt the tenth entry of the sigmas array).
Other parameters apply to atom type pairs within the pair style,
e.g. the prefactor "a" for "pair_style soft"_pair_soft.html.

View File

@ -10,18 +10,13 @@ pair_style kim command :h3
[Syntax:]
pair_style kim virialmode model printflag :pre
pair_style kim model :pre
virialmode = KIMvirial or LAMMPSvirial
model = name of KIM model (potential)
printflag = 1/0 do or do not print KIM descriptor file, optional :ul
[Examples:]
pair_style kim KIMvirial model_Ar_P_Morse
pair_coeff * * Ar Ar :pre
pair_style kim KIMvirial model_Ar_P_Morse 1
pair_style kim ex_model_Ar_P_LJ
pair_coeff * * Ar Ar :pre
[Description:]
@ -51,25 +46,19 @@ section of the "Packages details"_Packages_details.html doc page has
instructions on how to do this with a simple make command, when
building LAMMPS.
See the examples/kim dir for an input script that uses a KIM model
(potential) for Lennard-Jones.
See the examples/kim dir for an input script that uses a KIM model (potential)
for Lennard-Jones. Note, for this example input script, the example models
shipped with with kim-api package must be installed. See the "Build
package"_Build_package.html section and the ./lib/kim/README for details
on how to build LAMMSPS with the kim-api and how to install the example models.
:line
The argument {virialmode} determines how the global virial is
calculated. If {KIMvirial} is specified, the KIM model performs the
global virial calculation (if it knows how). If {LAMMPSvirial} is
specified, LAMMPS computes the global virial using its fdotr mechanism.
The argument {model} is the name of the KIM model for a specific
potential as KIM defines it. In principle, LAMMPS can invoke any KIM
model. You should get an error or warning message from either LAMMPS
or KIM if there is an incompatibility.
The argument {printflag} is optional. If it is set to a non-zero
value then a KIM descriptor file is printed when KIM is invoked. This
can be useful for debugging. The default is to not print this file.
Only a single pair_coeff command is used with the {kim} style which
specifies the mapping of LAMMPS atom types to KIM elements. This is
done by specifying N additional arguments after the * * in the
@ -86,18 +75,14 @@ pair_coeff * * Si Si Si C :pre
The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The first three Si arguments map LAMMPS atom types 1,2,3 to Si as
defined within KIM. The final C argument maps LAMMPS atom type 4 to C
as defined within KIM. If a mapping value is specified as NULL, the
mapping is not performed. This can only be used when a {kim}
potential is used as part of the {hybrid} pair style. The NULL values
are placeholders for atom types that will be used with other
potentials.
as defined within KIM.
:line
In addition to the usual LAMMPS error messages, the KIM library itself
may generate errors, which should be printed to the screen. In this
case it is also useful to check the kim.log file for additional error
information. This file kim.log should be generated in the same
information. The file kim.log should be generated in the same
directory where LAMMPS is running.
To download, build, and install the KIM library on your system, see
@ -130,7 +115,7 @@ LAMMPS was built with that package. See the "Build
package"_Build_package.html doc page for more info.
This current version of pair_style kim is compatible with the
kim-api package version 1.6.0 and higher.
kim-api package version 2.0.0 and higher.
[Related commands:]

View File

@ -1384,6 +1384,7 @@ libfftw
libgcc
libgpu
libjpeg
libkim
liblammps
Liblammps
liblink

View File

@ -10,6 +10,7 @@ variable zz equal 20*$z
units metal
atom_style atomic
newton off
lattice fcc 4.4300
region box block 0 ${xx} 0 ${yy} 0 ${zz}
@ -17,13 +18,12 @@ create_box 1 box
create_atoms 1 box
pair_style lj/cut 8.1500
pair_coeff 1 1 0.0031 2.7400
pair_modify shift yes
pair_coeff 1 1 0.0104 3.4000
#pair_style kim KIMvirial ex_model_Ne_P_fastLJ
#pair_coeff * * Ne
#pair_style kim LennardJones_Ar
#pair_coeff * * Ar
mass 1 20.18
mass 1 39.95
velocity all create 200.0 232345 loop geom
neighbor 0.3 bin

View File

@ -10,20 +10,20 @@ variable zz equal 20*$z
units metal
atom_style atomic
newton on
lattice fcc 4.4300
region box block 0 ${xx} 0 ${yy} 0 ${zz}
create_box 1 box
create_atoms 1 box
#pair_style lj/cut 8.1500
#pair_coeff 1 1 0.0031 2.7400
#pair_modify shift yes
pair_style lj/cut 8.1500
pair_coeff 1 1 0.0104 3.4000
pair_style kim KIMvirial ex_model_Ne_P_fastLJ
pair_coeff * * Ne
#pair_style kim LennardJones_Ar
#pair_coeff * * Ar
mass 1 20.18
mass 1 39.95
velocity all create 200.0 232345 loop geom
neighbor 0.3 bin

View File

@ -0,0 +1,41 @@
# 3d Lennard-Jones melt
#
# This example requires that the example models provided with
# the kim-api package are installed. see the ./lib/kim/README or
# ./lib/kim/Install.py files for details on how to install these
# example models.
#
variable x index 1
variable y index 1
variable z index 1
variable xx equal 20*$x
variable yy equal 20*$y
variable zz equal 20*$z
units metal
atom_style atomic
newton off
lattice fcc 4.4300
region box block 0 ${xx} 0 ${yy} 0 ${zz}
create_box 1 box
create_atoms 1 box
#pair_style lj/cut 8.1500
#pair_coeff 1 1 0.0104 3.4000
pair_style kim LennardJones_Ar
pair_coeff * * Ar
mass 1 39.95
velocity all create 200.0 232345 loop geom
neighbor 0.3 bin
neigh_modify delay 0 every 1 check yes
fix 1 all nve
#fix 1 all npt temp 1.0 1.0 1.0 iso 1.0 1.0 3.0
run 100

View File

@ -0,0 +1,41 @@
# 3d Lennard-Jones melt
#
# This example requires that the example models provided with
# the kim-api package are installed. see the ./lib/kim/README or
# ./lib/kim/Install.py files for details on how to install these
# example models.
#
variable x index 1
variable y index 1
variable z index 1
variable xx equal 20*$x
variable yy equal 20*$y
variable zz equal 20*$z
units metal
atom_style atomic
newton on
lattice fcc 4.4300
region box block 0 ${xx} 0 ${yy} 0 ${zz}
create_box 1 box
create_atoms 1 box
#pair_style lj/cut 8.1500
#pair_coeff 1 1 0.0104 3.4000
pair_style kim LennardJones_Ar
pair_coeff * * Ar
mass 1 39.95
velocity all create 200.0 232345 loop geom
neighbor 0.3 bin
neigh_modify delay 0 every 1 check yes
fix 1 all nve
#fix 1 all npt temp 1.0 1.0 1.0 iso 1.0 1.0 3.0
run 100

View File

@ -0,0 +1,55 @@
LAMMPS (1 Feb 2019)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:87)
using 1 OpenMP thread(s) per MPI task
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 1 by 1 MPI processor grid
Created 32000 atoms
Time spent = 0.004499 secs
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 8.45
ghost atom cutoff = 8.45
binsize = 4.225, bins = 21 21 21
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/cut, perpetual
attributes: half, newton off
pair build: half/bin/newtoff
stencil: half/bin/3d/newtoff
bin: standard
Setting up Verlet run ...
Unit style : metal
Current step : 0
Time step : 0.001
Per MPI rank memory allocation (min/avg/max) = 20.37 | 20.37 | 20.37 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 6290.8194 0 7118.0584 129712.25
100 95.179725 6718.814 0 7112.496 133346.59
Loop time of 2.92885 on 1 procs for 100 steps with 32000 atoms
Performance: 2.950 ns/day, 8.136 hours/ns, 34.143 timesteps/s
99.1% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 2.5638 | 2.5638 | 2.5638 | 0.0 | 87.54
Neigh | 0.31935 | 0.31935 | 0.31935 | 0.0 | 10.90
Comm | 0.006833 | 0.006833 | 0.006833 | 0.0 | 0.23
Output | 0.000107 | 0.000107 | 0.000107 | 0.0 | 0.00
Modify | 0.027806 | 0.027806 | 0.027806 | 0.0 | 0.95
Other | | 0.01091 | | | 0.37
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 19911 ave 19911 max 19911 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 2.3705e+06 ave 2.3705e+06 max 2.3705e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 2370499
Ave neighs/atom = 74.0781
Neighbor list builds = 3
Dangerous builds = 0
Total wall time: 0:00:03

View File

@ -0,0 +1,55 @@
LAMMPS (1 Feb 2019)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:87)
using 1 OpenMP thread(s) per MPI task
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 2 by 2 MPI processor grid
Created 32000 atoms
Time spent = 0.001039 secs
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 8.45
ghost atom cutoff = 8.45
binsize = 4.225, bins = 21 21 21
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/cut, perpetual
attributes: half, newton off
pair build: half/bin/newtoff
stencil: half/bin/3d/newtoff
bin: standard
Setting up Verlet run ...
Unit style : metal
Current step : 0
Time step : 0.001
Per MPI rank memory allocation (min/avg/max) = 8.013 | 8.013 | 8.013 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 6290.8194 0 7118.0584 129712.25
100 95.179725 6718.814 0 7112.496 133346.59
Loop time of 0.778581 on 4 procs for 100 steps with 32000 atoms
Performance: 11.097 ns/day, 2.163 hours/ns, 128.439 timesteps/s
99.8% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.65171 | 0.65891 | 0.67656 | 1.3 | 84.63
Neigh | 0.07924 | 0.079548 | 0.07997 | 0.1 | 10.22
Comm | 0.006755 | 0.0069015 | 0.007072 | 0.2 | 0.89
Output | 4.6e-05 | 9.725e-05 | 0.000203 | 0.0 | 0.01
Modify | 0.006841 | 0.006941 | 0.007015 | 0.1 | 0.89
Other | | 0.02618 | | | 3.36
Nlocal: 8000 ave 8018 max 7967 min
Histogram: 1 0 0 0 0 0 1 0 0 2
Nghost: 9131 ave 9164 max 9113 min
Histogram: 2 0 0 1 0 0 0 0 0 1
Neighs: 630904 ave 632094 max 628209 min
Histogram: 1 0 0 0 0 0 0 1 0 2
Total # of neighbors = 2523614
Ave neighs/atom = 78.8629
Neighbor list builds = 3
Dangerous builds = 0
Total wall time: 0:00:00

View File

@ -0,0 +1,55 @@
LAMMPS (1 Feb 2019)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:87)
using 1 OpenMP thread(s) per MPI task
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 1 by 1 MPI processor grid
Created 32000 atoms
Time spent = 0.003479 secs
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 8.45
ghost atom cutoff = 8.45
binsize = 4.225, bins = 21 21 21
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/cut, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d/newton
bin: standard
Setting up Verlet run ...
Unit style : metal
Current step : 0
Time step : 0.001
Per MPI rank memory allocation (min/avg/max) = 19.23 | 19.23 | 19.23 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 6290.8194 0 7118.0584 129712.25
100 95.179725 6718.814 0 7112.496 133346.59
Loop time of 2.17978 on 1 procs for 100 steps with 32000 atoms
Performance: 3.964 ns/day, 6.055 hours/ns, 45.876 timesteps/s
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 1.9892 | 1.9892 | 1.9892 | 0.0 | 91.26
Neigh | 0.14506 | 0.14506 | 0.14506 | 0.0 | 6.65
Comm | 0.011049 | 0.011049 | 0.011049 | 0.0 | 0.51
Output | 9.1e-05 | 9.1e-05 | 9.1e-05 | 0.0 | 0.00
Modify | 0.02347 | 0.02347 | 0.02347 | 0.0 | 1.08
Other | | 0.01094 | | | 0.50
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 19911 ave 19911 max 19911 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 2.12688e+06 ave 2.12688e+06 max 2.12688e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 2126875
Ave neighs/atom = 66.4648
Neighbor list builds = 3
Dangerous builds = 0
Total wall time: 0:00:02

View File

@ -0,0 +1,55 @@
LAMMPS (1 Feb 2019)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:87)
using 1 OpenMP thread(s) per MPI task
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 2 by 2 MPI processor grid
Created 32000 atoms
Time spent = 0.000919 secs
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 8.45
ghost atom cutoff = 8.45
binsize = 4.225, bins = 21 21 21
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair lj/cut, perpetual
attributes: half, newton on
pair build: half/bin/atomonly/newton
stencil: half/bin/3d/newton
bin: standard
Setting up Verlet run ...
Unit style : metal
Current step : 0
Time step : 0.001
Per MPI rank memory allocation (min/avg/max) = 7.632 | 7.632 | 7.632 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 6290.8194 0 7118.0584 129712.25
100 95.179725 6718.814 0 7112.496 133346.59
Loop time of 0.63515 on 4 procs for 100 steps with 32000 atoms
Performance: 13.603 ns/day, 1.764 hours/ns, 157.443 timesteps/s
99.8% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.55365 | 0.5566 | 0.55868 | 0.2 | 87.63
Neigh | 0.041495 | 0.0418 | 0.04211 | 0.1 | 6.58
Comm | 0.019086 | 0.021075 | 0.023898 | 1.2 | 3.32
Output | 4.4e-05 | 5.025e-05 | 6e-05 | 0.0 | 0.01
Modify | 0.009315 | 0.0093595 | 0.009422 | 0.0 | 1.47
Other | | 0.006263 | | | 0.99
Nlocal: 8000 ave 8018 max 7967 min
Histogram: 1 0 0 0 0 0 1 0 0 2
Nghost: 9131 ave 9164 max 9113 min
Histogram: 2 0 0 1 0 0 0 0 0 1
Neighs: 531719 ave 533273 max 529395 min
Histogram: 1 0 0 0 1 0 0 0 0 2
Total # of neighbors = 2126875
Ave neighs/atom = 66.4648
Neighbor list builds = 3
Dangerous builds = 0
Total wall time: 0:00:00

View File

@ -0,0 +1,59 @@
LAMMPS (1 Feb 2019)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:87)
using 1 OpenMP thread(s) per MPI task
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 1 by 1 MPI processor grid
Created 32000 atoms
Time spent = 0.003446 secs
WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:1097)
WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:1102)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 8.45
ghost atom cutoff = 8.45
binsize = 4.225, bins = 21 21 21
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair kim, perpetual
attributes: full, newton off, cut 8.45
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Setting up Verlet run ...
Unit style : metal
Current step : 0
Time step : 0.001
Per MPI rank memory allocation (min/avg/max) = 28.51 | 28.51 | 28.51 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 6290.8194 0 7118.0584 129712.25
100 95.179725 6718.814 0 7112.496 133346.59
Loop time of 3.01669 on 1 procs for 100 steps with 32000 atoms
Performance: 2.864 ns/day, 8.380 hours/ns, 33.149 timesteps/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 | 2.6562 | 2.6562 | 2.6562 | 0.0 | 88.05
Neigh | 0.31903 | 0.31903 | 0.31903 | 0.0 | 10.58
Comm | 0.00634 | 0.00634 | 0.00634 | 0.0 | 0.21
Output | 9.1e-05 | 9.1e-05 | 9.1e-05 | 0.0 | 0.00
Modify | 0.024723 | 0.024723 | 0.024723 | 0.0 | 0.82
Other | | 0.01032 | | | 0.34
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 19911 ave 19911 max 19911 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 4.25375e+06 ave 4.25375e+06 max 4.25375e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 4253750
Ave neighs/atom = 132.93
Neighbor list builds = 3
Dangerous builds = 0
Total wall time: 0:00:03

View File

@ -0,0 +1,65 @@
LAMMPS (1 Feb 2019)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:87)
using 1 OpenMP thread(s) per MPI task
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 2 by 2 MPI processor grid
Created 32000 atoms
Time spent = 0.000921 secs
WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:1097)
WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:1102)
WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:1097)
WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:1102)
WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:1097)
WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:1102)
WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:1097)
WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:1102)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 8.45
ghost atom cutoff = 8.45
binsize = 4.225, bins = 21 21 21
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair kim, perpetual
attributes: full, newton off, cut 8.45
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Setting up Verlet run ...
Unit style : metal
Current step : 0
Time step : 0.001
Per MPI rank memory allocation (min/avg/max) = 10.05 | 10.05 | 10.05 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 6290.8194 0 7118.0584 129712.25
100 95.179725 6718.814 0 7112.496 133346.59
Loop time of 0.890192 on 4 procs for 100 steps with 32000 atoms
Performance: 9.706 ns/day, 2.473 hours/ns, 112.335 timesteps/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 | 0.77867 | 0.77906 | 0.7794 | 0.0 | 87.52
Neigh | 0.087831 | 0.088176 | 0.088805 | 0.1 | 9.91
Comm | 0.006358 | 0.0065898 | 0.006815 | 0.3 | 0.74
Output | 4.9e-05 | 5.975e-05 | 6.8e-05 | 0.0 | 0.01
Modify | 0.010265 | 0.010429 | 0.010678 | 0.2 | 1.17
Other | | 0.005874 | | | 0.66
Nlocal: 8000 ave 8018 max 7967 min
Histogram: 1 0 0 0 0 0 1 0 0 2
Nghost: 9131 ave 9164 max 9113 min
Histogram: 2 0 0 1 0 0 0 0 0 1
Neighs: 0 ave 0 max 0 min
Histogram: 4 0 0 0 0 0 0 0 0 0
FullNghs: 1.06344e+06 ave 1.06594e+06 max 1.05881e+06 min
Histogram: 1 0 0 0 0 0 1 0 0 2
Total # of neighbors = 4253750
Ave neighs/atom = 132.93
Neighbor list builds = 3
Dangerous builds = 0
Total wall time: 0:00:00

View File

@ -0,0 +1,59 @@
LAMMPS (1 Feb 2019)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:87)
using 1 OpenMP thread(s) per MPI task
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 1 by 1 MPI processor grid
Created 32000 atoms
Time spent = 0.003089 secs
WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:1097)
WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:1102)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 8.45
ghost atom cutoff = 8.45
binsize = 4.225, bins = 21 21 21
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair kim, perpetual
attributes: full, newton off, cut 8.45
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Setting up Verlet run ...
Unit style : metal
Current step : 0
Time step : 0.001
Per MPI rank memory allocation (min/avg/max) = 28.12 | 28.12 | 28.12 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 6290.8194 0 7118.0584 129712.25
100 95.179725 6718.814 0 7112.496 133346.59
Loop time of 3.05849 on 1 procs for 100 steps with 32000 atoms
Performance: 2.825 ns/day, 8.496 hours/ns, 32.696 timesteps/s
99.6% CPU use with 1 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 2.6786 | 2.6786 | 2.6786 | 0.0 | 87.58
Neigh | 0.33105 | 0.33105 | 0.33105 | 0.0 | 10.82
Comm | 0.012602 | 0.012602 | 0.012602 | 0.0 | 0.41
Output | 9.5e-05 | 9.5e-05 | 9.5e-05 | 0.0 | 0.00
Modify | 0.024858 | 0.024858 | 0.024858 | 0.0 | 0.81
Other | | 0.01132 | | | 0.37
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 19911 ave 19911 max 19911 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
FullNghs: 4.25375e+06 ave 4.25375e+06 max 4.25375e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 4253750
Ave neighs/atom = 132.93
Neighbor list builds = 3
Dangerous builds = 0
Total wall time: 0:00:03

View File

@ -0,0 +1,65 @@
LAMMPS (1 Feb 2019)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:87)
using 1 OpenMP thread(s) per MPI task
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 2 by 2 MPI processor grid
Created 32000 atoms
Time spent = 0.000893 secs
WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:1097)
WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:1102)
WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:1097)
WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:1102)
WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:1097)
WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:1102)
WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:1097)
WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:1102)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 8.45
ghost atom cutoff = 8.45
binsize = 4.225, bins = 21 21 21
1 neighbor lists, perpetual/occasional/extra = 1 0 0
(1) pair kim, perpetual
attributes: full, newton off, cut 8.45
pair build: full/bin/atomonly
stencil: full/bin/3d
bin: standard
Setting up Verlet run ...
Unit style : metal
Current step : 0
Time step : 0.001
Per MPI rank memory allocation (min/avg/max) = 9.789 | 9.789 | 9.789 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 6290.8194 0 7118.0584 129712.25
100 95.179725 6718.814 0 7112.496 133346.59
Loop time of 0.903182 on 4 procs for 100 steps with 32000 atoms
Performance: 9.566 ns/day, 2.509 hours/ns, 110.720 timesteps/s
99.6% CPU use with 4 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0.76173 | 0.76349 | 0.76597 | 0.2 | 84.53
Neigh | 0.088773 | 0.088938 | 0.089074 | 0.0 | 9.85
Comm | 0.032018 | 0.03452 | 0.03638 | 0.9 | 3.82
Output | 4e-05 | 4.425e-05 | 5.2e-05 | 0.0 | 0.00
Modify | 0.009278 | 0.0093917 | 0.009528 | 0.1 | 1.04
Other | | 0.006797 | | | 0.75
Nlocal: 8000 ave 8018 max 7967 min
Histogram: 1 0 0 0 0 0 1 0 0 2
Nghost: 9131 ave 9164 max 9113 min
Histogram: 2 0 0 1 0 0 0 0 0 1
Neighs: 0 ave 0 max 0 min
Histogram: 4 0 0 0 0 0 0 0 0 0
FullNghs: 1.06344e+06 ave 1.06594e+06 max 1.05881e+06 min
Histogram: 1 0 0 0 0 0 1 0 0 2
Total # of neighbors = 4253750
Ave neighs/atom = 132.93
Neighbor list builds = 3
Dangerous builds = 0
Total wall time: 0:00:00

View File

@ -1,33 +0,0 @@
LAMMPS (15 May 2015)
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 1 by 1 MPI processor grid
Created 32000 atoms
Neighbor list info ...
1 neighbor list requests
update every 1 steps, delay 0 steps, check yes
master list distance cutoff = 8.45
Setting up run ...
Memory usage per processor = 9.18789 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 -741.55469 0 85.684388 -34.939092
100 108.37517 -362.56658 0 85.694308 3963.7892
Loop time of 2.95205 on 1 procs for 100 steps with 32000 atoms
Pair time (%) = 2.52074 (85.3894)
Neigh time (%) = 0.347949 (11.7867)
Comm time (%) = 0.0228171 (0.772925)
Outpt time (%) = 0.000188828 (0.00639649)
Other time (%) = 0.0603588 (2.04464)
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 20131 ave 20131 max 20131 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 1.88909e+06 ave 1.88909e+06 max 1.88909e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 1889091
Ave neighs/atom = 59.0341
Neighbor list builds = 5
Dangerous builds = 0

View File

@ -1,33 +0,0 @@
LAMMPS (15 May 2015)
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 2 by 2 MPI processor grid
Created 32000 atoms
Neighbor list info ...
1 neighbor list requests
update every 1 steps, delay 0 steps, check yes
master list distance cutoff = 8.45
Setting up run ...
Memory usage per processor = 4.58461 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 -741.55469 0 85.684388 -34.939092
100 108.37517 -362.56658 0 85.694308 3963.7892
Loop time of 6.15911 on 4 procs for 100 steps with 32000 atoms
Pair time (%) = 1.76201 (28.6083)
Neigh time (%) = 0.265002 (4.30261)
Comm time (%) = 3.64452 (59.1729)
Outpt time (%) = 0.0169877 (0.275815)
Other time (%) = 0.470582 (7.64042)
Nlocal: 8000 ave 8010 max 7989 min
Histogram: 1 0 0 0 0 2 0 0 0 1
Nghost: 9240.25 ave 9249 max 9228 min
Histogram: 1 0 0 0 1 0 0 0 0 2
Neighs: 472273 ave 473390 max 471652 min
Histogram: 2 0 0 1 0 0 0 0 0 1
Total # of neighbors = 1889091
Ave neighs/atom = 59.0341
Neighbor list builds = 5
Dangerous builds = 0

View File

@ -1,33 +0,0 @@
LAMMPS (15 May 2015)
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 1 by 1 MPI processor grid
Created 32000 atoms
Neighbor list info ...
1 neighbor list requests
update every 1 steps, delay 0 steps, check yes
master list distance cutoff = 8.45
Setting up run ...
Memory usage per processor = 9.43789 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 -741.55469 0 85.684388 -34.939092
100 108.37517 -362.56658 0 85.694308 3963.7892
Loop time of 3.79746 on 1 procs for 100 steps with 32000 atoms
Pair time (%) = 3.18686 (83.9207)
Neigh time (%) = 0.524724 (13.8178)
Comm time (%) = 0.0244031 (0.642616)
Outpt time (%) = 0.000174046 (0.00458321)
Other time (%) = 0.061305 (1.61437)
Nlocal: 32000 ave 32000 max 32000 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 20131 ave 20131 max 20131 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 2.09236e+06 ave 2.09236e+06 max 2.09236e+06 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 2092355
Ave neighs/atom = 65.3861
Neighbor list builds = 5
Dangerous builds = 0

View File

@ -1,33 +0,0 @@
LAMMPS (15 May 2015)
Lattice spacing in x,y,z = 4.43 4.43 4.43
Created orthogonal box = (0 0 0) to (88.6 88.6 88.6)
1 by 2 by 2 MPI processor grid
Created 32000 atoms
Neighbor list info ...
1 neighbor list requests
update every 1 steps, delay 0 steps, check yes
master list distance cutoff = 8.45
Setting up run ...
Memory usage per processor = 4.70961 Mbytes
Step Temp E_pair E_mol TotEng Press
0 200 -741.55469 0 85.684388 -34.939092
100 108.37517 -362.56658 0 85.694308 3963.7892
Loop time of 7.25305 on 4 procs for 100 steps with 32000 atoms
Pair time (%) = 2.52571 (34.8227)
Neigh time (%) = 0.500287 (6.8976)
Comm time (%) = 3.70236 (51.0456)
Outpt time (%) = 0.00146681 (0.0202234)
Other time (%) = 0.523229 (7.21391)
Nlocal: 8000 ave 8010 max 7989 min
Histogram: 1 0 0 0 0 2 0 0 0 1
Nghost: 9240.25 ave 9249 max 9228 min
Histogram: 1 0 0 0 1 0 0 0 0 2
Neighs: 555266 ave 555920 max 554805 min
Histogram: 2 0 0 0 0 1 0 0 0 1
Total # of neighbors = 2221065
Ave neighs/atom = 69.4083
Neighbor list builds = 5
Dangerous builds = 0

3
lib/kim/.gitignore vendored
View File

@ -1,3 +1,2 @@
/Makefile.KIM_DIR
/Makefile.KIM_Config
/kim-prefix.txt
/installed-kim-api-*

View File

@ -18,7 +18,7 @@ parser = ArgumentParser(prog='Install.py',
# settings
thisdir = fullpath('.')
version = "kim-api-v1.9.5"
version = "kim-api-v2-2.0.0"
# help message
@ -35,19 +35,15 @@ Syntax from lib dir: python Install.py -b -v version -a kim-name
Examples:
make lib-kim args="-b" # install KIM API lib with only example models
make lib-kim args="-b -a Glue_Ercolessi_Adams_Al__MO_324507536345_001" # Ditto plus one model
make lib-kim args="-b -a EAM_ErcolessiAdams_1994_Al__MO_324507536345_002" # Ditto plus one model
make lib-kim args="-b -a everything" # install KIM API lib with all models
make lib-kim args="-n -a EAM_Dynamo_Ackland_W__MO_141627196590_002" # only add one model or model driver
make lib-kim args="-n -a EAM_Dynamo_Ackland_2003_W__MO_141627196590_005" # only add one model or model driver
See the list of KIM model drivers here:
https://openkim.org/kim-items/model-drivers/alphabetical
See the list of all KIM models here:
https://openkim.org/kim-items/models/by-model-drivers
See the list of example KIM models included by default here:
https://openkim.org/kim-api
in the "What is in the KIM API source package?" section
"""
pgroup = parser.add_mutually_exclusive_group()
@ -94,13 +90,10 @@ url = "https://s3.openkim.org/kim-api/%s.txz" % version
if pathflag:
# configure LAMMPS to use existing kim-api installation
with open("%s/Makefile.KIM_DIR" % thisdir, 'w') as mkfile:
mkfile.write("KIM_INSTALL_DIR=%s\n\n" % kimdir)
mkfile.write(".DUMMY: print_dir\n\n")
mkfile.write("print_dir:\n")
mkfile.write(" @printf $(KIM_INSTALL_DIR)\n")
with open("%s/kim-prefix.txt" % thisdir, 'w') as pffile:
pffile.write("%s" % kimdir)
print("Created %s/Makefile.KIM_DIR\n using %s" % (thisdir, kimdir))
print("Created %s/kim-prefix.txt\n using %s" % (thisdir,kimdir))
else:
kimdir = os.path.join(os.path.abspath(thisdir), "installed-" + version)
if args.nobuild and not os.path.isdir(kimdir):
@ -117,13 +110,10 @@ if buildflag:
# configure LAMMPS to use kim-api to be installed
with open("%s/Makefile.KIM_DIR" % thisdir, 'w') as mkfile:
mkfile.write("KIM_INSTALL_DIR=%s\n\n" % kimdir)
mkfile.write(".DUMMY: print_dir\n\n")
mkfile.write("print_dir:\n")
mkfile.write(" @printf $(KIM_INSTALL_DIR)\n")
with open("%s/kim-prefix.txt" % thisdir, 'w') as pffile:
pffile.write("%s" % kimdir)
print("Created %s/Makefile.KIM_DIR\n using %s" % (thisdir, kimdir))
print("Created %s/kim-prefix.txt\n using %s" % (thisdir,kimdir))
# download entire kim-api tarball
@ -136,12 +126,13 @@ if buildflag:
# configure kim-api
print("Configuring kim-api ...")
cmd = 'cd "%s/%s"; ./configure --prefix="%s"' % (thisdir, version, kimdir)
subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
cmd = 'cd "%s/%s" && mkdir build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX="%s" -DCMAKE_BUILD_TYPE=Release' % (thisdir,version,kimdir)
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
if verboseflag: print(txt.decode("UTF-8"))
# build kim-api
print("Building kim-api ...")
cmd = 'cd "%s/%s"; make' % (thisdir, version)
cmd = 'cd "%s/%s/build" && make' % (thisdir, version)
txt = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
if verboseflag:
print(txt.decode("UTF-8"))
@ -149,23 +140,13 @@ if buildflag:
# install kim-api
print("Installing kim-api ...")
cmd = 'cd "%s/%s"; make install' % (thisdir, version)
cmd = 'cd "%s/%s/build" && make install' % (thisdir, version)
txt = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
if verboseflag:
print(txt.decode("UTF-8"))
# remove source files
print("Building and installing example Models")
cmd = 'cd "%s/%s/examples"; make model-drivers-all-system' % (thisdir, version)
txt = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
if verboseflag:
print(txt.decode("UTF-8"))
cmd = 'cd "%s/%s/examples"; make models-all-system' % (thisdir, version)
txt = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
if verboseflag:
print(txt.decode("UTF-8"))
print("Removing kim-api source and build files ...")
cmd = 'cd "%s"; rm -rf %s; rm -rf %s.txz' % (thisdir, version, version)
subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
@ -173,7 +154,7 @@ if buildflag:
# add all OpenKIM models, if desired
if everythingflag:
print("Adding all OpenKIM models, this will take a while ...")
cmd = '%s/bin/kim-api-v1-collections-management install system OpenKIM' % (kimdir)
cmd = '%s/bin/kim-api-v2-collections-management install system OpenKIM' % (kimdir)
txt = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
if verboseflag:
print(txt.decode("UTF-8"))
@ -181,16 +162,16 @@ if buildflag:
# add single OpenKIM model
if addflag:
makefile_path = os.path.join(thisdir, "Makefile.KIM_DIR")
if os.path.isfile(makefile_path):
cmd = 'make --no-print-directory -f %s print_dir' % makefile_path
kimdir = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
pf_path = os.path.join(thisdir, "kim-prefix.txt")
if os.path.isfile(pf_path):
cmd = 'cat %s' % pf_path
kimdir = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
if not os.path.isdir(kimdir):
sys.exit("\nkim-api is not installed")
# download single model
cmd = '%s/bin/kim-api-v1-collections-management install system %s' % (kimdir.decode("UTF-8"), addmodelname)
cmd = '%s/bin/kim-api-v2-collections-management install system %s' % (kimdir.decode("UTF-8"), addmodelname)
txt = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
if verboseflag:
print(txt.decode("UTF-8"))

View File

@ -5,8 +5,6 @@
# The KIM API package can be downloaded from https://openkim.org/kim-api
# Follow the instructions in the INSTALL file to build and install the
# KIM API. Add the openkim.org Models you are interested in using.
# Make sure the directory where the "kim-api-build-conifg" utility is
# located is on the PATH.
#
# As long as you have followed the KIM API build and install instructions,
# there should not be any reason to change this file.
@ -16,17 +14,17 @@
# Settings that the LAMMPS build will import when this package is installed
include ../../lib/kim/Makefile.KIM_DIR
ifeq ($(wildcard $(KIM_INSTALL_DIR)/bin/kim-api-v1-build-config),)
KIM_CONFIG_HELPER = kim-api-v1-build-config
else
KIM_CONFIG_HELPER = $(KIM_INSTALL_DIR)/bin/kim-api-v1-build-config
endif
ifeq ($(shell $(KIM_CONFIG_HELPER) --version 2> /dev/null),)
$(error $(KIM_CONFIG_HELPER) utility is not available. Something is wrong with your KIM API package setup)
ifeq ($(strip $(shell pkg-config --version)),)
$(error 'pkg-config' not found, but is required to configure the KIM API)
endif
kim_SYSINC = $(shell $(KIM_CONFIG_HELPER) --includes)
kim_SYSLIB = $(shell $(KIM_CONFIG_HELPER) --ldlibs)
kim_SYSPATH = $(shell $(KIM_CONFIG_HELPER) --ldflags)
kim_PREFIX := $(shell cat ../../lib/kim/kim-prefix.txt 2> /dev/null)
kim_PREFIX := $(if $(kim_PREFIX),$(kim_PREFIX)/lib/pkgconfig,)
kim_PREFIX := $(if $(shell printf -- "$${PKG_CONFIG_PATH}"),$(kim_PREFIX):$(shell printf -- "$${PKG_CONFIG_PATH}"),$(kim_PREFIX))
kim_SYSINC := $(shell export PKG_CONFIG_PATH="$(kim_PREFIX)"; pkg-config --cflags libkim-api-v2 2> /dev/null)
kim_SYSLIB := $(shell export PKG_CONFIG_PATH="$(kim_PREFIX)"; pkg-config --libs libkim-api-v2 2> /dev/null)
ifeq ($(strip $(kim_SYSINC)),)
$(error 'pkg-config' could not find an installed KIM API library.)
endif

View File

@ -3,10 +3,9 @@ is required to use the KIM package and its pair_style kim command in a
LAMMPS input script.
Information about the KIM project can be found at https://openkim.org.
The KIM project is lead by Ellad Tadmor and Ryan Elliott (U Minn) and
James Sethna (Cornell U). Ryan Elliott is the main developer for the
KIM API and he also maintains the code that implements the pair_style
kim command.
The KIM project is lead by Ellad Tadmor and Ryan Elliott (U Minn).
Ryan Elliott is the main developer for the KIM API and he also
maintains the code that implements the pair_style kim command.
You can type "make lib-kim" from the src directory to see help on
how to download and build this library via make commands, or you can
@ -21,33 +20,34 @@ Instructions:
1. Configure lammps for use with the kim-api library installed in this directory
# replace X.Y.Z as appropriate here and below
$ printf "KIM_INSTALL_DIR=${PWD}/installed-kim-api-vX.Y.Z\n" > ./Makefile.KIM_DIR
$ printf "${PWD}/installed-kim-api-vX-X.Y.Z" > ./kim-prefix.txt
2. Download and unpack the kim-api
$ wget http://s3.openkim.org/kim-api/kim-api-vX.Y.Z.txz
$ tar zxvf kim-api-vX.Y.Z.txz
$ wget http://s3.openkim.org/kim-api/kim-api-vX-X.Y.Z.txz
$ tar zxvf kim-api-vX-X.Y.Z.txz
# configure the kim-api
$ cd kim-api-vX.Y.Z
$ ./configure --prefix=${PWD}/../installed-kim-api-vX.Y.Z
$ cd kim-api-vX-X.Y.Z
$ mkdir build && cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=${PWD}/../../installed-kim-api-vX-X.Y.Z
3. Build and install the kim-api and model
$ make
$ make install
$ cd ..
4. Remove source and build files
$ rm -rf kim-api-vX.Y.Z
$ rm -rf kim-api-vX.Y.Z.txz
$ cd ../../
$ rm -rf kim-api-vX-X.Y.Z
$ rm -rf kim-api-vX-X.Y.Z.txz
5. To add items do the following (replace the kim item name with your
desired value)
$ source ${PWD}/kim-api-vX.Y.Z/bin/kim-api-v1-activate
$ kim-api-v1-collections-management install system Pair_Johnson_Fe__MO_857282754307_002
$ source ${PWD}/kim-api-vX-X.Y.Z/bin/kim-api-vX-activate
$ kim-api-vX-collections-management install system Pair_Johnson_Fe__MO_857282754307_002
-----------------
@ -59,6 +59,6 @@ $ cd lammpos/src
$ make yes-kim
$ make g++ (or whatever target you wish)
Note that the Makefile.lammps and Makefile.KIM_DIR files in this directory
are required to allow the LAMMPS build to find the necessary KIM files.
You should not normally need to edit these files.
Note that the Makefile.lammps file in this directory is required to
allow the LAMMPS build to find the necessary KIM files. You should
not normally need to edit these files.

View File

@ -26,5 +26,4 @@ library you can test it using an input file from the examples dir:
./lmp_serial < lammps/examples/kim/in.kim.lj
This pair_style was written by Valeriu Smirichinski and Ryan
S. Elliott (U Minn).
This pair_style was written by Ryan S. Elliott (U Minn).

File diff suppressed because it is too large Load Diff

View File

@ -12,14 +12,45 @@
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Ryan S. Elliott,
Valeriu Smirichinski,
Ellad Tadmor (U Minn)
Contributing authors: Ryan S. Elliott (UMinn)
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Designed for use with the openkim-api-v1.5.0 package and for use with
the kim-api-v1.6.0 (and newer) package
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along with
this program; if not, see <https://www.gnu.org/licenses>.
Linking LAMMPS statically or dynamically with other modules is making a
combined work based on LAMMPS. Thus, the terms and conditions of the GNU
General Public License cover the whole combination.
In addition, as a special exception, the copyright holders of LAMMPS give
you permission to combine LAMMPS with free software programs or libraries
that are released under the GNU LGPL and with code included in the standard
release of the "kim-api" under the CDDL (or modified versions of such code,
with unchanged license). You may copy and distribute such a system following
the terms of the GNU GPL for LAMMPS and the licenses of the other code
concerned, provided that you include the source code of that other code
when and as the GNU GPL requires distribution of source code.
Note that people who make modified versions of LAMMPS are not obligated to
grant this special exception for their modified versions; it is their choice
whether to do so. The GNU General Public License gives permission to release
a modified version without this exception; this exception also makes it
possible to release a modified version which carries forward this exception.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Designed for use with the kim-api-v2-2.0.0 (and newer) package
------------------------------------------------------------------------- */
#ifdef PAIR_CLASS
@ -34,6 +65,10 @@ PairStyle(kim,PairKIM)
// includes from KIM & LAMMPS
class KIM_API_model;
#include "pair.h"
extern "C" {
#include "KIM_SimulatorHeaders.h"
}
#include <sstream>
namespace LAMMPS_NS {
@ -48,14 +83,13 @@ namespace LAMMPS_NS {
virtual void settings(int, char**);
virtual void coeff(int, char**);
virtual void init_style();
virtual void init_list(int id, NeighList *ptr);
virtual double init_one(int, int);
virtual void reinit();
virtual int pack_reverse_comm(int, int, double*);
virtual void unpack_reverse_comm(int, int*, double*);
virtual double memory_usage();
void *extract(const char *, int &);
private:
protected:
// (nearly) all bool flags are not initialized in constructor, but set
// explicitly in the indicated function. All other data members are
// initialized in constructor
@ -64,12 +98,11 @@ namespace LAMMPS_NS {
// values set in settings()
char* kim_modelname;
bool print_kim_file;
// values set in coeff()
// values set in allocate(), called by coeff()
void allocate();
virtual void allocate();
int* lmps_map_species_to_unique;
// values set in coeff(), after calling allocate()
@ -80,74 +113,59 @@ namespace LAMMPS_NS {
// values set in set_lmps_flags(), called from init_style()
bool lmps_using_newton;
bool lmps_using_molecular;
bool lmps_hybrid; // true if running with pair hybrid
bool lmps_support_cluster; // true if running in mode compat.
// with CLUSTER
enum unit_sys {REAL, METAL, SI, CGS, ELECTRON};
unit_sys lmps_units;
KIM_LengthUnit lengthUnit;
KIM_EnergyUnit energyUnit;
KIM_ChargeUnit chargeUnit;
KIM_TemperatureUnit temperatureUnit;
KIM_TimeUnit timeUnit;
KIM_Model * pkim;
KIM_ComputeArguments * pargs;
// values set in set_kim_model_has_flags(), called by kim_init()
KIM_API_model* pkim;
bool kim_model_has_energy;
bool kim_model_has_forces;
bool kim_model_has_particleEnergy;
bool kim_model_has_particleVirial;
KIM_SupportStatus kim_model_support_for_energy;
KIM_SupportStatus kim_model_support_for_forces;
KIM_SupportStatus kim_model_support_for_particleEnergy;
KIM_SupportStatus kim_model_support_for_particleVirial;
// values set in kim_init(), after call to string_init(_)
// values set in kim_init()
bool kim_init_ok;
bool kim_model_using_half;
bool kim_model_using_cluster;
bool kim_model_using_Rij;
int kim_ind_coordinates;
int kim_ind_numberOfParticles;
int kim_ind_numberContributingParticles;
int kim_ind_numberOfSpecies;
int kim_ind_particleSpecies;
int kim_ind_get_neigh;
int kim_ind_neighObject;
int kim_ind_cutoff;
int kim_ind_energy;
int kim_ind_particleEnergy;
int kim_ind_forces;
int kim_ind_virial;
int kim_ind_particleVirial;
int lmps_local_tot_num_atoms;
double kim_global_influence_distance; // KIM Model cutoff value
int kim_number_of_neighbor_lists;
double const * kim_cutoff_values;
int const * modelWillNotRequestNeighborsOfNoncontributingParticles;
class NeighList ** neighborLists;
// values set in init_style(), after calling pkim->model_init()
bool kim_model_init_ok;
// values set in init_style()
bool kim_particle_codes_ok;
int *kim_particle_codes;
// values set in set_statics(), called at end of kim_init(),
// then again in set_volatiles(), called in compute()
int lmps_local_tot_num_atoms;
double kim_global_cutoff; // KIM Model cutoff value
// values set in compute()
int lmps_maxalloc; // max allocated memory value
int* kim_particleSpecies; // array of KIM particle species
double** lmps_force_tmp; // temp storage for f, when running in
// hybrid mode needed to avoid resetting
// f to zero in each object
int* kim_particleContributing; // array of KIM particle contributing
int* lmps_stripped_neigh_list; // neighbors of one atom, used when LAMMPS
// is in molecular mode
// values used in get_neigh()
int kim_iterator_position; //get_neigh iterator current position
double *Rij;
int** lmps_stripped_neigh_ptr; // pointer into lists
// KIM specific helper functions
void kim_error(int, const char *, int);
void kim_init();
void kim_free();
void set_statics();
void set_volatiles();
void set_lmps_flags();
void set_kim_model_has_flags();
void write_descriptor(char** test_descriptor_string);
virtual void set_contributing();
virtual void kim_init();
virtual void kim_free();
virtual void set_argument_pointers();
virtual void set_lmps_flags();
virtual void set_kim_model_has_flags();
virtual int check_for_routine_compatibility();
// static methods used as callbacks from KIM
static int get_neigh(void** kimmdl, int* mode, int* request,
int* atom, int* numnei, int** nei1atom,
double** pRij);
static int get_neigh(
void const * const dataObject,
int const numberOfCutoffs, double const * const cutoffs,
int const neighborListIndex, int const particleNumber,
int * const numberOfNeighbors,
int const ** const neighborsOfParticle);
};
}
@ -156,81 +174,92 @@ namespace LAMMPS_NS {
/* ERROR/WARNING messages:
E: Illegal ... command
E: Unable to set KIM particle species codes and/or contributing
Self-explanatory. Check the input script syntax and compare to the
documentation for the command. You can use -echo screen as a
command-line option when running LAMMPS to see the offending line.
A low-level kim-api error has occurred.
E: Unrecognized virial argument in pair_style command
E: KIM Compute returned error
Only two options are supported: LAMMPSvirial and KIMvirial
The KIM model was unable, for some reason, to complete the computation.
E: 'KIMvirial' or 'LAMMPSvirial' not supported with kim-api-v2.
"KIMvirial or "LAMMPSvirial" found on the pair_style line. These keys are not supported kim-api-v2. (The virial computation is always performed by LAMMPS.) Please remove these keys, make sure the KIM model you are using supports kim-api-v2, and rerun.
E: Illegal pair_style command
Self-explanatory.
E: Incorrect args for pair coefficients
Self-explanatory. Check the input script or data file.
Self-explanatory.
E: Invalid args for non-hybrid pair coefficients
E: create_kim_particle_codes: symbol not found: XX
"NULL" is only supported in pair_coeff calls when using pair hybrid
The KIM model specified does not support the atomic species symbol
E: PairKIM only works with 3D problems
This is a current limitation.
Self-explanatory.
E: All pair coeffs are not set
All pair coefficients must be set in the data file or by the
pair_coeff command before running a simulation.
Self-explanatory.
E: KIM neighbor iterator exceeded range
E: Unable to destroy Compute Arguments Object
This should not happen. It likely indicates a bug
in the KIM implementation of the interatomic potential
where it is requesting neighbors incorrectly.
A low-level kim-api error has occurred.
E: LAMMPS unit_style lj not supported by KIM models
E: KIM ModelCreate failed
Self-explanatory. Check the input script or data file.
The kim-api was not able to create a model object for the specified model.
E: Unknown unit_style
E: KIM Model did not accept the requested unit system
Self-explanatory. Check the input script or data file.
The KIM Model does not support the specified LAMMPS unit system
W: KIM Model does not provide `energy'; Potential energy will be zero
E: KIM ComputeArgumentsCreate failed
UNDOCUMENTED
A low-level kim-api error has occurred.
W: KIM Model does not provide `forces'; Forces will be zero
E: Unable to register KIM pointers
UNDOCUMENTED
A low-level kim-api error has occurred.
W: KIM Model does not provide `particleEnergy'; energy per atom will be zero
E: Unable to set KIM argument pointers
UNDOCUMENTED
A low-level kim-api error has occurred.
W: KIM Model does not provide `particleVirial'; virial per atom will be zero
UNDOCUMENTED
E: Test_descriptor_string already allocated
This is an internal error. Contact the developers.
U: KIM Model does not provide 'energy'; Potential energy will be zero
E: pair_kim does not support hybrid
Self-explanatory.
U: KIM Model does not provide 'forces'; Forces will be zero
E: LAMMPS unit_style lj not suppored by KIM models
Self-explanatory.
U: KIM Model does not provide 'particleEnergy'; energy per atom will be zero
E: KIM Model requires unsupported compute argument: XXX
A low-level kim-api error has occurred.
W: KIM Model does not provide `partialEnergy'; Potential energy will be zero
Self-explanatory.
U: KIM Model does not provide 'particleVirial'; virial per atom will be zero
W: KIM Model does not provide `partialForce'; Forces will be zero
Self-explanatory.
W: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero
Self-explanatory.
W: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero
Self-explanatory.
E: KIM Model requires unsupported compute callback
A low-level kim-api error has occurred.
*/