[lammps-users] Possible to use LAMMPS as basis for KMC code?

Hi All,

I am working with some folks who are curious if it would be feasible to use LAMMPS as the basis for a Kinetic Monte Carlo / Monte Carlo simulation code. I am not to familiar with what exactly they are looking to do or how such codes are generally written, but from what I understand, they would just be using the potential/force functions, and ‘strapping on’ a new solver to handle the particulars of the KMC algorithm.

Has anyone tried that with LAMMPS? Any thoughts on the feasibility of such a thing? Would it be better to go to another code for such things, if so, which one(s)?



David E. Farrell

Graduate Student

Mechanical Engineering

Northwestern University

email: [email protected]…435…


LAMMPS might not be your first vehicle of choice since it predefines bond, angle, dihedral, and improper lists a priori. It becomes cumbersome to update these in parallel when a bond is broken or being formed, especially when impropers are part of the simulation set. Improper definition is ambiguous when connectivity is not known. We have a dynamic crosslinking routine that does the above, but have not worked it into the current release as of yet.


Are these folks planning an off-lattice KMC

I am not familiar with ‘off-lattice’ KMC calculations (not very familiar with KMC calculations at all), if I understand the problem they are interested in, they will be using it to study defect and grain boundary evolution of layered ceramic/metal structures under thermal-mechanical loading - so if ‘off-lattice’ means with a dramatically changing structure, I think the answer would be yes.

But, to be honest, I am not precisely sure (I am not directly involved in the project, I just happen to be someone in the same group using a program they thought could be useful as a base).


Anything is possible, but a standard Metropolis or kinetic MC code
would not use most of what LAMMPS computes. E.g. forces or
neighbor lists, since the MC "moves" would probably invalidate the
neighbor list.

However, if you want to do hybrid MC which is essentially an occasional
MC move with MD inbetween, then LAMMPS might be a good choice.
Using it as a library or writing the MC part as a "fix" that gets invoked
every few steps.

We have a talked with a visiting chemE prof (Ed Maginn of UND) about
doing a Gibbs ensemble MC with LAMMPS, which would invoke
2 LAMMPS MD simulations and do MC exchanges between them.
Parallel tempering with LAMMPS is similar.

We also have a separate effort at Sandia to develop a parallel MC
code, but it doesn't use much of LAMMPS other than the basic
framework (input scripts, class structure, etc).


Thanks for the answers, guys.

I have forwarded them on to the folks who wanted to know. From the sounds of the responses, I have recommended that they consider other options since it sounds like it wouldn’t be much of a work savings to use the few bits of LAMMPS that would be applicable.

Steve, I have mentioned to them that they may want to get in touch with you about this other SNL effort - is there any info available to outsiders on it yet, or is it too early for that?