Coordination Number Dependent Finite Sticking Probability

Dear LAMMPS users,

I am trying to simulate the assembly of Brownian particles using LAMMPS and I have encountered two problems. Firstly, I would like the pair potential to be zero before the particles collide, and then assume a finite sticking probability on contact. If the particles stick, they will not roll and will remain rigidly bound to one another for the remainder of the simulation. Secondly, I would like this finite sticking probability to be a function of the coordination number of both particles before collision.

So far I have been able to compute the coordination number of each particle using coord/atom, but I am struggling to solve the two problems above. Thank you very much for your time.

Yours,

Breanndan

Dear LAMMPS users,

I am trying to simulate the assembly of Brownian particles using LAMMPS and
I have encountered two problems. Firstly, I would like the pair potential to
be zero before the particles collide, and then assume a finite sticking
probability on contact. If the particles stick, they will not roll and will
remain rigidly bound to one another for the remainder of the simulation.
Secondly, I would like this finite sticking probability to be a function of
the coordination number of both particles before collision.

So far I have been able to compute the coordination number of each particle
using coord/atom, but I am struggling to solve the two problems above. Thank
you very much for your time.

can you explain a little bit what kind of solution you are looking
for, i.e. whether you want to implement this with existing
functionality in LAMMPS or if you are willing (and able) to write your
own custom C++ code to realize the model?

it would also be helpful, if you provide a small, simple test input of
what you have currently implemented.

axel.

Dear Axel,

Thank you very much for your response. Ideally, I would like to use existing LAMMPS functionality as much as possible. I would probably be able to write a bit of additional C++ code if it was really necessary, but I would need clear advice on how that code/algorithm should be structured. I know the basics of the language but I am not an expert.

I attach the latest input of what I have currently implemented below. At the moment, it uses the Morse Potential (which will need to be changed) and I gather statistics on the growth of the clusters over time. Thank you for your time.

Yours,

Breanndan

BD_morse.colloid (1.11 KB)

Dear Axel,

Thank you very much for your response. Ideally, I would like to use existing
LAMMPS functionality as much as possible. I would probably be able to write
a bit of additional C++ code if it was really necessary, but I would need
clear advice on how that code/algorithm should be structured. I know the
basics of the language but I am not an expert.

well, then i have some bad news for you: you'll either have to improve
your programming and code reading abilities, or you will have to
adjust your goals.

there is some existing functionality, e.g. in order to have particles
"stick", you could use fix bond/create, but you won't get rigid bodies
from that.
in fact, there is currently no provision in LAMMPS for rigid bodies to
changes size during a run. also your requirement to model what are
essentially hard spheres is tricky in an MD code like LAMMPS. you can
do repulsive-only interactions, by smartly choosing the cutoff, but
they have to be somewhat "soft" to allow for fixed size verlet time
stepping.

as far as i can tell, to implement a model as you describe would
require some significant programming of a new pair style and a
possibly difficult modification if a rigid body integrator or writing
a custom version or some other advanced trickery that is only possible
through modifying source code.

some information about how to modify and extend LAMMPS is given in the
developer's guide and the manual, but mostly you'll need to read some
code and learn/understand what that code is doing and how it fits into
the overall simulation procedure.

axel.

Axel is correct about forming/breaking rigid bodies on the

fly. LAMMPS can’t currently do that. Bonds can be

formed (fix bond/create), and there are various pairwise

potentials that induce particles to stick together. See

the COLLOID package, which have deep attractive

wells at contact, and can be used to model aggregation.

There is also a JKR potential for granular particles

which has a cohesive term, again allowing particles

to stick together. We are planning to release it soon.

If you used fix bond/create with finite-size spheroids

and a granular potential, it would do something similar.

Steve

The granular route + some cohesive model would certainly be a good route to go. Namely, this would keep things on a more MD-like basis where the resulting forces (aside from any brownian motions) are deterministic, than a KMC like treatment of aggregating collisions using a stochastic collision law. Of course this cannot treat the “many-body” character of his request.

Although it looks like rigid aggregation would be challenging, maybe you guys can answer his other question. Could he currently use fix bond create in a stochastic manner, with probability of aggregation depending on the two particles coordination number. I think this is actually a nice feature since controlling the functional form of the P(aggregation)=f(coord num) would allow quite a bit of control over the resulting fractal dimension of aggregates.

The granular route + some cohesive model would certainly be a good route
to go. Namely, this would keep things on a more MD-like basis where the
resulting forces (aside from any brownian motions) are deterministic, than
a KMC like treatment of aggregating collisions using a stochastic collision
law. Of course this cannot treat the "many-body" character of his request.

Although it looks like rigid aggregation would be challenging, maybe you
guys can answer his other question. Could he currently use fix bond create
in a stochastic manner, with probability of aggregation depending on the
two particles coordination number. I think this is actually a nice feature
since controlling the functional form of the P(aggregation)=f(coord num)
would allow quite a bit of control over the resulting fractal dimension of
aggregates.

​not exactly based on the coordination number, but ​fix bond/create allows
to change the atom type when a maximum ​number of bond is reached, which
would then render this atom ineligible for this fix.
with a sequence of fixes looking at the different atom types, one can set
up a different probability of bond formation depending on the number of
existing bonds and also enforce a maximum number of bonds (which may be
needed depending on the chosen cutoff and whether these are extended or
point particles).

i think there have been discussions on that subject in the past, that
should be in the mailing list archives.

axel.

Dear Axel, Eric and Steve,

Thank you very much for your replies. After looking into the problem further I have come to the conclusion that it would probably be easier to use other programs besides LAMMPS for the type of rigid particle aggregation I wish to model. Thank you once again for your time and effort.

Yours,

Breanndan