Dear KIM community:
We are contacting you because we would like to draw on your insight and experience in interatomic modeling and simulation in order to make a decision about the direction of the next major release (v2) of the kim-api package.
Our experience with using and supporting the current kim-api-v1 package has shown that the package’s complexity (in terms of the number of different “modes of operation”; e.g., neighbor lists: half, full, iterator, locator; NBCs: cluster, miopbc, neigh_pure, neigh_rvec; etc.) makes it difficult for new users to become competent kim-api code developers. Further, the kim-api’s complexity also results in Model implementations that are overly intricate due to the developer’s desire to support all modes of operation. This experience has led us to consider an approach that would have kim-api-v2 take a dramatically simplified form (at least, with regard to neighbor lists and NBCs), while still retaining a high degree of flexibility.
So, we would like your feedback on the following three ideas for kim-api-v2:
(1) Neighbor Lists: Only full, random-access neighbor lists will be supported. We would introduce support for multiple neighbor lists (with different cutoffs), but would remove support for half lists and for iterator-access to the neighbor lists.
(2) Just NEIGH_PURE: All kim-api simulations would be of the NEIGH_PURE type, where there are “contributing” particles and “non-contributing” (ghost) particles. The particle status (contributing or non-contributing) would be specified by an array of integers (as opposed to the kim-api-v1 approach of non-contributing particles having zero neighbors in the neighbor list).
(3) Clear definitions for Energy and Force: This is the same as in kim-api-v1, but we want to be very explicit about the definitions. For a given configuration of particles, C, the configuration’s energy, E^C, is the sum of the particle-energies for its contributing particles. That is, E^C = \Sum_i E_i, where the sum is over just the contributing particles in C and E_i is the energy of particle i. Similarly, the kim-api defines the (partial) force on particle j (contributing or non-contributing) in C as F^C_j = - \frac{\partial E^C}{\partial x_j}, where x_j is the position vector of particle j. These definitions allow for a convenient implementation of domain-decomposition methods and periodic boundary conditions.
We are very interested in your thoughts about these ideas. For example, does this approach make it impossible to perform certain types of simulations? What are the pluses/minuses of these ideas? Are there different ideas that would better achieve our goals of simplicity and flexibility?
Please reply to this message to post your response to the [email protected] mailing list.
Sincerely,
Ryan S. Elliott
PS: Attached is a document containing a more detailed sketch of our current thoughts for kim-api-v2.
kim-api-v2.0.0-proposal-attachment.txt (4.41 KB)