Extending atom style for active matter

Dear LAMMPS users and developers,

I think I will start with attempting to get something active
matter-like working in LAMMPS. In most models, active matter is
implemented by adding a constant velocity or force vector to each
particle. In the simplest model, this force or velocity is constant in
magnitude but can change direction due to e.g. Brownian motion.

I reckon this can be done by
1) Writing a new atom style that is a simple extension of atom_style
atomic that contains an additional double array of size 3.
2) Using an internal FixPropertyAtom class to store the forces in and
delegate all the work to that one.
3) A more elegant solution that I am not aware of.

All help/advice is greatly appreciated. Furthermore, if there are any
pitfalls I should be aware of, I would be glad to know them
beforehand.

Cheers,
Stefan

Dear LAMMPS users and developers,

I think I will start with attempting to get something active
matter-like working in LAMMPS. In most models, active matter is
implemented by adding a constant velocity or force vector to each
particle. In the simplest model, this force or velocity is constant in
magnitude but can change direction due to e.g. Brownian motion.

I reckon this can be done by
1) Writing a new atom style that is a simple extension of atom_style
atomic that contains an additional double array of size 3.

i would defer this until you know how much you need to modify and how
many entries you want to add.

2) Using an internal FixPropertyAtom class to store the forces in and
delegate all the work to that one.

that is what i would use in the beginning, unless the simpler
alternative of using FixStore internally is sufficient
the benefit of FixPropertyAtom is, that you can use it with read_data
to read custom sections in a data file, the downside is, that you have
to make certain to have sufficiently unique identifiers for your
properties, to not have conflicts with other features, as the name of
entries is a global namespace.

you can always switch to using a custom atom style at a later point.

axel.

Hi Axel, vielen dank! FixStore might even be better, as for now I just
need an array to store some data in without worrying about proper
communication etc.

Dear Stefan,

>> Dear LAMMPS users and developers,
>>
>> I think I will start with attempting to get something active
>> matter-like working in LAMMPS. In most models, active matter is
>> implemented by adding a constant velocity or force vector to each
>> particle. In the simplest model, this force or velocity is constant in
>> magnitude but can change direction due to e.g. Brownian motion.

Do you have a specific model in mind? The "fixed velocity" model requires a
dynamics for the re-orientation of the velocity, for instance.

Are you thinking of point particles? Another basic model for this is the "depot"
model [Erdmann2000] where the activity is implemented as a velocity-dependent
friction.

I am interested in developing/testing LAMMPS for this type of problem.

Regards,

Pierre

[Erdmann2000] Erdmann, Ebeling, Schimansky-Geier and Schweitzer, Brownian
  particles far from equilibrium, Eur. Phys. J. B 15, p 105 (2000)
  doi:10.1007/s100510051104

Hi Pierre,

I don’t really have anything specific in mind yet. I just started to see if I can manage to get a simple activity in LAMMPS in the form of either a constant force or velocity. Later this can be extended with models that update the velocities/forces. I’ll get back to you once the constant force works, as I am not too knowledgeable on these models.

Right now it’s independent of the particles but I am testing with point particles. If the particles do have an orientation that should be updated by the active models as well, but I’ll worry about that later. :slight_smile: