KIM API Features

Download kim-api-v1.8.2.tgz — released 2017/04/17

Visit the OpenKIM Forum on Google Groups for assistance. Click here to return to the KIM API Overview.

The KIM development team is pleased to bring you the KIM application programming interface (API). By conforming to this API, an atomistic simulation code will seamlessly work with any KIM-compliant interatomic model written in any supported language. The interface is computationally efficient and often requires relatively minor changes to existing codes.

The KIM API has the following main features:

  • licensed under the Open Source CDDL license
  • support for C, C++, FORTRAN 77, Fortran 90/95, Fortran 2003
  • support for static and dynamic linking of programs using the KIM API
  • communication of an arbitrary number of 'arguments' to and from a Model
  • support for multiple particle types
  • enables a simulation code to access and modify Model parameters
  • support for physical units and unit conversions
  • support for five NBC (neighbor list and boundary conditions) methods
  • support for 'Model Drivers' (Models that read in parameters)
  • built-in support for virial and Hessian calculations
  • up-to-date documentation

(See the NEWS file and README file files described below for more information on these features.)

The distribution includes the API code, examples of simulation codes (Tests) and interatomic models (Models) and documentation.

The most recent packaged download of the KIM API is available here:

Download kim-api-v1.8.2.tgz — released 2017/04/17
  1. Download and unpack the archive.

    • On Linux and Mac systems, type:

      tar zxvf kim-api-v1.8.2.tgz

      which will expand the archive into the directory ./kim-api-v1.8.2/

  2. Read the README file in the new directory.

  3. Read the NEWS file to see what is new in the current release.

  4. Install the package. See directions in the INSTALL file.

  5. Read the docs/README file for a step-by-step guide to learning the API.


If you have problems or questions, send an email with your question and all relevant information to

Your message will be posted to the openkim google group:

The members of the openkim development team actively monitor this forum and will do their best to help you with your question in a timely fashion. This forum is also used to announce minor new releases and bug fixes.

If you plan to work with the KIM API, it is highly recommended that you become a member of the openkim group. (Just go to the above link and click on "Join this group" on the right of the screen.)

For more information on planned features, see the TODO file.

Recent Updates

=== kim-api-v1.8.2 ============== 17Apr2017 ====================================

* Fixed issues reaised by Tobias Brink (this==NULL; and `find` portability)

=== kim-api-v1.8.1 ============== 28Mar2017 ====================================

* Added additional deprecations in prep. for kim-api-v2.0.0

* Fixed other minor bugs in create_package script and build-config.cpp

* Fixed bug in Makefile.ParameterizedModel

* Fixed formatting error in Makefiles created by build-config utility

* Fixed bug in ex_model_Ar_P_MLJ_CLUSTER_C example model

=== kim-api-v1.8.0 ============== 17Jan2017 ====================================

* Deprecated significatant features and methods in prep. for kim-api-v2.0.0

* Updated `build-config' utility with more flexible options

* Removed `KIM_LINK = dynamic-link' option of build system

* Modified/Fixed/Improved the configuration and build system

* Added `collections-info' utility for querying environment variables,
  user configuration files, and lists of models and model drivers in the

=== kim-api-v1.7.3 ============== 02Jun2016 ====================================

* Added a `configure' script for setting up Makefile.KIM_Config

* Added support for environment-variable-collection

* Added support for user_config_file_dir_name setting

* Documentation update/improvements

* Minor improvements to error messages

* Added `make add-OpenKIM' feature

* Added `make help' feature

* Added release dates to NEWS file

* Bug fixs

=== kim-api-v1.7.2 ============== 25Jun2015 ====================================

* Updated copyright years in files

* Rewrite of INSTALL file to provide a significantly improved description and
  instructions for build and installation of the KIM API

* Fix error checking bug in ex_test_Ar_multiple_models Test

* Improve the build and install process to better follow standard conventions
  for library soname values.

* Increased the maximum number of species supported by the example Tests to 200

* Fixed bug in example Tests related to maximum number of supported species

* Updated 'make clean' so that it removes all old library files in the source

* Fixed default make target for Parameterized Models

* Fixed a bug in the installation process associated with the use of DESTDIR

* Fixed a regular expression error in the build system

* Fixed memory leak in internal KIM API code

* Added sanity check to make sure that the 'xxd' utility is available

* vc_forces_numer_deriv now outputs configuration energy

* Documentation updates

=== kim-api-v1.7.1 ============== 02Dec2014 ====================================

* Bug fix for build of parameterized Models

* Minor documentation update

=== kim-api-v1.7.0 ============== 21Nov2014 ====================================

* Use 'xxd' utility for encapsulation of KIM descriptor files and param. files

* Added LINKSOPATH variable to build system for advanced system install options

* Added KIM_API_get_kim_str_len() routine

* Fix inconsistencies in ex_test_Ar_multiple_models

* remove build system dependency on 'ed' program

* Update 'make add-*' mechanism to use permanent url's for items

* Fix bugs and minor improvements to build system

* Minor improvements to error messages

* Updates to documentation

=== kim-api-v1.6.3 ============== 18Aug2014 ====================================

* Fixed install to recognize := and = in Makefiles

* Removed use of non-standard strtok_r()

* Fixes to ex_model_Cu_PF_Johnson & model_El_PF_Template.c

* Fixes build system

=== kim-api-v1.6.2 ============== 11Aug2014 ====================================

* Correct KIM_API_Versions in template ".kim" files

* Update make clean target for Model Drivers and Models

* All template ".kim" files now generated from "legos" in git repo

=== kim-api-v1.6.1 ============== 08Aug2014 ====================================

* Updates to Model Driver and Model template files (in docs/templates/)

* Changed the internal mechanism for handling parameter files to remove a
  security hole associated with the use of tmpnam().

* Revise kim.log entries to be more informative and clear

* Bug fixes in build system, examples, and build system

* Other small documentation and code improvements

=== kim-api-v1.6.0 ============== 28Jul2014 ====================================

* Documentation updates.

* Model Driver Template and training model examples are now generated from a
  single consistent "lego" file.  Training examples are not included in
  official release tarballs.

* Add SemVer version routines to the KIM API.  ".kim" files now require a
  KIM_API_Version line to indicate the Model/Simulator compatibility.

* Change terminology from "Particle Types" to "Particle Species" for clarity
  and uniformity with the rest of the OpenKIM project.  (See
  KIM_API_get_model_species(), and similar routines.)

* Changed KIM API routines that output strings.  This avoids output of arrays
  of strings, which are unnatural in C/C++ and allows for more natural handling
  of string arguments in Fortran. (See: KIM_API_get_NBC_method(),
  KIM_API_get_params(), and similar routines.)

* Simulators and OpenKIM Tests now should use the "kim-api-build-config"
  utility in order to obtain appropriate compiler and linker flags for building
  against the KIM API.

* Changed CCFLAGS to more standard CFLAGS Make variable.

* Build system now provides ability to download Model Drivers and Models
  directly from

* Change package name from "openkim-api" to "kim-api".

* Rename this file (CHANGELOG) to NEWS, to better follow convention.

* A complete restructuring of the package directory layout has been performed
  in order to conform to more standard practices and to better reflect the
  intended behavior and use of the package components.

* Model Drivers now specify the name of their ".kim" file template in their
  Makefile.  The conventional name for these files now ends in ".kim.tpl".

* Model ".kim" file name is now specified in the Makefile and can be anything
  the developer desires.

* Remove deprecated KIM_API_init() routine.

* Remove deprecated Fortran Cray pointer support.

View the NEWS file for additional history.