Merge pull request #863 from ellio167/kim-update

KIM API interface update
This commit is contained in:
Steve Plimpton
2018-04-13 08:43:56 -06:00
committed by GitHub
7 changed files with 37 additions and 117 deletions

View File

@ -290,7 +290,21 @@ if(ENABLE_USER-VTK)
endif()
if(ENABLE_KIM)
find_package(KIM REQUIRED)
find_package(KIM QUIET)
if(NOT KIM_FOUND)
message(STATUS "KIM not found - we will build our own")
include(ExternalProject)
ExternalProject_Add(kim_build
URL https://github.com/openkim/kim-api/archive/v1.9.4.tar.gz
URL_MD5 f4d35a1705eed46d64c7c0ab448ff3e0
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
)
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)
list(APPEND LAMMPS_DEPS kim_build)
endif()
list(APPEND LAMMPS_LINK_LIBS ${KIM_LIBRARIES})
include_directories(${KIM_INCLUDE_DIRS})
endif()

View File

@ -21,7 +21,7 @@ Syntax from lib dir: python Install.py -b -v version -a kim-name
specify one or more options, order does not matter
-v = version of KIM API library to use
default = kim-api-v1.9.2 (current as of Oct 2017)
default = kim-api-v1.9.4 (current as of Apr 2018)
-b = download and build base KIM API library with example Models
this will delete any previous installation in the current folder
-n = do NOT download and build base KIM API library.
@ -109,7 +109,7 @@ nargs = len(args)
if nargs == 0: error()
thisdir = os.environ['PWD']
version = "kim-api-v1.9.2"
version = "kim-api-v1.9.4"
buildflag = False
everythingflag = False
@ -166,9 +166,6 @@ if pathflag:
mkfile.write("print_dir:\n")
mkfile.write(" @printf $(KIM_INSTALL_DIR)\n")
with open("%s/Makefile.KIM_Config" % thisdir, 'w') as cfgfile:
cfgfile.write("include %s/lib/kim-api/Makefile.KIM_Config" % kimdir)
print("Created %s/Makefile.KIM_DIR\n using %s" % (thisdir,kimdir))
else:
kimdir = os.path.join(os.path.abspath(thisdir), "installed-" + version)
@ -191,9 +188,6 @@ if buildflag:
mkfile.write("print_dir:\n")
mkfile.write(" @printf $(KIM_INSTALL_DIR)\n")
with open("%s/Makefile.KIM_Config" % thisdir, 'w') as cfgfile:
cfgfile.write("include %s/lib/kim-api/Makefile.KIM_Config" % kimdir)
print("Created %s/Makefile.KIM_DIR\n using %s" % (thisdir,kimdir))
# download entire kim-api tarball
@ -247,11 +241,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)
if not os.path.isdir(kimdir):
print("\nkim-api is not installed")
error()
# download single model
cmd = '%s/bin/kim-api-v1-collections-management install system %s' % (kimdir, addmodelname)
cmd = '%s/bin/kim-api-v1-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

@ -20,47 +20,35 @@ Instructions:
1. Configure lammps for use with the kim-api library installed in this directory
$ printf "KIM_INSTALL_DIR=${PWD}\n" > ./Makefile.KIM_DIR
$ printf "include ${PWD}/lib/kim-api/Makefile.KIM_Config\n" > ./Makefile.KIM_Config
# replace X.Y.Z as appropriate here and below
$ printf "KIM_INSTALL_DIR=${PWD}/installed-kim-api-vX.Y.Z\n" > ./Makefile.KIM_DIR
2. Download and unpack the kim-api
# replace X.Y.Z as appropriate here and below
$ wget http://s3.openkim.org/kim-api/kim-api-vX.Y.Z.tgz
$ tar zxvf kim-api-vX.Y.Z.tgz
$ wget http://s3.openkim.org/kim-api/kim-api-vX.Y.Z.txz
$ tar zxvf kim-api-vX.Y.Z.txz
# configure the kim-api
$ cd kim-api-vX.Y.Z
$ ./configure --prefix=${PWD}/../
# setup the desired kim item
$ make add-Pair_Johnson_Fe__MO_857282754307_002
$ ./configure --prefix=${PWD}/../installed-kim-api-vX.Y.Z
3. Build and install the kim-api and model
$ make
$ make install
# replace X with the KIM API major version number
$ make install-set-default-to-vX
$ cd ../
$ cd ..
4. Remove source and build files
$ rm -rf kim-api-vX.Y.Z
$ rm -rf kim-api-vX.Y.Z.tgz
$ rm -rf kim-api-vX.Y.Z.txz
5. To add additional items do the following (replace the kim item name with your
5. To add items do the following (replace the kim item name with your
desired value)
$ wget https://openkim.org/download/EAM_Johnson_NearestNeighbor_Cu__MO_887933271505_001.tgz
$ tar zxvf EAM_Johnson_NearestNeighbor_Cu__MO_887933271505_001.tgz
$ cd EAM_Johnson_NearestNeighbor_Cu__MO_887933271505_001
$ make
$ make install
$ cd ..
$ rm -rf EAM_Johnson_NearestNeighbor_Cu__MO_887933271505_001
$ rm -rf EAM_Johnson_NearestNeighbor_Cu__MO_887933271505_001.tgz
$ 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
-----------------
@ -73,4 +61,4 @@ $ 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 this file.
You should not normally need to edit these files.

View File

@ -1,6 +0,0 @@
This package (pair-kim-v1.7.2+1) created from commit
ced1275c5fd5b382cb9bd39e44ed1324c7c85e99
of the pair-kim git repository
By Ryan S. Elliott (relliott@umn.edu) on Mon Feb 22 14:59:53 CST 2016.

View File

@ -27,7 +27,6 @@
// includes from LAMMPS
#include "pair_kim.h"
#include "pair_kim_version.h"
#include "atom.h"
#include "comm.h"
#include "force.h"
@ -1094,18 +1093,6 @@ void PairKIM::write_descriptor(char** test_descriptor_string)
"#\n"
"# This file is automatically generated from LAMMPS pair_style "
"kim command\n");
char tmp_version[100];
sprintf(tmp_version,"# This is pair-kim-v%i.%i.%i",
PAIR_KIM_VERSION_MAJOR, PAIR_KIM_VERSION_MINOR,
PAIR_KIM_VERSION_PATCH);
strcat(*test_descriptor_string, tmp_version);
#ifdef PAIR_KIM_VERSION_PRERELEASE
sprintf(tmp_version,"-%s", PAIR_KIM_VERSION_PRERELEASE);
strcat(*test_descriptor_string, tmp_version);
#endif
#ifdef PAIR_KIM_VERSION_BUILD_METADATA
sprintf(tmp_version,"+%s", PAIR_KIM_VERSION_BUILD_METADATA);
#endif
strcat(*test_descriptor_string,
"\n"
"# The call number is (pair_style).(init_style): ");

View File

@ -1,64 +0,0 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://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.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Ryan S. Elliott,
------------------------------------------------------------------------- */
#ifndef LMP_PAIR_KIM_VERSION_H
#define LMP_PAIR_KIM_VERSION_H
//
// Release: This file is part of the pair-kim-v1.7.2+1 package.
//
//
// This file defines the version information for the pair-kim package.
// The values specified here must conform to the Semantic Versioning
// 2.0.0 specification.
//
// Generally the version numbering for the pair-kim package will
// parallel the numbering for the kim-api package. However, if
// additional versioning increments are required for the pair-kim
// package, the build-metatdata field will be used to provide a
// "sub-patch" version number.
//
// The PATCH value should be incremented IMMEDIATELY after an official
// release.
//
// The MINOR value should be incremented AND the PATCH value reset to
// zero as soon as it becomes clear that the next official release
// MUST increment the MINOR version value.
//
// The MAJOR value should be incremented AND the MINOR and PATCH
// vaules reset to zero as soon as it becomes clear that the next
// official release MUST increment the MAJOR version value.
//
// The PRERELEASE value can be set to any value allowed by the
// Semantic Versioning specification. However, it will generally be
// empty. This value should be quoted as a string constant.
//
// The BUILD_METADATA value can be set to any value allowed by the
// Semantic Versioning specification. However, it will generally be
// emtpy; Except for when "sub-patch" versioning of the pair-kim
// package is necessary. This value should be quoted as a string
// constant.
//
#define PAIR_KIM_VERSION_MAJOR 1
#define PAIR_KIM_VERSION_MINOR 7
#define PAIR_KIM_VERSION_PATCH 2
//#define PAIR_KIM_VERSION_PRERELEASE
#define PAIR_KIM_VERSION_BUILD_METADATA "1"
#endif /* PAIR_KIM_VERSION_H */

View File

@ -16,6 +16,8 @@ style_region.h
style_neigh_bin.h
style_neigh_pair.h
style_neigh_stencil.h
# deleted on 4 April 2018
pair_kim_version.h
# deleted on 15 December 2017
fix_python.cpp
fix_python.h