The KIM API package is a system-level library that aims to give computer programmers the ability to write atomistic or molecular simulation programs that can seamlessly interface (in a plug-and-play manner) with independent implementations of interatomic models, regardless of the programming language (C, C++, FORTRAN 77, Fortran 90/95/2003, Python, etc.) in which the codes are written.

The KIM API defines standard quantities that must be communicated between the simulation code and the interatomic model, such as the number of particles, the species and position coordinates of each particle, and the forces acting on the particles. This information is communicated via memory pointers so that minimal data copying is necessary. The KIM API provides a "model object" and "compute-arguments object" interface which facilitates and simplifies (as much as possible) the exchange of memory pointers between the simulator and model.

This documentation is organized into the following components:

  1. Features of the KIM API package
  2. Theory
  3. Implementation
  4. Example simulators written in C++ (ex_test_Ar_fcc_cluster_cpp.cpp), C (ex_test_Ar_fcc_cluster.c), and Fortran (ex_test_Ar_fcc_cluster_fortran.F90).
  5. Example stand-alone models written in C++ (LennardJones_Ar.cpp), C (ex_model_Ar_P_Morse_07C.c) and Fortran (ex_model_Ar_P_MLJ_F03.F03)
  6. Example model drivers written in C++ (LennardJones612Implementation.hpp), C (ex_model_driver_P_Morse.c), and Fortran (ex_model_driver_P_LJ.F90).
  7. Example parameterized models (ex_model_Ar_P_LJ.params, ex_model_Ar_P_Morse.params, LennardJones612_UniversalShifted.params)
  8. Summary of Differences Between kim-api-v1 and kim-api-v2
  9. Guide for porting content from KIM API v1 to v2

In addition, all public header files and included example codes are available for browsing.