Types of KIM Content

The OpenKIM Repository contains the following types of KIM Items:

  • Model – An algorithm representing a specific interaction between atoms, e.g. an interatomic potential or force field.

  • Test – A computer program which when coupled with a suitable Model, possibly including additional input, calculates a specific prediction (material property) for a particular configuration.

  • Verification Check – A computational algorithm which when coupled with a Model examines a particular aspect of its coding correctness or characteristics.

  • Reference Data – Experimental or first principles results (e.g. density functional theory (DFT) results) for a material property.

Each item is identified by a unique permanent KIM ID to enable reproducibility of results. In addition, Models, Tests and Verification Checks are issued digital objective identifiers (DOIs), which can be cited in publications.


There are two types of OpenKIM models: Portable Models that can be used in multiple simulation codes, and Simulator Models that only work with a specific simulator.

  • A KIM Portable Model (PM) is a computer program written in one of the following languages: C, C++ and Fortran. It is an implementation of an interatomic model, which takes as input an atomic configuration (atom coordinates, species, etc.) and returns the energy and its derivatives (forces, stress, etc.). The PM is compiled into a shared library that can be linked with any simulation code that conforms to the KIM API Portable Model Interface (PMI) (much like a DVD works seamlessly with a DVD player). (See current list of KIM-compliant codes here).

    A KIM PM can be an independent self-contained program limited to a single interatomic model for a particular system, or it can be part of a class of models (e.g. the Lennard-Jones (LJ) pair potential, which can represent different materials by changing its parameters). In the latter case, the KIM PM contains the parameters for a particular parameterization of a given system, and is combined with a Model Driver stored separately in the OpenKIM repository with its own KIM ID, which contains the computer implementation of the class. For example for LJ, the PM shared library will include the compiled code of the corresponding LJ Model Driver with the two LJ parameters (σ and ε) obtained from the PM.

  • A KIM Simulator Model (SM) is a package curated on OpenKIM that specifies how to setup and run a model that is implemented as an integrated part of a simulation code (simulator). For simulators that support the KIM API Simulator Model Interface (SMI), KIM SMs can be obtained and used in a simple fashion. A KIM SM package includes all of the necessary parameter files, simulator input commands, and metadata (supported species, units, etc.) needed to run the model in its native simulator. For example for an LJ potential implemented in a simulation code (e.g. LAMMPS), the SM package will include the commands and parameters necessary to set up and invoke the native LAMMPS LJ potential.

    The main advantages of running a native potential in this fashion is that since the SM is archived in OpenKIM it has a unique DOI and KIM ID so that it can be cited in publications and the results obtained using it can be reproduced in the future. In addition, the SM undergoes all of the Verification Checks and all compatible Tests, and therefore a wealth of information is available regarding its performance.


KIM Tests are similar to KIM PMs in that they are computer programs written in one of the languages supported by KIM. A KIM Test computes a specific material property rigorously specified by a KIM Property Definition. KIM Tests conform to the KIM API and are automatically coupled to generate the predictions of each Model for compatible Tests. The calculations themselves are performed on OpenKIM resources using the state-of-the-art KIM Processing Pipeline, which uses an asynchronous queuing system based on message passing to assign tasks to virtual machine workers.

Similar to PMs, a Test can be either a stand-alone implementation for the calculation of a particular property for a particular configuration and material system (e.g. the (111) surface energy of face-centered cubic (fcc) Cu), or can be a member of a class of tests implemented as a Test Driver (e.g. the (hkl) surface energy of a cubic crystal). In the latter case, a specific Test using this Test Driver will specify the crystal type, species and hkl values defining the surface). For more details on Tests and the KIM Processing Pipeline, see Introduction to KIM Tests.

Verification Checks

Verification Checks (VCs) are computer programs that couple to a Model to assess it from a programmatic perspective. For example, there are VCs that check for coding correctness, such as whether a Model supports the species it claims to support, correctly manages unit conversion, does not have memory leaks, and is thread safe. Other VCs explore characteristics of the Models, such as its smoothness and satisfaction of basic invariances. For more details on VCs, see About Verification Checks.

Reference Data

An item of Reference Data contains experimental or first principles results (typically obtained using density functional theory (DFT) computations) for a specific material property specified by a KIM Property Definition. The prediction of a KIM Test and Reference Data for the same property are compared by KIM tools used to assist users in selecting a suitable Model for their application.

The OpenKIM Repository currently contains (loading…) Models, (loading…) Tests, and (loading…) VCs, with more continually being uploaded by users (see Adding New Content to KIM ). You can browse the Repository content by clicking on an element to find relevant Models or Tests, or by using the Browse Interface from the main KIM menu.