Introduction to KIM Tests


An important objective of the KIM project is to test the predictions of interatomic models (Portable Models and Simulator Models) archived in for a variety of properties of interest to materials researchers. This is accomplished through a suite of KIM Tests, each of which computes one or more properties (conforming to a KIM Property Definition). A KIM Test is coupled with all compatible Models in The results are added to the OpenKIM Repository where they can be viewed on Model pages through embedded visualizations and in text-based "property synopses" (click "expand" in the Test results table). Any new Model uploaded to will be similarly tested.

The long-term objective of the KIM project is for Tests curated in to become standard rigorous methods for computing important material properties that can be cited in publications. The intent is for these Tests to be developed by researchers with expertise related to the particular material properties with assistance from the KIM Team.

Tests and Test Drivers

A KIM Test corresponds to the calculation of one or more specific properties for a specific material that can couple to any compatible Model (i.e. one that supports the required species and that matches the input/output requirements of the Test).

Similar to a Portable Model, a KIM Test can be a stand-alone program or can employ a more general Test Driver. For example, one can write a stand-alone Test that computes the (111) surface energy of a Au face-centered cubic (fcc) crystal. Alternatively one could create a Test Driver for the surface energy of fcc crystals that reads in a species and desired surface. Associated with this driver could be a Test for the Au(111) system comprised of a parameter file containing "Au" and "(111)". With such a Test Driver, one could easily create additional Tests for other material/surface systems. Test Drivers are preferred to stand-alone Tests due to their generality.

A Test Driver performs the following tasks: (1) read in parameters from a Test; (2) construct necessary atomic configurations (possibly using other Test Results as dependencies); (3) call a Model to obtain energies, forces and other quantities as needed and compute its associated property or properties; (4) output the properties in a standardized machine-readable form. Test Drivers can be implemented in different ways:

  • The Test Driver can be a computer program written in one of the languages supported by the KIM API that can directly interface with Portable Models.

  • The Test Driver can be a script written in any language of choice that prepares an input file for a KIM-compliant simulator (e.g. LAMMPS). Tests associated with this Test Driver can be used with Portable Models and with Simulator Models that are native to the simulator (e.g. Tests using LAMMPS can be run with LAMMPS Simulator Models).

  • The Test Driver can be a Python script that uses the KIM Calculator in the Atomic Simulation Environment (ASE). Tests associated with this Test Driver can be used with Portable Models and with all Simulator Models native to simulators for which ASE has a Calculator (see list of ASE Calculators).

KIM Processing Pipeline

As explained above, each Test Driver is associated with one or more Tests that define individual calculations. These Tests are coupled to compatible Models by the KIM Processing Pipeline. The Pipeline is activated when a new Model or Test is uploaded to the system. It determines what calculations are required and queues them for execution. The Pipeline consists of a distributed set of virtual machines (directors and workers) running a specialized Python daemon that communicates with the Pipeline infrastructure via an asynchronous message passing framework and a message queuing system. The Pipeline automatically manages dependencies between Tests.

Developing New Test Drivers

Developing a KIM Test Driver based on your research is an excellent way to promote your work and to make it widely available to other researchers. Your Test Driver will be issued a DOI that users can cite in publications. Tests based on your Driver will be applied to all compatible Models in and the results will be archived.

When developing a new Test Driver, it is recommended to start with a focused effort for a limited number of materials/cases and gradually add capabilities to make the driver more general and robust.

The first step is to define the material property that will be computed (unless it already exists). The current list of property definitions is here. Defining a property in rigorous fashion requires scientific expertise and is an important part of the test creation process. If a new property is to be defined, it is recommended to use an existing, similar property as a starting point and consult with the KIM Team to make the necessary changes.

Once a property definition exists, the next step is to create the Test Driver. Several possible approaches have been described above. The recommended approach is to develop ASE-based Test Drivers, which can work with both Portable Models and Simulator Models associated with different simulators, and can also be adapted to compute first principles Reference Data. Alternatively, a Test Driver using a particular KIM-compliant simulator (e.g. LAMMPS) or a stand-alone program can be developed. Tutorials have been prepared that demonstrate how to:

If you are interested in developing a new test, contact us!

Getting Help

Support is always available by posting questions with all relevant information to

Members of the OpenKIM development team actively monitor this forum and will do their best to respond to questions in a timely fashion.